diff --git a/.gitignore b/.gitignore index 94420dc..b67df3c 100644 --- a/.gitignore +++ b/.gitignore @@ -233,4 +233,9 @@ _Pvt_Extensions .paket/paket.exe # FAKE - F# Make -.fake/ +Examples/GroupDocs.Annotation.Examples.CSharp/Output/ +deploy_key + +#License files +*.lic + diff --git a/Demos/ASP.NET MVC/src/App_Start/FilterConfig.cs b/Demos/ASP.NET MVC/src/App_Start/FilterConfig.cs new file mode 100644 index 0000000..4cd0a7c --- /dev/null +++ b/Demos/ASP.NET MVC/src/App_Start/FilterConfig.cs @@ -0,0 +1,12 @@ +using System.Web.Mvc; + +namespace GroupDocs.Annotation.AspNetMvc.App_Start +{ + public class FilterConfig + { + public static void RegisterGlobalFilters(GlobalFilterCollection filters) + { + filters.Add(new HandleErrorAttribute()); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/App_Start/RouteConfig.cs b/Demos/ASP.NET MVC/src/App_Start/RouteConfig.cs new file mode 100644 index 0000000..33b3de7 --- /dev/null +++ b/Demos/ASP.NET MVC/src/App_Start/RouteConfig.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; +using System.Web.Routing; + +namespace GroupDocs.Annotation.AspNetMvc +{ + public class RouteConfig + { + public static void RegisterRoutes(RouteCollection routes) + { + routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); + + routes.MapRoute( + name: "Default", + url: "{controller}/{action}/{id}", + defaults: new { controller = "Annotation", action = "index", id = UrlParameter.Optional } + ); + } + } +} diff --git a/Demos/ASP.NET MVC/src/App_Start/WebApiConfig.cs b/Demos/ASP.NET MVC/src/App_Start/WebApiConfig.cs new file mode 100644 index 0000000..9b18adb --- /dev/null +++ b/Demos/ASP.NET MVC/src/App_Start/WebApiConfig.cs @@ -0,0 +1,16 @@ +using System.Web.Http; + +namespace GroupDocs.Annotation.AspNetMvc.App_Start +{ + public static class WebApiConfig + { + public static void Register(HttpConfiguration config) + { + // enable CORS + config.EnableCors(); + + // Web API routes + config.MapHttpAttributeRoutes(); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Controllers/AnnotationController.cs b/Demos/ASP.NET MVC/src/Controllers/AnnotationController.cs new file mode 100644 index 0000000..d8c4814 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Controllers/AnnotationController.cs @@ -0,0 +1,13 @@ +using System.Web.Mvc; + +namespace GroupDocs.Annotation.AspNetMvc.Controllers +{ + public class AnnotationController : Controller + { + // View Annotation + public ActionResult Index() + { + return View(); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/DocumentSamples/Annotation/sample.docx b/Demos/ASP.NET MVC/src/DocumentSamples/Annotation/sample.docx new file mode 100644 index 0000000..365b8e1 Binary files /dev/null and b/Demos/ASP.NET MVC/src/DocumentSamples/Annotation/sample.docx differ diff --git a/Demos/ASP.NET MVC/src/DocumentSamples/Annotation/sample.pdf b/Demos/ASP.NET MVC/src/DocumentSamples/Annotation/sample.pdf new file mode 100644 index 0000000..8e1244a Binary files /dev/null and b/Demos/ASP.NET MVC/src/DocumentSamples/Annotation/sample.pdf differ diff --git a/Demos/ASP.NET MVC/src/DocumentSamples/Annotation/sample.xls b/Demos/ASP.NET MVC/src/DocumentSamples/Annotation/sample.xls new file mode 100644 index 0000000..90fbd0d Binary files /dev/null and b/Demos/ASP.NET MVC/src/DocumentSamples/Annotation/sample.xls differ diff --git a/Demos/ASP.NET MVC/src/Global.asax b/Demos/ASP.NET MVC/src/Global.asax new file mode 100644 index 0000000..b11e156 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Global.asax @@ -0,0 +1 @@ +<%@ Application Codebehind="Global.asax.cs" Inherits="GroupDocs.Annotation.AspNetMvc.WebApiApplication" Language="C#" %> diff --git a/Demos/ASP.NET MVC/src/Global.asax.cs b/Demos/ASP.NET MVC/src/Global.asax.cs new file mode 100644 index 0000000..135ed2b --- /dev/null +++ b/Demos/ASP.NET MVC/src/Global.asax.cs @@ -0,0 +1,24 @@ +using System.Web; +using System.Web.Http; +using System.Web.Mvc; +using System.Web.Routing; +using GroupDocs.Annotation.AspNetMvc.App_Start; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator; + +namespace GroupDocs.Annotation.AspNetMvc +{ + public class WebApiApplication : HttpApplication + { + protected void Application_Start() + { + string licensePath = ""; + SetLicense license = new SetLicense(); + license.AddLicense(licensePath); + + AreaRegistration.RegisterAllAreas(); + GlobalConfiguration.Configure(WebApiConfig.Register); + FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); + RouteConfig.RegisterRoutes(RouteTable.Routes); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/GroupDocs.Annotation.AspNetMvc.csproj b/Demos/ASP.NET MVC/src/GroupDocs.Annotation.AspNetMvc.csproj new file mode 100644 index 0000000..ac1e92f --- /dev/null +++ b/Demos/ASP.NET MVC/src/GroupDocs.Annotation.AspNetMvc.csproj @@ -0,0 +1,241 @@ + + + + + Debug + AnyCPU + + + 2.0 + {2BD1D7B5-8EE3-4A8C-9B79-278258349297} + {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + GroupDocs.Annotation.AspNetMvc + GroupDocs.Annotation.AspNetMvc + v4.8 + true + + 44319 + + + + + + + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + + + true + pdbonly + true + bin\ + TRACE + prompt + 4 + + + + packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll + + + packages\GroupDocs.Annotation.22.11.0\lib\net40\GroupDocs.Annotation.dll + True + + + + packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll + + + packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll + True + True + + + + packages\Microsoft.AspNet.WebApi.Client.5.2.9\lib\net45\System.Net.Http.Formatting.dll + + + + packages\Microsoft.AspNet.Cors.5.2.9\lib\net45\System.Web.Cors.dll + + + + + + + + + + + + packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll + + + packages\Microsoft.AspNet.WebApi.Core.5.2.9\lib\net45\System.Web.Http.dll + + + packages\Microsoft.AspNet.WebApi.Cors.5.2.9\lib\net45\System.Web.Http.Cors.dll + + + packages\Microsoft.AspNet.WebApi.WebHost.5.2.9\lib\net45\System.Web.Http.WebHost.dll + + + packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll + + + packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll + + + packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll + + + packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll + + + packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll + + + + + + + + + + packages\YamlDotNet.12.0.0\lib\net47\YamlDotNet.dll + + + + + packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll + + + packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll + + + + + + + + + + + + + + + Global.asax + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web.config + + + Web.config + + + + + + + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + + + + + + True + True + 52804 + / + http://localhost:8080/annotation + False + False + + + False + + + + + + + Данный проект ссылается на пакеты NuGet, отсутствующие на этом компьютере. Используйте восстановление пакетов NuGet, чтобы скачать их. Дополнительную информацию см. по адресу: http://go.microsoft.com/fwlink/?LinkID=322105. Отсутствует следующий файл: {0}. + + + + + + + + + + + + \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/GroupDocs.Annotation.AspNetMvc.csproj.DotSettings b/Demos/ASP.NET MVC/src/GroupDocs.Annotation.AspNetMvc.csproj.DotSettings new file mode 100644 index 0000000..6162834 --- /dev/null +++ b/Demos/ASP.NET MVC/src/GroupDocs.Annotation.AspNetMvc.csproj.DotSettings @@ -0,0 +1,2 @@ + + CSharp90 \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/GroupDocs.Annotation.AspNetMvc.sln b/Demos/ASP.NET MVC/src/GroupDocs.Annotation.AspNetMvc.sln new file mode 100644 index 0000000..9856b41 --- /dev/null +++ b/Demos/ASP.NET MVC/src/GroupDocs.Annotation.AspNetMvc.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.32428.217 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GroupDocs.Annotation.AspNetMvc", "GroupDocs.Annotation.AspNetMvc.csproj", "{2BD1D7B5-8EE3-4A8C-9B79-278258349297}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2BD1D7B5-8EE3-4A8C-9B79-278258349297}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2BD1D7B5-8EE3-4A8C-9B79-278258349297}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2BD1D7B5-8EE3-4A8C-9B79-278258349297}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2BD1D7B5-8EE3-4A8C-9B79-278258349297}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {416743BA-B746-445A-81C1-2589F8E42ADE} + EndGlobalSection +EndGlobal diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/AbstractTextAnnotator.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/AbstractTextAnnotator.cs new file mode 100644 index 0000000..d264cad --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/AbstractTextAnnotator.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + public abstract class AbstractTextAnnotator : BaseAnnotator + { + protected AbstractTextAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + + } + protected static List GetPoints(AnnotationDataEntity annotationData, PageInfo pageInfo) + { + return new List + { + new Point((int) annotationData.left, (int) (pageInfo.Height - annotationData.top)), + new Point((int) (annotationData.left + annotationData.width), (int) (pageInfo.Height - annotationData.top)), + new Point((int) annotationData.left, (int) (pageInfo.Height - annotationData.top - annotationData.height)), + new Point((int) (annotationData.left + annotationData.width), (int) (pageInfo.Height - annotationData.top - annotationData.height)) + }; + } + + protected static List GetPointsForImages(AnnotationDataEntity annotationData, PageInfo pageInfo) + { + return new List + { + new Point((int) annotationData.left, (int) (annotationData.top + annotationData.height)), + new Point((int) (annotationData.left + annotationData.width), (int) (annotationData.top + annotationData.height)), + new Point((int) annotationData.left, (int) annotationData.top), + new Point((int) (annotationData.left + annotationData.width), (int) annotationData.top) + }; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/AnnotatorFactory.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/AnnotatorFactory.cs new file mode 100644 index 0000000..e199d9b --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/AnnotatorFactory.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + public class AnnotatorFactory + { + /// + /// Create annotator instance depending on type of annotation + /// + /// AnnotationDataEntity + /// PageInfo + /// + public static BaseAnnotator createAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + { + AnnotationDataEntity roundedAnnotationData = RoundCoordinates(annotationData); + switch (roundedAnnotationData.type) + { + case "textHighlight": + return new TextHighlightAnnotator(roundedAnnotationData, pageInfo); + case "area": + return new AreaAnnotator(roundedAnnotationData, pageInfo); + case "point": + return new PointAnnotator(roundedAnnotationData, pageInfo); + case "textStrikeout": + return new TexStrikeoutAnnotator(roundedAnnotationData, pageInfo); + case "polyline": + return new PolylineAnnotator(roundedAnnotationData, pageInfo); + case "textField": + return new TextFieldAnnotator(roundedAnnotationData, pageInfo); + case "watermark": + return new WatermarkAnnotator(roundedAnnotationData, pageInfo); + case "textReplacement": + return new TextReplacementAnnotator(roundedAnnotationData, pageInfo); + case "arrow": + return new ArrowAnnotator(roundedAnnotationData, pageInfo); + case "textRedaction": + return new TextRedactionAnnotator(roundedAnnotationData, pageInfo); + case "resourcesRedaction": + return new ResourceRedactionAnnotator(roundedAnnotationData, pageInfo); + case "textUnderline": + return new TextUnderlineAnnotator(roundedAnnotationData, pageInfo); + case "distance": + return new DistanceAnnotator(roundedAnnotationData, pageInfo); + default: + throw new ArgumentNullException("Wrong annotation data without annotation type!"); + } + } + + private static AnnotationDataEntity RoundCoordinates(AnnotationDataEntity annotationData) + { + annotationData.height = (float)Math.Round(annotationData.height, 0); + annotationData.left = (float)Math.Round(annotationData.left, 0); + annotationData.top = (float)Math.Round(annotationData.top, 0); + annotationData.width = (float)Math.Round(annotationData.width, 0); + return annotationData; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/AreaAnnotator.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/AreaAnnotator.cs new file mode 100644 index 0000000..5da80ba --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/AreaAnnotator.cs @@ -0,0 +1,58 @@ +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + public class AreaAnnotator : BaseAnnotator + { + private AreaAnnotation areaAnnotation; + + public AreaAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + areaAnnotation = new AreaAnnotation + { + Box = GetBox() + }; + } + + public override AnnotationBase AnnotateWord() + { + areaAnnotation = InitAnnotationBase(areaAnnotation) as AreaAnnotation; + return areaAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateImage() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateDiagram() + { + return AnnotateWord(); + } + + protected override AnnotationType GetType() + { + return AnnotationType.Area; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/ArrowAnnotator.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/ArrowAnnotator.cs new file mode 100644 index 0000000..42c76f1 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/ArrowAnnotator.cs @@ -0,0 +1,87 @@ +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; +using System.Globalization; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; +using Rectangle = GroupDocs.Annotation.Models.Rectangle; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + public class ArrowAnnotator : BaseAnnotator + { + private bool withGuid = false; + private ArrowAnnotation arrowAnnotation; + + public ArrowAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + this.arrowAnnotation = new ArrowAnnotation + { + Box = GetBox() + }; + } + + public override AnnotationBase AnnotateWord() + { + withGuid = false; + arrowAnnotation = InitAnnotationBase(arrowAnnotation) as ArrowAnnotation; + return arrowAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + withGuid = true; + arrowAnnotation = InitAnnotationBase(arrowAnnotation) as ArrowAnnotation; + return arrowAnnotation; + } + + public override AnnotationBase AnnotateImage() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateDiagram() + { + return AnnotateWord(); + } + + protected override Reply GetAnnotationReplyInfo(CommentsEntity comment) + { + Reply annotationReplyInfo = base.GetAnnotationReplyInfo(comment); + if (withGuid) + { + annotationReplyInfo.ParentReply = new Reply { Id = annotationData.id }; + } + return annotationReplyInfo; + } + + protected override AnnotationType GetType() + { + return AnnotationType.Arrow; + } + + protected override Rectangle GetBox() + { + string svgPath = annotationData.svgPath; + string startPoint = svgPath.Replace("[a-zA-Z]+", "").Split(' ')[0]; + string endPoint = svgPath.Replace("[a-zA-Z]+", "").Split(' ')[1]; + string[] start = startPoint.Split(','); + float startX = float.Parse(start.Length > 0 ? start[0].Replace("M", "").Replace(",", ".") : "0", CultureInfo.InvariantCulture); + float startY = float.Parse(start.Length > 0 ? start[1].Replace("M", "").Replace(",", ".") : "0", CultureInfo.InvariantCulture); + string[] end = endPoint.Split(','); + float endX = float.Parse(end.Length > 0 ? end[0].Replace("L", "").Replace(",", ".") : "0", CultureInfo.InvariantCulture) - startX; + float endY = float.Parse(end.Length > 1 ? end[1].Replace("L", "").Replace(",", ".") : "0", CultureInfo.InvariantCulture) - startY; + return new Rectangle(startX, startY, endX, endY); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/BaseAnnotator.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/BaseAnnotator.cs new file mode 100644 index 0000000..9976dc1 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/BaseAnnotator.cs @@ -0,0 +1,187 @@ +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; +using System; +using System.Drawing; +using System.Linq; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; +using Rectangle = GroupDocs.Annotation.Models.Rectangle; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + /// + /// BaseSigner + /// + public abstract class BaseAnnotator + { + protected AnnotationDataEntity annotationData; + protected PageInfo pageInfo; + + public string Message { get; set; } = "Annotation of type {0} for this file type is not supported"; + + /// + /// Constructor + /// + /// + /// + protected BaseAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + { + this.annotationData = annotationData; + this.pageInfo = pageInfo; + } + + /// + /// Add area annotation into the Word document + /// + /// AnnotationBase + public abstract AnnotationBase AnnotateWord(); + + /// + /// Add area annotation into the pdf document + /// + /// AnnotationBase + public abstract AnnotationBase AnnotatePdf(); + + ///// + ///// Add area annotation into the Excel document + ///// + ///// AnnotationBase + public abstract AnnotationBase AnnotateCells(); + + /// + /// Add area annotation into the Power Point document + /// + /// AnnotationBase + public abstract AnnotationBase AnnotateSlides(); + + /// + /// Add area annotation into the image document + /// + /// AnnotationBase + public abstract AnnotationBase AnnotateImage(); + + /// + /// Add area annotation into the document + /// + /// AnnotationBase + public abstract AnnotationBase AnnotateDiagram(); + + /// + /// Initial for annotation info + /// + /// AnnotationBase + protected AnnotationBase InitAnnotationBase(AnnotationBase annotationBase) + { + // set page number to add annotation + annotationBase.PageNumber = annotationData.pageNumber - 1; + // set annotation type + annotationBase.Type = GetType(); + annotationBase.CreatedOn = DateTime.UtcNow; + annotationBase.Id = annotationData.id; + // add replies + CommentsEntity[] comments = annotationData.comments; + if (comments != null && comments.Length != 0) + { + Reply[] replies = new Reply[comments.Length]; + for (int i = 0; i < comments.Length; i++) + { + Reply reply = GetAnnotationReplyInfo(comments[i]); + replies[i] = reply; + } + annotationBase.Replies = replies.ToList(); + } + return annotationBase; + } + + /// + /// Initial for reply annotation info + /// + /// CommentsEntity + /// AnnotationReplyInfo + protected virtual Reply GetAnnotationReplyInfo(CommentsEntity comment) + { + Reply reply = new Reply(); + reply.Comment = comment.text; + DateTime date; + try + { + long unixDate = long.Parse(comment.time); + DateTime start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + date = start.AddMilliseconds(unixDate).ToLocalTime(); + } + catch (System.Exception) + { + date = DateTime.Parse(comment.time); + } + reply.RepliedOn = date; + reply.User = new User { Name = comment.userName }; + return reply; + } + + /// + /// Get rectangle + /// + /// Rectangle + protected virtual Rectangle GetBox() + { + return new Rectangle(annotationData.left, annotationData.top, annotationData.width, annotationData.height); + } + + /// + /// Get type of annotation + /// + /// byte + protected new abstract AnnotationType GetType(); + + /// + /// Get Annotation info depending on document type + /// + /// string + /// AnnotationBase + public AnnotationBase GetAnnotationBase(string documentType) + { + switch (documentType) + { + case "Portable Document Format": + return AnnotatePdf(); + case "Microsoft Visio": + case "Microsoft Word": + case "Open Document Text": + return AnnotateWord(); + case "Rich Text Format": + return AnnotateWord(); + case "Open Document Presentation": + case "Microsoft PowerPoint": + return AnnotateSlides(); + case "image": + return AnnotateImage(); + case "Open Document Spreadsheet": + case "Microsoft Excel": + return AnnotateCells(); + case "AutoCAD Drawing File Format": + return AnnotateDiagram(); + default: + throw new Exceptions.AnnotatorException("Wrong annotation data without document type!"); + } + } + + /// + /// Check if the current annotatin is supported + /// + /// string + /// + internal bool IsSupported(string documentType) + { + try + { + AnnotatorFactory.createAnnotator(annotationData, pageInfo).GetAnnotationBase(documentType); + return true; + } + catch (NotSupportedException) + { + Message = string.Format(Message, annotationData.type); + return false; + } + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/DistanceAnnotator.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/DistanceAnnotator.cs new file mode 100644 index 0000000..77fc12d --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/DistanceAnnotator.cs @@ -0,0 +1,91 @@ +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Options; +using System.Globalization; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + public class DistanceAnnotator : BaseAnnotator + { + private DistanceAnnotation distanceAnnotation; + + public DistanceAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + distanceAnnotation = new DistanceAnnotation + { + Box = GetBox() + }; + } + + public override AnnotationBase AnnotateWord() + { + distanceAnnotation = InitAnnotationBase(distanceAnnotation) as DistanceAnnotation; + return distanceAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateImage() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateDiagram() + { + return AnnotateWord(); + } + + protected new AnnotationBase InitAnnotationBase(AnnotationBase annotationBase) + { + distanceAnnotation = base.InitAnnotationBase(annotationBase) as DistanceAnnotation; + // add replies + string text = annotationData.text ?? ""; + CommentsEntity[] + comments = annotationData.comments; + if (comments != null && comments.Length != 0) + { + Reply reply = distanceAnnotation.Replies[0]; + if (reply != null) + { + reply.Comment = string.Format("{0} {1}", text, reply.Comment); + } + } + + return distanceAnnotation; + } + + protected override AnnotationType GetType() + { + return AnnotationType.Distance; + } + + protected override Rectangle GetBox() + { + string svgPath = annotationData.svgPath; + string startPoint = svgPath.Replace("[a-zA-Z]+", "").Split(' ')[0]; + string endPoint = svgPath.Replace("[a-zA-Z]+", "").Split(' ')[1]; + string[] start = startPoint.Split(','); + float startX = float.Parse(start.Length > 0 ? start[0].Replace("M", "").Replace(",", ".") : "0", CultureInfo.InvariantCulture); + float startY = float.Parse(start.Length > 0 ? start[1].Replace("M", "").Replace(",", ".") : "0", CultureInfo.InvariantCulture); + string[] end = endPoint.Split(','); + float endX = float.Parse(end.Length > 0 ? end[0].Replace("L", "").Replace(",", ".") : "0", CultureInfo.InvariantCulture) - startX; + float endY = float.Parse(end.Length > 1 ? end[1].Replace("L", "").Replace(",", ".") : "0", CultureInfo.InvariantCulture) - startY; + return new Rectangle(startX, startY, endX, endY); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/PointAnnotator.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/PointAnnotator.cs new file mode 100644 index 0000000..aae3088 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/PointAnnotator.cs @@ -0,0 +1,58 @@ +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + public class PointAnnotator : BaseAnnotator + { + private PointAnnotation pointAnnotation; + + public PointAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + pointAnnotation = new PointAnnotation + { + Box = GetBox() + }; + } + + public override AnnotationBase AnnotateWord() + { + pointAnnotation = base.InitAnnotationBase(pointAnnotation) as PointAnnotation; + return pointAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateImage() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateDiagram() + { + return AnnotateWord(); + } + + protected override AnnotationType GetType() + { + return AnnotationType.Point; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/PolylineAnnotator.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/PolylineAnnotator.cs new file mode 100644 index 0000000..6c30ba5 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/PolylineAnnotator.cs @@ -0,0 +1,78 @@ +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + public class PolylineAnnotator : BaseAnnotator + { + private PolylineAnnotation polylineAnnotation; + + public PolylineAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + this.polylineAnnotation = new PolylineAnnotation + { + Box = GetBox(), + PenColor = 1201033, + PenWidth = 2, + SvgPath = annotationData.svgPath + }; + } + + public override AnnotationBase AnnotateWord() + { + polylineAnnotation = InitAnnotationBase(polylineAnnotation) as PolylineAnnotation; + return polylineAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + polylineAnnotation = InitAnnotationBase(polylineAnnotation) as PolylineAnnotation; + FillCreatorName(polylineAnnotation, annotationData); + return polylineAnnotation; + } + + /// + /// Fill creator name field in annotation info + /// + /// AnnotationBase + protected static void FillCreatorName(AnnotationBase polylineAnnotation, AnnotationDataEntity annotationData) + { + CommentsEntity[] comments = annotationData.comments; + if (comments != null && comments.Length > 0 && comments[0] != null) + { + polylineAnnotation.User = new User + { + Name = comments[0].userName + }; + } + } + + public override AnnotationBase AnnotateImage() + { + return AnnotateSlides(); + } + + public override AnnotationBase AnnotateDiagram() + { + return AnnotateSlides(); + } + + protected override AnnotationType GetType() + { + return AnnotationType.Polyline; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/ResourceRedactionAnnotator.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/ResourceRedactionAnnotator.cs new file mode 100644 index 0000000..04f84d2 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/ResourceRedactionAnnotator.cs @@ -0,0 +1,57 @@ +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + public class ResourceRedactionAnnotator : BaseAnnotator + { + private ResourcesRedactionAnnotation resourcesRedactionAnnotation; + + public ResourceRedactionAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + this.resourcesRedactionAnnotation = new ResourcesRedactionAnnotation + { + Box = GetBox() + }; + } + + public override AnnotationBase AnnotateWord() + { + resourcesRedactionAnnotation = InitAnnotationBase(resourcesRedactionAnnotation) as ResourcesRedactionAnnotation; + return resourcesRedactionAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateImage() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateDiagram() + { + return AnnotateWord(); + } + + protected override AnnotationType GetType() + { + return AnnotationType.ResourcesRedaction; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/SetLicense.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/SetLicense.cs new file mode 100644 index 0000000..68956a0 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/SetLicense.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + public class SetLicense + { + public void AddLicense(string licensePath) + { + License license = new License(); + license.SetLicense(licensePath); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextFieldAnnotator.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextFieldAnnotator.cs new file mode 100644 index 0000000..58b2376 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextFieldAnnotator.cs @@ -0,0 +1,61 @@ +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + public class TextFieldAnnotator : BaseAnnotator + { + private TextFieldAnnotation textFieldAnnotation; + + public TextFieldAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + textFieldAnnotation = new TextFieldAnnotation + { + Box = GetBox(), + FontFamily = !string.IsNullOrEmpty(annotationData.font) ? annotationData.font : "Arial", + FontColor = annotationData.fontColor, + FontSize = annotationData.fontSize == 0 ? 12 : annotationData.fontSize, + Text = annotationData.text + }; + } + + public override AnnotationBase AnnotateWord() + { + textFieldAnnotation = InitAnnotationBase(textFieldAnnotation) as TextFieldAnnotation; + return textFieldAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateImage() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateDiagram() + { + return AnnotateWord(); + } + + protected override AnnotationType GetType() + { + return AnnotationType.TextField; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextHighlightAnnotator.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextHighlightAnnotator.cs new file mode 100644 index 0000000..c1b94ab --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextHighlightAnnotator.cs @@ -0,0 +1,60 @@ +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; +using System; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + public class TextHighlightAnnotator : AbstractTextAnnotator + { + private HighlightAnnotation highlightAnnotation; + + public TextHighlightAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + highlightAnnotation = new HighlightAnnotation + { + Points = GetPoints(annotationData, pageInfo) + }; + } + + public override AnnotationBase AnnotateWord() + { + highlightAnnotation = InitAnnotationBase(highlightAnnotation) as HighlightAnnotation; + return highlightAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateImage() + { + highlightAnnotation = InitAnnotationBase(highlightAnnotation) as HighlightAnnotation; + highlightAnnotation.Points = GetPointsForImages(annotationData, pageInfo); + return highlightAnnotation; + } + + public override AnnotationBase AnnotateDiagram() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + protected override AnnotationType GetType() + { + return AnnotationType.TextHighlight; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextRedactionAnnotator.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextRedactionAnnotator.cs new file mode 100644 index 0000000..2b9f55d --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextRedactionAnnotator.cs @@ -0,0 +1,55 @@ +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; +using System; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + public class TextRedactionAnnotator : TextHighlightAnnotator + { + private TextRedactionAnnotation textRedactionAnnotation; + + public TextRedactionAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + textRedactionAnnotation = new TextRedactionAnnotation + { + Points = GetPoints(annotationData, pageInfo) + }; + } + + public override AnnotationBase AnnotateCells() + { + return AnnotatePdf(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotatePdf(); + } + + public override AnnotationBase AnnotateImage() + { + textRedactionAnnotation = InitAnnotationBase(textRedactionAnnotation) as TextRedactionAnnotation; + textRedactionAnnotation.Points = GetPointsForImages(annotationData, pageInfo); + return textRedactionAnnotation; + } + + public override AnnotationBase AnnotateDiagram() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + public override AnnotationBase AnnotatePdf() + { + textRedactionAnnotation = InitAnnotationBase(textRedactionAnnotation) as TextRedactionAnnotation; + return textRedactionAnnotation; + } + + protected override AnnotationType GetType() + { + return AnnotationType.TextRedaction; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextReplacementAnnotator.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextReplacementAnnotator.cs new file mode 100644 index 0000000..c73042d --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextReplacementAnnotator.cs @@ -0,0 +1,60 @@ +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; +using System; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + public class TextReplacementAnnotator : AbstractTextAnnotator + { + private ReplacementAnnotation replacementAnnotation; + + public TextReplacementAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + replacementAnnotation = new ReplacementAnnotation + { + Points = GetPoints(annotationData, pageInfo), + TextToReplace = annotationData.text + }; + } + + public override AnnotationBase AnnotateWord() + { + replacementAnnotation = InitAnnotationBase(replacementAnnotation) as ReplacementAnnotation; + return replacementAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateImage() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + public override AnnotationBase AnnotateDiagram() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + protected override AnnotationType GetType() + { + return AnnotationType.TextReplacement; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextStrikeoutAnnotator.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextStrikeoutAnnotator.cs new file mode 100644 index 0000000..7efe344 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextStrikeoutAnnotator.cs @@ -0,0 +1,63 @@ +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; +using System; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + public class TexStrikeoutAnnotator : AbstractTextAnnotator + { + private StrikeoutAnnotation strikeoutAnnotation; + + public TexStrikeoutAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + strikeoutAnnotation = new StrikeoutAnnotation + { + Points = GetPoints(annotationData, pageInfo) + }; + } + + public override AnnotationBase AnnotateWord() + { + strikeoutAnnotation = InitAnnotationBase(strikeoutAnnotation) as StrikeoutAnnotation; + return strikeoutAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + strikeoutAnnotation = InitAnnotationBase(strikeoutAnnotation) as StrikeoutAnnotation; + this.strikeoutAnnotation.FontColor = 0; + return strikeoutAnnotation; + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateImage() + { + strikeoutAnnotation = InitAnnotationBase(strikeoutAnnotation) as StrikeoutAnnotation; + strikeoutAnnotation.Points = GetPointsForImages(annotationData, pageInfo); + return strikeoutAnnotation; + } + + public override AnnotationBase AnnotateDiagram() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + protected override AnnotationType GetType() + { + return AnnotationType.TextStrikeout; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextUnderlineAnnotator.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextUnderlineAnnotator.cs new file mode 100644 index 0000000..0ced430 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/TextUnderlineAnnotator.cs @@ -0,0 +1,64 @@ +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; +using System; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + public class TextUnderlineAnnotator : AbstractTextAnnotator + { + private UnderlineAnnotation underlineAnnotation; + + public TextUnderlineAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + underlineAnnotation = new UnderlineAnnotation + { + Points = GetPoints(annotationData, pageInfo) + }; + } + + public override AnnotationBase AnnotateWord() + { + underlineAnnotation = InitAnnotationBase(underlineAnnotation) as UnderlineAnnotation; + underlineAnnotation.FontColor = 1201033; + return underlineAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + underlineAnnotation = InitAnnotationBase(underlineAnnotation) as UnderlineAnnotation; + underlineAnnotation.FontColor = 0; + return underlineAnnotation; + } + + public override AnnotationBase AnnotateImage() + { + underlineAnnotation = InitAnnotationBase(underlineAnnotation) as UnderlineAnnotation; + underlineAnnotation.FontColor = 1201033; + underlineAnnotation.Points = GetPointsForImages(annotationData, pageInfo); + return underlineAnnotation; + } + + public override AnnotationBase AnnotateDiagram() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + protected override AnnotationType GetType() + { + return AnnotationType.TextUnderline; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/WatermarkAnnotator.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/WatermarkAnnotator.cs new file mode 100644 index 0000000..92a54cb --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Annotator/WatermarkAnnotator.cs @@ -0,0 +1,62 @@ +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; +using System; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator +{ + public class WatermarkAnnotator : BaseAnnotator + { + private WatermarkAnnotation watermarkAnnotation; + + public WatermarkAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + watermarkAnnotation = new WatermarkAnnotation + { + Box = GetBox(), + FontFamily = !string.IsNullOrEmpty(annotationData.font) ? annotationData.font : "Arial", + FontColor = annotationData.fontColor, + FontSize = annotationData.fontSize == 0 ? 12 : annotationData.fontSize, + Text = annotationData.text + }; + } + + public override AnnotationBase AnnotateWord() + { + watermarkAnnotation = InitAnnotationBase(watermarkAnnotation) as WatermarkAnnotation; + return watermarkAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateImage() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateDiagram() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + protected override AnnotationType GetType() + { + return AnnotationType.Watermark; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Config/AnnotationConfiguration.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Config/AnnotationConfiguration.cs new file mode 100644 index 0000000..47ec83d --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Config/AnnotationConfiguration.cs @@ -0,0 +1,133 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetMvc.Products.Common.Config; +using GroupDocs.Annotation.AspNetMvc.Products.Common.Util.Parser; +using Newtonsoft.Json; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Config +{ + public class AnnotationConfiguration : CommonConfiguration + { + [JsonProperty] + private readonly string filesDirectory = "DocumentSamples/Annotation"; + + [JsonProperty] + private readonly string defaultDocument = string.Empty; + + [JsonProperty] + private readonly int preloadPageCount; + + [JsonProperty] + private readonly bool textAnnotation = true; + + [JsonProperty] + private readonly bool areaAnnotation = true; + + [JsonProperty] + private readonly bool pointAnnotation = true; + + [JsonProperty] + private readonly bool textStrikeoutAnnotation = true; + + [JsonProperty] + private readonly bool polylineAnnotation = true; + + [JsonProperty] + private readonly bool textFieldAnnotation = true; + + [JsonProperty] + private readonly bool watermarkAnnotation = true; + + [JsonProperty] + private readonly bool textReplacementAnnotation = true; + + [JsonProperty] + private readonly bool arrowAnnotation = true; + + [JsonProperty] + private readonly bool textRedactionAnnotation = true; + + [JsonProperty] + private readonly bool resourcesRedactionAnnotation = true; + + [JsonProperty] + private readonly bool textUnderlineAnnotation = true; + + [JsonProperty] + private readonly bool distanceAnnotation = true; + + [JsonProperty] + private readonly bool downloadOriginal = true; + + [JsonProperty] + private readonly bool downloadAnnotated = true; + + [JsonProperty] + private readonly bool zoom = true; + + [JsonProperty] + private readonly string defaultCommentator = ""; + + /// + /// Initializes a new instance of the class. + /// Get Annotation configuration section from the Web.config. + /// + public AnnotationConfiguration() + { + YamlParser parser = new YamlParser(); + dynamic configuration = parser.GetConfiguration("annotation"); + ConfigurationValuesGetter valuesGetter = new ConfigurationValuesGetter(configuration); + + this.filesDirectory = valuesGetter.GetStringPropertyValue("filesDirectory", this.filesDirectory); + if (!IsFullPath(this.filesDirectory)) + { + this.filesDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, this.filesDirectory); + if (!Directory.Exists(this.filesDirectory)) + { + Directory.CreateDirectory(this.filesDirectory); + } + } + + this.defaultDocument = valuesGetter.GetStringPropertyValue("defaultDocument", this.defaultDocument).Replace(@"\", "/"); + this.textAnnotation = valuesGetter.GetBooleanPropertyValue("textAnnotation", this.textAnnotation); + this.areaAnnotation = valuesGetter.GetBooleanPropertyValue("areaAnnotation", this.areaAnnotation); + this.pointAnnotation = valuesGetter.GetBooleanPropertyValue("pointAnnotation", this.pointAnnotation); + this.textStrikeoutAnnotation = valuesGetter.GetBooleanPropertyValue("textStrikeoutAnnotation", this.textStrikeoutAnnotation); + this.polylineAnnotation = valuesGetter.GetBooleanPropertyValue("polylineAnnotation", this.polylineAnnotation); + this.textFieldAnnotation = valuesGetter.GetBooleanPropertyValue("textFieldAnnotation", this.textFieldAnnotation); + this.watermarkAnnotation = valuesGetter.GetBooleanPropertyValue("watermarkAnnotation", this.watermarkAnnotation); + this.textReplacementAnnotation = valuesGetter.GetBooleanPropertyValue("textReplacementAnnotation", this.textReplacementAnnotation); + this.arrowAnnotation = valuesGetter.GetBooleanPropertyValue("arrowAnnotation", this.arrowAnnotation); + this.textRedactionAnnotation = valuesGetter.GetBooleanPropertyValue("textRedactionAnnotation", this.textRedactionAnnotation); + this.resourcesRedactionAnnotation = valuesGetter.GetBooleanPropertyValue("resourcesRedactionAnnotation", this.resourcesRedactionAnnotation); + this.textUnderlineAnnotation = valuesGetter.GetBooleanPropertyValue("textUnderlineAnnotation", this.textUnderlineAnnotation); + this.distanceAnnotation = valuesGetter.GetBooleanPropertyValue("distanceAnnotation", this.distanceAnnotation); + this.downloadOriginal = valuesGetter.GetBooleanPropertyValue("downloadOriginal", this.downloadOriginal); + this.downloadAnnotated = valuesGetter.GetBooleanPropertyValue("downloadAnnotated", this.downloadAnnotated); + this.preloadPageCount = valuesGetter.GetIntegerPropertyValue("preloadPageCount", this.preloadPageCount); + this.zoom = valuesGetter.GetBooleanPropertyValue("zoom", this.zoom); + this.defaultCommentator = valuesGetter.GetStringPropertyValue("defaultCommentator", this.defaultCommentator); + } + + public string GetFilesDirectory() + { + return this.filesDirectory; + } + + public int GetPreloadPageCount() + { + return this.preloadPageCount; + } + + private static bool IsFullPath(string path) + { + return !string.IsNullOrWhiteSpace(path) + && path.IndexOfAny(Path.GetInvalidPathChars().ToArray()) == -1 + && Path.IsPathRooted(path) + && !Path.GetPathRoot(path).Equals(Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Controllers/AnnotationApiController.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Controllers/AnnotationApiController.cs new file mode 100644 index 0000000..c459614 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Controllers/AnnotationApiController.cs @@ -0,0 +1,584 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Web; +using System.Web.Http; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Annotator; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Config; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Util; +using GroupDocs.Annotation.AspNetMvc.Products.Common.Entity.Web; +using GroupDocs.Annotation.AspNetMvc.Products.Common.Resources; +using GroupDocs.Annotation.AspNetMvc.Products.Common.Util.Comparator; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Controllers +{ + public class AnnotationApiController : ApiController + { + private static Common.Config.GlobalConfiguration globalConfiguration = new Common.Config.GlobalConfiguration(); + private readonly List SupportedImageFormats = new List { ".bmp", ".jpeg", ".jpg", ".tiff", ".tif", ".png", ".dwg", ".dcm", ".dxf" }; + + /// + /// Load Annotation configuration + /// + /// Annotation configuration + [System.Web.Http.HttpGet] + [System.Web.Http.Route("loadConfig")] + public AnnotationConfiguration LoadConfig() + { + return globalConfiguration.Annotation; + } + + /// + /// Get all files and directories from storage + /// + /// SignaturePostedDataEntity + /// List of files and directories + [System.Web.Http.HttpPost] + [System.Web.Http.Route("loadFileTree")] + public HttpResponseMessage loadFileTree(PostedDataEntity postedData) + { + // get request body + string relDirPath = postedData.path; + // get file list from storage path + try + { + // get all the files from a directory + if (string.IsNullOrEmpty(relDirPath)) + { + relDirPath = globalConfiguration.Annotation.GetFilesDirectory(); + } + else + { + relDirPath = Path.Combine(globalConfiguration.Annotation.GetFilesDirectory(), relDirPath); + } + + List fileList = new List(); + List allFiles = new List(Directory.GetFiles(relDirPath)); + allFiles.AddRange(Directory.GetDirectories(relDirPath)); + + allFiles.Sort(new FileNameComparator()); + allFiles.Sort(new FileTypeComparator()); + + foreach (string file in allFiles) + { + FileInfo fileInfo = new FileInfo(file); + // check if current file/folder is hidden + if (!(fileInfo.Attributes.HasFlag(FileAttributes.Hidden) || + Path.GetFileName(file).Equals(Path.GetFileName(globalConfiguration.Annotation.GetFilesDirectory())) || + Path.GetFileName(file).StartsWith("."))) + { + FileDescriptionEntity fileDescription = new FileDescriptionEntity(); + fileDescription.guid = Path.GetFullPath(file); + fileDescription.name = Path.GetFileName(file); + // set is directory true/false + fileDescription.isDirectory = fileInfo.Attributes.HasFlag(FileAttributes.Directory); + // set file size + if (!fileDescription.isDirectory) + { + fileDescription.size = fileInfo.Length; + } + // add object to array list + fileList.Add(fileDescription); + } + } + return Request.CreateResponse(HttpStatusCode.OK, fileList); + } + catch (Exception ex) + { + return Request.CreateResponse(HttpStatusCode.InternalServerError, new Resources().GenerateException(ex)); + } + } + + /// + /// Load document description + /// + /// Post data + /// Document info object + [System.Web.Http.HttpPost] + [System.Web.Http.Route("loadDocumentDescription")] + public HttpResponseMessage LoadDocumentDescription(AnnotationPostedDataEntity postedData) + { + string password = ""; + try + { + AnnotatedDocumentEntity loadDocumentEntity = LoadDocument(postedData, globalConfiguration.Annotation.GetPreloadPageCount() == 0); + // return document description + return Request.CreateResponse(HttpStatusCode.OK, loadDocumentEntity); + } + catch (Exception ex) + { + // set exception message + // TODO: return InternalServerError for common Exception and Forbidden for PasswordProtectedException + return Request.CreateResponse(HttpStatusCode.Forbidden, new Resources().GenerateException(ex, password)); + } + } + + public AnnotatedDocumentEntity LoadDocument(AnnotationPostedDataEntity loadDocumentRequest, bool loadAllPages) + { + string password = loadDocumentRequest.password; + AnnotatedDocumentEntity description = new AnnotatedDocumentEntity(); + string documentGuid = loadDocumentRequest.guid; + + using (GroupDocs.Annotation.Annotator annotator = new GroupDocs.Annotation.Annotator(documentGuid, GetLoadOptions(password))) + { + IDocumentInfo info = annotator.Document.GetDocumentInfo(); + AnnotationBase[] annotations = annotator.Get().ToArray(); + description.guid = loadDocumentRequest.guid; + string documentType = getDocumentType(info); + + description.supportedAnnotations = new SupportedAnnotations().GetSupportedAnnotations(documentType); + + List pagesContent = new List(); + + if (loadAllPages) + { + pagesContent = GetAllPagesContent(annotator, info); + } + + for (int i = 0; i < info.PagesInfo.Count; i++) + { + PageDataDescriptionEntity page = new PageDataDescriptionEntity + { + number = i + 1, + height = info.PagesInfo[i].Height, + width = info.PagesInfo[i].Width, + }; + + if (annotations != null && annotations.Length > 0) + { + page.SetAnnotations(AnnotationMapper.MapForPage(annotations, i + 1, info.PagesInfo[i], documentType)); + } + + if (pagesContent.Count > 0) + { + page.SetData(pagesContent[i]); + } + description.pages.Add(page); + } + } + + description.guid = documentGuid; + // return document description + return description; + } + + /// + /// Get document page + /// + /// + /// Document page image + [System.Web.Http.HttpPost] + [System.Web.Http.Route("loadDocumentPage")] + public HttpResponseMessage LoadDocumentPage(AnnotationPostedDataEntity loadDocumentPageRequest) + { + string password = ""; + try + { + // get/set parameters + string documentGuid = loadDocumentPageRequest.guid; + int pageNumber = loadDocumentPageRequest.page; + password = loadDocumentPageRequest.password; + PageDataDescriptionEntity loadedPage = new PageDataDescriptionEntity(); + + // get page image + byte[] bytes; + + using (GroupDocs.Annotation.Annotator annotator = new GroupDocs.Annotation.Annotator(documentGuid, GetLoadOptions(password))) + { + using (var memoryStream = RenderPageToMemoryStream(annotator, pageNumber)) + { + bytes = memoryStream.ToArray(); + } + + IDocumentInfo info = annotator.Document.GetDocumentInfo(); + AnnotationBase[] annotations = annotator.Get().ToArray(); + string documentType = getDocumentType(info); + + if (annotations != null && annotations.Length > 0) + { + loadedPage.SetAnnotations(AnnotationMapper.MapForPage(annotations, pageNumber, info.PagesInfo[pageNumber - 1], documentType)); + } + + string encodedImage = Convert.ToBase64String(bytes); + loadedPage.SetData(encodedImage); + + loadedPage.height = info.PagesInfo[pageNumber - 1].Height; + loadedPage.width = info.PagesInfo[pageNumber - 1].Width; + loadedPage.number = pageNumber; + } + + // return loaded page object + return Request.CreateResponse(HttpStatusCode.OK, loadedPage); + } + catch (Exception ex) + { + // set exception message + return Request.CreateResponse(HttpStatusCode.InternalServerError, new Resources().GenerateException(ex, password)); + } + } + + private string getDocumentType(IDocumentInfo info) + { + string documentType = string.Empty; + if (info.FileType != null) + { + documentType = SupportedImageFormats.Contains(info.FileType.Extension) ? "image" : info.FileType.ToString(); + } + else + { + documentType = "Portable Document Format"; + } + + return documentType; + } + + private static List GetAllPagesContent(GroupDocs.Annotation.Annotator annotator, IDocumentInfo pages) + { + List allPages = new List(); + + //get page HTML + for (int i = 0; i < pages.PagesInfo.Count; i++) + { + byte[] bytes; + using (var memoryStream = RenderPageToMemoryStream(annotator, i + 1)) + { + bytes = memoryStream.ToArray(); + } + + string encodedImage = Convert.ToBase64String(bytes); + allPages.Add(encodedImage); + } + + return allPages; + } + + static MemoryStream RenderPageToMemoryStream(GroupDocs.Annotation.Annotator annotator, int pageNumberToRender) + { + MemoryStream result = new MemoryStream(); + + PreviewOptions previewOptions = new PreviewOptions(pageNumber => result) + { + PreviewFormat = PreviewFormats.PNG, + PageNumbers = new[] { pageNumberToRender }, + RenderComments = false + }; + + annotator.Document.GeneratePreview(previewOptions); + + return result; + } + + /// + /// Upload document + /// + /// Uploaded document object + [System.Web.Http.HttpPost] + [System.Web.Http.Route("uploadDocument")] + public HttpResponseMessage UploadDocument() + { + try + { + string url = HttpContext.Current.Request.Form["url"]; + // get documents storage path + string documentStoragePath = globalConfiguration.Annotation.GetFilesDirectory(); + bool rewrite = bool.Parse(HttpContext.Current.Request.Form["rewrite"]); + string fileSavePath = ""; + if (string.IsNullOrEmpty(url)) + { + if (HttpContext.Current.Request.Files.AllKeys != null) + { + // Get the uploaded document from the Files collection + var httpPostedFile = HttpContext.Current.Request.Files["file"]; + if (httpPostedFile != null) + { + if (rewrite) + { + // Get the complete file path + fileSavePath = Path.Combine(documentStoragePath, httpPostedFile.FileName); + } + else + { + fileSavePath = Resources.GetFreeFileName(documentStoragePath, httpPostedFile.FileName); + } + + // Save the uploaded file to "UploadedFiles" folder + httpPostedFile.SaveAs(fileSavePath); + } + } + } + else + { + using (WebClient client = new WebClient()) + { + // get file name from the URL + Uri uri = new Uri(url); + string fileName = Path.GetFileName(uri.LocalPath); + if (rewrite) + { + // Get the complete file path + fileSavePath = Path.Combine(documentStoragePath, fileName); + } + else + { + fileSavePath = Resources.GetFreeFileName(documentStoragePath, fileName); + } + // Download the Web resource and save it into the current filesystem folder. + client.DownloadFile(url, fileSavePath); + } + } + UploadedDocumentEntity uploadedDocument = new UploadedDocumentEntity + { + guid = fileSavePath + }; + return Request.CreateResponse(HttpStatusCode.OK, uploadedDocument); + } + catch (Exception ex) + { + // set exception message + return Request.CreateResponse(HttpStatusCode.InternalServerError, new Resources().GenerateException(ex)); + } + } + + /// + /// Download document + /// + /// string + /// bool + /// + [System.Web.Http.HttpGet] + [System.Web.Http.Route("downloadDocument")] + public HttpResponseMessage DownloadDocument(string path) + { + // add file into the response + if (File.Exists(path)) + { + RemoveAnnotations(path, ""); + HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); + var fileStream = new FileStream(path, FileMode.Open); + response.Content = new StreamContent(fileStream); + response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); + response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); + response.Content.Headers.ContentDisposition.FileName = Path.GetFileName(path); + return response; + } + else + { + return new HttpResponseMessage(HttpStatusCode.NotFound); + } + } + + /// + /// Download document + /// + /// string + /// bool + /// + [System.Web.Http.HttpGet] + [System.Web.Http.Route("downloadAnnotated")] + public HttpResponseMessage DownloadAnnotated(string path) + { + // add file into the response + if (File.Exists(path)) + { + HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); + var fileStream = new FileStream(path, FileMode.Open); + response.Content = new StreamContent(fileStream); + response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); + response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); + response.Content.Headers.ContentDisposition.FileName = ConvertFormat(path); + return response; + } + else + { + return new HttpResponseMessage(HttpStatusCode.NotFound); + } + } + + public string ConvertFormat(string path) + { + string fileName = Path.GetFileName(path); + string[] splits = fileName.Split('.'); + string t = null; + foreach (var split in splits) + { + t = split; + } + + switch (t) + { + case "ods": + return Path.GetFileName(path).Replace(t, "") + "xlsx"; + case "vsd": + return Path.GetFileName(path).Replace(t, "") + "vsdx"; + default: return Path.GetFileName(path); + } + } + + ///// + ///// Annotate document + ///// + ///// Annotated document info + [System.Web.Http.HttpPost] + [System.Web.Http.Route("annotate")] + public HttpResponseMessage Annotate(AnnotationPostedDataEntity annotateDocumentRequest) + { + AnnotatedDocumentEntity annotatedDocument = new AnnotatedDocumentEntity(); + try + { + // get/set parameters + string documentGuid = annotateDocumentRequest.guid; + string password = annotateDocumentRequest.password; + string documentType = SupportedImageFormats.Contains(Path.GetExtension(annotateDocumentRequest.guid).ToLowerInvariant()) ? "image" : annotateDocumentRequest.documentType; + string tempPath = GetTempPath(documentGuid); + + AnnotationDataEntity[] annotationsData = annotateDocumentRequest.annotationsData; + // initiate list of annotations to add + List annotations = new List(); + + using (GroupDocs.Annotation.Annotator annotator = new GroupDocs.Annotation.Annotator(documentGuid, GetLoadOptions(password))) + { + IDocumentInfo info = annotator.Document.GetDocumentInfo(); + + for (int i = 0; i < annotationsData.Length; i++) + { + AnnotationDataEntity annotationData = annotationsData[i]; + PageInfo pageInfo = info.PagesInfo[annotationsData[i].pageNumber - 1]; + // add annotation, if current annotation type isn't supported by the current document type it will be ignored + try + { + BaseAnnotator baseAnnotator = AnnotatorFactory.createAnnotator(annotationData, pageInfo); + if (baseAnnotator.IsSupported(documentType)) + { + annotations.Add(baseAnnotator.GetAnnotationBase(documentType)); + } + } + catch (Exception ex) + { + throw new Exceptions.AnnotatorException(ex.Message, ex); + } + } + } + + // Add annotation to the document + RemoveAnnotations(documentGuid, password); + // check if annotations array contains at least one annotation to add + if (annotations.Count != 0) + { + using (GroupDocs.Annotation.Annotator annotator = new GroupDocs.Annotation.Annotator(documentGuid, GetLoadOptions(password))) + { + foreach (var annotation in annotations) + { + annotator.Add(annotation); + } + + annotator.Save(tempPath); + } + + if (File.Exists(documentGuid)) + { + File.Delete(documentGuid); + } + + File.Move(tempPath, documentGuid); + } + + annotatedDocument = new AnnotatedDocumentEntity(); + annotatedDocument.guid = documentGuid; + if (annotateDocumentRequest.print) + { + annotatedDocument.pages = GetAnnotatedPagesForPrint(password, documentGuid); + File.Move(documentGuid, annotateDocumentRequest.guid); + } + } + catch (Exception ex) + { + // set exception message + return Request.CreateResponse(HttpStatusCode.InternalServerError, new Resources().GenerateException(ex)); + } + + return Request.CreateResponse(HttpStatusCode.OK, annotatedDocument); + } + + private static List GetAnnotatedPagesForPrint(string password, string documentGuid) + { + AnnotatedDocumentEntity description = new AnnotatedDocumentEntity(); + try + { + using (FileStream outputStream = File.OpenRead(documentGuid)) + { + using (GroupDocs.Annotation.Annotator annotator = new GroupDocs.Annotation.Annotator(outputStream, GetLoadOptions(password))) + { + IDocumentInfo info = annotator.Document.GetDocumentInfo(); + List pagesContent = GetAllPagesContent(annotator, info); + + for (int i = 0; i < info.PageCount; i++) + { + PageDataDescriptionEntity page = new PageDataDescriptionEntity(); + + if (pagesContent.Count > 0) + { + page.SetData(pagesContent[i]); + } + + description.pages.Add(page); + } + } + } + + return description.pages; + } + catch (FileNotFoundException ex) + { + throw ex; + } + } + + public static void RemoveAnnotations(string documentGuid, string password) + { + string tempPath = GetTempPath(documentGuid); + + try + { + using (Stream inputStream = File.Open(documentGuid, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) + { + using (GroupDocs.Annotation.Annotator annotator = new GroupDocs.Annotation.Annotator(inputStream, GetLoadOptions(password))) + { + annotator.Save(tempPath, new SaveOptions { AnnotationTypes = AnnotationType.None }); + } + } + + File.Delete(documentGuid); + File.Move(tempPath, documentGuid); + } + catch (Exception ex) + { + throw ex; + } + } + + private static string GetTempPath(string documentGuid) + { + string tempFilename = Path.GetFileNameWithoutExtension(documentGuid) + "_tmp"; + string tempPath = Path.Combine(Path.GetDirectoryName(documentGuid), tempFilename + Path.GetExtension(documentGuid)); + return tempPath; + } + + private static LoadOptions GetLoadOptions(string password) + { + LoadOptions loadOptions = new LoadOptions + { + Password = password + }; + + return loadOptions; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Annotations.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Annotations.cs new file mode 100644 index 0000000..ef8d608 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Annotations.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity +{ + public class Annotations + { + internal string[] Cells = { + "textHighlight" + }; + internal string[] Diagram = { + "area", + "point", + "polyline", + "textField", + "arrow", + "textRedaction", + "resourcesRedaction", + "distance" + }; + internal string[] Word = { + "area", + "point", + "textStrikeout", + "polyline", + "textField", + "watermark", + "textReplacement", + "arrow", + "textRedaction", + "resourcesRedaction", + "textUnderline", + "distance", + "textHighlight" + }; + internal string[] Pdf = { + "area", + "point", + "textStrikeout", + "polyline", + "textField", + "watermark", + "textReplacement", + "arrow", + "textRedaction", + "resourcesRedaction", + "textUnderline", + "distance", + "textHighlight" + }; + internal string[] Image = { + "area", + "point", + "textStrikeout", + "polyline", + "textField", + "watermark", + "arrow", + "textRedaction", + "resourcesRedaction", + "textUnderline", + "distance", + "textHighlight" + }; + internal string[] Slides = { + "area", + "point", + "textStrikeout", + "polyline", + "textField", + "watermark", + "arrow", + "textRedaction", + "resourcesRedaction", + "textUnderline", + "textHighlight" + }; + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Request/TextCoordinatesRequest.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Request/TextCoordinatesRequest.cs new file mode 100644 index 0000000..420e4d7 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Request/TextCoordinatesRequest.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetMvc.Products.Common.Entity.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Request +{ + public class TextCoordinatesRequest : PostedDataEntity + { + public int pageNumber { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/AnnotatedDocumentEntity.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/AnnotatedDocumentEntity.cs new file mode 100644 index 0000000..e3c8a2b --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/AnnotatedDocumentEntity.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetMvc.Products.Common.Entity.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web +{ + public class AnnotatedDocumentEntity : PageDescriptionEntity + { + public string guid { get; set; } + public List pages { get; set; } = new List(); + public string[] supportedAnnotations { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/AnnotationDataEntity.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/AnnotationDataEntity.cs new file mode 100644 index 0000000..c4a1c40 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/AnnotationDataEntity.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web +{ + public class AnnotationDataEntity + { + public int id { get; set; } + public int pageNumber { get; set; } + public int fontColor { get; set; } + public float fontSize { get; set; } + public float left { get; set; } + public float top { get; set; } + public float width { get; set; } + public float height { get; set; } + public string svgPath { get; set; } + public string type { get; set; } + public string documentType { get; set; } + public string text { get; set; } + public string font { get; set; } + public bool imported { get; set; } + public CommentsEntity[] comments { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/AnnotationPostedDataEntity.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/AnnotationPostedDataEntity.cs new file mode 100644 index 0000000..dba45f7 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/AnnotationPostedDataEntity.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetMvc.Products.Common.Entity.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web +{ + public class AnnotationPostedDataEntity : PostedDataEntity + { + public string documentType { get; set; } + public AnnotationDataEntity[] annotationsData { get; set; } + public bool print { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/CommentsEntity.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/CommentsEntity.cs new file mode 100644 index 0000000..5691ea1 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/CommentsEntity.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web +{ + public class CommentsEntity + { + public string time { get; set; } + public string text { get; set; } + public string userName { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/PageDataDescriptionEntity.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/PageDataDescriptionEntity.cs new file mode 100644 index 0000000..a478e63 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/PageDataDescriptionEntity.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetMvc.Products.Common.Entity.Web; +using Newtonsoft.Json; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web +{ + public class PageDataDescriptionEntity : PageDescriptionEntity + { + /// List of annotation data + [JsonProperty] + private AnnotationDataEntity[] annotations; + + public void SetAnnotations(AnnotationDataEntity[] annotations) + { + this.annotations = annotations; + } + + public AnnotationDataEntity[] GetAnnotations() + { + return annotations; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/TextRowEntity.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/TextRowEntity.cs new file mode 100644 index 0000000..b6a10fe --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Entity/Web/TextRowEntity.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web +{ + public class TextRowEntity + { + public List textCoordinates { get; set; } + public double lineTop { get; set; } + public double lineHeight { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Util/AnnotationMapper.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Util/AnnotationMapper.cs new file mode 100644 index 0000000..7b9e125 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Util/AnnotationMapper.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Web; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Models.AnnotationModels.Interfaces.Properties; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Util +{ + public class AnnotationMapper + { + private AnnotationMapper() + { + } + + /// + /// Map AnnotationInfo instances into AnnotationDataEntity + /// + /// AnnotationInfo[] + /// int + /// + public static AnnotationDataEntity[] MapForPage(AnnotationBase[] annotations, int pageNumber, PageInfo pageInfo, string documentType) + { + // initiate annotations data array + IList pageAnnotations = new List(); + // each annotation data - this functionality used since annotations data returned by the + // GroupDocs.Annotation library are obfuscated + for (int n = 0; n < annotations.Length; n++) + { + AnnotationBase annotationInfo = annotations[n]; + if (pageNumber == annotationInfo.PageNumber + 1) + { + AnnotationDataEntity annotation = MapAnnotationDataEntity(annotationInfo, pageInfo, documentType); + pageAnnotations.Add(annotation); + } + } + + return pageAnnotations.ToArray(); + } + + /// + /// Map AnnotationInfo instances into AnnotationDataEntity + /// + /// AnnotationInfo + /// AnnotationDataEntity + public static AnnotationDataEntity MapAnnotationDataEntity(AnnotationBase annotationInfo, PageInfo pageInfo, string documentType) + { + string annotationTypeName = Enum.GetName(typeof(AnnotationType), annotationInfo.Type); + float maxY = 0, minY = 0, maxX = 0, minX = 0; + float boxX = 0, boxY = 0, boxHeight = 0, boxWidth = 0; + string svgPath = ""; + + if (annotationInfo is IPoints) + { + List points = ((IPoints)annotationInfo).Points; + maxY = points.Max(p => p.Y); + minY = points.Min(p => p.Y); + maxX = points.Max(p => p.X); + minX = points.Min(p => p.X); + } + + if (annotationInfo is IBox) + { + Rectangle box = ((IBox)annotationInfo).Box; + boxX = box.X; + boxY = box.Y; + boxHeight = box.Height; + boxWidth = box.Width; + + StringBuilder builder = new StringBuilder(). + Append("M").Append(box.X.ToString(CultureInfo.InvariantCulture)). + Append(",").Append(box.Y.ToString(CultureInfo.InvariantCulture)). + Append("L").Append(box.Width.ToString(CultureInfo.InvariantCulture)). + Append(",").Append(box.Height.ToString(CultureInfo.InvariantCulture)); + + svgPath = builder.ToString(); + } + + AnnotationDataEntity annotation = new AnnotationDataEntity(); + annotation.font = annotationInfo is IFontFamily ? ((IFontFamily)annotationInfo).FontFamily : ""; + double fontSize = annotationInfo is IFontSize ? Convert.ToDouble((((IFontSize)annotationInfo).FontSize == null) ? 0 : ((IFontSize)annotationInfo).FontSize) : (annotationInfo is ITextToReplace ? 10 : 0); + annotation.fontSize = (float)fontSize; + annotation.fontColor = annotationInfo is IFontColor ? ((((IFontColor)annotationInfo).FontColor == null) ? 0 : (int)((IFontColor)annotationInfo).FontColor) : 0; + annotation.height = annotationInfo is IBox ? boxHeight : (annotationInfo is IPoints ? (maxY - minY) : 0); + annotation.left = annotationInfo is IBox ? boxX : (annotationInfo is IPoints ? minX : 0); + annotation.pageNumber = (int)annotationInfo.PageNumber + 1; + annotation.svgPath = annotationInfo is ISvgPath ? (((ISvgPath)annotationInfo).SvgPath?.Replace("l", "L")) : svgPath; + string text = annotationInfo is IText ? ((IText)annotationInfo).Text : (annotationInfo is ITextToReplace ? ((ITextToReplace)annotationInfo).TextToReplace : ""); + annotation.text = text; + // TODO: remove comment after check all annotations types on main formats + annotation.top = annotationInfo is IBox ? boxY : (annotationInfo is IPoints ? (!documentType.Equals("image") ? pageInfo.Height - maxY : minY) : 0); + annotation.type = char.ToLowerInvariant(annotationTypeName[0]) + annotationTypeName.Substring(1); + annotation.width = annotationInfo is IBox ? boxWidth : (annotationInfo is IPoints ? (maxX - minX) : 0); + // each reply data + Reply[] replies = annotationInfo.Replies.ToArray(); + if (replies != null && replies.Length > 0) + { + CommentsEntity[] comments = new CommentsEntity[replies.Length]; + for (int m = 0; m < replies.Length; m++) + { + CommentsEntity comment = new CommentsEntity(); + Reply reply = replies[m]; + comment.text = reply.Comment; + comment.time = reply.RepliedOn.ToString("yyyy-MM-dd HH:mm:ss"); + comment.userName = reply.User.Name; + comments[m] = comment; + } + annotation.comments = comments; + } + return annotation; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Util/Directory/DirectoryUtils.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Util/Directory/DirectoryUtils.cs new file mode 100644 index 0000000..5bf758d --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Util/Directory/DirectoryUtils.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Config; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Util.Directory +{ + public class DirectoryUtils + { + public FilesDirectoryUtils FilesDirectory; + + /// + /// Constructor + /// + /// AnnotationConfiguration + public DirectoryUtils(AnnotationConfiguration annotationConfiguration) + { + FilesDirectory = new FilesDirectoryUtils(annotationConfiguration); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Util/Directory/FilesDirectoryUtils.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Util/Directory/FilesDirectoryUtils.cs new file mode 100644 index 0000000..f15c63e --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Util/Directory/FilesDirectoryUtils.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Config; +using GroupDocs.Annotation.AspNetMvc.Products.Common.Util.Directory; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Util.Directory +{ + public class FilesDirectoryUtils : IDirectoryUtils + { + + private readonly AnnotationConfiguration AnnotationConfiguration; + + /// + /// Constructor + /// + /// SignatureConfiguration + public FilesDirectoryUtils(AnnotationConfiguration annotationConfiguration) + { + AnnotationConfiguration = annotationConfiguration; + } + + /// + /// Get path + /// + /// string + public string GetPath() + { + return AnnotationConfiguration.GetFilesDirectory(); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Annotation/Util/SupportedAnnotations.cs b/Demos/ASP.NET MVC/src/Products/Annotation/Util/SupportedAnnotations.cs new file mode 100644 index 0000000..a0c312f --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Annotation/Util/SupportedAnnotations.cs @@ -0,0 +1,35 @@ +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Entity; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Annotation.Util +{ + public class SupportedAnnotations + { + // TODO: re-check the passed documentType + public string[] GetSupportedAnnotations(string documentType) + { + Annotations annotations = new Annotations(); + switch (documentType) + { + case "Portable Document Format": + case "PDF": + return annotations.Pdf; + case "Microsoft Word": + case "WORDS": + return annotations.Word; + case "Microsoft PowerPoint": + case "SLIDES": + return annotations.Slides; + case "image": + return annotations.Image; + case "Microsoft Excel": + case "CELLS": + return annotations.Cells; + case "AutoCAD Drawing File Format": + case "diagram": + return annotations.Diagram; + default: + return annotations.Pdf; + } + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Common/Config/ApplicationConfiguration.cs b/Demos/ASP.NET MVC/src/Products/Common/Config/ApplicationConfiguration.cs new file mode 100644 index 0000000..79565bd --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Common/Config/ApplicationConfiguration.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetMvc.Products.Common.Util.Parser; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Common.Config +{ + public class ApplicationConfiguration + { + /// + /// Get license path from the application configuration section of the web.config + /// + public ApplicationConfiguration() + { + YamlParser parser = new YamlParser(); + dynamic configuration = parser.GetConfiguration("application"); + ConfigurationValuesGetter valuesGetter = new ConfigurationValuesGetter(configuration); + string license = valuesGetter.GetStringPropertyValue("licensePath"); + if (String.IsNullOrEmpty(license)) + { + string[] files = System.IO.Directory.GetFiles(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, LicensePath), "*.lic"); + LicensePath = Path.Combine(LicensePath, files[0]); + } + else + { + if (!IsFullPath(license)) + { + license = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, license); + if (!Directory.Exists(Path.GetDirectoryName(license))) + { + Directory.CreateDirectory(Path.GetDirectoryName(license)); + } + } + LicensePath = license; + if (!File.Exists(LicensePath)) + { + Debug.WriteLine("License file path is incorrect, launched in trial mode"); + LicensePath = ""; + } + } + } + + public string LicensePath { get; set; } = "Licenses"; + + private static bool IsFullPath(string path) + { + return !String.IsNullOrWhiteSpace(path) + && path.IndexOfAny(Path.GetInvalidPathChars().ToArray()) == -1 + && Path.IsPathRooted(path) + && !Path.GetPathRoot(path).Equals(Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Common/Config/CommonConfiguration.cs b/Demos/ASP.NET MVC/src/Products/Common/Config/CommonConfiguration.cs new file mode 100644 index 0000000..2ff4f59 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Common/Config/CommonConfiguration.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.Configuration; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetMvc.Products.Common.Util.Parser; +using Newtonsoft.Json; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Common.Config +{ + public class CommonConfiguration : ConfigurationSection + { + [JsonProperty] + public bool pageSelector { get; set; } + + [JsonProperty] + public bool download { get; set; } + + [JsonProperty] + public bool upload { get; set; } + + [JsonProperty] + public bool print { get; set; } + + [JsonProperty] + public bool browse { get; set; } + + [JsonProperty] + public bool rewrite { get; set; } + + [JsonProperty] + public bool enableRightClick { get; set; } + + private NameValueCollection commonConfiguration = (NameValueCollection)System.Configuration.ConfigurationManager.GetSection("commonConfiguration"); + + /// + /// Constructor + /// + public CommonConfiguration() + { + YamlParser parser = new YamlParser(); + dynamic configuration = parser.GetConfiguration("common"); + ConfigurationValuesGetter valuesGetter = new ConfigurationValuesGetter(configuration); + pageSelector = valuesGetter.GetBooleanPropertyValue("pageSelector", Convert.ToBoolean(commonConfiguration["isPageSelector"])); + download = valuesGetter.GetBooleanPropertyValue("download", Convert.ToBoolean(commonConfiguration["isDownload"])); + upload = valuesGetter.GetBooleanPropertyValue("upload", Convert.ToBoolean(commonConfiguration["isUpload"])); + print = valuesGetter.GetBooleanPropertyValue("print", Convert.ToBoolean(commonConfiguration["isPrint"])); + browse = valuesGetter.GetBooleanPropertyValue("browse", Convert.ToBoolean(commonConfiguration["isBrowse"])); + rewrite = valuesGetter.GetBooleanPropertyValue("rewrite", Convert.ToBoolean(commonConfiguration["isRewrite"])); + enableRightClick = valuesGetter.GetBooleanPropertyValue("enableRightClick", Convert.ToBoolean(commonConfiguration["enableRightClick"])); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Common/Config/ConfigurationValuesGetter.cs b/Demos/ASP.NET MVC/src/Products/Common/Config/ConfigurationValuesGetter.cs new file mode 100644 index 0000000..75af1e4 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Common/Config/ConfigurationValuesGetter.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Common.Config +{ + public class ConfigurationValuesGetter + { + private dynamic Configuration; + + public ConfigurationValuesGetter(dynamic configuration) + { + Configuration = configuration; + } + + public string GetStringPropertyValue(string propertyName) + { + return (Configuration != null && Configuration[propertyName] != null && !String.IsNullOrEmpty(Configuration[propertyName].ToString())) ? + Configuration[propertyName].ToString() : + null; + } + + public string GetStringPropertyValue(string propertyName, string defaultValue) + { + return (Configuration != null && Configuration[propertyName] != null && !String.IsNullOrEmpty(Configuration[propertyName].ToString())) ? + Configuration[propertyName].ToString() : + defaultValue; + } + + public int GetIntegerPropertyValue(string propertyName, int defaultValue) + { + int value; + value = (Configuration != null && Configuration[propertyName] != null && !String.IsNullOrEmpty(Configuration[propertyName].ToString())) ? + Convert.ToInt32(Configuration[propertyName]) : + defaultValue; + return value; + } + + public int GetIntegerPropertyValue(string propertyName, int defaultValue, string innerPropertyName) + { + int value; + if (!String.IsNullOrEmpty(innerPropertyName)) + { + value = (Configuration != null && Configuration[propertyName] != null && !String.IsNullOrEmpty(Configuration[propertyName][innerPropertyName].ToString())) ? + Convert.ToInt32(Configuration[propertyName][innerPropertyName]) : + defaultValue; + } + else + { + value = (Configuration != null && Configuration[propertyName] != null && !String.IsNullOrEmpty(Configuration[propertyName].ToString())) ? + Convert.ToInt32(Configuration[propertyName]) : + defaultValue; + } + return value; + } + + public bool GetBooleanPropertyValue(string propertyName, bool defaultValue) + { + return (Configuration != null && Configuration[propertyName] != null && !String.IsNullOrEmpty(Configuration[propertyName].ToString())) ? Convert.ToBoolean(Configuration[propertyName]) : defaultValue; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Common/Config/GlobalConfiguration.cs b/Demos/ASP.NET MVC/src/Products/Common/Config/GlobalConfiguration.cs new file mode 100644 index 0000000..b8d8cba --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Common/Config/GlobalConfiguration.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetMvc.Products.Annotation.Config; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Common.Config +{ + public class GlobalConfiguration + { + public ServerConfiguration Server { get; set; } + public ApplicationConfiguration Application { get; set; } + public CommonConfiguration Common { get; set; } + public AnnotationConfiguration Annotation { get; set; } + + /// + /// Get all configurations + /// + public GlobalConfiguration() + { + Server = new ServerConfiguration(); + Application = new ApplicationConfiguration(); + Common = new CommonConfiguration(); + Annotation = new AnnotationConfiguration(); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Common/Config/ServerConfiguration.cs b/Demos/ASP.NET MVC/src/Products/Common/Config/ServerConfiguration.cs new file mode 100644 index 0000000..87a777e --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Common/Config/ServerConfiguration.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Specialized; +using System.Configuration; +using GroupDocs.Annotation.AspNetMvc.Products.Common.Util.Parser; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Common.Config +{ + public class ServerConfiguration : ConfigurationSection + { + private readonly NameValueCollection serverConfiguration = (NameValueCollection)ConfigurationManager.GetSection("serverConfiguration"); + + public int HttpPort { get; set; } = 8080; + public string HostAddress { get; set; } = "localhost"; + + /// + /// Get server configuration section of the web.config + /// + public ServerConfiguration() + { + YamlParser parser = new YamlParser(); + dynamic configuration = parser.GetConfiguration("server"); + ConfigurationValuesGetter valuesGetter = new ConfigurationValuesGetter(configuration); + int defaultPort = Convert.ToInt32(serverConfiguration["httpPort"]); + HttpPort = valuesGetter.GetIntegerPropertyValue("connector", defaultPort, "port"); + HostAddress = valuesGetter.GetStringPropertyValue("hostAddress", HostAddress); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/ExceptionEntity.cs b/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/ExceptionEntity.cs new file mode 100644 index 0000000..bbb4e8c --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/ExceptionEntity.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Common.Entity.Web +{ + public class ExceptionEntity + { + public string message { get; set; } + public System.Exception exception { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/FileDescriptionEntity.cs b/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/FileDescriptionEntity.cs new file mode 100644 index 0000000..3a6065f --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/FileDescriptionEntity.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Common.Entity.Web +{ + public class FileDescriptionEntity + { + public string guid { get; set; } + public string name { get; set; } + public string docType { get; set; } + public bool isDirectory { get; set; } + public long size { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/LoadDocumentEntity.cs b/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/LoadDocumentEntity.cs new file mode 100644 index 0000000..8610e10 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/LoadDocumentEntity.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using Newtonsoft.Json; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Common.Entity.Web +{ + public class LoadDocumentEntity + { + ///Document Guid + [JsonProperty] + private string guid; + + ///list of pages + [JsonProperty] + private List pages = new List(); + + public void SetGuid(string guid) + { + this.guid = guid; + } + + public string GetGuid() + { + return guid; + } + + public void SetPages(PageDescriptionEntity page) + { + this.pages.Add(page); + } + + public List GetPages() + { + return pages; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/PageDescriptionEntity.cs b/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/PageDescriptionEntity.cs new file mode 100644 index 0000000..2d64143 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/PageDescriptionEntity.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using Newtonsoft.Json; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Common.Entity.Web +{ + public class PageDescriptionEntity + { + public double width { get; set; } + public double height { get; set; } + public int number { get; set; } + public int angle { get; set; } + + [JsonProperty] + private string data; + + public void SetData(string data) + { + this.data = data; + } + + public string GetData() + { + return data; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/PostedDataEntity.cs b/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/PostedDataEntity.cs new file mode 100644 index 0000000..577280b --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/PostedDataEntity.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Common.Entity.Web +{ + public class PostedDataEntity + { + public string path { get; set; } + public string guid { get; set; } + public string password { get; set; } + public string url { get; set; } + public int page { get; set; } + public int angle { get; set; } + public List pages { get; set; } + public bool rewrite { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/UploadedDocumentEntity.cs b/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/UploadedDocumentEntity.cs new file mode 100644 index 0000000..f1dd7e1 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Common/Entity/Web/UploadedDocumentEntity.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Common.Entity.Web +{ + public class UploadedDocumentEntity + { + public string guid { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Common/Resources/Resources.cs b/Demos/ASP.NET MVC/src/Products/Common/Resources/Resources.cs new file mode 100644 index 0000000..465ce96 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Common/Resources/Resources.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetMvc.Products.Common.Entity.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Common.Resources +{ + public class Resources + { + /// + /// Get free file name for uploaded file if such file already exists + /// + /// Directory where to search files + /// Uploaded file name + /// + public static string GetFreeFileName(string directory, string fileName) + { + string resultFileName = ""; + try + { + // get all files from the directory + string[] listOfFiles = Directory.GetFiles(directory); + for (int i = 0; i < listOfFiles.Length; i++) + { + // check if file with current name already exists + int number = i + 1; + string newFileName = Path.GetFileNameWithoutExtension(fileName) + "-Copy(" + number + ")." + Path.GetExtension(fileName); + resultFileName = Path.Combine(directory, newFileName); + if (File.Exists(resultFileName)) + { + continue; + } + else + { + break; + } + } + } + catch (System.Exception e) + { + throw e; + } + return resultFileName; + } + + /// + /// Generate exception + /// + /// Exception + /// ExceptionEntity + public ExceptionEntity GenerateException(System.Exception ex) + { + // Initiate Exception entity + ExceptionEntity exceptionEntity = new ExceptionEntity(); + // set exception data + exceptionEntity.message = ex.Message; + exceptionEntity.exception = ex; + return exceptionEntity; + } + + /// + /// Generate exception for password error + /// + /// Exception + /// string + /// ExceptionEntity + public ExceptionEntity GenerateException(System.Exception ex, String password) + { + // Initiate exception + ExceptionEntity exceptionEntity = new ExceptionEntity(); + // Check if exception message contains password and password is empty + if (ex.Message.Contains("password") && String.IsNullOrEmpty(password)) + { + exceptionEntity.message = "Password Required"; + } + // Check if exception contains password and password is set + else if (ex.Message.Contains("password") && !String.IsNullOrEmpty(password)) + { + exceptionEntity.message = "Incorrect password"; + } + else + { + exceptionEntity.message = ex.Message; + exceptionEntity.exception = ex; + } + return exceptionEntity; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Common/Util/Comparator/FileNameComparator.cs b/Demos/ASP.NET MVC/src/Products/Common/Util/Comparator/FileNameComparator.cs new file mode 100644 index 0000000..a435df2 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Common/Util/Comparator/FileNameComparator.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Common.Util.Comparator +{ + public class FileNameComparator : IComparer + { + /// + /// Compare file names + /// + /// string + /// string + /// + public int Compare(string x, string y) + { + string strExt1 = Path.GetFileName(x); + string strExt2 = Path.GetFileName(y); + + if (string.Equals(strExt1, strExt2, StringComparison.Ordinal)) + { + return string.Compare(x, y, false, CultureInfo.InvariantCulture); + } + else + { + return string.Compare(strExt1, strExt2, false, CultureInfo.InvariantCulture); + } + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Common/Util/Comparator/FileTypeComparator.cs b/Demos/ASP.NET MVC/src/Products/Common/Util/Comparator/FileTypeComparator.cs new file mode 100644 index 0000000..3b832fb --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Common/Util/Comparator/FileTypeComparator.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Common.Util.Comparator +{ + public class FileTypeComparator : IComparer + { + /// + /// Compare file types + /// + /// string + /// string + /// + public int Compare(string x, string y) + { + string strExt1 = Path.GetExtension(x); + string strExt2 = Path.GetExtension(y); + + if (string.Equals(strExt1, strExt2, StringComparison.Ordinal)) + { + return string.Compare(x, y, false, CultureInfo.InvariantCulture); + } + else + { + return string.Compare(strExt1, strExt2, false, CultureInfo.InvariantCulture); + } + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Common/Util/Directory/IDirectoryUtils.cs b/Demos/ASP.NET MVC/src/Products/Common/Util/Directory/IDirectoryUtils.cs new file mode 100644 index 0000000..dd35150 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Common/Util/Directory/IDirectoryUtils.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Common.Util.Directory +{ + public interface IDirectoryUtils + { + string GetPath(); + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Products/Common/Util/Parser/YamlParser.cs b/Demos/ASP.NET MVC/src/Products/Common/Util/Parser/YamlParser.cs new file mode 100644 index 0000000..1430e14 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Products/Common/Util/Parser/YamlParser.cs @@ -0,0 +1,42 @@ +using Newtonsoft.Json; +using System; +using System.IO; +using System.Net; +using YamlDotNet.Serialization; + +namespace GroupDocs.Annotation.AspNetMvc.Products.Common.Util.Parser +{ + public class YamlParser + { + private static string YamlPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "configuration.yml"); + private readonly dynamic ConfiguationData; + + public YamlParser() + { + if (File.Exists(YamlPath)) + { + using (var reader = new StringReader(File.ReadAllText(YamlPath))) + { + var deserializer = new DeserializerBuilder().Build(); + var yamlObject = deserializer.Deserialize(reader); + + var serializer = new SerializerBuilder() + .JsonCompatible() + .Build(); + + ConfiguationData = serializer.Serialize(yamlObject); + } + } + } + + public dynamic GetConfiguration(string configurationSectionName) + { + dynamic productConfiguration = null; + if (ConfiguationData != null) + { + productConfiguration = JsonConvert.DeserializeObject(ConfiguationData)[configurationSectionName]; + } + return productConfiguration; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Properties/AssemblyInfo.cs b/Demos/ASP.NET MVC/src/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..f9e2c40 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Управление общими сведениями о сборке осуществляется с помощью +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанных с этой сборкой. +[assembly: AssemblyTitle("GroupDocs.Annotation.AspNetMvc")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("GroupDocs.Annotation.AspNetMvc")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения false в параметре ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если требуется обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение true для требуемого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов typelib, если этот проект видим для COM +[assembly: Guid("2bd1d7b5-8ee3-4a8c-9b79-278258349297")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// основной номер версии; +// дополнительный номер версии; +// номер сборки; +// редакция. +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию, +// используя "*", как показано ниже: +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Demos/ASP.NET MVC/src/Scripts/respond.js b/Demos/ASP.NET MVC/src/Scripts/respond.js new file mode 100644 index 0000000..6690827 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Scripts/respond.js @@ -0,0 +1,326 @@ +/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ +/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */ +window.matchMedia = window.matchMedia || (function(doc, undefined){ + + var bool, + docElem = doc.documentElement, + refNode = docElem.firstElementChild || docElem.firstChild, + // fakeBody required for + fakeBody = doc.createElement('body'), + div = doc.createElement('div'); + + div.id = 'mq-test-1'; + div.style.cssText = "position:absolute;top:-100em"; + fakeBody.style.background = "none"; + fakeBody.appendChild(div); + + return function(q){ + + div.innerHTML = '­'; + + docElem.insertBefore(fakeBody, refNode); + bool = div.offsetWidth == 42; + docElem.removeChild(fakeBody); + + return { matches: bool, media: q }; + }; + +})(document); + + + + +/*! Respond.js v1.2.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ +(function( win ){ + //exposed namespace + win.respond = {}; + + //define update even in native-mq-supporting browsers, to avoid errors + respond.update = function(){}; + + //expose media query support flag for external use + respond.mediaQueriesSupported = win.matchMedia && win.matchMedia( "only all" ).matches; + + //if media queries are supported, exit here + if( respond.mediaQueriesSupported ){ return; } + + //define vars + var doc = win.document, + docElem = doc.documentElement, + mediastyles = [], + rules = [], + appendedEls = [], + parsedSheets = {}, + resizeThrottle = 30, + head = doc.getElementsByTagName( "head" )[0] || docElem, + base = doc.getElementsByTagName( "base" )[0], + links = head.getElementsByTagName( "link" ), + requestQueue = [], + + //loop stylesheets, send text content to translate + ripCSS = function(){ + var sheets = links, + sl = sheets.length, + i = 0, + //vars for loop: + sheet, href, media, isCSS; + + for( ; i < sl; i++ ){ + sheet = sheets[ i ], + href = sheet.href, + media = sheet.media, + isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet"; + + //only links plz and prevent re-parsing + if( !!href && isCSS && !parsedSheets[ href ] ){ + // selectivizr exposes css through the rawCssText expando + if (sheet.styleSheet && sheet.styleSheet.rawCssText) { + translate( sheet.styleSheet.rawCssText, href, media ); + parsedSheets[ href ] = true; + } else { + if( (!/^([a-zA-Z:]*\/\/)/.test( href ) && !base) + || href.replace( RegExp.$1, "" ).split( "/" )[0] === win.location.host ){ + requestQueue.push( { + href: href, + media: media + } ); + } + } + } + } + makeRequests(); + }, + + //recurse through request queue, get css text + makeRequests = function(){ + if( requestQueue.length ){ + var thisRequest = requestQueue.shift(); + + ajax( thisRequest.href, function( styles ){ + translate( styles, thisRequest.href, thisRequest.media ); + parsedSheets[ thisRequest.href ] = true; + makeRequests(); + } ); + } + }, + + //find media blocks in css text, convert to style blocks + translate = function( styles, href, media ){ + var qs = styles.match( /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi ), + ql = qs && qs.length || 0, + //try to get CSS path + href = href.substring( 0, href.lastIndexOf( "/" )), + repUrls = function( css ){ + return css.replace( /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g, "$1" + href + "$2$3" ); + }, + useMedia = !ql && media, + //vars used in loop + i = 0, + j, fullq, thisq, eachq, eql; + + //if path exists, tack on trailing slash + if( href.length ){ href += "/"; } + + //if no internal queries exist, but media attr does, use that + //note: this currently lacks support for situations where a media attr is specified on a link AND + //its associated stylesheet has internal CSS media queries. + //In those cases, the media attribute will currently be ignored. + if( useMedia ){ + ql = 1; + } + + + for( ; i < ql; i++ ){ + j = 0; + + //media attr + if( useMedia ){ + fullq = media; + rules.push( repUrls( styles ) ); + } + //parse for styles + else{ + fullq = qs[ i ].match( /@media *([^\{]+)\{([\S\s]+?)$/ ) && RegExp.$1; + rules.push( RegExp.$2 && repUrls( RegExp.$2 ) ); + } + + eachq = fullq.split( "," ); + eql = eachq.length; + + for( ; j < eql; j++ ){ + thisq = eachq[ j ]; + mediastyles.push( { + media : thisq.split( "(" )[ 0 ].match( /(only\s+)?([a-zA-Z]+)\s?/ ) && RegExp.$2 || "all", + rules : rules.length - 1, + hasquery: thisq.indexOf("(") > -1, + minw : thisq.match( /\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ), + maxw : thisq.match( /\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ) + } ); + } + } + + applyMedia(); + }, + + lastCall, + + resizeDefer, + + // returns the value of 1em in pixels + getEmValue = function() { + var ret, + div = doc.createElement('div'), + body = doc.body, + fakeUsed = false; + + div.style.cssText = "position:absolute;font-size:1em;width:1em"; + + if( !body ){ + body = fakeUsed = doc.createElement( "body" ); + body.style.background = "none"; + } + + body.appendChild( div ); + + docElem.insertBefore( body, docElem.firstChild ); + + ret = div.offsetWidth; + + if( fakeUsed ){ + docElem.removeChild( body ); + } + else { + body.removeChild( div ); + } + + //also update eminpx before returning + ret = eminpx = parseFloat(ret); + + return ret; + }, + + //cached container for 1em value, populated the first time it's needed + eminpx, + + //enable/disable styles + applyMedia = function( fromResize ){ + var name = "clientWidth", + docElemProp = docElem[ name ], + currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[ name ] || docElemProp, + styleBlocks = {}, + lastLink = links[ links.length-1 ], + now = (new Date()).getTime(); + + //throttle resize calls + if( fromResize && lastCall && now - lastCall < resizeThrottle ){ + clearTimeout( resizeDefer ); + resizeDefer = setTimeout( applyMedia, resizeThrottle ); + return; + } + else { + lastCall = now; + } + + for( var i in mediastyles ){ + var thisstyle = mediastyles[ i ], + min = thisstyle.minw, + max = thisstyle.maxw, + minnull = min === null, + maxnull = max === null, + em = "em"; + + if( !!min ){ + min = parseFloat( min ) * ( min.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 ); + } + if( !!max ){ + max = parseFloat( max ) * ( max.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 ); + } + + // if there's no media query at all (the () part), or min or max is not null, and if either is present, they're true + if( !thisstyle.hasquery || ( !minnull || !maxnull ) && ( minnull || currWidth >= min ) && ( maxnull || currWidth <= max ) ){ + if( !styleBlocks[ thisstyle.media ] ){ + styleBlocks[ thisstyle.media ] = []; + } + styleBlocks[ thisstyle.media ].push( rules[ thisstyle.rules ] ); + } + } + + //remove any existing respond style element(s) + for( var i in appendedEls ){ + if( appendedEls[ i ] && appendedEls[ i ].parentNode === head ){ + head.removeChild( appendedEls[ i ] ); + } + } + + //inject active styles, grouped by media type + for( var i in styleBlocks ){ + var ss = doc.createElement( "style" ), + css = styleBlocks[ i ].join( "\n" ); + + ss.type = "text/css"; + ss.media = i; + + //originally, ss was appended to a documentFragment and sheets were appended in bulk. + //this caused crashes in IE in a number of circumstances, such as when the HTML element had a bg image set, so appending beforehand seems best. Thanks to @dvelyk for the initial research on this one! + head.insertBefore( ss, lastLink.nextSibling ); + + if ( ss.styleSheet ){ + ss.styleSheet.cssText = css; + } + else { + ss.appendChild( doc.createTextNode( css ) ); + } + + //push to appendedEls to track for later removal + appendedEls.push( ss ); + } + }, + //tweaked Ajax functions from Quirksmode + ajax = function( url, callback ) { + var req = xmlHttp(); + if (!req){ + return; + } + req.open( "GET", url, true ); + req.onreadystatechange = function () { + if ( req.readyState != 4 || req.status != 200 && req.status != 304 ){ + return; + } + callback( req.responseText ); + } + if ( req.readyState == 4 ){ + return; + } + req.send( null ); + }, + //define ajax obj + xmlHttp = (function() { + var xmlhttpmethod = false; + try { + xmlhttpmethod = new XMLHttpRequest(); + } + catch( e ){ + xmlhttpmethod = new ActiveXObject( "Microsoft.XMLHTTP" ); + } + return function(){ + return xmlhttpmethod; + }; + })(); + + //translate CSS + ripCSS(); + + //expose update for re-running respond later on + respond.update = ripCSS; + + //adjust on resize + function callMedia(){ + applyMedia( true ); + } + if( win.addEventListener ){ + win.addEventListener( "resize", callMedia, false ); + } + else if( win.attachEvent ){ + win.attachEvent( "onresize", callMedia ); + } +})(this); diff --git a/Demos/ASP.NET MVC/src/Scripts/respond.min.js b/Demos/ASP.NET MVC/src/Scripts/respond.min.js new file mode 100644 index 0000000..94e308e --- /dev/null +++ b/Demos/ASP.NET MVC/src/Scripts/respond.min.js @@ -0,0 +1,6 @@ +/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ +/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */ +window.matchMedia=window.matchMedia||(function(e,f){var c,a=e.documentElement,b=a.firstElementChild||a.firstChild,d=e.createElement("body"),g=e.createElement("div");g.id="mq-test-1";g.style.cssText="position:absolute;top:-100em";d.style.background="none";d.appendChild(g);return function(h){g.innerHTML='­';a.insertBefore(d,b);c=g.offsetWidth==42;a.removeChild(d);return{matches:c,media:h}}})(document); + +/*! Respond.js v1.2.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ +(function(e){e.respond={};respond.update=function(){};respond.mediaQueriesSupported=e.matchMedia&&e.matchMedia("only all").matches;if(respond.mediaQueriesSupported){return}var w=e.document,s=w.documentElement,i=[],k=[],q=[],o={},h=30,f=w.getElementsByTagName("head")[0]||s,g=w.getElementsByTagName("base")[0],b=f.getElementsByTagName("link"),d=[],a=function(){var D=b,y=D.length,B=0,A,z,C,x;for(;B-1,minw:F.match(/\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:F.match(/\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}}j()},l,r,v=function(){var z,A=w.createElement("div"),x=w.body,y=false;A.style.cssText="position:absolute;font-size:1em;width:1em";if(!x){x=y=w.createElement("body");x.style.background="none"}x.appendChild(A);s.insertBefore(x,s.firstChild);z=A.offsetWidth;if(y){s.removeChild(x)}else{x.removeChild(A)}z=p=parseFloat(z);return z},p,j=function(I){var x="clientWidth",B=s[x],H=w.compatMode==="CSS1Compat"&&B||w.body[x]||B,D={},G=b[b.length-1],z=(new Date()).getTime();if(I&&l&&z-l-1?(p||v()):1)}if(!!J){J=parseFloat(J)*(J.indexOf(y)>-1?(p||v()):1)}if(!K.hasquery||(!A||!L)&&(A||H>=C)&&(L||H<=J)){if(!D[K.media]){D[K.media]=[]}D[K.media].push(k[K.rules])}}for(var E in q){if(q[E]&&q[E].parentNode===f){f.removeChild(q[E])}}for(var E in D){var M=w.createElement("style"),F=D[E].join("\n");M.type="text/css";M.media=E;f.insertBefore(M,G.nextSibling);if(M.styleSheet){M.styleSheet.cssText=F}else{M.appendChild(w.createTextNode(F))}q.push(M)}},n=function(x,z){var y=c();if(!y){return}y.open("GET",x,true);y.onreadystatechange=function(){if(y.readyState!=4||y.status!=200&&y.status!=304){return}z(y.responseText)};if(y.readyState==4){return}y.send(null)},c=(function(){var x=false;try{x=new XMLHttpRequest()}catch(y){x=new ActiveXObject("Microsoft.XMLHTTP")}return function(){return x}})();a();respond.update=a;function t(){j(true)}if(e.addEventListener){e.addEventListener("resize",t,false)}else{if(e.attachEvent){e.attachEvent("onresize",t)}}})(this); \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Views/Annotation/index.cshtml b/Demos/ASP.NET MVC/src/Views/Annotation/index.cshtml new file mode 100644 index 0000000..7ff8783 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Views/Annotation/index.cshtml @@ -0,0 +1,25 @@ +@{ + GroupDocs.Annotation.AspNetMvc.Products.Common.Config.GlobalConfiguration config = new GroupDocs.Annotation.AspNetMvc.Products.Common.Config.GlobalConfiguration(); +} + + + + + + Annotation for .NET MVC + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Showcases/GroupDocs-Annotation-Modern-Front-End/GroupDocs.Annotation for .NET/Views/web.config b/Demos/ASP.NET MVC/src/Views/web.config similarity index 89% rename from Showcases/GroupDocs-Annotation-Modern-Front-End/GroupDocs.Annotation for .NET/Views/web.config rename to Demos/ASP.NET MVC/src/Views/web.config index e5b5a68..b9d1bc8 100644 --- a/Showcases/GroupDocs-Annotation-Modern-Front-End/GroupDocs.Annotation for .NET/Views/web.config +++ b/Demos/ASP.NET MVC/src/Views/web.config @@ -9,14 +9,14 @@ - + - + @@ -35,7 +35,7 @@ - + diff --git a/Demos/ASP.NET MVC/src/Web.Debug.config b/Demos/ASP.NET MVC/src/Web.Debug.config new file mode 100644 index 0000000..246977a --- /dev/null +++ b/Demos/ASP.NET MVC/src/Web.Debug.config @@ -0,0 +1,31 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Web.Release.config b/Demos/ASP.NET MVC/src/Web.Release.config new file mode 100644 index 0000000..3a1668e --- /dev/null +++ b/Demos/ASP.NET MVC/src/Web.Release.config @@ -0,0 +1,32 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/Web.config b/Demos/ASP.NET MVC/src/Web.config new file mode 100644 index 0000000..55bf9d7 --- /dev/null +++ b/Demos/ASP.NET MVC/src/Web.config @@ -0,0 +1,79 @@ + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/client/.editorconfig b/Demos/ASP.NET MVC/src/client/.editorconfig new file mode 100644 index 0000000..6e87a00 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/Demos/ASP.NET MVC/src/client/.gitignore b/Demos/ASP.NET MVC/src/client/.gitignore new file mode 100644 index 0000000..ee5c9d8 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/.gitignore @@ -0,0 +1,39 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db diff --git a/Demos/ASP.NET MVC/src/client/.prettierignore b/Demos/ASP.NET MVC/src/client/.prettierignore new file mode 100644 index 0000000..931aad9 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/.prettierignore @@ -0,0 +1 @@ +# Add files here to ignore them from prettier formatting diff --git a/Demos/ASP.NET MVC/src/client/.prettierrc b/Demos/ASP.NET MVC/src/client/.prettierrc new file mode 100644 index 0000000..544138b --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/.prettierrc @@ -0,0 +1,3 @@ +{ + "singleQuote": true +} diff --git a/Demos/ASP.NET MVC/src/client/README.md b/Demos/ASP.NET MVC/src/client/README.md new file mode 100644 index 0000000..b148586 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/README.md @@ -0,0 +1,84 @@ +# Client + +This project was generated using [Nx](https://nx.dev). + +

+ +🔎 **Nx is a set of Angular CLI power-ups for modern development.** + +## Quick Start & Documentation + +[Nx Documentation](https://nx.dev) + +[30-minute video showing all Nx features](https://nx.dev/getting-started/what-is-nx) + +[Interactive Tutorial](https://nx.dev/tutorial/01-create-application) + +## Adding capabilities to your workspace + +Nx supports many plugins which add capabilities for developing different types of applications and different tools. + +These capabilities include generating applications, libraries, .etc as well as the devtools to test, and build projects as well. + +Below are some plugins which you can add to your workspace: + +- [Angular](https://angular.io) + - `ng add @nrwl/angular` +- [React](https://reactjs.org) + - `ng add @nrwl/react` +- Web (no framework frontends) + - `ng add @nrwl/web` +- [Nest](https://nestjs.com) + - `ng add @nrwl/nest` +- [Express](https://expressjs.com) + - `ng add @nrwl/express` +- [Node](https://nodejs.org) + - `ng add @nrwl/node` + +## Generate an application + +Run `ng g @nrwl/angular:app my-app` to generate an application. + +> You can use any of the plugins above to generate applications as well. + +When using Nx, you can create multiple applications and libraries in the same workspace. + +## Generate a library + +Run `ng g @nrwl/angular:lib my-lib` to generate a library. + +> You can also use any of the plugins above to generate libraries as well. + +Libraries are sharable across libraries and applications. They can be imported from `@client/mylib`. + +## Development server + +Run `ng serve my-app` for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng g component my-component --project=my-app` to generate a new component. + +## Build + +Run `ng build my-app` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. + +## Running unit tests + +Run `ng test my-app` to execute the unit tests via [Jest](https://jestjs.io). + +Run `npm run affected:test` to execute the unit tests affected by a change. + +## Running end-to-end tests + +Run `ng e2e my-app` to execute the end-to-end tests via [Cypress](https://www.cypress.io). + +Run `npm run affected:e2e` to execute the end-to-end tests affected by a change. + +## Understand your workspace + +Run `npm run dep-graph` to see a diagram of the dependencies of your projects. + +## Further help + +Visit the [Nx Documentation](https://nx.dev) to learn more. diff --git a/Demos/ASP.NET MVC/src/client/angular.json b/Demos/ASP.NET MVC/src/client/angular.json new file mode 100644 index 0000000..e38903f --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/angular.json @@ -0,0 +1,138 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "", + "projects": { + "annotation": { + "projectType": "application", + "schematics": { + "@nrwl/workspace:component": { + "style": "less" + } + }, + "root": "apps/annotation", + "sourceRoot": "apps/annotation/src", + "prefix": "client", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist", + "index": "apps/annotation/src/index.html", + "main": "apps/annotation/src/main.ts", + "polyfills": "apps/annotation/src/polyfills.ts", + "tsConfig": "apps/annotation/tsconfig.app.json", + "assets": ["apps/annotation/src/favicon.ico", "apps/annotation/src/assets"], + "styles": ["apps/annotation/src/styles.less"], + "scripts": [] + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "apps/annotation/src/environments/environment.ts", + "with": "apps/annotation/src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "annotation:build" + }, + "configurations": { + "production": { + "browserTarget": "annotation:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "annotation:build" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "apps/annotation/tsconfig.app.json", + "apps/annotation/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**", "!apps/annotation/**"] + } + }, + "test": { + "builder": "@nrwl/jest:jest", + "options": { + "jestConfig": "apps/annotation/jest.config.js", + "tsConfig": "apps/annotation/tsconfig.spec.json", + "setupFile": "apps/annotation/src/test-setup.ts" + } + } + } + }, + "annotation-e2e": { + "root": "apps/annotation-e2e", + "sourceRoot": "apps/annotation-e2e/src", + "projectType": "application", + "architect": { + "e2e": { + "builder": "@nrwl/cypress:cypress", + "options": { + "cypressConfig": "apps/annotation-e2e/cypress.json", + "tsConfig": "apps/annotation-e2e/tsconfig.e2e.json", + "devServerTarget": "annotation:serve" + }, + "configurations": { + "production": { + "devServerTarget": "annotation:serve:production" + } + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": "apps/annotation-e2e/tsconfig.e2e.json", + "exclude": ["**/node_modules/**", "!apps/annotation-e2e/**"] + } + } + } + } + }, + "cli": { + "warnings": { + "typescriptMismatch": false, + "versionMismatch": false + }, + "defaultCollection": "@nrwl/angular" + }, + "schematics": { + "@nrwl/angular:application": { + "unitTestRunner": "jest", + "e2eTestRunner": "cypress" + }, + "@nrwl/angular:library": { + "unitTestRunner": "jest" + } + }, + "defaultProject": "annotation" +} diff --git a/Demos/ASP.NET MVC/src/client/apps/.gitkeep b/Demos/ASP.NET MVC/src/client/apps/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/.gitkeep @@ -0,0 +1 @@ + diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/cypress.json b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/cypress.json new file mode 100644 index 0000000..ac3c7f0 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/cypress.json @@ -0,0 +1,11 @@ +{ + "fileServerFolder": ".", + "fixturesFolder": "./src/fixtures", + "integrationFolder": "./src/integration", + "pluginsFile": "./src/plugins/index", + "supportFile": false, + "video": true, + "videosFolder": "../../dist/cypress/apps/annotation-e2e/videos", + "screenshotsFolder": "../../dist/cypress/apps/annotation-e2e/screenshots", + "chromeWebSecurity": false +} diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/fixtures/example.json b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/fixtures/example.json new file mode 100644 index 0000000..294cbed --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/fixtures/example.json @@ -0,0 +1,4 @@ +{ + "name": "Using fixtures to represent data", + "email": "hello@cypress.io" +} diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/integration/app.spec.ts b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/integration/app.spec.ts new file mode 100644 index 0000000..a7c10d3 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/integration/app.spec.ts @@ -0,0 +1,9 @@ +import { getGreeting } from '../support/app.po'; + +describe('annotation', () => { + beforeEach(() => cy.visit('/')); + + it('should display welcome message', () => { + getGreeting().contains('Welcome to annotation!'); + }); +}); diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/plugins/index.js b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/plugins/index.js new file mode 100644 index 0000000..bc34d63 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/plugins/index.js @@ -0,0 +1,22 @@ +// *********************************************************** +// This example plugins/index.js can be used to load plugins +// +// You can change the location of this file or turn off loading +// the plugins file with the 'pluginsFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/plugins-guide +// *********************************************************** + +// This function is called when a project is opened or re-opened (e.g. due to +// the project's config changing) + +const { preprocessTypescript } = require('@nrwl/cypress/plugins/preprocessor'); + +module.exports = (on, config) => { + // `on` is used to hook into various events Cypress emits + // `config` is the resolved Cypress config + + // Preprocess Typescript + on('file:preprocessor', preprocessTypescript(config)); +}; diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/support/app.po.ts b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/support/app.po.ts new file mode 100644 index 0000000..3293424 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/support/app.po.ts @@ -0,0 +1 @@ +export const getGreeting = () => cy.get('h1'); diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/support/commands.ts b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/support/commands.ts new file mode 100644 index 0000000..ca4d256 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/support/commands.ts @@ -0,0 +1,25 @@ +// *********************************************** +// This example commands.js shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add("login", (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/support/index.ts b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/support/index.ts new file mode 100644 index 0000000..3d469a6 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/src/support/index.ts @@ -0,0 +1,17 @@ +// *********************************************************** +// This example support/index.js is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands'; diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/tsconfig.e2e.json b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/tsconfig.e2e.json new file mode 100644 index 0000000..629b4c1 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/tsconfig.e2e.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "sourceMap": false, + "outDir": "../../dist/out-tsc" + }, + "include": ["src/**/*.ts"] +} diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/tsconfig.json b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/tsconfig.json new file mode 100644 index 0000000..ee6531b --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation-e2e/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "types": ["cypress", "node"] + }, + "include": ["**/*.ts"] +} diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/browserslist b/Demos/ASP.NET MVC/src/client/apps/annotation/browserslist new file mode 100644 index 0000000..8084853 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/browserslist @@ -0,0 +1,12 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 # For IE 9-11 support, remove 'not'. \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/jest.config.js b/Demos/ASP.NET MVC/src/client/apps/annotation/jest.config.js new file mode 100644 index 0000000..132c868 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + name: 'annotation', + preset: '../../jest.config.js', + coverageDirectory: '../../coverage/apps/annotation', + snapshotSerializers: [ + 'jest-preset-angular/AngularSnapshotSerializer.js', + 'jest-preset-angular/HTMLCommentSerializer.js' + ] +}; diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/src/app/app.component.html b/Demos/ASP.NET MVC/src/client/apps/annotation/src/app/app.component.html new file mode 100644 index 0000000..557d7ad --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/src/app/app.component.html @@ -0,0 +1 @@ + diff --git a/Plugins/GroupDocs_Annotation_VSPlugin/GroupDocs.Annotation.VisualStudioPlugin/README.md b/Demos/ASP.NET MVC/src/client/apps/annotation/src/app/app.component.less similarity index 100% rename from Plugins/GroupDocs_Annotation_VSPlugin/GroupDocs.Annotation.VisualStudioPlugin/README.md rename to Demos/ASP.NET MVC/src/client/apps/annotation/src/app/app.component.less diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/src/app/app.component.spec.ts b/Demos/ASP.NET MVC/src/client/apps/annotation/src/app/app.component.spec.ts new file mode 100644 index 0000000..7a6ee87 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/src/app/app.component.spec.ts @@ -0,0 +1,31 @@ +import { TestBed, async } from '@angular/core/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AppComponent] + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'annotation'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('annotation'); + }); + + it('should render title in a h1 tag', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain( + 'Welcome to annotation!' + ); + }); +}); diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/src/app/app.component.ts b/Demos/ASP.NET MVC/src/client/apps/annotation/src/app/app.component.ts new file mode 100644 index 0000000..e6fb213 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/src/app/app.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'client-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.less'] +}) +export class AppComponent { + title = 'annotation'; +} diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/src/app/app.module.ts b/Demos/ASP.NET MVC/src/client/apps/annotation/src/app/app.module.ts new file mode 100644 index 0000000..7ef2706 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/src/app/app.module.ts @@ -0,0 +1,14 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; + +import { AppComponent } from './app.component'; +import { AnnotationModule } from "@groupdocs.examples.angular/annotation"; + +@NgModule({ + declarations: [AppComponent], + imports: [BrowserModule, + AnnotationModule], + providers: [], + bootstrap: [AppComponent] +}) +export class AppModule {} diff --git a/Showcases/GroupDocs-Annotation-Modern-Front-End/GroupDocs.Annotation for .NET/App_Data/Storage/candy.pdf b/Demos/ASP.NET MVC/src/client/apps/annotation/src/assets/.gitkeep similarity index 100% rename from Showcases/GroupDocs-Annotation-Modern-Front-End/GroupDocs.Annotation for .NET/App_Data/Storage/candy.pdf rename to Demos/ASP.NET MVC/src/client/apps/annotation/src/assets/.gitkeep diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/src/environments/environment.prod.ts b/Demos/ASP.NET MVC/src/client/apps/annotation/src/environments/environment.prod.ts new file mode 100644 index 0000000..3612073 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/src/environments/environment.ts b/Demos/ASP.NET MVC/src/client/apps/annotation/src/environments/environment.ts new file mode 100644 index 0000000..7b4f817 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/src/environments/environment.ts @@ -0,0 +1,16 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false +}; + +/* + * For easier debugging in development mode, you can import the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This import should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/src/favicon.ico b/Demos/ASP.NET MVC/src/client/apps/annotation/src/favicon.ico new file mode 100644 index 0000000..8081c7c Binary files /dev/null and b/Demos/ASP.NET MVC/src/client/apps/annotation/src/favicon.ico differ diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/src/index.html b/Demos/ASP.NET MVC/src/client/apps/annotation/src/index.html new file mode 100644 index 0000000..c76c71b --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/src/index.html @@ -0,0 +1,14 @@ + + + + + Annotation + + + + + + + + + diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/src/main.ts b/Demos/ASP.NET MVC/src/client/apps/annotation/src/main.ts new file mode 100644 index 0000000..fa4e0ae --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/src/main.ts @@ -0,0 +1,13 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic() + .bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/src/polyfills.ts b/Demos/ASP.NET MVC/src/client/apps/annotation/src/polyfills.ts new file mode 100644 index 0000000..2f258e5 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/src/polyfills.ts @@ -0,0 +1,62 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags.ts'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/src/styles.less b/Demos/ASP.NET MVC/src/client/apps/annotation/src/styles.less new file mode 100644 index 0000000..90d4ee0 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/src/styles.less @@ -0,0 +1 @@ +/* You can add global styles to this file, and also import other style files */ diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/src/test-setup.ts b/Demos/ASP.NET MVC/src/client/apps/annotation/src/test-setup.ts new file mode 100644 index 0000000..8d88704 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/src/test-setup.ts @@ -0,0 +1 @@ +import 'jest-preset-angular'; diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/tsconfig.app.json b/Demos/ASP.NET MVC/src/client/apps/annotation/tsconfig.app.json new file mode 100644 index 0000000..827b630 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [] + }, + "include": ["**/*.ts"], + "exclude": ["src/test-setup.ts", "**/*.spec.ts"] +} diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/tsconfig.json b/Demos/ASP.NET MVC/src/client/apps/annotation/tsconfig.json new file mode 100644 index 0000000..e5decd5 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "types": ["node", "jest"] + }, + "include": ["**/*.ts"] +} diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/tsconfig.spec.json b/Demos/ASP.NET MVC/src/client/apps/annotation/tsconfig.spec.json new file mode 100644 index 0000000..cfff29a --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/tsconfig.spec.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": ["**/*.spec.ts", "**/*.d.ts"] +} diff --git a/Demos/ASP.NET MVC/src/client/apps/annotation/tslint.json b/Demos/ASP.NET MVC/src/client/apps/annotation/tslint.json new file mode 100644 index 0000000..df75834 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/apps/annotation/tslint.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [true, "attribute", "client", "camelCase"], + "component-selector": [true, "element", "client", "kebab-case"] + } +} diff --git a/Demos/ASP.NET MVC/src/client/jest.config.js b/Demos/ASP.NET MVC/src/client/jest.config.js new file mode 100644 index 0000000..caba6c4 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/jest.config.js @@ -0,0 +1,10 @@ +module.exports = { + testMatch: ['**/+(*.)+(spec|test).+(ts|js)?(x)'], + transform: { + '^.+\\.(ts|js|html)$': 'ts-jest' + }, + resolver: '@nrwl/jest/plugins/resolver', + moduleFileExtensions: ['ts', 'js', 'html'], + collectCoverage: true, + coverageReporters: ['html'] +}; diff --git a/Demos/ASP.NET MVC/src/client/libs/.gitkeep b/Demos/ASP.NET MVC/src/client/libs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Demos/ASP.NET MVC/src/client/nx.json b/Demos/ASP.NET MVC/src/client/nx.json new file mode 100644 index 0000000..1133639 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/nx.json @@ -0,0 +1,18 @@ +{ + "npmScope": "client", + "implicitDependencies": { + "angular.json": "*", + "package.json": "*", + "tsconfig.json": "*", + "tslint.json": "*", + "nx.json": "*" + }, + "projects": { + "annotation-e2e": { + "tags": [] + }, + "annotation": { + "tags": [] + } + } +} diff --git a/Demos/ASP.NET MVC/src/client/package-lock.json b/Demos/ASP.NET MVC/src/client/package-lock.json new file mode 100644 index 0000000..0077e04 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/package-lock.json @@ -0,0 +1,15757 @@ +{ + "name": "client", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@angular-devkit/architect": { + "version": "0.803.23", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.23.tgz", + "integrity": "sha512-BRDbnmdULrle2l7WFZHEW/OAwS8RRg08+jiNG3gEP0BxDN6QMNMKmWhxmX67pgq3e/xMvu2DH0z71mAPNtJDAw==", + "requires": { + "@angular-devkit/core": "8.3.23", + "rxjs": "6.4.0" + } + }, + "@angular-devkit/build-angular": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.800.6.tgz", + "integrity": "sha512-b6WPGN8PReRizeTe5sR3XS2sqTqfCeFIDXI4sPy3T3XdmO1dB/UP8trsHXifuNTNSVIID4X0hDwXuz36Lk+4Jw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.6", + "@angular-devkit/build-optimizer": "0.800.6", + "@angular-devkit/build-webpack": "0.800.6", + "@angular-devkit/core": "8.0.6", + "@ngtools/webpack": "8.0.6", + "ajv": "6.10.0", + "autoprefixer": "9.5.1", + "browserslist": "4.5.5", + "caniuse-lite": "1.0.30000974", + "circular-dependency-plugin": "5.0.2", + "clean-css": "4.2.1", + "copy-webpack-plugin": "5.0.2", + "core-js": "3.0.1", + "file-loader": "3.0.1", + "glob": "7.1.3", + "istanbul-instrumenter-loader": "3.0.1", + "karma-source-map-support": "1.4.0", + "less": "3.9.0", + "less-loader": "4.1.0", + "license-webpack-plugin": "2.1.1", + "loader-utils": "1.2.3", + "mini-css-extract-plugin": "0.6.0", + "minimatch": "3.0.4", + "open": "6.2.0", + "parse5": "4.0.0", + "postcss": "7.0.14", + "postcss-import": "12.0.1", + "postcss-loader": "3.0.0", + "raw-loader": "1.0.0", + "rxjs": "6.4.0", + "sass": "1.19.0", + "sass-loader": "7.1.0", + "semver": "6.0.0", + "source-map-loader": "0.2.4", + "source-map-support": "0.5.12", + "speed-measure-webpack-plugin": "1.3.1", + "stats-webpack-plugin": "0.7.0", + "style-loader": "0.23.1", + "stylus": "0.54.5", + "stylus-loader": "3.0.2", + "terser-webpack-plugin": "1.2.3", + "tree-kill": "1.2.1", + "webpack": "4.30.0", + "webpack-dev-middleware": "3.6.2", + "webpack-dev-server": "3.3.1", + "webpack-merge": "4.2.1", + "webpack-sources": "1.3.0", + "webpack-subresource-integrity": "1.1.0-rc.6", + "worker-plugin": "3.1.0" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.800.6.tgz", + "integrity": "sha512-946ceRci/1yx09g8iRvULLoVihcB2RW9nhpCCMum4L9wheip8t4FWso3pd3JtPQGJV9dmsnwPzR9s12bncmj3g==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "rxjs": "6.4.0" + } + }, + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "browserslist": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.5.tgz", + "integrity": "sha512-0QFO1r/2c792Ohkit5XI8Cm8pDtZxgNl2H6HU4mHrpYz7314pEYcsAVVatM0l/YmxPnEzh9VygXouj4gkFUTKA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000960", + "electron-to-chromium": "^1.3.124", + "node-releases": "^1.1.14" + } + }, + "caniuse-lite": { + "version": "1.0.30000974", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz", + "integrity": "sha512-xc3rkNS/Zc3CmpMKuczWEdY2sZgx09BkAxfvkxlAEBTqcMHeL8QnPqhKse+5sRTi3nrw2pJwToD2WvKn1Uhvww==", + "dev": true + }, + "core-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz", + "integrity": "sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "node-releases": { + "version": "1.1.77", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", + "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", + "dev": true + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + }, + "tree-kill": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", + "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", + "dev": true + } + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.800.6.tgz", + "integrity": "sha512-f8u9c5VA+bxbYREKX6EY8QsbIT8ziDRHlhJ1n6H2nUTaQi+THtbPfrDsf3S3aVACfkkY+LEGGl135XEPr5PoxA==", + "dev": true, + "requires": { + "loader-utils": "1.2.3", + "source-map": "0.5.6", + "typescript": "3.4.4", + "webpack-sources": "1.3.0" + }, + "dependencies": { + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", + "dev": true + }, + "typescript": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.4.tgz", + "integrity": "sha512-xt5RsIRCEaf6+j9AyOBgvVuAec0i92rgCaS3S+UVf5Z/vF2Hvtsw08wtUTJqp4djwznoAgjSxeCcU4r+CcDBJA==", + "dev": true + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.800.6.tgz", + "integrity": "sha512-FwNGa99dxL9dACv/eLTP6u50tlPLG01yqp/JFAgxS0OmDkEMjSBLNgS8b8qhTo8XMhMsMWzb8yIUwV1PcSj6qg==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.6", + "@angular-devkit/core": "8.0.6", + "rxjs": "6.4.0", + "webpack-merge": "4.2.1" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.800.6.tgz", + "integrity": "sha512-946ceRci/1yx09g8iRvULLoVihcB2RW9nhpCCMum4L9wheip8t4FWso3pd3JtPQGJV9dmsnwPzR9s12bncmj3g==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "rxjs": "6.4.0" + } + }, + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + } + } + }, + "@angular-devkit/core": { + "version": "8.3.23", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.23.tgz", + "integrity": "sha512-y++LN6R/fu+obPUKEMDSKZ5FzeWN5rV0Z8vrdC+uF02VJLv/5QI/dUx3ROKFzJO3m2LU6EAuo5b/TLAPq4ving==", + "requires": { + "ajv": "6.10.2", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.3", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "8.3.23", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.3.23.tgz", + "integrity": "sha512-O8i/vn6YfqbT0q7o4jsVOTnWE07T1tcvk2zJ4O/1ete2z+Z2aw1YtIddwXEGJNCDpeE0B7f2sUHoLOS4Jc4O9w==", + "requires": { + "@angular-devkit/core": "8.3.23", + "rxjs": "6.4.0" + } + }, + "@angular/animations": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-8.2.14.tgz", + "integrity": "sha512-3Vc9TnNpKdtvKIXcWDFINSsnwgEMiDmLzjceWg1iYKwpeZGQahUXPoesLwQazBMmxJzQiA4HOMj0TTXKZ+Jzkg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/cli": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-8.0.0.tgz", + "integrity": "sha512-F7zdAazejA94WKXULLWs0cj76/LkGx2Jb+yGE7QWx3jkp5j18KI3jTU+h9UOtxk0zgV4oSy9AQpJQVZFPZPQFA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.0", + "@angular-devkit/core": "8.0.0", + "@angular-devkit/schematics": "8.0.0", + "@schematics/angular": "8.0.0", + "@schematics/update": "0.800.0", + "@yarnpkg/lockfile": "1.1.0", + "debug": "^4.1.1", + "ini": "1.3.5", + "inquirer": "6.3.1", + "npm-package-arg": "6.1.0", + "open": "6.2.0", + "pacote": "9.5.0", + "read-package-tree": "5.2.2", + "semver": "6.0.0", + "symbol-observable": "1.2.0", + "universal-analytics": "^0.4.20", + "uuid": "^3.3.2" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.800.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.800.0.tgz", + "integrity": "sha512-haXTS9EDaJfKyYiFylK2hObJH5DVGhX3OEn3OC7XUVlfKV3GRmC6NKXPjnxcN0wWP5zIV1c4xuB2N64mcxSnaA==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.0", + "rxjs": "6.4.0" + } + }, + "@angular-devkit/core": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.0.tgz", + "integrity": "sha512-wYf4zzpYj5Y673DG8iteK0GsDDuXBKN/TOXm4lUwmXcz8QHTD+BfR6qA5TBDqlMGpU7CP1/0vgbv2px17CDETQ==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.0.0.tgz", + "integrity": "sha512-IXJOs/DkDqNbfG76sNNY5ePZ37rjkMUopmtvhN6/U1hQFwTpGa9N0bCHFphcKraXeS6Jfox5XwFEStc/1xyhfw==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.0", + "rxjs": "6.4.0" + } + }, + "@schematics/angular": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.0.0.tgz", + "integrity": "sha512-c/cFpe+u7Xh4xX3/kn9BSRY4YhdO0OsDbRK0pGLDJFFs5JGvwoURtNXn4/4dVlsj3PWyNhxK0Ljl3dyw3NQBHA==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.0", + "@angular-devkit/schematics": "8.0.0" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } + } + }, + "@angular/common": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-8.2.14.tgz", + "integrity": "sha512-Qmt+aX2quUW54kaNT7QH7WGXnFxr/cC2C6sf5SW5SdkZfDQSiz8IaItvieZfXVQUbBOQKFRJ7TlSkt0jI/yjvw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-8.2.14.tgz", + "integrity": "sha512-ABZO4E7eeFA1QyJ2trDezxeQM5ZFa1dXw1Mpl/+1vuXDKNjJgNyWYwKp/NwRkLmrsuV0yv4UDCDe4kJOGbPKnw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler-cli": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-8.2.14.tgz", + "integrity": "sha512-XDrTyrlIZM+0NquVT+Kbg5bn48AaWFT+B3bAT288PENrTdkuxuF9AhjFRZj8jnMdmaE4O2rioEkXBtl6z3zptA==", + "dev": true, + "requires": { + "canonical-path": "1.0.0", + "chokidar": "^2.1.1", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "source-map": "^0.6.1", + "tslib": "^1.9.0", + "yargs": "13.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "yargs": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.1.0.tgz", + "integrity": "sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.0.0" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@angular/core": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-8.2.14.tgz", + "integrity": "sha512-zeePkigi+hPh3rN7yoNENG/YUBUsIvUXdxx+AZq+QPaFeKEA2FBSrKn36ojHFrdJUjKzl0lPMEiGC2b6a6bo6g==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/forms": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-8.2.14.tgz", + "integrity": "sha512-zhyKL3CFIqcyHJ/TQF/h1OZztK611a6rxuPHCrt/5Sn1SuBTJJQ1pPTkOYIDy6IrCrtyANc8qB6P17Mao71DNQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/language-service": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-8.2.14.tgz", + "integrity": "sha512-7EhN9JJbAJcH2xCa+rIOmekjiEuB0qwPdHuD5qn/wwMfRzMZo+Db4hHbR9KHrLH6H82PTwYKye/LLpDaZqoHOA==", + "dev": true + }, + "@angular/platform-browser": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-8.2.14.tgz", + "integrity": "sha512-MtJptptyKzsE37JZ2VB/tI4cvMrdAH+cT9pMBYZd66YSZfKjIj5s+AZo7z8ncoskQSB1o3HMfDjSK7QXGx1mLQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.2.14.tgz", + "integrity": "sha512-mO2JPR5kLU/A3AQngy9+R/Q5gaF9csMStBQjwsCRI0wNtlItOIGL6+wTYpiTuh/ux+WVN1F2sLcEYU4Zf1ud9A==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/router": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-8.2.14.tgz", + "integrity": "sha512-DHA2BhODqV7F0g6ZKgFaZgbsqzHHWRcfWchCOrOVKu2rYiKUTwwHVLBgZAhrpNeinq2pWanVYSIhMr7wy+LfEA==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", + "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==" + }, + "@babel/core": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.10.tgz", + "integrity": "sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA==", + "requires": { + "@babel/types": "^7.18.10", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "optional": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "requires": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", + "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", + "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", + "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "optional": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "requires": { + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-replace-supers": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", + "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-simple-access": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==" + }, + "@babel/helper-validator-identifier": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" + }, + "@babel/helper-wrap-function": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.10.tgz", + "integrity": "sha512-95NLBP59VWdfK2lyLKe6eTMq9xg+yWKzxzxbJ1wcYNi1Auz200+83fMDADjRxBvc2QQor5zja2yTQzXGhk2GtQ==", + "requires": { + "@babel/helper-function-name": "^7.18.9", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/helpers": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", + "requires": { + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.10.tgz", + "integrity": "sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", + "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", + "optional": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "optional": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "optional": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", + "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "optional": true, + "requires": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.18.8" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "optional": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "optional": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", + "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "optional": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", + "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", + "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", + "optional": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", + "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "optional": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "optional": true, + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", + "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", + "optional": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", + "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "optional": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", + "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", + "optional": true, + "requires": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-validator-identifier": "^7.18.6", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "optional": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", + "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", + "optional": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", + "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", + "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "optional": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/preset-env": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", + "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", + "optional": true, + "requires": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.18.10", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.9", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.9", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.9", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.10", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "optional": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.10.tgz", + "integrity": "sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", + "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", + "requires": { + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", + "to-fast-properties": "^2.0.0" + } + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@cypress/listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha512-EDiBsVPWC27DDLEJCo+dpl9ODHhdrwU57ccr9tspwCdG2ni0QVkf6LF0FGbhfujcjPxnXLIwsaks4sOrwrA4Qw==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "@cypress/webpack-preprocessor": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@cypress/webpack-preprocessor/-/webpack-preprocessor-4.1.5.tgz", + "integrity": "sha512-B4miSaS3VCMVSlfuvbWCjytTywdnquRsF1tQ3quC7TGUzEXnQZ4+o8WUKibjMozrOomALkUdMxqOJ1ib5oFkKw==", + "requires": { + "@babel/core": "^7.0.1", + "@babel/preset-env": "^7.0.0", + "babel-loader": "^8.0.2", + "bluebird": "3.7.1", + "debug": "4.1.1" + } + }, + "@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@fortawesome/angular-fontawesome": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.4.0.tgz", + "integrity": "sha512-DYVXdCzwQo6d0CxVMRK+10LpBAvYN9xigWeQW4wKYq/Czd5es46nPMKixB5rHfNViECwwlM2gTM61K4DpxlJxg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@fortawesome/fontawesome-common-types": { + "version": "0.2.36", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz", + "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "1.2.36", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz", + "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + } + }, + "@fortawesome/free-regular-svg-icons": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.15.4.tgz", + "integrity": "sha512-9VNNnU3CXHy9XednJ3wzQp6SwNwT3XaM26oS4Rp391GsxVYA+0oDR2J194YCIWf7jNRCYKjUCOduxdceLrx+xw==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz", + "integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + } + }, + "@groupdocs.examples.angular/annotation": { + "version": "0.8.92", + "resolved": "https://registry.npmjs.org/@groupdocs.examples.angular/annotation/-/annotation-0.8.92.tgz", + "integrity": "sha512-wOPMKxkMoaNRJyJ35BRTcnu7eVAGHjITSir1ccZPGNtDkitMImghBzvdOzgt9lorpRV2QPdbOdFm0Gw3NKdeBg==", + "requires": { + "@fortawesome/angular-fontawesome": "^0.4.0", + "@fortawesome/fontawesome-svg-core": "^1.2.19", + "@fortawesome/free-regular-svg-icons": "^5.9.0", + "@fortawesome/free-solid-svg-icons": "^5.9.0", + "@groupdocs.examples.angular/common-components": "^0.8.92", + "@ngx-translate/core": "^12.1.2", + "hammerjs": "^2.0.8", + "jquery": "^3.4.1", + "ng-click-outside": "^5.1.1", + "tslib": "^1.9.0" + } + }, + "@groupdocs.examples.angular/common-components": { + "version": "0.8.92", + "resolved": "https://registry.npmjs.org/@groupdocs.examples.angular/common-components/-/common-components-0.8.92.tgz", + "integrity": "sha512-MvXzrSqLJmP+hfvM+srwTVWrVMSbHwERzMao7MI9QFp8ZJXrTv7EiakFa3jQ4wf3/a1kwKONOAipjmMBN++VuQ==", + "requires": { + "@fortawesome/angular-fontawesome": "^0.4.0", + "@fortawesome/fontawesome-svg-core": "^1.2.19", + "@fortawesome/free-regular-svg-icons": "^5.9.0", + "@fortawesome/free-solid-svg-icons": "^5.9.0", + "@ngx-translate/core": "^12.1.2", + "hammerjs": "^2.0.8", + "jquery": "^3.4.1", + "ng-click-outside": "^5.1.1", + "tslib": "^1.9.0" + } + }, + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dev": true, + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.24.1" + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@ngtools/webpack": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.0.6.tgz", + "integrity": "sha512-ulu+5lLt4RjmcCXbmaGCjqjuOWt18DVek/Sq4HFE9E7zP+n7HercsU6h+9PrtaZThj9NB0B7A+afRB5aAQN/bQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "enhanced-resolve": "4.1.0", + "rxjs": "6.4.0", + "tree-kill": "1.2.1", + "webpack-sources": "1.3.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "tree-kill": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", + "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", + "dev": true + } + } + }, + "@ngx-translate/core": { + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-12.1.2.tgz", + "integrity": "sha512-ZudJsqIxTKlLmPoqK8gJY3UpMGujR0Xm7HfXL6AR79yGRS23QqpjAhMfx4v5qUCcHMmQ9/78bW8QJLfp31c7vQ==" + }, + "@nrwl/angular": { + "version": "8.12.11", + "resolved": "https://registry.npmjs.org/@nrwl/angular/-/angular-8.12.11.tgz", + "integrity": "sha512-Ao6bI0qr0Mpd0tvokE+XZUiUx1qQ4mCZLikdOgebSygX4wI5FEdRZKy5cBSDTLyWwSnKifWJTOMTgEkjUrrBmQ==", + "requires": { + "@angular-devkit/schematics": "8.3.23", + "@nrwl/cypress": "8.12.11", + "@nrwl/jest": "8.12.11", + "@schematics/angular": "8.3.23", + "jasmine-marbles": "~0.6.0" + }, + "dependencies": { + "@nrwl/cypress": { + "version": "8.12.11", + "resolved": "https://registry.npmjs.org/@nrwl/cypress/-/cypress-8.12.11.tgz", + "integrity": "sha512-dJhqrfx+EfF1p+bDeiqKRuWSlVLDyC5j4PWZCWqa23fR0YiWvJ5rm5xiNZpXo8AiJJfLykUiGt+x7mopYmnZTA==", + "requires": { + "@angular-devkit/architect": "0.803.23", + "@angular-devkit/core": "8.3.23", + "@cypress/webpack-preprocessor": "~4.1.0", + "fork-ts-checker-webpack-plugin": "^3.1.1", + "tree-kill": "1.2.2", + "ts-loader": "^5.3.1", + "tsconfig-paths-webpack-plugin": "3.2.0", + "webpack-node-externals": "1.7.2" + } + }, + "@nrwl/jest": { + "version": "8.12.11", + "resolved": "https://registry.npmjs.org/@nrwl/jest/-/jest-8.12.11.tgz", + "integrity": "sha512-5vETXeKPkuNt009tv/JcSRSX20oLQuOtjvl89sWBQmt5RyeF/rqEOZAD0g3UXNJN8rrJFL15S3q47AwZxUFQIA==", + "requires": { + "@angular-devkit/architect": "0.803.23", + "@angular-devkit/core": "8.3.23", + "@angular-devkit/schematics": "8.3.23" + } + } + } + }, + "@nrwl/cypress": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@nrwl/cypress/-/cypress-8.2.0.tgz", + "integrity": "sha512-Rz6oCPht2h7gPypAzg+JuGKFDaiBG8h7EaNPnxt0uk4mlfgJ3d39d7+HtWPM7zXeWNxHrn6/ecyV3MdvoZacRw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.1", + "@angular-devkit/core": "8.0.1", + "@cypress/webpack-preprocessor": "~4.1.0", + "tree-kill": "1.2.1", + "ts-loader": "5.3.1", + "tsconfig-paths-webpack-plugin": "3.2.0", + "webpack-node-externals": "1.7.2" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.800.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.800.1.tgz", + "integrity": "sha512-zDueOtGo8q9zAUWL2baLIwc5hlLkNtSr5ud1yTuhS4EmYbXJOvV2BPyXx4d77iL+SK4AMG/FyDsi1ZUxXubHIA==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.1", + "rxjs": "6.4.0" + } + }, + "@angular-devkit/core": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.1.tgz", + "integrity": "sha512-GQtspR2umZeuTUDTLy2dpUstvQfK7oAwE0o+rWSa8mx0DyhYssrfBbvfE4GzUzKp6OSz1sbZAatSO+iimZjbQw==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "tree-kill": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", + "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", + "dev": true + }, + "ts-loader": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.3.1.tgz", + "integrity": "sha512-fDDgpBH3SR8xlt2MasLdz3Yy611PQ/UY/KGyo7TgXhTRU/6sS8uGG0nJYnU1OdFBNKcoYbId1UTNaAOUn+i41g==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^3.1.4", + "semver": "^5.0.1" + } + } + } + }, + "@nrwl/jest": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@nrwl/jest/-/jest-8.2.0.tgz", + "integrity": "sha512-DcAUonbTaF9dvFnUVZNBUJ8bAQhymEALKBHvR2MNjlAdVKwWudkQX8ctcRmDiEBQROQu0xfibPC/GvlwEIEL7g==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.1", + "@angular-devkit/core": "8.0.1", + "@angular-devkit/schematics": "8.0.1" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.800.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.800.1.tgz", + "integrity": "sha512-zDueOtGo8q9zAUWL2baLIwc5hlLkNtSr5ud1yTuhS4EmYbXJOvV2BPyXx4d77iL+SK4AMG/FyDsi1ZUxXubHIA==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.1", + "rxjs": "6.4.0" + } + }, + "@angular-devkit/core": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.1.tgz", + "integrity": "sha512-GQtspR2umZeuTUDTLy2dpUstvQfK7oAwE0o+rWSa8mx0DyhYssrfBbvfE4GzUzKp6OSz1sbZAatSO+iimZjbQw==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.0.1.tgz", + "integrity": "sha512-AbE/Gt0h/6pGu/sQ2oMXZo5ZMDeUhkdU32Nq5styh+B5nVXzGuZK4CGqyDNttdnzebhHt4Bi5ZtF2Avlwt+KEA==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.1", + "rxjs": "6.4.0" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + } + } + }, + "@nrwl/workspace": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@nrwl/workspace/-/workspace-8.2.0.tgz", + "integrity": "sha512-vM50+hn86UgoOLX3Gc3PE0snOnKwA7YRphkWFlT5Nle37VrDNlTQPbkJA7Mp4Oi3mZtyE5VvzQ8+Cb5At4KA9Q==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.1", + "@angular-devkit/schematics": "8.0.1", + "cosmiconfig": "4.0.0", + "fs-extra": "6.0.0", + "graphviz": "0.0.8", + "ignore": "5.0.4", + "npm-run-all": "4.1.5", + "opn": "^5.3.0", + "prettier": "1.16.4", + "rxjs": "6.3.3", + "semver": "5.4.1", + "strip-json-comments": "2.0.1", + "tmp": "0.0.33", + "viz.js": "^1.8.1", + "yargs": "^11.0.0", + "yargs-parser": "10.0.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.1.tgz", + "integrity": "sha512-GQtspR2umZeuTUDTLy2dpUstvQfK7oAwE0o+rWSa8mx0DyhYssrfBbvfE4GzUzKp6OSz1sbZAatSO+iimZjbQw==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + }, + "dependencies": { + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/schematics": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.0.1.tgz", + "integrity": "sha512-AbE/Gt0h/6pGu/sQ2oMXZo5ZMDeUhkdU32Nq5styh+B5nVXzGuZK4CGqyDNttdnzebhHt4Bi5ZtF2Avlwt+KEA==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.1", + "rxjs": "6.4.0" + }, + "dependencies": { + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", + "dev": true + }, + "cosmiconfig": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", + "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0", + "require-from-string": "^2.0.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "ignore": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.0.4.tgz", + "integrity": "sha512-WLsTMEhsQuXpCiG173+f3aymI43SXa+fB1rSfbzyP4GkPP+ZFVuO0/3sFUGNBtifisPeDcl/uD/Y2NxZ7xFq4g==", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "rxjs": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "yargs": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", + "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha512-CswCfdOgCr4MMsT1GzbEJ7Z2uYudWyrGX8Bgh/0eyCzj/DXWdKq6a/ADufkzI1WAOIW6jYaXJvRyLhDO0kfqBw==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.0.0.tgz", + "integrity": "sha512-+DHejWujTVYeMHLff8U96rLc4uE4Emncoftvn5AjhB1Jw1pWxLzgBUT/WYbPrHmy6YPEBTZQx5myHhVcuuu64g==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "@schematics/angular": { + "version": "8.3.23", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.3.23.tgz", + "integrity": "sha512-yisP1iCLGC4VnZNC3kOnYyTS5cmfKEnLM9bMzhZGMWwov9RRfdxKKeSnG9FJNwHxI0WjQ0UWwfiz1dj0YacG3g==", + "requires": { + "@angular-devkit/core": "8.3.23", + "@angular-devkit/schematics": "8.3.23" + } + }, + "@schematics/update": { + "version": "0.800.0", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.800.0.tgz", + "integrity": "sha512-StheH+k4GCaHqmtDsHLSFmxu8SCDJVhZTXpz2zFAVaVXDh/ABS2Dt7I7SmEMGkUHcPA+u83sbZVBIacw2QfybQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.0", + "@angular-devkit/schematics": "8.0.0", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "pacote": "9.5.0", + "rxjs": "6.4.0", + "semver": "6.0.0", + "semver-intersect": "1.4.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.0.tgz", + "integrity": "sha512-wYf4zzpYj5Y673DG8iteK0GsDDuXBKN/TOXm4lUwmXcz8QHTD+BfR6qA5TBDqlMGpU7CP1/0vgbv2px17CDETQ==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.0.0.tgz", + "integrity": "sha512-IXJOs/DkDqNbfG76sNNY5ePZ37rjkMUopmtvhN6/U1hQFwTpGa9N0bCHFphcKraXeS6Jfox5XwFEStc/1xyhfw==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.0", + "rxjs": "6.4.0" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } + } + }, + "@sinclair/typebox": { + "version": "0.24.26", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.26.tgz", + "integrity": "sha512-1ZVIyyS1NXDRVT8GjWD5jULjhDyM3IsIHef2VGUMdnWOlX2tkPjyEX/7K0TGSH2S8EaPhp1ylFdjSjUGQ+gecg==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", + "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "24.0.9", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.9.tgz", + "integrity": "sha512-k3OOeevcBYLR5pdsOv5g3OP94h3mrJmLPHFEPWgbbVy2tGv0TZ/TlygiC848ogXhK8NL0I5up7YYtwpCp8xCJA==", + "dev": true, + "requires": { + "@types/jest-diff": "*" + } + }, + "@types/jest-diff": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-24.3.0.tgz", + "integrity": "sha512-vx1CRDeDUwQ0Pc7v+hS61O1ETA81kD04IMEC0hS1kPyVtHDdZrokAvpF7MT9VI/fVSzicelUZNCepDvhRV1PeA==", + "dev": true, + "requires": { + "jest-diff": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "optional": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "@types/node": { + "version": "8.9.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.5.tgz", + "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==", + "dev": true + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "@types/webpack-sources": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.9.tgz", + "integrity": "sha512-bvzMnzqoK16PQIC8AYHNdW45eREJQMd6WG/msQWX5V2+vZmODCOPb4TJcbgRljTZZTwTM4wUMcsI8FftNA7new==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "app-root-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz", + "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", + "dev": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "arch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", + "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==" + }, + "array.prototype.reduce": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", + "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "autoprefixer": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.5.1.tgz", + "integrity": "sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ==", + "dev": true, + "requires": { + "browserslist": "^4.5.4", + "caniuse-lite": "^1.0.30000957", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.14", + "postcss-value-parser": "^3.3.1" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + } + } + }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "optional": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + } + } + }, + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", + "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", + "optional": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.2", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", + "optional": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz", + "integrity": "sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==", + "optional": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.2" + } + }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "bluebird": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==" + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true + } + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "requires": { + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "cacache": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", + "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cachedir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-1.3.0.tgz", + "integrity": "sha512-O1ji32oyON9laVPJL1IZ5bmwd2cB46VfpxkDequezH+15FDzzVddEyrGEeX4WusDSqKxdyFdDQDEG1yo1GoWkg==", + "dev": true, + "requires": { + "os-homedir": "^1.0.1" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001373", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001373.tgz", + "integrity": "sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ==" + }, + "canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-dependency-plugin": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz", + "integrity": "sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha512-t22oC6e068eEBQ86SO3arUtd1ojcA3/lz3Fp2g/oL/lmDlFz/2yD8JHiebeCGYmoAovYpwKq4T64Uq5j+28Q9w==", + "dev": true + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.0", + "shallow-clone": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, + "codelyzer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.0.1.tgz", + "integrity": "sha512-UVV76+/y1RwaxzCeGPFE3G4GFtfV42r3x8EmRd7XMNFLlLC0ewdtCqWTbvhwPQMxFZZ+OTLEOJNWfyPPn3QFWg==", + "dev": true, + "requires": { + "app-root-path": "^2.1.0", + "aria-query": "^3.0.0", + "axobject-query": "^2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" + }, + "copy-webpack-plugin": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.0.2.tgz", + "integrity": "sha512-7nC7EynPrnBTtBwwbG1aTqrfNS1aTb9eEjSmQDqFtKAsJrR3uDb+pCDIFT2LzhW+SgGJxQcYzThrmXzzZ720uw==", + "dev": true, + "requires": { + "cacache": "^11.3.1", + "find-cache-dir": "^2.0.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.1.0", + "serialize-javascript": "^1.4.0", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + }, + "core-js-compat": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.1.tgz", + "integrity": "sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==", + "requires": { + "browserslist": "^4.21.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha512-OI38lO4JQQX2GSisTqwiSFxiWNmLajXdW4tCCxAuiwGKjusHALQadSHBSxGlU8lrFp47IkLuU2AfSYz31qpETQ==", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw==", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==", + "dev": true + }, + "cypress": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-3.3.2.tgz", + "integrity": "sha512-d2gFX0KBBdNfMMZ/ud9ouNqjDtMM3Tf5Z50hkl8Ldb8T+jKc7RLFo/4FjMu9i28T2x+50Sx8sN/kLzxr2oeWNg==", + "dev": true, + "requires": { + "@cypress/listr-verbose-renderer": "0.4.1", + "@cypress/xvfb": "1.2.4", + "arch": "2.1.1", + "bluebird": "3.5.0", + "cachedir": "1.3.0", + "chalk": "2.4.2", + "check-more-types": "2.24.0", + "commander": "2.15.1", + "common-tags": "1.8.0", + "debug": "3.2.6", + "execa": "0.10.0", + "executable": "4.1.1", + "extract-zip": "1.6.7", + "fs-extra": "5.0.0", + "getos": "3.1.1", + "glob": "7.1.3", + "is-ci": "1.2.1", + "is-installed-globally": "0.1.0", + "lazy-ass": "1.6.0", + "listr": "0.12.0", + "lodash": "4.17.11", + "log-symbols": "2.2.0", + "minimist": "1.2.0", + "moment": "2.24.0", + "ramda": "0.24.1", + "request": "2.88.0", + "request-progress": "0.4.0", + "supports-color": "5.5.0", + "tmp": "0.1.0", + "url": "0.11.0", + "yauzl": "2.10.0" + }, + "dependencies": { + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha512-3LE8m8bqjGdoxfvf71yhFNrUcwy3NLy00SAo+b6MfJ8l+Bc2DzQ7mUHwX6pjK2AxfgV+YfsjCeVW3T5HLQTBsQ==", + "dev": true + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw==", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "tmp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "dev": true, + "requires": { + "rimraf": "^2.6.3" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "dependency-graph": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "dotenv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.210", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.210.tgz", + "integrity": "sha512-kSiX4tuyZijV7Cz0MWVmGT8K2siqaOA4Z66K5dCttPPRh0HicOcOAEj1KlC8O8J1aOS/1M8rGofOzksLKaHWcQ==" + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "eventsource": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", + "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "requires": { + "pify": "^2.2.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + }, + "dependencies": { + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + } + } + }, + "express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extract-zip": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha512-NWFb/0zxv3qh7f6hEy+F+Y+jPAqt1bfT52GR8Vi7sEFg2fBZlG/aM6ZrSGPUscP0I4JRhtgVG6I17HOuD7GESw==", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha512-TXNR2Feu/p/8k5YRy4z45wCUhoncIrZywmRd+xW0IvB3lWTAM7F6wVbeJvRjO0dplQ8oqmJEj/TpJuULBV/hbw==", + "dev": true, + "requires": { + "fd-slicer": "~1.0.1" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha512-eIgZvM9C3P05kg0qxfqaVU6Tma4QedCPIByQOcemV0vju8ot3cS2DpHi4m2G2JvbSMI152rjfLX0p1pkSdyPlQ==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha512-Xhj93RXbMSq8urNCUq4p9l0P6hnySJ/7YNRhYNug0bLOuii7pKO7xQFb5mx9xZXWCar88pLPb805PvUkwrLZpQ==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha512-MX1ZLPIuKED51hrI4++K+1B0VX87Cs4EkybD2q12Ysuf5p4vkmHqMvQJRlDwROqFr4D2Pzyit5wGQxf30grIcw==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", + "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "optional": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "optional": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true + }, + "fork-ts-checker-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^3.3.0", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.0.tgz", + "integrity": "sha512-lk2cUCo8QzbiEWEbt7Cw3m27WMiRG321xsssbcIpfMhpRjrlC08WBOVQqj1/nQYYNnPtyIhP1oqLO3QwT2tPCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "genfun": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" + }, + "getos": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.1.1.tgz", + "integrity": "sha512-oUP1rnEhAr97rkitiszGP9EgDVYnmchgFzfqRzSkgtfv7ai6tEi7Ko8GgjNXts7VLWEqrTWyhsOKLe5C5b/Zkg==", + "dev": true, + "requires": { + "async": "2.6.1" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + } + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "graphviz": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/graphviz/-/graphviz-0.0.8.tgz", + "integrity": "sha512-ySlUKG9k5ccOhMNvrRC287JN0Fxb9glasN4MkYEa/kg0IJdwPQLFYo8Ixp6xAnoOkUP9oEJPkG0K9ml2nONedw==", + "dev": true, + "requires": { + "temp": "~0.4.0" + } + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "dev": true + }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==" + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + } + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-entities": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "http-proxy-middleware": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.2.tgz", + "integrity": "sha512-aYk1rTKqLTus23X3L96LGNCGNgWpG4cG0XoZIT1GUPhhulEHX/QalnO6Vbo+WmKWi4AL2IidjuC0wZtbpg0yhQ==", + "dev": true, + "requires": { + "http-proxy": "^1.18.1", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", + "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.11", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==", + "dev": true, + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + }, + "dependencies": { + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + } + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", + "dev": true + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "istanbul-instrumenter-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", + "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", + "dev": true, + "requires": { + "convert-source-map": "^1.5.0", + "istanbul-lib-instrument": "^1.7.3", + "loader-utils": "^1.1.0", + "schema-utils": "^0.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha512-QaVYBaD9U8scJw2EBWnCBY+LJ0AD+/2edTaigDs0XLDLBfJmSUK9KGqktg1rb32U3z4j/XwvFwHHH1YfbYFd7Q==", + "dev": true, + "requires": { + "ajv": "^5.0.0" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0" + } + }, + "jasmine-marbles": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/jasmine-marbles/-/jasmine-marbles-0.6.0.tgz", + "integrity": "sha512-1uzgjEesEeCb+r+v46qn5x326TiGqk5SUZa+A3O+XnMCjG/pGcUOhL9Xsg5L7gLC6RFHyWGTkB5fei4rcvIOiQ==", + "requires": { + "lodash": "^4.5.0" + } + }, + "jest": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.1.0.tgz", + "integrity": "sha512-+q91L65kypqklvlRFfXfdzUKyngQLOcwGhXQaLmVHv+d09LkNXuBuGxlofTFW42XMzu3giIcChchTsCNUjQ78A==", + "dev": true, + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "dev": true, + "requires": { + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-jsdom-thirteen": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-thirteen/-/jest-environment-jsdom-thirteen-0.0.2.tgz", + "integrity": "sha512-NH7b44aUdSjSzIYogJS9WkymmJNA+Q3na6XebsxZmP70NzW++/WD1Ky8E6PVxTqKuEnYzxFA/5Of2VxoreugGg==", + "dev": true, + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0", + "jsdom": "^13.0.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "jest-message-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", + "integrity": "sha512-Tjqy7T8jHhPgV4Gsi+pKMMfaz3uP5DPtMGnm8RWNWUHIk2igqxQ3/9rud3JkINCvZDGqlpJVuFGIDXbltG4xLA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz", + "integrity": "sha512-lz+Rf6dwRNDVowuGCXm93ib8hMyPntl1GGVt9PuZfBAmTjP5yKYgK14IASiEjs7XoMo4i/R7+dkrJY3eESwTJg==", + "dev": true + }, + "jest-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", + "integrity": "sha512-OS1/0QSbbMF9N93MxF1hUmK93EF3NGQGbbaTBZZk95aytWtWmzxsFWwt/UXIIkfHbPCK1fXTrPklbL+ohuFFOA==", + "dev": true, + "requires": { + "callsites": "^2.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "jest-message-util": "^23.4.0", + "mkdirp": "^0.5.1", + "slash": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "jsdom": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-13.2.0.tgz", + "integrity": "sha512-cG1NtMWO9hWpqRNRR3dSvEQa8bFI6iLlqU2x4kwX51FQjp0qus8T9aBaAO6iGp3DeBrhdwuKxckknohkmfvsFw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.0.9", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.5", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } + }, + "jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "dev": true + }, + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "dev": true, + "requires": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true + }, + "jest-preset-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-7.0.0.tgz", + "integrity": "sha512-XwMTabZ7/clqpWxgmrXeqKUNn5eXuyNtddFyG1JWTtVoRFIru8kEigk9Eyra82Yx0vJIN1KkNoOKieBQfqfvwQ==", + "dev": true, + "requires": { + "jest-environment-jsdom-thirteen": "^0.0.2", + "ts-jest": "^24.0.0" + } + }, + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "dev": true + }, + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + } + }, + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + } + }, + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", + "dev": true + }, + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "less": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/less/-/less-3.9.0.tgz", + "integrity": "sha512-31CmtPEZraNUtuUREYjSqRkeETFdyEHSEPAGq4erDlUXtda7pzNmctdljdIagSb589d/qXGWiiP31R5JVf+v0w==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz", + "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "license-webpack-plugin": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.1.tgz", + "integrity": "sha512-TiarZIg5vkQ2rGdYJn2+5YxO/zqlqjpK5IVglr7OfmrN1sBCakS+PQrsP2uC5gtve1ZDb9WMSUMlmHDQ0FoW4w==", + "dev": true, + "requires": { + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" + } + }, + "listr": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.12.0.tgz", + "integrity": "sha512-5GlrcOoGOBd/hFSI7hMvVXb+5jFMVc17e1VQzpa7VJna1SDTYSCrCpqBQUkuWW18xibTR+PQndjVtuEBKtOWVw==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "figures": "^1.7.0", + "indent-string": "^2.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.2.0", + "listr-verbose-renderer": "^0.4.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "ora": "^0.2.3", + "p-map": "^1.1.1", + "rxjs": "^5.0.0-beta.11", + "stream-to-observable": "^0.1.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", + "dev": true + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==", + "dev": true + }, + "listr-update-renderer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz", + "integrity": "sha512-0G/CLBomVga7gpCMHw5Adg9kafRz0HDAOxa1GrWywXr1oNYRW/n4pPy7xF/hniRCLRCorZMCxaMGSmgsp1QHsA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha512-tWEhvyB9UUq+4fkEwQ2NQK2JfYhsc3slSeYRkuc9CiJ3GFMRa5CRUcmqo+IIF+L95uZqv5dzZDC6vCggC28C0g==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "optional": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha512-+7y6zfkH4TqgS5DYKIqJuxmL5xT3WUUumVMZVRpDUo0UqJREwZqKmGo9wluj12FbPGl1UjRf2TnAImbw/bKtdw==", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "log-update": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha512-4vSow8gbiGnwdDNrpy1dyNaXWKSCIPop0EHdE8GrnngHoJujM3QhvHUN/igsYCgPoHo7pFOezlJ61Hlln0KHyA==", + "dev": true, + "requires": { + "ansi-escapes": "^1.0.0", + "cli-cursor": "^1.0.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw==", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + } + } + }, + "loglevel": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", + "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz", + "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==", + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "make-fetch-happen": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-4.0.2.tgz", + "integrity": "sha512-YMJrAjHSb/BordlsDEcVcPyTbiJKkzqMf48N8dAJZT9Zjctrkb6Yg4TY9Sq2AwSIQJFn5qBBKVTYt3vP5FMIHA==", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^11.3.3", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "requires": { + "object-visit": "^1.0.0" + } + }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz", + "integrity": "sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "^2.0.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==", + "dev": true, + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", + "dev": true + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "ng-click-outside": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ng-click-outside/-/ng-click-outside-5.3.0.tgz", + "integrity": "sha512-+WYtu2hSQy0F6VlHOqKhPtdVJimTiXXNtZPBGfLORJNX71ieYGsentke8KG+8EudR36FUB6Ya9g2GwGXM0UqdA==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-eta": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/node-eta/-/node-eta-0.1.1.tgz", + "integrity": "sha512-HRodgoMm68r2rB73rKTxNVYIplYuExiKNTzUyI+JmwNeLfeM8nEwPkvsEeH+WmlWPfKr2q7Kddls24f/mGN2FQ==", + "dev": true + }, + "node-fetch-npm": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz", + "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + } + } + }, + "node-notifier": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.5.tgz", + "integrity": "sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", + "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.6.0", + "osenv": "^0.1.5", + "semver": "^5.5.0", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz", + "integrity": "sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-registry-fetch": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-3.9.1.tgz", + "integrity": "sha512-VQCEZlydXw4AwLROAXWUR7QDfe2Y8Id/vpAgp6TI1/H78a4SiQ1kQrKZALm5/zxM5n4HIi+aYb+idUAV/RuY0Q==", + "dev": true, + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^4.0.2", + "npm-package-arg": "^6.1.0" + } + }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, + "nwsapi": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", + "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", + "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", + "dev": true, + "requires": { + "array.prototype.reduce": "^1.0.4", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + } + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "requires": { + "isobject": "^3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + } + } + }, + "open": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.2.0.tgz", + "integrity": "sha512-Vxf6HJkwrqmvh9UAID3MnMYXntbTxKLOSfOnO7LJdzPf3NE3KQYFNV0/Lcz2VAndbRFil58XVCyh8tiX11fiYw==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha512-MYGyg17e2GcoDlFrAP39zu4nrAQ+STzl4fosWjR8vAlT0a2wKuuAGZTecffdVLPsnEfxXVlrUcDZ1DU5skr+QQ==", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "cli-cursor": "^1.0.2", + "cli-spinners": "^0.1.2", + "object-assign": "^4.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dev": true + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha512-J/e9xiZZQNrt+958FFzJ+auItsBGq+UrQ7nE89AUP7UOTtjHnkISANXLdayhVzh538UnLMCSlf13lFfRIAKQOA==", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "optional": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==", + "dev": true + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pacote": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.0.tgz", + "integrity": "sha512-aUplXozRbzhaJO48FaaeClmN+2Mwt741MC6M3bevIGZwdCaP7frXzbUOfOWa91FPHoLITzG0hYaKY363lxO3bg==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "cacache": "^11.3.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^4.0.1", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^2.2.3", + "npm-registry-fetch": "^3.8.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.8", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==" + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "optional": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "optional": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" + }, + "postcss": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", + "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-import": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", + "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==", + "dev": true + }, + "prettier": { + "version": "1.16.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.4.tgz", + "integrity": "sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g==", + "dev": true + }, + "pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "ramda": { + "version": "0.24.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.24.1.tgz", + "integrity": "sha512-HEm619G8PaZMfkqCa23qiOe7r3R0brPu7ZgOsgKUsnvLhd0qhc/vTjkUovomgPWa5ECBa08fJZixth9LaoBo5w==", + "dev": true + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + } + } + }, + "raw-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-1.0.0.tgz", + "integrity": "sha512-Uqy5AqELpytJTRxYT4fhltcKPj0TyaEpzJDcGz7DFJi+pQOOi3GjR/DOdxTkTsF+NzhnldIoG6TORaBlInUuqA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "read-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "read-package-tree": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.2.2.tgz", + "integrity": "sha512-rW3XWUUkhdKmN2JKB4FL563YAgtINifso5KShykufR03nJ5loGFlkUMe1g/yxmqX073SoYYTsgXu7XdDinKZuA==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "once": "^1.3.0", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "optional": true + }, + "regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "optional": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpu-core": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", + "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==" + }, + "regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-progress": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-0.4.0.tgz", + "integrity": "sha512-moeCSqOv+9Q/PRmXpke9pRvcfMXU8xwPZvdsUAkyVZU5TOBTWtnA2wTTg75fxvGelQB8LYXUO55SKFy/vNTV3w==", + "dev": true, + "requires": { + "node-eta": "^0.1.1", + "throttleit": "^0.0.2" + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "sass": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.19.0.tgz", + "integrity": "sha512-8kzKCgxCzh8/zEn3AuRwzLWVSSFj8omkiGwqdJdeOufjM+I88dXxu9LYJ/Gw4rRTHXesN0r1AixBuqM6yLQUJw==", + "dev": true, + "requires": { + "chokidar": "^2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "sass-loader": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", + "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", + "dev": true, + "requires": { + "clone-deep": "^2.0.1", + "loader-utils": "^1.0.1", + "lodash.tail": "^4.1.1", + "neo-async": "^2.5.0", + "pify": "^3.0.0", + "semver": "^5.5.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha512-c0YL9VcSfcdH3F1Qij9qpYJFpKFKMXNOkLWFssBL3RuF7ZS8oZhllR2rWlCRjDTJsfq3R6wbSsaRU6o0rkEdNw==", + "dev": true + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "optional": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "optional": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "optional": true + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "selfsigned": { + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", + "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng==", + "dev": true, + "requires": { + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "semver-intersect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", + "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", + "dev": true, + "requires": { + "semver": "^5.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + } + } + }, + "serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + }, + "dependencies": { + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==", + "dev": true + } + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "dev": true, + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + } + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "dev": true, + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "speed-measure-webpack-plugin": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.1.tgz", + "integrity": "sha512-qVIkJvbtS9j/UeZumbdfz0vg+QfG/zxonAjzefZrqzkr7xOncLVXkeGbTpzd1gjCBM4PmVNkWlkeTVhgskAGSQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stack-utils": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", + "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stats-webpack-plugin": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/stats-webpack-plugin/-/stats-webpack-plugin-0.7.0.tgz", + "integrity": "sha512-NT0YGhwuQ0EOX+uPhhUcI6/+1Sq/pMzNuSCBVT4GbFl/ac6I/JZefBcjlECNfAb1t3GOx5dEj1Z7x0cAxeeVLQ==", + "dev": true, + "requires": { + "lodash": "^4.17.4" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "stream-to-observable": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.1.0.tgz", + "integrity": "sha512-h3mR71JoHxXrKApehgQk1CFbdi2nW9BAVqjPhpPD127H8iz0N61YsCLhJutm+JV0ajNAwPef0kMQsF0Jaz/A6Q==", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha512-Qka42GGrS8Mm3SZ+7cH8UXiIWI867/b/Z/feQSpQx/rbfB8UGknGEZVaUQMOUVj+soY6NpWAxily63HI1OckVQ==", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.padend": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", + "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha512-4Yzg9aqLf3f4sDvO3x+Fbp2V634j9ikFGCFokIPYi+7Y4IG/nxAiPUs95MRlo+lPdTsxAs9wCzEclmPccItISA==", + "dev": true, + "requires": { + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha512-f8c0rE8JiCxpa52kWPAOa3ZaYEnzofDzCQLCn3Vdk0Z5OVLq3BsRFJI4S4ykpeVW6QMGBUkMeUpoEgWnMTnw5Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "when": "~3.6.x" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dev": true, + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "temp": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.4.0.tgz", + "integrity": "sha512-IsFisGgDKk7qzK9erMIkQe/XwiSUdac7z3wYOsjcLkhPBy3k1SlvLoIh2dAHIlEpgA971CgguMrx9z8fFg7tSA==", + "dev": true + }, + "terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz", + "integrity": "sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA==", + "dev": true, + "requires": { + "cacache": "^11.0.2", + "find-cache-dir": "^2.0.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "terser": "^3.16.1", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + }, + "dependencies": { + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + } + } + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha512-wCVxLDcFxw7ujDxaeJC6nfl2XfHJNYs8yUYJnvMgtPEFlttP9tHSfRUv2vBe6C4hkVFPWoP1P6ZccbYjmSEkKA==", + "dev": true + }, + "throttleit": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", + "integrity": "sha512-HtlTFeyYs1elDM2txiIGsdXHaq8kffVaZH/QEBRbo95zQqzlsBx5ELKhkPOZVad9OK9oxzwx6UrQN8Vfh/+yag==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", + "dev": true + }, + "ts-jest": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.0.0.tgz", + "integrity": "sha512-o8BO3TkMREpAATaFTrXkovMsCpBl2z4NDBoLJuWZcJJj1ijI49UnvDMfVpj+iogn/Jl8Pbhuei5nc/Ti+frEHw==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "make-error": "1.x", + "mkdirp": "0.x", + "resolve": "1.x", + "semver": "^5.5", + "yargs-parser": "10.x" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "ts-loader": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.4.5.tgz", + "integrity": "sha512-XYsjfnRQCBum9AMRZpk2rTYSVpdZBpZK+kDh0TeT3kxmQNBDVIeUjdPjY5RZry4eIAb8XHc4gYSUiUWPYvzSRw==", + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^3.1.4", + "semver": "^5.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + } + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "tsconfig-paths-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-S/gOOPOkV8rIL4LurZ1vUdYCVgo15iX9ZMJ6wx6w2OgcpT/G4wMyHB6WM+xheSqGMrWKuxFul+aXpCju3wmj/g==", + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "tsconfig-paths": "^3.4.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "tslint": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz", + "integrity": "sha512-yA5YmWkzQoMF/fOA6TjkJlJniZxpo7cneTvdQEJj7blUd7YsR23gcOC5caM2MP186hTrhpSf1VSuygnikerwmQ==", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.27.2" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "typescript": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz", + "integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==" + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universal-analytics": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.23.tgz", + "integrity": "sha512-lgMIH7XBI6OgYn1woDEmxhGdj8yDefMKg7GkWdeATAlQZFrMrNyxSkpDzY57iY0/6fdlzTbBV03OawvvzG+q7A==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "request": "^2.88.2", + "uuid": "^3.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true + } + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "util.promisify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", + "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "for-each": "^0.3.3", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.1" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + } + } + }, + "viz.js": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/viz.js/-/viz.js-1.8.2.tgz", + "integrity": "sha512-W+1+N/hdzLpQZEcvz79n2IgUE9pfx6JLdHh3Kh8RGvLL8P1LdJVQmi2OsDcLdY4QVID4OUy+FPelyerX0nJxIQ==", + "dev": true + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "optional": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "webpack": { + "version": "4.30.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.30.0.tgz", + "integrity": "sha512-4hgvO2YbAFUhyTdlR4FNyt2+YaYBYHavyzjCMbZzgglo02rlKi/pcsEzwCuCpsn1ryzIl1cq/u8ArIKu8JBYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.0.5", + "acorn-dynamic-import": "^4.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^1.0.0", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha512-P6ZUGXn5buTEZyTStCHHLwtWGKSm/jA629Zgp4pcHSsy60CCsT9MaHDxNIPL+GGJ2KwOgI6ORwQtHcrYHAt2UQ==", + "dev": true, + "requires": { + "source-list-map": "~0.1.7", + "source-map": "~0.4.1" + }, + "dependencies": { + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha512-cabwdhnSNf/tTDMh/DXZXlkeQLvdYT5xfGYBohqHG7wb3bBQrQlHQNWM9NWSOboXXK1zgwz6JzS5e4hZq9vxMw==", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.6.2.tgz", + "integrity": "sha512-A47I5SX60IkHrMmZUlB0ZKSWi29TZTcPz7cha1Z75yYOsgWh/1AcPmQEbC8ZIbU3A1ytSv1PMU0PyPz2Lmz2jg==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.3.1", + "range-parser": "^1.0.3", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.3.1.tgz", + "integrity": "sha512-jY09LikOyGZrxVTXK0mgIq9y2IhCoJ05848dKZqX1gAGLU1YDqgpOT71+W53JH/wI4v6ky4hm+KvSyW14JEs5A==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.5", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.0", + "express": "^4.16.4", + "html-entities": "^1.2.1", + "http-proxy-middleware": "^0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.2.0", + "ip": "^1.1.5", + "killable": "^1.0.1", + "loglevel": "^1.6.1", + "opn": "^5.5.0", + "portfinder": "^1.0.20", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.4", + "semver": "^6.0.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.3.0", + "spdy": "^4.0.0", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.6.2", + "webpack-log": "^2.0.0", + "yargs": "12.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", + "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", + "dev": true, + "requires": { + "lodash": "^4.17.5" + } + }, + "webpack-node-externals": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz", + "integrity": "sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg==" + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-subresource-integrity": { + "version": "1.1.0-rc.6", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.6.tgz", + "integrity": "sha512-Az7y8xTniNhaA0620AV1KPwWOqawurVVDzQSpPAeR5RwNbL91GoBSJAAo9cfd+GiFHwsS5bbHepBw1e6Hzxy4w==", + "dev": true, + "requires": { + "webpack-core": "^0.6.8" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", + "integrity": "sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-plugin": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-3.1.0.tgz", + "integrity": "sha512-iQ9KTTmmN5fhfc2KMR7CcDblvcrg1QQ4pXymqZ3cRZF8L0890YLBcEqlIsGPdxoFwghyN8RA1pCEhCKuTF4Lkw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "requires": { + "microevent.ts": "~0.1.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + }, + "dependencies": { + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + } + } + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", + "dev": true + }, + "zone.js": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.9.1.tgz", + "integrity": "sha512-GkPiJL8jifSrKReKaTZ5jkhrMEgXbXYC+IPo1iquBjayRa0q86w3Dipjn8b415jpitMExe9lV8iTsv8tk3DGag==" + } + } +} diff --git a/Demos/ASP.NET MVC/src/client/package.json b/Demos/ASP.NET MVC/src/client/package.json new file mode 100644 index 0000000..6f57893 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/package.json @@ -0,0 +1,66 @@ +{ + "name": "client", + "version": "0.0.0", + "license": "MIT", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "..\\packages\\Node-Kit.11.1.0.1\\node\\win\\node.exe .\\node_modules\\@angular\\cli\\bin\\ng build", + "test": "ng test", + "lint": "nx lint && ng lint", + "e2e": "ng e2e", + "affected:apps": "nx affected:apps", + "affected:libs": "nx affected:libs", + "affected:build": "nx affected:build", + "affected:e2e": "nx affected:e2e", + "affected:test": "nx affected:test", + "affected:lint": "nx affected:lint", + "affected:dep-graph": "nx affected:dep-graph", + "affected": "nx affected", + "format": "nx format:write", + "format:write": "nx format:write", + "format:check": "nx format:check", + "update": "ng update @nrwl/workspace", + "update:check": "ng update", + "workspace-schematic": "nx workspace-schematic", + "dep-graph": "nx dep-graph", + "help": "nx help" + }, + "private": true, + "dependencies": { + "@angular/animations": "^8.0.0", + "@angular/common": "^8.0.0", + "@angular/compiler": "^8.0.0", + "@angular/core": "^8.0.0", + "@angular/forms": "^8.0.0", + "@angular/platform-browser": "^8.0.0", + "@angular/platform-browser-dynamic": "^8.0.0", + "@angular/router": "^8.0.0", + "core-js": "^2.5.4", + "rxjs": "~6.4.0", + "zone.js": "^0.9.1", + "@nrwl/angular": "^8.2.0", + "@groupdocs.examples.angular/annotation": "^0.8.95" + }, + "devDependencies": { + "cypress": "~3.3.1", + "@nrwl/cypress": "8.2.0", + "@nrwl/jest": "8.2.0", + "jest": "24.1.0", + "@types/jest": "24.0.9", + "ts-jest": "24.0.0", + "jest-preset-angular": "7.0.0", + "@angular/compiler-cli": "^8.0.0", + "@angular/language-service": "^8.0.0", + "@angular-devkit/build-angular": "^0.800.0", + "codelyzer": "~5.0.1", + "@nrwl/workspace": "8.2.0", + "@types/node": "~8.9.4", + "dotenv": "6.2.0", + "ts-node": "~7.0.0", + "tslint": "~5.11.0", + "typescript": "~3.4.5", + "prettier": "1.16.4", + "@angular/cli": "8.0.0" + } +} diff --git a/Demos/ASP.NET MVC/src/client/tools/schematics/.gitkeep b/Demos/ASP.NET MVC/src/client/tools/schematics/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Demos/ASP.NET MVC/src/client/tools/tsconfig.tools.json b/Demos/ASP.NET MVC/src/client/tools/tsconfig.tools.json new file mode 100644 index 0000000..82bd1f0 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/tools/tsconfig.tools.json @@ -0,0 +1,11 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../dist/out-tsc/tools", + "rootDir": ".", + "module": "commonjs", + "target": "es5", + "types": ["node"] + }, + "include": ["**/*.ts"] +} diff --git a/Demos/ASP.NET MVC/src/client/tsconfig.json b/Demos/ASP.NET MVC/src/client/tsconfig.json new file mode 100644 index 0000000..a5099b5 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "rootDir": ".", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "importHelpers": true, + "target": "es2015", + "module": "esnext", + "typeRoots": ["node_modules/@types"], + "lib": ["es2017", "dom"], + "skipLibCheck": true, + "skipDefaultLibCheck": true, + "baseUrl": ".", + "paths": {} + }, + "exclude": ["node_modules", "tmp"] +} diff --git a/Demos/ASP.NET MVC/src/client/tslint.json b/Demos/ASP.NET MVC/src/client/tslint.json new file mode 100644 index 0000000..2533001 --- /dev/null +++ b/Demos/ASP.NET MVC/src/client/tslint.json @@ -0,0 +1,80 @@ +{ + "rulesDirectory": [ + "node_modules/@nrwl/workspace/src/tslint", + "node_modules/codelyzer" + ], + "rules": { + "arrow-return-shorthand": true, + "callable-types": true, + "class-name": true, + "deprecation": { + "severity": "warn" + }, + "forin": true, + "import-blacklist": [true, "rxjs/Rx"], + "interface-over-type-literal": true, + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-arg": true, + "no-bitwise": true, + "no-console": [true, "debug", "info", "time", "timeEnd", "trace"], + "no-construct": true, + "no-debugger": true, + "no-duplicate-super": true, + "no-empty": false, + "no-empty-interface": true, + "no-eval": true, + "no-inferrable-types": [true, "ignore-params"], + "no-misused-new": true, + "no-non-null-assertion": true, + "no-shadowed-variable": true, + "no-string-literal": false, + "no-string-throw": true, + "no-switch-case-fall-through": true, + "no-unnecessary-initializer": true, + "no-unused-expression": true, + "no-var-keyword": true, + "object-literal-sort-keys": false, + "prefer-const": true, + "radix": true, + "triple-equals": [true, "allow-null-check"], + "unified-signatures": true, + "variable-name": false, + "nx-enforce-module-boundaries": [ + true, + { + "allow": [], + "depConstraints": [ + { + "sourceTag": "*", + "onlyDependOnLibsWithTags": ["*"] + } + ] + } + ], + "directive-selector": [true, "attribute", "app", "camelCase"], + "component-selector": [true, "element", "app", "kebab-case"], + "no-conflicting-lifecycle": true, + "no-host-metadata-property": true, + "no-input-rename": true, + "no-inputs-metadata-property": true, + "no-output-native": true, + "no-output-on-prefix": true, + "no-output-rename": true, + "no-outputs-metadata-property": true, + "template-banana-in-box": true, + "template-no-negated-async": true, + "use-lifecycle-interface": true, + "use-pipe-transform-interface": true + } +} diff --git a/Demos/ASP.NET MVC/src/configuration.yml b/Demos/ASP.NET MVC/src/configuration.yml new file mode 100644 index 0000000..8a91e01 --- /dev/null +++ b/Demos/ASP.NET MVC/src/configuration.yml @@ -0,0 +1,101 @@ +################################################ +# Server configurations +################################################ +server: + type: simple + applicationContextPath: / + adminContextPath: /admin + connector: + type: http + port: 8080 + + +################################################ +# Application (global) configurations +################################################ +application: + # License path + # Absolute path to GroupDocs license file + licensePath: 'Licenses/GroupDocs.Annotation.NET.lic' + +################################################ +# Common configurations +################################################ +common: + # File rewriting on document uploading + # Set false to keep both files + # Set true to replace files with same name + rewrite: true + # Page navigation + # Set false to disable document navigation (go to next, previous, last and first page) + pageSelector: true + # Document download + # Set false to disable document download + download: true + # Document upload + # Set false to disable document upload + upload: true + # Document print + # Set false to disable document print + print: true + # File browser + # Set false to disable document browse + browse: true + # Set false to disable right mouse click + enableRightClick: true + +################################################ +# GroupDocs.Annotation configurations +################################################ +annotation: + # Files directory path + # Absolute or relative path to files directory + filesDirectory: 'DocumentSamples/Annotation' + # Default document + # Absolute or relative path to default document + defaultDocument: '' + # Pages preload + # How many pages from a document should be loaded, remaining pages will be loaded on page scrolling + # Set 0 to load all pages at once + preloadPageCount: 0 + # Output directory path + # Absolute path to annotated files directory + outputDirectory: '' + # Fonts path + # Absolute path to custom fonts directory + fontsDirectory: '' + # Enable/disable Text annotation + textAnnotation: true + # Enable/disable Area annotation + areaAnnotation: true + # Enable/disable Point annotation + pointAnnotation: true + # Enable/disable TextStrikeout annotation + textStrikeoutAnnotation: true + # Enable/disable Polyline annotation + polylineAnnotation: true + # Enable/disable TextField annotation + textFieldAnnotation: true + # Enable/disable Watermark annotation + watermarkAnnotation: true + # Enable/disable TextReplacement annotation + textReplacementAnnotation: true + # Enable/disable Arrow annotation + arrowAnnotation: true + # Enable/disable TextRedaction annotation + textRedactionAnnotation: true + # Enable/disable ResourcesRedaction annotation + resourcesRedactionAnnotation: true + # Enable/disable TextUnderline annotation + textUnderlineAnnotation: true + # Enable/disable Distance annotation + distanceAnnotation: true + # Enable/disable original document downloading + downloadOriginal: true + # Enable/disable signed document downloading + downloadAnnotated: true + # Enable/disable zoom + zoom: true + # Enable/disable fit width + # set true to zoom document pages fit width + fitWidth: true \ No newline at end of file diff --git a/Demos/ASP.NET MVC/src/packages.config b/Demos/ASP.NET MVC/src/packages.config new file mode 100644 index 0000000..888d27e --- /dev/null +++ b/Demos/ASP.NET MVC/src/packages.config @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Annotation.aspx b/Demos/ASP.NET Web Forms/src/Annotation.aspx new file mode 100644 index 0000000..4c68c36 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Annotation.aspx @@ -0,0 +1,27 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Annotation.aspx.cs" Inherits="GroupDocs.Annotation.AspNetWebForms.Annotation" %> + +<% + GroupDocs.Annotation.AspNetWebForms.Products.Common.Config.GlobalConfiguration config = new GroupDocs.Annotation.AspNetWebForms.Products.Common.Config.GlobalConfiguration(); +%> + + + + + + Annotation for .NET Web Forms + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Annotation.aspx.cs b/Demos/ASP.NET Web Forms/src/Annotation.aspx.cs new file mode 100644 index 0000000..fb7f0a8 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Annotation.aspx.cs @@ -0,0 +1,13 @@ +using System; + + +namespace GroupDocs.Annotation.AspNetWebForms +{ + public partial class Annotation : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Annotation.aspx.designer.cs b/Demos/ASP.NET Web Forms/src/Annotation.aspx.designer.cs new file mode 100644 index 0000000..a306cf9 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Annotation.aspx.designer.cs @@ -0,0 +1,15 @@ +//------------------------------------------------------------------------------ +// <автоматически создаваемое> +// Этот код создан программой. +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace GroupDocs.Annotation.AspNetWebForms +{ + public partial class Annotation + { + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/App_Start/RouteConfig.cs b/Demos/ASP.NET Web Forms/src/App_Start/RouteConfig.cs new file mode 100644 index 0000000..bc38d5e --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/App_Start/RouteConfig.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Web; +using System.Web.Routing; +using Microsoft.AspNet.FriendlyUrls; + +namespace GroupDocs.Annotation.AspNetWebForms +{ + public static class RouteConfig + { + public static void RegisterRoutes(RouteCollection routes) + { + var settings = new FriendlyUrlSettings(); + settings.AutoRedirectMode = RedirectMode.Permanent; + routes.EnableFriendlyUrls(settings); + + routes.MapPageRoute( + "Annotation", + "", + "~/Annotation.aspx" + ); + } + } +} diff --git a/Demos/ASP.NET Web Forms/src/App_Start/WebApiConfig.cs b/Demos/ASP.NET Web Forms/src/App_Start/WebApiConfig.cs new file mode 100644 index 0000000..224cb2c --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/App_Start/WebApiConfig.cs @@ -0,0 +1,21 @@ +using System.Web.Http; + +namespace GroupDocs.Annotation.AspNetWebForms +{ + public static class WebApiConfig + { + public static void Register(HttpConfiguration config) + { + // Web API configuration and services + config.EnableCors(); + // Web API routes + config.MapHttpAttributeRoutes(); + + config.Routes.MapHttpRoute( + name: "ViewerApi", + routeTemplate: "{controller}/{action}/{id}", + defaults: new { id = RouteParameter.Optional } + ); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/DocumentSamples/Annotation/sample.docx b/Demos/ASP.NET Web Forms/src/DocumentSamples/Annotation/sample.docx new file mode 100644 index 0000000..1bf7cdb Binary files /dev/null and b/Demos/ASP.NET Web Forms/src/DocumentSamples/Annotation/sample.docx differ diff --git a/Demos/ASP.NET Web Forms/src/DocumentSamples/Annotation/sample.pdf b/Demos/ASP.NET Web Forms/src/DocumentSamples/Annotation/sample.pdf new file mode 100644 index 0000000..4ca86b6 Binary files /dev/null and b/Demos/ASP.NET Web Forms/src/DocumentSamples/Annotation/sample.pdf differ diff --git a/Demos/ASP.NET Web Forms/src/DocumentSamples/Annotation/sample.xls b/Demos/ASP.NET Web Forms/src/DocumentSamples/Annotation/sample.xls new file mode 100644 index 0000000..ae6e21a Binary files /dev/null and b/Demos/ASP.NET Web Forms/src/DocumentSamples/Annotation/sample.xls differ diff --git a/Demos/ASP.NET Web Forms/src/Global.asax b/Demos/ASP.NET Web Forms/src/Global.asax new file mode 100644 index 0000000..613d084 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Global.asax @@ -0,0 +1 @@ +<%@ Application Codebehind="Global.asax.cs" Inherits="GroupDocs.Annotation.AspNetWebForms.Global" Language="C#" %> diff --git a/Demos/ASP.NET Web Forms/src/Global.asax.cs b/Demos/ASP.NET Web Forms/src/Global.asax.cs new file mode 100644 index 0000000..ee9db70 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Global.asax.cs @@ -0,0 +1,22 @@ +using System; +using System.Web.Http; +using System.Web.Routing; +using GroupDocs.Annotation.AspNetWebForms; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator; + +namespace GroupDocs.Annotation.AspNetWebForms +{ + public class Global : System.Web.HttpApplication + { + void Application_Start(object sender, EventArgs e) + { + string licensePath = ""; + SetLicense license = new SetLicense(); + license.AddLicense(licensePath); ; + + // Code that runs on application startup + GlobalConfiguration.Configure(WebApiConfig.Register); + RouteConfig.RegisterRoutes(RouteTable.Routes); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/GroupDocs.Annotation.AspNetWebForms.csproj b/Demos/ASP.NET Web Forms/src/GroupDocs.Annotation.AspNetWebForms.csproj new file mode 100644 index 0000000..aad806f --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/GroupDocs.Annotation.AspNetWebForms.csproj @@ -0,0 +1,239 @@ + + + + + + Debug + AnyCPU + + + 2.0 + {9FE0932D-04EC-4F5A-BE47-461762489C50} + {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + GroupDocs.Annotation.AspNetWebForms + GroupDocs.Annotation.AspNetWebForms + v4.8 + true + + 44361 + + + + + + + packages\WebGrease.1.5.2\lib + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + + + true + pdbonly + true + bin\ + TRACE + prompt + 4 + + + + packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll + + + packages\GroupDocs.Annotation.22.11.0\lib\net40\GroupDocs.Annotation.dll + + + packages\Microsoft.AspNet.FriendlyUrls.Core.1.0.2\lib\net45\Microsoft.AspNet.FriendlyUrls.dll + + + packages\Microsoft.AspNet.Identity.Core.2.2.3\lib\net45\Microsoft.AspNet.Identity.Core.dll + + + packages\Microsoft.AspNet.Web.Optimization.WebForms.1.1.3\lib\net45\Microsoft.AspNet.Web.Optimization.WebForms.dll + + + packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll + + + + packages\Microsoft.AspNet.ScriptManager.MSAjax.5.0.0\lib\net45\Microsoft.ScriptManager.MSAjax.dll + + + packages\Microsoft.AspNet.ScriptManager.WebForms.5.0.0\lib\net45\Microsoft.ScriptManager.WebForms.dll + + + packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll + + + packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll + + + + packages\Microsoft.AspNet.WebApi.Client.5.2.9\lib\net45\System.Net.Http.Formatting.dll + + + packages\Microsoft.AspNet.Cors.5.2.9\lib\net45\System.Web.Cors.dll + + + + + + + + + + + + packages\Microsoft.AspNet.WebApi.Core.5.2.9\lib\net45\System.Web.Http.dll + + + packages\Microsoft.AspNet.WebApi.Cors.5.2.9\lib\net45\System.Web.Http.Cors.dll + + + packages\Microsoft.AspNet.WebApi.WebHost.5.2.9\lib\net45\System.Web.Http.WebHost.dll + + + packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll + + + + + + + + + + packages\WebGrease.1.5.2\lib\WebGrease.dll + + + packages\YamlDotNet.12.0.0\lib\net47\YamlDotNet.dll + + + + + + + + + + Annotation.aspx + ASPXCodeBehind + + + Annotation.aspx + + + + + Global.asax + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web.config + + + Web.config + + + + + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + + + + + + True + True + 50879 + / + http://localhost:8080/annotation/ + False + False + + + False + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + + + + + + + \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/GroupDocs.Annotation.AspNetWebForms.sln b/Demos/ASP.NET Web Forms/src/GroupDocs.Annotation.AspNetWebForms.sln new file mode 100644 index 0000000..9eeada5 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/GroupDocs.Annotation.AspNetWebForms.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.32428.217 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GroupDocs.Annotation.AspNetWebForms", "GroupDocs.Annotation.AspNetWebForms.csproj", "{9FE0932D-04EC-4F5A-BE47-461762489C50}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9FE0932D-04EC-4F5A-BE47-461762489C50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9FE0932D-04EC-4F5A-BE47-461762489C50}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9FE0932D-04EC-4F5A-BE47-461762489C50}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9FE0932D-04EC-4F5A-BE47-461762489C50}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {AC93C121-AB6F-4616-8251-F2F6FAABEC55} + EndGlobalSection +EndGlobal diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/AbstractTextAnnotator.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/AbstractTextAnnotator.cs new file mode 100644 index 0000000..f3ccb75 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/AbstractTextAnnotator.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public abstract class AbstractTextAnnotator : BaseAnnotator + { + protected AbstractTextAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + + } + protected static List GetPoints(AnnotationDataEntity annotationData, PageInfo pageInfo) + { + return new List + { + new Point(annotationData.left, pageInfo.Height - annotationData.top), + new Point(annotationData.left + annotationData.width, pageInfo.Height - annotationData.top), + new Point(annotationData.left, pageInfo.Height - annotationData.top - annotationData.height), + new Point(annotationData.left + annotationData.width, pageInfo.Height - annotationData.top - annotationData.height) + }; + } + + protected static List GetPointsForImages(AnnotationDataEntity annotationData, PageInfo pageInfo) + { + return new List + { + new Point(annotationData.left, annotationData.top + annotationData.height), + new Point(annotationData.left + annotationData.width, annotationData.top + annotationData.height), + new Point(annotationData.left, annotationData.top), + new Point(annotationData.left + annotationData.width, annotationData.top) + }; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/AnnotatorFactory.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/AnnotatorFactory.cs new file mode 100644 index 0000000..8ffb274 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/AnnotatorFactory.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public static class AnnotatorFactory + { + /// + /// Create annotator instance depending on type of annotation + /// + /// AnnotationDataEntity + /// PageInfo + /// + public static BaseAnnotator createAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + { + AnnotationDataEntity roundedAnnotationData = RoundCoordinates(annotationData); + switch (roundedAnnotationData.type) + { + case "textHighlight": + return new TextHighlightAnnotator(roundedAnnotationData, pageInfo); + case "area": + return new AreaAnnotator(roundedAnnotationData, pageInfo); + case "point": + return new PointAnnotator(roundedAnnotationData, pageInfo); + case "textStrikeout": + return new TextStrikeoutAnnotator(roundedAnnotationData, pageInfo); + case "polyline": + return new PolylineAnnotator(roundedAnnotationData, pageInfo); + case "textField": + return new TextFieldAnnotator(roundedAnnotationData, pageInfo); + case "watermark": + return new WatermarkAnnotator(roundedAnnotationData, pageInfo); + case "textReplacement": + return new TextReplacementAnnotator(roundedAnnotationData, pageInfo); + case "arrow": + return new ArrowAnnotator(roundedAnnotationData, pageInfo); + case "textRedaction": + return new TextRedactionAnnotator(roundedAnnotationData, pageInfo); + case "resourcesRedaction": + return new ResourceRedactionAnnotator(roundedAnnotationData, pageInfo); + case "textUnderline": + return new TextUnderlineAnnotator(roundedAnnotationData, pageInfo); + case "distance": + return new DistanceAnnotator(roundedAnnotationData, pageInfo); + default: + throw new ArgumentNullException("Wrong annotation data without annotation type!"); + } + } + + private static AnnotationDataEntity RoundCoordinates(AnnotationDataEntity annotationData) + { + annotationData.height = (float)Math.Round(annotationData.height, 0); + annotationData.left = (float)Math.Round(annotationData.left, 0); + annotationData.top = (float)Math.Round(annotationData.top, 0); + annotationData.width = (float)Math.Round(annotationData.width, 0); + return annotationData; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/AreaAnnotator.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/AreaAnnotator.cs new file mode 100644 index 0000000..10c4e05 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/AreaAnnotator.cs @@ -0,0 +1,57 @@ +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public class AreaAnnotator : BaseAnnotator + { + private AreaAnnotation areaAnnotation; + + public AreaAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + areaAnnotation = new AreaAnnotation + { + Box = GetBox() + }; + } + + public override AnnotationBase AnnotateWord() + { + areaAnnotation = InitAnnotationBase(areaAnnotation) as AreaAnnotation; + return areaAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateImage() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateDiagram() + { + return AnnotateWord(); + } + + protected override AnnotationType GetType() + { + return AnnotationType.Area; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/ArrowAnnotator.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/ArrowAnnotator.cs new file mode 100644 index 0000000..f76bdf7 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/ArrowAnnotator.cs @@ -0,0 +1,86 @@ +using System.Globalization; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public class ArrowAnnotator : BaseAnnotator + { + private bool withGuid; + private ArrowAnnotation arrowAnnotation; + + public ArrowAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + this.arrowAnnotation = new ArrowAnnotation + { + Box = GetBox() + }; + } + + public override AnnotationBase AnnotateWord() + { + withGuid = false; + arrowAnnotation = InitAnnotationBase(arrowAnnotation) as ArrowAnnotation; + return arrowAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + withGuid = true; + arrowAnnotation = InitAnnotationBase(arrowAnnotation) as ArrowAnnotation; + return arrowAnnotation; + } + + public override AnnotationBase AnnotateImage() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateDiagram() + { + return AnnotateWord(); + } + + protected override Reply GetAnnotationReplyInfo(CommentsEntity comment) + { + Reply annotationReplyInfo = base.GetAnnotationReplyInfo(comment); + if (withGuid) + { + annotationReplyInfo.ParentReply = new Reply { Id = annotationData.id }; + } + return annotationReplyInfo; + } + + protected override AnnotationType GetType() + { + return AnnotationType.Arrow; + } + + protected override Rectangle GetBox() + { + string svgPath = annotationData.svgPath; + string startPoint = svgPath.Replace("[a-zA-Z]+", "").Split(' ')[0]; + string endPoint = svgPath.Replace("[a-zA-Z]+", "").Split(' ')[1]; + string[] start = startPoint.Split(','); + float startX = float.Parse(start.Length > 0 ? start[0].Replace("M", "").Replace(",", ".") : "0", CultureInfo.InvariantCulture); + float startY = float.Parse(start.Length > 0 ? start[1].Replace("M", "").Replace(",", ".") : "0", CultureInfo.InvariantCulture); + string[] end = endPoint.Split(','); + float endX = float.Parse(end.Length > 0 ? end[0].Replace("L", "").Replace(",", ".") : "0", CultureInfo.InvariantCulture) - startX; + float endY = float.Parse(end.Length > 1 ? end[1].Replace("L", "").Replace(",", ".") : "0", CultureInfo.InvariantCulture) - startY; + return new Rectangle(startX, startY, endX, endY); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/BaseAnnotator.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/BaseAnnotator.cs new file mode 100644 index 0000000..a630b1b --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/BaseAnnotator.cs @@ -0,0 +1,182 @@ +using System; +using System.Linq; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public abstract class BaseAnnotator + { + protected AnnotationDataEntity annotationData; + protected PageInfo pageInfo; + + public string Message { get; set; } = "Annotation of type {0} for this file type is not supported"; + + /// + /// Constructor + /// + /// + /// + protected BaseAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + { + this.annotationData = annotationData; + this.pageInfo = pageInfo; + } + + /// + /// Add area annotation into the Word document + /// + /// AnnotationBase + public abstract AnnotationBase AnnotateWord(); + + /// + /// Add area annotation into the pdf document + /// + /// AnnotationBase + public abstract AnnotationBase AnnotatePdf(); + + ///// + ///// Add area annotation into the Excel document + ///// + ///// AnnotationBase + public abstract AnnotationBase AnnotateCells(); + + /// + /// Add area annotation into the Power Point document + /// + /// AnnotationBase + public abstract AnnotationBase AnnotateSlides(); + + /// + /// Add area annotation into the image document + /// + /// AnnotationBase + public abstract AnnotationBase AnnotateImage(); + + /// + /// Add area annotation into the document + /// + /// AnnotationBase + public abstract AnnotationBase AnnotateDiagram(); + + /// + /// Initial for annotation info + /// + /// AnnotationBase + protected AnnotationBase InitAnnotationBase(AnnotationBase annotationBase) + { + // set page number to add annotation + annotationBase.PageNumber = annotationData.pageNumber - 1; + // set annotation type + annotationBase.Type = GetType(); + annotationBase.CreatedOn = DateTime.UtcNow; + annotationBase.Id = annotationData.id; + // add replies + CommentsEntity[] comments = annotationData.comments; + if (comments != null && comments.Length != 0) + { + Reply[] replies = new Reply[comments.Length]; + for (int i = 0; i < comments.Length; i++) + { + Reply reply = GetAnnotationReplyInfo(comments[i]); + replies[i] = reply; + } + annotationBase.Replies = replies.ToList(); + } + return annotationBase; + } + + /// + /// Initial for reply annotation info + /// + /// CommentsEntity + /// AnnotationReplyInfo + protected virtual Reply GetAnnotationReplyInfo(CommentsEntity comment) + { + Reply reply = new Reply(); + reply.Comment = comment.text; + DateTime date; + try + { + long unixDate = long.Parse(comment.time); + DateTime start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + date = start.AddMilliseconds(unixDate).ToLocalTime(); + } + catch (System.Exception) + { + date = DateTime.Parse(comment.time); + } + reply.RepliedOn = date; + reply.User = new User { Name = comment.userName }; + return reply; + } + + /// + /// Get rectangle + /// + /// Rectangle + protected virtual Rectangle GetBox() + { + return new Rectangle(annotationData.left, annotationData.top, annotationData.width, annotationData.height); + } + + /// + /// Get type of annotation + /// + /// byte + protected new abstract AnnotationType GetType(); + + /// + /// Get Annotation info depending on document type + /// + /// string + /// AnnotationBase + public AnnotationBase GetAnnotationBase(string documentType) + { + switch (documentType) + { + case "Portable Document Format": + return AnnotatePdf(); + case "Microsoft Visio": + case "Microsoft Word": + case "Open Document Text": + return AnnotateWord(); + case "Rich Text Format": + return AnnotateWord(); + case "Open Document Presentation": + case "Microsoft PowerPoint": + return AnnotateSlides(); + case "image": + return AnnotateImage(); + case "Open Document Spreadsheet": + case "Microsoft Excel": + return AnnotateCells(); + case "AutoCAD Drawing File Format": + return AnnotateDiagram(); + default: + throw new Exceptions.AnnotatorException("Wrong annotation data without document type!"); + } + } + + /// + /// Check if the current annotatin is supported + /// + /// string + /// + internal bool IsSupported(string documentType) + { + try + { + AnnotatorFactory.createAnnotator(annotationData, pageInfo).GetAnnotationBase(documentType); + return true; + } + catch (NotSupportedException) + { + Message = string.Format(Message, annotationData.type); + return false; + } + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/DistanceAnnotator.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/DistanceAnnotator.cs new file mode 100644 index 0000000..b02966f --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/DistanceAnnotator.cs @@ -0,0 +1,92 @@ +using System; +using System.Globalization; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public class DistanceAnnotator : BaseAnnotator + { + private DistanceAnnotation distanceAnnotation; + + public DistanceAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + distanceAnnotation = new DistanceAnnotation + { + Box = GetBox() + }; + } + + public override AnnotationBase AnnotateWord() + { + distanceAnnotation = InitAnnotationBase(distanceAnnotation) as DistanceAnnotation; + return distanceAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + public override AnnotationBase AnnotateImage() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateDiagram() + { + return AnnotateWord(); + } + + protected new AnnotationBase InitAnnotationBase(AnnotationBase annotationBase) + { + distanceAnnotation = base.InitAnnotationBase(annotationBase) as DistanceAnnotation; + // add replies + string text = annotationData.text ?? ""; + CommentsEntity[] + comments = annotationData.comments; + if (comments != null && comments.Length != 0) + { + Reply reply = distanceAnnotation.Replies[0]; + if (reply != null) + { + reply.Comment = string.Format("{0} {1}", text, reply.Comment); + } + } + + return distanceAnnotation; + } + + protected override AnnotationType GetType() + { + return AnnotationType.Distance; + } + + protected override Rectangle GetBox() + { + string svgPath = annotationData.svgPath; + string startPoint = svgPath.Replace("[a-zA-Z]+", "").Split(' ')[0]; + string endPoint = svgPath.Replace("[a-zA-Z]+", "").Split(' ')[1]; + string[] start = startPoint.Split(','); + float startX = float.Parse(start.Length > 0 ? start[0].Replace("M", "").Replace(",", ".") : "0", CultureInfo.InvariantCulture); + float startY = float.Parse(start.Length > 0 ? start[1].Replace("M", "").Replace(",", ".") : "0", CultureInfo.InvariantCulture); + string[] end = endPoint.Split(','); + float endX = float.Parse(end.Length > 0 ? end[0].Replace("L", "").Replace(",", ".") : "0", CultureInfo.InvariantCulture) - startX; + float endY = float.Parse(end.Length > 1 ? end[1].Replace("L", "").Replace(",", ".") : "0", CultureInfo.InvariantCulture) - startY; + return new Rectangle(startX, startY, endX, endY); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/PointAnnotator.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/PointAnnotator.cs new file mode 100644 index 0000000..645269c --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/PointAnnotator.cs @@ -0,0 +1,57 @@ +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public class PointAnnotator : BaseAnnotator + { + private PointAnnotation pointAnnotation; + + public PointAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + pointAnnotation = new PointAnnotation + { + Box = GetBox() + }; + } + + public override AnnotationBase AnnotateWord() + { + pointAnnotation = base.InitAnnotationBase(pointAnnotation) as PointAnnotation; + return pointAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateImage() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateDiagram() + { + return AnnotateWord(); + } + + protected override AnnotationType GetType() + { + return AnnotationType.Point; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/PolylineAnnotator.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/PolylineAnnotator.cs new file mode 100644 index 0000000..1a589a8 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/PolylineAnnotator.cs @@ -0,0 +1,79 @@ +using System; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public class PolylineAnnotator : BaseAnnotator + { + private PolylineAnnotation polylineAnnotation; + + public PolylineAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + this.polylineAnnotation = new PolylineAnnotation + { + Box = GetBox(), + PenColor = 1201033, + PenWidth = 2, + SvgPath = annotationData.svgPath + }; + } + + public override AnnotationBase AnnotateWord() + { + polylineAnnotation = InitAnnotationBase(polylineAnnotation) as PolylineAnnotation; + return polylineAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + public override AnnotationBase AnnotateSlides() + { + polylineAnnotation = InitAnnotationBase(polylineAnnotation) as PolylineAnnotation; + FillCreatorName(polylineAnnotation, annotationData); + return polylineAnnotation; + } + + /// + /// Fill creator name field in annotation info + /// + /// AnnotationBase + protected static void FillCreatorName(AnnotationBase polylineAnnotation, AnnotationDataEntity annotationData) + { + CommentsEntity[] comments = annotationData.comments; + if (comments != null && comments.Length > 0 && comments[0] != null) + { + polylineAnnotation.User = new User + { + Name = comments[0].userName + }; + } + } + + public override AnnotationBase AnnotateImage() + { + return AnnotateSlides(); + } + + public override AnnotationBase AnnotateDiagram() + { + return AnnotateSlides(); + } + + protected override AnnotationType GetType() + { + return AnnotationType.Polyline; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/ResourceRedactionAnnotator.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/ResourceRedactionAnnotator.cs new file mode 100644 index 0000000..2728887 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/ResourceRedactionAnnotator.cs @@ -0,0 +1,57 @@ +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public class ResourceRedactionAnnotator : BaseAnnotator + { + private ResourcesRedactionAnnotation resourcesRedactionAnnotation; + + public ResourceRedactionAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + this.resourcesRedactionAnnotation = new ResourcesRedactionAnnotation + { + Box = GetBox() + }; + } + + public override AnnotationBase AnnotateWord() + { + resourcesRedactionAnnotation = InitAnnotationBase(resourcesRedactionAnnotation) as ResourcesRedactionAnnotation; + return resourcesRedactionAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateImage() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateDiagram() + { + return AnnotateWord(); + } + + protected override AnnotationType GetType() + { + return AnnotationType.ResourcesRedaction; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/SetLicense.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/SetLicense.cs new file mode 100644 index 0000000..7b6d684 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/SetLicense.cs @@ -0,0 +1,11 @@ +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public class SetLicense + { + public void AddLicense(string licensePath) + { + License license = new License(); + license.SetLicense(licensePath); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextFieldAnnotator.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextFieldAnnotator.cs new file mode 100644 index 0000000..2dc6a81 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextFieldAnnotator.cs @@ -0,0 +1,61 @@ +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public class TextFieldAnnotator : BaseAnnotator + { + private TextFieldAnnotation textFieldAnnotation; + + public TextFieldAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + textFieldAnnotation = new TextFieldAnnotation + { + Box = GetBox(), + FontFamily = !string.IsNullOrEmpty(annotationData.font) ? annotationData.font : "Arial", + FontColor = annotationData.fontColor, + FontSize = annotationData.fontSize == 0 ? 12 : annotationData.fontSize, + Text = annotationData.text + }; + } + + public override AnnotationBase AnnotateWord() + { + textFieldAnnotation = InitAnnotationBase(textFieldAnnotation) as TextFieldAnnotation; + return textFieldAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateImage() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateDiagram() + { + return AnnotateWord(); + } + + protected override AnnotationType GetType() + { + return AnnotationType.TextField; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextHighlightAnnotator.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextHighlightAnnotator.cs new file mode 100644 index 0000000..fd9f2a6 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextHighlightAnnotator.cs @@ -0,0 +1,60 @@ +using System; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public class TextHighlightAnnotator : AbstractTextAnnotator + { + private HighlightAnnotation highlightAnnotation; + + public TextHighlightAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + highlightAnnotation = new HighlightAnnotation + { + Points = GetPoints(annotationData, pageInfo) + }; + } + + public override AnnotationBase AnnotateWord() + { + highlightAnnotation = InitAnnotationBase(highlightAnnotation) as HighlightAnnotation; + return highlightAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateImage() + { + highlightAnnotation = InitAnnotationBase(highlightAnnotation) as HighlightAnnotation; + highlightAnnotation.Points = GetPointsForImages(annotationData, pageInfo); + return highlightAnnotation; + } + + public override AnnotationBase AnnotateDiagram() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + protected override AnnotationType GetType() + { + return AnnotationType.TextHighlight; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextRedactionAnnotator.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextRedactionAnnotator.cs new file mode 100644 index 0000000..4630ecc --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextRedactionAnnotator.cs @@ -0,0 +1,55 @@ +using System; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public class TextRedactionAnnotator : TextHighlightAnnotator + { + private TextRedactionAnnotation textRedactionAnnotation; + + public TextRedactionAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + textRedactionAnnotation = new TextRedactionAnnotation + { + Points = GetPoints(annotationData, pageInfo) + }; + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + public override AnnotationBase AnnotateImage() + { + textRedactionAnnotation = InitAnnotationBase(textRedactionAnnotation) as TextRedactionAnnotation; + textRedactionAnnotation.Points = GetPointsForImages(annotationData, pageInfo); + return textRedactionAnnotation; + } + + public override AnnotationBase AnnotateDiagram() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + public override AnnotationBase AnnotatePdf() + { + textRedactionAnnotation = InitAnnotationBase(textRedactionAnnotation) as TextRedactionAnnotation; + return textRedactionAnnotation; + } + + protected override AnnotationType GetType() + { + return AnnotationType.TextRedaction; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextReplacementAnnotator.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextReplacementAnnotator.cs new file mode 100644 index 0000000..4c435e7 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextReplacementAnnotator.cs @@ -0,0 +1,59 @@ +using System; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public class TextReplacementAnnotator : AbstractTextAnnotator + { + private ReplacementAnnotation replacementAnnotation; + + public TextReplacementAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + replacementAnnotation = new ReplacementAnnotation + { + Points = GetPoints(annotationData, pageInfo), + TextToReplace = annotationData.text + }; + } + + public override AnnotationBase AnnotateWord() + { + replacementAnnotation = InitAnnotationBase(replacementAnnotation) as ReplacementAnnotation; + return replacementAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + public override AnnotationBase AnnotateImage() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + public override AnnotationBase AnnotateDiagram() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + protected override AnnotationType GetType() + { + return AnnotationType.TextReplacement; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextStrikeoutAnnotator.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextStrikeoutAnnotator.cs new file mode 100644 index 0000000..33ca7ef --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextStrikeoutAnnotator.cs @@ -0,0 +1,62 @@ +using System; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public class TextStrikeoutAnnotator : AbstractTextAnnotator + { + private StrikeoutAnnotation strikeoutAnnotation; + + public TextStrikeoutAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + strikeoutAnnotation = new StrikeoutAnnotation + { + Points = GetPoints(annotationData, pageInfo) + }; + } + + public override AnnotationBase AnnotateWord() + { + strikeoutAnnotation = InitAnnotationBase(strikeoutAnnotation) as StrikeoutAnnotation; + return strikeoutAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + strikeoutAnnotation = InitAnnotationBase(strikeoutAnnotation) as StrikeoutAnnotation; + this.strikeoutAnnotation.FontColor = 0; + return strikeoutAnnotation; + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateImage() + { + strikeoutAnnotation = InitAnnotationBase(strikeoutAnnotation) as StrikeoutAnnotation; + strikeoutAnnotation.Points = GetPointsForImages(annotationData, pageInfo); + return strikeoutAnnotation; + } + + public override AnnotationBase AnnotateDiagram() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + protected override AnnotationType GetType() + { + return AnnotationType.TextStrikeout; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextUnderlineAnnotator.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextUnderlineAnnotator.cs new file mode 100644 index 0000000..0d626d9 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/TextUnderlineAnnotator.cs @@ -0,0 +1,64 @@ +using System; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public class TextUnderlineAnnotator : AbstractTextAnnotator + { + private UnderlineAnnotation underlineAnnotation; + + public TextUnderlineAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + underlineAnnotation = new UnderlineAnnotation + { + Points = GetPoints(annotationData, pageInfo) + }; + } + + public override AnnotationBase AnnotateWord() + { + underlineAnnotation = InitAnnotationBase(underlineAnnotation) as UnderlineAnnotation; + underlineAnnotation.FontColor = 1201033; + return underlineAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + underlineAnnotation = InitAnnotationBase(underlineAnnotation) as UnderlineAnnotation; + underlineAnnotation.FontColor = 0; + return underlineAnnotation; + } + + public override AnnotationBase AnnotateImage() + { + underlineAnnotation = InitAnnotationBase(underlineAnnotation) as UnderlineAnnotation; + underlineAnnotation.FontColor = 1201033; + underlineAnnotation.Points = GetPointsForImages(annotationData, pageInfo); + return underlineAnnotation; + } + + public override AnnotationBase AnnotateDiagram() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + protected override AnnotationType GetType() + { + return AnnotationType.TextUnderline; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/WatermarkAnnotator.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/WatermarkAnnotator.cs new file mode 100644 index 0000000..8cb23bd --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Annotator/WatermarkAnnotator.cs @@ -0,0 +1,62 @@ +using System; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator +{ + public class WatermarkAnnotator : BaseAnnotator + { + private WatermarkAnnotation watermarkAnnotation; + + public WatermarkAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) + : base(annotationData, pageInfo) + { + watermarkAnnotation = new WatermarkAnnotation + { + Box = GetBox(), + FontFamily = !string.IsNullOrEmpty(annotationData.font) ? annotationData.font : "Arial", + FontColor = annotationData.fontColor, + FontSize = annotationData.fontSize == 0 ? 12 : annotationData.fontSize, + Text = annotationData.text + }; + } + + public override AnnotationBase AnnotateWord() + { + watermarkAnnotation = InitAnnotationBase(watermarkAnnotation) as WatermarkAnnotation; + return watermarkAnnotation; + } + + public override AnnotationBase AnnotatePdf() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateCells() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateSlides() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateImage() + { + return AnnotateWord(); + } + + public override AnnotationBase AnnotateDiagram() + { + throw new NotSupportedException(string.Format(Message, annotationData.type)); + } + + protected override AnnotationType GetType() + { + return AnnotationType.Watermark; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Config/AnnotationConfiguration.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Config/AnnotationConfiguration.cs new file mode 100644 index 0000000..55683af --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Config/AnnotationConfiguration.cs @@ -0,0 +1,127 @@ +using System; +using System.IO; +using System.Linq; +using GroupDocs.Annotation.AspNetWebForms.Products.Common.Config; +using GroupDocs.Annotation.AspNetWebForms.Products.Common.Util.Parser; +using Newtonsoft.Json; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Config +{ + public class AnnotationConfiguration : CommonConfiguration + { + [JsonProperty] + private readonly string filesDirectory = "DocumentSamples/Annotation"; + + [JsonProperty] + private readonly string defaultDocument = string.Empty; + + [JsonProperty] + private readonly int preloadPageCount; + + [JsonProperty] + private readonly bool textAnnotation = true; + + [JsonProperty] + private readonly bool areaAnnotation = true; + + [JsonProperty] + private readonly bool pointAnnotation = true; + + [JsonProperty] + private readonly bool textStrikeoutAnnotation = true; + + [JsonProperty] + private readonly bool polylineAnnotation = true; + + [JsonProperty] + private readonly bool textFieldAnnotation = true; + + [JsonProperty] + private readonly bool watermarkAnnotation = true; + + [JsonProperty] + private readonly bool textReplacementAnnotation = true; + + [JsonProperty] + private readonly bool arrowAnnotation = true; + + [JsonProperty] + private readonly bool textRedactionAnnotation = true; + + [JsonProperty] + private readonly bool resourcesRedactionAnnotation = true; + + [JsonProperty] + private readonly bool textUnderlineAnnotation = true; + + [JsonProperty] + private readonly bool distanceAnnotation = true; + + [JsonProperty] + private readonly bool downloadOriginal = true; + + [JsonProperty] + private readonly bool downloadAnnotated = true; + + [JsonProperty] + private readonly bool zoom = true; + + /// + /// Initializes a new instance of the class. + /// Get Annotation configuration section from the Web.config. + /// + public AnnotationConfiguration() + { + YamlParser parser = new YamlParser(); + dynamic configuration = parser.GetConfiguration("annotation"); + ConfigurationValuesGetter valuesGetter = new ConfigurationValuesGetter(configuration); + + this.filesDirectory = valuesGetter.GetStringPropertyValue("filesDirectory", this.filesDirectory); + if (!IsFullPath(this.filesDirectory)) + { + this.filesDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, this.filesDirectory); + if (!Directory.Exists(this.filesDirectory)) + { + Directory.CreateDirectory(this.filesDirectory); + } + } + + this.defaultDocument = valuesGetter.GetStringPropertyValue("defaultDocument", this.defaultDocument).Replace(@"\", "/"); + this.textAnnotation = valuesGetter.GetBooleanPropertyValue("textAnnotation", this.textAnnotation); + this.areaAnnotation = valuesGetter.GetBooleanPropertyValue("areaAnnotation", this.areaAnnotation); + this.pointAnnotation = valuesGetter.GetBooleanPropertyValue("pointAnnotation", this.pointAnnotation); + this.textStrikeoutAnnotation = valuesGetter.GetBooleanPropertyValue("textStrikeoutAnnotation", this.textStrikeoutAnnotation); + this.polylineAnnotation = valuesGetter.GetBooleanPropertyValue("polylineAnnotation", this.polylineAnnotation); + this.textFieldAnnotation = valuesGetter.GetBooleanPropertyValue("textFieldAnnotation", this.textFieldAnnotation); + this.watermarkAnnotation = valuesGetter.GetBooleanPropertyValue("watermarkAnnotation", this.watermarkAnnotation); + this.textReplacementAnnotation = valuesGetter.GetBooleanPropertyValue("textReplacementAnnotation", this.textReplacementAnnotation); + this.arrowAnnotation = valuesGetter.GetBooleanPropertyValue("arrowAnnotation", this.arrowAnnotation); + this.textRedactionAnnotation = valuesGetter.GetBooleanPropertyValue("textRedactionAnnotation", this.textRedactionAnnotation); + this.resourcesRedactionAnnotation = valuesGetter.GetBooleanPropertyValue("resourcesRedactionAnnotation", this.resourcesRedactionAnnotation); + this.textUnderlineAnnotation = valuesGetter.GetBooleanPropertyValue("textUnderlineAnnotation", this.textUnderlineAnnotation); + this.distanceAnnotation = valuesGetter.GetBooleanPropertyValue("distanceAnnotation", this.distanceAnnotation); + this.downloadOriginal = valuesGetter.GetBooleanPropertyValue("downloadOriginal", this.downloadOriginal); + this.downloadAnnotated = valuesGetter.GetBooleanPropertyValue("downloadAnnotated", this.downloadAnnotated); + this.preloadPageCount = valuesGetter.GetIntegerPropertyValue("preloadPageCount", this.preloadPageCount); + this.zoom = valuesGetter.GetBooleanPropertyValue("zoom", this.zoom); + } + + public string GetFilesDirectory() + { + return this.filesDirectory; + } + + public int GetPreloadPageCount() + { + return this.preloadPageCount; + } + + private static bool IsFullPath(string path) + { + return !string.IsNullOrWhiteSpace(path) + && path.IndexOfAny(Path.GetInvalidPathChars().ToArray()) == -1 + && Path.IsPathRooted(path) + && !Path.GetPathRoot(path).Equals(Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Controllers/AnnotationApiController.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Controllers/AnnotationApiController.cs new file mode 100644 index 0000000..f783b3d --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Controllers/AnnotationApiController.cs @@ -0,0 +1,586 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Web; +using System.Web.Http; +using System.Web.Http.Cors; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Annotator; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Config; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Util; +using GroupDocs.Annotation.AspNetWebForms.Products.Common.Entity.Web; +using GroupDocs.Annotation.AspNetWebForms.Products.Common.Resources; +using GroupDocs.Annotation.AspNetWebForms.Products.Common.Util.Comparator; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Controllers +{ + [EnableCors(origins: "*", headers: "*", methods: "*")] + public class AnnotationApiController : ApiController + { + private static Common.Config.GlobalConfiguration globalConfiguration = new Common.Config.GlobalConfiguration(); + private readonly List SupportedImageFormats = new List { ".bmp", ".jpeg", ".jpg", ".tiff", ".tif", ".png", ".dwg", ".dcm", ".dxf" }; + + /// + /// Load Annotation configuration + /// + /// Annotation configuration + [HttpGet] + [Route("loadConfig")] + public AnnotationConfiguration LoadConfig() + { + return globalConfiguration.Annotation; + } + + /// + /// Get all files and directories from storage + /// + /// SignaturePostedDataEntity + /// List of files and directories + [HttpPost] + [Route("loadFileTree")] + public HttpResponseMessage loadFileTree(PostedDataEntity postedData) + { + // get request body + string relDirPath = postedData.path; + // get file list from storage path + try + { + // get all the files from a directory + if (string.IsNullOrEmpty(relDirPath)) + { + relDirPath = globalConfiguration.Annotation.GetFilesDirectory(); + } + else + { + relDirPath = Path.Combine(globalConfiguration.Annotation.GetFilesDirectory(), relDirPath); + } + + List fileList = new List(); + List allFiles = new List(Directory.GetFiles(relDirPath)); + allFiles.AddRange(Directory.GetDirectories(relDirPath)); + + allFiles.Sort(new FileNameComparator()); + allFiles.Sort(new FileTypeComparator()); + + foreach (string file in allFiles) + { + FileInfo fileInfo = new FileInfo(file); + // check if current file/folder is hidden + if (!(fileInfo.Attributes.HasFlag(FileAttributes.Hidden) || + Path.GetFileName(file).Equals(Path.GetFileName(globalConfiguration.Annotation.GetFilesDirectory())) || + Path.GetFileName(file).StartsWith("."))) + { + FileDescriptionEntity fileDescription = new FileDescriptionEntity(); + fileDescription.guid = Path.GetFullPath(file); + fileDescription.name = Path.GetFileName(file); + // set is directory true/false + fileDescription.isDirectory = fileInfo.Attributes.HasFlag(FileAttributes.Directory); + // set file size + if (!fileDescription.isDirectory) + { + fileDescription.size = fileInfo.Length; + } + // add object to array list + fileList.Add(fileDescription); + } + } + return Request.CreateResponse(HttpStatusCode.OK, fileList); + } + catch (Exception ex) + { + return Request.CreateResponse(HttpStatusCode.InternalServerError, new Resources().GenerateException(ex)); + } + } + + /// + /// Load document description + /// + /// Post data + /// Document info object + [HttpPost] + [Route("loadDocumentDescription")] + public HttpResponseMessage LoadDocumentDescription(AnnotationPostedDataEntity postedData) + { + string password = ""; + try + { + AnnotatedDocumentEntity loadDocumentEntity = LoadDocument(postedData, globalConfiguration.Annotation.GetPreloadPageCount() == 0); + // return document description + return Request.CreateResponse(HttpStatusCode.OK, loadDocumentEntity); + } + catch (Exception ex) + { + // set exception message + // TODO: return InternalServerError for common Exception and Forbidden for PasswordProtectedException + return Request.CreateResponse(HttpStatusCode.Forbidden, new Resources().GenerateException(ex, password)); + } + } + + public AnnotatedDocumentEntity LoadDocument(AnnotationPostedDataEntity loadDocumentRequest, bool loadAllPages) + { + string password = loadDocumentRequest.password; + AnnotatedDocumentEntity description = new AnnotatedDocumentEntity(); + string documentGuid = loadDocumentRequest.guid; + + using (GroupDocs.Annotation.Annotator annotator = new GroupDocs.Annotation.Annotator(documentGuid, GetLoadOptions(password))) + { + IDocumentInfo info = annotator.Document.GetDocumentInfo(); + AnnotationBase[] annotations = annotator.Get().ToArray(); + description.guid = loadDocumentRequest.guid; + + string documentType = getDocumentType(info); + + description.supportedAnnotations = new SupportedAnnotations().GetSupportedAnnotations(documentType); + + List pagesContent = new List(); + + if (loadAllPages) + { + pagesContent = GetAllPagesContent(annotator, info); + } + + for (int i = 0; i < info.PagesInfo.Count; i++) + { + PageDataDescriptionEntity page = new PageDataDescriptionEntity + { + number = i + 1, + height = info.PagesInfo[i].Height, + width = info.PagesInfo[i].Width, + }; + + if (annotations != null && annotations.Length > 0) + { + page.SetAnnotations(AnnotationMapper.MapForPage(annotations, i + 1, info.PagesInfo[i], documentType)); + } + + if (pagesContent.Count > 0) + { + page.SetData(pagesContent[i]); + } + description.pages.Add(page); + } + } + + description.guid = documentGuid; + // return document description + return description; + } + + /// + /// Get document page + /// + /// + /// Document page image + [HttpPost] + [Route("loadDocumentPage")] + public HttpResponseMessage LoadDocumentPage(AnnotationPostedDataEntity loadDocumentPageRequest) + { + string password = ""; + try + { + // get/set parameters + string documentGuid = loadDocumentPageRequest.guid; + int pageNumber = loadDocumentPageRequest.page; + password = loadDocumentPageRequest.password; + PageDataDescriptionEntity loadedPage = new PageDataDescriptionEntity(); + + // get page image + byte[] bytes; + + using (GroupDocs.Annotation.Annotator annotator = new GroupDocs.Annotation.Annotator(documentGuid, GetLoadOptions(password))) + { + using (var memoryStream = RenderPageToMemoryStream(annotator, pageNumber)) + { + bytes = memoryStream.ToArray(); + } + + IDocumentInfo info = annotator.Document.GetDocumentInfo(); + AnnotationBase[] annotations = annotator.Get().ToArray(); + string documentType = getDocumentType(info); + + if (annotations != null && annotations.Length > 0) + { + loadedPage.SetAnnotations(AnnotationMapper.MapForPage(annotations, pageNumber, info.PagesInfo[pageNumber - 1], documentType)); + } + + string encodedImage = Convert.ToBase64String(bytes); + loadedPage.SetData(encodedImage); + + loadedPage.height = info.PagesInfo[pageNumber - 1].Height; + loadedPage.width = info.PagesInfo[pageNumber - 1].Width; + loadedPage.number = pageNumber; + } + + // return loaded page object + return Request.CreateResponse(HttpStatusCode.OK, loadedPage); + } + catch (Exception ex) + { + // set exception message + return Request.CreateResponse(HttpStatusCode.InternalServerError, new Resources().GenerateException(ex, password)); + } + } + + private string getDocumentType(IDocumentInfo info) + { + string documentType = string.Empty; + if (info.FileType != null) + { + documentType = SupportedImageFormats.Contains(info.FileType.Extension) ? "image" : info.FileType.ToString(); + } + else + { + documentType = "Portable Document Format"; + } + + return documentType; + } + + private static List GetAllPagesContent(GroupDocs.Annotation.Annotator annotator, IDocumentInfo pages) + { + List allPages = new List(); + + //get page HTML + for (int i = 0; i < pages.PagesInfo.Count; i++) + { + byte[] bytes; + using (var memoryStream = RenderPageToMemoryStream(annotator, i + 1)) + { + bytes = memoryStream.ToArray(); + } + + string encodedImage = Convert.ToBase64String(bytes); + allPages.Add(encodedImage); + } + + return allPages; + } + + static MemoryStream RenderPageToMemoryStream(GroupDocs.Annotation.Annotator annotator, int pageNumberToRender) + { + MemoryStream result = new MemoryStream(); + + PreviewOptions previewOptions = new PreviewOptions(pageNumber => result) + { + PreviewFormat = PreviewFormats.PNG, + PageNumbers = new[] { pageNumberToRender }, + RenderComments = false + }; + + annotator.Document.GeneratePreview(previewOptions); + + return result; + } + + /// + /// Upload document + /// + /// Uploaded document object + [HttpPost] + [Route("uploadDocument")] + public HttpResponseMessage UploadDocument() + { + try + { + string url = HttpContext.Current.Request.Form["url"]; + // get documents storage path + string documentStoragePath = globalConfiguration.Annotation.GetFilesDirectory(); + bool rewrite = bool.Parse(HttpContext.Current.Request.Form["rewrite"]); + string fileSavePath = ""; + if (string.IsNullOrEmpty(url)) + { + if (HttpContext.Current.Request.Files.AllKeys != null) + { + // Get the uploaded document from the Files collection + var httpPostedFile = HttpContext.Current.Request.Files["file"]; + if (httpPostedFile != null) + { + if (rewrite) + { + // Get the complete file path + fileSavePath = Path.Combine(documentStoragePath, httpPostedFile.FileName); + } + else + { + fileSavePath = Resources.GetFreeFileName(documentStoragePath, httpPostedFile.FileName); + } + + // Save the uploaded file to "UploadedFiles" folder + httpPostedFile.SaveAs(fileSavePath); + } + } + } + else + { + using (WebClient client = new WebClient()) + { + // get file name from the URL + Uri uri = new Uri(url); + string fileName = Path.GetFileName(uri.LocalPath); + if (rewrite) + { + // Get the complete file path + fileSavePath = Path.Combine(documentStoragePath, fileName); + } + else + { + fileSavePath = Resources.GetFreeFileName(documentStoragePath, fileName); + } + // Download the Web resource and save it into the current filesystem folder. + client.DownloadFile(url, fileSavePath); + } + } + UploadedDocumentEntity uploadedDocument = new UploadedDocumentEntity + { + guid = fileSavePath + }; + return Request.CreateResponse(HttpStatusCode.OK, uploadedDocument); + } + catch (Exception ex) + { + // set exception message + return Request.CreateResponse(HttpStatusCode.InternalServerError, new Resources().GenerateException(ex)); + } + } + + /// + /// Download document + /// + /// string + /// bool + /// + [HttpGet] + [Route("downloadDocument")] + public HttpResponseMessage DownloadDocument(string path) + { + // add file into the response + if (File.Exists(path)) + { + RemoveAnnotations(path, ""); + HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); + var fileStream = new FileStream(path, FileMode.Open); + response.Content = new StreamContent(fileStream); + response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); + response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); + response.Content.Headers.ContentDisposition.FileName = Path.GetFileName(path); + return response; + } + else + { + return new HttpResponseMessage(HttpStatusCode.NotFound); + } + } + + /// + /// Download document + /// + /// string + /// bool + /// + [HttpGet] + [Route("downloadAnnotated")] + public HttpResponseMessage DownloadAnnotated(string path) + { + // add file into the response + if (File.Exists(path)) + { + HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); + var fileStream = new FileStream(path, FileMode.Open); + response.Content = new StreamContent(fileStream); + response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); + response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); + response.Content.Headers.ContentDisposition.FileName = ConvertFormat(path); + return response; + } + else + { + return new HttpResponseMessage(HttpStatusCode.NotFound); + } + } + + public string ConvertFormat(string path) + { + string fileName = Path.GetFileName(path); + string[] splits = fileName.Split('.'); + string t = null; + foreach (var split in splits) + { + t = split; + } + + switch (t) + { + case "ods": + return Path.GetFileName(path).Replace(t, "") + "xlsx"; + case "vsd": + return Path.GetFileName(path).Replace(t, "") + "vsdx"; + default: return Path.GetFileName(path); + } + } + ///// + ///// Annotate document + ///// + ///// Annotated document info + [HttpPost] + [Route("annotate")] + public HttpResponseMessage Annotate(AnnotationPostedDataEntity annotateDocumentRequest) + { + AnnotatedDocumentEntity annotatedDocument = new AnnotatedDocumentEntity(); + try + { + // get/set parameters + string documentGuid = annotateDocumentRequest.guid; + string password = annotateDocumentRequest.password; + string documentType = SupportedImageFormats.Contains(Path.GetExtension(annotateDocumentRequest.guid).ToLowerInvariant()) ? "image" : annotateDocumentRequest.documentType; + string tempPath = GetTempPath(documentGuid); + + AnnotationDataEntity[] annotationsData = annotateDocumentRequest.annotationsData; + // initiate list of annotations to add + List annotations = new List(); + + using (GroupDocs.Annotation.Annotator annotator = new GroupDocs.Annotation.Annotator(documentGuid, GetLoadOptions(password))) + { + IDocumentInfo info = annotator.Document.GetDocumentInfo(); + + for (int i = 0; i < annotationsData.Length; i++) + { + AnnotationDataEntity annotationData = annotationsData[i]; + PageInfo pageInfo = info.PagesInfo[annotationsData[i].pageNumber - 1]; + // add annotation, if current annotation type isn't supported by the current document type it will be ignored + try + { + BaseAnnotator baseAnnotator = AnnotatorFactory.createAnnotator(annotationData, pageInfo); + if (baseAnnotator.IsSupported(documentType)) + { + annotations.Add(baseAnnotator.GetAnnotationBase(documentType)); + } + } + catch (Exception ex) + { + throw new Exceptions.AnnotatorException(ex.Message, ex); + } + } + } + + // Add annotation to the document + RemoveAnnotations(documentGuid, password); + // check if annotations array contains at least one annotation to add + if (annotations.Count != 0) + { + using (GroupDocs.Annotation.Annotator annotator = new GroupDocs.Annotation.Annotator(documentGuid, GetLoadOptions(password))) + { + foreach (var annotation in annotations) + { + annotator.Add(annotation); + } + + annotator.Save(tempPath); + } + + if (File.Exists(documentGuid)) + { + File.Delete(documentGuid); + } + + File.Move(tempPath, documentGuid); + } + + annotatedDocument = new AnnotatedDocumentEntity(); + annotatedDocument.guid = documentGuid; + if (annotateDocumentRequest.print) + { + annotatedDocument.pages = GetAnnotatedPagesForPrint(password, documentGuid); + File.Move(documentGuid, annotateDocumentRequest.guid); + } + } + catch (Exception ex) + { + // set exception message + return Request.CreateResponse(HttpStatusCode.InternalServerError, new Resources().GenerateException(ex)); + } + + return Request.CreateResponse(HttpStatusCode.OK, annotatedDocument); + } + + private static List GetAnnotatedPagesForPrint(string password, string documentGuid) + { + AnnotatedDocumentEntity description = new AnnotatedDocumentEntity(); + try + { + using (FileStream outputStream = File.OpenRead(documentGuid)) + { + using (GroupDocs.Annotation.Annotator annotator = new GroupDocs.Annotation.Annotator(outputStream, GetLoadOptions(password))) + { + IDocumentInfo info = annotator.Document.GetDocumentInfo(); + List pagesContent = GetAllPagesContent(annotator, info); + + for (int i = 0; i < info.PagesInfo.Count; i++) + { + PageDataDescriptionEntity page = new PageDataDescriptionEntity(); + + if (pagesContent.Count > 0) + { + page.SetData(pagesContent[i]); + } + + description.pages.Add(page); + } + } + } + + return description.pages; + } + catch (FileNotFoundException ex) + { + throw ex; + } + } + + public static void RemoveAnnotations(string documentGuid, string password) + { + string tempPath = GetTempPath(documentGuid); + + try + { + using (Stream inputStream = File.Open(documentGuid, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) + { + using (GroupDocs.Annotation.Annotator annotator = new GroupDocs.Annotation.Annotator(inputStream, GetLoadOptions(password))) + { + annotator.Save(tempPath, new SaveOptions { AnnotationTypes = AnnotationType.None }); + } + } + + File.Delete(documentGuid); + File.Move(tempPath, documentGuid); + } + catch (Exception ex) + { + throw ex; + } + } + + private static string GetTempPath(string documentGuid) + { + string tempFilename = Path.GetFileNameWithoutExtension(documentGuid) + "_tmp"; + string tempPath = Path.Combine(Path.GetDirectoryName(documentGuid), tempFilename + Path.GetExtension(documentGuid)); + return tempPath; + } + + private static LoadOptions GetLoadOptions(string password) + { + LoadOptions loadOptions = new LoadOptions + { + Password = password + }; + + return loadOptions; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Annotations.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Annotations.cs new file mode 100644 index 0000000..1263819 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Annotations.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity +{ + public class Annotations + { + internal string[] Cells = { + "textHighlight" + }; + internal string[] Diagram = { + "area", + "point", + "polyline", + "textField", + "arrow", + "textRedaction", + "resourcesRedaction", + "distance" + }; + internal string[] Word = { + "area", + "point", + "textStrikeout", + "polyline", + "textField", + "watermark", + "textReplacement", + "arrow", + "textRedaction", + "resourcesRedaction", + "textUnderline", + "distance", + "textHighlight" + }; + internal string[] Pdf = { + "area", + "point", + "textStrikeout", + "polyline", + "textField", + "watermark", + "textReplacement", + "arrow", + "textRedaction", + "resourcesRedaction", + "textUnderline", + "distance", + "textHighlight" + }; + internal string[] Image = { + "area", + "point", + "textStrikeout", + "polyline", + "textField", + "watermark", + "arrow", + "textRedaction", + "resourcesRedaction", + "textUnderline", + "distance", + "textHighlight" + }; + internal string[] Slides = { + "area", + "point", + "textStrikeout", + "polyline", + "textField", + "watermark", + "arrow", + "textRedaction", + "resourcesRedaction", + "textUnderline", + "textHighlight" + }; + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Request/TextCoordinatesRequest.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Request/TextCoordinatesRequest.cs new file mode 100644 index 0000000..c73b04a --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Request/TextCoordinatesRequest.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetWebForms.Products.Common.Entity.Web; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Request +{ + public class TextCoordinatesRequest : PostedDataEntity + { + public int pageNumber { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/AnnotatedDocumentEntity.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/AnnotatedDocumentEntity.cs new file mode 100644 index 0000000..5b797a6 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/AnnotatedDocumentEntity.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetWebForms.Products.Common.Entity.Web; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web +{ + public class AnnotatedDocumentEntity : PageDescriptionEntity + { + public string guid { get; set; } + public List pages { get; set; } = new List(); + public string[] supportedAnnotations { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/AnnotationDataEntity.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/AnnotationDataEntity.cs new file mode 100644 index 0000000..3b24202 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/AnnotationDataEntity.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web +{ + public class AnnotationDataEntity + { + public int id { get; set; } + public int pageNumber { get; set; } + public int fontColor { get; set; } + public float fontSize { get; set; } + public float left { get; set; } + public float top { get; set; } + public float width { get; set; } + public float height { get; set; } + public string svgPath { get; set; } + public string type { get; set; } + public string documentType { get; set; } + public string text { get; set; } + public string font { get; set; } + public bool imported { get; set; } + public CommentsEntity[] comments { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/AnnotationPostedDataEntity.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/AnnotationPostedDataEntity.cs new file mode 100644 index 0000000..64b012e --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/AnnotationPostedDataEntity.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetWebForms.Products.Common.Entity.Web; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web +{ + public class AnnotationPostedDataEntity : PostedDataEntity + { + public string documentType { get; set; } + public AnnotationDataEntity[] annotationsData { get; set; } + public bool print { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/CommentsEntity.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/CommentsEntity.cs new file mode 100644 index 0000000..f02c4ad --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/CommentsEntity.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web +{ + public class CommentsEntity + { + public string time { get; set; } + public string text { get; set; } + public string userName { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/PageDataDescriptionEntity.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/PageDataDescriptionEntity.cs new file mode 100644 index 0000000..fa1bde1 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/PageDataDescriptionEntity.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetWebForms.Products.Common.Entity.Web; +using Newtonsoft.Json; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web +{ + public class PageDataDescriptionEntity : PageDescriptionEntity + { + /// List of annotation data + [JsonProperty] + private AnnotationDataEntity[] annotations; + + public void SetAnnotations(AnnotationDataEntity[] annotations) + { + this.annotations = annotations; + } + + public AnnotationDataEntity[] GetAnnotations() + { + return annotations; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/TextRowEntity.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/TextRowEntity.cs new file mode 100644 index 0000000..59fbf35 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Entity/Web/TextRowEntity.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web +{ + public class TextRowEntity + { + public List textCoordinates { get; set; } + public double lineTop { get; set; } + public double lineHeight { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Util/AnnotationMapper.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Util/AnnotationMapper.cs new file mode 100644 index 0000000..63e1f74 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Util/AnnotationMapper.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Web; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity.Web; +using GroupDocs.Annotation.Models; +using GroupDocs.Annotation.Models.AnnotationModels; +using GroupDocs.Annotation.Models.AnnotationModels.Interfaces.Properties; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Util +{ + public class AnnotationMapper + { + private AnnotationMapper() + { + } + + /// + /// Map AnnotationInfo instances into AnnotationDataEntity + /// + /// AnnotationInfo[] + /// int + /// + public static AnnotationDataEntity[] MapForPage(AnnotationBase[] annotations, int pageNumber, PageInfo pageInfo, string documentType) + { + // initiate annotations data array + IList pageAnnotations = new List(); + // each annotation data - this functionality used since annotations data returned by the + // GroupDocs.Annotation library are obfuscated + for (int n = 0; n < annotations.Length; n++) + { + AnnotationBase annotationInfo = annotations[n]; + if (pageNumber == annotationInfo.PageNumber + 1) + { + AnnotationDataEntity annotation = MapAnnotationDataEntity(annotationInfo, pageInfo, documentType); + pageAnnotations.Add(annotation); + } + } + + return pageAnnotations.ToArray(); + } + + /// + /// Map AnnotationInfo instances into AnnotationDataEntity + /// + /// AnnotationInfo + /// AnnotationDataEntity + public static AnnotationDataEntity MapAnnotationDataEntity(AnnotationBase annotationInfo, PageInfo pageInfo, string documentType) + { + string annotationTypeName = Enum.GetName(typeof(AnnotationType), annotationInfo.Type); + float maxY = 0, minY = 0, maxX = 0, minX = 0; + float boxX = 0, boxY = 0, boxHeight = 0, boxWidth = 0; + string svgPath = ""; + + if (annotationInfo is IPoints) + { + List points = ((IPoints)annotationInfo).Points; + maxY = points.Max(p => p.Y); + minY = points.Min(p => p.Y); + maxX = points.Max(p => p.X); + minX = points.Min(p => p.X); + } + + if (annotationInfo is IBox) + { + Rectangle box = ((IBox)annotationInfo).Box; + boxX = box.X; + boxY = box.Y; + boxHeight = box.Height; + boxWidth = box.Width; + + StringBuilder builder = new StringBuilder(). + Append("M").Append(box.X.ToString(CultureInfo.InvariantCulture)). + Append(",").Append(box.Y.ToString(CultureInfo.InvariantCulture)). + Append("L").Append(box.Width.ToString(CultureInfo.InvariantCulture)). + Append(",").Append(box.Height.ToString(CultureInfo.InvariantCulture)); + + svgPath = builder.ToString(); + } + + AnnotationDataEntity annotation = new AnnotationDataEntity(); + annotation.font = annotationInfo is IFontFamily ? ((IFontFamily)annotationInfo).FontFamily : ""; + double fontSize = annotationInfo is IFontSize ? Convert.ToDouble((((IFontSize)annotationInfo).FontSize == null) ? 0 : ((IFontSize)annotationInfo).FontSize) : (annotationInfo is ITextToReplace ? 10 : 0); + annotation.fontSize = (float)fontSize; + annotation.fontColor = annotationInfo is IFontColor ? ((((IFontColor)annotationInfo).FontColor == null) ? 0 : (int)((IFontColor)annotationInfo).FontColor) : 0; + annotation.height = annotationInfo is IBox ? boxHeight : (annotationInfo is IPoints ? (maxY - minY) : 0); + annotation.left = annotationInfo is IBox ? boxX : (annotationInfo is IPoints ? minX : 0); + annotation.pageNumber = (int)annotationInfo.PageNumber + 1; + annotation.svgPath = annotationInfo is ISvgPath ? (((ISvgPath)annotationInfo).SvgPath?.Replace("l", "L")) : svgPath; + string text = annotationInfo is IText ? ((IText)annotationInfo).Text : (annotationInfo is ITextToReplace ? ((ITextToReplace)annotationInfo).TextToReplace : ""); + annotation.text = text; + // TODO: remove comment after check all annotations types on main formats + annotation.top = annotationInfo is IBox ? boxY : (annotationInfo is IPoints ? (!documentType.Equals("image") ? pageInfo.Height - maxY : minY) : 0); + annotation.type = char.ToLowerInvariant(annotationTypeName[0]) + annotationTypeName.Substring(1); + annotation.width = annotationInfo is IBox ? boxWidth : (annotationInfo is IPoints ? (maxX - minX) : 0); + // each reply data + Reply[] replies = annotationInfo.Replies.ToArray(); + if (replies != null && replies.Length > 0) + { + CommentsEntity[] comments = new CommentsEntity[replies.Length]; + for (int m = 0; m < replies.Length; m++) + { + CommentsEntity comment = new CommentsEntity(); + Reply reply = replies[m]; + comment.text = reply.Comment; + comment.time = reply.RepliedOn.ToString("yyyy-MM-dd HH:mm:ss"); + comment.userName = reply.User.Name; + comments[m] = comment; + } + annotation.comments = comments; + } + return annotation; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Util/Directory/DirectoryUtils.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Util/Directory/DirectoryUtils.cs new file mode 100644 index 0000000..3dc8f2d --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Util/Directory/DirectoryUtils.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Config; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Util.Directory +{ + public class DirectoryUtils + { + public FilesDirectoryUtils FilesDirectory { get; set; } + + /// + /// Constructor + /// + /// AnnotationConfiguration + public DirectoryUtils(AnnotationConfiguration annotationConfiguration) + { + FilesDirectory = new FilesDirectoryUtils(annotationConfiguration); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Util/Directory/FilesDirectoryUtils.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Util/Directory/FilesDirectoryUtils.cs new file mode 100644 index 0000000..7308348 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Util/Directory/FilesDirectoryUtils.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Config; +using GroupDocs.Annotation.AspNetWebForms.Products.Common.Util.Directory; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Util.Directory +{ + public class FilesDirectoryUtils : IDirectoryUtils + { + + private readonly AnnotationConfiguration AnnotationConfiguration; + + /// + /// Constructor + /// + /// SignatureConfiguration + public FilesDirectoryUtils(AnnotationConfiguration annotationConfiguration) + { + AnnotationConfiguration = annotationConfiguration; + } + + /// + /// Get path + /// + /// string + public string GetPath() + { + return AnnotationConfiguration.GetFilesDirectory(); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Annotation/Util/SupportedAnnotations.cs b/Demos/ASP.NET Web Forms/src/Products/Annotation/Util/SupportedAnnotations.cs new file mode 100644 index 0000000..c787942 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Annotation/Util/SupportedAnnotations.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Entity; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Util +{ + public class SupportedAnnotations + { + public string[] GetSupportedAnnotations(string documentType) + { + Annotations annotations = new Annotations(); + switch (documentType) + { + case "Portable Document Format": + case "PDF": + return annotations.Pdf; + case "Microsoft Word": + case "WORDS": + return annotations.Word; + case "Microsoft PowerPoint": + case "SLIDES": + return annotations.Slides; + case "image": + return annotations.Image; + case "Microsoft Excel": + case "CELLS": + return annotations.Cells; + case "AutoCAD Drawing File Format": + case "diagram": + return annotations.Diagram; + default: + return annotations.Pdf; + } + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Common/Config/ApplicationConfiguration.cs b/Demos/ASP.NET Web Forms/src/Products/Common/Config/ApplicationConfiguration.cs new file mode 100644 index 0000000..bb29b38 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Common/Config/ApplicationConfiguration.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetWebForms.Products.Common.Util.Parser; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Common.Config +{ + public class ApplicationConfiguration + { + /// + /// Get license path from the application configuration section of the web.config + /// + public ApplicationConfiguration() + { + YamlParser parser = new YamlParser(); + dynamic configuration = parser.GetConfiguration("application"); + ConfigurationValuesGetter valuesGetter = new ConfigurationValuesGetter(configuration); + string license = valuesGetter.GetStringPropertyValue("licensePath"); + if (String.IsNullOrEmpty(license)) + { + string[] files = System.IO.Directory.GetFiles(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, LicensePath), "*.lic"); + LicensePath = Path.Combine(LicensePath, files[0]); + } + else + { + if (!IsFullPath(license)) + { + license = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, license); + if (!Directory.Exists(Path.GetDirectoryName(license))) + { + Directory.CreateDirectory(Path.GetDirectoryName(license)); + } + } + LicensePath = license; + if (!File.Exists(LicensePath)) + { + Debug.WriteLine("License file path is incorrect, launched in trial mode"); + LicensePath = ""; + } + } + } + + public string LicensePath { get; set; } = "Licenses"; + + private static bool IsFullPath(string path) + { + return !String.IsNullOrWhiteSpace(path) + && path.IndexOfAny(Path.GetInvalidPathChars().ToArray()) == -1 + && Path.IsPathRooted(path) + && !Path.GetPathRoot(path).Equals(Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Common/Config/CommonConfiguration.cs b/Demos/ASP.NET Web Forms/src/Products/Common/Config/CommonConfiguration.cs new file mode 100644 index 0000000..084dc6a --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Common/Config/CommonConfiguration.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.Configuration; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetWebForms.Products.Common.Util.Parser; +using Newtonsoft.Json; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Common.Config +{ + public class CommonConfiguration : ConfigurationSection + { + [JsonProperty] + public bool pageSelector { get; set; } + + [JsonProperty] + public bool download { get; set; } + + [JsonProperty] + public bool upload { get; set; } + + [JsonProperty] + public bool print { get; set; } + + [JsonProperty] + public bool browse { get; set; } + + [JsonProperty] + public bool rewrite { get; set; } + + public bool enableRightClick { get; set; } + + private readonly NameValueCollection commonConfiguration = (NameValueCollection)ConfigurationManager.GetSection("commonConfiguration"); + + /// + /// Constructor + /// + public CommonConfiguration() + { + YamlParser parser = new YamlParser(); + dynamic configuration = parser.GetConfiguration("common"); + ConfigurationValuesGetter valuesGetter = new ConfigurationValuesGetter(configuration); + pageSelector = valuesGetter.GetBooleanPropertyValue("pageSelector", Convert.ToBoolean(commonConfiguration["isPageSelector"])); + download = valuesGetter.GetBooleanPropertyValue("download", Convert.ToBoolean(commonConfiguration["isDownload"])); + upload = valuesGetter.GetBooleanPropertyValue("upload", Convert.ToBoolean(commonConfiguration["isUpload"])); + print = valuesGetter.GetBooleanPropertyValue("print", Convert.ToBoolean(commonConfiguration["isPrint"])); + browse = valuesGetter.GetBooleanPropertyValue("browse", Convert.ToBoolean(commonConfiguration["isBrowse"])); + rewrite = valuesGetter.GetBooleanPropertyValue("rewrite", Convert.ToBoolean(commonConfiguration["isRewrite"])); + enableRightClick = valuesGetter.GetBooleanPropertyValue("enableRightClick", Convert.ToBoolean(commonConfiguration["enableRightClick"])); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Common/Config/ConfigurationValuesGetter.cs b/Demos/ASP.NET Web Forms/src/Products/Common/Config/ConfigurationValuesGetter.cs new file mode 100644 index 0000000..d456a23 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Common/Config/ConfigurationValuesGetter.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Common.Config +{ + public class ConfigurationValuesGetter + { + private readonly dynamic Configuration; + + public ConfigurationValuesGetter(dynamic configuration) + { + Configuration = configuration; + } + + public string GetStringPropertyValue(string propertyName) + { + return (Configuration != null && Configuration[propertyName] != null && !String.IsNullOrEmpty(Configuration[propertyName].ToString())) ? + Configuration[propertyName].ToString() : + null; + } + + public string GetStringPropertyValue(string propertyName, string defaultValue) + { + return (Configuration != null && Configuration[propertyName] != null && !String.IsNullOrEmpty(Configuration[propertyName].ToString())) ? + Configuration[propertyName].ToString() : + defaultValue; + } + + public int GetIntegerPropertyValue(string propertyName, int defaultValue) + { + int value; + value = (Configuration != null && Configuration[propertyName] != null && !String.IsNullOrEmpty(Configuration[propertyName].ToString())) ? + Convert.ToInt32(Configuration[propertyName]) : + defaultValue; + return value; + } + + public int GetIntegerPropertyValue(string propertyName, int defaultValue, string innerPropertyName) + { + int value; + if (!String.IsNullOrEmpty(innerPropertyName)) + { + value = (Configuration != null && Configuration[propertyName] != null && !String.IsNullOrEmpty(Configuration[propertyName][innerPropertyName].ToString())) ? + Convert.ToInt32(Configuration[propertyName][innerPropertyName]) : + defaultValue; + } + else + { + value = (Configuration != null && Configuration[propertyName] != null && !String.IsNullOrEmpty(Configuration[propertyName].ToString())) ? + Convert.ToInt32(Configuration[propertyName]) : + defaultValue; + } + return value; + } + + public bool GetBooleanPropertyValue(string propertyName, bool defaultValue) + { + return (Configuration != null && Configuration[propertyName] != null && !String.IsNullOrEmpty(Configuration[propertyName].ToString())) ? Convert.ToBoolean(Configuration[propertyName]) : defaultValue; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Common/Config/GlobalConfiguration.cs b/Demos/ASP.NET Web Forms/src/Products/Common/Config/GlobalConfiguration.cs new file mode 100644 index 0000000..44f7d0a --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Common/Config/GlobalConfiguration.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetWebForms.Products.Annotation.Config; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Common.Config +{ + public class GlobalConfiguration + { + public ServerConfiguration Server { get; set; } + public ApplicationConfiguration Application { get; set; } + public CommonConfiguration Common { get; set; } + public AnnotationConfiguration Annotation { get; set; } + + /// + /// Get all configurations + /// + public GlobalConfiguration() + { + Server = new ServerConfiguration(); + Application = new ApplicationConfiguration(); + Common = new CommonConfiguration(); + Annotation = new AnnotationConfiguration(); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Common/Config/ServerConfiguration.cs b/Demos/ASP.NET Web Forms/src/Products/Common/Config/ServerConfiguration.cs new file mode 100644 index 0000000..bf33edc --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Common/Config/ServerConfiguration.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.Configuration; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetWebForms.Products.Common.Util.Parser; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Common.Config +{ + public class ServerConfiguration : ConfigurationSection + { + private readonly NameValueCollection serverConfiguration = (NameValueCollection)ConfigurationManager.GetSection("serverConfiguration"); + + public int HttpPort { get; set; } = 8080; + public string HostAddress { get; set; } = "localhost"; + + /// + /// Get server configuration section of the web.config + /// + public ServerConfiguration() + { + YamlParser parser = new YamlParser(); + dynamic configuration = parser.GetConfiguration("server"); + ConfigurationValuesGetter valuesGetter = new ConfigurationValuesGetter(configuration); + int defaultPort = Convert.ToInt32(serverConfiguration["httpPort"]); + HttpPort = valuesGetter.GetIntegerPropertyValue("connector", defaultPort, "port"); + HostAddress = valuesGetter.GetStringPropertyValue("hostAddress", HostAddress); + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/ExceptionEntity.cs b/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/ExceptionEntity.cs new file mode 100644 index 0000000..5fc0de7 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/ExceptionEntity.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Common.Entity.Web +{ + public class ExceptionEntity + { + public string message { get; set; } + public System.Exception exception { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/FileDescriptionEntity.cs b/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/FileDescriptionEntity.cs new file mode 100644 index 0000000..88a32b6 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/FileDescriptionEntity.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Common.Entity.Web +{ + public class FileDescriptionEntity + { + public string guid { get; set; } + public string name { get; set; } + public string docType { get; set; } + public bool isDirectory { get; set; } + public long size { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/LoadDocumentEntity.cs b/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/LoadDocumentEntity.cs new file mode 100644 index 0000000..42b2a3c --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/LoadDocumentEntity.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using Newtonsoft.Json; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Common.Entity.Web +{ + public class LoadDocumentEntity + { + ///Document Guid + [JsonProperty] + private string guid; + + ///list of pages + [JsonProperty] + private List pages = new List(); + + public void SetGuid(string guid) + { + this.guid = guid; + } + + public string GetGuid() + { + return guid; + } + + public void SetPages(PageDescriptionEntity page) + { + this.pages.Add(page); + } + + public List GetPages() + { + return pages; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/PageDescriptionEntity.cs b/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/PageDescriptionEntity.cs new file mode 100644 index 0000000..25da3d1 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/PageDescriptionEntity.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using Newtonsoft.Json; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Common.Entity.Web +{ + public class PageDescriptionEntity + { + public double width { get; set; } + public double height { get; set; } + public int number { get; set; } + public int angle { get; set; } + + [JsonProperty] + private string data; + + public void SetData(string data) + { + this.data = data; + } + + public string GetData() + { + return data; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/PostedDataEntity.cs b/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/PostedDataEntity.cs new file mode 100644 index 0000000..081a925 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/PostedDataEntity.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Common.Entity.Web +{ + public class PostedDataEntity + { + public string path { get; set; } + public string guid { get; set; } + public string password { get; set; } + public string url { get; set; } + public int page { get; set; } + public int angle { get; set; } + public List pages { get; set; } + public bool rewrite { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/UploadedDocumentEntity.cs b/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/UploadedDocumentEntity.cs new file mode 100644 index 0000000..82d6cbd --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Common/Entity/Web/UploadedDocumentEntity.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Common.Entity.Web +{ + public class UploadedDocumentEntity + { + public string guid { get; set; } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Common/Resources/Resources.cs b/Demos/ASP.NET Web Forms/src/Products/Common/Resources/Resources.cs new file mode 100644 index 0000000..9e9cdc1 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Common/Resources/Resources.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Web; +using GroupDocs.Annotation.AspNetWebForms.Products.Common.Entity.Web; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Common.Resources +{ + public class Resources + { + /// + /// Get free file name for uploaded file if such file already exists + /// + /// Directory where to search files + /// Uploaded file name + /// + public static string GetFreeFileName(string directory, string fileName) + { + string resultFileName = ""; + try + { + // get all files from the directory + string[] listOfFiles = Directory.GetFiles(directory); + for (int i = 0; i < listOfFiles.Length; i++) + { + // check if file with current name already exists + int number = i + 1; + string newFileName = Path.GetFileNameWithoutExtension(fileName) + "-Copy(" + number + ")." + Path.GetExtension(fileName); + resultFileName = Path.Combine(directory, newFileName); + if (File.Exists(resultFileName)) + { + continue; + } + else + { + break; + } + } + } + catch (System.Exception e) + { + throw e; + } + return resultFileName; + } + + /// + /// Generate exception + /// + /// Exception + /// ExceptionEntity + public ExceptionEntity GenerateException(System.Exception ex) + { + // Initiate Exception entity + ExceptionEntity exceptionEntity = new ExceptionEntity(); + // set exception data + exceptionEntity.message = ex.Message; + exceptionEntity.exception = ex; + return exceptionEntity; + } + + /// + /// Generate exception for password error + /// + /// Exception + /// string + /// ExceptionEntity + public ExceptionEntity GenerateException(System.Exception ex, String password) + { + // Initiate exception + ExceptionEntity exceptionEntity = new ExceptionEntity(); + // Check if exception message contains password and password is empty + if (ex.Message.Contains("password") && String.IsNullOrEmpty(password)) + { + exceptionEntity.message = "Password Required"; + } + // Check if exception contains password and password is set + else if (ex.Message.Contains("password") && !String.IsNullOrEmpty(password)) + { + exceptionEntity.message = "Incorrect password"; + } + else + { + exceptionEntity.message = ex.Message; + exceptionEntity.exception = ex; + } + return exceptionEntity; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Common/Util/Comparator/FileNameComparator.cs b/Demos/ASP.NET Web Forms/src/Products/Common/Util/Comparator/FileNameComparator.cs new file mode 100644 index 0000000..2723467 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Common/Util/Comparator/FileNameComparator.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Common.Util.Comparator +{ + public class FileNameComparator : IComparer + { + /// + /// Compare file names + /// + /// string + /// string + /// + public int Compare(string x, string y) + { + string strExt1 = Path.GetFileName(x); + string strExt2 = Path.GetFileName(y); + + if (string.Equals(strExt1, strExt2, StringComparison.Ordinal)) + { + return string.Compare(x, y, false, CultureInfo.InvariantCulture); + } + else + { + return string.Compare(strExt1, strExt2, false, CultureInfo.InvariantCulture); + } + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Common/Util/Comparator/FileTypeComparator.cs b/Demos/ASP.NET Web Forms/src/Products/Common/Util/Comparator/FileTypeComparator.cs new file mode 100644 index 0000000..5c083ac --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Common/Util/Comparator/FileTypeComparator.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Common.Util.Comparator +{ + public class FileTypeComparator : IComparer + { + /// + /// Compare file types + /// + /// string + /// string + /// + public int Compare(string x, string y) + { + string strExt1 = Path.GetExtension(x); + string strExt2 = Path.GetExtension(y); + + if (string.Equals(strExt1, strExt2, StringComparison.Ordinal)) + { + return string.Compare(x, y, false, CultureInfo.InvariantCulture); + } + else + { + return string.Compare(strExt1, strExt2, false, CultureInfo.InvariantCulture); + } + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Common/Util/Directory/IDirectoryUtils.cs b/Demos/ASP.NET Web Forms/src/Products/Common/Util/Directory/IDirectoryUtils.cs new file mode 100644 index 0000000..ded73eb --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Common/Util/Directory/IDirectoryUtils.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Common.Util.Directory +{ + public interface IDirectoryUtils + { + string GetPath(); + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Products/Common/Util/Parser/YamlParser.cs b/Demos/ASP.NET Web Forms/src/Products/Common/Util/Parser/YamlParser.cs new file mode 100644 index 0000000..ca4b94a --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Products/Common/Util/Parser/YamlParser.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Web; +using Newtonsoft.Json; +using YamlDotNet.Serialization; + +namespace GroupDocs.Annotation.AspNetWebForms.Products.Common.Util.Parser +{ + public class YamlParser + { + private static string YamlPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "configuration.yml"); + private readonly dynamic ConfiguationData; + + public YamlParser() + { + if (File.Exists(YamlPath)) + { + using (var reader = new StringReader(File.ReadAllText(YamlPath))) + { + var deserializer = new DeserializerBuilder().Build(); + var yamlObject = deserializer.Deserialize(reader); + + var serializer = new SerializerBuilder() + .JsonCompatible() + .Build(); + + ConfiguationData = serializer.Serialize(yamlObject); + } + } + } + + public dynamic GetConfiguration(string configurationSectionName) + { + dynamic productConfiguration = null; + if (ConfiguationData != null) + { + productConfiguration = JsonConvert.DeserializeObject(ConfiguationData)[configurationSectionName]; + } + return productConfiguration; + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Properties/AssemblyInfo.cs b/Demos/ASP.NET Web Forms/src/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..d813595 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Управление общими сведениями о сборке осуществляется с помощью +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанных с этой сборкой. +[assembly: AssemblyTitle("GroupDocs.Annotation.AspNetWebForms")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("GroupDocs.Annotation.AspNetWebForms")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения false в параметре ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если требуется обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение true для требуемого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов typelib, если этот проект видим для COM +[assembly: Guid("9fe0932d-04ec-4f5a-be47-461762489c50")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// основной номер версии; +// дополнительный номер версии; +// номер сборки; +// редакция. +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию, +// используя "*", как показано ниже: +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Demos/ASP.NET Web Forms/src/Startup.cs b/Demos/ASP.NET Web Forms/src/Startup.cs new file mode 100644 index 0000000..54fba28 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Startup.cs @@ -0,0 +1,11 @@ + +namespace GroupDocs.Annotation.AspNetWebForms +{ + public partial class Startup + { + public void Configuration() + { + + } + } +} \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Web.Debug.config b/Demos/ASP.NET Web Forms/src/Web.Debug.config new file mode 100644 index 0000000..246977a --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Web.Debug.config @@ -0,0 +1,31 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Web.Release.config b/Demos/ASP.NET Web Forms/src/Web.Release.config new file mode 100644 index 0000000..3a1668e --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Web.Release.config @@ -0,0 +1,32 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/Web.config b/Demos/ASP.NET Web Forms/src/Web.config new file mode 100644 index 0000000..075e94a --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/Web.config @@ -0,0 +1,136 @@ + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/client/.editorconfig b/Demos/ASP.NET Web Forms/src/client/.editorconfig new file mode 100644 index 0000000..6e87a00 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/Demos/ASP.NET Web Forms/src/client/.gitignore b/Demos/ASP.NET Web Forms/src/client/.gitignore new file mode 100644 index 0000000..ee5c9d8 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/.gitignore @@ -0,0 +1,39 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db diff --git a/Demos/ASP.NET Web Forms/src/client/.prettierignore b/Demos/ASP.NET Web Forms/src/client/.prettierignore new file mode 100644 index 0000000..931aad9 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/.prettierignore @@ -0,0 +1 @@ +# Add files here to ignore them from prettier formatting diff --git a/Demos/ASP.NET Web Forms/src/client/.prettierrc b/Demos/ASP.NET Web Forms/src/client/.prettierrc new file mode 100644 index 0000000..544138b --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/.prettierrc @@ -0,0 +1,3 @@ +{ + "singleQuote": true +} diff --git a/Demos/ASP.NET Web Forms/src/client/README.md b/Demos/ASP.NET Web Forms/src/client/README.md new file mode 100644 index 0000000..b148586 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/README.md @@ -0,0 +1,84 @@ +# Client + +This project was generated using [Nx](https://nx.dev). + +

+ +🔎 **Nx is a set of Angular CLI power-ups for modern development.** + +## Quick Start & Documentation + +[Nx Documentation](https://nx.dev) + +[30-minute video showing all Nx features](https://nx.dev/getting-started/what-is-nx) + +[Interactive Tutorial](https://nx.dev/tutorial/01-create-application) + +## Adding capabilities to your workspace + +Nx supports many plugins which add capabilities for developing different types of applications and different tools. + +These capabilities include generating applications, libraries, .etc as well as the devtools to test, and build projects as well. + +Below are some plugins which you can add to your workspace: + +- [Angular](https://angular.io) + - `ng add @nrwl/angular` +- [React](https://reactjs.org) + - `ng add @nrwl/react` +- Web (no framework frontends) + - `ng add @nrwl/web` +- [Nest](https://nestjs.com) + - `ng add @nrwl/nest` +- [Express](https://expressjs.com) + - `ng add @nrwl/express` +- [Node](https://nodejs.org) + - `ng add @nrwl/node` + +## Generate an application + +Run `ng g @nrwl/angular:app my-app` to generate an application. + +> You can use any of the plugins above to generate applications as well. + +When using Nx, you can create multiple applications and libraries in the same workspace. + +## Generate a library + +Run `ng g @nrwl/angular:lib my-lib` to generate a library. + +> You can also use any of the plugins above to generate libraries as well. + +Libraries are sharable across libraries and applications. They can be imported from `@client/mylib`. + +## Development server + +Run `ng serve my-app` for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng g component my-component --project=my-app` to generate a new component. + +## Build + +Run `ng build my-app` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. + +## Running unit tests + +Run `ng test my-app` to execute the unit tests via [Jest](https://jestjs.io). + +Run `npm run affected:test` to execute the unit tests affected by a change. + +## Running end-to-end tests + +Run `ng e2e my-app` to execute the end-to-end tests via [Cypress](https://www.cypress.io). + +Run `npm run affected:e2e` to execute the end-to-end tests affected by a change. + +## Understand your workspace + +Run `npm run dep-graph` to see a diagram of the dependencies of your projects. + +## Further help + +Visit the [Nx Documentation](https://nx.dev) to learn more. diff --git a/Demos/ASP.NET Web Forms/src/client/angular.json b/Demos/ASP.NET Web Forms/src/client/angular.json new file mode 100644 index 0000000..d06e603 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/angular.json @@ -0,0 +1,138 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "", + "projects": { + "annotation": { + "projectType": "application", + "schematics": { + "@nrwl/workspace:component": { + "style": "less" + } + }, + "root": "apps/annotation", + "sourceRoot": "apps/annotation/src", + "prefix": "client", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "/dist", + "index": "apps/annotation/src/index.html", + "main": "apps/annotation/src/main.ts", + "polyfills": "apps/annotation/src/polyfills.ts", + "tsConfig": "apps/annotation/tsconfig.app.json", + "assets": ["apps/annotation/src/favicon.ico", "apps/annotation/src/assets"], + "styles": ["apps/annotation/src/styles.less"], + "scripts": [] + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "apps/annotation/src/environments/environment.ts", + "with": "apps/annotation/src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "annotation:build" + }, + "configurations": { + "production": { + "browserTarget": "annotation:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "annotation:build" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "apps/annotation/tsconfig.app.json", + "apps/annotation/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**", "!apps/annotation/**"] + } + }, + "test": { + "builder": "@nrwl/jest:jest", + "options": { + "jestConfig": "apps/annotation/jest.config.js", + "tsConfig": "apps/annotation/tsconfig.spec.json", + "setupFile": "apps/annotation/src/test-setup.ts" + } + } + } + }, + "annotation-e2e": { + "root": "apps/annotation-e2e", + "sourceRoot": "apps/annotation-e2e/src", + "projectType": "application", + "architect": { + "e2e": { + "builder": "@nrwl/cypress:cypress", + "options": { + "cypressConfig": "apps/annotation-e2e/cypress.json", + "tsConfig": "apps/annotation-e2e/tsconfig.e2e.json", + "devServerTarget": "annotation:serve" + }, + "configurations": { + "production": { + "devServerTarget": "annotation:serve:production" + } + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": "apps/annotation-e2e/tsconfig.e2e.json", + "exclude": ["**/node_modules/**", "!apps/annotation-e2e/**"] + } + } + } + } + }, + "cli": { + "warnings": { + "typescriptMismatch": false, + "versionMismatch": false + }, + "defaultCollection": "@nrwl/angular" + }, + "schematics": { + "@nrwl/angular:application": { + "unitTestRunner": "jest", + "e2eTestRunner": "cypress" + }, + "@nrwl/angular:library": { + "unitTestRunner": "jest" + } + }, + "defaultProject": "annotation" +} diff --git a/Demos/ASP.NET Web Forms/src/client/apps/.gitkeep b/Demos/ASP.NET Web Forms/src/client/apps/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/.gitkeep @@ -0,0 +1 @@ + diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/cypress.json b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/cypress.json new file mode 100644 index 0000000..ac3c7f0 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/cypress.json @@ -0,0 +1,11 @@ +{ + "fileServerFolder": ".", + "fixturesFolder": "./src/fixtures", + "integrationFolder": "./src/integration", + "pluginsFile": "./src/plugins/index", + "supportFile": false, + "video": true, + "videosFolder": "../../dist/cypress/apps/annotation-e2e/videos", + "screenshotsFolder": "../../dist/cypress/apps/annotation-e2e/screenshots", + "chromeWebSecurity": false +} diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/fixtures/example.json b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/fixtures/example.json new file mode 100644 index 0000000..294cbed --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/fixtures/example.json @@ -0,0 +1,4 @@ +{ + "name": "Using fixtures to represent data", + "email": "hello@cypress.io" +} diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/integration/app.spec.ts b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/integration/app.spec.ts new file mode 100644 index 0000000..a7c10d3 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/integration/app.spec.ts @@ -0,0 +1,9 @@ +import { getGreeting } from '../support/app.po'; + +describe('annotation', () => { + beforeEach(() => cy.visit('/')); + + it('should display welcome message', () => { + getGreeting().contains('Welcome to annotation!'); + }); +}); diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/plugins/index.js b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/plugins/index.js new file mode 100644 index 0000000..bc34d63 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/plugins/index.js @@ -0,0 +1,22 @@ +// *********************************************************** +// This example plugins/index.js can be used to load plugins +// +// You can change the location of this file or turn off loading +// the plugins file with the 'pluginsFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/plugins-guide +// *********************************************************** + +// This function is called when a project is opened or re-opened (e.g. due to +// the project's config changing) + +const { preprocessTypescript } = require('@nrwl/cypress/plugins/preprocessor'); + +module.exports = (on, config) => { + // `on` is used to hook into various events Cypress emits + // `config` is the resolved Cypress config + + // Preprocess Typescript + on('file:preprocessor', preprocessTypescript(config)); +}; diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/support/app.po.ts b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/support/app.po.ts new file mode 100644 index 0000000..3293424 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/support/app.po.ts @@ -0,0 +1 @@ +export const getGreeting = () => cy.get('h1'); diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/support/commands.ts b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/support/commands.ts new file mode 100644 index 0000000..ca4d256 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/support/commands.ts @@ -0,0 +1,25 @@ +// *********************************************** +// This example commands.js shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add("login", (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/support/index.ts b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/support/index.ts new file mode 100644 index 0000000..3d469a6 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/src/support/index.ts @@ -0,0 +1,17 @@ +// *********************************************************** +// This example support/index.js is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands'; diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/tsconfig.e2e.json b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/tsconfig.e2e.json new file mode 100644 index 0000000..629b4c1 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/tsconfig.e2e.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "sourceMap": false, + "outDir": "../../dist/out-tsc" + }, + "include": ["src/**/*.ts"] +} diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/tsconfig.json b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/tsconfig.json new file mode 100644 index 0000000..ee6531b --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation-e2e/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "types": ["cypress", "node"] + }, + "include": ["**/*.ts"] +} diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/browserslist b/Demos/ASP.NET Web Forms/src/client/apps/annotation/browserslist new file mode 100644 index 0000000..8084853 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/browserslist @@ -0,0 +1,12 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 # For IE 9-11 support, remove 'not'. \ No newline at end of file diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/jest.config.js b/Demos/ASP.NET Web Forms/src/client/apps/annotation/jest.config.js new file mode 100644 index 0000000..132c868 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + name: 'annotation', + preset: '../../jest.config.js', + coverageDirectory: '../../coverage/apps/annotation', + snapshotSerializers: [ + 'jest-preset-angular/AngularSnapshotSerializer.js', + 'jest-preset-angular/HTMLCommentSerializer.js' + ] +}; diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/app/app.component.html b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/app/app.component.html new file mode 100644 index 0000000..557d7ad --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/app/app.component.html @@ -0,0 +1 @@ + diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/app/app.component.less b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/app/app.component.less new file mode 100644 index 0000000..e69de29 diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/app/app.component.spec.ts b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/app/app.component.spec.ts new file mode 100644 index 0000000..7a6ee87 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/app/app.component.spec.ts @@ -0,0 +1,31 @@ +import { TestBed, async } from '@angular/core/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AppComponent] + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'annotation'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('annotation'); + }); + + it('should render title in a h1 tag', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain( + 'Welcome to annotation!' + ); + }); +}); diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/app/app.component.ts b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/app/app.component.ts new file mode 100644 index 0000000..e6fb213 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/app/app.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'client-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.less'] +}) +export class AppComponent { + title = 'annotation'; +} diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/app/app.module.ts b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/app/app.module.ts new file mode 100644 index 0000000..7ef2706 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/app/app.module.ts @@ -0,0 +1,14 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; + +import { AppComponent } from './app.component'; +import { AnnotationModule } from "@groupdocs.examples.angular/annotation"; + +@NgModule({ + declarations: [AppComponent], + imports: [BrowserModule, + AnnotationModule], + providers: [], + bootstrap: [AppComponent] +}) +export class AppModule {} diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/assets/.gitkeep b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/environments/environment.prod.ts b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/environments/environment.prod.ts new file mode 100644 index 0000000..3612073 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/environments/environment.ts b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/environments/environment.ts new file mode 100644 index 0000000..7b4f817 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/environments/environment.ts @@ -0,0 +1,16 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false +}; + +/* + * For easier debugging in development mode, you can import the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This import should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/favicon.ico b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/favicon.ico new file mode 100644 index 0000000..8081c7c Binary files /dev/null and b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/favicon.ico differ diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/index.html b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/index.html new file mode 100644 index 0000000..c76c71b --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/index.html @@ -0,0 +1,14 @@ + + + + + Annotation + + + + + + + + + diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/main.ts b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/main.ts new file mode 100644 index 0000000..fa4e0ae --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/main.ts @@ -0,0 +1,13 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic() + .bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/polyfills.ts b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/polyfills.ts new file mode 100644 index 0000000..2f258e5 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/polyfills.ts @@ -0,0 +1,62 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags.ts'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/styles.less b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/styles.less new file mode 100644 index 0000000..90d4ee0 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/styles.less @@ -0,0 +1 @@ +/* You can add global styles to this file, and also import other style files */ diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/test-setup.ts b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/test-setup.ts new file mode 100644 index 0000000..8d88704 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/src/test-setup.ts @@ -0,0 +1 @@ +import 'jest-preset-angular'; diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/tsconfig.app.json b/Demos/ASP.NET Web Forms/src/client/apps/annotation/tsconfig.app.json new file mode 100644 index 0000000..827b630 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [] + }, + "include": ["**/*.ts"], + "exclude": ["src/test-setup.ts", "**/*.spec.ts"] +} diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/tsconfig.json b/Demos/ASP.NET Web Forms/src/client/apps/annotation/tsconfig.json new file mode 100644 index 0000000..e5decd5 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "types": ["node", "jest"] + }, + "include": ["**/*.ts"] +} diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/tsconfig.spec.json b/Demos/ASP.NET Web Forms/src/client/apps/annotation/tsconfig.spec.json new file mode 100644 index 0000000..cfff29a --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/tsconfig.spec.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": ["**/*.spec.ts", "**/*.d.ts"] +} diff --git a/Demos/ASP.NET Web Forms/src/client/apps/annotation/tslint.json b/Demos/ASP.NET Web Forms/src/client/apps/annotation/tslint.json new file mode 100644 index 0000000..df75834 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/apps/annotation/tslint.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [true, "attribute", "client", "camelCase"], + "component-selector": [true, "element", "client", "kebab-case"] + } +} diff --git a/Demos/ASP.NET Web Forms/src/client/jest.config.js b/Demos/ASP.NET Web Forms/src/client/jest.config.js new file mode 100644 index 0000000..caba6c4 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/jest.config.js @@ -0,0 +1,10 @@ +module.exports = { + testMatch: ['**/+(*.)+(spec|test).+(ts|js)?(x)'], + transform: { + '^.+\\.(ts|js|html)$': 'ts-jest' + }, + resolver: '@nrwl/jest/plugins/resolver', + moduleFileExtensions: ['ts', 'js', 'html'], + collectCoverage: true, + coverageReporters: ['html'] +}; diff --git a/Demos/ASP.NET Web Forms/src/client/libs/.gitkeep b/Demos/ASP.NET Web Forms/src/client/libs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Demos/ASP.NET Web Forms/src/client/nx.json b/Demos/ASP.NET Web Forms/src/client/nx.json new file mode 100644 index 0000000..1133639 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/nx.json @@ -0,0 +1,18 @@ +{ + "npmScope": "client", + "implicitDependencies": { + "angular.json": "*", + "package.json": "*", + "tsconfig.json": "*", + "tslint.json": "*", + "nx.json": "*" + }, + "projects": { + "annotation-e2e": { + "tags": [] + }, + "annotation": { + "tags": [] + } + } +} diff --git a/Demos/ASP.NET Web Forms/src/client/package-lock.json b/Demos/ASP.NET Web Forms/src/client/package-lock.json new file mode 100644 index 0000000..0077e04 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/package-lock.json @@ -0,0 +1,15757 @@ +{ + "name": "client", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@angular-devkit/architect": { + "version": "0.803.23", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.23.tgz", + "integrity": "sha512-BRDbnmdULrle2l7WFZHEW/OAwS8RRg08+jiNG3gEP0BxDN6QMNMKmWhxmX67pgq3e/xMvu2DH0z71mAPNtJDAw==", + "requires": { + "@angular-devkit/core": "8.3.23", + "rxjs": "6.4.0" + } + }, + "@angular-devkit/build-angular": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.800.6.tgz", + "integrity": "sha512-b6WPGN8PReRizeTe5sR3XS2sqTqfCeFIDXI4sPy3T3XdmO1dB/UP8trsHXifuNTNSVIID4X0hDwXuz36Lk+4Jw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.6", + "@angular-devkit/build-optimizer": "0.800.6", + "@angular-devkit/build-webpack": "0.800.6", + "@angular-devkit/core": "8.0.6", + "@ngtools/webpack": "8.0.6", + "ajv": "6.10.0", + "autoprefixer": "9.5.1", + "browserslist": "4.5.5", + "caniuse-lite": "1.0.30000974", + "circular-dependency-plugin": "5.0.2", + "clean-css": "4.2.1", + "copy-webpack-plugin": "5.0.2", + "core-js": "3.0.1", + "file-loader": "3.0.1", + "glob": "7.1.3", + "istanbul-instrumenter-loader": "3.0.1", + "karma-source-map-support": "1.4.0", + "less": "3.9.0", + "less-loader": "4.1.0", + "license-webpack-plugin": "2.1.1", + "loader-utils": "1.2.3", + "mini-css-extract-plugin": "0.6.0", + "minimatch": "3.0.4", + "open": "6.2.0", + "parse5": "4.0.0", + "postcss": "7.0.14", + "postcss-import": "12.0.1", + "postcss-loader": "3.0.0", + "raw-loader": "1.0.0", + "rxjs": "6.4.0", + "sass": "1.19.0", + "sass-loader": "7.1.0", + "semver": "6.0.0", + "source-map-loader": "0.2.4", + "source-map-support": "0.5.12", + "speed-measure-webpack-plugin": "1.3.1", + "stats-webpack-plugin": "0.7.0", + "style-loader": "0.23.1", + "stylus": "0.54.5", + "stylus-loader": "3.0.2", + "terser-webpack-plugin": "1.2.3", + "tree-kill": "1.2.1", + "webpack": "4.30.0", + "webpack-dev-middleware": "3.6.2", + "webpack-dev-server": "3.3.1", + "webpack-merge": "4.2.1", + "webpack-sources": "1.3.0", + "webpack-subresource-integrity": "1.1.0-rc.6", + "worker-plugin": "3.1.0" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.800.6.tgz", + "integrity": "sha512-946ceRci/1yx09g8iRvULLoVihcB2RW9nhpCCMum4L9wheip8t4FWso3pd3JtPQGJV9dmsnwPzR9s12bncmj3g==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "rxjs": "6.4.0" + } + }, + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "browserslist": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.5.tgz", + "integrity": "sha512-0QFO1r/2c792Ohkit5XI8Cm8pDtZxgNl2H6HU4mHrpYz7314pEYcsAVVatM0l/YmxPnEzh9VygXouj4gkFUTKA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000960", + "electron-to-chromium": "^1.3.124", + "node-releases": "^1.1.14" + } + }, + "caniuse-lite": { + "version": "1.0.30000974", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz", + "integrity": "sha512-xc3rkNS/Zc3CmpMKuczWEdY2sZgx09BkAxfvkxlAEBTqcMHeL8QnPqhKse+5sRTi3nrw2pJwToD2WvKn1Uhvww==", + "dev": true + }, + "core-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz", + "integrity": "sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "node-releases": { + "version": "1.1.77", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", + "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", + "dev": true + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + }, + "tree-kill": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", + "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", + "dev": true + } + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.800.6.tgz", + "integrity": "sha512-f8u9c5VA+bxbYREKX6EY8QsbIT8ziDRHlhJ1n6H2nUTaQi+THtbPfrDsf3S3aVACfkkY+LEGGl135XEPr5PoxA==", + "dev": true, + "requires": { + "loader-utils": "1.2.3", + "source-map": "0.5.6", + "typescript": "3.4.4", + "webpack-sources": "1.3.0" + }, + "dependencies": { + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", + "dev": true + }, + "typescript": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.4.tgz", + "integrity": "sha512-xt5RsIRCEaf6+j9AyOBgvVuAec0i92rgCaS3S+UVf5Z/vF2Hvtsw08wtUTJqp4djwznoAgjSxeCcU4r+CcDBJA==", + "dev": true + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.800.6.tgz", + "integrity": "sha512-FwNGa99dxL9dACv/eLTP6u50tlPLG01yqp/JFAgxS0OmDkEMjSBLNgS8b8qhTo8XMhMsMWzb8yIUwV1PcSj6qg==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.6", + "@angular-devkit/core": "8.0.6", + "rxjs": "6.4.0", + "webpack-merge": "4.2.1" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.800.6.tgz", + "integrity": "sha512-946ceRci/1yx09g8iRvULLoVihcB2RW9nhpCCMum4L9wheip8t4FWso3pd3JtPQGJV9dmsnwPzR9s12bncmj3g==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "rxjs": "6.4.0" + } + }, + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + } + } + }, + "@angular-devkit/core": { + "version": "8.3.23", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.23.tgz", + "integrity": "sha512-y++LN6R/fu+obPUKEMDSKZ5FzeWN5rV0Z8vrdC+uF02VJLv/5QI/dUx3ROKFzJO3m2LU6EAuo5b/TLAPq4ving==", + "requires": { + "ajv": "6.10.2", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.3", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "8.3.23", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.3.23.tgz", + "integrity": "sha512-O8i/vn6YfqbT0q7o4jsVOTnWE07T1tcvk2zJ4O/1ete2z+Z2aw1YtIddwXEGJNCDpeE0B7f2sUHoLOS4Jc4O9w==", + "requires": { + "@angular-devkit/core": "8.3.23", + "rxjs": "6.4.0" + } + }, + "@angular/animations": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-8.2.14.tgz", + "integrity": "sha512-3Vc9TnNpKdtvKIXcWDFINSsnwgEMiDmLzjceWg1iYKwpeZGQahUXPoesLwQazBMmxJzQiA4HOMj0TTXKZ+Jzkg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/cli": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-8.0.0.tgz", + "integrity": "sha512-F7zdAazejA94WKXULLWs0cj76/LkGx2Jb+yGE7QWx3jkp5j18KI3jTU+h9UOtxk0zgV4oSy9AQpJQVZFPZPQFA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.0", + "@angular-devkit/core": "8.0.0", + "@angular-devkit/schematics": "8.0.0", + "@schematics/angular": "8.0.0", + "@schematics/update": "0.800.0", + "@yarnpkg/lockfile": "1.1.0", + "debug": "^4.1.1", + "ini": "1.3.5", + "inquirer": "6.3.1", + "npm-package-arg": "6.1.0", + "open": "6.2.0", + "pacote": "9.5.0", + "read-package-tree": "5.2.2", + "semver": "6.0.0", + "symbol-observable": "1.2.0", + "universal-analytics": "^0.4.20", + "uuid": "^3.3.2" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.800.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.800.0.tgz", + "integrity": "sha512-haXTS9EDaJfKyYiFylK2hObJH5DVGhX3OEn3OC7XUVlfKV3GRmC6NKXPjnxcN0wWP5zIV1c4xuB2N64mcxSnaA==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.0", + "rxjs": "6.4.0" + } + }, + "@angular-devkit/core": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.0.tgz", + "integrity": "sha512-wYf4zzpYj5Y673DG8iteK0GsDDuXBKN/TOXm4lUwmXcz8QHTD+BfR6qA5TBDqlMGpU7CP1/0vgbv2px17CDETQ==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.0.0.tgz", + "integrity": "sha512-IXJOs/DkDqNbfG76sNNY5ePZ37rjkMUopmtvhN6/U1hQFwTpGa9N0bCHFphcKraXeS6Jfox5XwFEStc/1xyhfw==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.0", + "rxjs": "6.4.0" + } + }, + "@schematics/angular": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.0.0.tgz", + "integrity": "sha512-c/cFpe+u7Xh4xX3/kn9BSRY4YhdO0OsDbRK0pGLDJFFs5JGvwoURtNXn4/4dVlsj3PWyNhxK0Ljl3dyw3NQBHA==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.0", + "@angular-devkit/schematics": "8.0.0" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } + } + }, + "@angular/common": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-8.2.14.tgz", + "integrity": "sha512-Qmt+aX2quUW54kaNT7QH7WGXnFxr/cC2C6sf5SW5SdkZfDQSiz8IaItvieZfXVQUbBOQKFRJ7TlSkt0jI/yjvw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-8.2.14.tgz", + "integrity": "sha512-ABZO4E7eeFA1QyJ2trDezxeQM5ZFa1dXw1Mpl/+1vuXDKNjJgNyWYwKp/NwRkLmrsuV0yv4UDCDe4kJOGbPKnw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler-cli": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-8.2.14.tgz", + "integrity": "sha512-XDrTyrlIZM+0NquVT+Kbg5bn48AaWFT+B3bAT288PENrTdkuxuF9AhjFRZj8jnMdmaE4O2rioEkXBtl6z3zptA==", + "dev": true, + "requires": { + "canonical-path": "1.0.0", + "chokidar": "^2.1.1", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "source-map": "^0.6.1", + "tslib": "^1.9.0", + "yargs": "13.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "yargs": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.1.0.tgz", + "integrity": "sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.0.0" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@angular/core": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-8.2.14.tgz", + "integrity": "sha512-zeePkigi+hPh3rN7yoNENG/YUBUsIvUXdxx+AZq+QPaFeKEA2FBSrKn36ojHFrdJUjKzl0lPMEiGC2b6a6bo6g==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/forms": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-8.2.14.tgz", + "integrity": "sha512-zhyKL3CFIqcyHJ/TQF/h1OZztK611a6rxuPHCrt/5Sn1SuBTJJQ1pPTkOYIDy6IrCrtyANc8qB6P17Mao71DNQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/language-service": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-8.2.14.tgz", + "integrity": "sha512-7EhN9JJbAJcH2xCa+rIOmekjiEuB0qwPdHuD5qn/wwMfRzMZo+Db4hHbR9KHrLH6H82PTwYKye/LLpDaZqoHOA==", + "dev": true + }, + "@angular/platform-browser": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-8.2.14.tgz", + "integrity": "sha512-MtJptptyKzsE37JZ2VB/tI4cvMrdAH+cT9pMBYZd66YSZfKjIj5s+AZo7z8ncoskQSB1o3HMfDjSK7QXGx1mLQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.2.14.tgz", + "integrity": "sha512-mO2JPR5kLU/A3AQngy9+R/Q5gaF9csMStBQjwsCRI0wNtlItOIGL6+wTYpiTuh/ux+WVN1F2sLcEYU4Zf1ud9A==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/router": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-8.2.14.tgz", + "integrity": "sha512-DHA2BhODqV7F0g6ZKgFaZgbsqzHHWRcfWchCOrOVKu2rYiKUTwwHVLBgZAhrpNeinq2pWanVYSIhMr7wy+LfEA==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", + "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==" + }, + "@babel/core": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.10.tgz", + "integrity": "sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA==", + "requires": { + "@babel/types": "^7.18.10", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "optional": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "requires": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", + "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", + "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", + "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "optional": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "requires": { + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-replace-supers": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", + "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-simple-access": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==" + }, + "@babel/helper-validator-identifier": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" + }, + "@babel/helper-wrap-function": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.10.tgz", + "integrity": "sha512-95NLBP59VWdfK2lyLKe6eTMq9xg+yWKzxzxbJ1wcYNi1Auz200+83fMDADjRxBvc2QQor5zja2yTQzXGhk2GtQ==", + "requires": { + "@babel/helper-function-name": "^7.18.9", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/helpers": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", + "requires": { + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.10.tgz", + "integrity": "sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", + "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", + "optional": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "optional": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "optional": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", + "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "optional": true, + "requires": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.18.8" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "optional": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "optional": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", + "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "optional": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", + "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", + "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", + "optional": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", + "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "optional": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "optional": true, + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", + "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", + "optional": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", + "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "optional": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", + "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", + "optional": true, + "requires": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-validator-identifier": "^7.18.6", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "optional": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", + "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", + "optional": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", + "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", + "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "optional": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/preset-env": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", + "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", + "optional": true, + "requires": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.18.10", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.9", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.9", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.9", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.10", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "optional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "optional": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.10.tgz", + "integrity": "sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", + "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", + "requires": { + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", + "to-fast-properties": "^2.0.0" + } + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@cypress/listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha512-EDiBsVPWC27DDLEJCo+dpl9ODHhdrwU57ccr9tspwCdG2ni0QVkf6LF0FGbhfujcjPxnXLIwsaks4sOrwrA4Qw==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "@cypress/webpack-preprocessor": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@cypress/webpack-preprocessor/-/webpack-preprocessor-4.1.5.tgz", + "integrity": "sha512-B4miSaS3VCMVSlfuvbWCjytTywdnquRsF1tQ3quC7TGUzEXnQZ4+o8WUKibjMozrOomALkUdMxqOJ1ib5oFkKw==", + "requires": { + "@babel/core": "^7.0.1", + "@babel/preset-env": "^7.0.0", + "babel-loader": "^8.0.2", + "bluebird": "3.7.1", + "debug": "4.1.1" + } + }, + "@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@fortawesome/angular-fontawesome": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.4.0.tgz", + "integrity": "sha512-DYVXdCzwQo6d0CxVMRK+10LpBAvYN9xigWeQW4wKYq/Czd5es46nPMKixB5rHfNViECwwlM2gTM61K4DpxlJxg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@fortawesome/fontawesome-common-types": { + "version": "0.2.36", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz", + "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "1.2.36", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz", + "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + } + }, + "@fortawesome/free-regular-svg-icons": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.15.4.tgz", + "integrity": "sha512-9VNNnU3CXHy9XednJ3wzQp6SwNwT3XaM26oS4Rp391GsxVYA+0oDR2J194YCIWf7jNRCYKjUCOduxdceLrx+xw==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz", + "integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + } + }, + "@groupdocs.examples.angular/annotation": { + "version": "0.8.92", + "resolved": "https://registry.npmjs.org/@groupdocs.examples.angular/annotation/-/annotation-0.8.92.tgz", + "integrity": "sha512-wOPMKxkMoaNRJyJ35BRTcnu7eVAGHjITSir1ccZPGNtDkitMImghBzvdOzgt9lorpRV2QPdbOdFm0Gw3NKdeBg==", + "requires": { + "@fortawesome/angular-fontawesome": "^0.4.0", + "@fortawesome/fontawesome-svg-core": "^1.2.19", + "@fortawesome/free-regular-svg-icons": "^5.9.0", + "@fortawesome/free-solid-svg-icons": "^5.9.0", + "@groupdocs.examples.angular/common-components": "^0.8.92", + "@ngx-translate/core": "^12.1.2", + "hammerjs": "^2.0.8", + "jquery": "^3.4.1", + "ng-click-outside": "^5.1.1", + "tslib": "^1.9.0" + } + }, + "@groupdocs.examples.angular/common-components": { + "version": "0.8.92", + "resolved": "https://registry.npmjs.org/@groupdocs.examples.angular/common-components/-/common-components-0.8.92.tgz", + "integrity": "sha512-MvXzrSqLJmP+hfvM+srwTVWrVMSbHwERzMao7MI9QFp8ZJXrTv7EiakFa3jQ4wf3/a1kwKONOAipjmMBN++VuQ==", + "requires": { + "@fortawesome/angular-fontawesome": "^0.4.0", + "@fortawesome/fontawesome-svg-core": "^1.2.19", + "@fortawesome/free-regular-svg-icons": "^5.9.0", + "@fortawesome/free-solid-svg-icons": "^5.9.0", + "@ngx-translate/core": "^12.1.2", + "hammerjs": "^2.0.8", + "jquery": "^3.4.1", + "ng-click-outside": "^5.1.1", + "tslib": "^1.9.0" + } + }, + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dev": true, + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.24.1" + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@ngtools/webpack": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.0.6.tgz", + "integrity": "sha512-ulu+5lLt4RjmcCXbmaGCjqjuOWt18DVek/Sq4HFE9E7zP+n7HercsU6h+9PrtaZThj9NB0B7A+afRB5aAQN/bQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "enhanced-resolve": "4.1.0", + "rxjs": "6.4.0", + "tree-kill": "1.2.1", + "webpack-sources": "1.3.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "tree-kill": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", + "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", + "dev": true + } + } + }, + "@ngx-translate/core": { + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-12.1.2.tgz", + "integrity": "sha512-ZudJsqIxTKlLmPoqK8gJY3UpMGujR0Xm7HfXL6AR79yGRS23QqpjAhMfx4v5qUCcHMmQ9/78bW8QJLfp31c7vQ==" + }, + "@nrwl/angular": { + "version": "8.12.11", + "resolved": "https://registry.npmjs.org/@nrwl/angular/-/angular-8.12.11.tgz", + "integrity": "sha512-Ao6bI0qr0Mpd0tvokE+XZUiUx1qQ4mCZLikdOgebSygX4wI5FEdRZKy5cBSDTLyWwSnKifWJTOMTgEkjUrrBmQ==", + "requires": { + "@angular-devkit/schematics": "8.3.23", + "@nrwl/cypress": "8.12.11", + "@nrwl/jest": "8.12.11", + "@schematics/angular": "8.3.23", + "jasmine-marbles": "~0.6.0" + }, + "dependencies": { + "@nrwl/cypress": { + "version": "8.12.11", + "resolved": "https://registry.npmjs.org/@nrwl/cypress/-/cypress-8.12.11.tgz", + "integrity": "sha512-dJhqrfx+EfF1p+bDeiqKRuWSlVLDyC5j4PWZCWqa23fR0YiWvJ5rm5xiNZpXo8AiJJfLykUiGt+x7mopYmnZTA==", + "requires": { + "@angular-devkit/architect": "0.803.23", + "@angular-devkit/core": "8.3.23", + "@cypress/webpack-preprocessor": "~4.1.0", + "fork-ts-checker-webpack-plugin": "^3.1.1", + "tree-kill": "1.2.2", + "ts-loader": "^5.3.1", + "tsconfig-paths-webpack-plugin": "3.2.0", + "webpack-node-externals": "1.7.2" + } + }, + "@nrwl/jest": { + "version": "8.12.11", + "resolved": "https://registry.npmjs.org/@nrwl/jest/-/jest-8.12.11.tgz", + "integrity": "sha512-5vETXeKPkuNt009tv/JcSRSX20oLQuOtjvl89sWBQmt5RyeF/rqEOZAD0g3UXNJN8rrJFL15S3q47AwZxUFQIA==", + "requires": { + "@angular-devkit/architect": "0.803.23", + "@angular-devkit/core": "8.3.23", + "@angular-devkit/schematics": "8.3.23" + } + } + } + }, + "@nrwl/cypress": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@nrwl/cypress/-/cypress-8.2.0.tgz", + "integrity": "sha512-Rz6oCPht2h7gPypAzg+JuGKFDaiBG8h7EaNPnxt0uk4mlfgJ3d39d7+HtWPM7zXeWNxHrn6/ecyV3MdvoZacRw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.1", + "@angular-devkit/core": "8.0.1", + "@cypress/webpack-preprocessor": "~4.1.0", + "tree-kill": "1.2.1", + "ts-loader": "5.3.1", + "tsconfig-paths-webpack-plugin": "3.2.0", + "webpack-node-externals": "1.7.2" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.800.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.800.1.tgz", + "integrity": "sha512-zDueOtGo8q9zAUWL2baLIwc5hlLkNtSr5ud1yTuhS4EmYbXJOvV2BPyXx4d77iL+SK4AMG/FyDsi1ZUxXubHIA==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.1", + "rxjs": "6.4.0" + } + }, + "@angular-devkit/core": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.1.tgz", + "integrity": "sha512-GQtspR2umZeuTUDTLy2dpUstvQfK7oAwE0o+rWSa8mx0DyhYssrfBbvfE4GzUzKp6OSz1sbZAatSO+iimZjbQw==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "tree-kill": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", + "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", + "dev": true + }, + "ts-loader": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.3.1.tgz", + "integrity": "sha512-fDDgpBH3SR8xlt2MasLdz3Yy611PQ/UY/KGyo7TgXhTRU/6sS8uGG0nJYnU1OdFBNKcoYbId1UTNaAOUn+i41g==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^3.1.4", + "semver": "^5.0.1" + } + } + } + }, + "@nrwl/jest": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@nrwl/jest/-/jest-8.2.0.tgz", + "integrity": "sha512-DcAUonbTaF9dvFnUVZNBUJ8bAQhymEALKBHvR2MNjlAdVKwWudkQX8ctcRmDiEBQROQu0xfibPC/GvlwEIEL7g==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.1", + "@angular-devkit/core": "8.0.1", + "@angular-devkit/schematics": "8.0.1" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.800.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.800.1.tgz", + "integrity": "sha512-zDueOtGo8q9zAUWL2baLIwc5hlLkNtSr5ud1yTuhS4EmYbXJOvV2BPyXx4d77iL+SK4AMG/FyDsi1ZUxXubHIA==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.1", + "rxjs": "6.4.0" + } + }, + "@angular-devkit/core": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.1.tgz", + "integrity": "sha512-GQtspR2umZeuTUDTLy2dpUstvQfK7oAwE0o+rWSa8mx0DyhYssrfBbvfE4GzUzKp6OSz1sbZAatSO+iimZjbQw==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.0.1.tgz", + "integrity": "sha512-AbE/Gt0h/6pGu/sQ2oMXZo5ZMDeUhkdU32Nq5styh+B5nVXzGuZK4CGqyDNttdnzebhHt4Bi5ZtF2Avlwt+KEA==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.1", + "rxjs": "6.4.0" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + } + } + }, + "@nrwl/workspace": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@nrwl/workspace/-/workspace-8.2.0.tgz", + "integrity": "sha512-vM50+hn86UgoOLX3Gc3PE0snOnKwA7YRphkWFlT5Nle37VrDNlTQPbkJA7Mp4Oi3mZtyE5VvzQ8+Cb5At4KA9Q==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.1", + "@angular-devkit/schematics": "8.0.1", + "cosmiconfig": "4.0.0", + "fs-extra": "6.0.0", + "graphviz": "0.0.8", + "ignore": "5.0.4", + "npm-run-all": "4.1.5", + "opn": "^5.3.0", + "prettier": "1.16.4", + "rxjs": "6.3.3", + "semver": "5.4.1", + "strip-json-comments": "2.0.1", + "tmp": "0.0.33", + "viz.js": "^1.8.1", + "yargs": "^11.0.0", + "yargs-parser": "10.0.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.1.tgz", + "integrity": "sha512-GQtspR2umZeuTUDTLy2dpUstvQfK7oAwE0o+rWSa8mx0DyhYssrfBbvfE4GzUzKp6OSz1sbZAatSO+iimZjbQw==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + }, + "dependencies": { + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/schematics": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.0.1.tgz", + "integrity": "sha512-AbE/Gt0h/6pGu/sQ2oMXZo5ZMDeUhkdU32Nq5styh+B5nVXzGuZK4CGqyDNttdnzebhHt4Bi5ZtF2Avlwt+KEA==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.1", + "rxjs": "6.4.0" + }, + "dependencies": { + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", + "dev": true + }, + "cosmiconfig": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", + "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0", + "require-from-string": "^2.0.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "ignore": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.0.4.tgz", + "integrity": "sha512-WLsTMEhsQuXpCiG173+f3aymI43SXa+fB1rSfbzyP4GkPP+ZFVuO0/3sFUGNBtifisPeDcl/uD/Y2NxZ7xFq4g==", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "rxjs": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "yargs": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", + "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha512-CswCfdOgCr4MMsT1GzbEJ7Z2uYudWyrGX8Bgh/0eyCzj/DXWdKq6a/ADufkzI1WAOIW6jYaXJvRyLhDO0kfqBw==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.0.0.tgz", + "integrity": "sha512-+DHejWujTVYeMHLff8U96rLc4uE4Emncoftvn5AjhB1Jw1pWxLzgBUT/WYbPrHmy6YPEBTZQx5myHhVcuuu64g==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "@schematics/angular": { + "version": "8.3.23", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.3.23.tgz", + "integrity": "sha512-yisP1iCLGC4VnZNC3kOnYyTS5cmfKEnLM9bMzhZGMWwov9RRfdxKKeSnG9FJNwHxI0WjQ0UWwfiz1dj0YacG3g==", + "requires": { + "@angular-devkit/core": "8.3.23", + "@angular-devkit/schematics": "8.3.23" + } + }, + "@schematics/update": { + "version": "0.800.0", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.800.0.tgz", + "integrity": "sha512-StheH+k4GCaHqmtDsHLSFmxu8SCDJVhZTXpz2zFAVaVXDh/ABS2Dt7I7SmEMGkUHcPA+u83sbZVBIacw2QfybQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.0", + "@angular-devkit/schematics": "8.0.0", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "pacote": "9.5.0", + "rxjs": "6.4.0", + "semver": "6.0.0", + "semver-intersect": "1.4.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.0.tgz", + "integrity": "sha512-wYf4zzpYj5Y673DG8iteK0GsDDuXBKN/TOXm4lUwmXcz8QHTD+BfR6qA5TBDqlMGpU7CP1/0vgbv2px17CDETQ==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.0.0.tgz", + "integrity": "sha512-IXJOs/DkDqNbfG76sNNY5ePZ37rjkMUopmtvhN6/U1hQFwTpGa9N0bCHFphcKraXeS6Jfox5XwFEStc/1xyhfw==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.0", + "rxjs": "6.4.0" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } + } + }, + "@sinclair/typebox": { + "version": "0.24.26", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.26.tgz", + "integrity": "sha512-1ZVIyyS1NXDRVT8GjWD5jULjhDyM3IsIHef2VGUMdnWOlX2tkPjyEX/7K0TGSH2S8EaPhp1ylFdjSjUGQ+gecg==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", + "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "24.0.9", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.9.tgz", + "integrity": "sha512-k3OOeevcBYLR5pdsOv5g3OP94h3mrJmLPHFEPWgbbVy2tGv0TZ/TlygiC848ogXhK8NL0I5up7YYtwpCp8xCJA==", + "dev": true, + "requires": { + "@types/jest-diff": "*" + } + }, + "@types/jest-diff": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-24.3.0.tgz", + "integrity": "sha512-vx1CRDeDUwQ0Pc7v+hS61O1ETA81kD04IMEC0hS1kPyVtHDdZrokAvpF7MT9VI/fVSzicelUZNCepDvhRV1PeA==", + "dev": true, + "requires": { + "jest-diff": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "optional": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "@types/node": { + "version": "8.9.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.5.tgz", + "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==", + "dev": true + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "@types/webpack-sources": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.9.tgz", + "integrity": "sha512-bvzMnzqoK16PQIC8AYHNdW45eREJQMd6WG/msQWX5V2+vZmODCOPb4TJcbgRljTZZTwTM4wUMcsI8FftNA7new==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "app-root-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz", + "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", + "dev": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "arch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", + "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==" + }, + "array.prototype.reduce": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", + "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "autoprefixer": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.5.1.tgz", + "integrity": "sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ==", + "dev": true, + "requires": { + "browserslist": "^4.5.4", + "caniuse-lite": "^1.0.30000957", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.14", + "postcss-value-parser": "^3.3.1" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + } + } + }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "optional": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + } + } + }, + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", + "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", + "optional": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.2", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", + "optional": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz", + "integrity": "sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==", + "optional": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.2" + } + }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "bluebird": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==" + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true + } + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "requires": { + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "cacache": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", + "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cachedir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-1.3.0.tgz", + "integrity": "sha512-O1ji32oyON9laVPJL1IZ5bmwd2cB46VfpxkDequezH+15FDzzVddEyrGEeX4WusDSqKxdyFdDQDEG1yo1GoWkg==", + "dev": true, + "requires": { + "os-homedir": "^1.0.1" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001373", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001373.tgz", + "integrity": "sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ==" + }, + "canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-dependency-plugin": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz", + "integrity": "sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha512-t22oC6e068eEBQ86SO3arUtd1ojcA3/lz3Fp2g/oL/lmDlFz/2yD8JHiebeCGYmoAovYpwKq4T64Uq5j+28Q9w==", + "dev": true + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.0", + "shallow-clone": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, + "codelyzer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.0.1.tgz", + "integrity": "sha512-UVV76+/y1RwaxzCeGPFE3G4GFtfV42r3x8EmRd7XMNFLlLC0ewdtCqWTbvhwPQMxFZZ+OTLEOJNWfyPPn3QFWg==", + "dev": true, + "requires": { + "app-root-path": "^2.1.0", + "aria-query": "^3.0.0", + "axobject-query": "^2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" + }, + "copy-webpack-plugin": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.0.2.tgz", + "integrity": "sha512-7nC7EynPrnBTtBwwbG1aTqrfNS1aTb9eEjSmQDqFtKAsJrR3uDb+pCDIFT2LzhW+SgGJxQcYzThrmXzzZ720uw==", + "dev": true, + "requires": { + "cacache": "^11.3.1", + "find-cache-dir": "^2.0.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.1.0", + "serialize-javascript": "^1.4.0", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + }, + "core-js-compat": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.1.tgz", + "integrity": "sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==", + "requires": { + "browserslist": "^4.21.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha512-OI38lO4JQQX2GSisTqwiSFxiWNmLajXdW4tCCxAuiwGKjusHALQadSHBSxGlU8lrFp47IkLuU2AfSYz31qpETQ==", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw==", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==", + "dev": true + }, + "cypress": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-3.3.2.tgz", + "integrity": "sha512-d2gFX0KBBdNfMMZ/ud9ouNqjDtMM3Tf5Z50hkl8Ldb8T+jKc7RLFo/4FjMu9i28T2x+50Sx8sN/kLzxr2oeWNg==", + "dev": true, + "requires": { + "@cypress/listr-verbose-renderer": "0.4.1", + "@cypress/xvfb": "1.2.4", + "arch": "2.1.1", + "bluebird": "3.5.0", + "cachedir": "1.3.0", + "chalk": "2.4.2", + "check-more-types": "2.24.0", + "commander": "2.15.1", + "common-tags": "1.8.0", + "debug": "3.2.6", + "execa": "0.10.0", + "executable": "4.1.1", + "extract-zip": "1.6.7", + "fs-extra": "5.0.0", + "getos": "3.1.1", + "glob": "7.1.3", + "is-ci": "1.2.1", + "is-installed-globally": "0.1.0", + "lazy-ass": "1.6.0", + "listr": "0.12.0", + "lodash": "4.17.11", + "log-symbols": "2.2.0", + "minimist": "1.2.0", + "moment": "2.24.0", + "ramda": "0.24.1", + "request": "2.88.0", + "request-progress": "0.4.0", + "supports-color": "5.5.0", + "tmp": "0.1.0", + "url": "0.11.0", + "yauzl": "2.10.0" + }, + "dependencies": { + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha512-3LE8m8bqjGdoxfvf71yhFNrUcwy3NLy00SAo+b6MfJ8l+Bc2DzQ7mUHwX6pjK2AxfgV+YfsjCeVW3T5HLQTBsQ==", + "dev": true + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw==", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "tmp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "dev": true, + "requires": { + "rimraf": "^2.6.3" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "dependency-graph": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "dotenv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.210", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.210.tgz", + "integrity": "sha512-kSiX4tuyZijV7Cz0MWVmGT8K2siqaOA4Z66K5dCttPPRh0HicOcOAEj1KlC8O8J1aOS/1M8rGofOzksLKaHWcQ==" + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "eventsource": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", + "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "requires": { + "pify": "^2.2.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + }, + "dependencies": { + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + } + } + }, + "express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extract-zip": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha512-NWFb/0zxv3qh7f6hEy+F+Y+jPAqt1bfT52GR8Vi7sEFg2fBZlG/aM6ZrSGPUscP0I4JRhtgVG6I17HOuD7GESw==", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha512-TXNR2Feu/p/8k5YRy4z45wCUhoncIrZywmRd+xW0IvB3lWTAM7F6wVbeJvRjO0dplQ8oqmJEj/TpJuULBV/hbw==", + "dev": true, + "requires": { + "fd-slicer": "~1.0.1" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha512-eIgZvM9C3P05kg0qxfqaVU6Tma4QedCPIByQOcemV0vju8ot3cS2DpHi4m2G2JvbSMI152rjfLX0p1pkSdyPlQ==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha512-Xhj93RXbMSq8urNCUq4p9l0P6hnySJ/7YNRhYNug0bLOuii7pKO7xQFb5mx9xZXWCar88pLPb805PvUkwrLZpQ==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha512-MX1ZLPIuKED51hrI4++K+1B0VX87Cs4EkybD2q12Ysuf5p4vkmHqMvQJRlDwROqFr4D2Pzyit5wGQxf30grIcw==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", + "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "optional": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "optional": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true + }, + "fork-ts-checker-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^3.3.0", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.0.tgz", + "integrity": "sha512-lk2cUCo8QzbiEWEbt7Cw3m27WMiRG321xsssbcIpfMhpRjrlC08WBOVQqj1/nQYYNnPtyIhP1oqLO3QwT2tPCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "genfun": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" + }, + "getos": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.1.1.tgz", + "integrity": "sha512-oUP1rnEhAr97rkitiszGP9EgDVYnmchgFzfqRzSkgtfv7ai6tEi7Ko8GgjNXts7VLWEqrTWyhsOKLe5C5b/Zkg==", + "dev": true, + "requires": { + "async": "2.6.1" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + } + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "graphviz": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/graphviz/-/graphviz-0.0.8.tgz", + "integrity": "sha512-ySlUKG9k5ccOhMNvrRC287JN0Fxb9glasN4MkYEa/kg0IJdwPQLFYo8Ixp6xAnoOkUP9oEJPkG0K9ml2nONedw==", + "dev": true, + "requires": { + "temp": "~0.4.0" + } + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "dev": true + }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==" + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + } + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-entities": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "http-proxy-middleware": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.2.tgz", + "integrity": "sha512-aYk1rTKqLTus23X3L96LGNCGNgWpG4cG0XoZIT1GUPhhulEHX/QalnO6Vbo+WmKWi4AL2IidjuC0wZtbpg0yhQ==", + "dev": true, + "requires": { + "http-proxy": "^1.18.1", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", + "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.11", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==", + "dev": true, + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + }, + "dependencies": { + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + } + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", + "dev": true + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "istanbul-instrumenter-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", + "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", + "dev": true, + "requires": { + "convert-source-map": "^1.5.0", + "istanbul-lib-instrument": "^1.7.3", + "loader-utils": "^1.1.0", + "schema-utils": "^0.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha512-QaVYBaD9U8scJw2EBWnCBY+LJ0AD+/2edTaigDs0XLDLBfJmSUK9KGqktg1rb32U3z4j/XwvFwHHH1YfbYFd7Q==", + "dev": true, + "requires": { + "ajv": "^5.0.0" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0" + } + }, + "jasmine-marbles": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/jasmine-marbles/-/jasmine-marbles-0.6.0.tgz", + "integrity": "sha512-1uzgjEesEeCb+r+v46qn5x326TiGqk5SUZa+A3O+XnMCjG/pGcUOhL9Xsg5L7gLC6RFHyWGTkB5fei4rcvIOiQ==", + "requires": { + "lodash": "^4.5.0" + } + }, + "jest": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.1.0.tgz", + "integrity": "sha512-+q91L65kypqklvlRFfXfdzUKyngQLOcwGhXQaLmVHv+d09LkNXuBuGxlofTFW42XMzu3giIcChchTsCNUjQ78A==", + "dev": true, + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "dev": true, + "requires": { + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-jsdom-thirteen": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-thirteen/-/jest-environment-jsdom-thirteen-0.0.2.tgz", + "integrity": "sha512-NH7b44aUdSjSzIYogJS9WkymmJNA+Q3na6XebsxZmP70NzW++/WD1Ky8E6PVxTqKuEnYzxFA/5Of2VxoreugGg==", + "dev": true, + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0", + "jsdom": "^13.0.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "jest-message-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", + "integrity": "sha512-Tjqy7T8jHhPgV4Gsi+pKMMfaz3uP5DPtMGnm8RWNWUHIk2igqxQ3/9rud3JkINCvZDGqlpJVuFGIDXbltG4xLA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz", + "integrity": "sha512-lz+Rf6dwRNDVowuGCXm93ib8hMyPntl1GGVt9PuZfBAmTjP5yKYgK14IASiEjs7XoMo4i/R7+dkrJY3eESwTJg==", + "dev": true + }, + "jest-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", + "integrity": "sha512-OS1/0QSbbMF9N93MxF1hUmK93EF3NGQGbbaTBZZk95aytWtWmzxsFWwt/UXIIkfHbPCK1fXTrPklbL+ohuFFOA==", + "dev": true, + "requires": { + "callsites": "^2.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "jest-message-util": "^23.4.0", + "mkdirp": "^0.5.1", + "slash": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "jsdom": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-13.2.0.tgz", + "integrity": "sha512-cG1NtMWO9hWpqRNRR3dSvEQa8bFI6iLlqU2x4kwX51FQjp0qus8T9aBaAO6iGp3DeBrhdwuKxckknohkmfvsFw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.0.9", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.5", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } + }, + "jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "dev": true + }, + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "dev": true, + "requires": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true + }, + "jest-preset-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-7.0.0.tgz", + "integrity": "sha512-XwMTabZ7/clqpWxgmrXeqKUNn5eXuyNtddFyG1JWTtVoRFIru8kEigk9Eyra82Yx0vJIN1KkNoOKieBQfqfvwQ==", + "dev": true, + "requires": { + "jest-environment-jsdom-thirteen": "^0.0.2", + "ts-jest": "^24.0.0" + } + }, + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "dev": true + }, + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + } + }, + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + } + }, + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", + "dev": true + }, + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "less": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/less/-/less-3.9.0.tgz", + "integrity": "sha512-31CmtPEZraNUtuUREYjSqRkeETFdyEHSEPAGq4erDlUXtda7pzNmctdljdIagSb589d/qXGWiiP31R5JVf+v0w==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz", + "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "license-webpack-plugin": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.1.tgz", + "integrity": "sha512-TiarZIg5vkQ2rGdYJn2+5YxO/zqlqjpK5IVglr7OfmrN1sBCakS+PQrsP2uC5gtve1ZDb9WMSUMlmHDQ0FoW4w==", + "dev": true, + "requires": { + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" + } + }, + "listr": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.12.0.tgz", + "integrity": "sha512-5GlrcOoGOBd/hFSI7hMvVXb+5jFMVc17e1VQzpa7VJna1SDTYSCrCpqBQUkuWW18xibTR+PQndjVtuEBKtOWVw==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "figures": "^1.7.0", + "indent-string": "^2.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.2.0", + "listr-verbose-renderer": "^0.4.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "ora": "^0.2.3", + "p-map": "^1.1.1", + "rxjs": "^5.0.0-beta.11", + "stream-to-observable": "^0.1.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", + "dev": true + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==", + "dev": true + }, + "listr-update-renderer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz", + "integrity": "sha512-0G/CLBomVga7gpCMHw5Adg9kafRz0HDAOxa1GrWywXr1oNYRW/n4pPy7xF/hniRCLRCorZMCxaMGSmgsp1QHsA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha512-tWEhvyB9UUq+4fkEwQ2NQK2JfYhsc3slSeYRkuc9CiJ3GFMRa5CRUcmqo+IIF+L95uZqv5dzZDC6vCggC28C0g==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "optional": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha512-+7y6zfkH4TqgS5DYKIqJuxmL5xT3WUUumVMZVRpDUo0UqJREwZqKmGo9wluj12FbPGl1UjRf2TnAImbw/bKtdw==", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "log-update": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha512-4vSow8gbiGnwdDNrpy1dyNaXWKSCIPop0EHdE8GrnngHoJujM3QhvHUN/igsYCgPoHo7pFOezlJ61Hlln0KHyA==", + "dev": true, + "requires": { + "ansi-escapes": "^1.0.0", + "cli-cursor": "^1.0.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw==", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + } + } + }, + "loglevel": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", + "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz", + "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==", + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "make-fetch-happen": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-4.0.2.tgz", + "integrity": "sha512-YMJrAjHSb/BordlsDEcVcPyTbiJKkzqMf48N8dAJZT9Zjctrkb6Yg4TY9Sq2AwSIQJFn5qBBKVTYt3vP5FMIHA==", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^11.3.3", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "requires": { + "object-visit": "^1.0.0" + } + }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz", + "integrity": "sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "^2.0.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==", + "dev": true, + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", + "dev": true + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "ng-click-outside": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ng-click-outside/-/ng-click-outside-5.3.0.tgz", + "integrity": "sha512-+WYtu2hSQy0F6VlHOqKhPtdVJimTiXXNtZPBGfLORJNX71ieYGsentke8KG+8EudR36FUB6Ya9g2GwGXM0UqdA==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-eta": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/node-eta/-/node-eta-0.1.1.tgz", + "integrity": "sha512-HRodgoMm68r2rB73rKTxNVYIplYuExiKNTzUyI+JmwNeLfeM8nEwPkvsEeH+WmlWPfKr2q7Kddls24f/mGN2FQ==", + "dev": true + }, + "node-fetch-npm": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz", + "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + } + } + }, + "node-notifier": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.5.tgz", + "integrity": "sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", + "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.6.0", + "osenv": "^0.1.5", + "semver": "^5.5.0", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz", + "integrity": "sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-registry-fetch": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-3.9.1.tgz", + "integrity": "sha512-VQCEZlydXw4AwLROAXWUR7QDfe2Y8Id/vpAgp6TI1/H78a4SiQ1kQrKZALm5/zxM5n4HIi+aYb+idUAV/RuY0Q==", + "dev": true, + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^4.0.2", + "npm-package-arg": "^6.1.0" + } + }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, + "nwsapi": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", + "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", + "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", + "dev": true, + "requires": { + "array.prototype.reduce": "^1.0.4", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + } + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "requires": { + "isobject": "^3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + } + } + }, + "open": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.2.0.tgz", + "integrity": "sha512-Vxf6HJkwrqmvh9UAID3MnMYXntbTxKLOSfOnO7LJdzPf3NE3KQYFNV0/Lcz2VAndbRFil58XVCyh8tiX11fiYw==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha512-MYGyg17e2GcoDlFrAP39zu4nrAQ+STzl4fosWjR8vAlT0a2wKuuAGZTecffdVLPsnEfxXVlrUcDZ1DU5skr+QQ==", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "cli-cursor": "^1.0.2", + "cli-spinners": "^0.1.2", + "object-assign": "^4.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dev": true + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha512-J/e9xiZZQNrt+958FFzJ+auItsBGq+UrQ7nE89AUP7UOTtjHnkISANXLdayhVzh538UnLMCSlf13lFfRIAKQOA==", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "optional": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==", + "dev": true + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pacote": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.0.tgz", + "integrity": "sha512-aUplXozRbzhaJO48FaaeClmN+2Mwt741MC6M3bevIGZwdCaP7frXzbUOfOWa91FPHoLITzG0hYaKY363lxO3bg==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "cacache": "^11.3.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^4.0.1", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^2.2.3", + "npm-registry-fetch": "^3.8.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.8", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==" + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "optional": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "optional": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" + }, + "postcss": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", + "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-import": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", + "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==", + "dev": true + }, + "prettier": { + "version": "1.16.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.4.tgz", + "integrity": "sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g==", + "dev": true + }, + "pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "ramda": { + "version": "0.24.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.24.1.tgz", + "integrity": "sha512-HEm619G8PaZMfkqCa23qiOe7r3R0brPu7ZgOsgKUsnvLhd0qhc/vTjkUovomgPWa5ECBa08fJZixth9LaoBo5w==", + "dev": true + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + } + } + }, + "raw-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-1.0.0.tgz", + "integrity": "sha512-Uqy5AqELpytJTRxYT4fhltcKPj0TyaEpzJDcGz7DFJi+pQOOi3GjR/DOdxTkTsF+NzhnldIoG6TORaBlInUuqA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "read-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "read-package-tree": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.2.2.tgz", + "integrity": "sha512-rW3XWUUkhdKmN2JKB4FL563YAgtINifso5KShykufR03nJ5loGFlkUMe1g/yxmqX073SoYYTsgXu7XdDinKZuA==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "once": "^1.3.0", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "optional": true + }, + "regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "optional": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpu-core": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", + "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==" + }, + "regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-progress": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-0.4.0.tgz", + "integrity": "sha512-moeCSqOv+9Q/PRmXpke9pRvcfMXU8xwPZvdsUAkyVZU5TOBTWtnA2wTTg75fxvGelQB8LYXUO55SKFy/vNTV3w==", + "dev": true, + "requires": { + "node-eta": "^0.1.1", + "throttleit": "^0.0.2" + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "sass": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.19.0.tgz", + "integrity": "sha512-8kzKCgxCzh8/zEn3AuRwzLWVSSFj8omkiGwqdJdeOufjM+I88dXxu9LYJ/Gw4rRTHXesN0r1AixBuqM6yLQUJw==", + "dev": true, + "requires": { + "chokidar": "^2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "sass-loader": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", + "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", + "dev": true, + "requires": { + "clone-deep": "^2.0.1", + "loader-utils": "^1.0.1", + "lodash.tail": "^4.1.1", + "neo-async": "^2.5.0", + "pify": "^3.0.0", + "semver": "^5.5.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha512-c0YL9VcSfcdH3F1Qij9qpYJFpKFKMXNOkLWFssBL3RuF7ZS8oZhllR2rWlCRjDTJsfq3R6wbSsaRU6o0rkEdNw==", + "dev": true + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "optional": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "optional": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "optional": true + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "selfsigned": { + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", + "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng==", + "dev": true, + "requires": { + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "semver-intersect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", + "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", + "dev": true, + "requires": { + "semver": "^5.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + } + } + }, + "serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + }, + "dependencies": { + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==", + "dev": true + } + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "dev": true, + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + } + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "dev": true, + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "speed-measure-webpack-plugin": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.1.tgz", + "integrity": "sha512-qVIkJvbtS9j/UeZumbdfz0vg+QfG/zxonAjzefZrqzkr7xOncLVXkeGbTpzd1gjCBM4PmVNkWlkeTVhgskAGSQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stack-utils": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", + "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stats-webpack-plugin": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/stats-webpack-plugin/-/stats-webpack-plugin-0.7.0.tgz", + "integrity": "sha512-NT0YGhwuQ0EOX+uPhhUcI6/+1Sq/pMzNuSCBVT4GbFl/ac6I/JZefBcjlECNfAb1t3GOx5dEj1Z7x0cAxeeVLQ==", + "dev": true, + "requires": { + "lodash": "^4.17.4" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "stream-to-observable": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.1.0.tgz", + "integrity": "sha512-h3mR71JoHxXrKApehgQk1CFbdi2nW9BAVqjPhpPD127H8iz0N61YsCLhJutm+JV0ajNAwPef0kMQsF0Jaz/A6Q==", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha512-Qka42GGrS8Mm3SZ+7cH8UXiIWI867/b/Z/feQSpQx/rbfB8UGknGEZVaUQMOUVj+soY6NpWAxily63HI1OckVQ==", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.padend": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", + "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha512-4Yzg9aqLf3f4sDvO3x+Fbp2V634j9ikFGCFokIPYi+7Y4IG/nxAiPUs95MRlo+lPdTsxAs9wCzEclmPccItISA==", + "dev": true, + "requires": { + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha512-f8c0rE8JiCxpa52kWPAOa3ZaYEnzofDzCQLCn3Vdk0Z5OVLq3BsRFJI4S4ykpeVW6QMGBUkMeUpoEgWnMTnw5Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "when": "~3.6.x" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dev": true, + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "temp": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.4.0.tgz", + "integrity": "sha512-IsFisGgDKk7qzK9erMIkQe/XwiSUdac7z3wYOsjcLkhPBy3k1SlvLoIh2dAHIlEpgA971CgguMrx9z8fFg7tSA==", + "dev": true + }, + "terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz", + "integrity": "sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA==", + "dev": true, + "requires": { + "cacache": "^11.0.2", + "find-cache-dir": "^2.0.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "terser": "^3.16.1", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + }, + "dependencies": { + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + } + } + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha512-wCVxLDcFxw7ujDxaeJC6nfl2XfHJNYs8yUYJnvMgtPEFlttP9tHSfRUv2vBe6C4hkVFPWoP1P6ZccbYjmSEkKA==", + "dev": true + }, + "throttleit": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", + "integrity": "sha512-HtlTFeyYs1elDM2txiIGsdXHaq8kffVaZH/QEBRbo95zQqzlsBx5ELKhkPOZVad9OK9oxzwx6UrQN8Vfh/+yag==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", + "dev": true + }, + "ts-jest": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.0.0.tgz", + "integrity": "sha512-o8BO3TkMREpAATaFTrXkovMsCpBl2z4NDBoLJuWZcJJj1ijI49UnvDMfVpj+iogn/Jl8Pbhuei5nc/Ti+frEHw==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "make-error": "1.x", + "mkdirp": "0.x", + "resolve": "1.x", + "semver": "^5.5", + "yargs-parser": "10.x" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "ts-loader": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.4.5.tgz", + "integrity": "sha512-XYsjfnRQCBum9AMRZpk2rTYSVpdZBpZK+kDh0TeT3kxmQNBDVIeUjdPjY5RZry4eIAb8XHc4gYSUiUWPYvzSRw==", + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^3.1.4", + "semver": "^5.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + } + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "tsconfig-paths-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-S/gOOPOkV8rIL4LurZ1vUdYCVgo15iX9ZMJ6wx6w2OgcpT/G4wMyHB6WM+xheSqGMrWKuxFul+aXpCju3wmj/g==", + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "tsconfig-paths": "^3.4.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "tslint": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz", + "integrity": "sha512-yA5YmWkzQoMF/fOA6TjkJlJniZxpo7cneTvdQEJj7blUd7YsR23gcOC5caM2MP186hTrhpSf1VSuygnikerwmQ==", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.27.2" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "typescript": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz", + "integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==" + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universal-analytics": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.23.tgz", + "integrity": "sha512-lgMIH7XBI6OgYn1woDEmxhGdj8yDefMKg7GkWdeATAlQZFrMrNyxSkpDzY57iY0/6fdlzTbBV03OawvvzG+q7A==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "request": "^2.88.2", + "uuid": "^3.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true + } + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "util.promisify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", + "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "for-each": "^0.3.3", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.1" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + } + } + }, + "viz.js": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/viz.js/-/viz.js-1.8.2.tgz", + "integrity": "sha512-W+1+N/hdzLpQZEcvz79n2IgUE9pfx6JLdHh3Kh8RGvLL8P1LdJVQmi2OsDcLdY4QVID4OUy+FPelyerX0nJxIQ==", + "dev": true + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "optional": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "webpack": { + "version": "4.30.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.30.0.tgz", + "integrity": "sha512-4hgvO2YbAFUhyTdlR4FNyt2+YaYBYHavyzjCMbZzgglo02rlKi/pcsEzwCuCpsn1ryzIl1cq/u8ArIKu8JBYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.0.5", + "acorn-dynamic-import": "^4.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^1.0.0", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha512-P6ZUGXn5buTEZyTStCHHLwtWGKSm/jA629Zgp4pcHSsy60CCsT9MaHDxNIPL+GGJ2KwOgI6ORwQtHcrYHAt2UQ==", + "dev": true, + "requires": { + "source-list-map": "~0.1.7", + "source-map": "~0.4.1" + }, + "dependencies": { + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha512-cabwdhnSNf/tTDMh/DXZXlkeQLvdYT5xfGYBohqHG7wb3bBQrQlHQNWM9NWSOboXXK1zgwz6JzS5e4hZq9vxMw==", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.6.2.tgz", + "integrity": "sha512-A47I5SX60IkHrMmZUlB0ZKSWi29TZTcPz7cha1Z75yYOsgWh/1AcPmQEbC8ZIbU3A1ytSv1PMU0PyPz2Lmz2jg==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.3.1", + "range-parser": "^1.0.3", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.3.1.tgz", + "integrity": "sha512-jY09LikOyGZrxVTXK0mgIq9y2IhCoJ05848dKZqX1gAGLU1YDqgpOT71+W53JH/wI4v6ky4hm+KvSyW14JEs5A==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.5", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.0", + "express": "^4.16.4", + "html-entities": "^1.2.1", + "http-proxy-middleware": "^0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.2.0", + "ip": "^1.1.5", + "killable": "^1.0.1", + "loglevel": "^1.6.1", + "opn": "^5.5.0", + "portfinder": "^1.0.20", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.4", + "semver": "^6.0.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.3.0", + "spdy": "^4.0.0", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.6.2", + "webpack-log": "^2.0.0", + "yargs": "12.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", + "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", + "dev": true, + "requires": { + "lodash": "^4.17.5" + } + }, + "webpack-node-externals": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz", + "integrity": "sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg==" + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-subresource-integrity": { + "version": "1.1.0-rc.6", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.6.tgz", + "integrity": "sha512-Az7y8xTniNhaA0620AV1KPwWOqawurVVDzQSpPAeR5RwNbL91GoBSJAAo9cfd+GiFHwsS5bbHepBw1e6Hzxy4w==", + "dev": true, + "requires": { + "webpack-core": "^0.6.8" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", + "integrity": "sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-plugin": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-3.1.0.tgz", + "integrity": "sha512-iQ9KTTmmN5fhfc2KMR7CcDblvcrg1QQ4pXymqZ3cRZF8L0890YLBcEqlIsGPdxoFwghyN8RA1pCEhCKuTF4Lkw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "requires": { + "microevent.ts": "~0.1.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + }, + "dependencies": { + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + } + } + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", + "dev": true + }, + "zone.js": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.9.1.tgz", + "integrity": "sha512-GkPiJL8jifSrKReKaTZ5jkhrMEgXbXYC+IPo1iquBjayRa0q86w3Dipjn8b415jpitMExe9lV8iTsv8tk3DGag==" + } + } +} diff --git a/Demos/ASP.NET Web Forms/src/client/package.json b/Demos/ASP.NET Web Forms/src/client/package.json new file mode 100644 index 0000000..7ee1e76 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/package.json @@ -0,0 +1,66 @@ +{ + "name": "client", + "version": "0.0.0", + "license": "MIT", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "..\\packages\\Node-Kit.11.1.0.1\\node\\win\\node.exe .\\node_modules\\@angular\\cli\\bin\\ng build", + "test": "ng test", + "lint": "nx lint && ng lint", + "e2e": "ng e2e", + "affected:apps": "nx affected:apps", + "affected:libs": "nx affected:libs", + "affected:build": "nx affected:build", + "affected:e2e": "nx affected:e2e", + "affected:test": "nx affected:test", + "affected:lint": "nx affected:lint", + "affected:dep-graph": "nx affected:dep-graph", + "affected": "nx affected", + "format": "nx format:write", + "format:write": "nx format:write", + "format:check": "nx format:check", + "update": "ng update @nrwl/workspace", + "update:check": "ng update", + "workspace-schematic": "nx workspace-schematic", + "dep-graph": "nx dep-graph", + "help": "nx help" + }, + "private": true, + "dependencies": { + "@angular/animations": "^8.0.0", + "@angular/common": "^8.0.0", + "@angular/compiler": "^8.0.0", + "@angular/core": "^8.0.0", + "@angular/forms": "^8.0.0", + "@angular/platform-browser": "^8.0.0", + "@angular/platform-browser-dynamic": "^8.0.0", + "@angular/router": "^8.0.0", + "core-js": "^2.5.4", + "rxjs": "~6.4.0", + "zone.js": "^0.9.1", + "@nrwl/angular": "^8.2.0", + "@groupdocs.examples.angular/annotation": "^0.8.0" + }, + "devDependencies": { + "cypress": "~3.3.1", + "@nrwl/cypress": "8.2.0", + "@nrwl/jest": "8.2.0", + "jest": "24.1.0", + "@types/jest": "24.0.9", + "ts-jest": "24.0.0", + "jest-preset-angular": "7.0.0", + "@angular/compiler-cli": "^8.0.0", + "@angular/language-service": "^8.0.0", + "@angular-devkit/build-angular": "^0.800.0", + "codelyzer": "~5.0.1", + "@nrwl/workspace": "8.2.0", + "@types/node": "~8.9.4", + "dotenv": "6.2.0", + "ts-node": "~7.0.0", + "tslint": "~5.11.0", + "typescript": "~3.4.5", + "prettier": "1.16.4", + "@angular/cli": "8.0.0" + } +} diff --git a/Demos/ASP.NET Web Forms/src/client/tools/schematics/.gitkeep b/Demos/ASP.NET Web Forms/src/client/tools/schematics/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Demos/ASP.NET Web Forms/src/client/tools/tsconfig.tools.json b/Demos/ASP.NET Web Forms/src/client/tools/tsconfig.tools.json new file mode 100644 index 0000000..82bd1f0 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/tools/tsconfig.tools.json @@ -0,0 +1,11 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../dist/out-tsc/tools", + "rootDir": ".", + "module": "commonjs", + "target": "es5", + "types": ["node"] + }, + "include": ["**/*.ts"] +} diff --git a/Demos/ASP.NET Web Forms/src/client/tsconfig.json b/Demos/ASP.NET Web Forms/src/client/tsconfig.json new file mode 100644 index 0000000..a5099b5 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "rootDir": ".", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "importHelpers": true, + "target": "es2015", + "module": "esnext", + "typeRoots": ["node_modules/@types"], + "lib": ["es2017", "dom"], + "skipLibCheck": true, + "skipDefaultLibCheck": true, + "baseUrl": ".", + "paths": {} + }, + "exclude": ["node_modules", "tmp"] +} diff --git a/Demos/ASP.NET Web Forms/src/client/tslint.json b/Demos/ASP.NET Web Forms/src/client/tslint.json new file mode 100644 index 0000000..2533001 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/client/tslint.json @@ -0,0 +1,80 @@ +{ + "rulesDirectory": [ + "node_modules/@nrwl/workspace/src/tslint", + "node_modules/codelyzer" + ], + "rules": { + "arrow-return-shorthand": true, + "callable-types": true, + "class-name": true, + "deprecation": { + "severity": "warn" + }, + "forin": true, + "import-blacklist": [true, "rxjs/Rx"], + "interface-over-type-literal": true, + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-arg": true, + "no-bitwise": true, + "no-console": [true, "debug", "info", "time", "timeEnd", "trace"], + "no-construct": true, + "no-debugger": true, + "no-duplicate-super": true, + "no-empty": false, + "no-empty-interface": true, + "no-eval": true, + "no-inferrable-types": [true, "ignore-params"], + "no-misused-new": true, + "no-non-null-assertion": true, + "no-shadowed-variable": true, + "no-string-literal": false, + "no-string-throw": true, + "no-switch-case-fall-through": true, + "no-unnecessary-initializer": true, + "no-unused-expression": true, + "no-var-keyword": true, + "object-literal-sort-keys": false, + "prefer-const": true, + "radix": true, + "triple-equals": [true, "allow-null-check"], + "unified-signatures": true, + "variable-name": false, + "nx-enforce-module-boundaries": [ + true, + { + "allow": [], + "depConstraints": [ + { + "sourceTag": "*", + "onlyDependOnLibsWithTags": ["*"] + } + ] + } + ], + "directive-selector": [true, "attribute", "app", "camelCase"], + "component-selector": [true, "element", "app", "kebab-case"], + "no-conflicting-lifecycle": true, + "no-host-metadata-property": true, + "no-input-rename": true, + "no-inputs-metadata-property": true, + "no-output-native": true, + "no-output-on-prefix": true, + "no-output-rename": true, + "no-outputs-metadata-property": true, + "template-banana-in-box": true, + "template-no-negated-async": true, + "use-lifecycle-interface": true, + "use-pipe-transform-interface": true + } +} diff --git a/Demos/ASP.NET Web Forms/src/packages.config b/Demos/ASP.NET Web Forms/src/packages.config new file mode 100644 index 0000000..0195ef0 --- /dev/null +++ b/Demos/ASP.NET Web Forms/src/packages.config @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Demos/README.md b/Demos/README.md new file mode 100644 index 0000000..d83fbd6 --- /dev/null +++ b/Demos/README.md @@ -0,0 +1,3 @@ +# GroupDocs.Annotation for .NET Demos + +GroupDocs.Annotation for .NET Demo projects. diff --git a/Examples/Data/Samples/Annotated.docx b/Examples/Data/Samples/Annotated.docx deleted file mode 100644 index 2a82c6a..0000000 Binary files a/Examples/Data/Samples/Annotated.docx and /dev/null differ diff --git a/Examples/Data/Samples/excel.xlsx b/Examples/Data/Samples/excel.xlsx deleted file mode 100644 index f8adcee..0000000 Binary files a/Examples/Data/Samples/excel.xlsx and /dev/null differ diff --git a/Examples/Data/Samples/sample.docx b/Examples/Data/Samples/sample.docx deleted file mode 100644 index 6c23483..0000000 Binary files a/Examples/Data/Samples/sample.docx and /dev/null differ diff --git a/Examples/Data/Samples/sample.pdf b/Examples/Data/Samples/sample.pdf deleted file mode 100644 index ac1d0e0..0000000 Binary files a/Examples/Data/Samples/sample.pdf and /dev/null differ diff --git a/Examples/Data/Samples/sample.png b/Examples/Data/Samples/sample.png deleted file mode 100644 index bd61201..0000000 Binary files a/Examples/Data/Samples/sample.png and /dev/null differ diff --git a/Examples/Data/Samples/sample.pptx b/Examples/Data/Samples/sample.pptx deleted file mode 100644 index 2d5a874..0000000 Binary files a/Examples/Data/Samples/sample.pptx and /dev/null differ diff --git a/Examples/Data/Samples/sample.vsd b/Examples/Data/Samples/sample.vsd deleted file mode 100644 index 5a93fa2..0000000 Binary files a/Examples/Data/Samples/sample.vsd and /dev/null differ diff --git a/Examples/Data/Samples/slide.pptx b/Examples/Data/Samples/slide.pptx deleted file mode 100644 index 8976d5c..0000000 Binary files a/Examples/Data/Samples/slide.pptx and /dev/null differ diff --git a/Examples/Data/Screenshots/AnnotationVSPlugin1.png b/Examples/Data/Screenshots/AnnotationVSPlugin1.png deleted file mode 100644 index 2ba8c40..0000000 Binary files a/Examples/Data/Screenshots/AnnotationVSPlugin1.png and /dev/null differ diff --git a/Examples/Data/Screenshots/AnnotationVSPlugin2.png b/Examples/Data/Screenshots/AnnotationVSPlugin2.png deleted file mode 100644 index 05f24bb..0000000 Binary files a/Examples/Data/Screenshots/AnnotationVSPlugin2.png and /dev/null differ diff --git a/Examples/Data/Screenshots/Groupdocs-Annotation-Files.png b/Examples/Data/Screenshots/Groupdocs-Annotation-Files.png deleted file mode 100644 index 6a99566..0000000 Binary files a/Examples/Data/Screenshots/Groupdocs-Annotation-Files.png and /dev/null differ diff --git a/Examples/Data/Screenshots/Groupdocs-Annotation-VS.png b/Examples/Data/Screenshots/Groupdocs-Annotation-VS.png deleted file mode 100644 index bd61201..0000000 Binary files a/Examples/Data/Screenshots/Groupdocs-Annotation-VS.png and /dev/null differ diff --git a/Examples/Dockerfile b/Examples/Dockerfile new file mode 100644 index 0000000..6a24b18 --- /dev/null +++ b/Examples/Dockerfile @@ -0,0 +1,49 @@ +# to build image run in PS - `docker build --pull -t annotation:examples .` +# to run tests run in PS - `docker run --rm -it -v ${PWD}:/examples/Results annotation:examples` + +FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS buid_env + +# prepare +WORKDIR /examples +COPY ./*.sln ./ +COPY ./GroupDocs.Annotation.Examples.CSharp/ ./GroupDocs.Annotation.Examples.CSharp/ +COPY ./GroupDocs.Annotation.Examples.CSharp.Core/ ./GroupDocs.Annotation.Examples.CSharp.Core/ +# end prepare + +# GroupDocs.Annotation dependency - https://docs.groupdocs.com/display/annotationnet/.NET+Standard+2.0+API+Limitations +RUN dotnet add ./GroupDocs.Annotation.Examples.CSharp.Core/GroupDocs.Annotation.Examples.CSharp.Core.csproj package SkiaSharp.NativeAssets.Linux --framework netcoreapp2.1 +# GroupDocs.Annotation dependency + +# restore +WORKDIR /examples +RUN dotnet restore ./GroupDocs.Annotation.Examples.CSharp.Core/GroupDocs.Annotation.Examples.CSharp.Core.csproj +# end restore + +## build +WORKDIR /examples +RUN dotnet publish ./GroupDocs.Annotation.Examples.CSharp.Core/GroupDocs.Annotation.Examples.CSharp.Core.csproj --no-restore --framework netcoreapp2.1 --configuration Debug -o ./../out +## end build + +FROM mcr.microsoft.com/dotnet/core/runtime:2.1 + +# begin GroupDocs.Annotation dependencies - https://docs.groupdocs.com/display/annotationnet/.NET+Standard+2.0+API+Limitations +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y libgdiplus && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y libc6-dev + +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y libfontconfig1 + +RUN echo "deb http://httpredir.debian.org/debian jessie main contrib" > /etc/apt/sources.list \ + && echo "deb http://security.debian.org/ jessie/updates main contrib" >> /etc/apt/sources.list \ + && echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | debconf-set-selections \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y ttf-mscorefonts-installer \ + && apt-get clean \ + && apt-get autoremove -y \ + && rm -rf /var/lib/apt/lists/* +# end GroupDocs.Annotation dependencies + +WORKDIR /examples +COPY --from=buid_env /examples/out . +ENTRYPOINT ["dotnet", "GroupDocs.Annotation.Examples.CSharp.Core.dll"] \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp.Core/GroupDocs.Annotation.Examples.CSharp.Core.csproj b/Examples/GroupDocs.Annotation.Examples.CSharp.Core/GroupDocs.Annotation.Examples.CSharp.Core.csproj new file mode 100644 index 0000000..1036d1c --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp.Core/GroupDocs.Annotation.Examples.CSharp.Core.csproj @@ -0,0 +1,20 @@ + + + + Exe + netcoreapp3.1 + + + + TRACE;NETCOREAPP + + + + + + + + + + + diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp.Core/RunExamples.cs b/Examples/GroupDocs.Annotation.Examples.CSharp.Core/RunExamples.cs new file mode 100644 index 0000000..660f5f0 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp.Core/RunExamples.cs @@ -0,0 +1,281 @@ +using GroupDocs.Annotation.Examples.CSharp.AdvancedUsage; +using GroupDocs.Annotation.Examples.CSharp.BasicUsage; +using System; +using GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Loading; +using GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Saving; +using GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument; + +namespace GroupDocs.Annotation.Examples.CSharp +{ + class RunExamples + { + static void Main(string[] args) + { + Console.WriteLine("Open RunExamples.cs. \nIn Main() method uncomment the example that you want to run."); + Console.WriteLine("====================================================="); + + //NOTE: Please uncomment the example you want to try out + #region Quick Start + SetLicenseFromFile.Run(); + //SetLicenseFromStream.Run(); + //SetMeteredLicense.Run(); + #endregion + + #region Get supported file formats + GetSupportedFileFormats.Run(); + #endregion + + #region Get All version keys from document + GetFileInfo.Run(); + #endregion + + #region Get List of Annotations from document using version key + GetListOfAnnotationsUsingVersionKey.Run(); + #endregion + + #region Get file info + GetFileInfo.Run(); + #endregion + + #region Getting Size Of Document Pages + GettingSizeOfDocumentPage.Run(); + #endregion + + #region Generating preview without comments + GeneratePreviewWithoutComments.Run(); + #endregion + + #region Generating preview without annotations + GeneratePreviewWithoutAnnotations.Run(); + #endregion + + #region Loading document wuth custom fonts + LoadingCustomFonts.Run(); + #endregion + + #region Put image over another image + PutImageAnnotationOverText.Run(); + #endregion + + #region Set resolution for document preview + SetDocumentPreviewResolution.Run(); + #endregion + + #region Load document from local disk + LoadDocumentFromLocalDisk.Run(); + #endregion + + #region Load document from stream + LoadDocumentFromStream.Run(); + #endregion + + #region Load password-protected documents + LoadPasswordProtectedDocuments.Run(); + #endregion + + #region Load document from url + //LoadDocumentFromUrl.Run(); + #endregion + + #region Load document from FTP + //LoadDocumentFromFtp.Run(); + #endregion + + #region Load document from AmazonS3 + //LoadDocumentFromAmazonS3.Run(); + #endregion + + #region Load document from Azure + //LoadDocumentFromAzure.Run(); + #endregion + + #region Load document from custom version + LoadingAnnotatedDocumentVersion.Run(); + #endregion + + #region Extract annotations from document + ExtractAnnotationsFromDocument.Run(); + #endregion + + #region Remove annotation from document by Annotation + RemoveAnnotationByAnnotation.Run(); + #endregion + + #region Reading annotation replies from annotated document + ReadRepliesFromDocument.Run(); + #endregion + + #region Remove annotation from document by Id + RemoveAnnotationById.Run(); + #endregion + + #region Remove annotations from document by Annotations + RemoveAnnotationsByAnnotations.Run(); + #endregion + + #region Remove annotations from document by Ids + RemoveAnnotationsByIds.Run(); + #endregion + + #region Remove annotations from document using SaveOptions + RemoveAnnotationUsingSaveOptions.Run(); + #endregion + + #region Generate document pages preview + GenerateDocumentPagesPreview.Run(); + #endregion + + #region Generate document pages preview with specified worksheet columns + GeneratePreviewWorksheetColumns.Run(); + #endregion + + #region Getting information about document's text content + GetDocumentTextContentInformation.Run(); + #endregion + + #region Saving Document as Input File that was used to create annotator + SavingAsInputFromFilePath.Run(); + #endregion + + #region Saving Document as Input File that was used to create annotator + SavingAsInputFromFilePath.Run(); + #endregion + + #region Saving Document as Input File that was used to create annotator + SavingAsInputFromFilePathWithOptions.Run(); + #endregion + + #region Saving Document as Input File that was used to create annotator + SavingAsInputFromFileStream.Run(); + #endregion + + #region Saving Document as Input File that was used to create annotator + SavingAsInputFromFileStreamWithOptions.Run(); + #endregion + + #region Saving specific page range + SavingSpecificPageRange.Run(); + #endregion + + #region Saving only pages with annotations + SavingOnlyPagesWithAnnotations.Run(); + #endregion + + #region Filtering annotation types + FilteringAnnotationTypes.Run(); + #endregion + + #region Add area annotation + AddAreaAnnotation.Run(); + #endregion + + #region Add arrow annotation + AddArrowAnnotation.Run(); + #endregion + + #region Add distance annotation + AddDistanceAnnotation.Run(); + #endregion + + #region Add ellipse annotation + AddEllipseAnnotation.Run(); + #endregion + + #region Add image annotation using local path + AddImageAnnotationLocalPath.Run(); + #endregion + + #region Add image annotation using remote path + AddImageAnnotationRemotePath.Run(); + #endregion + + #region Add link annotation + AddLinkAnnotation.Run(); + #endregion + + #region Add point annotation + AddPointAnnotation.Run(); + #endregion + + #region Add resources redaction annotation + AddResourcesRedactionAnnotation.Run(); + #endregion + + #region Add text highlight annotation + AddTextHighlightAnnotation.Run(); + #endregion + + #region Add text field annotation + AddTextFieldAnnotation.Run(); + #endregion + + #region Add text redaction annotation + AddTextRedactionAnnotation.Run(); + #endregion + + #region Add text replacement annotation + AddTextReplacementAnnotation.Run(); + #endregion + + #region Add text strikeout annotation + AddTextStrikeoutAnnotation.Run(); + #endregion + + #region Add polyline annotation + AddPolylineAnnotation.Run(); + #endregion + + #region Add underline annotation + AddTextUnderlineAnnotation.Run(); + #endregion + + #region Add squiggly annotation + AddTextSquigglyAnnotation.Run(); + #endregion + + #region Add checkbox annotation + AddCheckBoxComponent.Run(); + #endregion + + #region Add dropdown annotation + AddDropdownComponent.Run(); + #endregion + + #region Add button annotation + AddButtonComponent.Run(); + #endregion + + #region Add watermark annotation + AddWatermarkAnnotation.Run(); + #endregion + + #region Add replies annotation + AddReplies.Run(); + #endregion + + #region Add search text annotation + AddSearchTextFragmentAnnotation.Run(); + #endregion + + #region Remove replies + RemoveReplies.Run(); + #endregion + + #region Remove replies by Id + RemoveRepliesById.Run(); + #endregion + + #region Remove replies by user name + RemoveRepliesByUserName.Run(); + #endregion + + #region Update annotation + UpdateAnnotation.Run(); + #endregion + + Console.WriteLine(); + Console.WriteLine("All done."); + Console.ReadKey(); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp.Framework/App.config b/Examples/GroupDocs.Annotation.Examples.CSharp.Framework/App.config new file mode 100644 index 0000000..8ca68c5 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp.Framework/App.config @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp.Framework/GroupDocs.Annotation.Examples.CSharp.Framework.csproj b/Examples/GroupDocs.Annotation.Examples.CSharp.Framework/GroupDocs.Annotation.Examples.CSharp.Framework.csproj new file mode 100644 index 0000000..7b16352 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp.Framework/GroupDocs.Annotation.Examples.CSharp.Framework.csproj @@ -0,0 +1,105 @@ + + + + + Debug + AnyCPU + {B910D08A-C433-409C-B8F4-0EE60B9D723E} + Exe + GroupDocs.Annotation.Examples.CSharp + GroupDocs.Annotation.Examples.CSharp + v4.7.2 + 512 + true + true + + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\AWSSDK.Core.3.3.104.1\lib\net45\AWSSDK.Core.dll + + + ..\packages\AWSSDK.S3.3.3.109.1\lib\net45\AWSSDK.S3.dll + + + ..\packages\GroupDocs.Annotation.25.11.0\lib\net462\GroupDocs.Annotation.dll + + + ..\packages\Microsoft.Azure.KeyVault.Core.1.0.0\lib\net40\Microsoft.Azure.KeyVault.Core.dll + + + ..\packages\WindowsAzure.Storage.9.3.3\lib\net45\Microsoft.WindowsAzure.Storage.dll + + + ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll + True + + + ..\packages\SkiaSharp.2.88.6\lib\net462\SkiaSharp.dll + + + + ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll + + + + + ..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll + + + + ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll + + + ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll + + + + + + + + + + + + + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp.Framework/Properties/AssemblyInfo.cs b/Examples/GroupDocs.Annotation.Examples.CSharp.Framework/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..4e38742 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp.Framework/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанные с этой сборкой. +[assembly: AssemblyTitle("GroupDocs.Annotation.Examples.CSharp")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("GroupDocs.Annotation.Examples.CSharp")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// из модели COM задайте для атрибута ComVisible этого типа значение true. +[assembly: ComVisible(false)] + +// Следующий GUID представляет идентификатор typelib, если этот проект доступен из модели COM +[assembly: Guid("b910d08a-c433-409c-b8f4-0ee60b9d723e")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Номер редакции +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp.Framework/RunExamples.cs b/Examples/GroupDocs.Annotation.Examples.CSharp.Framework/RunExamples.cs new file mode 100644 index 0000000..7b2b59e --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp.Framework/RunExamples.cs @@ -0,0 +1,284 @@ +using System; + +namespace GroupDocs.Annotation.Examples.CSharp +{ + using GroupDocs.Annotation.Examples.CSharp.BasicUsage; + using GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument; + + using GroupDocs.Annotation.Examples.CSharp.AdvancedUsage; + using GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Loading; + using GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Saving; + + class RunExamples + { + static void Main(string[] args) + { + Console.WriteLine("Open RunExamples.cs. \nIn Main() method uncomment the example that you want to run."); + Console.WriteLine("====================================================="); + + //NOTE: Please uncomment the example you want to try out + #region Quick Start + SetLicenseFromFile.Run(); + //SetLicenseFromStream.Run(); + //SetMeteredLicense.Run(); + #endregion + + #region Get supported file formats + GetSupportedFileFormats.Run(); + #endregion + + #region Get All version keys from document + GetFileInfo.Run(); + #endregion + + #region Get List of Annotations from document using version key + GetListOfAnnotationsUsingVersionKey.Run(); + #endregion + + #region Get file info + GetAllVersionKeysOnDocument.Run(); + #endregion + + #region Getting Size Of Document Pages + GettingSizeOfDocumentPage.Run(); + #endregion + + #region Generating preview without comments + GeneratePreviewWithoutComments.Run(); + #endregion + + #region Generating preview without annotations + GeneratePreviewWithoutAnnotations.Run(); + #endregion + + #region Loading document wuth custom fonts + LoadingCustomFonts.Run(); + #endregion + + #region Put image over another image + PutImageAnnotationOverText.Run(); + #endregion + + #region Set resolution for document preview + SetDocumentPreviewResolution.Run(); + #endregion + + #region Load document from local disk + LoadDocumentFromLocalDisk.Run(); + #endregion + + #region Load document from stream + LoadDocumentFromStream.Run(); + #endregion + + #region Load password-protected documents + LoadPasswordProtectedDocuments.Run(); + #endregion + + #region Load document from url + //LoadDocumentFromUrl.Run(); + #endregion + + #region Load document from FTP + //LoadDocumentFromFtp.Run(); + #endregion + + #region Load document from AmazonS3 + //LoadDocumentFromAmazonS3.Run(); + #endregion + + #region Load document from Azure + //LoadDocumentFromAzure.Run(); + #endregion + + #region Load document from custom version + LoadingAnnotatedDocumentVersion.Run(); + #endregion + + #region Extract annotations from document + ExtractAnnotationsFromDocument.Run(); + #endregion + + #region Remove annotation from document by Annotation + RemoveAnnotationByAnnotation.Run(); + #endregion + + #region Reading annotation replies from annotated document + ReadRepliesFromDocument.Run(); + #endregion + + #region Remove annotation from document by Id + RemoveAnnotationById.Run(); + #endregion + + #region Remove annotations from document by Annotations + RemoveAnnotationsByAnnotations.Run(); + #endregion + + #region Remove annotations from document by Ids + RemoveAnnotationsByIds.Run(); + #endregion + + #region Remove annotations from document using SaveOptions + RemoveAnnotationUsingSaveOptions.Run(); + #endregion + + #region Generate document pages preview + GenerateDocumentPagesPreview.Run(); + #endregion + + #region Generate document pages preview with specified worksheet columns + GeneratePreviewWorksheetColumns.Run(); + #endregion + + #region Getting information about document's text content + GetDocumentTextContentInformation.Run(); + #endregion + + #region Saving Document as Input File that was used to create annotator + SavingAsInputFromFilePath.Run(); + #endregion + + #region Saving Document as Input File that was used to create annotator + SavingAsInputFromFilePathWithOptions.Run(); + #endregion + + #region Saving Document as Input File that was used to create annotator + SavingAsInputFromFileStream.Run(); + #endregion + + #region Saving Document as Input File that was used to create annotator + SavingAsInputFromFileStreamWithOptions.Run(); + #endregion + + #region Saving Document version with custom name + SavingDocumentVersionWithCustomName.Run(); + #endregion + + #region Saving specific page range + SavingSpecificPageRange.Run(); + #endregion + + #region Saving only pages with annotations + SavingOnlyPagesWithAnnotations.Run(); + #endregion + + #region Filtering annotation types + /// TODO: Raised an exception with 19.11 + // FilteringAnnotationTypes.Run(); + #endregion + + #region Add area annotation + AddAreaAnnotation.Run(); + #endregion + + #region Add arrow annotation + AddArrowAnnotation.Run(); + #endregion + + #region Add distance annotation + AddDistanceAnnotation.Run(); + #endregion + + #region Add ellipse annotation + AddEllipseAnnotation.Run(); + #endregion + + #region Add image annotation using local path + AddImageAnnotationLocalPath.Run(); + #endregion + + #region Add image annotation using remote path + AddImageAnnotationRemotePath.Run(); + #endregion + + #region Add link annotation + AddLinkAnnotation.Run(); + #endregion + + #region Add point annotation + AddPointAnnotation.Run(); + #endregion + + #region Add resources redaction annotation + AddResourcesRedactionAnnotation.Run(); + #endregion + + #region Add text highlight annotation + AddTextHighlightAnnotation.Run(); + #endregion + + #region Add text field annotation + AddTextFieldAnnotation.Run(); + #endregion + + #region Add search text annotation + AddSearchTextFragmentAnnotation.Run(); + #endregion + + #region Add text redaction annotation + AddTextRedactionAnnotation.Run(); + #endregion + + #region Add text replacement annotation + AddTextReplacementAnnotation.Run(); + #endregion + + #region Add text strikeout annotation + AddTextStrikeoutAnnotation.Run(); + #endregion + + #region Add polyline annotation + AddPolylineAnnotation.Run(); + #endregion + + #region Add underline annotation + AddTextUnderlineAnnotation.Run(); + #endregion + + #region Add squiggly annotation + AddTextUnderlineAnnotation.Run(); + #endregion + + #region Add checkbox component + AddDropdownComponent.Run(); + #endregion + + #region Add dropdown annotation + AddDropdownComponent.Run(); + #endregion + + #region Add button annotation + AddButtonComponent.Run(); + #endregion + + #region Add watermark annotation + AddWatermarkAnnotation.Run(); + #endregion + + #region Add replies annotation + AddReplies.Run(); + #endregion + + #region Remove replies + RemoveReplies.Run(); + #endregion + + #region Remove replies by Id + RemoveRepliesById.Run(); + #endregion + + #region Remove replies by user name + RemoveRepliesByUserName.Run(); + #endregion + + #region Update annotation + UpdateAnnotation.Run(); + #endregion + + Console.WriteLine(); + Console.WriteLine("All done."); + Console.ReadKey(); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp.Framework/packages.config b/Examples/GroupDocs.Annotation.Examples.CSharp.Framework/packages.config new file mode 100644 index 0000000..63734c2 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp.Framework/packages.config @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp.Net/GroupDocs.Annotation.Examples.CSharp.Net.csproj b/Examples/GroupDocs.Annotation.Examples.CSharp.Net/GroupDocs.Annotation.Examples.CSharp.Net.csproj new file mode 100644 index 0000000..d886c33 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp.Net/GroupDocs.Annotation.Examples.CSharp.Net.csproj @@ -0,0 +1,17 @@ + + + + Exe + net6.0 + enable + enable + + + + + + + + + + diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp.Net/RunExamples.cs b/Examples/GroupDocs.Annotation.Examples.CSharp.Net/RunExamples.cs new file mode 100644 index 0000000..ba645df --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp.Net/RunExamples.cs @@ -0,0 +1,284 @@ +using System; + +namespace GroupDocs.Annotation.Examples.CSharp +{ + using GroupDocs.Annotation.Examples.CSharp.BasicUsage; + using GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument; + + using GroupDocs.Annotation.Examples.CSharp.AdvancedUsage; + using GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Loading; + using GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Saving; + + class RunExamples + { + static void Main(string[] args) + { + Console.WriteLine("Open RunExamples.cs. \nIn Main() method uncomment the example that you want to run."); + Console.WriteLine("====================================================="); + + //NOTE: Please uncomment the example you want to try out + #region Quick Start + SetLicenseFromFile.Run(); + //SetLicenseFromStream.Run(); + //SetMeteredLicense.Run(); + #endregion + + #region Get supported file formats + GetSupportedFileFormats.Run(); + #endregion + + #region Get All version keys from document + GetFileInfo.Run(); + #endregion + + #region Get List of Annotations from document using version key + GetListOfAnnotationsUsingVersionKey.Run(); + #endregion + + #region Get file info + GetAllVersionKeysOnDocument.Run(); + #endregion + + #region Getting Size Of Document Pages + GettingSizeOfDocumentPage.Run(); + #endregion + + #region Generating preview without comments + GeneratePreviewWithoutComments.Run(); + #endregion + + #region Generating preview without annotations + GeneratePreviewWithoutAnnotations.Run(); + #endregion + + #region Loading document wuth custom fonts + LoadingCustomFonts.Run(); + #endregion + + #region Put image over another image + PutImageAnnotationOverText.Run(); + #endregion + + #region Set resolution for document preview + SetDocumentPreviewResolution.Run(); + #endregion + + #region Load document from local disk + LoadDocumentFromLocalDisk.Run(); + #endregion + + #region Load document from stream + LoadDocumentFromStream.Run(); + #endregion + + #region Load password-protected documents + LoadPasswordProtectedDocuments.Run(); + #endregion + + #region Load document from url + //LoadDocumentFromUrl.Run(); + #endregion + + #region Load document from FTP + //LoadDocumentFromFtp.Run(); + #endregion + + #region Load document from AmazonS3 + //LoadDocumentFromAmazonS3.Run(); + #endregion + + #region Load document from Azure + //LoadDocumentFromAzure.Run(); + #endregion + + #region Load document from custom version + LoadingAnnotatedDocumentVersion.Run(); + #endregion + + #region Extract annotations from document + ExtractAnnotationsFromDocument.Run(); + #endregion + + #region Remove annotation from document by Annotation + RemoveAnnotationByAnnotation.Run(); + #endregion + + #region Reading annotation replies from annotated document + ReadRepliesFromDocument.Run(); + #endregion + + #region Remove annotation from document by Id + RemoveAnnotationById.Run(); + #endregion + + #region Remove annotations from document by Annotations + RemoveAnnotationsByAnnotations.Run(); + #endregion + + #region Remove annotations from document by Ids + RemoveAnnotationsByIds.Run(); + #endregion + + #region Remove annotations from document using SaveOptions + RemoveAnnotationUsingSaveOptions.Run(); + #endregion + + #region Generate document pages preview + GenerateDocumentPagesPreview.Run(); + #endregion + + #region Generate document pages preview with specified worksheet columns + GeneratePreviewWorksheetColumns.Run(); + #endregion + + #region Getting information about document's text content + GetDocumentTextContentInformation.Run(); + #endregion + + #region Saving Document as Input File that was used to create annotator + SavingAsInputFromFilePath.Run(); + #endregion + + #region Saving Document as Input File that was used to create annotator + SavingAsInputFromFilePathWithOptions.Run(); + #endregion + + #region Saving Document as Input File that was used to create annotator + SavingAsInputFromFileStream.Run(); + #endregion + + #region Saving Document as Input File that was used to create annotator + SavingAsInputFromFileStreamWithOptions.Run(); + #endregion + + #region Saving Document version with custom name + SavingDocumentVersionWithCustomName.Run(); + #endregion + + #region Saving specific page range + SavingSpecificPageRange.Run(); + #endregion + + #region Saving only pages with annotations + SavingOnlyPagesWithAnnotations.Run(); + #endregion + + #region Filtering annotation types + /// TODO: Raised an exception with 19.11 + // FilteringAnnotationTypes.Run(); + #endregion + + #region Add area annotation + AddAreaAnnotation.Run(); + #endregion + + #region Add arrow annotation + AddArrowAnnotation.Run(); + #endregion + + #region Add distance annotation + AddDistanceAnnotation.Run(); + #endregion + + #region Add ellipse annotation + AddEllipseAnnotation.Run(); + #endregion + + #region Add image annotation using local path + AddImageAnnotationLocalPath.Run(); + #endregion + + #region Add image annotation using remote path + AddImageAnnotationRemotePath.Run(); + #endregion + + #region Add link annotation + AddLinkAnnotation.Run(); + #endregion + + #region Add point annotation + AddPointAnnotation.Run(); + #endregion + + #region Add resources redaction annotation + AddResourcesRedactionAnnotation.Run(); + #endregion + + #region Add text highlight annotation + AddTextHighlightAnnotation.Run(); + #endregion + + #region Add text field annotation + AddTextFieldAnnotation.Run(); + #endregion + + #region Add search text annotation + AddSearchTextFragmentAnnotation.Run(); + #endregion + + #region Add text redaction annotation + AddTextRedactionAnnotation.Run(); + #endregion + + #region Add text replacement annotation + AddTextReplacementAnnotation.Run(); + #endregion + + #region Add text strikeout annotation + AddTextStrikeoutAnnotation.Run(); + #endregion + + #region Add polyline annotation + AddPolylineAnnotation.Run(); + #endregion + + #region Add underline annotation + AddTextUnderlineAnnotation.Run(); + #endregion + + #region Add squiggly annotation + AddTextUnderlineAnnotation.Run(); + #endregion + + #region Add checkbox component + AddDropdownComponent.Run(); + #endregion + + #region Add dropdown annotation + AddDropdownComponent.Run(); + #endregion + + #region Add button annotation + AddButtonComponent.Run(); + #endregion + + #region Add watermark annotation + AddWatermarkAnnotation.Run(); + #endregion + + #region Add replies annotation + AddReplies.Run(); + #endregion + + #region Remove replies + RemoveReplies.Run(); + #endregion + + #region Remove replies by Id + RemoveRepliesById.Run(); + #endregion + + #region Remove replies by user name + RemoveRepliesByUserName.Run(); + #endregion + + #region Update annotation + UpdateAnnotation.Run(); + #endregion + + Console.WriteLine(); + Console.WriteLine("All done."); + Console.ReadKey(); + } + } +} \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp.sln b/Examples/GroupDocs.Annotation.Examples.CSharp.sln index ec072a5..ad5510b 100644 --- a/Examples/GroupDocs.Annotation.Examples.CSharp.sln +++ b/Examples/GroupDocs.Annotation.Examples.CSharp.sln @@ -1,33 +1,45 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{3B6C7F37-E178-49DB-A2A3-569261B1152E}" - ProjectSection(SolutionItems) = preProject - .nuget\NuGet.Config = .nuget\NuGet.Config - .nuget\NuGet.exe = .nuget\NuGet.exe - .nuget\NuGet.targets = .nuget\NuGet.targets - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GroupDocs.AnnotationExamples", "GroupDocs.Annotation.Examples.CSharp\GroupDocs.AnnotationExamples\GroupDocs.AnnotationExamples.csproj", "{43CC4EF5-6D81-4A92-BB76-950020FC7E9F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Groupdocs.AnnotationDataStorage", "GroupDocs.Annotation.Examples.CSharp\GroupDocs.AnnotationDataStorage\Groupdocs.AnnotationDataStorage.csproj", "{352BBB7A-98AF-4B05-B8D7-74334EDCE61C}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {43CC4EF5-6D81-4A92-BB76-950020FC7E9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {43CC4EF5-6D81-4A92-BB76-950020FC7E9F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {43CC4EF5-6D81-4A92-BB76-950020FC7E9F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {43CC4EF5-6D81-4A92-BB76-950020FC7E9F}.Release|Any CPU.Build.0 = Release|Any CPU - {352BBB7A-98AF-4B05-B8D7-74334EDCE61C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {352BBB7A-98AF-4B05-B8D7-74334EDCE61C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {352BBB7A-98AF-4B05-B8D7-74334EDCE61C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {352BBB7A-98AF-4B05-B8D7-74334EDCE61C}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.4.33213.308 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GroupDocs.Annotation.Examples.CSharp.Framework", "GroupDocs.Annotation.Examples.CSharp.Framework\GroupDocs.Annotation.Examples.CSharp.Framework.csproj", "{B910D08A-C433-409C-B8F4-0EE60B9D723E}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "GroupDocs.Annotation.Examples.CSharp", "GroupDocs.Annotation.Examples.CSharp\GroupDocs.Annotation.Examples.CSharp.shproj", "{663EDCB2-E917-4487-8A41-1ADAB5E18559}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GroupDocs.Annotation.Examples.CSharp.Core", "GroupDocs.Annotation.Examples.CSharp.Core\GroupDocs.Annotation.Examples.CSharp.Core.csproj", "{1CF87890-1258-42A0-AB6D-6EEA739D3A51}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GroupDocs.Annotation.Examples.CSharp.Net", "GroupDocs.Annotation.Examples.CSharp.Net\GroupDocs.Annotation.Examples.CSharp.Net.csproj", "{106718F4-BCBF-433C-B92F-C6986BAE933D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B910D08A-C433-409C-B8F4-0EE60B9D723E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B910D08A-C433-409C-B8F4-0EE60B9D723E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B910D08A-C433-409C-B8F4-0EE60B9D723E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B910D08A-C433-409C-B8F4-0EE60B9D723E}.Release|Any CPU.Build.0 = Release|Any CPU + {1CF87890-1258-42A0-AB6D-6EEA739D3A51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1CF87890-1258-42A0-AB6D-6EEA739D3A51}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1CF87890-1258-42A0-AB6D-6EEA739D3A51}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1CF87890-1258-42A0-AB6D-6EEA739D3A51}.Release|Any CPU.Build.0 = Release|Any CPU + {106718F4-BCBF-433C-B92F-C6986BAE933D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {106718F4-BCBF-433C-B92F-C6986BAE933D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {106718F4-BCBF-433C-B92F-C6986BAE933D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {106718F4-BCBF-433C-B92F-C6986BAE933D}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {37C0B8EB-A7D7-4082-9EA0-B8A420C8CE53} + EndGlobalSection + GlobalSection(SharedMSBuildProjectFiles) = preSolution + GroupDocs.Annotation.Examples.CSharp\GroupDocs.Annotation.Examples.CSharp.projitems*{106718f4-bcbf-433c-b92f-c6986bae933d}*SharedItemsImports = 5 + GroupDocs.Annotation.Examples.CSharp\GroupDocs.Annotation.Examples.CSharp.projitems*{1cf87890-1258-42a0-ab6d-6eea739d3a51}*SharedItemsImports = 5 + GroupDocs.Annotation.Examples.CSharp\GroupDocs.Annotation.Examples.CSharp.projitems*{663edcb2-e917-4487-8a41-1adab5e18559}*SharedItemsImports = 13 + GroupDocs.Annotation.Examples.CSharp\GroupDocs.Annotation.Examples.CSharp.projitems*{b910d08a-c433-409c-b8f4-0ee60b9d723e}*SharedItemsImports = 4 + EndGlobalSection +EndGlobal diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/ChangeImageQuality.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/ChangeImageQuality.cs new file mode 100644 index 0000000..1933f10 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/ChangeImageQuality.cs @@ -0,0 +1,21 @@ +using System; +using System.IO; +using GroupDocs.Annotation; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage +{ + class ChangeImageQuality + { + public static void Run() + { + using (Annotator annotator = new Annotator("input.pdf-file")) // specify the path to the input PDF file +{ + string dataDir = "input.pdf"; // specify the path to the input PDF file + string data = "image.jpg"; // the path to the JPG file + int pageNumber = 1; // set the page where the image will be inserted + int imageQuality = 10; // set image quality + annotator.Document.AddImageToDocument(dataDir, data, pageNumber, imageQuality); +} + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/ConfigureAnnotatorSettings.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/ConfigureAnnotatorSettings.cs new file mode 100644 index 0000000..ee73057 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/ConfigureAnnotatorSettings.cs @@ -0,0 +1,54 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Cache; + using GroupDocs.Annotation.Logging; + using GroupDocs.Annotation.Options; + + /// + /// This example demonstrates how to configure annotator settings with caching and logging. + /// + internal class ConfigureAnnotatorSettings + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # ConfigureAnnotatorSettings : using custom cache and logger when generating previews."); + + string outputDirectory = Constants.GetOutputDirectoryPath(); + string cacheDirectory = Path.Combine(outputDirectory, "cache"); + + if (!Directory.Exists(cacheDirectory)) + { + Directory.CreateDirectory(cacheDirectory); + } + + AnnotatorSettings settings = new AnnotatorSettings + { + Cache = new FileCache(cacheDirectory), + Logger = new ConsoleLogger() + }; + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF, settings)) + { + PreviewOptions previewOptions = new PreviewOptions( + pageNumber => new FileStream(Path.Combine(outputDirectory, $"settings_preview_{pageNumber}.png"), FileMode.Create), + (pageNumber, stream) => stream.Dispose()); + + previewOptions.PreviewFormat = PreviewFormats.PNG; + previewOptions.RenderAnnotations = true; + previewOptions.RenderComments = true; + previewOptions.PageNumbers = new[] { 1, 2 }; + previewOptions.Resolution = 144; + + annotator.Document.GeneratePreview(previewOptions); + } + + Console.WriteLine($"\nPreviews generated with configured settings. Check output in {outputDirectory}."); + } + } +} + diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/ExportAnnotationsFromXMLFile.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/ExportAnnotationsFromXMLFile.cs new file mode 100644 index 0000000..a93ce40 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/ExportAnnotationsFromXMLFile.cs @@ -0,0 +1,18 @@ +using System; +using System.IO; +using GroupDocs.Annotation; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage +{ + class ExportAnnotationsFromXMLFile + { + public static void Run() + { + using (Annotator annotator = new Annotator("input.pdf-file")) // specify the path to the input PDF file +{ + annotator.ExportAnnotationsFromXMLFile("input.XML-file"); // specify the path to the input XML file + annotator.Save("result_export"); +} + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GenerateDocumentPagesPreview.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GenerateDocumentPagesPreview.cs new file mode 100644 index 0000000..020fc0a --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GenerateDocumentPagesPreview.cs @@ -0,0 +1,34 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Options; + + /// + /// This example demonstrates annotating generating previews from document + /// + internal class GenerateDocumentPagesPreview + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # GenerateDocumentPagesPreview : annotating generating previews from document."); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + PreviewOptions previewOptions = new PreviewOptions(pageNumber => + { + var pagePath = Path.Combine(Constants.GetOutputDirectoryPath(), $"result_{pageNumber}.png"); + return File.Create(pagePath); + }); + previewOptions.PreviewFormat = PreviewFormats.PNG; + + previewOptions.PageNumbers = new int[] { 1, 2, 3, 4 }; + annotator.Document.GeneratePreview(previewOptions); + } + Console.WriteLine($"\nDocument previews generated successfully.\nCheck output in {Constants.GetOutputDirectoryPath()}."); + } + } +} \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GeneratePreviewWithoutAnnotations.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GeneratePreviewWithoutAnnotations.cs new file mode 100644 index 0000000..3c96907 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GeneratePreviewWithoutAnnotations.cs @@ -0,0 +1,34 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Options; + + /// + /// This example demonstrates generating preview of document without rendering comments + /// + class GeneratePreviewWithoutAnnotations + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # GeneratePreviewWithoutAnnotations : generating preview of document without rendering comments."); + + using (Annotator annotator = new Annotator(Constants.ANNOTATED_DOCX)) + { + PreviewOptions previewOptions = new PreviewOptions(pageNumber => + { + var pagePath = $"result{pageNumber}.png"; + return File.Create(pagePath); + }); + + previewOptions.PreviewFormat = PreviewFormats.PNG; + previewOptions.PageNumbers = new int[] {1, 2, 3, 4, 5, 6}; + previewOptions.RenderAnnotations = false; + annotator.Document.GeneratePreview(previewOptions); + } + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GeneratePreviewWithoutComments.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GeneratePreviewWithoutComments.cs new file mode 100644 index 0000000..ebdb38b --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GeneratePreviewWithoutComments.cs @@ -0,0 +1,33 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Options; + + /// + /// This example demonstrates generating preview of document without rendering comments + /// + class GeneratePreviewWithoutComments + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # GeneratePreviewWithoutComments : generating preview of document without rendering comments."); + + using (Annotator annotator = new Annotator(Constants.ANNOTATED_DOCX)) + { + PreviewOptions previewOptions = new PreviewOptions(pageNumber => + { + var pagePath = $"result{pageNumber}.png"; + return File.Create(pagePath); + }); + previewOptions.PreviewFormat = PreviewFormats.PNG; + previewOptions.PageNumbers = new int[] { 1, 2, 3, 4, 5, 6 }; + previewOptions.RenderComments = false; + annotator.Document.GeneratePreview(previewOptions); + } + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GeneratePreviewWorksheetColumns.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GeneratePreviewWorksheetColumns.cs new file mode 100644 index 0000000..89c9a5d --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GeneratePreviewWorksheetColumns.cs @@ -0,0 +1,34 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Options; + + /// + /// This example demonstrates generating previews from document with specified worksheet columns + /// + internal class GeneratePreviewWorksheetColumns + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # GeneratePreviewWorksheetColumns : generating previews from document with specified worksheet columns."); + + PreviewOptions previewOptions = + new PreviewOptions( + pageNumber => new FileStream(Path.Combine(Constants.GetOutputDirectoryPath(), $"cells_page{pageNumber}.png"), FileMode.Create), + (number, stream) => stream.Dispose() + ); + previewOptions.WorksheetColumns.Add(new WorksheetColumnsRange("Sheet1", 2, 3)); + previewOptions.WorksheetColumns.Add(new WorksheetColumnsRange("Sheet1", 1, 1)); + + using (Annotator annotator = new Annotator(Constants.CELLS_INPUT)) + { + annotator.Document.GeneratePreview(previewOptions); + } + Console.WriteLine($"\nDocument previews generated successfully.\nCheck output in {Constants.GetOutputDirectoryPath()}."); + } + } +} \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GetAllVersionKeysOnDocument.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GetAllVersionKeysOnDocument.cs new file mode 100644 index 0000000..e8526a9 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GetAllVersionKeysOnDocument.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage +{ + using GroupDocs.Annotation; + + /// + /// This example demonstrates getting all version keys from document + /// + class GetAllVersionKeysOnDocument + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # GetAllVersionKeysOnDocument : getting all version keys from document."); + + + using (Annotator annotator = new Annotator(Constants.ANNOTATED_WITH_VERSIONS)) + { + List versionKeys = annotator.GetVersionsList(); + } + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GetDocumentTextContentInformation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GetDocumentTextContentInformation.cs new file mode 100644 index 0000000..3388ceb --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GetDocumentTextContentInformation.cs @@ -0,0 +1,38 @@ +using System; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models; + + /// + /// This example demonstrates how to get an information about document's text content + /// + class GetDocumentTextContentInformation + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # GetDocumentTextContentInformation : get an information about document's text content."); + + using (Annotator annotator = new Annotator(Constants.ANNOTATED_DOCX)) + { + IDocumentInfo documentInfo = annotator.Document.GetDocumentInfo(); + + foreach (PageInfo page in documentInfo.PagesInfo) + { + //Here you can get information about page through the 'page' object. + Console.WriteLine("Page number {0}, width: {1} and height: {2}", page.PageNumber, page.Width, page.Height); + + foreach (TextLineInfo textLine in page.TextLines) + { + //Here you can get information about every text line on page, through the 'textLine' object. + Console.WriteLine("\tText line. '{0}'", textLine.Text); + Console.WriteLine("\t\tText width {0} and height {1}. Top indent: {2}, left indent: {3}", + textLine.Width, textLine.Height, textLine.TopIndent, textLine.LeftIndent); + } + } + } + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GetListOfAnnotationsUsingVersionKey.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GetListOfAnnotationsUsingVersionKey.cs new file mode 100644 index 0000000..300be48 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/GetListOfAnnotationsUsingVersionKey.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates getting list of annotations from document using version key + /// + class GetListOfAnnotationsUsingVersionKey + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # GetListOfAnnotationsUsingVersionKey : getting list of annotations from document using version key."); + + using (Annotator annotator = new Annotator(Constants.ANNOTATED_WITH_VERSIONS)) + { + List annotations = annotator.GetVersion("CUSTOM_VERSION"); + } + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/ImportAnnotationsFromDocument.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/ImportAnnotationsFromDocument.cs new file mode 100644 index 0000000..0ed35f1 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/ImportAnnotationsFromDocument.cs @@ -0,0 +1,17 @@ +using System; +using System.IO; +using GroupDocs.Annotation; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage +{ + class ImportAnnotationsFromDocument + { + public static void Run() + { + using (Annotator annotator = new Annotator("input.pdf-file")) // specify the path to the file with the annotated + { + annotator.ImportAnnotationsFromDocument("result.XML-file"); // specify the path to the result XML file + } + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadPasswordProtectedDocuments.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadPasswordProtectedDocuments.cs new file mode 100644 index 0000000..d83dd69 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadPasswordProtectedDocuments.cs @@ -0,0 +1,37 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Loading +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Options; + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates annotating documents that are protected with a password. + /// + class LoadPasswordProtectedDocuments + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # LoadPasswordProtectedDocuments : annotating documents that are protected with a password."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + LoadOptions loadOptions = new LoadOptions() { Password = "1234" }; + using (Annotator annotator = new Annotator(Constants.INPUT_PROTECTED, loadOptions)) + { + AreaAnnotation area = new AreaAnnotation() + { + Box = new Rectangle(100, 100, 100, 100), + BackgroundColor = 65535, + }; + annotator.Add(area); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingAnnotatedDocumentVersion.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingAnnotatedDocumentVersion.cs new file mode 100644 index 0000000..cf4f914 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingAnnotatedDocumentVersion.cs @@ -0,0 +1,31 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Loading +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Options; + /// + /// This example demonstrates loading annotated document versions that were added using save method. + /// + class LoadingAnnotatedDocumentVersion + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # LoadingAnnotatedDocumentVersion : loading annotated document versions that were added using save method."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), + "result" + Path.GetExtension(Constants.INPUT_PDF)); + + LoadOptions loadOptions = new LoadOptions { Version = "FIRST" }; + using (Annotator annotator = new Annotator(Constants.ANNOTATED_WITH_VERSIONS, loadOptions)) + { + var annotations = annotator.Get(); // As you can see, the number of annotations are not the same as you can see at the document. It's because we loaded not from last version + annotator.Save(outputPath); // Now we save this version as separate document, were this version will be added as new, but version from loaded document will be penultimate + } + + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromAmazonS3.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromAmazonS3.cs new file mode 100644 index 0000000..dbbdd2f --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromAmazonS3.cs @@ -0,0 +1,60 @@ +#if !NETCOREAPP + +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Loading +{ + using Amazon.S3; + using Amazon.S3.Model; + + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates loading document from Amazon S3 storage. + /// + class LoadDocumentFromAmazonS3 + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # LoadDocumentFromAmazonS3 : loading document from Amazon S3 storage"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + string key = "sample.pdf"; + using (Annotator annotator = new Annotator(DownloadFile(key))) + { + AreaAnnotation area = new AreaAnnotation() + { + Box = new Rectangle(100, 100, 100, 100), + BackgroundColor = 65535, + }; + annotator.Add(area); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + + private static Stream DownloadFile(string key) + { + AmazonS3Client client = new AmazonS3Client(); + string bucketName = "my-bucket"; + GetObjectRequest request = new GetObjectRequest + { + Key = key, + BucketName = bucketName + }; + using (GetObjectResponse response = client.GetObject(request)) + { + MemoryStream stream = new MemoryStream(); + response.ResponseStream.CopyTo(stream); + stream.Position = 0; + return stream; + } + } + } +} +#endif \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromAzure.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromAzure.cs new file mode 100644 index 0000000..7958eb7 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromAzure.cs @@ -0,0 +1,68 @@ +#if !NETCOREAPP + +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Loading +{ + using Microsoft.WindowsAzure.Storage; + using Microsoft.WindowsAzure.Storage.Auth; + using Microsoft.WindowsAzure.Storage.Blob; + + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates loading document from Azure. + /// + class LoadDocumentFromAzure + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # LoadDocumentFromAzure : loading document from Azure"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + string blobName = "sample.pdf"; + using (Annotator annotator = new Annotator(DownloadFile(blobName))) + { + AreaAnnotation area = new AreaAnnotation() + { + Box = new Rectangle(100, 100, 100, 100), + BackgroundColor = 65535, + }; + annotator.Add(area); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + + public static Stream DownloadFile(string blobName) + { + CloudBlobContainer container = GetContainer(); + CloudBlob blob = container.GetBlobReference(blobName); + MemoryStream memoryStream = new MemoryStream(); + blob.DownloadToStream(memoryStream); + memoryStream.Position = 0; + return memoryStream; + } + + private static CloudBlobContainer GetContainer() + { + string accountName = "***"; + string accountKey = "***"; + string endpoint = $"https://{accountName}.blob.core.windows.net/"; + string containerName = "***"; + StorageCredentials storageCredentials = new StorageCredentials(accountName, accountKey); + CloudStorageAccount cloudStorageAccount = new CloudStorageAccount( + storageCredentials, new Uri(endpoint), null, null, null); + CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient(); + CloudBlobContainer container = cloudBlobClient.GetContainerReference(containerName); + container.CreateIfNotExists(); + return container; + } + } +} +#endif \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromFtp.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromFtp.cs new file mode 100644 index 0000000..9383310 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromFtp.cs @@ -0,0 +1,61 @@ +using System; +using System.IO; +using System.Net; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Loading +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates loading document from FTP. + /// + class LoadDocumentFromFtp + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # LoadDocumentFromFtp : loading document from FTP"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "LoadDocumentFromFtp-result" + Path.GetExtension(Constants.INPUT_PDF)); + + string filePath = "sample.pdf"; + using (Annotator annotator = new Annotator(GetFileFromFtp(filePath))) + { + AreaAnnotation area = new AreaAnnotation() + { + Box = new Rectangle(100, 100, 100, 100), + BackgroundColor = 65535, + }; + annotator.Add(area); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + + private static Stream GetFileFromFtp(string filePath) + { + Uri uri = new Uri(filePath); + FtpWebRequest request = CreateRequest(uri); + using (WebResponse response = request.GetResponse()) + return GetFileStream(response); + } + + private static FtpWebRequest CreateRequest(Uri uri) + { + FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri); + request.Method = WebRequestMethods.Ftp.DownloadFile; + return request; + } + + private static Stream GetFileStream(WebResponse response) + { + MemoryStream fileStream = new MemoryStream(); + using (Stream responseStream = response.GetResponseStream()) + responseStream.CopyTo(fileStream); + fileStream.Position = 0; + return fileStream; + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromLocalDisk.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromLocalDisk.cs new file mode 100644 index 0000000..b6f9b7e --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromLocalDisk.cs @@ -0,0 +1,35 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Loading +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates loading document from file path. + /// + class LoadDocumentFromLocalDisk + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # LoadDocumentFromLocalDisk : loading document from file path."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + AreaAnnotation area = new AreaAnnotation() + { + Box = new Rectangle(100, 100, 100, 100), + BackgroundColor = 65535, + }; + annotator.Add(area); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromStream.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromStream.cs new file mode 100644 index 0000000..7a93ece --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromStream.cs @@ -0,0 +1,35 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Loading +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates loading document from stream. + /// + class LoadDocumentFromStream + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # LoadDocumentFromStream : loading document from Stream"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "LoadDocumentFromStream-result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(File.OpenRead(Constants.INPUT_PDF))) + { + AreaAnnotation area = new AreaAnnotation() + { + Box = new Rectangle(100, 100, 100, 100), + BackgroundColor = 65535, + }; + annotator.Add(area); + annotator.Save(File.Create(outputPath)); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromUrl.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromUrl.cs new file mode 100644 index 0000000..35047b7 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Loading/LoadingDocumentsFromDifferentSources/LoadDocumentFromUrl.cs @@ -0,0 +1,53 @@ +using System; +using System.IO; +using System.Net; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Loading +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates loading document from URL. + /// + class LoadDocumentFromUrl + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # LoadDocumentFromUrl : loading document from URL."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + string url = "https://github.com/groupdocs-annotation/GroupDocs.Annotation-for-.NET/blob/master/Examples/Resources/SampleFiles/input.pdf?raw=true"; + using (Annotator annotator = new Annotator(GetRemoteFile(url))) + { + AreaAnnotation area = new AreaAnnotation() + { + Box = new Rectangle(100, 100, 100, 100), + BackgroundColor = 65535, + }; + annotator.Add(area); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + + private static Stream GetRemoteFile(string url) + { + WebRequest request = WebRequest.Create(url); + using (WebResponse response = request.GetResponse()) + return GetFileStream(response); + } + + private static Stream GetFileStream(WebResponse response) + { + MemoryStream fileStream = new MemoryStream(); + using (Stream responseStream = response.GetResponseStream()) + responseStream.CopyTo(fileStream); + fileStream.Position = 0; + return fileStream; + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/LoadingCustomFonts.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/LoadingCustomFonts.cs new file mode 100644 index 0000000..7d08851 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/LoadingCustomFonts.cs @@ -0,0 +1,37 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Options; + + /// + /// This example demonstrates working with custom font folder for the document processing + /// + class LoadingCustomFonts + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # LoadingCustomFonts : working with custom font folder for the document processing."); + + + using (Annotator annotator = new Annotator(Constants.INPUT_WITH_CUSTOM_FONT, new LoadOptions { FontDirectories = new List { Constants.GetFontDirectory() } })) + { + PreviewOptions previewOptions = new PreviewOptions(pageNumber => + { + var pagePath = Path.Combine(Constants.GetOutputDirectoryPath(), $"result_with_font_{pageNumber}.png"); + return File.Create(pagePath); + }); + + previewOptions.PreviewFormat = PreviewFormats.PNG; + previewOptions.PageNumbers = new int[] { 1, 2, 3, 4 }; + + annotator.Document.GeneratePreview(previewOptions); + } + Console.WriteLine($"\nDocument previews generated successfully.\nCheck output in {Constants.GetOutputDirectoryPath()}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/PutImageAnnotationOverText.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/PutImageAnnotationOverText.cs new file mode 100644 index 0000000..2b9cef1 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/PutImageAnnotationOverText.cs @@ -0,0 +1,39 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates how to add image annotaion over the text + /// + class PutImageAnnotationOverText + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # PutImageAnnotationOverText : adding image annotaion over the text."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result_for_zIndex" + Path.GetExtension(Constants.INPUT_DOCX)); + + using (Annotator annotator = new Annotator(Constants.INPUT_DOCX)) + { + ImageAnnotation image = new ImageAnnotation + { + Box = new Rectangle(100, 100, 100, 100), + CreatedOn = DateTime.Now, + Opacity = 0.7, + PageNumber = 0, + ImagePath = Constants.PICTURE, + ZIndex = 3 + }; + annotator.Add(image); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/RotatitngPdfDocuments.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/RotatitngPdfDocuments.cs new file mode 100644 index 0000000..95d2cd9 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/RotatitngPdfDocuments.cs @@ -0,0 +1,21 @@ +using System; +using System.IO; +using GroupDocs.Annotation.Options; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage +{ + class RotationDocument + { + public static void Run() + { + using (Annotator annotator = new Annotator("input.pdf")) + { + annotator.ProcessPages = 1; + annotator.Rotation = RotationDocument.on90; + annotator.Save("result.pdf"); + } + + Console.WriteLine($"\nThe document is rotated 90 degrees"); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/FilteringAnnotationTypes.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/FilteringAnnotationTypes.cs new file mode 100644 index 0000000..cb8cebf --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/FilteringAnnotationTypes.cs @@ -0,0 +1,44 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Saving +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Options; + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates saving result document with specified annotations + /// + class FilteringAnnotationTypes + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # FilteringAnnotationTypes : saving result document with specified annotations."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + AreaAnnotation area = new AreaAnnotation() + { + Box = new Rectangle(100, 100, 100, 100), + BackgroundColor = 65535, + PageNumber = 0 + }; + EllipseAnnotation ellipse = new EllipseAnnotation() + { + Box = new Rectangle(100, 100, 100, 100), + BackgroundColor = 123456, + PageNumber = 1 + }; + annotator.Add(new List() { area, ellipse }); + annotator.Save(outputPath, new SaveOptions { AnnotationTypes = AnnotationType.Ellipse}); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingAsInputFromFilePath.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingAsInputFromFilePath.cs new file mode 100644 index 0000000..cc0e02f --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingAsInputFromFilePath.cs @@ -0,0 +1,26 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Saving +{ + using GroupDocs.Annotation; + /// + /// This example demonstrates saving result document as document given to create annotator class + /// + class SavingAsInputFromFilePath + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # SavingAsInputFromFilePath : saving result document as document given to create annotator class"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + annotator.Save(); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingAsInputFromFilePathWithOptions.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingAsInputFromFilePathWithOptions.cs new file mode 100644 index 0000000..f48ebbb --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingAsInputFromFilePathWithOptions.cs @@ -0,0 +1,28 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Saving +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Options; + + /// + /// This example demonstrates saving result document as document given to create annotator class + /// + class SavingAsInputFromFilePathWithOptions + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # SavingAsInputFromFilePathWithOptions : saving result document as document given to create annotator class."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + annotator.Save(new SaveOptions { Version = Guid.NewGuid().ToString() }); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingAsInputFromFileSteam.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingAsInputFromFileSteam.cs new file mode 100644 index 0000000..39cec92 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingAsInputFromFileSteam.cs @@ -0,0 +1,29 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Saving +{ + using GroupDocs.Annotation; + /// + /// This example demonstrates saving result document as document given to create annotator class + /// + class SavingAsInputFromFileStream + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # SavingAsInputFromFileStream : saving result document as document given to create annotator class."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), + "result" + Path.GetExtension(Constants.INPUT_PDF)); + using (FileStream fs = new FileStream(Constants.INPUT_PDF, FileMode.Open)) + { + using (Annotator annotator = new Annotator(fs)) + { + annotator.Save(); + } + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingAsInputFromFileStreamWithOptions.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingAsInputFromFileStreamWithOptions.cs new file mode 100644 index 0000000..bb1c020 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingAsInputFromFileStreamWithOptions.cs @@ -0,0 +1,30 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Saving +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Options; + /// + /// This example demonstrates saving result document as document given to create annotator class + /// + class SavingAsInputFromFileStreamWithOptions + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # SavingAsInputFromFileStreamWithOptions : saving result document as document given to create annotator class."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), + "result" + Path.GetExtension(Constants.INPUT_PDF)); + using (FileStream fs = new FileStream(Constants.INPUT_PDF, FileMode.Open)) + { + using (Annotator annotator = new Annotator(fs)) + { + annotator.Save(new SaveOptions{ Version = Guid.NewGuid().ToString() }); + } + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingDocumentVersionWithCustomName.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingDocumentVersionWithCustomName.cs new file mode 100644 index 0000000..9317be1 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingDocumentVersionWithCustomName.cs @@ -0,0 +1,44 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Saving +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Options; + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates saving document version with custom versionKey + /// + class SavingDocumentVersionWithCustomName + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # SavingDocumentVersionWithCustomName : saving document version with custom versionKey."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + AreaAnnotation area = new AreaAnnotation() + { + Box = new Rectangle(100, 100, 100, 100), + BackgroundColor = 65535, + PageNumber = 1 + }; + EllipseAnnotation ellipse = new EllipseAnnotation() + { + Box = new Rectangle(100, 100, 100, 100), + BackgroundColor = 123456, + PageNumber = 1 + }; + annotator.Add(new List() { area, ellipse }); + annotator.Save(outputPath, new SaveOptions { Version = "SECOND" }); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingOnlyPagesWithAnnotations.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingOnlyPagesWithAnnotations.cs new file mode 100644 index 0000000..c2a777b --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingOnlyPagesWithAnnotations.cs @@ -0,0 +1,43 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Saving +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Options; + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + /// + /// This example demonstrates saving result document with specified pages + /// + class SavingOnlyPagesWithAnnotations + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # SavingOnlyPagesWithAnnotations : saving result document with specified pages."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + AreaAnnotation area = new AreaAnnotation() + { + Box = new Rectangle(100, 100, 100, 100), + BackgroundColor = 65535, + PageNumber = 1 + }; + EllipseAnnotation ellipse = new EllipseAnnotation() + { + Box = new Rectangle(100, 100, 100, 100), + BackgroundColor = 123456, + PageNumber = 1 + }; + annotator.Add(new List() { area, ellipse }); + annotator.Save(outputPath, new SaveOptions { OnlyAnnotatedPages = true}); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingSpecificPageRange.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingSpecificPageRange.cs new file mode 100644 index 0000000..7ec2a65 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/Saving/SavingSpecificPageRange.cs @@ -0,0 +1,27 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage.Saving +{ + using GroupDocs.Annotation; + + /// + /// This example demonstrates saving result document with specified pages + /// + class SavingSpecificPageRange + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # SavingSpecificPageRange : loading document from saving result document with specified pages."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + annotator.Save(outputPath, new Options.SaveOptions { FirstPage = 2, LastPage = 4 }); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/SetDocumentPreviewResolution.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/SetDocumentPreviewResolution.cs new file mode 100644 index 0000000..4519c27 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/AdvancedUsage/SetDocumentPreviewResolution.cs @@ -0,0 +1,36 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.AdvancedUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Options; + + /// + /// This example demonstrates generating preview with specifix preview image resolutions + /// + class SetDocumentPreviewResolution + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Advanced Usage] # SetDocumentPreviewResolution : generating preview with specifix preview image resolutions."); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + PreviewOptions previewOptions = new PreviewOptions(pageNumber => + { + var pagePath = Path.Combine(Constants.GetOutputDirectoryPath(), $"result_with_resolution_{pageNumber}.png"); + return File.Create(pagePath); + }); + + previewOptions.PreviewFormat = PreviewFormats.PNG; + previewOptions.Resolution = 144; + + annotator.Document.GeneratePreview(previewOptions); + } + + Console.WriteLine($"\nDocument preview with resolution generated successfully.\nCheck output in {Constants.GetOutputDirectoryPath()}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddAreaAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddAreaAnnotation.cs new file mode 100644 index 0000000..a7eb461 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddAreaAnnotation.cs @@ -0,0 +1,55 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding area annotation. + /// + class AddAreaAnnotation + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddAreaAnnotation : This example demonstrates adding area annotation"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + AreaAnnotation area = new AreaAnnotation + { + BackgroundColor = 65535, + Box = new Rectangle(100, 100, 100, 100), + CreatedOn = DateTime.Now, + Message = "This is area annotation", + Opacity = 0.7, + PageNumber = 0, + PenColor = 65535, + PenStyle = PenStyle.Dot, + PenWidth = 3, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + } + }; + annotator.Add(area); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddArrowAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddArrowAnnotation.cs new file mode 100644 index 0000000..93319a5 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddArrowAnnotation.cs @@ -0,0 +1,53 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding arrow annotation. + /// + class AddArrowAnnotation + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddArrowAnnotation : This example demonstrates adding arrow annotation"); + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + ArrowAnnotation arrow = new ArrowAnnotation + { + Box = new Rectangle(100, 100, 100, 100), + CreatedOn = DateTime.Now, + Message = "This is arrow annotation", + Opacity = 0.7, + PageNumber = 0, + PenColor = 65535, + PenStyle = PenStyle.Dot, + PenWidth = 3, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + } + }; + annotator.Add(arrow); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddDistanceAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddDistanceAnnotation.cs new file mode 100644 index 0000000..d315c03 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddDistanceAnnotation.cs @@ -0,0 +1,53 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding distance annotation. + /// + class AddDistanceAnnotation + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddDistanceAnnotation : This example demonstrates adding distance annotation"); + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + DistanceAnnotation distance = new DistanceAnnotation + { + Box = new Rectangle(200, 150, 200, 30), + CreatedOn = DateTime.Now, + Message = "This is distance annotation", + Opacity = 0.7, + PageNumber = 0, + PenColor = 65535, + PenStyle = PenStyle.Dot, + PenWidth = 3, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + } + }; + annotator.Add(distance); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddEllipseAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddEllipseAnnotation.cs new file mode 100644 index 0000000..59235f9 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddEllipseAnnotation.cs @@ -0,0 +1,55 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding ellipse annotation. + /// + class AddEllipseAnnotation + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddEllipseAnnotation : This example demonstrates adding ellipse annotation"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + EllipseAnnotation ellipse = new EllipseAnnotation + { + BackgroundColor = 65535, + Box = new Rectangle(100, 100, 100, 100), + CreatedOn = DateTime.Now, + Message = "This is ellipse annotation", + Opacity = 0.7, + PageNumber = 0, + PenColor = 65535, + PenStyle = PenStyle.Dot, + PenWidth = 3, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + } + }; + annotator.Add(ellipse); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddImageAnnotationLocalPath.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddImageAnnotationLocalPath.cs new file mode 100644 index 0000000..04c5ae8 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddImageAnnotationLocalPath.cs @@ -0,0 +1,38 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding image annotation with local path. + /// + class AddImageAnnotationLocalPath + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddImageAnnotationLocalPath : This example demonstrates adding adding image annotation with local path"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + ImageAnnotation image = new ImageAnnotation + { + Box = new Rectangle(100, 100, 100, 100), + CreatedOn = DateTime.Now, + Opacity = 0.7, + PageNumber = 0, + ImagePath = Constants.PICTURE + }; + annotator.Add(image); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddImageAnnotationRemotePath.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddImageAnnotationRemotePath.cs new file mode 100644 index 0000000..95e74ed --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddImageAnnotationRemotePath.cs @@ -0,0 +1,38 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding image annotation with remote path. + /// + class AddImageAnnotationRemotePath + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddImageAnnotationRemotePath : This example demonstrates adding image annotation with remote path"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + ImageAnnotation image = new ImageAnnotation + { + Box = new Rectangle(100, 100, 100, 100), + CreatedOn = DateTime.Now, + Opacity = 0.7, + PageNumber = 0, + ImagePath = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png" + }; + annotator.Add(image); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddLinkAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddLinkAnnotation.cs new file mode 100644 index 0000000..976e3ba --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddLinkAnnotation.cs @@ -0,0 +1,71 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding link annotation. + /// + class AddLinkAnnotation + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddLinkAnnotation : This example demonstrates adding link annotation"); + + string inputPath = Constants.INPUT_DOCX; + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), $"AddLinkAnnotation-output{Path.GetExtension(inputPath)}"); + + using (Annotator annotator = new Annotator(inputPath)) + { + try + { + LinkAnnotation link = new LinkAnnotation + { + CreatedOn = DateTime.Now, + Message = "This is link annotation", + Opacity = 0.7, + PageNumber = 0, + BackgroundColor = 16761035, + Points = new List + { + new Point(80, 730), new Point(240, 730), new Point(80, 650), new Point(240, 650) + }, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + }, + Url = "https://www.google.com" + }; + annotator.Add(link); + annotator.Save(outputPath); + } + catch(Exception ex) + { + if (ex.Message.Contains("trial mode")) + { + Helper.WriteError("\nThis example requires license to properly run. " + + "\nVisit the GroupDocs site to obtain either a temporary or permanent license. " + + "\nLearn more about licensing at https://purchase.groupdocs.com/faqs/licensing. " + + "\nLearn how to request temporary license at https://purchase.groupdocs.com/temporary-license."); + } + else throw ex; + } + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddPointAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddPointAnnotation.cs new file mode 100644 index 0000000..e4865fb --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddPointAnnotation.cs @@ -0,0 +1,50 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding point annotation. + /// + class AddPointAnnotation + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddPointAnnotation : This example demonstrates adding point annotation"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + PointAnnotation point = new PointAnnotation + { + Box = new Rectangle(100, 100, 0, 0), + CreatedOn = DateTime.Now, + Message = "This is point annotation", + PageNumber = 0, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + } + }; + annotator.Add(point); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddPolylineAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddPolylineAnnotation.cs new file mode 100644 index 0000000..03ae1e9 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddPolylineAnnotation.cs @@ -0,0 +1,55 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding polyline annotation. + /// + class AddPolylineAnnotation + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddPolylineAnnotation : This example demonstrates adding polyline annotation"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + PolylineAnnotation polyline = new PolylineAnnotation + { + Box = new Rectangle(250, 35, 102, 12), + CreatedOn = DateTime.Now, + Message = "This is polyline annotation", + Opacity = 0.7, + PageNumber = 0, + PenColor = 65535, + PenStyle = PenStyle.Dot, + PenWidth = 3, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + }, + SvgPath = "M250.8280751173709,48.209295774647885l0.6986854460093896,0l0.6986854460093896,-1.3973708920187793l0.6986854460093896,0l0.6986854460093896,-1.3973708920187793l1.3973708920187793,-0.6986854460093896l0.6986854460093896,-0.6986854460093896l0.6986854460093896,0l2.096056338028169,-1.3973708920187793l3.493427230046948,-1.3973708920187793l0.6986854460093896,-0.6986854460093896l1.3973708920187793,-1.3973708920187793l0.6986854460093896,0l1.3973708920187793,-0.6986854460093896l0.6986854460093896,0l0.6986854460093896,-0.6986854460093896l0.6986854460093896,0l0.6986854460093896,0l0,-0.6986854460093896l0.6986854460093896,0l0.6986854460093896,0l1.3973708920187793,0l0,-0.6986854460093896l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l2.096056338028169,-0.6986854460093896l1.3973708920187793,0l0.6986854460093896,0l0.6986854460093896,0l1.3973708920187793,0l1.3973708920187793,0l1.3973708920187793,0l2.096056338028169,0l5.589483568075117,0l1.3973708920187793,0l2.096056338028169,0l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l1.3973708920187793,0l1.3973708920187793,0l0.6986854460093896,0.6986854460093896l1.3973708920187793,0l2.096056338028169,1.3973708920187793l0.6986854460093896,0l0.6986854460093896,0l0,0.6986854460093896l1.3973708920187793,0l0.6986854460093896,0.6986854460093896l1.3973708920187793,0.6986854460093896l0,0.6986854460093896l0.6986854460093896,0l1.3973708920187793,0.6986854460093896l1.3973708920187793,0.6986854460093896l3.493427230046948,0.6986854460093896l1.3973708920187793,0.6986854460093896l2.096056338028169,0.6986854460093896l1.3973708920187793,0.6986854460093896l1.3973708920187793,0l1.3973708920187793,0.6986854460093896l0.6986854460093896,0l0.6986854460093896,0.6986854460093896l1.3973708920187793,0l0.6986854460093896,0l0.6986854460093896,0l2.7947417840375586,0l1.3973708920187793,0l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l2.7947417840375586,0l0.6986854460093896,0l2.7947417840375586,0l1.3973708920187793,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,-0.6986854460093896l0.6986854460093896,0" + }; + annotator.Add(polyline); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddResourcesRedactionAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddResourcesRedactionAnnotation.cs new file mode 100644 index 0000000..44a128d --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddResourcesRedactionAnnotation.cs @@ -0,0 +1,50 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding resources redaction annotation. + /// + class AddResourcesRedactionAnnotation + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddResourcesRedactionAnnotation : This example demonstrates adding resources redaction annotation"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + ResourcesRedactionAnnotation resourcesRedaction = new ResourcesRedactionAnnotation + { + Box = new Rectangle(100, 100, 100, 100), + CreatedOn = DateTime.Now, + Message = "This is resources redaction annotation", + PageNumber = 0, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + } + }; + annotator.Add(resourcesRedaction); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddSearchTextFragmentAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddSearchTextFragmentAnnotation.cs new file mode 100644 index 0000000..ac41af2 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddSearchTextFragmentAnnotation.cs @@ -0,0 +1,38 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding search text fragment annotation. + /// + class AddSearchTextFragmentAnnotation + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddSearchTextFragmentAnnotation : This example demonstrates adding text fragment annotation"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + SearchTextFragment searchText = new SearchTextFragment() + { + Text = "Welcome to GroupDocs", //here should be the text that is contained in your document, otherwise nothing will be highlighted + FontSize = 10, + FontFamily = "Calibri", + FontColor = 65535, + BackgroundColor = 16761035, + }; + annotator.Add(searchText); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextFieldAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextFieldAnnotation.cs new file mode 100644 index 0000000..23bc33f --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextFieldAnnotation.cs @@ -0,0 +1,57 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding text field annotation. + /// + class AddTextFieldAnnotation + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddTextFieldAnnotation : This example demonstrates adding text field annotation"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + TextFieldAnnotation textField = new TextFieldAnnotation + { + BackgroundColor = 65535, + Box = new Rectangle(100, 100, 100, 100), + CreatedOn = DateTime.Now, + Text = "Some text", + FontColor = 65535, + FontSize = 12, + Message = "This is text field annotation", + Opacity = 0.7, + PageNumber = 0, + PenStyle = PenStyle.Dot, + PenWidth = 3, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + } + }; + annotator.Add(textField); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextHighlightAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextHighlightAnnotation.cs new file mode 100644 index 0000000..89902ae --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextHighlightAnnotation.cs @@ -0,0 +1,70 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding text highlight annotation. + /// + class AddTextHighlightAnnotation + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddTextHighlightAnnotation : This example demonstrates adding text highlight annotation"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_DOCX)); + + using (Annotator annotator = new Annotator(Constants.INPUT_DOCX)) + { + try + { + HighlightAnnotation highlight = new HighlightAnnotation + { + BackgroundColor = 65535, + CreatedOn = DateTime.Now, + FontColor = 0, + Message = "This is highlight annotation", + Opacity = 0.5, + PageNumber = 0, + Points = new List + { + new Point(80, 730), new Point(240, 730), new Point(80, 650), new Point(240, 650) + }, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + } + }; + annotator.Add(highlight); + annotator.Save(outputPath); + } + catch(Exception ex) + { + if (ex.Message.Contains("trial mode")) + { + Helper.WriteError("\nThis example requires license to properly run. " + + "\nVisit the GroupDocs site to obtain either a temporary or permanent license. " + + "\nLearn more about licensing at https://purchase.groupdocs.com/faqs/licensing. " + + "\nLearn how to request temporary license at https://purchase.groupdocs.com/temporary-license."); + } + else throw ex; + } + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextRedactionAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextRedactionAnnotation.cs new file mode 100644 index 0000000..6f91440 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextRedactionAnnotation.cs @@ -0,0 +1,54 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding text redaction annotation. + /// + class AddTextRedactionAnnotation + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddTextRedactionAnnotation : This example demonstrates adding text redaction annotation"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_DOCX)); + + using (Annotator annotator = new Annotator(Constants.INPUT_DOCX)) + { + TextRedactionAnnotation textRedaction = new TextRedactionAnnotation + { + CreatedOn = DateTime.Now, + Message = "This is text redaction annotation", + PageNumber = 0, + FontColor = 16761035, + Points = new List + { + new Point(80, 730), new Point(240, 730), new Point(80, 650), new Point(240, 650) + }, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + } + }; + annotator.Add(textRedaction); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextReplacementAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextReplacementAnnotation.cs new file mode 100644 index 0000000..e0d69dd --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextReplacementAnnotation.cs @@ -0,0 +1,59 @@ +using System; +using System.IO; +using System.Drawing; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + + /// + /// This example demonstrates adding text replacement annotation. + /// + class AddTextReplacementAnnotation + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddTextReplacementAnnotation : This example demonstrates adding text replacement annotation"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_DOCX)); + + using (Annotator annotator = new Annotator(Constants.INPUT_DOCX)) + { + ReplacementAnnotation replacement = new ReplacementAnnotation + { + CreatedOn = DateTime.Now, + FontColor = Color.Blue.ToArgb(), + Message = "This is replacement annotation", + Opacity = 0.7, + PageNumber = 0, + BackgroundColor = Color.Red.ToArgb(), + Points = new List + { + new Point(80, 730), new Point(240, 730), new Point(80, 650), new Point(240, 650) + }, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + }, + TextToReplace = "replaced text" + }; + annotator.Add(replacement); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextSquigglyAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextSquigglyAnnotation.cs new file mode 100644 index 0000000..129ff41 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextSquigglyAnnotation.cs @@ -0,0 +1,57 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding text squiggly annotation. + /// + class AddTextSquigglyAnnotation + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddTextSquigglyAnnotation : This example demonstrates adding text squiggly annotation"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_DOCX)); + + using (Annotator annotator = new Annotator(Constants.INPUT_DOCX)) + { + SquigglyAnnotation squiggly = new SquigglyAnnotation + { + CreatedOn = DateTime.Now, + FontColor = 65535, + Message = "This is squiggly annotation", + Opacity = 0.7, + PageNumber = 0, + BackgroundColor = 16761035, + SquigglyColor = 1422623, // works supported only Word and PDF documents + Points = new List + { + new Point(80, 730), new Point(240, 730), new Point(80, 650), new Point(240, 650) + }, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + } + }; + annotator.Add(squiggly); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextStrikeoutAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextStrikeoutAnnotation.cs new file mode 100644 index 0000000..8c5eab4 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextStrikeoutAnnotation.cs @@ -0,0 +1,56 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding text strikeout annotation. + /// + class AddTextStrikeoutAnnotation + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddTextStrikeoutAnnotation : This example demonstrates adding text strikeout annotation"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_DOCX)); + + using (Annotator annotator = new Annotator(Constants.INPUT_DOCX)) + { + StrikeoutAnnotation strikeout = new StrikeoutAnnotation + { + CreatedOn = DateTime.Now, + FontColor = 65535, + Message = "This is strikeout annotation", + Opacity = 0.7, + PageNumber = 0, + BackgroundColor = 16761035, + Points = new List + { + new Point(80, 730), new Point(240, 730), new Point(80, 650), new Point(240, 650) + }, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + } + }; + annotator.Add(strikeout); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextUnderlineAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextUnderlineAnnotation.cs new file mode 100644 index 0000000..5f43279 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddTextUnderlineAnnotation.cs @@ -0,0 +1,57 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding text underline annotation. + /// + class AddTextUnderlineAnnotation + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddTextUnderlineAnnotation : This example demonstrates adding text underline annotation"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_DOCX)); + + using (Annotator annotator = new Annotator(Constants.INPUT_DOCX)) + { + UnderlineAnnotation underline = new UnderlineAnnotation + { + CreatedOn = DateTime.Now, + FontColor = 65535, + Message = "This is underline annotation", + Opacity = 0.7, + PageNumber = 0, + BackgroundColor = 16761035, + UnderlineColor = 1422623, // works supported only Word and PDF documents + Points = new List + { + new Point(80, 730), new Point(240, 730), new Point(80, 650), new Point(240, 650) + }, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + } + }; + annotator.Add(underline); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddWatermarkAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddWatermarkAnnotation.cs new file mode 100644 index 0000000..d874425 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddAnnotationToTheDocument/AddWatermarkAnnotation.cs @@ -0,0 +1,58 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding watermark annotation. + /// + class AddWatermarkAnnotation + { + public static void Run() + { + Console.WriteLine("\n---------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddWatermarkAnnotation : This example demonstrates adding watermark annotation"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + WatermarkAnnotation watermark = new WatermarkAnnotation + { + Angle = 75, + Box = new Rectangle(200, 200, 100, 50), + CreatedOn = DateTime.Now, + Text = "Watermark", + FontColor = 65535, + FontSize = 12, + Message = "This is watermark annotation", + Opacity = 0.7, + PageNumber = 0, + AutoScale = true, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + } + }; + annotator.Add(watermark); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddComponentsToTheDocument/PDF/AddButtonComponent.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddComponentsToTheDocument/PDF/AddButtonComponent.cs new file mode 100644 index 0000000..e88ed7b --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddComponentsToTheDocument/PDF/AddButtonComponent.cs @@ -0,0 +1,63 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.FormatSpecificComponents.Pdf; + + /// + /// This example demonstrates adding button component. + /// + class AddButtonComponent + { + /// + /// Known issue for 24.4 version to fail without setting some property and leave as null value + /// Will be fixed with the nearest 24.5. + /// + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddButtonComponent : adding button component"); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + ButtonComponent button = new ButtonComponent + { + Box = new Rectangle(100, 100, 100, 100), + PenColor = 65535, + Style = BorderStyle.Dashed, + BorderWidth = 0, + BorderColor = 0, + AlternateName = "Name", + PartialName = "Patial Name", + NormalCaption = "Caption", + RolloverCaption = "Rollover", + ButtonColor = 16761035, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + } + }; + annotator.Add(button); + annotator.Save("result.pdf"); + } + + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + /**/ + } + } +} \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddComponentsToTheDocument/PDF/AddCheckBoxComponent.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddComponentsToTheDocument/PDF/AddCheckBoxComponent.cs new file mode 100644 index 0000000..7cee312 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddComponentsToTheDocument/PDF/AddCheckBoxComponent.cs @@ -0,0 +1,51 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.FormatSpecificComponents.Pdf; + + /// + /// This example demonstrates adding checkBox component. + /// + class AddCheckBoxComponent + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddCheckBoxComponent : adding checkBox component."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + CheckBoxComponent checkBox = new CheckBoxComponent + { + Checked = true, + Box = new Rectangle(100, 100, 100, 100), + PenColor = 65535, + Style = BoxStyle.Star, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + } + }; + annotator.Add(checkBox); + annotator.Save("result.pdf"); + } + + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddComponentsToTheDocument/PDF/AddDropdownComponent.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddComponentsToTheDocument/PDF/AddDropdownComponent.cs new file mode 100644 index 0000000..60b1ee0 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddComponentsToTheDocument/PDF/AddDropdownComponent.cs @@ -0,0 +1,58 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage.AddAnnotationToTheDocument +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.FormatSpecificComponents.Pdf; + + /// + /// This example demonstrates adding dropdown component. + /// + class AddDropdownComponent + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddDropdownComponent : adding dropdown component."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + DropdownComponent dropdown = new DropdownComponent + { + Options = new List { "Item1", "Item2", "Item3" }, + SelectedOption = null, + Placeholder = "Choose option", + Box = new Rectangle(100, 100, 100, 100), + CreatedOn = DateTime.Now, + Message = "This is dropdown component", + PageNumber = 0, + PenColor = 65535, + PenStyle = PenStyle.Dot, + PenWidth = 3, + Replies = new List + { + new Reply + { + Comment = "First comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Second comment", + RepliedOn = DateTime.Now + } + } + }; + annotator.Add(dropdown); + annotator.Save("result.pdf"); + } + + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddReplies.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddReplies.cs new file mode 100644 index 0000000..2a31c68 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/AddReplies.cs @@ -0,0 +1,86 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates adding replies to annotation. + /// + class AddReplies + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # AddReplies : adding replies to annotation."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + User user1 = new User + { + Id = 1, + Name = "Tom", + Email = "somemail@mail.com" + }; + User user2 = new User + { + Id = 2, + Name = "Jack", + Email = "somebody@mail.com" + }; + AreaAnnotation area = new AreaAnnotation + { + BackgroundColor = 65535, + Box = new Rectangle(100, 100, 100, 100), + CreatedOn = DateTime.Now, + Message = "This is area annotation", + Opacity = 0.7, + PageNumber = 0, + PenColor = 65535, + PenStyle = PenStyle.Dot, + PenWidth = 3, + Replies = new List + { + new Reply + { + Id = 1, + Comment = "First comment", + RepliedOn = DateTime.Now, + User = user1 + }, + new Reply + { + Id = 2, + Comment = "Second comment", + RepliedOn = DateTime.Now, + User = user2, + }, + new Reply + { + Id = 3, + Comment = "Third comment", + RepliedOn = DateTime.Now, + User = user1 + }, + new Reply + { + Id = 4, + Comment = "Fourth comment", + RepliedOn = DateTime.Now, + User = user2 + } + } + }; + annotator.Add(area); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/ExtractAnnotationsFromDocument.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/ExtractAnnotationsFromDocument.cs new file mode 100644 index 0000000..243e0ea --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/ExtractAnnotationsFromDocument.cs @@ -0,0 +1,36 @@ +using System; +using System.IO; +using System.Xml.Serialization; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates how to extract annotations + /// + class ExtractAnnotationsFromDocument + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # ExtractAnnotationsFromDocument : how to extract annotations."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "annotation.xml"); + + using (Annotator annotator = new Annotator(Constants.ANNOTATED)) + { + var annotations = annotator.Get(); + XmlSerializer formatter = new XmlSerializer(typeof(List)); + using (FileStream fs = new FileStream(outputPath, FileMode.Create)) + { + fs.SetLength(0); + formatter.Serialize(fs, annotations); + } + } + Console.WriteLine($"\nAnnotations extracted to annotation.xml file successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/GetFileInfo.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/GetFileInfo.cs new file mode 100644 index 0000000..5134aa4 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/GetFileInfo.cs @@ -0,0 +1,29 @@ +using System; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage +{ + using GroupDocs.Annotation; + + /// + /// This example demonstrates document info extraction + /// + class GetFileInfo + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # GetFileInfo : document info extraction."); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + IDocumentInfo info = annotator.Document.GetDocumentInfo(); + if (info == null || info?.PageCount == 0) + { + throw new Exception("Unexpected document information!"); + } + Console.WriteLine($"\nFile type: {info.FileType}\nNumber of pages: {info.PageCount}\nDocument size: {info.Size} bytes."); + } + Console.WriteLine($"\nDocument info extracted successfully."); + } + } +} \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/GetSupportedFileFormats.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/GetSupportedFileFormats.cs new file mode 100644 index 0000000..7fd04dd --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/GetSupportedFileFormats.cs @@ -0,0 +1,27 @@ +using System; +using System.Linq; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage +{ + using GroupDocs.Annotation; + + /// + /// This example demonstrates file types support + /// + class GetSupportedFileFormats + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # GetSupportedFileFormats : file types support."); + + IEnumerable fileTypes = FileType + .GetSupportedFileTypes() + .OrderBy(fileType => fileType.Extension); + foreach (FileType fileType in fileTypes) + Console.WriteLine(fileType); + Console.WriteLine("\nSupported file types retrieved successfully."); + } + } +} \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/GettingSizeOfDocumentPage.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/GettingSizeOfDocumentPage.cs new file mode 100644 index 0000000..0327738 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/GettingSizeOfDocumentPage.cs @@ -0,0 +1,31 @@ +using System; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage +{ + using GroupDocs.Annotation; + + /// + /// This example demonstrates getting document pages width and height + /// + class GettingSizeOfDocumentPage + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # GettingSizeOfDocumentPage : getting document pages width and height."); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + IDocumentInfo info = annotator.Document.GetDocumentInfo(); + if (info.PagesInfo != null && info.PagesInfo.Count > 0) + { + Console.WriteLine($"\t Document info: Type {info.FileType}, size = {info.Size}, pages = {info.PageCount}"); + foreach( var page in info.PagesInfo ) + { + Console.WriteLine($"\t\t page #{page.PageNumber}: {page.Width}x{page.Height}"); + } + } + } + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/ReadRepliesFromDocument.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/ReadRepliesFromDocument.cs new file mode 100644 index 0000000..1715959 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/ReadRepliesFromDocument.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates how to enumerate replies from existing annotations. + /// + internal class ReadRepliesFromDocument + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # ReadRepliesFromDocument : reading annotation replies from annotated document."); + + using (Annotator annotator = new Annotator(Constants.ANNOTATED_WITH_REPLIES)) + { + List annotations = annotator.Get(); + + if (annotations.Count == 0) + { + Console.WriteLine("\nNo annotations found in the document."); + return; + } + + foreach (AnnotationBase annotation in annotations) + { + if (annotation.Replies == null || annotation.Replies.Count == 0) + { + continue; + } + + string replyWord = annotation.Replies.Count == 1 ? "reply" : "replies"; + Console.WriteLine($"\nAnnotation #{annotation.Id} on page {annotation.PageNumber + 1} has {annotation.Replies.Count} {replyWord}:"); + + foreach (Reply reply in annotation.Replies) + { + string userName = reply.User?.Name ?? "Unknown user"; + Console.WriteLine($" - [{reply.RepliedOn:G}] {userName}: {reply.Comment}"); + } + } + } + + Console.WriteLine("\nAnnotation replies processed successfully."); + } + } +} + diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveAnnotationByAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveAnnotationByAnnotation.cs new file mode 100644 index 0000000..8ea12fd --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveAnnotationByAnnotation.cs @@ -0,0 +1,28 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage +{ + using GroupDocs.Annotation; + + /// + /// This example demonstrates removing annotation from the document by annotation object. + /// + class RemoveAnnotationByAnnotation + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # RemoveAnnotationByAnnotation : removing annotation from the document by annotation object."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.ANNOTATED)) + { + annotator.Remove(annotator.Get()[0]); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveAnnotationById.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveAnnotationById.cs new file mode 100644 index 0000000..2f39131 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveAnnotationById.cs @@ -0,0 +1,29 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage +{ + using GroupDocs.Annotation; + + /// + /// This example demonstrates how to remove annotations from annotated document by Id + /// + class RemoveAnnotationById + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # RemoveAnnotationById : remove annotations from annotated document by Id."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.ANNOTATED)) + { + annotator.Remove(0); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveAnnotationUsingSaveOptions.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveAnnotationUsingSaveOptions.cs new file mode 100644 index 0000000..7ba9a5e --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveAnnotationUsingSaveOptions.cs @@ -0,0 +1,28 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Options; + + /// + /// This example demonstrates how to remove annotations from document using SaveOptions Property + /// + class RemoveAnnotationUsingSaveOptions + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # RemoveAnnotationUsingSaveOptions : remove annotations from document using SaveOptions Property."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.ANNOTATED)) + { + annotator.Save(outputPath, new SaveOptions() { AnnotationTypes = AnnotationType.None }); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveAnnotationsByAnnotations.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveAnnotationsByAnnotations.cs new file mode 100644 index 0000000..4629e3d --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveAnnotationsByAnnotations.cs @@ -0,0 +1,31 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates removing document annotations by the list of annotations. + /// + class RemoveAnnotationsByAnnotations + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # RemoveAnnotationsByAnnotations : removing document annotations by the list of annotations."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.ANNOTATED)) + { + List annotations = annotator.Get(); + annotator.Remove(annotations); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveAnnotationsByIds.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveAnnotationsByIds.cs new file mode 100644 index 0000000..83fbae2 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveAnnotationsByIds.cs @@ -0,0 +1,29 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage +{ + using GroupDocs.Annotation; + + /// + /// This example demonstrates removing document annotations by known list of annotations Identifiers (Ids). + /// + class RemoveAnnotationsByIds + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # RemoveAnnotationsByIds : removing document annotations by known list of annotations Identifiers (Ids)."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.ANNOTATED)) + { + annotator.Remove(new List{0,1}); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveReplies.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveReplies.cs new file mode 100644 index 0000000..dfe94f0 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveReplies.cs @@ -0,0 +1,38 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates how to remove replies from annotated document + /// + class RemoveReplies + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # RemoveReplies : remove replies from annotated document."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + // NOTE: Input document already contain annotations with replies + using (Annotator annotator = new Annotator(Constants.ANNOTATED_WITH_REPLIES)) + { + // Obtain annotations collection from document + List annotations = annotator.Get(); + + // Remove first reply by index + annotations[0].Replies.RemoveAt(0); + + // Save changes + annotator.Update(annotations); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveRepliesById.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveRepliesById.cs new file mode 100644 index 0000000..90e929a --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveRepliesById.cs @@ -0,0 +1,38 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates how to remove replies from annotated document by reply Id + /// + class RemoveRepliesById + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # RemoveRepliesById : remove replies from annotated document by reply Id."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + // NOTE: Input document already contain annotations with replies + using (Annotator annotator = new Annotator(Constants.ANNOTATED_WITH_REPLIES)) + { + // Obtain annotations collection from document + List annotations = annotator.Get(); + + // Remove reply with Id = 4 + annotations[0].Replies.RemoveAll(x => x.Id == 4); + + // Save changes + annotator.Update(annotations); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveRepliesByUserName.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveRepliesByUserName.cs new file mode 100644 index 0000000..f3fb885 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/RemoveRepliesByUserName.cs @@ -0,0 +1,38 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates how to remove replies from annotated document by user name + /// + class RemoveRepliesByUserName + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # RemoveRepliesByUserName : remove replies from annotated document by user name."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + // NOTE: Input document already contain annotations with replies + using (Annotator annotator = new Annotator(Constants.ANNOTATED_WITH_REPLIES)) + { + // Obtain annotations collection from document + List annotations = annotator.Get(); + + // Remove all replies where author name is "Tom" + annotations[0].Replies.RemoveAll(x => x.User.Name == "Tom"); + + // Save changes + annotator.Update(annotations); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/UpdateAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/UpdateAnnotation.cs new file mode 100644 index 0000000..ae92bee --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/BasicUsage/UpdateAnnotation.cs @@ -0,0 +1,84 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage +{ + using GroupDocs.Annotation; + using GroupDocs.Annotation.Models; + using GroupDocs.Annotation.Models.AnnotationModels; + + /// + /// This example demonstrates how to update annotation + /// + class UpdateAnnotation + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # UpdateAnnotation : how to update annotation."); + + string outputPath = Path.Combine(Constants.GetOutputDirectoryPath(), "result" + Path.GetExtension(Constants.INPUT_PDF)); + + using (Annotator annotator = new Annotator(Constants.INPUT_PDF)) + { + AreaAnnotation original = new AreaAnnotation + { + Id = 1, + BackgroundColor = 65535, + Box = new Rectangle(100, 100, 100, 100), + CreatedOn = DateTime.Now, + Message = "This is original annotation", + Replies = new List + { + new Reply + { + Comment = "Original first comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Original second comment", + RepliedOn = DateTime.Now + } + } + }; + // add original annotation + annotator.Add(original); + annotator.Save(outputPath); + } + + // open annotated document + using (Annotator annotator = new Annotator(outputPath)) + { + // suggest we want change some properties of existed annotation + AreaAnnotation updated = new AreaAnnotation + { + // It's important to set existed annotation Id + Id = 1, + BackgroundColor = 255, + Box = new Rectangle(0, 0, 50, 200), + CreatedOn = DateTime.Now, + Message = "This is updated annotation", + Replies = new List + { + new Reply + { + Comment = "Updated first comment", + RepliedOn = DateTime.Now + }, + new Reply + { + Comment = "Updated second comment", + RepliedOn = DateTime.Now + } + } + }; + // update annotation + annotator.Update(updated); + annotator.Save(outputPath); + } + Console.WriteLine($"\nDocument saved successfully.\nCheck output in {outputPath}."); + } + } +} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/Constants.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/Constants.cs new file mode 100644 index 0000000..65d7383 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/Constants.cs @@ -0,0 +1,48 @@ +using System.IO; +using System.Runtime.CompilerServices; + +namespace GroupDocs.Annotation.Examples.CSharp +{ + internal static class Constants + { + + public const string LicensePath = "./Resources/GroupDocs.Annotation.lic"; + public const string SamplesPath = "./Resources/SampleFiles"; + public const string FontsPath = "./Resources/Fonts"; + public const string OutputPath = "./Results/Output/"; + public static string INPUT_PDF => GetSampleFilePath("input.pdf"); + public static string INPUT_DOCX => GetSampleFilePath("input.docx"); + public static string INPUT_ZINDEX => GetSampleFilePath("input_zIndex.docx"); + public static string INPUT_WITH_CUSTOM_FONT => GetSampleFilePath("inputWithCustomFont.pdf"); + public static string ANNOTATED_WITH_REPLIES => GetSampleFilePath("annotated_with_replies.pdf"); + public static string PICTURE => GetSampleFilePath("google.png"); + public static string INPUT_PROTECTED => GetSampleFilePath("input_protected.pdf"); + public static string ANNOTATED_WITH_VERSIONS => GetSampleFilePath("annotated_with_versions.pdf"); + public static string RESULT => GetSampleFilePath("result.pdf"); + public static string ANNOTATED => GetSampleFilePath("annotated.pdf"); + public static string ANNOTATED_DOCX => GetSampleFilePath("annotated.docx"); + public static string CELLS_INPUT => GetSampleFilePath("input.xlsx"); + + private static string GetSampleFilePath(string filePath, [CallerFilePath] string callerFilePath = null) + { + DirectoryInfo pathInfo = Directory.GetParent(callerFilePath); + return Path.Combine(pathInfo + SamplesPath, filePath); + } + + internal static string GetFontDirectory([CallerFilePath] string callerFilePath = null) + { + DirectoryInfo pathInfo = Directory.GetParent(callerFilePath); + return Path.Combine(pathInfo + FontsPath); + } + + public static string GetOutputDirectoryPath([CallerFilePath] string callerFilePath = null) + { + string outputDirectory = Path.Combine(OutputPath, Path.GetFileNameWithoutExtension(callerFilePath)); + if (!Directory.Exists(outputDirectory)) + Directory.CreateDirectory(outputDirectory); + + string path = Path.GetFullPath(outputDirectory); + return path; + } + } +} \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.Annotation.Examples.CSharp.projitems b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.Annotation.Examples.CSharp.projitems new file mode 100644 index 0000000..99714c3 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.Annotation.Examples.CSharp.projitems @@ -0,0 +1,100 @@ + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + true + 663edcb2-e917-4487-8a41-1adab5e18559 + + + GroupDocs.Annotation.Examples.CSharp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + + + PreserveNewest + + + \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.Annotation.Examples.CSharp.shproj b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.Annotation.Examples.CSharp.shproj new file mode 100644 index 0000000..2ea4f53 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.Annotation.Examples.CSharp.shproj @@ -0,0 +1,13 @@ + + + + 663edcb2-e917-4487-8a41-1adab5e18559 + 14.0 + + + + + + + + diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/DataJsonException.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/DataJsonException.cs deleted file mode 100644 index d9854d2..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/DataJsonException.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; - -namespace GroupDocs.Data.Json -{ - public class DataJsonException : Exception - { - public DataJsonException(string message, Exception innerException) - : base(message, innerException) - { - } - } -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Groupdocs.AnnotationDataStorage.csproj b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Groupdocs.AnnotationDataStorage.csproj deleted file mode 100644 index b8dcc00..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Groupdocs.AnnotationDataStorage.csproj +++ /dev/null @@ -1,86 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {352BBB7A-98AF-4B05-B8D7-74334EDCE61C} - Library - Properties - GroupDocs.Data.Json - GroupDocs.Data.Json - v4.0 - 512 - ..\..\ - true - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\..\packages\GroupDocs.Annotation.18.9.0\lib\GroupDocs.Annotation.dll - True - - - ..\..\packages\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll - True - - - - - - - - - - - - - - - - - - - - - - - - - - - - Designer - - - - - - - - - - \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/JsonFile.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/JsonFile.cs deleted file mode 100644 index 25dee4e..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/JsonFile.cs +++ /dev/null @@ -1,107 +0,0 @@ -using System; -using System.IO; -using Newtonsoft.Json; - -namespace GroupDocs.Data.Json -{ - - public class JsonFile - where T : new() - { - #region Fields - protected readonly object _syncRoot = new object(); - - private string _filePath; - private T _data; - #endregion Fields - - public JsonFile(string filePath) - { - if (String.IsNullOrWhiteSpace(filePath)) - { - throw new ArgumentNullException("filePath"); - } - - _filePath = filePath; - } - - protected virtual void Serialize() - { - if (_data == null) - { - return; - } - - lock (_syncRoot) - { - if (_data != null) - { - try - { - using (var stream = File.OpenWrite(_filePath)) - using (var writer = new StreamWriter(stream)) - using (JsonWriter jwriter = new JsonTextWriter(writer) {Formatting = Formatting.Indented}) - { - JsonSerializer serializer = new JsonSerializer(); - serializer.Serialize(jwriter, _data); - } - } - catch (Exception e) - { - throw new Exception("Failed to serialize an object to file: '{0}'.", e); - } - } - } - } - - protected virtual void Deserialize() - { - lock (_syncRoot) - { - try - { - if (!File.Exists(_filePath)) - { - var fileStream = File.Create(_filePath); - fileStream.Close(); - _data = new T(); - return; - } - - using (var stream = File.OpenRead(_filePath)) - using (var reader = new StreamReader(stream)) - using (JsonReader jreader = new JsonTextReader(reader)) - { - JsonSerializer serializer = new JsonSerializer(); - _data = serializer.Deserialize(jreader); - } - } - catch (Exception e) - { - throw new Exception("Failed to deserialize an object from file: '{0}'.", e); - } - - if(_data == null) - { - _data = new T(); - } - } - } - - protected T Data - { - get - { - lock (_syncRoot) - { - if (_data == null) - { - Deserialize(); - } - - return _data; - } - } - } - } -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Properties/AssemblyInfo.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Properties/AssemblyInfo.cs deleted file mode 100644 index e39a9ae..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("GroupDocs.Data.Json")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("GroupDocs.Data.Json")] -[assembly: AssemblyCopyright("Copyright © 2014")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("fc3ec246-83d0-4a13-b5f7-0b49650bf1e6")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/AnnotationCollaboratorRepository.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/AnnotationCollaboratorRepository.cs deleted file mode 100644 index a6db130..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/AnnotationCollaboratorRepository.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using System.Linq; -using GroupDocs.Annotation.Handler.Input.DataObjects; -using GroupDocs.Annotation.Handler.Input; - -namespace GroupDocs.Data.Json.Repositories -{ - public class AnnotationCollaboratorRepository : JsonRepository, IAnnotationCollaboratorDataHandler - { - private const string _repoName = "GroupDocs.annotation.collaborators.json"; - - public AnnotationCollaboratorRepository(IRepositoryPathFinder pathFinder) - : base(pathFinder.Find(_repoName)) - { - } - - public AnnotationCollaboratorRepository(string filePath) - : base(filePath) - { - } - - public AnnotationCollaborator[] GetDocumentCollaborators(long documentId) - { - lock (_syncRoot) - { - try - { - return Data.Where(x => x.DocumentId == documentId).ToArray(); - } - catch (Exception e) - { - throw new DataJsonException("Failed to get document collaborators.", e); - } - } - } - } -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/AnnotationReplyRepository.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/AnnotationReplyRepository.cs deleted file mode 100644 index 6056fc6..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/AnnotationReplyRepository.cs +++ /dev/null @@ -1,98 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using GroupDocs.Annotation.Handler.Input.DataObjects; -using GroupDocs.Annotation.Handler.Input; -namespace GroupDocs.Data.Json.Repositories -{ - public class AnnotationReplyRepository : JsonRepository, IAnnotationReplyDataHandler - { - - private const string _repoName = "GroupDocs.annotation.replies.json"; - - public AnnotationReplyRepository(IRepositoryPathFinder pathFinder) - : base(pathFinder.Find(_repoName)) - { - } - - public AnnotationReplyRepository(string filePath) - : base(filePath) - { - } - - public AnnotationReply GetReply(string guid) - { - lock (_syncRoot) - { - try - { - return Data.FirstOrDefault(x => x.Guid == guid); - } - catch (Exception e) - { - throw new DataJsonException("Failed to get annotation reply by GUID.", e); - } - } - } - - public AnnotationReply[] GetReplies(long annotationId) - { - lock (_syncRoot) - { - try - { - return Data - .Where(x => x.AnnotationId == annotationId) - .OrderBy(r => r.RepliedOn) - .ToArray(); - } - catch (Exception e) - { - throw new DataJsonException("Failed to get annotation replies.", e); - } - } - } - - public bool DeleteReplyAndChildReplies(long replyId) - { - lock (_syncRoot) - { - try - { - var data = this.Data; - bool returnValue = true; - - AnnotationReply reply = data.FirstOrDefault(r => r.Id == replyId); - List childReplies = new List(); - AnnotationReply[] repliesOfCurrentLevel = data.Where(r => r.ParentReplyId == replyId).ToArray(); - List repliesOfNextLevel = new List(); - - while (repliesOfCurrentLevel.Length > 0) - { - repliesOfNextLevel.Clear(); - childReplies.AddRange(repliesOfCurrentLevel); - - for (int i = 0; i < repliesOfCurrentLevel.Length; i++) - { - decimal id = repliesOfCurrentLevel[i].Id; - repliesOfNextLevel.AddRange( - data.Where(r => r.ParentReplyId == id).ToArray()); - } - - repliesOfCurrentLevel = repliesOfNextLevel.ToArray(); - } - - childReplies.Reverse(); - childReplies.ForEach(x => returnValue &= base.Remove(x)); - - returnValue &= base.Remove(reply); - return returnValue; - } - catch (Exception e) - { - throw new DataJsonException("Failed to delete annotation replies.", e); - } - } - } - } -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/AnnotationRepository.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/AnnotationRepository.cs deleted file mode 100644 index 90e77ac..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/AnnotationRepository.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System; -using System.Linq; -using GroupDocs.Annotation.Handler.Input; - -namespace GroupDocs.Data.Json.Repositories -{ - public class AnnotationRepository : JsonRepository, IAnnotationDataHandler - { - private const string _repoName = "GroupDocs.annotations.json"; - - public AnnotationRepository(IRepositoryPathFinder pathFinder) - : base(pathFinder.Find(_repoName)) - { - } - - public AnnotationRepository(string filePath) - : base(filePath) - { - } - - public GroupDocs.Annotation.Handler.Input.DataObjects.Annotation GetAnnotation(string guid) - { - lock (_syncRoot) - { - try - { - return Data.FirstOrDefault(x => x.Guid == guid); - } - catch (Exception e) - { - throw new DataJsonException("Failed to get annotation by GUID.", e); - } - } - } - public GroupDocs.Annotation.Handler.Input.DataObjects.Annotation[] GetDocumentAnnotations(long documentId, int? pageNumber = null) - { - lock (_syncRoot) - { - try - { - return Data - .Where(x => x.DocumentId == documentId && (pageNumber == null || x.PageNumber == pageNumber)) - .ToArray();; - } - catch (Exception e) - { - throw new DataJsonException("Failed to get document annotations.", e); - } - } - } - } -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/DocumentRepository.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/DocumentRepository.cs deleted file mode 100644 index af5d20a..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/DocumentRepository.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using GroupDocs.Annotation.Handler.Input.DataObjects; -using GroupDocs.Annotation.Handler.Input; - -namespace GroupDocs.Data.Json.Repositories -{ - public class DocumentRepository : JsonRepository, IDocumentDataHandler - { - private const string _repoName = "GroupDocs.annotation.documents.json"; - - public DocumentRepository(IRepositoryPathFinder pathFinder) - : base(pathFinder.Find(_repoName)) - { - } - - public DocumentRepository(string filePath) - : base(filePath) - { - } - - public Document GetDocument(string name) - { - lock (_syncRoot) - { - try - { - return Data.Find(x => x.Name == name); - } - catch(Exception e) - { - throw new DataJsonException("Failed to get document by id.", e); - } - } - } - } -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/JsonRepository.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/JsonRepository.cs deleted file mode 100644 index 02da3d3..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/JsonRepository.cs +++ /dev/null @@ -1,201 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using GroupDocs.Annotation.Handler.Input; -using GroupDocs.Annotation.Handler.Input.DataObjects; - -namespace GroupDocs.Data.Json.Repositories -{ - public class JsonRepository : JsonFile>, IRepository - where TEntity : class, IEntity - { - #region Fields - private static readonly string _entityName = typeof(TEntity).Name; - #endregion Fields - - public JsonRepository(string filePath) - : base(filePath) - { - } - - public void Commit() - { - Serialize(); - } - - public void Refresh(TEntity entity) - { - Deserialize(); - } - - public bool Add(TEntity entity) - { - lock (_syncRoot) - { - try - { - var data = this.Data; - - entity.Id = GetNextId(); - data.Add(entity); - - Commit(); - return true; - } - catch (Exception e) - { - throw new DataJsonException( - String.Format("Unable to add entity: {0}", _entityName), e); - } - } - } - - public bool Remove(TEntity entity) - { - lock (_syncRoot) - { - try - { - Data.RemoveAll(e => e.Id == entity.Id); - Commit(); - - return true; - } - catch (Exception e) - { - throw new DataJsonException( - String.Format("Unable to remove entity: {0}", _entityName), e); - } - } - } - - public bool Update(TEntity entity) - { - lock (_syncRoot) - { - try - { - var data = this.Data; - var index = data.FindIndex(x => x.Id == entity.Id); - - if (index >= 0) - { - data[index] = entity; - Commit(); - - return true; - } - - return false; - } - catch (Exception e) - { - throw new DataJsonException( - String.Format("Unable to update entity: {0}", _entityName), e); - } - } - } - - public bool Add(IEnumerable entities) - { - lock (_syncRoot) - { - try - { - Data.AddRange(entities); - Commit(); - - return true; - } - catch (Exception e) - { - throw new DataJsonException( - String.Format("Unable to add entities: {0}", _entityName), e); - } - } - } - - public bool Remove(IEnumerable entities) - { - lock (_syncRoot) - { - try - { - var data = this.Data; - - foreach (var e in entities) - { - data.Remove(e); - } - - Commit(); - return true; - } - catch (Exception e) - { - throw new DataJsonException( - String.Format("Unable to remove entities: {0}", _entityName), e); - } - } - } - - public bool Update(IEnumerable entities) - { - lock (_syncRoot) - { - try - { - var data = this.Data; - - foreach (var e in entities) - { - var index = data.FindIndex(x => x.Id == e.Id); - if (index >= 0) - { - data[index] = e; - } - } - - Commit(); - return true; - } - catch (Exception e) - { - throw new DataJsonException( - String.Format("Unable to update entities: {0}", _entityName), e); - } - } - } - - public TEntity Get(decimal id) - { - lock (_syncRoot) - { - try - { - return Data.Find(e => e.Id == id); - } - catch (Exception e) - { - throw new DataJsonException( - String.Format("Unable to get entity: ID = {0}", id), e); - } - } - } - - public TEntity Get(long id) - { - return Get((decimal) id); - } - - protected virtual long GetNextId(int increment = 1) - { - var data = Data; - var lastId = (data.Any() ? data.Max(e => e.Id) : 0L); - return (lastId + increment); - } - - #region Private members - #endregion Private members - } -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/UserRepository.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/UserRepository.cs deleted file mode 100644 index ed45a71..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/Repositories/UserRepository.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using GroupDocs.Annotation.Handler.Input; -using GroupDocs.Annotation.Handler.Input.DataObjects; - -namespace GroupDocs.Data.Json.Repositories -{ - public class UserRepository : JsonRepository, IUserDataHandler - { - private const string _repoName = "GroupDocs.users.json"; - - public UserRepository(IRepositoryPathFinder pathFinder) - : base(pathFinder.Find(_repoName)) - { - } - public User GetUserByGuid(string guid) - { - lock (_syncRoot) - { - try - { - return Data.Find(x => x.Guid == guid); - } - catch(Exception e) - { - throw new DataJsonException("Failed to get user by GUID.", e); - } - } - } - - public User GetUserByEmail(string email) - { - lock (_syncRoot) - { - try - { - return Data.Find(x => x.Email == email); - } - catch(Exception e) - { - throw new DataJsonException("Failed to get user by name.", e); - } - } - } - } -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/RepositoryPathFinder.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/RepositoryPathFinder.cs deleted file mode 100644 index 1eaf760..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/RepositoryPathFinder.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Configuration; -using System.IO; -using System.Web; - -namespace GroupDocs.Data.Json -{ - public interface IRepositoryPathFinder - { - string Find(string repository); - } - - public class RepositoryPathFinder : IRepositoryPathFinder - { - public const string RepoBasePathKey = "GroupDocsRepoBasePath"; - - public string Find(string repository) - { - var ctx = HttpContext.Current; - if (ctx == null) - { - return GetConfiguredPath(repository); - } - - var basePath = (ctx.Application != null ? (string) ctx.Application[RepoBasePathKey] : null); - return (string.IsNullOrWhiteSpace(basePath) ? - (ctx.Server != null ? - ctx.Server.MapPath(string.Format("~/App_Data/{0}", repository)) : GetConfiguredPath(repository)) : - Path.Combine(basePath, repository)); - } - - private static string GetConfiguredPath(string repository) - { - return Path.Combine( - ConfigurationManager.AppSettings[RepoBasePathKey] ?? AppDomain.CurrentDomain.SetupInformation.ApplicationBase, - repository); - } - } -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/app.config b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/app.config deleted file mode 100644 index 8460dd4..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/app.config +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/packages.config b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/packages.config deleted file mode 100644 index 128e5d7..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationDataStorage/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/App.config b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/App.config deleted file mode 100644 index 9459877..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/App.config +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/CellsAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/CellsAnnotation.cs deleted file mode 100644 index 8317bd9..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/CellsAnnotation.cs +++ /dev/null @@ -1,53 +0,0 @@ -using GroupDocs.Annotation.Config; -using GroupDocs.Annotation.Domain; -using GroupDocs.Annotation.Handler; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace GroupDocs.Annotation.CSharp -{ - class CellsAnnotation - { - - /// - /// Add text annotation in Cells - /// - /// Update CommonUtilities.filePath with path to Slides file before using this function - public static void AddTextAnnotationInCells() - { - try - { - //ExStart:AddTextAnnotationInSlides - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Initialize text annotation. - AnnotationInfo textAnnotation = new AnnotationInfo - { - PageNumber = 0, - AnnotationPosition = new Point(1, 2), - FieldText = "Hello!", - CreatorName = "John" - }; - - // Add annotation to list - annotations.Add(textAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Cells); - //ExEnd:AddTextAnnotationInCells - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - } -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/CommonUtilities.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/CommonUtilities.cs deleted file mode 100644 index 52b19ca..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/CommonUtilities.cs +++ /dev/null @@ -1,266 +0,0 @@ -using GroupDocs.Annotation.Common.License; -using GroupDocs.Annotation.Config; -using GroupDocs.Annotation.Domain; -using GroupDocs.Annotation.Domain.Image; -using GroupDocs.Annotation.Domain.Options; -using GroupDocs.Annotation.Handler; -using GroupDocs.Annotation.Handler.Input; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace GroupDocs.Annotation.CSharp -{ - //ExStart:CommonUtilities - class CommonUtilities - { - //ExStart:CommonProperties - public static string StorageFolderPath = "../../../../Data/Samples/"; - public static string DestinationFolderPath = "../../../../Data/Output/"; - public static string LicenseFilePath = "E://License/Groupdocs.Total.lic"; - public static string filePath = "Annotated.pdf"; - //ExEnd:CommonProperties - - - - //ExStart:MapSourceFilePath - /// - /// Maps source file path - /// - /// Source File Name - /// Returns complete path of source file - public static string MapSourceFilePath(string SourceFileName) - { - try - { - return StorageFolderPath + SourceFileName; - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - return exp.Message; - } - } - //ExEnd:MapSourceFilePath - //ExStart:MapDestinationFilePath - /// - /// Maps destination file path - /// - /// Destination File Name - /// Returns complete path of destination file - public static string MapDestinationFilePath(string DestinationFileName) - { - try - { - return DestinationFolderPath + DestinationFileName; - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - return exp.Message; - } - } - //ExEnd:MapDestinationFilePath - - /// - /// Saves output document - /// - public static void SaveOutputDocument(Stream inputFile, List annotations, DocumentType type) - { - try - { - //ExStart:SaveOutputDocument - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); - if (!Directory.Exists(cfg.StoragePath)) - { - Directory.CreateDirectory(cfg.StoragePath); - } - - Stream result = annotator.ExportAnnotationsToDocument(inputFile, annotations, type); - - FileStream getFileStream = inputFile as FileStream; - string extensionWithDot = Path.GetExtension(getFileStream.Name); - - // Save result stream to file. - using (FileStream fileStream = new FileStream(MapDestinationFilePath("Annotated" + extensionWithDot), FileMode.Create)) - { - byte[] buffer = new byte[result.Length]; - result.Seek(0, SeekOrigin.Begin); - result.Read(buffer, 0, buffer.Length); - fileStream.Write(buffer, 0, buffer.Length); - fileStream.Close(); - } - //ExEnd:SaveOutputDocument - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - //ExStart:ApplyLicense - /// - /// Applies product license - /// - public static void ApplyLicense() - { - try - { - // initialize License - License lic = new License(); - // apply license - lic.SetLicense(LicenseFilePath); - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - //ExEnd:ApplyLicense - - /// - /// Set Metered License - /// - public static void SetMeteredLicense(Stream licenseStream) - { - string PublicKey = ""; // Your public license key - string PrivateKey = ""; // Your private license key - GroupDocs.Annotation.Common.License.Metered metered = new GroupDocs.Annotation.Common.License.Metered(); - metered.SetMeteredKey(PublicKey, PrivateKey); - } - //ExEnd:SetMeteredLicense - - //ExStart:GetConfiguration - /// - /// Sets annotation configuration - /// - /// Returns AnnotationConfig object - public static AnnotationConfig GetConfiguration() - { - try - { - AnnotationConfig cfg = new AnnotationConfig(); - - //Set storage path - cfg.StoragePath = StorageFolderPath; - - return cfg; - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - return null; - } - } - //ExEnd:GetConfiguration - - //ExStart:GetImageRepresentation - /// - /// Gets image representation of document - /// - /// Source file path - public static void GetImageRepresentation(string filePath) - { - try - { - Stream document = new FileStream(MapSourceFilePath(filePath), FileMode.Open); - AnnotationConfig cfg = GetConfiguration(); - - AnnotationImageHandler annotationHandler = new AnnotationImageHandler(cfg); - - List images = annotationHandler.GetPages(document, new ImageOptions()); - - // Save result stream to file. - using (FileStream fileStream = new FileStream(MapDestinationFilePath("image.png"), FileMode.Create)) - { - byte[] buffer = new byte[images[0].Stream.Length]; - images[0].Stream.Seek(0, SeekOrigin.Begin); - images[0].Stream.Read(buffer, 0, buffer.Length); - fileStream.Write(buffer, 0, buffer.Length); - fileStream.Close(); - } - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - - } - //ExEnd:GetImageRepresentation - - //ExStart:GetTextCoordinatesInImage - /// - /// Gets text coordinates in image representation of document - /// - /// Source file path - public static void GetTextCoordinates(string filePath) - { - try - { - // Set configuration - AnnotationConfig cfg = GetConfiguration(); - - // Initialize annotator - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - try - { - annotator.CreateDocument(filePath); - } - catch { } - - var documentInfoContainer = annotator.GetDocumentInfo(filePath); - - // Go through all pages - foreach (PageData pageData in documentInfoContainer.Pages) - { - Console.WriteLine("Page number: " + pageData.Number); - - //Go through all page rows - for (int i = 0; i < pageData.Rows.Count; i++) - { - RowData rowData = pageData.Rows[i]; - - // Write data to console - Console.WriteLine("Row: " + (i + 1)); - Console.WriteLine("Text: " + rowData.Text); - Console.WriteLine("Text width: " + rowData.LineWidth); - Console.WriteLine("Text height: " + rowData.LineHeight); - Console.WriteLine("Distance from left: " + rowData.LineLeft); - Console.WriteLine("Distance from top: " + rowData.LineTop); - - // Get words - string[] words = rowData.Text.Split(' '); - - // Go through all word coordinates - for (int j = 0; j < words.Length; j++) - { - int coordinateIndex = j == 0 ? 0 : j + 1; - // Write data to console - Console.WriteLine(string.Empty); - Console.WriteLine("Word:'" + words[j] + "'"); - Console.WriteLine("Word distance from left: " + rowData.TextCoordinates[coordinateIndex]); - Console.WriteLine("Word width: " + rowData.TextCoordinates[coordinateIndex + 1]); - Console.WriteLine(string.Empty); - } - Console.ReadKey(); - } - } - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - - } - //ExEnd:GetTextCoordinatesInImage - } - //ExEnd:CommonUtilities -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/DataStorage.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/DataStorage.cs deleted file mode 100644 index e57d583..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/DataStorage.cs +++ /dev/null @@ -1,916 +0,0 @@ -using GroupDocs.Annotation.Config; -using GroupDocs.Annotation.Domain; -using GroupDocs.Annotation.Domain.Results; -using GroupDocs.Annotation.Exception; -using GroupDocs.Annotation.Handler; -using GroupDocs.Annotation.Handler.Input; -using GroupDocs.Annotation.Handler.Input.DataObjects; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace GroupDocs.Annotation.CSharp -{ - //ExStart:DataStorageClass - public class DataStorage - { - - - /// - /// Picks the annotations from document.pdf and exports them to sample.pdf - /// - public static void ExportAnnotationInFile() - { - try - { - //ExStart:ExportAnnotationInFile - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - // Get file stream - Stream manifestResourceStream = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - List annotations = new List(); - - Stream stream = annotator.ExportAnnotationsToDocument(manifestResourceStream, annotations, DocumentType.Pdf); - - // Save result stream to file. - using (FileStream fileStream = new FileStream(CommonUtilities.MapDestinationFilePath("Annotated.pdf"), FileMode.Create)) - { - byte[] buffer = new byte[stream.Length]; - stream.Seek(0, SeekOrigin.Begin); - stream.Read(buffer, 0, buffer.Length); - fileStream.Write(buffer, 0, buffer.Length); - fileStream.Close(); - } - //ExEnd:ExportAnnotationInFile - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Creates a document data object in the storage - /// - public static void CreateDocument() - { - try - { - //ExStart:CreateDocument - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); - if (!Directory.Exists(cfg.StoragePath)) - { - Directory.CreateDirectory(cfg.StoragePath); - } - - // Create document data object in storage. - var document = documentRepository.GetDocument("sample.pdf"); - long documentId = document != null ? document.Id : annotator.CreateDocument("sample.pdf"); - - Console.WriteLine("Document ID : " + documentId); - //ExEnd:CreateDocument - - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Assigns/sets document access rights - /// - public static void AssignAccessRights() - { - try - { - //ExStart:AssignAccessRight - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); - if (!Directory.Exists(cfg.StoragePath)) - { - Directory.CreateDirectory(cfg.StoragePath); - } - - // Create document data object in storage. - var document = documentRepository.GetDocument("Document.pdf"); - long documentId = document != null ? document.Id : annotator.CreateDocument("Document.pdf"); - - // Set document access rights - annotator.SetDocumentAccessRights(documentId, AnnotationReviewerRights.All); - //ExEnd:AssignAccessRight - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Maps annotations and creates dcocument data object in the storage - /// - public static void CreateAndGetAnnotation() - { - try - { - //ExStart:CreateAndGetAnnotation - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); - if (!Directory.Exists(cfg.StoragePath)) - { - Directory.CreateDirectory(cfg.StoragePath); - } - - // Create document data object in storage. - var document = documentRepository.GetDocument("Document.pdf"); - long documentId = document != null ? document.Id : annotator.CreateDocument("Document.pdf"); - - // Create annotation object - AnnotationInfo pointAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 81.0), - Box = new Rectangle(212f, 81f, 142f, 0.0f), - Type = AnnotationType.Point, - PageNumber = 0, - CreatorName = "Anonym", - DocumentGuid = documentId - }; - - // Add annotation to storage - CreateAnnotationResult createPointAnnotationResult = annotator.CreateAnnotation(pointAnnotation); - - //============================================================================= - // Create annotation object - AnnotationInfo textFieldAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 201.0), - FieldText = "text in the box", - FontFamily = "Arial", - FontSize = 10, - Box = new Rectangle(66f, 201f, 64f, 37f), - PageNumber = 0, - Type = AnnotationType.TextField, - CreatorName = "Anonym", - DocumentGuid = documentId - }; - - //Add annotation to storage - CreateAnnotationResult createTextFieldAnnotationResult = annotator.CreateAnnotation(textFieldAnnotation); - - // Get annotation from storage - GetAnnotationResult result = annotator.GetAnnotation(createPointAnnotationResult.Guid); - //ExEnd:CreateAndGetAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Gets annotations from the storage file - /// - /// Returns a list of annotations - public static ListAnnotationsResult GetAllDocumentAnnotation() - { - try - { - //ExStart:GetAllAnnotation - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); - if (!Directory.Exists(cfg.StoragePath)) - { - Directory.CreateDirectory(cfg.StoragePath); - } - - // Create document data object in storage. - var document = documentRepository.GetDocument("Document.pdf"); - long documentId = document != null ? document.Id : annotator.CreateDocument("Document.pdf"); - - // Get annotation from storage - ListAnnotationsResult result = annotator.GetAnnotations(documentId); - - return result; - //ExEnd:GetAllAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - return null; - } - } - - /// - /// Resizes the existing annotations - /// - public static void ResizeAnnotationResult() - { - try - { - //ExStart:ResizeAnnotationResult - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); - if (!Directory.Exists(cfg.StoragePath)) - { - Directory.CreateDirectory(cfg.StoragePath); - } - - // Create document data object in storage. - var document = documentRepository.GetDocument("Document.pdf"); - long documentId = document != null ? document.Id : annotator.CreateDocument("Document.pdf"); - - // Create annotation object - AnnotationInfo areaAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 271.7), - BackgroundColor = 3355443, - Box = new Rectangle(466f, 271f, 69f, 62f), - PageNumber = 0, - PenColor = 3355443, - Type = AnnotationType.Area, - CreatorName = "Anonym", - DocumentGuid = documentId - }; - - //Add annotation to storage - CreateAnnotationResult createAreaAnnotationResult = annotator.CreateAnnotation(areaAnnotation); - - //Resize annotation - ResizeAnnotationResult resizeResult = annotator.ResizeAnnotation(createAreaAnnotationResult.Id, new AnnotationSizeInfo - { - Height = 80, - Width = 60 - }); - //ExEnd:ResizeAnnotationResult - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Moves annotation marker - /// - public static void MoveAnnotationResult() - { - try - { - //ExStart:MoveAnnotationResult - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); - if (!Directory.Exists(cfg.StoragePath)) - { - Directory.CreateDirectory(cfg.StoragePath); - } - - // Create document data object in storage. - var document = documentRepository.GetDocument("Document.pdf"); - long documentId = document != null ? document.Id : annotator.CreateDocument("Document.pdf"); - - // Create annotation object - AnnotationInfo areaAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 271.7), - BackgroundColor = 3355443, - Box = new Rectangle(466f, 271f, 69f, 62f), - PageNumber = 0, - PenColor = 3355443, - Type = AnnotationType.Area, - CreatorName = "Anonym", - DocumentGuid = documentId - }; - - //Add annotation to storage - CreateAnnotationResult createAreaAnnotationResult = annotator.CreateAnnotation(areaAnnotation); - - //Move annotation marker - MoveAnnotationResult moveAnnotationResult = annotator.MoveAnnotationMarker(createAreaAnnotationResult.Id, - new Point(200, 200),/*NewPageNumber*/1); - //ExEnd:MoveAnnotationResult - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Sets background color of annotation - /// - public static void SetBackgroundColorResult() - { - try - { - //ExStart:SetBackgroundColorResult - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); - if (!Directory.Exists(cfg.StoragePath)) - { - Directory.CreateDirectory(cfg.StoragePath); - } - - // Create document data object in storage. - var document = documentRepository.GetDocument("Document.pdf"); - long documentId = document != null ? document.Id : annotator.CreateDocument("Document.pdf"); - - // Create annotation object - AnnotationInfo textFieldAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 201.0), - FieldText = "text in the box", - FontFamily = "Arial", - FontSize = 10, - Box = new Rectangle(66f, 201f, 64f, 37f), - PageNumber = 0, - Type = AnnotationType.TextField, - CreatorName = "Anonym", - DocumentGuid = documentId - }; - - //Add annotation to storage - CreateAnnotationResult createTextFieldAnnotationResult = annotator.CreateAnnotation(textFieldAnnotation); - - // Set background color of annotation - SaveAnnotationTextResult setBackgroundColorResult = annotator.SetAnnotationBackgroundColor(createTextFieldAnnotationResult.Id, 16711680); - //ExEnd:SetBackgroundColorResult - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Updates the text in the annotation - /// - public static void EditTextFieldAnnotation() - { - try - { - //ExStart:EditTextFieldAnnotation - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); - if (!Directory.Exists(cfg.StoragePath)) - { - Directory.CreateDirectory(cfg.StoragePath); - } - - // Create document data object in storage. - var document = documentRepository.GetDocument("Document.pdf"); - long documentId = document != null ? document.Id : annotator.CreateDocument("Document.pdf"); - - // Create annotation object - AnnotationInfo textFieldAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 201.0), - FieldText = "text in the box", - FontFamily = "Arial", - FontSize = 10, - Box = new Rectangle(66f, 201f, 64f, 37f), - PageNumber = 0, - Type = AnnotationType.TextField, - CreatorName = "Anonym", - DocumentGuid = documentId - }; - - //Add annotation to storage - CreateAnnotationResult createTextFieldAnnotationResult = annotator.CreateAnnotation(textFieldAnnotation); - - // Update text in the annotation - SaveAnnotationTextResult saveTextFieldResult = annotator.SaveTextField( - createTextFieldAnnotationResult.Id, - new TextFieldInfo - { - FieldText = "new text", - FontFamily = "Colibri", - FontSize = 12 - }); - - - // Set text field color - SaveAnnotationTextResult saveTextFieldColorResult = annotator.SetTextFieldColor - (createTextFieldAnnotationResult.Id, 16753920); - //ExEnd:EditTextFieldAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Removes annotations - /// - public static void RemoveAnnotation() - { - try - { - //ExStart:RemoveAnnotation - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); - if (!Directory.Exists(cfg.StoragePath)) - { - Directory.CreateDirectory(cfg.StoragePath); - } - - // Create document data object in storage. - var document = documentRepository.GetDocument("Document.pdf"); - long documentId = document != null ? document.Id : annotator.CreateDocument("Document.pdf"); - - // Create annotation object - AnnotationInfo pointAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 81.0), - Box = new Rectangle(212f, 81f, 142f, 0.0f), - Type = AnnotationType.Point, - PageNumber = 0, - CreatorName = "Anonym", - DocumentGuid = documentId - }; - - // Get all annotations from storage - ListAnnotationsResult listAnnotationsResult = annotator.GetAnnotations(documentId); - - // Get annotation - var annotation = annotator.GetAnnotation(listAnnotationsResult.Annotations[0].Guid); - - - // Delete single annotation - var deleteAnnotationResult = annotator.DeleteAnnotation(annotation.Id); - - //Delete all annotations - annotator.DeleteAnnotations(documentId); - //ExEnd:RemoveAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds reply to the annotation, edits reply, creates child reply - /// - public static void AddAnnotationReply() - { - try - { - //ExStart:AddAnnotationReply - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); - if (!Directory.Exists(cfg.StoragePath)) - { - Directory.CreateDirectory(cfg.StoragePath); - } - - // Create document data object in storage - var document = documentRepository.GetDocument("Document.pdf"); - long documentId = document != null ? document.Id : annotator.CreateDocument("Document.pdf"); - - // Create annotation object - AnnotationInfo pointAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 81.0), - Box = new Rectangle(212f, 81f, 142f, 0.0f), - Type = AnnotationType.Point, - PageNumber = 0, - CreatorName = "Anonym", - DocumentGuid = documentId - }; - - // Add annotation to storage - var createPointAnnotationResult = annotator.CreateAnnotation(pointAnnotation); - - // Add simple reply to created annotation - var addSimpleReplyResult = annotator.CreateAnnotationReply(createPointAnnotationResult.Id, "first question"); - - // Edit created reply - var editReplyResult = annotator.EditAnnotationReply(addSimpleReplyResult.ReplyGuid, "changed question"); - - // Create child reply. This reply will be linked to previously created reply. - var addChildReplyResult = annotator.CreateAnnotationReply(createPointAnnotationResult.Id, "answer", addSimpleReplyResult.ReplyGuid); - - // Delete annotation reply by guid - var deleteReplyResult = annotator.DeleteAnnotationReply(addChildReplyResult.ReplyGuid); - - // Delete all replies from annotation - annotator.DeleteAnnotationReplies(createPointAnnotationResult.Id); - - // List of replies after deleting all replies - var listRepliesResultAfterDeleteAll = annotator.ListAnnotationReplies(createPointAnnotationResult.Id); - //ExEnd:AddAnnotationReply - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds document collaborator - /// - public static void AddCollaborator() - { - try - { - //ExStart:AddCollaborator - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - IUserDataHandler userRepository = annotator.GetUserDataHandler(); - - IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); - if (!Directory.Exists(cfg.StoragePath)) - { - Directory.CreateDirectory(cfg.StoragePath); - } - - // Create a user that will be an owner. - // Get user from the storage - var owner = userRepository.GetUserByEmail("john@doe.com"); - - // If user doesn’t exist in the storage then create it. - if (owner == null) - { - userRepository.Add(new User { FirstName = "John", LastName = "Doe", Email = "john@doe.com" }); - owner = userRepository.GetUserByEmail("john@doe.com"); - } - - // Get document data object in the storage - var document = documentRepository.GetDocument("Document.pdf"); - - // If document already created or it hasn’t owner then delete document - if (document != null && document.OwnerId != owner.Id) - { - documentRepository.Remove(document); - document = null; - } - - // Get document id if document already created or create new document - long documentId = document != null ? document.Id : annotator.CreateDocument("Document.pdf", DocumentType.Pdf, owner.Id); - - // Create reviewer. - var reviewerInfo = new ReviewerInfo - { - PrimaryEmail = "judy@doe.com", //user email, unique identifier - FirstName = "Judy", - LastName = "Doe", - AccessRights = AnnotationReviewerRights.All - }; - - // Add collaboorator to the document. If user with Email equals to reviewers PrimaryEmail is absent it will be created. - var addCollaboratorResult = annotator.AddCollaborator(documentId, reviewerInfo); - //ExEnd:AddCollaborator - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Gets document collaborator - /// - public static void GetCollaborator() - { - try - { - //ExStart:GetCollaborator - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - //Create annotation handler - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - IUserDataHandler userRepository = annotator.GetUserDataHandler(); - - IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); - if (!Directory.Exists(cfg.StoragePath)) - { - Directory.CreateDirectory(cfg.StoragePath); - } - - // Create a user that will be an owner. - // Get user from the storage - var owner = userRepository.GetUserByEmail("john@doe.com"); - - // If user doesn’t exist in the storage then create it. - if (owner == null) - { - userRepository.Add(new User { FirstName = "John", LastName = "Doe", Email = "john@doe.com" }); - owner = userRepository.GetUserByEmail("john@doe.com"); - } - - // Get document data object in the storage - var document = documentRepository.GetDocument("Document.pdf"); - - // If document already created or it hasn’t owner then delete document - if (document != null && document.OwnerId != owner.Id) - { - documentRepository.Remove(document); - document = null; - } - - // Get document id if document already created or create new document - long documentId = document != null ? document.Id : annotator.CreateDocument("Document.pdf", DocumentType.Pdf, owner.Id); - - // Create reviewer. - var reviewerInfo = new ReviewerInfo - { - PrimaryEmail = "judy@doe.com", //user email, unique identifier - FirstName = "Judy", - LastName = "Doe", - AccessRights = AnnotationReviewerRights.All - }; - - // Get document collaborators. - var getCollaboratorsResult = annotator.GetCollaborators(documentId); - - // Get document collaborator by email - var getCollaboratorsResultByEmail = annotator.GetDocumentCollaborator(documentId, reviewerInfo.PrimaryEmail); - - // Get collaborator metadata - var user = userRepository.GetUserByEmail(reviewerInfo.PrimaryEmail); - ReviewerInfo collaboratorMetadataResult = annotator.GetCollaboratorMetadata(user.Guid); - //ExEnd:GetCollaborator - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Updates document collaborator - /// - public static void UpdateCollaborator() - { - try - { - //ExStart:UpdateCollaborator - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - //Create annotation handler - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - IUserDataHandler userRepository = annotator.GetUserDataHandler(); - - IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); - if (!Directory.Exists(cfg.StoragePath)) - { - Directory.CreateDirectory(cfg.StoragePath); - } - - // Create a user that will be an owner. - // Get user from the storage - var owner = userRepository.GetUserByEmail("john@doe.com"); - - // If user doesn’t exist in the storage then create it. - if (owner == null) - { - userRepository.Add(new User { FirstName = "John", LastName = "Doe", Email = "john@doe.com" }); - owner = userRepository.GetUserByEmail("john@doe.com"); - } - - // Get document data object in the storage - var document = documentRepository.GetDocument("Document.pdf"); - - // If document already created or it hasn’t owner then delete document - if (document != null && document.OwnerId != owner.Id) - { - documentRepository.Remove(document); - document = null; - } - - // Get document id if document already created or create new document - long documentId = document != null ? document.Id : annotator.CreateDocument("Document.pdf", DocumentType.Pdf, owner.Id); - - // Create reviewer. - var reviewerInfo = new ReviewerInfo - { - PrimaryEmail = "judy@doe.com", //user email, unique identifier - FirstName = "Judy", - LastName = "Doe", - AccessRights = AnnotationReviewerRights.All - }; - // Update collaborator. Only color and access rights will be updated. - reviewerInfo.Color = 3355443; - var updateCollaboratorResult = annotator.UpdateCollaborator(documentId, reviewerInfo); - //ExEnd:UpdateCollaborator - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Deletes document collaborator - /// - public static void DeleteCollaborator() - { - try - { - //ExStart:DeleteCollaborator - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - //Create annotation handler - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - IUserDataHandler userRepository = annotator.GetUserDataHandler(); - - IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); - if (!Directory.Exists(cfg.StoragePath)) - { - Directory.CreateDirectory(cfg.StoragePath); - } - - // Create a user that will be an owner. - // Get user from the storage - var owner = userRepository.GetUserByEmail("john@doe.com"); - - // If user doesn’t exist in the storage then create it. - if (owner == null) - { - userRepository.Add(new User { FirstName = "John", LastName = "Doe", Email = "john@doe.com" }); - owner = userRepository.GetUserByEmail("john@doe.com"); - } - - // Get document data object in the storage - var document = documentRepository.GetDocument("Document.pdf"); - - // If document already created or it hasn’t owner then delete document - if (document != null && document.OwnerId != owner.Id) - { - documentRepository.Remove(document); - document = null; - } - - // Get document id if document already created or create new document - long documentId = document != null ? document.Id : annotator.CreateDocument("Document.pdf", DocumentType.Pdf, owner.Id); - - // Create reviewer. - var reviewerInfo = new ReviewerInfo - { - PrimaryEmail = "judy@doe.com", //user email, unique identifier - FirstName = "Judy", - LastName = "Doe", - AccessRights = AnnotationReviewerRights.All - }; - - // Delete collaborator - var deleteCollaboratorResult = annotator.DeleteCollaborator(documentId, reviewerInfo.PrimaryEmail); - //ExEnd:DeleteCollaborator - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Manages collaborator rights - /// - public static void ManageCollaboratorRights() - { - try - { - //ExStart:ManageCollaboratorRights - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - //Create annotation handler - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - IUserDataHandler userRepository = annotator.GetUserDataHandler(); - - IDocumentDataHandler documentRepository = annotator.GetDocumentDataHandler(); - if (!Directory.Exists(cfg.StoragePath)) - { - Directory.CreateDirectory(cfg.StoragePath); - } - - // Create owner. - var johnOwner = userRepository.GetUserByEmail("john@doe.com"); - if (johnOwner == null) - { - userRepository.Add(new User { FirstName = "John", LastName = "Doe", Email = "john@doe.com" }); - johnOwner = userRepository.GetUserByEmail("john@doe.com"); - } - - // Create document data object in storage - var document = documentRepository.GetDocument("Document.pdf"); - long documentId = document != null ? document.Id : annotator.CreateDocument("Document.pdf", DocumentType.Pdf, johnOwner.Id); - - // Create reviewer. - var reviewerInfo = new ReviewerInfo - { - PrimaryEmail = "judy@doe.com", - FirstName = "Judy", - LastName = "Doe", - - // Can only get view annotations - AccessRights = AnnotationReviewerRights.CanView - }; - - // Add collaboorator to the document. If user with Email equals to reviewers PrimaryEmail is absent it will be created. - var addCollaboratorResult = annotator.AddCollaborator(documentId, reviewerInfo); - - // Get document collaborators - var getCollaboratorsResult = annotator.GetCollaborators(documentId); - var judy = userRepository.GetUserByEmail("judy@doe.com"); - - // Create annotation object - AnnotationInfo pointAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 81.0), - Box = new Rectangle(212f, 81f, 142f, 0.0f), - Type = AnnotationType.Point, - PageNumber = 0, - CreatorName = "Anonym A." - }; - - // John try to add annotations. User is owner of the document. - var johnResult = annotator.CreateAnnotation(pointAnnotation, documentId, johnOwner.Id); - - // Judy try to add annotations - try - { - var judyResult = annotator.CreateAnnotation(pointAnnotation, documentId, judy.Id); - } - - //Get exceptions, because user can only view annotations - catch (AnnotatorException e) - { - Console.Write(e.Message); - Console.ReadKey(); - } - - // Allow Judy create annotations. - reviewerInfo.AccessRights = AnnotationReviewerRights.CanAnnotate; - var updateCollaboratorResult = annotator.UpdateCollaborator(documentId, reviewerInfo); - - // Now user can add annotations - var judyResultCanAnnotate = annotator.CreateAnnotation(pointAnnotation, documentId, judy.Id); - //ExEnd:ManageCollaboratorRights - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - } - //ExEnd:DataStorageClass -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/DiagramsAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/DiagramsAnnotation.cs deleted file mode 100644 index ee1bbb0..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/DiagramsAnnotation.cs +++ /dev/null @@ -1,408 +0,0 @@ -using GroupDocs.Annotation.Config; -using GroupDocs.Annotation.Domain; -using GroupDocs.Annotation.Handler; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace GroupDocs.Annotation.CSharp -{ - class DiagramsAnnotation - { - - - /// - /// Adds Area annotation in Diagrams - /// - public static void AddAreaAnnotationInDiagrams() - { - try - { - //ExStart:AddAreaAnnotationInDiagrams - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Initialize area annotation - AnnotationInfo areaAnnnotation = new AnnotationInfo() - { - CreatedOn = DateTime.Now, - Type = AnnotationType.Area, - Box = new Rectangle(200, 114.5f, 282.3f, 103.7f), - }; - // Add annotation to list - annotations.Add(areaAnnnotation); - - // Get output file stream - Stream result = annotator.ExportAnnotationsToDocument(inputFile, annotations); - - // Save result stream to file. - using (FileStream fileStream = new FileStream(CommonUtilities.MapDestinationFilePath("Annotated.vsdx"), FileMode.Create)) - { - byte[] buffer = new byte[result.Length]; - result.Seek(0, SeekOrigin.Begin); - result.Read(buffer, 0, buffer.Length); - fileStream.Write(buffer, 0, buffer.Length); - fileStream.Close(); - } - //ExEnd:AddAreaAnnotationInDiagrams - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds Polyline annotation in Diagrams - /// - public static void AddPolylineAnnotationInDiagrams() - { - try - { - //ExStart:AddPolylineAnnotationInDiagrams - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Initialize polyline annotation - AnnotationInfo polylineAnnotation = new AnnotationInfo - { - CreatedOn = DateTime.Now, - Type = AnnotationType.Polyline, - Box = new Rectangle(206.3f, 106.61f, 456.04f, 307.97f), - SvgPath = "M436.293427230047,148.06338028169014l0,-0.9870892018779343l-0.9870892018779343,-0.9870892018779343l-1.9741784037558685,-0.9870892018779343l-0.9870892018779343,0l-0.9870892018779343,-0.9870892018779343l-1.9741784037558685,-0.9870892018779343l-0.9870892018779343,0l-1.9741784037558685,-0.9870892018779343l-1.9741784037558685,0l-4.935446009389671,-1.9741784037558685l-1.9741784037558685,0l-1.9741784037558685,-0.9870892018779343l-1.9741784037558685,0l-1.9741784037558685,-0.9870892018779343l-2.961267605633803,0l-2.961267605633803,0l-2.961267605633803,0l-2.961267605633803,0l-2.961267605633803,0l-2.961267605633803,0l-1.9741784037558685,0l-3.948356807511737,0l-2.961267605633803,0l-3.948356807511737,0l-4.935446009389671,0l-3.948356807511737,0.9870892018779343l-4.935446009389671,0.9870892018779343l-6.90962441314554,0l-3.948356807511737,0.9870892018779343l-3.948356807511737,0l-2.961267605633803,1.9741784037558685l-3.948356807511737,0.9870892018779343l-6.90962441314554,1.9741784037558685l-6.90962441314554,0.9870892018779343l-12.832159624413146,2.961267605633803l-6.90962441314554,1.9741784037558685l-5.922535211267606,0.9870892018779343l-5.922535211267606,1.9741784037558685l-5.922535211267606,1.9741784037558685l-5.922535211267606,0.9870892018779343l-4.935446009389671,1.9741784037558685l-5.922535211267606,1.9741784037558685l-5.922535211267606,1.9741784037558685l-4.935446009389671,1.9741784037558685l-5.922535211267606,2.961267605633803l-5.922535211267606,3.948356807511737l-5.922535211267606,3.948356807511737l-4.935446009389671,3.948356807511737l-5.922535211267606,3.948356807511737l-5.922535211267606,3.948356807511737l-3.948356807511737,5.922535211267606l- 3.948356807511737,4.935446009389671l-3.948356807511737,5.922535211267606l-3.948356807511737,6.90962441314554l-3.948356807511737,7.896713615023474l-0.9870892018779343,6.90962441314554l-1.9741784037558685,7.896713615023474l-1.9741784037558685,6.90962441314554l-0.9870892018779343,7.896713615023474l0,12.832159624413146l0,7.896713615023474l0,7.896713615023474l0.9870892018779343,7.896713615023474l1.9741784037558685,5.922535211267606l2.961267605633803,5.922535211267606l0.9870892018779343,5.922535211267606l2.961267605633803,6.90962441314554l3.948356807511737,5.922535211267606l4.935446009389671,4.935446009389671l3.948356807511737,5.922535211267606l3.948356807511737,5.922535211267606l3.948356807511737,5.922535211267606l5.922535211267606,5.922535211267606l5.922535211267606,5.922535211267606l5.922535211267606,5.922535211267606l6.90962441314554,5.922535211267606l7.896713615023474,5.922535211267606l7.896713615023474,5.922535211267606l17.767605633802816,8.883802816901408l11.845070422535212,3.948356807511737l11.845070422535212,4.935446009389671l23.690140845070424,8.883802816901408l41.45774647887324,6.90962441314554l31.586854460093896,3.948356807511737l16.780516431924884,0l16.780516431924884,1.9741784037558685l16.780516431924884,0l16.780516431924884,0l16.780516431924884,0l16.780516431924884,0l16.780516431924884,-1.9741784037558685l14.806338028169014,-1.9741784037558685l14.806338028169014,-1.9741784037558685l12.832159624413146,-1.9741784037558685l10.857981220657276,-2.961267605633803l10.857981220657276,-2.961267605633803l8.883802816901408,-4.935446009389671l8.883802816901408,-4.935446009389671l6.90962441314554,-6.90962441314554l6.90962441314554,-6.90962441314554l8.883802816901408,-16.780516431924884l4.935446009389671,-7.896713615023474l3.948356807511737,-8.883802816901408l4.935446009389671,-7.896713615023474l4.935446009389671,-7.896713615023474l3.948356807511737,-13.81924882629108l1.9741784037558685,-18.754694835680752l0,-7.896713615023474l0,-12.832159624413146l-1.9741784037558685,-15.793427230046948l-1.9741784037558685,-15.793427230046948l-4.935446009389671,-15.793427230046948l-8.883802816901408,-15.793427230046948l-12.832159624413146,-23.690140845070424l-10.857981220657276,-10.857981220657276l-5.922535211267606,-3.948356807511737l-12.832159624413146,-8.883802816901408l-9.870892018779342,-8.883802816901408l-5.922535211267606,-3.948356807511737l-12.832159624413146,-5.922535211267606l-15.793427230046948,-8.883802816901408l-13.81924882629108,-4.935446009389671l-11.845070422535212,-2.961267605633803l-11.845070422535212,-3.948356807511737l-11.845070422535212,-3.948356807511737l-5.922535211267606,-1.9741784037558685l-11.845070422535212,-2.961267605633803l-11.845070422535212,-1.9741784037558685l-5.922535211267606,-0.9870892018779343l-10.857981220657276,-1.9741784037558685l-10.857981220657276,-2.961267605633803l-9.870892018779342,0l-0.9870892018779343,0l-0.9870892018779343,0l-0.9870892018779343,0l-0.9870892018779343,0l0,-0.9870892018779343l1.9741784037558685,0", - }; - // Add annotation to list - annotations.Add(polylineAnnotation); - - // Get output file stream - Stream result = annotator.ExportAnnotationsToDocument(inputFile, annotations); - - // Save result stream to file. - using (FileStream fileStream = new FileStream(CommonUtilities.MapDestinationFilePath("Annotated.vsdx"), FileMode.Create)) - { - byte[] buffer = new byte[result.Length]; - result.Seek(0, SeekOrigin.Begin); - result.Read(buffer, 0, buffer.Length); - fileStream.Write(buffer, 0, buffer.Length); - fileStream.Close(); - } - //ExEnd:AddPolylineAnnotationInDiagrams - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds TextField annotation in Diagrams - /// - public static void AddTextFieldAnnotationInDiagrams() - { - try - { - //ExStart:AddTextFieldAnnotationInDiagrams - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Initialize textfield annotation - AnnotationInfo textFieldAnnotation = new AnnotationInfo - { - CreatedOn = DateTime.Now, - Type = AnnotationType.TextField, - Box = new Rectangle(162.87f, 267.5f, 91.8f, 42.45f), - BackgroundColor = -15988609, - FieldText = "Annotation Text" - }; - // Add annotation to list - annotations.Add(textFieldAnnotation); - - // Get output file stream - Stream result = annotator.ExportAnnotationsToDocument(inputFile, annotations); - - // Save result stream to file. - using (FileStream fileStream = new FileStream(CommonUtilities.MapDestinationFilePath("Annotated.vsdx"), FileMode.Create)) - { - byte[] buffer = new byte[result.Length]; - result.Seek(0, SeekOrigin.Begin); - result.Read(buffer, 0, buffer.Length); - fileStream.Write(buffer, 0, buffer.Length); - fileStream.Close(); - } - //ExEnd:AddTextFieldAnnotationInDiagrams - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds Arrow annotation in Diagrams - /// - public static void AddArrowAnnotationInDiagrams() - { - try - { - //ExStart:AddArrowAnnotationInDiagrams - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Initialize arrow annotation - AnnotationInfo arrowAnnotation = new AnnotationInfo - { - Type = AnnotationType.Arrow, - Box = new Rectangle(435.77464788732397f, 148.05164319248826f, -66.34389671361504f, 53.07511737089203f) - }; - // Add annotation to list - annotations.Add(arrowAnnotation); - - // Get output file stream - Stream result = annotator.ExportAnnotationsToDocument(inputFile, annotations); - - // Save result stream to file. - using (FileStream fileStream = new FileStream(CommonUtilities.MapDestinationFilePath("Annotated.vsdx"), FileMode.Create)) - { - byte[] buffer = new byte[result.Length]; - result.Seek(0, SeekOrigin.Begin); - result.Read(buffer, 0, buffer.Length); - fileStream.Write(buffer, 0, buffer.Length); - fileStream.Close(); - } - //ExEnd:AddArrowAnnotationInDiagrams - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds Resource Redaction annotation in Diagrams - /// - public static void AddResourceRedactionAnnotationInDiagrams() - { - try - { - //ExStart:AddResourceRedactionAnnotationInDiagrams - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Initialize resource reduction annotation - AnnotationInfo resourceRedactionAnnotation = new AnnotationInfo - { - Type = AnnotationType.ResourcesRedaction, - Box = new Rectangle(200, 114.5f, 282.3f, 103.7f), - }; - - // Add annotation to list - annotations.Add(resourceRedactionAnnotation); - - // Get output file stream - Stream result = annotator.ExportAnnotationsToDocument(inputFile, annotations); - - // Save result stream to file. - using (FileStream fileStream = new FileStream(CommonUtilities.MapDestinationFilePath("Annotated.vsdx"), FileMode.Create)) - { - byte[] buffer = new byte[result.Length]; - result.Seek(0, SeekOrigin.Begin); - result.Read(buffer, 0, buffer.Length); - fileStream.Write(buffer, 0, buffer.Length); - fileStream.Close(); - } - //ExEnd:AddResourceRedactionAnnotationInDiagrams - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds Distance annotation in Diagrams - /// - public static void AddDistanceAnnotationInDiagrams() - { - try - { - //ExStart:AddDistanceAnnotationInDiagrams - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Initialize distance annotation - AnnotationInfo distanceAnnnotation = new AnnotationInfo - { - Box = new Rectangle((float)248.73202514648438, (float)287.85653686523438, (float)115.9178466796875, (float)25.143020629882812), - CreatedOn = DateTime.Now, - Opacity = 0.3, - PageNumber = 0, - SvgPath = "M248.73201877934272,295.5439436619718 l115.28309859154929,-4.192112676056338", - Type = AnnotationType.Distance, - }; - - // Add annotation to list - annotations.Add(distanceAnnnotation); - - // Get output file stream - Stream result = annotator.ExportAnnotationsToDocument(inputFile, annotations); - - // Save result stream to file. - using (FileStream fileStream = new FileStream(CommonUtilities.MapDestinationFilePath("Annotated.vsdx"), FileMode.Create)) - { - byte[] buffer = new byte[result.Length]; - result.Seek(0, SeekOrigin.Begin); - result.Read(buffer, 0, buffer.Length); - fileStream.Write(buffer, 0, buffer.Length); - fileStream.Close(); - } - //ExEnd:AddDistanceAnnotationInDiagrams - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds Point annotation in Diagrams - /// - public static void AddPointAnnotationInDiagrams() - { - try - { - //ExStart:AddPointAnnotationInDiagrams - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Initialize point annotation - AnnotationInfo pointAnnnotation = new AnnotationInfo() - { - Box = new Rectangle(150.32f, 99.22f, 0, 0), - CreatedOn = DateTime.Now, - PageNumber = 0, - Type = AnnotationType.Point, - }; - - // Add annotation to list - annotations.Add(pointAnnnotation); - - // Get output file stream - Stream result = annotator.ExportAnnotationsToDocument(inputFile, annotations); - - // Save result stream to file. - using (FileStream fileStream = new FileStream(CommonUtilities.MapDestinationFilePath("Annotated.vsdx"), FileMode.Create)) - { - byte[] buffer = new byte[result.Length]; - result.Seek(0, SeekOrigin.Begin); - result.Read(buffer, 0, buffer.Length); - fileStream.Write(buffer, 0, buffer.Length); - fileStream.Close(); - } - //ExEnd:AddPointAnnotationInDiagrams - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds Watermark annotation in Diagrams - /// - public static void AddWatermarkAnnotationInDiagrams() - { - try - { - //ExStart:AddWatermarkAnnotationInDiagrams - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Initialize watermark annotation - AnnotationInfo watermarkAnnnotation = new AnnotationInfo() - { - Box = new Rectangle(165.41f, 192.24f, 177.8f, 38.29f), - CreatedOn = DateTime.Now, - FieldText = "Watermark text", - FontColor = 16711680, - FontFamily = "Microsoft Sans Serif", - FontSize = 17, - Opacity = 0.3, - Type = AnnotationType.Watermark, - }; - - // Add annotation to list - annotations.Add(watermarkAnnnotation); - - // Get output file stream - Stream result = annotator.ExportAnnotationsToDocument(inputFile, annotations); - - // Save result stream to file. - using (FileStream fileStream = new FileStream(CommonUtilities.MapDestinationFilePath("Annotated.vsdx"), FileMode.Create)) - { - byte[] buffer = new byte[result.Length]; - result.Seek(0, SeekOrigin.Begin); - result.Read(buffer, 0, buffer.Length); - fileStream.Write(buffer, 0, buffer.Length); - fileStream.Close(); - } - //ExEnd:AddWatermarkAnnotationInDiagrams - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - } -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/GroupDocs.AnnotationExamples.csproj b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/GroupDocs.AnnotationExamples.csproj deleted file mode 100644 index 5be497c..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/GroupDocs.AnnotationExamples.csproj +++ /dev/null @@ -1,94 +0,0 @@ - - - - - Debug - AnyCPU - {43CC4EF5-6D81-4A92-BB76-950020FC7E9F} - Exe - Properties - GroupDocs.Annotation.CSharp - GroupDocs.Annotation.CSharp - v4.5 - 512 - ..\..\ - true - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\..\packages\GroupDocs.Annotation.18.9.0\lib\GroupDocs.Annotation.dll - True - - - ..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll - True - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/ImagesAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/ImagesAnnotation.cs deleted file mode 100644 index 22869d4..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/ImagesAnnotation.cs +++ /dev/null @@ -1,567 +0,0 @@ -using GroupDocs.Annotation.Config; -using GroupDocs.Annotation.Domain; -using GroupDocs.Annotation.Handler; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace GroupDocs.Annotation.CSharp -{ - class ImagesAnnotation - { - - - /// - /// Adds text annotation in Images document - /// - public static void AddTextAnnotation() - { - try - { - //ExStart:AddTextAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Initialize text annotation. - AnnotationInfo textAnnotation = new AnnotationInfo - { - Box = new Rectangle((float)265.44, (float)153.86, 206, 36), - PageNumber = 1, - SvgPath = "[{\"x\":265.44,\"y\":388.83},{\"x\":472.19,\"y\":388.83},{\"x\": 265.44,\"y\":349.14},{\"x\":472.19,\"y\":349.14}]", - Type = AnnotationType.Text, - CreatorName = "Anonym A." - }; - - // Add annotation to list - annotations.Add(textAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Images); - //ExEnd:AddTextAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - - /// - /// Adds area annotation with replies in Images document - /// - public static void AddAreaAnnotationWithReplies() - { - try - { - //ExStart:AddAreaAnnotationWithReplies - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Area annotation with 2 replies - AnnotationInfo areaAnnnotation = new AnnotationInfo() - { - AnnotationPosition = new Point(852.0, 59.0), - Replies = new AnnotationReplyInfo[] - { - new AnnotationReplyInfo - { - Message = "Hello!", - RepliedOn = DateTime.Now, - UserName = "John" - }, - new AnnotationReplyInfo - { - Message = "Hi!", - RepliedOn = DateTime.Now, - UserName = "Judy" - } - }, - BackgroundColor = 11111111, - Box = new Rectangle(300f, 200f, 88f, 37f), - PageNumber = 0, - PenColor = 2222222, - PenStyle = 1, - PenWidth = 1, - Type = AnnotationType.Area, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(areaAnnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Images); - //ExEnd:AddAreaAnnotationWithReplies - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds point annotation in Images document - /// - public static void AddPointAnnotation() - { - try - { - //ExStart:AddPointAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Point annotation - AnnotationInfo pointAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 81.0), - Box = new Rectangle(212f, 81f, 142f, 0.0f), - PageNumber = 0, - Type = AnnotationType.Point, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(pointAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Images); - //ExEnd:AddPointAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds text strikeout annotation in Images document - /// - public static void AddTextStrikeOutAnnotation() - { - try - { - //ExStart:AddTextStrikeOutAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Text strikeout annotation - AnnotationInfo strikeoutAnnotation = new AnnotationInfo - { - Box = new Rectangle((float)101.76, (float)688.73, (float)321.85, 27), - PageNumber = 1, - SvgPath = "[{\"x\":101.76,\"y\":400.05},{\"x\":255.9,\"y\":400.05},{\"x\":101.76,\"y\":378.42},{\"x\":255.91,\"y\":378.42},{\"x\":101.76,\"y\":374.13},{\"x\":423.61,\"y\":374.13},{\"x\":101.76,\"y\":352.5},{\"x\":423.61,\"y\":352.5}]", - Type = AnnotationType.TextStrikeout, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(strikeoutAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Images); - //ExEnd:AddTextStrikeOutAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds polyline annotation in Images document - /// - public static void AddPolylineAnnotation() - { - try - { - //ExStart:AddPolylineAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Polyline annotation - AnnotationInfo polylineAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 35.0), - Box = new Rectangle(250f, 35f, 102f, 12f), - PageNumber = 0, - PenColor = 1201033, - PenWidth = 2, - SvgPath = "M250.8280751173709,48.209295774647885l0.6986854460093896,0l0.6986854460093896,-1.3973708920187793l0.6986854460093896,0l0.6986854460093896,-1.3973708920187793l1.3973708920187793,-0.6986854460093896l0.6986854460093896,-0.6986854460093896l0.6986854460093896,0l2.096056338028169,-1.3973708920187793l3.493427230046948,-1.3973708920187793l0.6986854460093896,-0.6986854460093896l1.3973708920187793,-1.3973708920187793l0.6986854460093896,0l1.3973708920187793,-0.6986854460093896l0.6986854460093896,0l0.6986854460093896,-0.6986854460093896l0.6986854460093896,0l0.6986854460093896,0l0,-0.6986854460093896l0.6986854460093896,0l0.6986854460093896,0l1.3973708920187793,0l0,-0.6986854460093896l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l2.096056338028169,-0.6986854460093896l1.3973708920187793,0l0.6986854460093896,0l0.6986854460093896,0l1.3973708920187793,0l1.3973708920187793,0l1.3973708920187793,0l2.096056338028169,0l5.589483568075117,0l1.3973708920187793,0l2.096056338028169,0l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l1.3973708920187793,0l1.3973708920187793,0l0.6986854460093896,0.6986854460093896l1.3973708920187793,0l2.096056338028169,1.3973708920187793l0.6986854460093896,0l0.6986854460093896,0l0,0.6986854460093896l1.3973708920187793,0l0.6986854460093896,0.6986854460093896l1.3973708920187793,0.6986854460093896l0,0.6986854460093896l0.6986854460093896,0l1.3973708920187793,0.6986854460093896l1.3973708920187793,0.6986854460093896l3.493427230046948,0.6986854460093896l1.3973708920187793,0.6986854460093896l2.096056338028169,0.6986854460093896l1.3973708920187793,0.6986854460093896l1.3973708920187793,0l1.3973708920187793,0.6986854460093896l0.6986854460093896,0l0.6986854460093896,0.6986854460093896l1.3973708920187793,0l0.6986854460093896,0l0.6986854460093896,0l2.7947417840375586,0l1.3973708920187793,0l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l2.7947417840375586,0l0.6986854460093896,0l2.7947417840375586,0l1.3973708920187793,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,-0.6986854460093896l0.6986854460093896,0", - Type = AnnotationType.Polyline, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(polylineAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Images); - //ExEnd:AddPolylineAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds text field annotation in Images document - /// - public static void AddTextFieldAnnotation() - { - try - { - //ExStart:AddTextFieldAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Text field annotation - AnnotationInfo textFieldAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 201.0), - FieldText = "text in the box", - FontFamily = "Arial", - FontSize = 10, - Box = new Rectangle(66f, 201f, 64f, 37f), - PageNumber = 0, - Type = AnnotationType.TextField, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(textFieldAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Images); - //ExEnd:AddTextFieldAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds watermark annotation in Images document - /// - public static void AddWatermarkAnnotation() - { - try - { - //ExStart:AddWatermarkAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Watermark annotation - AnnotationInfo watermarkAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(100.0, 300.0), - FieldText = "TEXT STAMP", - FontFamily = "Microsoft Sans Serif", - FontSize = 10, - FontColor = 2222222, - Box = new Rectangle(430f, 272f, 66f, 51f), - PageNumber = 0, - Type = AnnotationType.Watermark, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(watermarkAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Images); - //ExEnd:AddWatermarkAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds text replacement annotation in Images document - /// - public static void AddTextReplacementAnnotation() - { - try - { - - //ExStart:AddTextReplacementAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Text replacement annotation - AnnotationInfo textReplacementAnnotation = new AnnotationInfo - { - Box = new Rectangle((float)101.76, (float)826.73, (float)229, 27), - PageNumber = 1, - SvgPath = "[{\"x\":101.76,\"y\":264.69},{\"x\":331,\"y\":264.69},{\"x\":101.76,\"y\":243.06},{\"x\":331,\"y\":243}]", - Type = AnnotationType.TextReplacement, - CreatorName = "Anonym A.", - FieldText = "Replaced text", - FontSize = 10 - }; - // Add annotation to list - annotations.Add(textReplacementAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Images); - //ExEnd:AddTextReplacementAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds arrow annotation in Images document - /// - public static void AddArrowAnnotation() - { - try - { - //ExStart:AddArrowAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Arrow annotation - AnnotationInfo arrowAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 252.0), - Box = new Rectangle(279.4742f, 252.9241f, 129.9555f, -9.781596f), - PageNumber = 0, - PenColor = 1201033, - PenStyle = 0, - PenWidth = 1, - SvgPath = "M279.47417840375584,252.92413145539905 L129.9554929577465,-9.781596244131455", - Type = AnnotationType.Arrow, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(arrowAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Images); - //ExEnd:AddArrowAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds text redaction annotation in Images document - /// - public static void AddTextRedactionAnnotation() - { - try - { - //ExStart:AddTextRedactionAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Text redaction annotation - AnnotationInfo textRedactionAnnotation = new AnnotationInfo - { - Box = new Rectangle((float)448.56, (float)212.4, 210, 27), - PageNumber = 0, - SvgPath = "[{\"x\":448.56,\"y\":326.5},{\"x\":658.7,\"y\":326.5},{\"x\":448.56,\"y\":302.43},{\"x\":658.7,\"y\":302.43}]", - Type = AnnotationType.TextRedaction, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(textRedactionAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Images); - //ExEnd:AddTextRedactionAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds underline annotation in Images document - /// - public static void AddUnderLineAnnotation() - { - try - { - //ExStart:AddUnderLineAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Underline annotation - AnnotationInfo underlineAnnotation = new AnnotationInfo - { - Box = new Rectangle((float)248.57, (float)1135.78, (float)222.67, 27), - PageNumber = 1, - SvgPath = "[{\"x\":248.57,\"y\":503.507},{\"x\":471,\"y\":503.507},{\"x\":248.57,\"y\":468.9},{\"x\":471,\"y\":468.9}]", - Type = AnnotationType.TextUnderline, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(underlineAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Images); - //ExEnd:AddUnderLineAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds distance annotation in Images document - /// - public static void AddDistanceAnnotation() - { - try - { - //ExStart:AddDistanceAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Distance annotation - AnnotationInfo distanceAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 287.0), - Box = new Rectangle(248f, 287f, 115f, 25f), - PageNumber = 0, - PenColor = 1201033, - PenStyle = 0, - PenWidth = 1, - SvgPath = "M248.73201877934272,295.5439436619718 l115.28309859154929,-4.192112676056338", - Text = "\r\nAnonym A.: 115px", - Type = AnnotationType.Distance, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(distanceAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Images); - //ExEnd:AddDistanceAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds resource redaction annotation in Images document - /// - public static void AddResourceRedactionAnnotation() - { - try - { - //ExStart:AddResourceRedactionAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Resource redaction annotation - AnnotationInfo resourceRedactionAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 271.78), - BackgroundColor = 3355443, - Box = new Rectangle(466f, 271f, 69f, 62f), - PageNumber = 0, - PenColor = 3355443, - Type = AnnotationType.ResourcesRedaction, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(resourceRedactionAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Images); - //ExEnd:AddResourceRedactionAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Removes all annotations in Images document - /// - public static void RemoveAllAnnotationsFromDocument() - { - - try - { - //ExStart:RemoveAllAnnotationsFromDocument - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Get output file stream - Stream result = annotator.RemoveAnnotationStream(inputFile, DocumentType.Images); - - // Save result stream to file. - using (FileStream fileStream = new FileStream(CommonUtilities.MapDestinationFilePath("Annotated.png"), FileMode.Create)) - { - byte[] buffer = new byte[result.Length]; - result.Seek(0, SeekOrigin.Begin); - result.Read(buffer, 0, buffer.Length); - fileStream.Write(buffer, 0, buffer.Length); - fileStream.Close(); - } - //ExEnd:RemoveAllAnnotationsFromDocument - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - } -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/PDFAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/PDFAnnotation.cs deleted file mode 100644 index 051d09a..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/PDFAnnotation.cs +++ /dev/null @@ -1,569 +0,0 @@ -using GroupDocs.Annotation.Config; -using GroupDocs.Annotation.Domain; -using GroupDocs.Annotation.Handler; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace GroupDocs.Annotation.CSharp -{ - class PDFAnnotation - { - - - /// - /// Adds text annotation in PDF document - /// - public static void AddTextAnnotation() - { - try - { - //ExStart:AddTextAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Initialize text annotation. - AnnotationInfo textAnnotation = new AnnotationInfo - { - Box = new Rectangle((float)265.44, (float)153.86, 206, 36), - PageNumber = 0, - SvgPath = "[{\"x\":265.44,\"y\":388.83},{\"x\":472.19,\"y\":388.83},{\"x\": 265.44,\"y\":349.14},{\"x\":472.19,\"y\":349.14}]", - Type = AnnotationType.Text, - CreatorName = "Anonym A.", - - }; - - // Add annotation to list - annotations.Add(textAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Pdf); - //ExEnd:AddTextAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - - /// - /// Adds area annotation with replies in PDF document - /// - public static void AddAreaAnnotationWithReplies() - { - try - { - //ExStart:AddAreaAnnotationWithReplies - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Area annotation with 2 replies - AnnotationInfo areaAnnnotation = new AnnotationInfo() - { - AnnotationPosition = new Point(852.0, 59.0), - Replies = new AnnotationReplyInfo[] - { - new AnnotationReplyInfo - { - Message = "Hello!", - RepliedOn = DateTime.Now, - UserName = "John" - }, - new AnnotationReplyInfo - { - Message = "Hi!", - RepliedOn = DateTime.Now, - UserName = "Judy" - } - }, - BackgroundColor = 11111111, - Box = new Rectangle(300f, 200f, 88f, 37f), - PageNumber = 0, - PenColor = 2222222, - PenStyle = 1, - PenWidth = 1, - Type = AnnotationType.Area, - CreatorName = "Anonym A.", - - }; - // Add annotation to list - annotations.Add(areaAnnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Pdf); - //ExEnd:AddAreaAnnotationWithReplies - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds point annotation in PDF document - /// - public static void AddPointAnnotation() - { - try - { - //ExStart:AddPointAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Point annotation - AnnotationInfo pointAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 81.0), - Box = new Rectangle(212f, 81f, 142f, 0.0f), - PageNumber = 0, - Type = AnnotationType.Point, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(pointAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Pdf); - //ExEnd:AddPointAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds text strikeout annotation in PDF document - /// - public static void AddTextStrikeOutAnnotation() - { - try - { - //ExStart:AddTextStrikeOutAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Text strikeout annotation - AnnotationInfo strikeoutAnnotation = new AnnotationInfo - { - Box = new Rectangle((float)101.76, (float)688.73, (float)321.85, 27), - PageNumber = 1, - SvgPath = "[{\"x\":101.76,\"y\":400.05},{\"x\":255.9,\"y\":400.05},{\"x\":101.76,\"y\":378.42},{\"x\":255.91,\"y\":378.42},{\"x\":101.76,\"y\":374.13},{\"x\":423.61,\"y\":374.13},{\"x\":101.76,\"y\":352.5},{\"x\":423.61,\"y\":352.5}]", - Type = AnnotationType.TextStrikeout, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(strikeoutAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Pdf); - //ExEnd:AddTextStrikeOutAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds polyline annotation in PDF document - /// - public static void AddPolylineAnnotation() - { - try - { - //ExStart:AddPolylineAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Polyline annotation - AnnotationInfo polylineAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 35.0), - Box = new Rectangle(250f, 35f, 102f, 12f), - PageNumber = 0, - PenColor = 1201033, - PenWidth = 2, - SvgPath = "M250.8280751173709,48.209295774647885l0.6986854460093896,0l0.6986854460093896,-1.3973708920187793l0.6986854460093896,0l0.6986854460093896,-1.3973708920187793l1.3973708920187793,-0.6986854460093896l0.6986854460093896,-0.6986854460093896l0.6986854460093896,0l2.096056338028169,-1.3973708920187793l3.493427230046948,-1.3973708920187793l0.6986854460093896,-0.6986854460093896l1.3973708920187793,-1.3973708920187793l0.6986854460093896,0l1.3973708920187793,-0.6986854460093896l0.6986854460093896,0l0.6986854460093896,-0.6986854460093896l0.6986854460093896,0l0.6986854460093896,0l0,-0.6986854460093896l0.6986854460093896,0l0.6986854460093896,0l1.3973708920187793,0l0,-0.6986854460093896l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l2.096056338028169,-0.6986854460093896l1.3973708920187793,0l0.6986854460093896,0l0.6986854460093896,0l1.3973708920187793,0l1.3973708920187793,0l1.3973708920187793,0l2.096056338028169,0l5.589483568075117,0l1.3973708920187793,0l2.096056338028169,0l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l1.3973708920187793,0l1.3973708920187793,0l0.6986854460093896,0.6986854460093896l1.3973708920187793,0l2.096056338028169,1.3973708920187793l0.6986854460093896,0l0.6986854460093896,0l0,0.6986854460093896l1.3973708920187793,0l0.6986854460093896,0.6986854460093896l1.3973708920187793,0.6986854460093896l0,0.6986854460093896l0.6986854460093896,0l1.3973708920187793,0.6986854460093896l1.3973708920187793,0.6986854460093896l3.493427230046948,0.6986854460093896l1.3973708920187793,0.6986854460093896l2.096056338028169,0.6986854460093896l1.3973708920187793,0.6986854460093896l1.3973708920187793,0l1.3973708920187793,0.6986854460093896l0.6986854460093896,0l0.6986854460093896,0.6986854460093896l1.3973708920187793,0l0.6986854460093896,0l0.6986854460093896,0l2.7947417840375586,0l1.3973708920187793,0l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l2.7947417840375586,0l0.6986854460093896,0l2.7947417840375586,0l1.3973708920187793,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,-0.6986854460093896l0.6986854460093896,0", - Type = AnnotationType.Polyline, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(polylineAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Pdf); - //ExEnd:AddPolylineAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds text field annotation in PDF document - /// - public static void AddTextFieldAnnotation() - { - try - { - //ExStart:AddTextFieldAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Text field annotation - AnnotationInfo textFieldAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 201.0), - FieldText = "text in the box", - FontFamily = "Arial", - FontSize = 10, - Box = new Rectangle(66f, 201f, 64f, 37f), - PageNumber = 0, - Type = AnnotationType.TextField, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(textFieldAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Pdf); - //ExEnd:AddTextFieldAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds watermark annotation in PDF document - /// - public static void AddWatermarkAnnotation() - { - try - { - //ExStart:AddWatermarkAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Watermark annotation - AnnotationInfo watermarkAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(100.0, 300.0), - FieldText = "TEXT STAMP", - FontFamily = "Microsoft Sans Serif", - FontSize = 10, - FontColor = 2222222, - Box = new Rectangle(430f, 272f, 66f, 51f), - PageNumber = 0, - Type = AnnotationType.Watermark, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(watermarkAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Pdf); - //ExEnd:AddWatermarkAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds text replacement annotation in PDF document - /// - public static void AddTextReplacementAnnotation() - { - try - { - - //ExStart:AddTextReplacementAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Text replacement annotation - AnnotationInfo textReplacementAnnotation = new AnnotationInfo - { - Box = new Rectangle((float)101.76, (float)826.73, (float)229, 27), - PageNumber = 1, - SvgPath = "[{\"x\":101.76,\"y\":264.69},{\"x\":331,\"y\":264.69},{\"x\":101.76,\"y\":243.06},{\"x\":331,\"y\":243}]", - Type = AnnotationType.TextReplacement, - CreatorName = "Anonym A.", - FieldText = "Replaced text", - FontSize = 10 - }; - // Add annotation to list - annotations.Add(textReplacementAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Pdf); - //ExEnd:AddTextReplacementAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds arrow annotation in PDF document - /// - public static void AddArrowAnnotation() - { - try - { - //ExStart:AddArrowAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Arrow annotation - AnnotationInfo arrowAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 252.0), - Box = new Rectangle(279.4742f, 252.9241f, 129.9555f, -9.781596f), - PageNumber = 0, - PenColor = 1201033, - PenStyle = 0, - PenWidth = 1, - SvgPath = "M279.47417840375584,252.92413145539905 L129.9554929577465,-9.781596244131455", - Type = AnnotationType.Arrow, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(arrowAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Pdf); - //ExEnd:AddArrowAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds text redaction annotation in PDF document - /// - public static void AddTextRedactionAnnotation() - { - try - { - //ExStart:AddTextRedactionAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Text redaction annotation - AnnotationInfo textRedactionAnnotation = new AnnotationInfo - { - Box = new Rectangle((float)448.56, (float)212.4, 210, 27), - PageNumber = 0, - SvgPath = "[{\"x\":448.56,\"y\":326.5},{\"x\":658.7,\"y\":326.5},{\"x\":448.56,\"y\":302.43},{\"x\":658.7,\"y\":302.43}]", - Type = AnnotationType.TextRedaction, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(textRedactionAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Pdf); - //ExEnd:AddTextRedactionAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds underline annotation in PDF document - /// - public static void AddUnderLineAnnotation() - { - try - { - //ExStart:AddUnderLineAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Underline annotation - AnnotationInfo underlineAnnotation = new AnnotationInfo - { - Box = new Rectangle((float)248.57, (float)1135.78, (float)222.67, 27), - PageNumber = 1, - SvgPath = "[{\"x\":248.57,\"y\":503.507},{\"x\":471,\"y\":503.507},{\"x\":248.57,\"y\":468.9},{\"x\":471,\"y\":468.9}]", - Type = AnnotationType.TextUnderline, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(underlineAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Pdf); - //ExEnd:AddUnderLineAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds distance annotation in PDF document - /// - public static void AddDistanceAnnotation() - { - try - { - //ExStart:AddDistanceAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Distance annotation - AnnotationInfo distanceAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 287.0), - Box = new Rectangle(248f, 287f, 115f, 25f), - PageNumber = 0, - PenColor = 1201033, - PenStyle = 0, - PenWidth = 1, - SvgPath = "M248.73201877934272,295.5439436619718 l115.28309859154929,-4.192112676056338", - Text = "\r\nAnonym A.: 115px", - Type = AnnotationType.Distance, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(distanceAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Pdf); - //ExEnd:AddDistanceAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds resource redaction annotation in PDF document - /// - public static void AddResourceRedactionAnnotation() - { - try - { - //ExStart:AddResourceRedactionAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Resource redaction annotation - AnnotationInfo resourceRedactionAnnotation = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 271.78), - BackgroundColor = 3355443, - Box = new Rectangle(466f, 271f, 69f, 62f), - PageNumber = 0, - PenColor = 3355443, - Type = AnnotationType.ResourcesRedaction, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(resourceRedactionAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Pdf); - //ExEnd:AddResourceRedactionAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Removes all annotations in PDF document - /// - public static void RemoveAllAnnotationsFromDocument() - { - - try - { - //ExStart:RemoveAllAnnotationsFromDocument - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Get output file stream - Stream result = annotator.RemoveAnnotationStream(inputFile, DocumentType.Pdf); - - // Save result stream to file. - using (FileStream fileStream = new FileStream(CommonUtilities.MapDestinationFilePath("Annotated.pdf"), FileMode.Create)) - { - byte[] buffer = new byte[result.Length]; - result.Seek(0, SeekOrigin.Begin); - result.Read(buffer, 0, buffer.Length); - fileStream.Write(buffer, 0, buffer.Length); - fileStream.Close(); - } - //ExEnd:RemoveAllAnnotationsFromDocument - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - } -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/Program.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/Program.cs deleted file mode 100644 index 2a42563..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/Program.cs +++ /dev/null @@ -1,324 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.IO; - -namespace GroupDocs.Annotation.CSharp -{ - class Program - { - static void Main(string[] args) - { - - CommonUtilities.StorageFolderPath = "../../../../Data/Samples/"; - CommonUtilities.DestinationFolderPath = "../../../../Data/Output/"; - CommonUtilities.LicenseFilePath = "E://Groupdocs.Total.lic"; - - /* Apply product license - * Uncomment following function if you have product license - * */ - - //CommonUtilities.ApplyLicense(); - - #region Annotation Functions for PDF - - //CommonUtilities.filePath = "sample.pdf"; - - //////Add text annotation in pdf - //PDFAnnotation.AddTextAnnotation(); - - //////Add area annotation with replies - //PDFAnnotation.AddAreaAnnotationWithReplies(); - - //////Add point annotation - //PDFAnnotation.AddPointAnnotation(); - - //////Add text strike out annotation - //PDFAnnotation.AddTextStrikeOutAnnotation(); - - //////Add polyline annotation - //PDFAnnotation.AddPolylineAnnotation(); - - //////Add text field annotation - //PDFAnnotation.AddTextFieldAnnotation(); - - //////Add watermark annotation - //PDFAnnotation.AddWatermarkAnnotation(); - - //////Add text replacement annotation - //PDFAnnotation.AddTextReplacementAnnotation(); - - //////Add arrow annotation - //PDFAnnotation.AddArrowAnnotation(); - - //////Add text redaction annotation - //PDFAnnotation.AddTextRedactionAnnotation(); - - //////Add underline annotation - //PDFAnnotation.AddUnderLineAnnotation(); - - //////Add distance annotation - //PDFAnnotation.AddDistanceAnnotation(); - - //////Add resource redaction annotation - //PDFAnnotation.AddResourceRedactionAnnotation(); - - //////Remove all annotations - //PDFAnnotation.RemoveAllAnnotationsFromDocument(); - - #endregion - - #region Annotation Functions for Words Document format - - - //CommonUtilities.filePath = "Annotated.docx"; - - //////Add area annotation with replies for Words Document format - //WordAnnotation.AddAreaAnnotationWithRepliesforWords(); - - //////Add point annotation for Words Document format - //WordAnnotation.AddPointAnnotationforWords(); - - //////Add text strike out annotation for Words Document format - //WordAnnotation.AddTextStrikeOutAnnotationforWords(); - - - //////Add text field annotation for Words Document format - //WordAnnotation.AddTextFieldAnnotationforWords(); - - //////Add text replacement annotation for Words Document format - //WordAnnotation.AddTextReplacementAnnotationforWords(); - - //////Add arrow annotation for Words Document format - //WordAnnotation.AddArrowAnnotationforWords(); - - //////Add text redaction annotation for Words Document format - //WordAnnotation.AddTextRedactionAnnotationforWords(); - - //////Add underline annotation for Words Document format - //WordAnnotation.AddUnderLineAnnotationforWords(); - - - //////Add resource redaction annotation for Words Document format - //WordAnnotation.AddResourceRedactionAnnotationforWords(); - - //////Import and Export Annotations from Words document. - //WordAnnotation.ImportAndExportAnnotationsFromWords(); - - ////Add distance annotation for Words Document format - //WordAnnotation.AddDistanceAnnotationforWords(); - - ////Add watermark annotation for Words Document format - //WordAnnotation.AddWatermarkAnnotationforWords(); - - ////Add polyline annotation for Words Document format - //WordAnnotation.AddPolylineAnnotationforWords(); - - #endregion - - #region Annotation Functions for Slides - - //CommonUtilities.filePath = "sample.pptx"; - - ////Add text annotation - //SlidesAnnotation.AddTextAnnotation(); - - ////Add text annotation in slides - //SlidesAnnotation.AddTextFieldAnnotation(); - - ////Add area annotation with replies - //SlidesAnnotation.AddAreaAnnotationWithReplies(); - - ////Add point annotation - //SlidesAnnotation.AddPointAnnotation(); - - ////Add text strike out annotation - //SlidesAnnotation.AddTextStrikeOutAnnotation(); - - ////Add polyline annotation - //SlidesAnnotation.AddPolylineAnnotation(); - - ////Add text field annotation - //SlidesAnnotation.AddTextFieldAnnotation(); - - ////Add watermark annotation - //SlidesAnnotation.AddWatermarkAnnotation(); - - ////Add text replacement annotation - //SlidesAnnotation.AddTextReplacementAnnotation(); - - ////Add arrow annotation - //SlidesAnnotation.AddArrowAnnotation(); - - ////Add text redaction annotation - //SlidesAnnotation.AddTextRedactionAnnotation(); - - ////Add underline annotation - //SlidesAnnotation.AddUnderLineAnnotation(); - - ////Add distance annotation - //SlidesAnnotation.AddDistanceAnnotation(); - - ////Add resource redaction annotation - //SlidesAnnotation.AddResourceRedactionAnnotation(); - - ////Remove all annotations - //SlidesAnnotation.RemoveAllAnnotationsFromDocument(); - - #endregion - - #region Cells - //CommonUtilities.filePath = "excel.xlsx"; - ////Add text annotation in Cells - //CellsAnnotation.AddTextAnnotationInCells(); - #endregion - - #region Annotation Functions for Image - - //CommonUtilities.filePath = "sample.png"; - - //////Add text annotation in pdf - //ImagesAnnotation.AddTextAnnotation(); - - //////Add area annotation with replies - //ImagesAnnotation.AddAreaAnnotationWithReplies(); - - //////Add point annotation - //ImagesAnnotation.AddPointAnnotation(); - - //////Add text strike out annotation - //ImagesAnnotation.AddTextStrikeOutAnnotation(); - - //////Add polyline annotation - //ImagesAnnotation.AddPolylineAnnotation(); - - //////Add text field annotation - //ImagesAnnotation.AddTextFieldAnnotation(); - - //////Add watermark annotation - //ImagesAnnotation.AddWatermarkAnnotation(); - - //////Add text replacement annotation - //ImagesAnnotation.AddTextReplacementAnnotation(); - - //////Add arrow annotation - //ImagesAnnotation.AddArrowAnnotation(); - - //////Add text redaction annotation - //ImagesAnnotation.AddTextRedactionAnnotation(); - - //////Add underline annotation - //ImagesAnnotation.AddUnderLineAnnotation(); - - //////Add distance annotation - //ImagesAnnotation.AddDistanceAnnotation(); - - //////Add resource redaction annotation - //ImagesAnnotation.AddResourceRedactionAnnotation(); - - //////Remove all annotations - //ImagesAnnotation.RemoveAllAnnotationsFromDocument(); - - #endregion - - #region DataStorage Functions - - ////Create document - ////DataStorage.CreateDocument(); - - //////Assign access rights - ////DataStorage.AssignAccessRights(); - - //////Create and get annotation - ////DataStorage.CreateAndGetAnnotation(); - - //////Get all annotation of a document - ////DataStorage.GetAllDocumentAnnotation(); - - //////Resize annotation - ////DataStorage.ResizeAnnotationResult(); - - //////Move an anotation - ////DataStorage.MoveAnnotationResult(); - - //////Set background color - ////DataStorage.SetBackgroundColorResult(); - - //////Edit annotation - ////DataStorage.EditTextFieldAnnotation(); - - //////Remove annotation - ////DataStorage.RemoveAnnotation(); - - //////Add annotation reply - ////DataStorage.AddAnnotationReply(); - - //////Add document collaborator - ////DataStorage.AddCollaborator(); - - //////Get document collaborator - ////DataStorage.GetCollaborator(); - - //////Update document collaborator - ////DataStorage.UpdateCollaborator(); - - //////Delete document collaborator - ////DataStorage.DeleteCollaborator(); - - //////Delete document collaborator - ////DataStorage.ManageCollaboratorRights(); - - //////Export annotation to document - ////DataStorage.ExportAnnotationInFile(); - - //#endregion - - //#region Other Operations - - //////Get image representation of the document - ////CommonUtilities.GetImageRepresentation("sample.pdf"); - - //////Get text coordinates in image representation of the document - ////CommonUtilities.GetTextCoordinates("sample.pdf"); - #endregion - - #region Working with Diagrams - - //CommonUtilities.filePath = "sample.vsd"; - - ////Add area annotation in Diagrams - //DiagramsAnnotation.AddAreaAnnotationInDiagrams(); - - ////Add polyline annotation - //DiagramsAnnotation.AddPolylineAnnotationInDiagrams(); - - ////Add text field annotation - //DiagramsAnnotation.AddTextFieldAnnotationInDiagrams(); - - ////Add arrow annotation - //DiagramsAnnotation.AddArrowAnnotationInDiagrams(); - - ////Add resource redaction annotation - //DiagramsAnnotation.AddResourceRedactionAnnotationInDiagrams(); - - ////Add distance annotation - //DiagramsAnnotation.AddDistanceAnnotationInDiagrams(); - - ////Add point annotation - //DiagramsAnnotation.AddPointAnnotationInDiagrams(); - - ////Add watermark annotation - //DiagramsAnnotation.AddWatermarkAnnotationInDiagrams(); - - - #endregion - - Console.ReadKey(); - - } - - - } -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/Properties/AssemblyInfo.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/Properties/AssemblyInfo.cs deleted file mode 100644 index 1f0e498..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("GroupDocs.Annotation.CSharp")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Microsoft")] -[assembly: AssemblyProduct("GroupDocs.Annotation.CSharp")] -[assembly: AssemblyCopyright("Copyright © Microsoft 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("31997d1e-9753-4256-9ca3-f6d011aa7c18")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/SlidesAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/SlidesAnnotation.cs deleted file mode 100644 index 84f1ab3..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/SlidesAnnotation.cs +++ /dev/null @@ -1,552 +0,0 @@ -using GroupDocs.Annotation.Config; -using GroupDocs.Annotation.Domain; -using GroupDocs.Annotation.Handler; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace GroupDocs.Annotation.CSharp -{ - class SlidesAnnotation - { - /// - /// Adds text annotation in Slides document - /// - public static void AddTextAnnotation() - { - try - { - //ExStart:AddTextAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Initialize text annotation. - AnnotationInfo textAnnotation = new AnnotationInfo - { - Box = new Rectangle((float)265.44, (float)153.86, 206, 36), - PageNumber = 0, - SvgPath = "[{\"x\":265.44,\"y\":388.83},{\"x\":472.19,\"y\":388.83},{\"x\": 265.44,\"y\":349.14},{\"x\":472.19,\"y\":349.14}]", - Type = AnnotationType.Text, - CreatorName = "Anonym A.", - AnnotationPosition = new Point(100, 100) - }; - - // Add annotation to list - annotations.Add(textAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Slides); - //ExEnd:AddTextAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - - /// - /// Adds area annotation with replies in Slides document - /// - public static void AddAreaAnnotationWithReplies() - { - try - { - //ExStart:AddAreaAnnotationWithReplies - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Area annotation with 2 replies - AnnotationInfo areaAnnotation = new AnnotationInfo() - { - CreatedOn = DateTime.Now, - Type = AnnotationType.Area, - PageNumber = 0, - Box = new Rectangle(100, 72.7f, 50, 50), - BackgroundColor = -15988609, - AnnotationPosition = new Point(150, 150) - }; - // Add annotation to list - annotations.Add(areaAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Slides); - //ExEnd:AddAreaAnnotationWithReplies - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds point annotation in Slides document - /// - public static void AddPointAnnotation() - { - try - { - //ExStart:AddPointAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Point annotation - AnnotationInfo pointAnnotation = new AnnotationInfo - { - Box = new Rectangle(212f, 81f, 142f, 0.0f), - PageNumber = 0, - Type = AnnotationType.Point, - CreatorName = "Anonym A.", - AnnotationPosition = new Point(200, 200) - }; - // Add annotation to list - annotations.Add(pointAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Slides); - //ExEnd:AddPointAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds text strikeout annotation in Slides document - /// - public static void AddTextStrikeOutAnnotation() - { - try - { - //ExStart:AddTextStrikeOutAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Text strikeout annotation - AnnotationInfo strikeoutAnnotation = new AnnotationInfo - { - Box = new Rectangle((float)101.76, (float)688.73, (float)321.85, 27), - PageNumber = 1, - SvgPath = "[{\"x\":101.76,\"y\":400.05},{\"x\":255.9,\"y\":400.05},{\"x\":101.76,\"y\":378.42},{\"x\":255.91,\"y\":378.42},{\"x\":101.76,\"y\":374.13},{\"x\":423.61,\"y\":374.13},{\"x\":101.76,\"y\":352.5},{\"x\":423.61,\"y\":352.5}]", - Type = AnnotationType.TextStrikeout, - CreatorName = "Anonym A.", - AnnotationPosition = new Point(250, 250) - }; - // Add annotation to list - annotations.Add(strikeoutAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Slides); - //ExEnd:AddTextStrikeOutAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds polyline annotation in Slides document - /// - public static void AddPolylineAnnotation() - { - try - { - //ExStart:AddPolylineAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Polyline annotation - AnnotationInfo polylineAnnotation = new AnnotationInfo - { - Box = new Rectangle(250f, 35f, 102f, 12f), - PageNumber = 0, - PenColor = 1201033, - PenWidth = 2, - SvgPath = "M250.8280751173709,48.209295774647885l0.6986854460093896,0l0.6986854460093896,-1.3973708920187793l0.6986854460093896,0l0.6986854460093896,-1.3973708920187793l1.3973708920187793,-0.6986854460093896l0.6986854460093896,-0.6986854460093896l0.6986854460093896,0l2.096056338028169,-1.3973708920187793l3.493427230046948,-1.3973708920187793l0.6986854460093896,-0.6986854460093896l1.3973708920187793,-1.3973708920187793l0.6986854460093896,0l1.3973708920187793,-0.6986854460093896l0.6986854460093896,0l0.6986854460093896,-0.6986854460093896l0.6986854460093896,0l0.6986854460093896,0l0,-0.6986854460093896l0.6986854460093896,0l0.6986854460093896,0l1.3973708920187793,0l0,-0.6986854460093896l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l2.096056338028169,-0.6986854460093896l1.3973708920187793,0l0.6986854460093896,0l0.6986854460093896,0l1.3973708920187793,0l1.3973708920187793,0l1.3973708920187793,0l2.096056338028169,0l5.589483568075117,0l1.3973708920187793,0l2.096056338028169,0l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l1.3973708920187793,0l1.3973708920187793,0l0.6986854460093896,0.6986854460093896l1.3973708920187793,0l2.096056338028169,1.3973708920187793l0.6986854460093896,0l0.6986854460093896,0l0,0.6986854460093896l1.3973708920187793,0l0.6986854460093896,0.6986854460093896l1.3973708920187793,0.6986854460093896l0,0.6986854460093896l0.6986854460093896,0l1.3973708920187793,0.6986854460093896l1.3973708920187793,0.6986854460093896l3.493427230046948,0.6986854460093896l1.3973708920187793,0.6986854460093896l2.096056338028169,0.6986854460093896l1.3973708920187793,0.6986854460093896l1.3973708920187793,0l1.3973708920187793,0.6986854460093896l0.6986854460093896,0l0.6986854460093896,0.6986854460093896l1.3973708920187793,0l0.6986854460093896,0l0.6986854460093896,0l2.7947417840375586,0l1.3973708920187793,0l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l0.6986854460093896,0l1.3973708920187793,0l0.6986854460093896,0l2.7947417840375586,0l0.6986854460093896,0l2.7947417840375586,0l1.3973708920187793,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,0l0.6986854460093896,-0.6986854460093896l0.6986854460093896,0", - Type = AnnotationType.Polyline, - CreatorName = "Anonym A.", - AnnotationPosition = new Point(300, 300) - }; - // Add annotation to list - annotations.Add(polylineAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Slides); - //ExEnd:AddPolylineAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds text field annotation in Slides document - /// - public static void AddTextFieldAnnotation() - { - try - { - //ExStart:AddTextFieldAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Text field annotation - AnnotationInfo textFieldAnnotation = new AnnotationInfo - { - FieldText = "text in the box", - FontFamily = "Arial", - FontSize = 10, - Box = new Rectangle(66f, 201f, 64f, 37f), - PageNumber = 0, - Type = AnnotationType.TextField, - CreatorName = "Anonym A.", - AnnotationPosition = new Point(350, 350) - }; - // Add annotation to list - annotations.Add(textFieldAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Slides); - //ExEnd:AddTextFieldAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds watermark annotation in Slides document - /// - public static void AddWatermarkAnnotation() - { - try - { - //ExStart:AddWatermarkAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Watermark annotation - AnnotationInfo watermarkAnnotation = new AnnotationInfo - { - FieldText = "TEXT STAMP", - FontFamily = "Microsoft Sans Serif", - FontSize = 10, - FontColor = 2222222, - Box = new Rectangle(430f, 272f, 66f, 51f), - PageNumber = 0, - Type = AnnotationType.Watermark, - CreatorName = "Anonym A.", - AnnotationPosition = new Point(400, 400) - }; - // Add annotation to list - annotations.Add(watermarkAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Slides); - //ExEnd:AddWatermarkAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds text replacement annotation in Slides document - /// - public static void AddTextReplacementAnnotation() - { - try - { - - //ExStart:AddTextReplacementAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Text replacement annotation - AnnotationInfo textReplacementAnnotation = new AnnotationInfo - { - Box = new Rectangle((float)101.76, (float)826.73, (float)229, 27), - PageNumber = 1, - SvgPath = "[{\"x\":101.76,\"y\":264.69},{\"x\":331,\"y\":264.69},{\"x\":101.76,\"y\":243.06},{\"x\":331,\"y\":243}]", - Type = AnnotationType.TextReplacement, - CreatorName = "Anonym A.", - FieldText = "Replaced text", - FontSize = 10, - AnnotationPosition = new Point(450, 450) - }; - // Add annotation to list - annotations.Add(textReplacementAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Slides); - //ExEnd:AddTextReplacementAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds arrow annotation in Slides document - /// - public static void AddArrowAnnotation() - { - try - { - //ExStart:AddArrowAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Arrow annotation - AnnotationInfo arrowAnnotation = new AnnotationInfo - { - Box = new Rectangle(279.4742f, 252.9241f, 129.9555f, -9.781596f), - PageNumber = 0, - PenColor = 1201033, - PenStyle = 0, - PenWidth = 1, - SvgPath = "M279.47417840375584,252.92413145539905 L129.9554929577465,-9.781596244131455", - Type = AnnotationType.Arrow, - CreatorName = "Anonym A.", - AnnotationPosition = new Point(500, 100) - }; - // Add annotation to list - annotations.Add(arrowAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Slides); - //ExEnd:AddArrowAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds text redaction annotation in Slides document - /// - public static void AddTextRedactionAnnotation() - { - try - { - //ExStart:AddTextRedactionAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Text redaction annotation - AnnotationInfo textRedactionAnnotation = new AnnotationInfo - { - Box = new Rectangle((float)448.56, (float)212.4, 210, 27), - PageNumber = 0, - SvgPath = "[{\"x\":448.56,\"y\":326.5},{\"x\":658.7,\"y\":326.5},{\"x\":448.56,\"y\":302.43},{\"x\":658.7,\"y\":302.43}]", - Type = AnnotationType.TextRedaction, - CreatorName = "Anonym A.", - AnnotationPosition = new Point(500, 150) - }; - // Add annotation to list - annotations.Add(textRedactionAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Slides); - //ExEnd:AddTextRedactionAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds underline annotation in Slides document - /// - public static void AddUnderLineAnnotation() - { - try - { - //ExStart:AddUnderLineAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Underline annotation - AnnotationInfo underlineAnnotation = new AnnotationInfo - { - Box = new Rectangle((float)248.57, (float)1135.78, (float)222.67, 27), - PageNumber = 1, - SvgPath = "[{\"x\":248.57,\"y\":503.507},{\"x\":471,\"y\":503.507},{\"x\":248.57,\"y\":468.9},{\"x\":471,\"y\":468.9}]", - Type = AnnotationType.TextUnderline, - CreatorName = "Anonym A.", - AnnotationPosition = new Point(500, 200) - }; - // Add annotation to list - annotations.Add(underlineAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Slides); - //ExEnd:AddUnderLineAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds distance annotation in Slides document - /// - public static void AddDistanceAnnotation() - { - try - { - //ExStart:AddDistanceAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Distance annotation - AnnotationInfo distanceAnnotation = new AnnotationInfo - { - Box = new Rectangle(248f, 287f, 115f, 25f), - PageNumber = 0, - PenColor = 1201033, - PenStyle = 0, - PenWidth = 1, - SvgPath = "M248.73201877934272,295.5439436619718 l115.28309859154929,-4.192112676056338", - Text = "\r\nAnonym A.: 115px", - Type = AnnotationType.Distance, - CreatorName = "Anonym A.", - AnnotationPosition = new Point(500, 250) - }; - // Add annotation to list - annotations.Add(distanceAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Slides); - //ExEnd:AddDistanceAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds resource redaction annotation in Slides document - /// - public static void AddResourceRedactionAnnotation() - { - try - { - //ExStart:AddResourceRedactionAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Resource redaction annotation - AnnotationInfo resourceRedactionAnnotation = new AnnotationInfo - { - BackgroundColor = 3355443, - Box = new Rectangle(466f, 271f, 69f, 62f), - PageNumber = 0, - PenColor = 3355443, - Type = AnnotationType.ResourcesRedaction, - CreatorName = "Anonym A.", - AnnotationPosition = new Point(500, 300) - }; - // Add annotation to list - annotations.Add(resourceRedactionAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Slides); - //ExEnd:AddResourceRedactionAnnotation - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Removes all annotations in Slides document - /// - public static void RemoveAllAnnotationsFromDocument() - { - - try - { - //ExStart:RemoveAllAnnotationsFromDocument - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Get output file stream - Stream result = annotator.RemoveAnnotationStream(inputFile, DocumentType.Slides); - - // Save result stream to file. - using (FileStream fileStream = new FileStream(CommonUtilities.MapDestinationFilePath("Annotated.Slides"), FileMode.Create)) - { - byte[] buffer = new byte[result.Length]; - result.Seek(0, SeekOrigin.Begin); - result.Read(buffer, 0, buffer.Length); - fileStream.Write(buffer, 0, buffer.Length); - fileStream.Close(); - } - //ExEnd:RemoveAllAnnotationsFromDocument - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - } -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/WordAnnotation.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/WordAnnotation.cs deleted file mode 100644 index 9281eac..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/WordAnnotation.cs +++ /dev/null @@ -1,557 +0,0 @@ -using GroupDocs.Annotation.Config; -using GroupDocs.Annotation.Domain; -using GroupDocs.Annotation.Handler; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace GroupDocs.Annotation.CSharp -{ - - class WordAnnotation - { - - public static void AddTextAnnotationforWords() - { - try - { - //ExStart:AddTextAnnotationforWords - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Initialize text annotation. - AnnotationInfo textAnnotationforWords = new AnnotationInfo - { - Box = new Rectangle((float)265.44, (float)153.86, 206, 36), - PageNumber = 0, - SvgPath = "[{\"x\":265.44,\"y\":388.83},{\"x\":472.19,\"y\":388.83},{\"x\": 265.44,\"y\":349.14},{\"x\":472.19,\"y\":349.14}]", - Type = AnnotationType.Text, - CreatorName = "Anonym A." - }; - - // Add annotation to list - annotations.Add(textAnnotationforWords); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Words); - //ExEnd:AddTextAnnotationforWords - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - - /// - /// Adds area annotation with replies in words document - /// - public static void AddAreaAnnotationWithRepliesforWords() - { - try - { - //ExStart:AddAreaAnnotationWithRepliesforWords - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Area annotation with 2 replies - AnnotationInfo areaAnnnotationforWords = new AnnotationInfo() - { - AnnotationPosition = new Point(852.0, 59.0), - Replies = new AnnotationReplyInfo[] - { - new AnnotationReplyInfo - { - Message = "Hello!", - RepliedOn = DateTime.Now, - UserName = "John" - }, - new AnnotationReplyInfo - { - Message = "Hi!", - RepliedOn = DateTime.Now, - UserName = "Judy" - } - }, - BackgroundColor = 11111111, - Box = new Rectangle(300f, 200f, 88f, 37f), - PageNumber = 0, - PenColor = 2222222, - PenStyle = 1, - PenWidth = 1, - Type = AnnotationType.Area, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(areaAnnnotationforWords); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Words); - //ExEnd:AddAreaAnnotationWithRepliesforWords - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds point annotation in words document - /// - public static void AddPointAnnotationforWords() - { - try - { - //ExStart:AddPointAnnotationforWords - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Point annotation - AnnotationInfo pointAnnotationforWords = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 81.0), - Box = new Rectangle(212f, 81f, 142f, 0.0f), - PageNumber = 0, - Type = AnnotationType.Point, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(pointAnnotationforWords); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Words); - //ExEnd:AddPointAnnotationforWords - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds text strikeout annotation in words document - /// - public static void AddTextStrikeOutAnnotationforWords() - { - try - { - //ExStart:AddTextStrikeOutAnnotationforWords - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Text strikeout annotation - AnnotationInfo strikeoutAnnotationforWords = new AnnotationInfo - { - Box = new Rectangle((float)101.76, (float)688.73, (float)321.85, 27), - PageNumber = 1, - SvgPath = "[{\"x\":101.76,\"y\":400.05},{\"x\":255.9,\"y\":400.05},{\"x\":101.76,\"y\":378.42},{\"x\":255.91,\"y\":378.42},{\"x\":101.76,\"y\":374.13},{\"x\":423.61,\"y\":374.13},{\"x\":101.76,\"y\":352.5},{\"x\":423.61,\"y\":352.5}]", - Type = AnnotationType.TextStrikeout, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(strikeoutAnnotationforWords); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Words); - //ExEnd:AddTextStrikeOutAnnotationforWords - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds text field annotation in words document - /// - public static void AddTextFieldAnnotationforWords() - { - try - { - //ExStart:AddTextFieldAnnotationforWords - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Text field annotation - AnnotationInfo textFieldAnnotationforWords = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 201.0), - FieldText = "text in the box", - FontFamily = "Arial", - FontSize = 10, - Box = new Rectangle(66f, 201f, 64f, 37f), - PageNumber = 0, - Type = AnnotationType.TextField, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(textFieldAnnotationforWords); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Words); - //ExEnd:AddTextFieldAnnotationforWords - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds text replacement annotation in words document - /// - public static void AddTextReplacementAnnotationforWords() - { - try - { - - //ExStart:AddTextReplacementAnnotationforWords - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Text replacement annotation - AnnotationInfo textReplacementAnnotationforWords = new AnnotationInfo - { - Box = new Rectangle((float)101.76, (float)826.73, (float)229, 27), - PageNumber = 1, - SvgPath = "[{\"x\":101.76,\"y\":264.69},{\"x\":331,\"y\":264.69},{\"x\":101.76,\"y\":243.06},{\"x\":331,\"y\":243}]", - Type = AnnotationType.TextReplacement, - CreatorName = "Anonym A.", - FieldText = "Replaced text", - FontSize = 10 - }; - // Add annotation to list - annotations.Add(textReplacementAnnotationforWords); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Words); - //ExEnd:AddTextReplacementAnnotationforWords - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds arrow annotation in words document - /// - public static void AddArrowAnnotationforWords() - { - try - { - //ExStart:AddArrowAnnotationforWords - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Arrow annotation - AnnotationInfo arrowAnnotationforWords = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 252.0), - Box = new Rectangle(279.4742f, 252.9241f, 129.9555f, -9.781596f), - PageNumber = 0, - PenColor = 1201033, - PenStyle = 0, - PenWidth = 1, - SvgPath = "M279.47417840375584,252.92413145539905 L129.9554929577465,-9.781596244131455", - Type = AnnotationType.Arrow, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(arrowAnnotationforWords); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Words); - //ExEnd:AddArrowAnnotationforWords - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds text redaction annotation in words document - /// - public static void AddTextRedactionAnnotationforWords() - { - try - { - //ExStart:AddTextRedactionAnnotationforWords - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Text redaction annotation - AnnotationInfo textRedactionAnnotationforWords = new AnnotationInfo - { - Box = new Rectangle((float)448.56, (float)212.4, 210, 27), - PageNumber = 0, - SvgPath = "[{\"x\":448.56,\"y\":326.5},{\"x\":658.7,\"y\":326.5},{\"x\":448.56,\"y\":302.43},{\"x\":658.7,\"y\":302.43}]", - Type = AnnotationType.TextRedaction, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(textRedactionAnnotationforWords); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Words); - //ExEnd:AddTextRedactionAnnotationforWords - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds underline annotation in words document - /// - public static void AddUnderLineAnnotationforWords() - { - try - { - //ExStart:AddUnderLineAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Underline annotation - AnnotationInfo underlineAnnotationforWords = new AnnotationInfo - { - Box = new Rectangle((float)248.57, (float)1135.78, (float)222.67, 27), - PageNumber = 1, - SvgPath = "[{\"x\":248.57,\"y\":503.507},{\"x\":471,\"y\":503.507},{\"x\":248.57,\"y\":468.9},{\"x\":471,\"y\":468.9}]", - Type = AnnotationType.TextUnderline, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(underlineAnnotationforWords); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Words); - //ExEnd:AddUnderLineAnnotationforWords - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - - /// - /// Adds resource redaction annotation in words document - /// - public static void AddResourceRedactionAnnotationforWords() - { - try - { - //ExStart:AddResourceRedactionAnnotation - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Resource redaction annotation - AnnotationInfo resourceRedactionAnnotationforWords = new AnnotationInfo - { - AnnotationPosition = new Point(852.0, 271.78), - BackgroundColor = 3355443, - Box = new Rectangle(466f, 271f, 69f, 62f), - PageNumber = 0, - PenColor = 3355443, - Type = AnnotationType.ResourcesRedaction, - CreatorName = "Anonym A." - }; - // Add annotation to list - annotations.Add(resourceRedactionAnnotationforWords); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Words); - //ExEnd:AddResourceRedactionAnnotationforWords - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Import and Export Annotations from Words document. - /// - /// Update CommonUtilities.filePath with path to word document files before using this function - public static void ImportAndExportAnnotationsFromWords() - { - try - { - //ExStart:ImportAndExportAnnotationsFromWords - // Create instance of annotator. - AnnotationConfig cfg = CommonUtilities.GetConfiguration(); - - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - - //importing annotations from Words document - AnnotationInfo[] annotations = annotator.ImportAnnotations(inputFile, DocumentType.Words); - - //export imported annotation to another document (just for check) - Stream clearDocument = new FileStream(CommonUtilities.MapDestinationFilePath("Clear.docx"), FileMode.Open, FileAccess.ReadWrite); - Stream output = annotator.ExportAnnotationsToDocument(clearDocument, annotations.ToList(), DocumentType.Words); - - - // Export annotation and save output file - //save results after export - using (FileStream fileStream = new FileStream(CommonUtilities.MapDestinationFilePath("AnnotationImportAndExportAnnotated.docx"), FileMode.Create)) - { - byte[] buffer = new byte[output.Length]; - output.Seek(0L, SeekOrigin.Begin); - output.Read(buffer, 0, buffer.Length); - fileStream.Write(buffer, 0, buffer.Length); - fileStream.Close(); - } - //ExEnd:ImportAndExportAnnotationsFromWords - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds Distance annotation in words document - /// - public static void AddDistanceAnnotationforWords() - { - try - { - //ExStart:AddDistanceAnnotationforWords - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Distance annotation - AnnotationInfo distanceAnnnotation = new AnnotationInfo - { - Box = new Rectangle((float)248.73202514648438, (float)287.85653686523438, (float)115.9178466796875, (float)25.143020629882812), - Opacity = 0.3, - PageNumber = 0, - SvgPath = "M248.73201877934272,295.5439436619718 l115.28309859154929,-4.192112676056338", - Type = AnnotationType.Distance, - }; - // Add annotation to list - annotations.Add(distanceAnnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Words); - //ExEnd:AddDistanceAnnotationforWords - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds Watermark annotation in words document - /// - public static void AddWatermarkAnnotationforWords() - { - try - { - //ExStart:AddWatermarkAnnotationforWords - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Watermark annotation - AnnotationInfo watermarkAnnotation = new AnnotationInfo - { - FieldText = "watermark text", - FontFamily = "Microsoft Sans Serif", - FontSize = 17, - Box = new Rectangle(195.225f, 216.464f, 230.73f, 58.18f), - PageNumber = 0, - Type = AnnotationType.Watermark, - FontColor = 16711680 - }; - // Add annotation to list - annotations.Add(watermarkAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Words); - //ExEnd:AddWatermarkAnnotationforWords - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - - /// - /// Adds Polyline annotation in words document - /// - public static void AddPolylineAnnotationforWords() - { - try - { - //ExStart:AddPolylineAnnotationforWords - // Get input file stream - Stream inputFile = new FileStream(CommonUtilities.MapSourceFilePath(CommonUtilities.filePath), FileMode.Open, FileAccess.ReadWrite); - // Initialize list of AnnotationInfo - List annotations = new List(); - - // Polyline annotation - AnnotationInfo polylineAnnotation = new AnnotationInfo - { - PageNumber = 0, - Type = AnnotationType.Polyline, - Box = new Rectangle(288.760559f, 533.7042f, 216.929581f, 171.676056f), - SvgPath = "M504.9718309859155,678.0845070422536l-0.7183098591549296,0l-0.7183098591549296,0l-0.7183098591549296,0.7183098591549296l-0.7183098591549296,0.7183098591549296l-1.4366197183098592,0.7183098591549296l-2.154929577464789,2.154929577464789l-2.8732394366197185,0.7183098591549296l-5.028169014084507,2.154929577464789l-6.464788732394367,3.591549295774648l-10.774647887323944,3.591549295774648l-10.056338028169014,2.154929577464789l-9.338028169014084,2.154929577464789l-8.619718309859156,2.154929577464789l-9.338028169014084,3.591549295774648l-7.183098591549296,0l-7.183098591549296,0.7183098591549296l-5.028169014084507,0.7183098591549296l-5.746478873239437,1.4366197183098592l-5.746478873239437,0l-8.619718309859156,0l-12.211267605633804,0l-6.464788732394367,0l-8.619718309859156,-1.4366197183098592l-7.901408450704226,-3.591549295774648l-10.774647887323944,-5.746478873239437l-8.619718309859156,-5.028169014084507l-9.338028169014084,-5.746478873239437l-12.211267605633804,-9.338028169014084l-10.056338028169014,-10.056338028169014l-5.746478873239437,-7.901408450704226l- 6.464788732394367,-12.211267605633804l-2.154929577464789,-3.591549295774648l-5.028169014084507,-13.647887323943662l-2.154929577464789,-7.901408450704226l0,-7.183098591549296l0,-9.338028169014084l0,-5.746478873239437l2.8732394366197185,-7.901408450704226l5.028169014084507,-5.746478873239437l6.464788732394367,-7.183098591549296l10.774647887323944,-7.901408450704226l10.774647887323944,-6.464788732394367l15.084507042253522,-6.464788732394367l14.366197183098592,-6.464788732394367l22.267605633802816,-7.183098591549296l13.647887323943662,-3.591549295774648l14.366197183098592,-3.591549295774648l16.52112676056338,-0.7183098591549296l16.52112676056338,0l15.084507042253522,0l10.774647887323944,0l7.183098591549296,2.154929577464789l4.309859154929578,2.154929577464789l5.028169014084507,2.8732394366197185l3.591549295774648,2.154929577464789l3.591549295774648,2.8732394366197185l6.464788732394367,6.464788732394367l2.8732394366197185,4.309859154929578l2.154929577464789,2.154929577464789l2.154929577464789,4.309859154929578l1.4366197183098592,2.8732394366197185l2.154929577464789,5.028169014084507l0.7183098591549296,3.591549295774648l0.7183098591549296,5.028169014084507l0,5.028169014084507l0,4.309859154929578l0,7.183098591549296l-0.7183098591549296,2.8732394366197185l-3.591549295774648,6.464788732394367l-3.591549295774648,6.464788732394367l-4.309859154929578,5.028169014084507l-5.028169014084507,5.028169014084507l-7.183098591549296,4.309859154929578l-7.183098591549296,4.309859154929578l-10.774647887323944,6.464788732394367l-9.338028169014084,4.309859154929578l-9.338028169014084,4.309859154929578l-10.056338028169014,2.8732394366197185l-7.901408450704226,2.8732394366197185l-10.774647887323944,1.4366197183098592l-5.028169014084507,0.7183098591549296l-3.591549295774648,0l-2.8732394366197185,0l-3.591549295774648,0l-5.028169014084507,0l-5.746478873239437,0l-7.183098591549296,-1.4366197183098592l-5.746478873239437,-1.4366197183098592l-6.464788732394367,-2.8732394366197185l-4.309859154929578,-1.4366197183098592l-2.154929577464789,-1.4366197183098592l-1.4366197183098592,-0.7183098591549296l-1.4366197183098592,-0.7183098591549296l-0.7183098591549296,-0.7183098591549296l-1.4366197183098592,-1.4366197183098592l0,-0.7183098591549296l-1.4366197183098592,-0.7183098591549296l0,-1.4366197183098592l-0.7183098591549296,-0.7183098591549296l0,-0.7183098591549296", - }; - // Add annotation to list - annotations.Add(polylineAnnotation); - - // Export annotation and save output file - CommonUtilities.SaveOutputDocument(inputFile, annotations, DocumentType.Words); - //ExEnd:AddPolylineAnnotationforWords - } - catch (System.Exception exp) - { - Console.WriteLine(exp.Message); - } - } - } - -} diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/packages.config b/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/packages.config deleted file mode 100644 index c0bc8ba..0000000 --- a/Examples/GroupDocs.Annotation.Examples.CSharp/GroupDocs.AnnotationExamples/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/Helper.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/Helper.cs new file mode 100644 index 0000000..1e7fd4e --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/Helper.cs @@ -0,0 +1,15 @@ +using System; + +namespace GroupDocs.Annotation.Examples.CSharp +{ + public static class Helper + { + public static void WriteError(string text) + { + ConsoleColor foregroundColor = Console.ForegroundColor; + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine(text); + Console.ForegroundColor = foregroundColor; + } + } +} \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/QuickStart/SetLicenseFromFile.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/QuickStart/SetLicenseFromFile.cs new file mode 100644 index 0000000..4efbba8 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/QuickStart/SetLicenseFromFile.cs @@ -0,0 +1,36 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp +{ + /// + /// This example demonstrates how to set license from file. + /// + /// + /// The SetLicense method attempts to set a license from several locations relative to the executable and GroupDocs.Annotation.dll. + /// You can also use the additional overload to load a license from a stream, this is useful for instance when the + /// License is stored as an embedded resource. + /// + class SetLicenseFromFile + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # SetLicenseFromFile : how to set license from file."); + + if (File.Exists(Constants.LicensePath)) + { + License license = new License(); + license.SetLicense(Constants.LicensePath); + Console.WriteLine("License set successfully."); + } + else + { + Console.WriteLine("\nWe do not ship any license with this example. " + + "\nVisit the GroupDocs site to obtain either a temporary or permanent license. " + + "\nLearn more about licensing at https://purchase.groupdocs.com/faqs/licensing. " + + "\nLear how to request temporary license at https://purchase.groupdocs.com/temporary-license."); + } + } + } +} \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/QuickStart/SetLicenseFromStream.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/QuickStart/SetLicenseFromStream.cs new file mode 100644 index 0000000..6a88d28 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/QuickStart/SetLicenseFromStream.cs @@ -0,0 +1,35 @@ +using System; +using System.IO; + +namespace GroupDocs.Annotation.Examples.CSharp.BasicUsage +{ + /// + /// This example demonstrates how to set license from stream. + /// + class SetLicenseFromStream + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # SetLicenseFromStream : how to set license from stream."); + + if (File.Exists(Constants.LicensePath)) + { + using (FileStream stream = File.OpenRead(Constants.LicensePath)) + { + License license = new License(); + license.SetLicense(stream); + } + + Console.WriteLine("License set successfully."); + } + else + { + Console.WriteLine("\nWe do not ship any license with this example. " + + "\nVisit the GroupDocs site to obtain either a temporary or permanent license. " + + "\nLearn more about licensing at https://purchase.groupdocs.com/faqs/licensing. " + + "\nLear how to request temporary license at https://purchase.groupdocs.com/temporary-license."); + } + } + } +} \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/QuickStart/SetMeteredLicense.cs b/Examples/GroupDocs.Annotation.Examples.CSharp/QuickStart/SetMeteredLicense.cs new file mode 100644 index 0000000..0386996 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/QuickStart/SetMeteredLicense.cs @@ -0,0 +1,24 @@ +using System; + +namespace GroupDocs.Annotation.Examples.CSharp +{ + /// + /// This example demonstrates how to set Metered license. + /// Learn more about Metered license at https://purchase.groupdocs.com/faqs/licensing/metered. + /// + class SetMeteredLicense + { + public static void Run() + { + Console.WriteLine("\n--------------------------------------------------------------------------------------------------"); + Console.WriteLine("[Example Basic Usage] # SetMeteredLicense : how to set Metered license."); + + + string publicKey = "*****"; + string privateKey = "*****"; + Metered metered = new Metered(); + metered.SetMeteredKey(publicKey, privateKey); + Console.WriteLine("License set successfully."); + } + } +} \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/Fonts/Konstanting.ttf b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/Fonts/Konstanting.ttf new file mode 100644 index 0000000..265a85a Binary files /dev/null and b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/Fonts/Konstanting.ttf differ diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/annotated.docx b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/annotated.docx new file mode 100644 index 0000000..ace49d4 Binary files /dev/null and b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/annotated.docx differ diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/annotated.pdf b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/annotated.pdf new file mode 100644 index 0000000..4c588e3 Binary files /dev/null and b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/annotated.pdf differ diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/annotated_with_replies.pdf b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/annotated_with_replies.pdf new file mode 100644 index 0000000..087746c Binary files /dev/null and b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/annotated_with_replies.pdf differ diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/annotated_with_versions.pdf b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/annotated_with_versions.pdf new file mode 100644 index 0000000..024fa63 Binary files /dev/null and b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/annotated_with_versions.pdf differ diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/annotation.xml b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/annotation.xml new file mode 100644 index 0000000..28f21d6 --- /dev/null +++ b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/annotation.xml @@ -0,0 +1,22 @@ + + + + 0 + 0001-01-01T00:00:00 + This is rectangle annotation + + + Area + 65535 + + 100 + 100 + 100 + 100 + + + + + + + \ No newline at end of file diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/google.png b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/google.png new file mode 100644 index 0000000..333bda9 Binary files /dev/null and b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/google.png differ diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/input.docx b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/input.docx new file mode 100644 index 0000000..3338edd Binary files /dev/null and b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/input.docx differ diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/input.pdf b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/input.pdf new file mode 100644 index 0000000..6f1ef37 Binary files /dev/null and b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/input.pdf differ diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/input.xlsx b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/input.xlsx new file mode 100644 index 0000000..8818270 Binary files /dev/null and b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/input.xlsx differ diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/inputWithCustomFont.pdf b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/inputWithCustomFont.pdf new file mode 100644 index 0000000..41d7364 Binary files /dev/null and b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/inputWithCustomFont.pdf differ diff --git a/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/input_protected.pdf b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/input_protected.pdf new file mode 100644 index 0000000..aec9278 Binary files /dev/null and b/Examples/GroupDocs.Annotation.Examples.CSharp/Resources/SampleFiles/input_protected.pdf differ diff --git a/Examples/README.md b/Examples/README.md index e2b3b9e..df873fd 100644 --- a/Examples/README.md +++ b/Examples/README.md @@ -1,6 +1,6 @@ # GroupDocs.Annotation for .NET Examples -This package contains C# Example Projects for [GroupDocs.Annotation for .NET](https://github.com/groupdocs-annotation/GroupDocs.Annotation-for-.NET/tree/master/Examples) and sample input templates used in the examples. +This package contains C# Example Projects for [GroupDocs.Annotation for .NET](https://products.groupdocs.com/annotation/net) and sample input templates used in the examples.

@@ -8,22 +8,24 @@ This package contains C# Example Projects for [GroupDocs.Annotation for .NET](ht

-# Prerequisite +## How to Run the Examples in Visual Studio? -+ Visual Studio 2012 or later. - -+ GroupDocs.Annotation 17.8.0 or later - - -# How to Run the Examples? - -The package contains project for C# examples. Follow the given steps to proceed with project build: +Follow the given steps to proceed with project build: * Extract the downloaded project and open the solution file in Visual Studio * Right click on solution and press "Enable NuGet package Restore" -* Build the project. +* Build the project In other case, it is possible that Visual Studio is unable to automatically add APIs references due to Visual Studio version differences. In this case, please add references of missing APIs manually. +## How to Run the Examples in Docker container? + +* Navigate into Examples directory +* Build an image + `docker build --pull -t annotation:examples .` +* Run a container + * Windows Command Line (CMD): `docker run --rm -it -v %cd%:/examples/Results annotation:examples` + * Powershell: `docker run --rm -it -v ${PWD}:/examples/Results annotation:examples` + * On Linux: `docker run --rm -it -v $(pwd):/examples/Results annotation:examples` For more details, visit [How to Run Examples](https://docs.groupdocs.com/display/annotationnet/How+to+Run+Examples). diff --git a/Examples/dockerignore b/Examples/dockerignore new file mode 100644 index 0000000..1f6be81 --- /dev/null +++ b/Examples/dockerignore @@ -0,0 +1,9 @@ +**/.git +**/bin +**/obj +**/out +**/.vscode +**/.vs +**/packages +**/tools +.dotnet diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/.nuget/NuGet.Config b/Plugins/GroupDocs_Annotation_SharePointPlugin/.nuget/NuGet.Config deleted file mode 100644 index 67f8ea0..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/.nuget/NuGet.Config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/.nuget/NuGet.exe b/Plugins/GroupDocs_Annotation_SharePointPlugin/.nuget/NuGet.exe deleted file mode 100644 index 6bb79fe..0000000 Binary files a/Plugins/GroupDocs_Annotation_SharePointPlugin/.nuget/NuGet.exe and /dev/null differ diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/.nuget/NuGet.targets b/Plugins/GroupDocs_Annotation_SharePointPlugin/.nuget/NuGet.targets deleted file mode 100644 index 3f8c37b..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/.nuget/NuGet.targets +++ /dev/null @@ -1,144 +0,0 @@ - - - - $(MSBuildProjectDirectory)\..\ - - - false - - - false - - - true - - - false - - - - - - - - - - - $([System.IO.Path]::Combine($(SolutionDir), ".nuget")) - - - - - $(SolutionDir).nuget - - - - $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName.Replace(' ', '_')).config - $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config - - - - $(MSBuildProjectDirectory)\packages.config - $(PackagesProjectConfig) - - - - - $(NuGetToolsPath)\NuGet.exe - @(PackageSource) - - "$(NuGetExePath)" - mono --runtime=v4.0.30319 "$(NuGetExePath)" - - $(TargetDir.Trim('\\')) - - -RequireConsent - -NonInteractive - - "$(SolutionDir) " - "$(SolutionDir)" - - - $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir) - $(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols - - - - RestorePackages; - $(BuildDependsOn); - - - - - $(BuildDependsOn); - BuildPackage; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/AppManifest.xml b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/AppManifest.xml deleted file mode 100644 index 4eb56c5..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/AppManifest.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - GroupDocs-Annotation-SharePointApp - ~remoteAppUrl/?{StandardTokens} - - - - - - - - diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Content/App.css b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Content/App.css deleted file mode 100644 index ca018f2..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Content/App.css +++ /dev/null @@ -1 +0,0 @@ -/* Place custom styles below */ diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Content/Elements.xml b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Content/Elements.xml deleted file mode 100644 index 62ec68a..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Content/Elements.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Content/SharePointProjectItem.spdata b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Content/SharePointProjectItem.spdata deleted file mode 100644 index b9bc8c0..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Content/SharePointProjectItem.spdata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Features/Feature1/Feature1.Template.xml b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Features/Feature1/Feature1.Template.xml deleted file mode 100644 index c27273d..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Features/Feature1/Feature1.Template.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Features/Feature1/Feature1.feature b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Features/Feature1/Feature1.feature deleted file mode 100644 index 207fdd6..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Features/Feature1/Feature1.feature +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/GroupDocs-Annotation-SharePointApp.csproj b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/GroupDocs-Annotation-SharePointApp.csproj deleted file mode 100644 index 1cdb616..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/GroupDocs-Annotation-SharePointApp.csproj +++ /dev/null @@ -1,117 +0,0 @@ - - - - - Debug - AnyCPU - {4BF01D81-F0CE-4FFD-A719-ADA4E1AF23B6} - Library - Properties - GroupDocs_Annotation_SharePointApp - GroupDocs-Annotation-SharePointApp - v4.5 - 15.0 - 512 - {C1CDDADD-2546-481F-9697-4EA41081F2FC};{14822709-B5A1-4724-98CA-57A101D1B079};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 11.0 - 11.1 - False - SharePointApp - {6095d7a7-6aed-45d0-8cb6-6fe1b1843391} - {4d958995-905c-4cd9-b27b-388c2117e47f} - {761bb63b-5155-4689-84d9-2b467501fddb} - {80ccc5c5-31e4-4445-8b8f-f55ebf83e54d} - {92e4b3f2-01ad-4910-9305-081cc553c474} - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - - - {6599e21c-5170-46d8-aa45-5a747512ede5} - - - - - - - - {92e4b3f2-01ad-4910-9305-081cc553c474} - - - - - - - - - - - {0d2a0dba-74c9-4415-acae-97a409588af8} - - - - - - - manifest-icon - - - - {32a70ba3-74f6-445b-a3bd-433272415367} - - - - - {dcabdfa0-1a56-4fa0-8b71-880b0cde450f} - - - Package.package - - - {40fa276f-e091-45c1-93ff-96cbba1d9add} - - - Feature1.feature - - - - - Designer - - - - - {82307136-CEEB-4577-B744-4BC57265A2F9} - GroupDocs.Demo.Annotation.Mvc - True - Web - SharePointWebProjectOutput - GroupDocs.Demo.Annotation.Mvc - False - - - - - 10.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - \ No newline at end of file diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Images/AppIcon.png b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Images/AppIcon.png deleted file mode 100644 index ada40a3..0000000 Binary files a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Images/AppIcon.png and /dev/null differ diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Images/Elements.xml b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Images/Elements.xml deleted file mode 100644 index aad4071..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Images/Elements.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Images/SharePointProjectItem.spdata b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Images/SharePointProjectItem.spdata deleted file mode 100644 index fced765..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Images/SharePointProjectItem.spdata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Package/Package.Template.xml b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Package/Package.Template.xml deleted file mode 100644 index 640ff0f..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Package/Package.Template.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Package/Package.package b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Package/Package.package deleted file mode 100644 index 98bf2e0..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Package/Package.package +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Pages/Default.aspx b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Pages/Default.aspx deleted file mode 100644 index 763f25e..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Pages/Default.aspx +++ /dev/null @@ -1,37 +0,0 @@ -<%-- The following 4 lines are ASP.NET directives needed when using SharePoint components --%> - -<%@ Page Inherits="Microsoft.SharePoint.WebPartPages.WebPartPage, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" MasterPageFile="~masterurl/default.master" Language="C#" %> - -<%@ Register TagPrefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> -<%@ Register TagPrefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> -<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> - -<%-- The markup and script in the following Content element will be placed in the of the page --%> - - - - - - - - - - - - -<%-- The markup in the following Content element will be placed in the TitleArea of the page --%> - - Page Title - - -<%-- The markup and script in the following Content element will be placed in the of the page --%> - - -
-

- - initializing... -

-
- -
diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Pages/Elements.xml b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Pages/Elements.xml deleted file mode 100644 index 821ca15..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Pages/Elements.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Pages/SharePointProjectItem.spdata b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Pages/SharePointProjectItem.spdata deleted file mode 100644 index 76f2c90..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Pages/SharePointProjectItem.spdata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/App.js b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/App.js deleted file mode 100644 index 64c67a1..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/App.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict'; - -ExecuteOrDelayUntilScriptLoaded(initializePage, "sp.js"); - -function initializePage() -{ - var context = SP.ClientContext.get_current(); - var user = context.get_web().get_currentUser(); - - // This code runs when the DOM is ready and creates a context object which is needed to use the SharePoint object model - $(document).ready(function () { - getUserName(); - }); - - // This function prepares, loads, and then executes a SharePoint query to get the current users information - function getUserName() { - context.load(user); - context.executeQueryAsync(onGetUserNameSuccess, onGetUserNameFail); - } - - // This function is executed if the above call is successful - // It replaces the contents of the 'message' element with the user name - function onGetUserNameSuccess() { - $('#message').text('Hello ' + user.get_title()); - } - - // This function is executed if the above call fails - function onGetUserNameFail(sender, args) { - alert('Failed to get user name. Error:' + args.get_message()); - } -} diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/Elements.xml b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/Elements.xml deleted file mode 100644 index 327728e..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/Elements.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/SharePointProjectItem.spdata b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/SharePointProjectItem.spdata deleted file mode 100644 index 8dc915f..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/SharePointProjectItem.spdata +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/_references.js b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/_references.js deleted file mode 100644 index e6897cc..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/_references.js +++ /dev/null @@ -1,7 +0,0 @@ -/// -/// -/// -/// -/// -/// -/// diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/jquery-1.9.1.intellisense.js b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/jquery-1.9.1.intellisense.js deleted file mode 100644 index 4eeb2e3..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/jquery-1.9.1.intellisense.js +++ /dev/null @@ -1,2676 +0,0 @@ -/* NUGET: BEGIN LICENSE TEXT -jQuery v1.9.1 -Microsoft grants you the right to use these script files for the sole purpose of either: (i) interacting through your browser with the Microsoft website, subject to the website's terms of use; or (ii) using the files as included with a Microsoft product subject to that product's license terms. Microsoft reserves all other rights to the files not expressly granted by Microsoft, whether by implication, estoppel or otherwise. The notices and licenses below are for informational purposes only. -*************************************************** -* jQuery JavaScript Library v1.9.1 -* http://jquery.com/ -* Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors -******************************** -* Includes Sizzle CSS Selector Engine -* http://sizzlejs.com/ -* Copyright 2012 jQuery Foundation and other contributors -******************************************************** -Provided for Informational Purposes Only -MIT License -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 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. -* NUGET: END LICENSE TEXT */ -intellisense.annotate(jQuery, { - 'ajax': function() { - /// - /// Perform an asynchronous HTTP (Ajax) request. - /// A string containing the URL to which the request is sent. - /// A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup(). See jQuery.ajax( settings ) below for a complete list of all settings. - /// - /// - /// - /// Perform an asynchronous HTTP (Ajax) request. - /// A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup(). - /// - /// - }, - 'ajaxPrefilter': function() { - /// - /// Handle custom Ajax options or modify existing options before each request is sent and before they are processed by $.ajax(). - /// An optional string containing one or more space-separated dataTypes - /// A handler to set default values for future Ajax requests. - /// - }, - 'ajaxSetup': function() { - /// - /// Set default values for future Ajax requests. - /// A set of key/value pairs that configure the default Ajax request. All options are optional. - /// - }, - 'ajaxTransport': function() { - /// - /// Creates an object that handles the actual transmission of Ajax data. - /// A string identifying the data type to use - /// A handler to return the new transport object to use with the data type provided in the first argument. - /// - }, - 'boxModel': function() { - /// Deprecated in jQuery 1.3 (see jQuery.support). States if the current page, in the user's browser, is being rendered using the W3C CSS Box Model. - /// - }, - 'browser': function() { - /// Contains flags for the useragent, read from navigator.userAgent. We recommend against using this property; please try to use feature detection instead (see jQuery.support). jQuery.browser may be moved to a plugin in a future release of jQuery. - /// - }, - 'browser.version': function() { - /// The version number of the rendering engine for the user's browser. - /// - }, - 'Callbacks': function() { - /// - /// A multi-purpose callbacks list object that provides a powerful way to manage callback lists. - /// An optional list of space-separated flags that change how the callback list behaves. - /// - /// - }, - 'contains': function() { - /// - /// Check to see if a DOM element is a descendant of another DOM element. - /// The DOM element that may contain the other element. - /// The DOM element that may be contained by (a descendant of) the other element. - /// - /// - }, - 'cssHooks': function() { - /// Hook directly into jQuery to override how particular CSS properties are retrieved or set, normalize CSS property naming, or create custom properties. - /// - }, - 'data': function() { - /// - /// Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element. - /// The DOM element to query for the data. - /// Name of the data stored. - /// - /// - /// - /// Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element. - /// The DOM element to query for the data. - /// - /// - }, - 'Deferred': function() { - /// - /// A constructor function that returns a chainable utility object with methods to register multiple callbacks into callback queues, invoke callback queues, and relay the success or failure state of any synchronous or asynchronous function. - /// A function that is called just before the constructor returns. - /// - /// - }, - 'dequeue': function() { - /// - /// Execute the next function on the queue for the matched element. - /// A DOM element from which to remove and execute a queued function. - /// A string containing the name of the queue. Defaults to fx, the standard effects queue. - /// - }, - 'each': function() { - /// - /// A generic iterator function, which can be used to seamlessly iterate over both objects and arrays. Arrays and array-like objects with a length property (such as a function's arguments object) are iterated by numeric index, from 0 to length-1. Other objects are iterated via their named properties. - /// The object or array to iterate over. - /// The function that will be executed on every object. - /// - /// - }, - 'error': function() { - /// - /// Takes a string and throws an exception containing it. - /// The message to send out. - /// - }, - 'extend': function() { - /// - /// Merge the contents of two or more objects together into the first object. - /// An object that will receive the new properties if additional objects are passed in or that will extend the jQuery namespace if it is the sole argument. - /// An object containing additional properties to merge in. - /// Additional objects containing properties to merge in. - /// - /// - /// - /// Merge the contents of two or more objects together into the first object. - /// If true, the merge becomes recursive (aka. deep copy). - /// The object to extend. It will receive the new properties. - /// An object containing additional properties to merge in. - /// Additional objects containing properties to merge in. - /// - /// - }, - 'get': function() { - /// - /// Load data from the server using a HTTP GET request. - /// A string containing the URL to which the request is sent. - /// A plain object or string that is sent to the server with the request. - /// A callback function that is executed if the request succeeds. - /// The type of data expected from the server. Default: Intelligent Guess (xml, json, script, or html). - /// - /// - }, - 'getJSON': function() { - /// - /// Load JSON-encoded data from the server using a GET HTTP request. - /// A string containing the URL to which the request is sent. - /// A plain object or string that is sent to the server with the request. - /// A callback function that is executed if the request succeeds. - /// - /// - }, - 'getScript': function() { - /// - /// Load a JavaScript file from the server using a GET HTTP request, then execute it. - /// A string containing the URL to which the request is sent. - /// A callback function that is executed if the request succeeds. - /// - /// - }, - 'globalEval': function() { - /// - /// Execute some JavaScript code globally. - /// The JavaScript code to execute. - /// - }, - 'grep': function() { - /// - /// Finds the elements of an array which satisfy a filter function. The original array is not affected. - /// The array to search through. - /// The function to process each item against. The first argument to the function is the item, and the second argument is the index. The function should return a Boolean value. this will be the global window object. - /// If "invert" is false, or not provided, then the function returns an array consisting of all elements for which "callback" returns true. If "invert" is true, then the function returns an array consisting of all elements for which "callback" returns false. - /// - /// - }, - 'hasData': function() { - /// - /// Determine whether an element has any jQuery data associated with it. - /// A DOM element to be checked for data. - /// - /// - }, - 'holdReady': function() { - /// - /// Holds or releases the execution of jQuery's ready event. - /// Indicates whether the ready hold is being requested or released - /// - }, - 'inArray': function() { - /// - /// Search for a specified value within an array and return its index (or -1 if not found). - /// The value to search for. - /// An array through which to search. - /// The index of the array at which to begin the search. The default is 0, which will search the whole array. - /// - /// - }, - 'isArray': function() { - /// - /// Determine whether the argument is an array. - /// Object to test whether or not it is an array. - /// - /// - }, - 'isEmptyObject': function() { - /// - /// Check to see if an object is empty (contains no enumerable properties). - /// The object that will be checked to see if it's empty. - /// - /// - }, - 'isFunction': function() { - /// - /// Determine if the argument passed is a Javascript function object. - /// Object to test whether or not it is a function. - /// - /// - }, - 'isNumeric': function() { - /// - /// Determines whether its argument is a number. - /// The value to be tested. - /// - /// - }, - 'isPlainObject': function() { - /// - /// Check to see if an object is a plain object (created using "{}" or "new Object"). - /// The object that will be checked to see if it's a plain object. - /// - /// - }, - 'isWindow': function() { - /// - /// Determine whether the argument is a window. - /// Object to test whether or not it is a window. - /// - /// - }, - 'isXMLDoc': function() { - /// - /// Check to see if a DOM node is within an XML document (or is an XML document). - /// The DOM node that will be checked to see if it's in an XML document. - /// - /// - }, - 'makeArray': function() { - /// - /// Convert an array-like object into a true JavaScript array. - /// Any object to turn into a native Array. - /// - /// - }, - 'map': function() { - /// - /// Translate all items in an array or object to new array of items. - /// The Array to translate. - /// The function to process each item against. The first argument to the function is the array item, the second argument is the index in array The function can return any value. Within the function, this refers to the global (window) object. - /// - /// - /// - /// Translate all items in an array or object to new array of items. - /// The Array or Object to translate. - /// The function to process each item against. The first argument to the function is the value; the second argument is the index or key of the array or object property. The function can return any value to add to the array. A returned array will be flattened into the resulting array. Within the function, this refers to the global (window) object. - /// - /// - }, - 'merge': function() { - /// - /// Merge the contents of two arrays together into the first array. - /// The first array to merge, the elements of second added. - /// The second array to merge into the first, unaltered. - /// - /// - }, - 'noConflict': function() { - /// - /// Relinquish jQuery's control of the $ variable. - /// A Boolean indicating whether to remove all jQuery variables from the global scope (including jQuery itself). - /// - /// - }, - 'noop': function() { - /// An empty function. - }, - 'now': function() { - /// Return a number representing the current time. - /// - }, - 'param': function() { - /// - /// Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request. - /// An array or object to serialize. - /// - /// - /// - /// Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request. - /// An array or object to serialize. - /// A Boolean indicating whether to perform a traditional "shallow" serialization. - /// - /// - }, - 'parseHTML': function() { - /// - /// Parses a string into an array of DOM nodes. - /// HTML string to be parsed - /// DOM element to serve as the context in which the HTML fragment will be created - /// A Boolean indicating whether to include scripts passed in the HTML string - /// - /// - }, - 'parseJSON': function() { - /// - /// Takes a well-formed JSON string and returns the resulting JavaScript object. - /// The JSON string to parse. - /// - /// - }, - 'parseXML': function() { - /// - /// Parses a string into an XML document. - /// a well-formed XML string to be parsed - /// - /// - }, - 'post': function() { - /// - /// Load data from the server using a HTTP POST request. - /// A string containing the URL to which the request is sent. - /// A plain object or string that is sent to the server with the request. - /// A callback function that is executed if the request succeeds. - /// The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html). - /// - /// - }, - 'proxy': function() { - /// - /// Takes a function and returns a new one that will always have a particular context. - /// The function whose context will be changed. - /// The object to which the context (this) of the function should be set. - /// - /// - /// - /// Takes a function and returns a new one that will always have a particular context. - /// The object to which the context of the function should be set. - /// The name of the function whose context will be changed (should be a property of the context object). - /// - /// - /// - /// Takes a function and returns a new one that will always have a particular context. - /// The function whose context will be changed. - /// The object to which the context (this) of the function should be set. - /// Any number of arguments to be passed to the function referenced in the function argument. - /// - /// - /// - /// Takes a function and returns a new one that will always have a particular context. - /// The object to which the context of the function should be set. - /// The name of the function whose context will be changed (should be a property of the context object). - /// Any number of arguments to be passed to the function named in the name argument. - /// - /// - }, - 'queue': function() { - /// - /// Manipulate the queue of functions to be executed on the matched element. - /// A DOM element where the array of queued functions is attached. - /// A string containing the name of the queue. Defaults to fx, the standard effects queue. - /// An array of functions to replace the current queue contents. - /// - /// - /// - /// Manipulate the queue of functions to be executed on the matched element. - /// A DOM element on which to add a queued function. - /// A string containing the name of the queue. Defaults to fx, the standard effects queue. - /// The new function to add to the queue. - /// - /// - }, - 'removeData': function() { - /// - /// Remove a previously-stored piece of data. - /// A DOM element from which to remove data. - /// A string naming the piece of data to remove. - /// - /// - }, - 'sub': function() { - /// Creates a new copy of jQuery whose properties and methods can be modified without affecting the original jQuery object. - /// - }, - 'support': function() { - /// A collection of properties that represent the presence of different browser features or bugs. Primarily intended for jQuery's internal use; specific properties may be removed when they are no longer needed internally to improve page startup performance. - /// - }, - 'trim': function() { - /// - /// Remove the whitespace from the beginning and end of a string. - /// The string to trim. - /// - /// - }, - 'type': function() { - /// - /// Determine the internal JavaScript [[Class]] of an object. - /// Object to get the internal JavaScript [[Class]] of. - /// - /// - }, - 'unique': function() { - /// - /// Sorts an array of DOM elements, in place, with the duplicates removed. Note that this only works on arrays of DOM elements, not strings or numbers. - /// The Array of DOM elements. - /// - /// - }, - 'when': function() { - /// - /// Provides a way to execute callback functions based on one or more objects, usually Deferred objects that represent asynchronous events. - /// One or more Deferred objects, or plain JavaScript objects. - /// - /// - }, -}); - -var _1228819969 = jQuery.Callbacks; -jQuery.Callbacks = function(flags) { -var _object = _1228819969(flags); -intellisense.annotate(_object, { - 'add': function() { - /// - /// Add a callback or a collection of callbacks to a callback list. - /// A function, or array of functions, that are to be added to the callback list. - /// - /// - }, - 'disable': function() { - /// Disable a callback list from doing anything more. - /// - }, - 'disabled': function() { - /// Determine if the callbacks list has been disabled. - /// - }, - 'empty': function() { - /// Remove all of the callbacks from a list. - /// - }, - 'fire': function() { - /// - /// Call all of the callbacks with the given arguments - /// The argument or list of arguments to pass back to the callback list. - /// - /// - }, - 'fired': function() { - /// Determine if the callbacks have already been called at least once. - /// - }, - 'fireWith': function() { - /// - /// Call all callbacks in a list with the given context and arguments. - /// A reference to the context in which the callbacks in the list should be fired. - /// An argument, or array of arguments, to pass to the callbacks in the list. - /// - /// - }, - 'has': function() { - /// - /// Determine whether a supplied callback is in a list - /// The callback to search for. - /// - /// - }, - 'lock': function() { - /// Lock a callback list in its current state. - /// - }, - 'locked': function() { - /// Determine if the callbacks list has been locked. - /// - }, - 'remove': function() { - /// - /// Remove a callback or a collection of callbacks from a callback list. - /// A function, or array of functions, that are to be removed from the callback list. - /// - /// - }, -}); - -return _object; -}; -intellisense.redirectDefinition(jQuery.Callbacks, _1228819969); - -var _731531622 = jQuery.Deferred; -jQuery.Deferred = function(func) { -var _object = _731531622(func); -intellisense.annotate(_object, { - 'always': function() { - /// - /// Add handlers to be called when the Deferred object is either resolved or rejected. - /// A function, or array of functions, that is called when the Deferred is resolved or rejected. - /// Optional additional functions, or arrays of functions, that are called when the Deferred is resolved or rejected. - /// - /// - }, - 'done': function() { - /// - /// Add handlers to be called when the Deferred object is resolved. - /// A function, or array of functions, that are called when the Deferred is resolved. - /// Optional additional functions, or arrays of functions, that are called when the Deferred is resolved. - /// - /// - }, - 'fail': function() { - /// - /// Add handlers to be called when the Deferred object is rejected. - /// A function, or array of functions, that are called when the Deferred is rejected. - /// Optional additional functions, or arrays of functions, that are called when the Deferred is rejected. - /// - /// - }, - 'isRejected': function() { - /// Determine whether a Deferred object has been rejected. - /// - }, - 'isResolved': function() { - /// Determine whether a Deferred object has been resolved. - /// - }, - 'notify': function() { - /// - /// Call the progressCallbacks on a Deferred object with the given args. - /// Optional arguments that are passed to the progressCallbacks. - /// - /// - }, - 'notifyWith': function() { - /// - /// Call the progressCallbacks on a Deferred object with the given context and args. - /// Context passed to the progressCallbacks as the this object. - /// Optional arguments that are passed to the progressCallbacks. - /// - /// - }, - 'pipe': function() { - /// - /// Utility method to filter and/or chain Deferreds. - /// An optional function that is called when the Deferred is resolved. - /// An optional function that is called when the Deferred is rejected. - /// - /// - /// - /// Utility method to filter and/or chain Deferreds. - /// An optional function that is called when the Deferred is resolved. - /// An optional function that is called when the Deferred is rejected. - /// An optional function that is called when progress notifications are sent to the Deferred. - /// - /// - }, - 'progress': function() { - /// - /// Add handlers to be called when the Deferred object generates progress notifications. - /// A function, or array of functions, that is called when the Deferred generates progress notifications. - /// - /// - }, - 'promise': function() { - /// - /// Return a Deferred's Promise object. - /// Object onto which the promise methods have to be attached - /// - /// - }, - 'reject': function() { - /// - /// Reject a Deferred object and call any failCallbacks with the given args. - /// Optional arguments that are passed to the failCallbacks. - /// - /// - }, - 'rejectWith': function() { - /// - /// Reject a Deferred object and call any failCallbacks with the given context and args. - /// Context passed to the failCallbacks as the this object. - /// An optional array of arguments that are passed to the failCallbacks. - /// - /// - }, - 'resolve': function() { - /// - /// Resolve a Deferred object and call any doneCallbacks with the given args. - /// Optional arguments that are passed to the doneCallbacks. - /// - /// - }, - 'resolveWith': function() { - /// - /// Resolve a Deferred object and call any doneCallbacks with the given context and args. - /// Context passed to the doneCallbacks as the this object. - /// An optional array of arguments that are passed to the doneCallbacks. - /// - /// - }, - 'state': function() { - /// Determine the current state of a Deferred object. - /// - }, - 'then': function() { - /// - /// Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. - /// A function that is called when the Deferred is resolved. - /// An optional function that is called when the Deferred is rejected. - /// An optional function that is called when progress notifications are sent to the Deferred. - /// - /// - /// - /// Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. - /// A function, or array of functions, called when the Deferred is resolved. - /// A function, or array of functions, called when the Deferred is rejected. - /// - /// - /// - /// Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. - /// A function, or array of functions, called when the Deferred is resolved. - /// A function, or array of functions, called when the Deferred is rejected. - /// A function, or array of functions, called when the Deferred notifies progress. - /// - /// - }, -}); - -return _object; -}; -intellisense.redirectDefinition(jQuery.Callbacks, _731531622); - -intellisense.annotate(jQuery.Event.prototype, { - 'currentTarget': function() { - /// The current DOM element within the event bubbling phase. - /// - }, - 'data': function() { - /// An optional object of data passed to an event method when the current executing handler is bound. - /// - }, - 'delegateTarget': function() { - /// The element where the currently-called jQuery event handler was attached. - /// - }, - 'isDefaultPrevented': function() { - /// Returns whether event.preventDefault() was ever called on this event object. - /// - }, - 'isImmediatePropagationStopped': function() { - /// Returns whether event.stopImmediatePropagation() was ever called on this event object. - /// - }, - 'isPropagationStopped': function() { - /// Returns whether event.stopPropagation() was ever called on this event object. - /// - }, - 'metaKey': function() { - /// Indicates whether the META key was pressed when the event fired. - /// - }, - 'namespace': function() { - /// The namespace specified when the event was triggered. - /// - }, - 'pageX': function() { - /// The mouse position relative to the left edge of the document. - /// - }, - 'pageY': function() { - /// The mouse position relative to the top edge of the document. - /// - }, - 'preventDefault': function() { - /// If this method is called, the default action of the event will not be triggered. - }, - 'relatedTarget': function() { - /// The other DOM element involved in the event, if any. - /// - }, - 'result': function() { - /// The last value returned by an event handler that was triggered by this event, unless the value was undefined. - /// - }, - 'stopImmediatePropagation': function() { - /// Keeps the rest of the handlers from being executed and prevents the event from bubbling up the DOM tree. - }, - 'stopPropagation': function() { - /// Prevents the event from bubbling up the DOM tree, preventing any parent handlers from being notified of the event. - }, - 'target': function() { - /// The DOM element that initiated the event. - /// - }, - 'timeStamp': function() { - /// The difference in milliseconds between the time the browser created the event and January 1, 1970. - /// - }, - 'type': function() { - /// Describes the nature of the event. - /// - }, - 'which': function() { - /// For key or mouse events, this property indicates the specific key or button that was pressed. - /// - }, -}); - -intellisense.annotate(jQuery.fn, { - 'add': function() { - /// - /// Add elements to the set of matched elements. - /// A string representing a selector expression to find additional elements to add to the set of matched elements. - /// - /// - /// - /// Add elements to the set of matched elements. - /// One or more elements to add to the set of matched elements. - /// - /// - /// - /// Add elements to the set of matched elements. - /// An HTML fragment to add to the set of matched elements. - /// - /// - /// - /// Add elements to the set of matched elements. - /// An existing jQuery object to add to the set of matched elements. - /// - /// - /// - /// Add elements to the set of matched elements. - /// A string representing a selector expression to find additional elements to add to the set of matched elements. - /// The point in the document at which the selector should begin matching; similar to the context argument of the $(selector, context) method. - /// - /// - }, - 'addBack': function() { - /// - /// Add the previous set of elements on the stack to the current set, optionally filtered by a selector. - /// A string containing a selector expression to match the current set of elements against. - /// - /// - }, - 'addClass': function() { - /// - /// Adds the specified class(es) to each of the set of matched elements. - /// One or more space-separated classes to be added to the class attribute of each matched element. - /// - /// - /// - /// Adds the specified class(es) to each of the set of matched elements. - /// A function returning one or more space-separated class names to be added to the existing class name(s). Receives the index position of the element in the set and the existing class name(s) as arguments. Within the function, this refers to the current element in the set. - /// - /// - }, - 'after': function() { - /// - /// Insert content, specified by the parameter, after each element in the set of matched elements. - /// HTML string, DOM element, or jQuery object to insert after each element in the set of matched elements. - /// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert after each element in the set of matched elements. - /// - /// - /// - /// Insert content, specified by the parameter, after each element in the set of matched elements. - /// A function that returns an HTML string, DOM element(s), or jQuery object to insert after each element in the set of matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set. - /// - /// - }, - 'ajaxComplete': function() { - /// - /// Register a handler to be called when Ajax requests complete. This is an AjaxEvent. - /// The function to be invoked. - /// - /// - }, - 'ajaxError': function() { - /// - /// Register a handler to be called when Ajax requests complete with an error. This is an Ajax Event. - /// The function to be invoked. - /// - /// - }, - 'ajaxSend': function() { - /// - /// Attach a function to be executed before an Ajax request is sent. This is an Ajax Event. - /// The function to be invoked. - /// - /// - }, - 'ajaxStart': function() { - /// - /// Register a handler to be called when the first Ajax request begins. This is an Ajax Event. - /// The function to be invoked. - /// - /// - }, - 'ajaxStop': function() { - /// - /// Register a handler to be called when all Ajax requests have completed. This is an Ajax Event. - /// The function to be invoked. - /// - /// - }, - 'ajaxSuccess': function() { - /// - /// Attach a function to be executed whenever an Ajax request completes successfully. This is an Ajax Event. - /// The function to be invoked. - /// - /// - }, - 'all': function() { - /// Selects all elements. - }, - 'andSelf': function() { - /// Add the previous set of elements on the stack to the current set. - /// - }, - 'animate': function() { - /// - /// Perform a custom animation of a set of CSS properties. - /// An object of CSS properties and values that the animation will move toward. - /// A string or number determining how long the animation will run. - /// A string indicating which easing function to use for the transition. - /// A function to call once the animation is complete. - /// - /// - /// - /// Perform a custom animation of a set of CSS properties. - /// An object of CSS properties and values that the animation will move toward. - /// A map of additional options to pass to the method. - /// - /// - }, - 'animated': function() { - /// Select all elements that are in the progress of an animation at the time the selector is run. - }, - 'append': function() { - /// - /// Insert content, specified by the parameter, to the end of each element in the set of matched elements. - /// DOM element, HTML string, or jQuery object to insert at the end of each element in the set of matched elements. - /// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the end of each element in the set of matched elements. - /// - /// - /// - /// Insert content, specified by the parameter, to the end of each element in the set of matched elements. - /// A function that returns an HTML string, DOM element(s), or jQuery object to insert at the end of each element in the set of matched elements. Receives the index position of the element in the set and the old HTML value of the element as arguments. Within the function, this refers to the current element in the set. - /// - /// - }, - 'appendTo': function() { - /// - /// Insert every element in the set of matched elements to the end of the target. - /// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the end of the element(s) specified by this parameter. - /// - /// - }, - 'attr': function() { - /// - /// Set one or more attributes for the set of matched elements. - /// The name of the attribute to set. - /// A value to set for the attribute. - /// - /// - /// - /// Set one or more attributes for the set of matched elements. - /// An object of attribute-value pairs to set. - /// - /// - /// - /// Set one or more attributes for the set of matched elements. - /// The name of the attribute to set. - /// A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old attribute value as arguments. - /// - /// - }, - 'attributeContains': function() { - /// - /// Selects elements that have the specified attribute with a value containing the a given substring. - /// An attribute name. - /// An attribute value. Can be either an unquoted single word or a quoted string. - /// - }, - 'attributeContainsPrefix': function() { - /// - /// Selects elements that have the specified attribute with a value either equal to a given string or starting with that string followed by a hyphen (-). - /// An attribute name. - /// An attribute value. Can be either an unquoted single word or a quoted string. - /// - }, - 'attributeContainsWord': function() { - /// - /// Selects elements that have the specified attribute with a value containing a given word, delimited by spaces. - /// An attribute name. - /// An attribute value. Can be either an unquoted single word or a quoted string. - /// - }, - 'attributeEndsWith': function() { - /// - /// Selects elements that have the specified attribute with a value ending exactly with a given string. The comparison is case sensitive. - /// An attribute name. - /// An attribute value. Can be either an unquoted single word or a quoted string. - /// - }, - 'attributeEquals': function() { - /// - /// Selects elements that have the specified attribute with a value exactly equal to a certain value. - /// An attribute name. - /// An attribute value. Can be either an unquoted single word or a quoted string. - /// - }, - 'attributeHas': function() { - /// - /// Selects elements that have the specified attribute, with any value. - /// An attribute name. - /// - }, - 'attributeMultiple': function() { - /// - /// Matches elements that match all of the specified attribute filters. - /// An attribute filter. - /// Another attribute filter, reducing the selection even more - /// As many more attribute filters as necessary - /// - }, - 'attributeNotEqual': function() { - /// - /// Select elements that either don't have the specified attribute, or do have the specified attribute but not with a certain value. - /// An attribute name. - /// An attribute value. Can be either an unquoted single word or a quoted string. - /// - }, - 'attributeStartsWith': function() { - /// - /// Selects elements that have the specified attribute with a value beginning exactly with a given string. - /// An attribute name. - /// An attribute value. Can be either an unquoted single word or a quoted string. - /// - }, - 'before': function() { - /// - /// Insert content, specified by the parameter, before each element in the set of matched elements. - /// HTML string, DOM element, or jQuery object to insert before each element in the set of matched elements. - /// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert before each element in the set of matched elements. - /// - /// - /// - /// Insert content, specified by the parameter, before each element in the set of matched elements. - /// A function that returns an HTML string, DOM element(s), or jQuery object to insert before each element in the set of matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set. - /// - /// - }, - 'bind': function() { - /// - /// Attach a handler to an event for the elements. - /// A string containing one or more DOM event types, such as "click" or "submit," or custom event names. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Attach a handler to an event for the elements. - /// A string containing one or more DOM event types, such as "click" or "submit," or custom event names. - /// An object containing data that will be passed to the event handler. - /// Setting the third argument to false will attach a function that prevents the default action from occurring and stops the event from bubbling. The default is true. - /// - /// - /// - /// Attach a handler to an event for the elements. - /// An object containing one or more DOM event types and functions to execute for them. - /// - /// - }, - 'blur': function() { - /// - /// Bind an event handler to the "blur" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "blur" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'button': function() { - /// Selects all button elements and elements of type button. - }, - 'change': function() { - /// - /// Bind an event handler to the "change" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "change" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'checkbox': function() { - /// Selects all elements of type checkbox. - }, - 'checked': function() { - /// Matches all elements that are checked. - }, - 'child': function() { - /// - /// Selects all direct child elements specified by "child" of elements specified by "parent". - /// Any valid selector. - /// A selector to filter the child elements. - /// - }, - 'children': function() { - /// - /// Get the children of each element in the set of matched elements, optionally filtered by a selector. - /// A string containing a selector expression to match elements against. - /// - /// - }, - 'class': function() { - /// - /// Selects all elements with the given class. - /// A class to search for. An element can have multiple classes; only one of them must match. - /// - }, - 'clearQueue': function() { - /// - /// Remove from the queue all items that have not yet been run. - /// A string containing the name of the queue. Defaults to fx, the standard effects queue. - /// - /// - }, - 'click': function() { - /// - /// Bind an event handler to the "click" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "click" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'clone': function() { - /// - /// Create a deep copy of the set of matched elements. - /// A Boolean indicating whether event handlers should be copied along with the elements. As of jQuery 1.4, element data will be copied as well. - /// - /// - /// - /// Create a deep copy of the set of matched elements. - /// A Boolean indicating whether event handlers and data should be copied along with the elements. The default value is false. *In jQuery 1.5.0 the default value was incorrectly true; it was changed back to false in 1.5.1 and up. - /// A Boolean indicating whether event handlers and data for all children of the cloned element should be copied. By default its value matches the first argument's value (which defaults to false). - /// - /// - }, - 'closest': function() { - /// - /// For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree. - /// A string containing a selector expression to match elements against. - /// - /// - /// - /// For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree. - /// A string containing a selector expression to match elements against. - /// A DOM element within which a matching element may be found. If no context is passed in then the context of the jQuery set will be used instead. - /// - /// - /// - /// For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree. - /// A jQuery object to match elements against. - /// - /// - /// - /// For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree. - /// An element to match elements against. - /// - /// - }, - 'contains': function() { - /// - /// Select all elements that contain the specified text. - /// A string of text to look for. It's case sensitive. - /// - }, - 'contents': function() { - /// Get the children of each element in the set of matched elements, including text and comment nodes. - /// - }, - 'context': function() { - /// The DOM node context originally passed to jQuery(); if none was passed then context will likely be the document. - /// - }, - 'css': function() { - /// - /// Set one or more CSS properties for the set of matched elements. - /// A CSS property name. - /// A value to set for the property. - /// - /// - /// - /// Set one or more CSS properties for the set of matched elements. - /// A CSS property name. - /// A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old value as arguments. - /// - /// - /// - /// Set one or more CSS properties for the set of matched elements. - /// An object of property-value pairs to set. - /// - /// - }, - 'data': function() { - /// - /// Store arbitrary data associated with the matched elements. - /// A string naming the piece of data to set. - /// The new data value; it can be any Javascript type including Array or Object. - /// - /// - /// - /// Store arbitrary data associated with the matched elements. - /// An object of key-value pairs of data to update. - /// - /// - }, - 'dblclick': function() { - /// - /// Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'delay': function() { - /// - /// Set a timer to delay execution of subsequent items in the queue. - /// An integer indicating the number of milliseconds to delay execution of the next item in the queue. - /// A string containing the name of the queue. Defaults to fx, the standard effects queue. - /// - /// - }, - 'delegate': function() { - /// - /// Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements. - /// A selector to filter the elements that trigger the event. - /// A string containing one or more space-separated JavaScript event types, such as "click" or "keydown," or custom event names. - /// A function to execute at the time the event is triggered. - /// - /// - /// - /// Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements. - /// A selector to filter the elements that trigger the event. - /// A string containing one or more space-separated JavaScript event types, such as "click" or "keydown," or custom event names. - /// An object containing data that will be passed to the event handler. - /// A function to execute at the time the event is triggered. - /// - /// - /// - /// Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements. - /// A selector to filter the elements that trigger the event. - /// A plain object of one or more event types and functions to execute for them. - /// - /// - }, - 'dequeue': function() { - /// - /// Execute the next function on the queue for the matched elements. - /// A string containing the name of the queue. Defaults to fx, the standard effects queue. - /// - /// - }, - 'descendant': function() { - /// - /// Selects all elements that are descendants of a given ancestor. - /// Any valid selector. - /// A selector to filter the descendant elements. - /// - }, - 'detach': function() { - /// - /// Remove the set of matched elements from the DOM. - /// A selector expression that filters the set of matched elements to be removed. - /// - /// - }, - 'die': function() { - /// - /// Remove event handlers previously attached using .live() from the elements. - /// A string containing a JavaScript event type, such as click or keydown. - /// The function that is no longer to be executed. - /// - /// - /// - /// Remove event handlers previously attached using .live() from the elements. - /// A plain object of one or more event types, such as click or keydown and their corresponding functions that are no longer to be executed. - /// - /// - }, - 'disabled': function() { - /// Selects all elements that are disabled. - }, - 'each': function() { - /// - /// Iterate over a jQuery object, executing a function for each matched element. - /// A function to execute for each matched element. - /// - /// - }, - 'element': function() { - /// - /// Selects all elements with the given tag name. - /// An element to search for. Refers to the tagName of DOM nodes. - /// - }, - 'empty': function() { - /// Select all elements that have no children (including text nodes). - }, - 'enabled': function() { - /// Selects all elements that are enabled. - }, - 'end': function() { - /// End the most recent filtering operation in the current chain and return the set of matched elements to its previous state. - /// - }, - 'eq': function() { - /// - /// Select the element at index n within the matched set. - /// Zero-based index of the element to match. - /// - /// - /// Select the element at index n within the matched set. - /// Zero-based index of the element to match, counting backwards from the last element. - /// - }, - 'error': function() { - /// - /// Bind an event handler to the "error" JavaScript event. - /// A function to execute when the event is triggered. - /// - /// - /// - /// Bind an event handler to the "error" JavaScript event. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'even': function() { - /// Selects even elements, zero-indexed. See also odd. - }, - 'fadeIn': function() { - /// - /// Display the matched elements by fading them to opaque. - /// A string or number determining how long the animation will run. - /// A function to call once the animation is complete. - /// - /// - /// - /// Display the matched elements by fading them to opaque. - /// A map of additional options to pass to the method. - /// - /// - /// - /// Display the matched elements by fading them to opaque. - /// A string or number determining how long the animation will run. - /// A string indicating which easing function to use for the transition. - /// A function to call once the animation is complete. - /// - /// - }, - 'fadeOut': function() { - /// - /// Hide the matched elements by fading them to transparent. - /// A string or number determining how long the animation will run. - /// A function to call once the animation is complete. - /// - /// - /// - /// Hide the matched elements by fading them to transparent. - /// A map of additional options to pass to the method. - /// - /// - /// - /// Hide the matched elements by fading them to transparent. - /// A string or number determining how long the animation will run. - /// A string indicating which easing function to use for the transition. - /// A function to call once the animation is complete. - /// - /// - }, - 'fadeTo': function() { - /// - /// Adjust the opacity of the matched elements. - /// A string or number determining how long the animation will run. - /// A number between 0 and 1 denoting the target opacity. - /// A function to call once the animation is complete. - /// - /// - /// - /// Adjust the opacity of the matched elements. - /// A string or number determining how long the animation will run. - /// A number between 0 and 1 denoting the target opacity. - /// A string indicating which easing function to use for the transition. - /// A function to call once the animation is complete. - /// - /// - }, - 'fadeToggle': function() { - /// - /// Display or hide the matched elements by animating their opacity. - /// A string or number determining how long the animation will run. - /// A string indicating which easing function to use for the transition. - /// A function to call once the animation is complete. - /// - /// - /// - /// Display or hide the matched elements by animating their opacity. - /// A map of additional options to pass to the method. - /// - /// - }, - 'file': function() { - /// Selects all elements of type file. - }, - 'filter': function() { - /// - /// Reduce the set of matched elements to those that match the selector or pass the function's test. - /// A string containing a selector expression to match the current set of elements against. - /// - /// - /// - /// Reduce the set of matched elements to those that match the selector or pass the function's test. - /// A function used as a test for each element in the set. this is the current DOM element. - /// - /// - /// - /// Reduce the set of matched elements to those that match the selector or pass the function's test. - /// An element to match the current set of elements against. - /// - /// - /// - /// Reduce the set of matched elements to those that match the selector or pass the function's test. - /// An existing jQuery object to match the current set of elements against. - /// - /// - }, - 'find': function() { - /// - /// Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element. - /// A string containing a selector expression to match elements against. - /// - /// - /// - /// Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element. - /// A jQuery object to match elements against. - /// - /// - /// - /// Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element. - /// An element to match elements against. - /// - /// - }, - 'finish': function() { - /// - /// Stop the currently-running animation, remove all queued animations, and complete all animations for the matched elements. - /// The name of the queue in which to stop animations. - /// - /// - }, - 'first': function() { - /// Selects the first matched element. - }, - 'first-child': function() { - /// Selects all elements that are the first child of their parent. - }, - 'first-of-type': function() { - /// Selects all elements that are the first among siblings of the same element name. - }, - 'focus': function() { - /// - /// Bind an event handler to the "focus" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "focus" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'focusin': function() { - /// - /// Bind an event handler to the "focusin" event. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "focusin" event. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'focusout': function() { - /// - /// Bind an event handler to the "focusout" JavaScript event. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "focusout" JavaScript event. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'get': function() { - /// - /// Retrieve the DOM elements matched by the jQuery object. - /// A zero-based integer indicating which element to retrieve. - /// - /// - }, - 'gt': function() { - /// - /// Select all elements at an index greater than index within the matched set. - /// Zero-based index. - /// - }, - 'has': function() { - /// - /// Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element. - /// A string containing a selector expression to match elements against. - /// - /// - /// - /// Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element. - /// A DOM element to match elements against. - /// - /// - }, - 'hasClass': function() { - /// - /// Determine whether any of the matched elements are assigned the given class. - /// The class name to search for. - /// - /// - }, - 'header': function() { - /// Selects all elements that are headers, like h1, h2, h3 and so on. - }, - 'height': function() { - /// - /// Set the CSS height of every matched element. - /// An integer representing the number of pixels, or an integer with an optional unit of measure appended (as a string). - /// - /// - /// - /// Set the CSS height of every matched element. - /// A function returning the height to set. Receives the index position of the element in the set and the old height as arguments. Within the function, this refers to the current element in the set. - /// - /// - }, - 'hidden': function() { - /// Selects all elements that are hidden. - }, - 'hide': function() { - /// - /// Hide the matched elements. - /// A string or number determining how long the animation will run. - /// A function to call once the animation is complete. - /// - /// - /// - /// Hide the matched elements. - /// A map of additional options to pass to the method. - /// - /// - /// - /// Hide the matched elements. - /// A string or number determining how long the animation will run. - /// A string indicating which easing function to use for the transition. - /// A function to call once the animation is complete. - /// - /// - }, - 'hover': function() { - /// - /// Bind two handlers to the matched elements, to be executed when the mouse pointer enters and leaves the elements. - /// A function to execute when the mouse pointer enters the element. - /// A function to execute when the mouse pointer leaves the element. - /// - /// - }, - 'html': function() { - /// - /// Set the HTML contents of each element in the set of matched elements. - /// A string of HTML to set as the content of each matched element. - /// - /// - /// - /// Set the HTML contents of each element in the set of matched elements. - /// A function returning the HTML content to set. Receives the index position of the element in the set and the old HTML value as arguments. jQuery empties the element before calling the function; use the oldhtml argument to reference the previous content. Within the function, this refers to the current element in the set. - /// - /// - }, - 'id': function() { - /// - /// Selects a single element with the given id attribute. - /// An ID to search for, specified via the id attribute of an element. - /// - }, - 'image': function() { - /// Selects all elements of type image. - }, - 'index': function() { - /// - /// Search for a given element from among the matched elements. - /// A selector representing a jQuery collection in which to look for an element. - /// - /// - /// - /// Search for a given element from among the matched elements. - /// The DOM element or first element within the jQuery object to look for. - /// - /// - }, - 'init': function() { - /// - /// Accepts a string containing a CSS selector which is then used to match a set of elements. - /// A string containing a selector expression - /// A DOM Element, Document, or jQuery to use as context - /// - /// - /// - /// Accepts a string containing a CSS selector which is then used to match a set of elements. - /// A DOM element to wrap in a jQuery object. - /// - /// - /// - /// Accepts a string containing a CSS selector which is then used to match a set of elements. - /// An array containing a set of DOM elements to wrap in a jQuery object. - /// - /// - /// - /// Accepts a string containing a CSS selector which is then used to match a set of elements. - /// A plain object to wrap in a jQuery object. - /// - /// - /// - /// Accepts a string containing a CSS selector which is then used to match a set of elements. - /// An existing jQuery object to clone. - /// - /// - }, - 'innerHeight': function() { - /// Get the current computed height for the first element in the set of matched elements, including padding but not border. - /// - }, - 'innerWidth': function() { - /// Get the current computed width for the first element in the set of matched elements, including padding but not border. - /// - }, - 'input': function() { - /// Selects all input, textarea, select and button elements. - }, - 'insertAfter': function() { - /// - /// Insert every element in the set of matched elements after the target. - /// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted after the element(s) specified by this parameter. - /// - /// - }, - 'insertBefore': function() { - /// - /// Insert every element in the set of matched elements before the target. - /// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted before the element(s) specified by this parameter. - /// - /// - }, - 'is': function() { - /// - /// Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments. - /// A string containing a selector expression to match elements against. - /// - /// - /// - /// Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments. - /// A function used as a test for the set of elements. It accepts one argument, index, which is the element's index in the jQuery collection.Within the function, this refers to the current DOM element. - /// - /// - /// - /// Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments. - /// An existing jQuery object to match the current set of elements against. - /// - /// - /// - /// Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments. - /// An element to match the current set of elements against. - /// - /// - }, - 'jquery': function() { - /// A string containing the jQuery version number. - /// - }, - 'keydown': function() { - /// - /// Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'keypress': function() { - /// - /// Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'keyup': function() { - /// - /// Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'lang': function() { - /// - /// Selects all elements of the specified language. - /// A language code. - /// - }, - 'last': function() { - /// Selects the last matched element. - }, - 'last-child': function() { - /// Selects all elements that are the last child of their parent. - }, - 'last-of-type': function() { - /// Selects all elements that are the last among siblings of the same element name. - }, - 'length': function() { - /// The number of elements in the jQuery object. - /// - }, - 'live': function() { - /// - /// Attach an event handler for all elements which match the current selector, now and in the future. - /// A string containing a JavaScript event type, such as "click" or "keydown." As of jQuery 1.4 the string can contain multiple, space-separated event types or custom event names. - /// A function to execute at the time the event is triggered. - /// - /// - /// - /// Attach an event handler for all elements which match the current selector, now and in the future. - /// A string containing a JavaScript event type, such as "click" or "keydown." As of jQuery 1.4 the string can contain multiple, space-separated event types or custom event names. - /// An object containing data that will be passed to the event handler. - /// A function to execute at the time the event is triggered. - /// - /// - /// - /// Attach an event handler for all elements which match the current selector, now and in the future. - /// A plain object of one or more JavaScript event types and functions to execute for them. - /// - /// - }, - 'load': function() { - /// - /// Bind an event handler to the "load" JavaScript event. - /// A function to execute when the event is triggered. - /// - /// - /// - /// Bind an event handler to the "load" JavaScript event. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'lt': function() { - /// - /// Select all elements at an index less than index within the matched set. - /// Zero-based index. - /// - }, - 'map': function() { - /// - /// Pass each element in the current matched set through a function, producing a new jQuery object containing the return values. - /// A function object that will be invoked for each element in the current set. - /// - /// - }, - 'mousedown': function() { - /// - /// Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'mouseenter': function() { - /// - /// Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'mouseleave': function() { - /// - /// Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'mousemove': function() { - /// - /// Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'mouseout': function() { - /// - /// Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'mouseover': function() { - /// - /// Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'mouseup': function() { - /// - /// Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'multiple': function() { - /// - /// Selects the combined results of all the specified selectors. - /// Any valid selector. - /// Another valid selector. - /// As many more valid selectors as you like. - /// - }, - 'next': function() { - /// - /// Get the immediately following sibling of each element in the set of matched elements. If a selector is provided, it retrieves the next sibling only if it matches that selector. - /// A string containing a selector expression to match elements against. - /// - /// - }, - 'next adjacent': function() { - /// - /// Selects all next elements matching "next" that are immediately preceded by a sibling "prev". - /// Any valid selector. - /// A selector to match the element that is next to the first selector. - /// - }, - 'next siblings': function() { - /// - /// Selects all sibling elements that follow after the "prev" element, have the same parent, and match the filtering "siblings" selector. - /// Any valid selector. - /// A selector to filter elements that are the following siblings of the first selector. - /// - }, - 'nextAll': function() { - /// - /// Get all following siblings of each element in the set of matched elements, optionally filtered by a selector. - /// A string containing a selector expression to match elements against. - /// - /// - }, - 'nextUntil': function() { - /// - /// Get all following siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object passed. - /// A string containing a selector expression to indicate where to stop matching following sibling elements. - /// A string containing a selector expression to match elements against. - /// - /// - /// - /// Get all following siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object passed. - /// A DOM node or jQuery object indicating where to stop matching following sibling elements. - /// A string containing a selector expression to match elements against. - /// - /// - }, - 'not': function() { - /// - /// Remove elements from the set of matched elements. - /// A string containing a selector expression to match elements against. - /// - /// - /// - /// Remove elements from the set of matched elements. - /// One or more DOM elements to remove from the matched set. - /// - /// - /// - /// Remove elements from the set of matched elements. - /// A function used as a test for each element in the set. this is the current DOM element. - /// - /// - /// - /// Remove elements from the set of matched elements. - /// An existing jQuery object to match the current set of elements against. - /// - /// - }, - 'nth-child': function() { - /// - /// Selects all elements that are the nth-child of their parent. - /// The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-child(even), :nth-child(4n) ) - /// - }, - 'nth-last-child': function() { - /// - /// Selects all elements that are the nth-child of their parent, counting from the last element to the first. - /// The index of each child to match, starting with the last one (1), the string even or odd, or an equation ( eg. :nth-last-child(even), :nth-last-child(4n) ) - /// - }, - 'nth-last-of-type': function() { - /// - /// Selects all elements that are the nth-child of their parent, counting from the last element to the first. - /// The index of each child to match, starting with the last one (1), the string even or odd, or an equation ( eg. :nth-last-of-type(even), :nth-last-of-type(4n) ) - /// - }, - 'nth-of-type': function() { - /// - /// Selects all elements that are the nth child of their parent in relation to siblings with the same element name. - /// The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-of-type(even), :nth-of-type(4n) ) - /// - }, - 'odd': function() { - /// Selects odd elements, zero-indexed. See also even. - }, - 'off': function() { - /// - /// Remove an event handler. - /// One or more space-separated event types and optional namespaces, or just namespaces, such as "click", "keydown.myPlugin", or ".myPlugin". - /// A selector which should match the one originally passed to .on() when attaching event handlers. - /// A handler function previously attached for the event(s), or the special value false. - /// - /// - /// - /// Remove an event handler. - /// An object where the string keys represent one or more space-separated event types and optional namespaces, and the values represent handler functions previously attached for the event(s). - /// A selector which should match the one originally passed to .on() when attaching event handlers. - /// - /// - }, - 'offset': function() { - /// - /// Set the current coordinates of every element in the set of matched elements, relative to the document. - /// An object containing the properties top and left, which are integers indicating the new top and left coordinates for the elements. - /// - /// - /// - /// Set the current coordinates of every element in the set of matched elements, relative to the document. - /// A function to return the coordinates to set. Receives the index of the element in the collection as the first argument and the current coordinates as the second argument. The function should return an object with the new top and left properties. - /// - /// - }, - 'offsetParent': function() { - /// Get the closest ancestor element that is positioned. - /// - }, - 'on': function() { - /// - /// Attach an event handler function for one or more events to the selected elements. - /// One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". - /// A selector string to filter the descendants of the selected elements that trigger the event. If the selector is null or omitted, the event is always triggered when it reaches the selected element. - /// Data to be passed to the handler in event.data when an event is triggered. - /// A function to execute when the event is triggered. The value false is also allowed as a shorthand for a function that simply does return false. - /// - /// - /// - /// Attach an event handler function for one or more events to the selected elements. - /// An object in which the string keys represent one or more space-separated event types and optional namespaces, and the values represent a handler function to be called for the event(s). - /// A selector string to filter the descendants of the selected elements that will call the handler. If the selector is null or omitted, the handler is always called when it reaches the selected element. - /// Data to be passed to the handler in event.data when an event occurs. - /// - /// - }, - 'one': function() { - /// - /// Attach a handler to an event for the elements. The handler is executed at most once per element. - /// A string containing one or more JavaScript event types, such as "click" or "submit," or custom event names. - /// An object containing data that will be passed to the event handler. - /// A function to execute at the time the event is triggered. - /// - /// - /// - /// Attach a handler to an event for the elements. The handler is executed at most once per element. - /// One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". - /// A selector string to filter the descendants of the selected elements that trigger the event. If the selector is null or omitted, the event is always triggered when it reaches the selected element. - /// Data to be passed to the handler in event.data when an event is triggered. - /// A function to execute when the event is triggered. The value false is also allowed as a shorthand for a function that simply does return false. - /// - /// - /// - /// Attach a handler to an event for the elements. The handler is executed at most once per element. - /// An object in which the string keys represent one or more space-separated event types and optional namespaces, and the values represent a handler function to be called for the event(s). - /// A selector string to filter the descendants of the selected elements that will call the handler. If the selector is null or omitted, the handler is always called when it reaches the selected element. - /// Data to be passed to the handler in event.data when an event occurs. - /// - /// - }, - 'only-child': function() { - /// Selects all elements that are the only child of their parent. - }, - 'only-of-type': function() { - /// Selects all elements that have no siblings with the same element name. - }, - 'outerHeight': function() { - /// - /// Get the current computed height for the first element in the set of matched elements, including padding, border, and optionally margin. Returns an integer (without "px") representation of the value or null if called on an empty set of elements. - /// A Boolean indicating whether to include the element's margin in the calculation. - /// - /// - }, - 'outerWidth': function() { - /// - /// Get the current computed width for the first element in the set of matched elements, including padding and border. - /// A Boolean indicating whether to include the element's margin in the calculation. - /// - /// - }, - 'parent': function() { - /// - /// Get the parent of each element in the current set of matched elements, optionally filtered by a selector. - /// A string containing a selector expression to match elements against. - /// - /// - }, - 'parents': function() { - /// - /// Get the ancestors of each element in the current set of matched elements, optionally filtered by a selector. - /// A string containing a selector expression to match elements against. - /// - /// - }, - 'parentsUntil': function() { - /// - /// Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector, DOM node, or jQuery object. - /// A string containing a selector expression to indicate where to stop matching ancestor elements. - /// A string containing a selector expression to match elements against. - /// - /// - /// - /// Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector, DOM node, or jQuery object. - /// A DOM node or jQuery object indicating where to stop matching ancestor elements. - /// A string containing a selector expression to match elements against. - /// - /// - }, - 'password': function() { - /// Selects all elements of type password. - }, - 'position': function() { - /// Get the current coordinates of the first element in the set of matched elements, relative to the offset parent. - /// - }, - 'prepend': function() { - /// - /// Insert content, specified by the parameter, to the beginning of each element in the set of matched elements. - /// DOM element, array of elements, HTML string, or jQuery object to insert at the beginning of each element in the set of matched elements. - /// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the beginning of each element in the set of matched elements. - /// - /// - /// - /// Insert content, specified by the parameter, to the beginning of each element in the set of matched elements. - /// A function that returns an HTML string, DOM element(s), or jQuery object to insert at the beginning of each element in the set of matched elements. Receives the index position of the element in the set and the old HTML value of the element as arguments. Within the function, this refers to the current element in the set. - /// - /// - }, - 'prependTo': function() { - /// - /// Insert every element in the set of matched elements to the beginning of the target. - /// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the beginning of the element(s) specified by this parameter. - /// - /// - }, - 'prev': function() { - /// - /// Get the immediately preceding sibling of each element in the set of matched elements, optionally filtered by a selector. - /// A string containing a selector expression to match elements against. - /// - /// - }, - 'prevAll': function() { - /// - /// Get all preceding siblings of each element in the set of matched elements, optionally filtered by a selector. - /// A string containing a selector expression to match elements against. - /// - /// - }, - 'prevUntil': function() { - /// - /// Get all preceding siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object. - /// A string containing a selector expression to indicate where to stop matching preceding sibling elements. - /// A string containing a selector expression to match elements against. - /// - /// - /// - /// Get all preceding siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object. - /// A DOM node or jQuery object indicating where to stop matching preceding sibling elements. - /// A string containing a selector expression to match elements against. - /// - /// - }, - 'promise': function() { - /// - /// Return a Promise object to observe when all actions of a certain type bound to the collection, queued or not, have finished. - /// The type of queue that needs to be observed. - /// Object onto which the promise methods have to be attached - /// - /// - }, - 'prop': function() { - /// - /// Set one or more properties for the set of matched elements. - /// The name of the property to set. - /// A value to set for the property. - /// - /// - /// - /// Set one or more properties for the set of matched elements. - /// An object of property-value pairs to set. - /// - /// - /// - /// Set one or more properties for the set of matched elements. - /// The name of the property to set. - /// A function returning the value to set. Receives the index position of the element in the set and the old property value as arguments. Within the function, the keyword this refers to the current element. - /// - /// - }, - 'pushStack': function() { - /// - /// Add a collection of DOM elements onto the jQuery stack. - /// An array of elements to push onto the stack and make into a new jQuery object. - /// - /// - /// - /// Add a collection of DOM elements onto the jQuery stack. - /// An array of elements to push onto the stack and make into a new jQuery object. - /// The name of a jQuery method that generated the array of elements. - /// The arguments that were passed in to the jQuery method (for serialization). - /// - /// - }, - 'queue': function() { - /// - /// Manipulate the queue of functions to be executed, once for each matched element. - /// A string containing the name of the queue. Defaults to fx, the standard effects queue. - /// An array of functions to replace the current queue contents. - /// - /// - /// - /// Manipulate the queue of functions to be executed, once for each matched element. - /// A string containing the name of the queue. Defaults to fx, the standard effects queue. - /// The new function to add to the queue, with a function to call that will dequeue the next item. - /// - /// - }, - 'radio': function() { - /// Selects all elements of type radio. - }, - 'ready': function() { - /// - /// Specify a function to execute when the DOM is fully loaded. - /// A function to execute after the DOM is ready. - /// - /// - }, - 'remove': function() { - /// - /// Remove the set of matched elements from the DOM. - /// A selector expression that filters the set of matched elements to be removed. - /// - /// - }, - 'removeAttr': function() { - /// - /// Remove an attribute from each element in the set of matched elements. - /// An attribute to remove; as of version 1.7, it can be a space-separated list of attributes. - /// - /// - }, - 'removeClass': function() { - /// - /// Remove a single class, multiple classes, or all classes from each element in the set of matched elements. - /// One or more space-separated classes to be removed from the class attribute of each matched element. - /// - /// - /// - /// Remove a single class, multiple classes, or all classes from each element in the set of matched elements. - /// A function returning one or more space-separated class names to be removed. Receives the index position of the element in the set and the old class value as arguments. - /// - /// - }, - 'removeData': function() { - /// - /// Remove a previously-stored piece of data. - /// A string naming the piece of data to delete. - /// - /// - /// - /// Remove a previously-stored piece of data. - /// An array or space-separated string naming the pieces of data to delete. - /// - /// - }, - 'removeProp': function() { - /// - /// Remove a property for the set of matched elements. - /// The name of the property to remove. - /// - /// - }, - 'replaceAll': function() { - /// - /// Replace each target element with the set of matched elements. - /// A selector expression indicating which element(s) to replace. - /// - /// - }, - 'replaceWith': function() { - /// - /// Replace each element in the set of matched elements with the provided new content and return the set of elements that was removed. - /// The content to insert. May be an HTML string, DOM element, or jQuery object. - /// - /// - /// - /// Replace each element in the set of matched elements with the provided new content and return the set of elements that was removed. - /// A function that returns content with which to replace the set of matched elements. - /// - /// - }, - 'reset': function() { - /// Selects all elements of type reset. - }, - 'resize': function() { - /// - /// Bind an event handler to the "resize" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "resize" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'root': function() { - /// - /// Selects the element that is the root of the document. - /// The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-last-child(even), :nth-last-child(4n) ) - /// - }, - 'scroll': function() { - /// - /// Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'scrollLeft': function() { - /// - /// Set the current horizontal position of the scroll bar for each of the set of matched elements. - /// An integer indicating the new position to set the scroll bar to. - /// - /// - }, - 'scrollTop': function() { - /// - /// Set the current vertical position of the scroll bar for each of the set of matched elements. - /// An integer indicating the new position to set the scroll bar to. - /// - /// - }, - 'select': function() { - /// - /// Bind an event handler to the "select" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "select" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'selected': function() { - /// Selects all elements that are selected. - }, - 'selector': function() { - /// A selector representing selector originally passed to jQuery(). - /// - }, - 'serialize': function() { - /// Encode a set of form elements as a string for submission. - /// - }, - 'serializeArray': function() { - /// Encode a set of form elements as an array of names and values. - /// - }, - 'show': function() { - /// - /// Display the matched elements. - /// A string or number determining how long the animation will run. - /// A function to call once the animation is complete. - /// - /// - /// - /// Display the matched elements. - /// A map of additional options to pass to the method. - /// - /// - /// - /// Display the matched elements. - /// A string or number determining how long the animation will run. - /// A string indicating which easing function to use for the transition. - /// A function to call once the animation is complete. - /// - /// - }, - 'siblings': function() { - /// - /// Get the siblings of each element in the set of matched elements, optionally filtered by a selector. - /// A string containing a selector expression to match elements against. - /// - /// - }, - 'size': function() { - /// Return the number of elements in the jQuery object. - /// - }, - 'slice': function() { - /// - /// Reduce the set of matched elements to a subset specified by a range of indices. - /// An integer indicating the 0-based position at which the elements begin to be selected. If negative, it indicates an offset from the end of the set. - /// An integer indicating the 0-based position at which the elements stop being selected. If negative, it indicates an offset from the end of the set. If omitted, the range continues until the end of the set. - /// - /// - }, - 'slideDown': function() { - /// - /// Display the matched elements with a sliding motion. - /// A string or number determining how long the animation will run. - /// A function to call once the animation is complete. - /// - /// - /// - /// Display the matched elements with a sliding motion. - /// A map of additional options to pass to the method. - /// - /// - /// - /// Display the matched elements with a sliding motion. - /// A string or number determining how long the animation will run. - /// A string indicating which easing function to use for the transition. - /// A function to call once the animation is complete. - /// - /// - }, - 'slideToggle': function() { - /// - /// Display or hide the matched elements with a sliding motion. - /// A string or number determining how long the animation will run. - /// A function to call once the animation is complete. - /// - /// - /// - /// Display or hide the matched elements with a sliding motion. - /// A map of additional options to pass to the method. - /// - /// - /// - /// Display or hide the matched elements with a sliding motion. - /// A string or number determining how long the animation will run. - /// A string indicating which easing function to use for the transition. - /// A function to call once the animation is complete. - /// - /// - }, - 'slideUp': function() { - /// - /// Hide the matched elements with a sliding motion. - /// A string or number determining how long the animation will run. - /// A function to call once the animation is complete. - /// - /// - /// - /// Hide the matched elements with a sliding motion. - /// A map of additional options to pass to the method. - /// - /// - /// - /// Hide the matched elements with a sliding motion. - /// A string or number determining how long the animation will run. - /// A string indicating which easing function to use for the transition. - /// A function to call once the animation is complete. - /// - /// - }, - 'stop': function() { - /// - /// Stop the currently-running animation on the matched elements. - /// A Boolean indicating whether to remove queued animation as well. Defaults to false. - /// A Boolean indicating whether to complete the current animation immediately. Defaults to false. - /// - /// - /// - /// Stop the currently-running animation on the matched elements. - /// The name of the queue in which to stop animations. - /// A Boolean indicating whether to remove queued animation as well. Defaults to false. - /// A Boolean indicating whether to complete the current animation immediately. Defaults to false. - /// - /// - }, - 'submit': function() { - /// - /// Bind an event handler to the "submit" JavaScript event, or trigger that event on an element. - /// A function to execute each time the event is triggered. - /// - /// - /// - /// Bind an event handler to the "submit" JavaScript event, or trigger that event on an element. - /// An object containing data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'target': function() { - /// Selects the target element indicated by the fragment identifier of the document's URI. - }, - 'text': function() { - /// - /// Set the content of each element in the set of matched elements to the specified text. - /// A string of text to set as the content of each matched element. - /// - /// - /// - /// Set the content of each element in the set of matched elements to the specified text. - /// A function returning the text content to set. Receives the index position of the element in the set and the old text value as arguments. - /// - /// - }, - 'toArray': function() { - /// Retrieve all the DOM elements contained in the jQuery set, as an array. - /// - }, - 'toggle': function() { - /// - /// Display or hide the matched elements. - /// A string or number determining how long the animation will run. - /// A function to call once the animation is complete. - /// - /// - /// - /// Display or hide the matched elements. - /// A map of additional options to pass to the method. - /// - /// - /// - /// Display or hide the matched elements. - /// A string or number determining how long the animation will run. - /// A string indicating which easing function to use for the transition. - /// A function to call once the animation is complete. - /// - /// - /// - /// Display or hide the matched elements. - /// A Boolean indicating whether to show or hide the elements. - /// - /// - }, - 'toggleClass': function() { - /// - /// Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument. - /// One or more class names (separated by spaces) to be toggled for each element in the matched set. - /// - /// - /// - /// Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument. - /// One or more class names (separated by spaces) to be toggled for each element in the matched set. - /// A Boolean (not just truthy/falsy) value to determine whether the class should be added or removed. - /// - /// - /// - /// Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument. - /// A boolean value to determine whether the class should be added or removed. - /// - /// - /// - /// Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument. - /// A function that returns class names to be toggled in the class attribute of each element in the matched set. Receives the index position of the element in the set, the old class value, and the switch as arguments. - /// A boolean value to determine whether the class should be added or removed. - /// - /// - }, - 'trigger': function() { - /// - /// Execute all handlers and behaviors attached to the matched elements for the given event type. - /// A string containing a JavaScript event type, such as click or submit. - /// Additional parameters to pass along to the event handler. - /// - /// - /// - /// Execute all handlers and behaviors attached to the matched elements for the given event type. - /// A jQuery.Event object. - /// - /// - }, - 'triggerHandler': function() { - /// - /// Execute all handlers attached to an element for an event. - /// A string containing a JavaScript event type, such as click or submit. - /// An array of additional parameters to pass along to the event handler. - /// - /// - }, - 'unbind': function() { - /// - /// Remove a previously-attached event handler from the elements. - /// A string containing a JavaScript event type, such as click or submit. - /// The function that is to be no longer executed. - /// - /// - /// - /// Remove a previously-attached event handler from the elements. - /// A string containing a JavaScript event type, such as click or submit. - /// Unbinds the corresponding 'return false' function that was bound using .bind( eventType, false ). - /// - /// - /// - /// Remove a previously-attached event handler from the elements. - /// A JavaScript event object as passed to an event handler. - /// - /// - }, - 'undelegate': function() { - /// - /// Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements. - /// A selector which will be used to filter the event results. - /// A string containing a JavaScript event type, such as "click" or "keydown" - /// - /// - /// - /// Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements. - /// A selector which will be used to filter the event results. - /// A string containing a JavaScript event type, such as "click" or "keydown" - /// A function to execute at the time the event is triggered. - /// - /// - /// - /// Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements. - /// A selector which will be used to filter the event results. - /// An object of one or more event types and previously bound functions to unbind from them. - /// - /// - /// - /// Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements. - /// A string containing a namespace to unbind all events from. - /// - /// - }, - 'unload': function() { - /// - /// Bind an event handler to the "unload" JavaScript event. - /// A function to execute when the event is triggered. - /// - /// - /// - /// Bind an event handler to the "unload" JavaScript event. - /// A plain object of data that will be passed to the event handler. - /// A function to execute each time the event is triggered. - /// - /// - }, - 'unwrap': function() { - /// Remove the parents of the set of matched elements from the DOM, leaving the matched elements in their place. - /// - }, - 'val': function() { - /// - /// Set the value of each element in the set of matched elements. - /// A string of text or an array of strings corresponding to the value of each matched element to set as selected/checked. - /// - /// - /// - /// Set the value of each element in the set of matched elements. - /// A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old value as arguments. - /// - /// - }, - 'visible': function() { - /// Selects all elements that are visible. - }, - 'width': function() { - /// - /// Set the CSS width of each element in the set of matched elements. - /// An integer representing the number of pixels, or an integer along with an optional unit of measure appended (as a string). - /// - /// - /// - /// Set the CSS width of each element in the set of matched elements. - /// A function returning the width to set. Receives the index position of the element in the set and the old width as arguments. Within the function, this refers to the current element in the set. - /// - /// - }, - 'wrap': function() { - /// - /// Wrap an HTML structure around each element in the set of matched elements. - /// An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the matched elements. - /// - /// - /// - /// Wrap an HTML structure around each element in the set of matched elements. - /// A callback function returning the HTML content or jQuery object to wrap around the matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set. - /// - /// - }, - 'wrapAll': function() { - /// - /// Wrap an HTML structure around all elements in the set of matched elements. - /// An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the matched elements. - /// - /// - }, - 'wrapInner': function() { - /// - /// Wrap an HTML structure around the content of each element in the set of matched elements. - /// An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the content of the matched elements. - /// - /// - /// - /// Wrap an HTML structure around the content of each element in the set of matched elements. - /// A callback function which generates a structure to wrap around the content of the matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set. - /// - /// - }, -}); - -intellisense.annotate(window, { - '$': function() { - /// - /// Accepts a string containing a CSS selector which is then used to match a set of elements. - /// A string containing a selector expression - /// A DOM Element, Document, or jQuery to use as context - /// - /// - /// - /// Accepts a string containing a CSS selector which is then used to match a set of elements. - /// A DOM element to wrap in a jQuery object. - /// - /// - /// - /// Accepts a string containing a CSS selector which is then used to match a set of elements. - /// An array containing a set of DOM elements to wrap in a jQuery object. - /// - /// - /// - /// Accepts a string containing a CSS selector which is then used to match a set of elements. - /// A plain object to wrap in a jQuery object. - /// - /// - /// - /// Accepts a string containing a CSS selector which is then used to match a set of elements. - /// An existing jQuery object to clone. - /// - /// - }, -}); - diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/jquery-1.9.1.js b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/jquery-1.9.1.js deleted file mode 100644 index 601045b..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs-Annotation-SharePointApp/Scripts/jquery-1.9.1.js +++ /dev/null @@ -1,9616 +0,0 @@ -/* NUGET: BEGIN LICENSE TEXT -jQuery v1.9.1 -Microsoft grants you the right to use these script files for the sole purpose of either: (i) interacting through your browser with the Microsoft website, subject to the website's terms of use; or (ii) using the files as included with a Microsoft product subject to that product's license terms. Microsoft reserves all other rights to the files not expressly granted by Microsoft, whether by implication, estoppel or otherwise. The notices and licenses below are for informational purposes only. -*************************************************** -* jQuery JavaScript Library v1.9.1 -* http://jquery.com/ -* Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors -******************************** -* Includes Sizzle CSS Selector Engine -* http://sizzlejs.com/ -* Copyright 2012 jQuery Foundation and other contributors -******************************************************** -Provided for Informational Purposes Only -MIT License -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 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. -* NUGET: END LICENSE TEXT */ -/*! - * jQuery JavaScript Library v1.9.1 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2013-2-4 - */ -(function( window, undefined ) { - -// Can't do this because several apps including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -// Support: Firefox 18+ -//"use strict"; -var - // The deferred used on DOM ready - readyList, - - // A central reference to the root jQuery(document) - rootjQuery, - - // Support: IE<9 - // For `typeof node.method` instead of `node.method !== undefined` - core_strundefined = typeof undefined, - - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - location = window.location, - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$, - - // [[Class]] -> type pairs - class2type = {}, - - // List of deleted data cache ids, so we can reuse them - core_deletedIds = [], - - core_version = "1.9.1", - - // Save a reference to some core methods - core_concat = core_deletedIds.concat, - core_push = core_deletedIds.push, - core_slice = core_deletedIds.slice, - core_indexOf = core_deletedIds.indexOf, - core_toString = class2type.toString, - core_hasOwn = class2type.hasOwnProperty, - core_trim = core_version.trim, - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.fn.init( selector, context, rootjQuery ); - }, - - // Used for matching numbers - core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, - - // Used for splitting on whitespace - core_rnotwhite = /\S+/g, - - // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - // Match a standalone tag - rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, - - // JSON RegExp - rvalidchars = /^[\],:{}\s]*$/, - rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, - rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, - rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }, - - // The ready event handler - completed = function( event ) { - - // readyState === "complete" is good enough for us to call the dom ready in oldIE - if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { - detach(); - jQuery.ready(); - } - }, - // Clean-up method for dom ready events - detach = function() { - if ( document.addEventListener ) { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - - } else { - document.detachEvent( "onreadystatechange", completed ); - window.detachEvent( "onload", completed ); - } - }; - -jQuery.fn = jQuery.prototype = { - // The current version of jQuery being used - jquery: core_version, - - constructor: jQuery, - init: function( selector, context, rootjQuery ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // scripts is true for back-compat - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return rootjQuery.ready( selector ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - // The number of elements contained in the matched element set - size: function() { - return this.length; - }, - - toArray: function() { - return core_slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num == null ? - - // Return a 'clean' array - this.toArray() : - - // Return just the object - ( num < 0 ? this[ this.length + num ] : this[ num ] ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - ready: function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; - }, - - slice: function() { - return this.pushStack( core_slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: core_push, - sort: [].sort, - splice: [].splice -}; - -// Give the init function the jQuery prototype for later instantiation -jQuery.fn.init.prototype = jQuery.fn; - -jQuery.extend = jQuery.fn.extend = function() { - var src, copyIsArray, copy, name, options, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - noConflict: function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; - }, - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.trigger ) { - jQuery( document ).trigger("ready").off("ready"); - } - }, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type(obj) === "array"; - }, - - isWindow: function( obj ) { - return obj != null && obj == obj.window; - }, - - isNumeric: function( obj ) { - return !isNaN( parseFloat(obj) ) && isFinite( obj ); - }, - - type: function( obj ) { - if ( obj == null ) { - return String( obj ); - } - return typeof obj === "object" || typeof obj === "function" ? - class2type[ core_toString.call(obj) ] || "object" : - typeof obj; - }, - - isPlainObject: function( obj ) { - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - try { - // Not own constructor property must be Object - if ( obj.constructor && - !core_hasOwn.call(obj, "constructor") && - !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - } catch ( e ) { - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - - var key; - for ( key in obj ) {} - - return key === undefined || core_hasOwn.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - error: function( msg ) { - throw new Error( msg ); - }, - - // data: string of html - // context (optional): If specified, the fragment will be created in this context, defaults to document - // keepScripts (optional): If true, will include scripts passed in the html string - parseHTML: function( data, context, keepScripts ) { - if ( !data || typeof data !== "string" ) { - return null; - } - if ( typeof context === "boolean" ) { - keepScripts = context; - context = false; - } - context = context || document; - - var parsed = rsingleTag.exec( data ), - scripts = !keepScripts && []; - - // Single tag - if ( parsed ) { - return [ context.createElement( parsed[1] ) ]; - } - - parsed = jQuery.buildFragment( [ data ], context, scripts ); - if ( scripts ) { - jQuery( scripts ).remove(); - } - return jQuery.merge( [], parsed.childNodes ); - }, - - parseJSON: function( data ) { - // Attempt to parse using the native JSON parser first - if ( window.JSON && window.JSON.parse ) { - return window.JSON.parse( data ); - } - - if ( data === null ) { - return data; - } - - if ( typeof data === "string" ) { - - // Make sure leading/trailing whitespace is removed (IE can't handle it) - data = jQuery.trim( data ); - - if ( data ) { - // Make sure the incoming data is actual JSON - // Logic borrowed from http://json.org/json2.js - if ( rvalidchars.test( data.replace( rvalidescape, "@" ) - .replace( rvalidtokens, "]" ) - .replace( rvalidbraces, "")) ) { - - return ( new Function( "return " + data ) )(); - } - } - } - - jQuery.error( "Invalid JSON: " + data ); - }, - - // Cross-browser xml parsing - parseXML: function( data ) { - var xml, tmp; - if ( !data || typeof data !== "string" ) { - return null; - } - try { - if ( window.DOMParser ) { // Standard - tmp = new DOMParser(); - xml = tmp.parseFromString( data , "text/xml" ); - } else { // IE - xml = new ActiveXObject( "Microsoft.XMLDOM" ); - xml.async = "false"; - xml.loadXML( data ); - } - } catch( e ) { - xml = undefined; - } - if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; - }, - - noop: function() {}, - - // Evaluates a script in a global context - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && jQuery.trim( data ) ) { - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); - } )( data ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - // Use native String.trim function wherever possible - trim: core_trim && !core_trim.call("\uFEFF\xA0") ? - function( text ) { - return text == null ? - "" : - core_trim.call( text ); - } : - - // Otherwise use our own trimming functionality - function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - core_push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - var len; - - if ( arr ) { - if ( core_indexOf ) { - return core_indexOf.call( arr, elem, i ); - } - - len = arr.length; - i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; - - for ( ; i < len; i++ ) { - // Skip accessing in sparse arrays - if ( i in arr && arr[ i ] === elem ) { - return i; - } - } - } - - return -1; - }, - - merge: function( first, second ) { - var l = second.length, - i = first.length, - j = 0; - - if ( typeof l === "number" ) { - for ( ; j < l; j++ ) { - first[ i++ ] = second[ j ]; - } - } else { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, inv ) { - var retVal, - ret = [], - i = 0, - length = elems.length; - inv = !!inv; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - retVal = !!callback( elems[ i ], i ); - if ( inv !== retVal ) { - ret.push( elems[ i ] ); - } - } - - return ret; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - } - - // Flatten any nested arrays - return core_concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var args, proxy, tmp; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = core_slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - // Multifunctional method to get and set values of a collection - // The value/s can optionally be executed if it's a function - access: function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - length = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < length; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - length ? fn( elems[0], key ) : emptyGet; - }, - - now: function() { - return ( new Date() ).getTime(); - } -}); - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // we once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - // Standards-based browsers support DOMContentLoaded - } else if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - - // If IE event model is used - } else { - // Ensure firing before onload, maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", completed ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", completed ); - - // If IE and not a frame - // continually check to see if the document is ready - var top = false; - - try { - top = window.frameElement == null && document.documentElement; - } catch(e) {} - - if ( top && top.doScroll ) { - (function doScrollCheck() { - if ( !jQuery.isReady ) { - - try { - // Use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - top.doScroll("left"); - } catch(e) { - return setTimeout( doScrollCheck, 50 ); - } - - // detach all dom ready events - detach(); - - // and execute any waiting functions - jQuery.ready(); - } - })(); - } - } - } - return readyList.promise( obj ); -}; - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - var length = obj.length, - type = jQuery.type( obj ); - - if ( jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || type !== "function" && - ( length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj ); -} - -// All jQuery objects should point back to these -rootjQuery = jQuery(document); -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // First callback to fire (used internally by add and fireWith) - firingStart, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( list && ( !fired || stack ) ) { - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var action = tuple[ 0 ], - fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = core_slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; - if( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); -jQuery.support = (function() { - - var support, all, a, - input, select, fragment, - opt, eventName, isSupported, i, - div = document.createElement("div"); - - // Setup - div.setAttribute( "className", "t" ); - div.innerHTML = "
a"; - - // Support tests won't run in some limited or non-browser environments - all = div.getElementsByTagName("*"); - a = div.getElementsByTagName("a")[ 0 ]; - if ( !all || !a || !all.length ) { - return {}; - } - - // First batch of tests - select = document.createElement("select"); - opt = select.appendChild( document.createElement("option") ); - input = div.getElementsByTagName("input")[ 0 ]; - - a.style.cssText = "top:1px;float:left;opacity:.5"; - support = { - // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) - getSetAttribute: div.className !== "t", - - // IE strips leading whitespace when .innerHTML is used - leadingWhitespace: div.firstChild.nodeType === 3, - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - tbody: !div.getElementsByTagName("tbody").length, - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - htmlSerialize: !!div.getElementsByTagName("link").length, - - // Get the style information from getAttribute - // (IE uses .cssText instead) - style: /top/.test( a.getAttribute("style") ), - - // Make sure that URLs aren't manipulated - // (IE normalizes it by default) - hrefNormalized: a.getAttribute("href") === "/a", - - // Make sure that element opacity exists - // (IE uses filter instead) - // Use a regex to work around a WebKit issue. See #5145 - opacity: /^0.5/.test( a.style.opacity ), - - // Verify style float existence - // (IE uses styleFloat instead of cssFloat) - cssFloat: !!a.style.cssFloat, - - // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) - checkOn: !!input.value, - - // Make sure that a selected-by-default option has a working selected property. - // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) - optSelected: opt.selected, - - // Tests for enctype support on a form (#6743) - enctype: !!document.createElement("form").enctype, - - // Makes sure cloning an html5 element does not cause problems - // Where outerHTML is undefined, this still works - html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", - - // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode - boxModel: document.compatMode === "CSS1Compat", - - // Will be defined later - deleteExpando: true, - noCloneEvent: true, - inlineBlockNeedsLayout: false, - shrinkWrapBlocks: false, - reliableMarginRight: true, - boxSizingReliable: true, - pixelPosition: false - }; - - // Make sure checked status is properly cloned - input.checked = true; - support.noCloneChecked = input.cloneNode( true ).checked; - - // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as disabled) - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Support: IE<9 - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - - // Check if we can trust getAttribute("value") - input = document.createElement("input"); - input.setAttribute( "value", "" ); - support.input = input.getAttribute( "value" ) === ""; - - // Check if an input maintains its value after becoming a radio - input.value = "t"; - input.setAttribute( "type", "radio" ); - support.radioValue = input.value === "t"; - - // #11217 - WebKit loses check when the name is after the checked attribute - input.setAttribute( "checked", "t" ); - input.setAttribute( "name", "t" ); - - fragment = document.createDocumentFragment(); - fragment.appendChild( input ); - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - support.appendChecked = input.checked; - - // WebKit doesn't clone checked state correctly in fragments - support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<9 - // Opera does not clone events (and typeof div.attachEvent === undefined). - // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() - if ( div.attachEvent ) { - div.attachEvent( "onclick", function() { - support.noCloneEvent = false; - }); - - div.cloneNode( true ).click(); - } - - // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event) - // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP), test/csp.php - for ( i in { submit: true, change: true, focusin: true }) { - div.setAttribute( eventName = "on" + i, "t" ); - - support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false; - } - - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - // Run tests that need a body at doc ready - jQuery(function() { - var container, marginDiv, tds, - divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", - body = document.getElementsByTagName("body")[0]; - - if ( !body ) { - // Return for frameset docs that don't have a body - return; - } - - container = document.createElement("div"); - container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; - - body.appendChild( container ).appendChild( div ); - - // Support: IE8 - // Check if table cells still have offsetWidth/Height when they are set - // to display:none and there are still other visible table cells in a - // table row; if so, offsetWidth/Height are not reliable for use when - // determining if an element has been hidden directly using - // display:none (it is still safe to use offsets if a parent element is - // hidden; don safety goggles and see bug #4512 for more information). - div.innerHTML = "
t
"; - tds = div.getElementsByTagName("td"); - tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; - isSupported = ( tds[ 0 ].offsetHeight === 0 ); - - tds[ 0 ].style.display = ""; - tds[ 1 ].style.display = "none"; - - // Support: IE8 - // Check if empty table cells still have offsetWidth/Height - support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); - - // Check box-sizing and margin behavior - div.innerHTML = ""; - div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; - support.boxSizing = ( div.offsetWidth === 4 ); - support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 ); - - // Use window.getComputedStyle because jsdom on node.js will break without it. - if ( window.getComputedStyle ) { - support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; - support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; - - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. (#3333) - // Fails in WebKit before Feb 2011 nightlies - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - marginDiv = div.appendChild( document.createElement("div") ); - marginDiv.style.cssText = div.style.cssText = divReset; - marginDiv.style.marginRight = marginDiv.style.width = "0"; - div.style.width = "1px"; - - support.reliableMarginRight = - !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); - } - - if ( typeof div.style.zoom !== core_strundefined ) { - // Support: IE<8 - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - div.innerHTML = ""; - div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; - support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); - - // Support: IE6 - // Check if elements with layout shrink-wrap their children - div.style.display = "block"; - div.innerHTML = "
"; - div.firstChild.style.width = "5px"; - support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); - - if ( support.inlineBlockNeedsLayout ) { - // Prevent IE 6 from affecting layout for positioned elements #11048 - // Prevent IE from shrinking the body in IE 7 mode #12869 - // Support: IE<8 - body.style.zoom = 1; - } - } - - body.removeChild( container ); - - // Null elements to avoid leaks in IE - container = div = tds = marginDiv = null; - }); - - // Null elements to avoid leaks in IE - all = select = fragment = opt = a = input = null; - - return support; -})(); - -var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, - rmultiDash = /([A-Z])/g; - -function internalData( elem, name, data, pvt /* Internal Use Only */ ){ - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var thisCache, ret, - internalKey = jQuery.expando, - getByName = typeof name === "string", - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) { - return; - } - - if ( !id ) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - elem[ internalKey ] = id = core_deletedIds.pop() || jQuery.guid++; - } else { - id = internalKey; - } - } - - if ( !cache[ id ] ) { - cache[ id ] = {}; - - // Avoids exposing jQuery metadata on plain JS objects when the object - // is serialized using JSON.stringify - if ( !isNode ) { - cache[ id ].toJSON = jQuery.noop; - } - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ] = jQuery.extend( cache[ id ], name ); - } else { - cache[ id ].data = jQuery.extend( cache[ id ].data, name ); - } - } - - thisCache = cache[ id ]; - - // jQuery data() is stored in a separate object inside the object's internal data - // cache in order to avoid key collisions between internal data and user-defined - // data. - if ( !pvt ) { - if ( !thisCache.data ) { - thisCache.data = {}; - } - - thisCache = thisCache.data; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( getByName ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; -} - -function internalRemoveData( elem, name, pvt ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var i, l, thisCache, - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ] : cache[ id ].data; - - if ( thisCache ) { - - // Support array or space separated string names for data keys - if ( !jQuery.isArray( name ) ) { - - // try the string as a key before any manipulation - if ( name in thisCache ) { - name = [ name ]; - } else { - - // split the camel cased version by spaces unless a key with the spaces exists - name = jQuery.camelCase( name ); - if ( name in thisCache ) { - name = [ name ]; - } else { - name = name.split(" "); - } - } - } else { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = name.concat( jQuery.map( name, jQuery.camelCase ) ); - } - - for ( i = 0, l = name.length; i < l; i++ ) { - delete thisCache[ name[i] ]; - } - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( !pvt ) { - delete cache[ id ].data; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject( cache[ id ] ) ) { - return; - } - } - - // Destroy the cache - if ( isNode ) { - jQuery.cleanData( [ elem ], true ); - - // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) - } else if ( jQuery.support.deleteExpando || cache != cache.window ) { - delete cache[ id ]; - - // When all else fails, null - } else { - cache[ id ] = null; - } -} - -jQuery.extend({ - cache: {}, - - // Unique for each copy of jQuery on the page - // Non-digits removed to match rinlinejQuery - expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), - - // The following elements throw uncatchable exceptions if you - // attempt to add expando properties to them. - noData: { - "embed": true, - // Ban all objects except for Flash (which handle expandos) - "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", - "applet": true - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data ) { - return internalData( elem, name, data ); - }, - - removeData: function( elem, name ) { - return internalRemoveData( elem, name ); - }, - - // For internal use only. - _data: function( elem, name, data ) { - return internalData( elem, name, data, true ); - }, - - _removeData: function( elem, name ) { - return internalRemoveData( elem, name, true ); - }, - - // A method for determining if a DOM node can handle the data expando - acceptData: function( elem ) { - // Do not set data on non-element because it will not be cleared (#8335). - if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) { - return false; - } - - var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; - - // nodes accept data unless otherwise specified; rejection can be conditional - return !noData || noData !== true && elem.getAttribute("classid") === noData; - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var attrs, name, - elem = this[0], - i = 0, - data = null; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = jQuery.data( elem ); - - if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { - attrs = elem.attributes; - for ( ; i < attrs.length; i++ ) { - name = attrs[i].name; - - if ( !name.indexOf( "data-" ) ) { - name = jQuery.camelCase( name.slice(5) ); - - dataAttr( elem, name, data[ name ] ); - } - } - jQuery._data( elem, "parsedAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - return jQuery.access( this, function( value ) { - - if ( value === undefined ) { - // Try to fetch any internally stored data first - return elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null; - } - - this.each(function() { - jQuery.data( this, key, value ); - }); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); - -function dataAttr( elem, key, data ) { - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// checks a cache object for emptiness -function isEmptyDataObject( obj ) { - var name; - for ( name in obj ) { - - // if the public data object is empty, the private is still empty - if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { - continue; - } - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray(data) ) { - queue = jQuery._data( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - hooks.cur = fn; - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return jQuery._data( elem, key ) || jQuery._data( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - jQuery._removeData( elem, type + "queue" ); - jQuery._removeData( elem, key ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ - delay: function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = setTimeout( next, time ); - hooks.stop = function() { - clearTimeout( timeout ); - }; - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while( i-- ) { - tmp = jQuery._data( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var nodeHook, boolHook, - rclass = /[\t\r\n]/g, - rreturn = /\r/g, - rfocusable = /^(?:input|select|textarea|button|object)$/i, - rclickable = /^(?:a|area)$/i, - rboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i, - ruseDefault = /^(?:checked|selected)$/i, - getSetAttribute = jQuery.support.getSetAttribute, - getSetInput = jQuery.support.input; - -jQuery.fn.extend({ - attr: function( name, value ) { - return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - }, - - prop: function( name, value ) { - return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - name = jQuery.propFix[ name ] || name; - return this.each(function() { - // try/catch handles cases where IE balks (such as removing a property on window) - try { - this[ name ] = undefined; - delete this[ name ]; - } catch( e ) {} - }); - }, - - addClass: function( value ) { - var classes, elem, cur, clazz, j, - i = 0, - len = this.length, - proceed = typeof value === "string" && value; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).addClass( value.call( this, j, this.className ) ); - }); - } - - if ( proceed ) { - // The disjunction here is for better compressibility (see removeClass) - classes = ( value || "" ).match( core_rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - " " - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - elem.className = jQuery.trim( cur ); - - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, clazz, j, - i = 0, - len = this.length, - proceed = arguments.length === 0 || typeof value === "string" && value; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).removeClass( value.call( this, j, this.className ) ); - }); - } - if ( proceed ) { - classes = ( value || "" ).match( core_rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - "" - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - elem.className = value ? jQuery.trim( cur ) : ""; - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isBool = typeof stateVal === "boolean"; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( i ) { - jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, - i = 0, - self = jQuery( this ), - state = stateVal, - classNames = value.match( core_rnotwhite ) || []; - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space separated list - state = isBool ? state : !self.hasClass( className ); - self[ state ? "addClass" : "removeClass" ]( className ); - } - - // Toggle whole class name - } else if ( type === core_strundefined || type === "boolean" ) { - if ( this.className ) { - // store className if set - jQuery._data( this, "__className__", this.className ); - } - - // If the element has a class name or if we're passed "false", - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " ", - i = 0, - l = this.length; - for ( ; i < l; i++ ) { - if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { - return true; - } - } - - return false; - }, - - val: function( value ) { - var ret, hooks, isFunction, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - // handle most common string cases - ret.replace(rreturn, "") : - // handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var val, - self = jQuery(this); - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, self.val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - } else if ( typeof val === "number" ) { - val += ""; - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map(val, function ( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - valHooks: { - option: { - get: function( elem ) { - // attributes.value is undefined in Blackberry 4.7 but - // uses .value. See #6932 - var val = elem.attributes.value; - return !val || val.specified ? elem.value : elem.text; - } - }, - select: { - get: function( elem ) { - var value, option, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one" || index < 0, - values = one ? null : [], - max = one ? index + 1 : options.length, - i = index < 0 ? - max : - one ? index : 0; - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // oldIE doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - // Don't return options that are disabled or in a disabled optgroup - ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && - ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var values = jQuery.makeArray( value ); - - jQuery(elem).find("option").each(function() { - this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; - }); - - if ( !values.length ) { - elem.selectedIndex = -1; - } - return values; - } - } - }, - - attr: function( elem, name, value ) { - var hooks, notxml, ret, - nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === core_strundefined ) { - return jQuery.prop( elem, name, value ); - } - - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - // All attributes are lowercase - // Grab necessary hook if one is defined - if ( notxml ) { - name = name.toLowerCase(); - hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - - } else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, value + "" ); - return value; - } - - } else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - - // In IE9+, Flash objects don't have .getAttribute (#12945) - // Support: IE9+ - if ( typeof elem.getAttribute !== core_strundefined ) { - ret = elem.getAttribute( name ); - } - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? - undefined : - ret; - } - }, - - removeAttr: function( elem, value ) { - var name, propName, - i = 0, - attrNames = value && value.match( core_rnotwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( (name = attrNames[i++]) ) { - propName = jQuery.propFix[ name ] || name; - - // Boolean attributes get special treatment (#10870) - if ( rboolean.test( name ) ) { - // Set corresponding property to false for boolean attributes - // Also clear defaultChecked/defaultSelected (if appropriate) for IE<8 - if ( !getSetAttribute && ruseDefault.test( name ) ) { - elem[ jQuery.camelCase( "default-" + name ) ] = - elem[ propName ] = false; - } else { - elem[ propName ] = false; - } - - // See #9699 for explanation of this approach (setting first, then removal) - } else { - jQuery.attr( elem, name, "" ); - } - - elem.removeAttribute( getSetAttribute ? name : propName ); - } - } - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { - // Setting the type on a radio button after the value resets the value in IE6-9 - // Reset value to default in case type is set after value during creation - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - propFix: { - tabindex: "tabIndex", - readonly: "readOnly", - "for": "htmlFor", - "class": "className", - maxlength: "maxLength", - cellspacing: "cellSpacing", - cellpadding: "cellPadding", - rowspan: "rowSpan", - colspan: "colSpan", - usemap: "useMap", - frameborder: "frameBorder", - contenteditable: "contentEditable" - }, - - prop: function( elem, name, value ) { - var ret, hooks, notxml, - nType = elem.nodeType; - - // don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - if ( notxml ) { - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - return ( elem[ name ] = value ); - } - - } else { - if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - return elem[ name ]; - } - } - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - var attributeNode = elem.getAttributeNode("tabindex"); - - return attributeNode && attributeNode.specified ? - parseInt( attributeNode.value, 10 ) : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } - } - } -}); - -// Hook for boolean attributes -boolHook = { - get: function( elem, name ) { - var - // Use .prop to determine if this attribute is understood as boolean - prop = jQuery.prop( elem, name ), - - // Fetch it accordingly - attr = typeof prop === "boolean" && elem.getAttribute( name ), - detail = typeof prop === "boolean" ? - - getSetInput && getSetAttribute ? - attr != null : - // oldIE fabricates an empty string for missing boolean attributes - // and conflates checked/selected into attroperties - ruseDefault.test( name ) ? - elem[ jQuery.camelCase( "default-" + name ) ] : - !!attr : - - // fetch an attribute node for properties not recognized as boolean - elem.getAttributeNode( name ); - - return detail && detail.value !== false ? - name.toLowerCase() : - undefined; - }, - set: function( elem, value, name ) { - if ( value === false ) { - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { - // IE<8 needs the *property* name - elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); - - // Use defaultChecked and defaultSelected for oldIE - } else { - elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; - } - - return name; - } -}; - -// fix oldIE value attroperty -if ( !getSetInput || !getSetAttribute ) { - jQuery.attrHooks.value = { - get: function( elem, name ) { - var ret = elem.getAttributeNode( name ); - return jQuery.nodeName( elem, "input" ) ? - - // Ignore the value *property* by using defaultValue - elem.defaultValue : - - ret && ret.specified ? ret.value : undefined; - }, - set: function( elem, value, name ) { - if ( jQuery.nodeName( elem, "input" ) ) { - // Does not return so that setAttribute is also used - elem.defaultValue = value; - } else { - // Use nodeHook if defined (#1954); otherwise setAttribute is fine - return nodeHook && nodeHook.set( elem, value, name ); - } - } - }; -} - -// IE6/7 do not support getting/setting some attributes with get/setAttribute -if ( !getSetAttribute ) { - - // Use this for any attribute in IE6/7 - // This fixes almost every IE6/7 issue - nodeHook = jQuery.valHooks.button = { - get: function( elem, name ) { - var ret = elem.getAttributeNode( name ); - return ret && ( name === "id" || name === "name" || name === "coords" ? ret.value !== "" : ret.specified ) ? - ret.value : - undefined; - }, - set: function( elem, value, name ) { - // Set the existing or create a new attribute node - var ret = elem.getAttributeNode( name ); - if ( !ret ) { - elem.setAttributeNode( - (ret = elem.ownerDocument.createAttribute( name )) - ); - } - - ret.value = value += ""; - - // Break association with cloned elements by also using setAttribute (#9646) - return name === "value" || value === elem.getAttribute( name ) ? - value : - undefined; - } - }; - - // Set contenteditable to false on removals(#10429) - // Setting to empty string throws an error as an invalid value - jQuery.attrHooks.contenteditable = { - get: nodeHook.get, - set: function( elem, value, name ) { - nodeHook.set( elem, value === "" ? false : value, name ); - } - }; - - // Set width and height to auto instead of 0 on empty string( Bug #8150 ) - // This is for removals - jQuery.each([ "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - set: function( elem, value ) { - if ( value === "" ) { - elem.setAttribute( name, "auto" ); - return value; - } - } - }); - }); -} - - -// Some attributes require a special call on IE -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !jQuery.support.hrefNormalized ) { - jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - get: function( elem ) { - var ret = elem.getAttribute( name, 2 ); - return ret == null ? undefined : ret; - } - }); - }); - - // href/src property should get the full normalized URL (#10299/#12915) - jQuery.each([ "href", "src" ], function( i, name ) { - jQuery.propHooks[ name ] = { - get: function( elem ) { - return elem.getAttribute( name, 4 ); - } - }; - }); -} - -if ( !jQuery.support.style ) { - jQuery.attrHooks.style = { - get: function( elem ) { - // Return undefined in the case of empty string - // Note: IE uppercases css property names, but if we were to .toLowerCase() - // .cssText, that would destroy case senstitivity in URL's, like in "background" - return elem.style.cssText || undefined; - }, - set: function( elem, value ) { - return ( elem.style.cssText = value + "" ); - } - }; -} - -// Safari mis-reports the default selected property of an option -// Accessing the parent's selectedIndex property fixes it -if ( !jQuery.support.optSelected ) { - jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { - get: function( elem ) { - var parent = elem.parentNode; - - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - return null; - } - }); -} - -// IE6/7 call enctype encoding -if ( !jQuery.support.enctype ) { - jQuery.propFix.enctype = "encoding"; -} - -// Radios and checkboxes getter/setter -if ( !jQuery.support.checkOn ) { - jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - get: function( elem ) { - // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified - return elem.getAttribute("value") === null ? "on" : elem.value; - } - }; - }); -} -jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); - } - } - }); -}); -var rformElems = /^(?:input|select|textarea)$/i, - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - var tmp, events, t, handleObjIn, - special, eventHandle, handleObj, - handlers, type, namespaces, origType, - elemData = jQuery._data( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - // jQuery(...).bind("mouseover mouseout", fn); - types = ( types || "" ).match( core_rnotwhite ) || [""]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener/attachEvent if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - var j, handleObj, tmp, - origCount, t, events, - special, handlers, type, - namespaces, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( core_rnotwhite ) || [""]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery._removeData( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - var handle, ontype, cur, - bubbleType, special, tmp, i, - eventPath = [ elem || document ], - type = core_hasOwn.call( event, "type" ) ? event.type : event, - namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - event.isTrigger = true; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { - event.preventDefault(); - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && - !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction() check here because IE6/7 fails that test. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - try { - elem[ type ](); - } catch ( e ) { - // IE<9 dies on focus/blur to hidden element (#1486,#12518) - // only reproducible on winXP IE8 native, not IE9 in IE8 mode - } - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, ret, handleObj, matched, j, - handlerQueue = [], - args = core_slice.call( arguments ), - handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var sel, handleObj, matches, i, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - for ( ; cur != this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: IE<9 - // Fix target property (#1925) - if ( !event.target ) { - event.target = originalEvent.srcElement || document; - } - - // Support: Chrome 23+, Safari? - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Support: IE<9 - // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) - event.metaKey = !!event.metaKey; - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var body, eventDoc, doc, - button = original.button, - fromElement = original.fromElement; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && fromElement ) { - event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { - this.click(); - return false; - } - } - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== document.activeElement && this.focus ) { - try { - this.focus(); - return false; - } catch ( e ) { - // Support: IE<9 - // If we error on focus to hidden element (#1486, #12518), - // let .trigger() run the handlers - } - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === document.activeElement && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - - beforeunload: { - postDispatch: function( event ) { - - // Even when returnValue equals to undefined Firefox will still show alert - if ( event.result !== undefined ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } - } : - function( elem, type, handle ) { - var name = "on" + type; - - if ( elem.detachEvent ) { - - // #8545, #7054, preventing memory leaks for custom events in IE6-8 - // detachEvent needed property on element, by name of that event, to properly expose it to GC - if ( typeof elem[ name ] === core_strundefined ) { - elem[ name ] = null; - } - - elem.detachEvent( name, handle ); - } - }; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || - src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - if ( !e ) { - return; - } - - // If preventDefault exists, run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // Support: IE - // Otherwise set the returnValue property of the original event to false - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - if ( !e ) { - return; - } - // If stopPropagation exists, run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - - // Support: IE - // Set the cancelBubble property of the original event to true - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// IE submit delegation -if ( !jQuery.support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Lazy-add a submit handler when a descendant form may potentially be submitted - jQuery.event.add( this, "click._submit keypress._submit", function( e ) { - // Node name check avoids a VML-related crash in IE (#9807) - var elem = e.target, - form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; - if ( form && !jQuery._data( form, "submitBubbles" ) ) { - jQuery.event.add( form, "submit._submit", function( event ) { - event._submit_bubble = true; - }); - jQuery._data( form, "submitBubbles", true ); - } - }); - // return undefined since we don't need an event listener - }, - - postDispatch: function( event ) { - // If form was submitted by the user, bubble the event up the tree - if ( event._submit_bubble ) { - delete event._submit_bubble; - if ( this.parentNode && !event.isTrigger ) { - jQuery.event.simulate( "submit", this.parentNode, event, true ); - } - } - }, - - teardown: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Remove delegated handlers; cleanData eventually reaps submit handlers attached above - jQuery.event.remove( this, "._submit" ); - } - }; -} - -// IE change delegation and checkbox/radio fix -if ( !jQuery.support.changeBubbles ) { - - jQuery.event.special.change = { - - setup: function() { - - if ( rformElems.test( this.nodeName ) ) { - // IE doesn't fire change on a check/radio until blur; trigger it on click - // after a propertychange. Eat the blur-change in special.change.handle. - // This still fires onchange a second time for check/radio after blur. - if ( this.type === "checkbox" || this.type === "radio" ) { - jQuery.event.add( this, "propertychange._change", function( event ) { - if ( event.originalEvent.propertyName === "checked" ) { - this._just_changed = true; - } - }); - jQuery.event.add( this, "click._change", function( event ) { - if ( this._just_changed && !event.isTrigger ) { - this._just_changed = false; - } - // Allow triggered, simulated change events (#11500) - jQuery.event.simulate( "change", this, event, true ); - }); - } - return false; - } - // Delegated event; lazy-add a change handler on descendant inputs - jQuery.event.add( this, "beforeactivate._change", function( e ) { - var elem = e.target; - - if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { - jQuery.event.add( elem, "change._change", function( event ) { - if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { - jQuery.event.simulate( "change", this.parentNode, event, true ); - } - }); - jQuery._data( elem, "changeBubbles", true ); - } - }); - }, - - handle: function( event ) { - var elem = event.target; - - // Swallow native change events from checkbox/radio, we already triggered them above - if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { - return event.handleObj.handler.apply( this, arguments ); - } - }, - - teardown: function() { - jQuery.event.remove( this, "._change" ); - - return !rformElems.test( this.nodeName ); - } - }; -} - -// Create "bubbling" focus and blur events -if ( !jQuery.support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler while someone wants focusin/focusout - var attaches = 0, - handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - if ( attaches++ === 0 ) { - document.addEventListener( orig, handler, true ); - } - }, - teardown: function() { - if ( --attaches === 0 ) { - document.removeEventListener( orig, handler, true ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var type, origFn; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - bind: function( types, data, fn ) { - return this.on( types, null, data, fn ); - }, - unbind: function( types, fn ) { - return this.off( types, null, fn ); - }, - - delegate: function( selector, types, data, fn ) { - return this.on( types, selector, data, fn ); - }, - undelegate: function( selector, types, fn ) { - // ( namespace ) or ( selector, types [, fn] ) - return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); -/*! - * Sizzle CSS Selector Engine - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license - * http://sizzlejs.com/ - */ -(function( window, undefined ) { - -var i, - cachedruns, - Expr, - getText, - isXML, - compile, - hasDuplicate, - outermostContext, - - // Local document vars - setDocument, - document, - docElem, - documentIsXML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - sortOrder, - - // Instance-specific data - expando = "sizzle" + -(new Date()), - preferredDoc = window.document, - support = {}, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - - // General-purpose constants - strundefined = typeof undefined, - MAX_NEGATIVE = 1 << 31, - - // Array methods - arr = [], - pop = arr.pop, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf if we can't use a native one - indexOf = arr.indexOf || function( elem ) { - var i = 0, - len = this.length; - for ( ; i < len; i++ ) { - if ( this[i] === elem ) { - return i; - } - } - return -1; - }, - - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors - operators = "([*^$|!~]?=)", - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + - "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", - - // Prefer arguments quoted, - // then not containing pseudos/brackets, - // then attribute selectors/non-parenthetical expressions, - // then anything else - // These preferences are here to reduce the number of selectors - // needing tokenize in the PSEUDO preFilter - pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ), - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rsibling = /[\x20\t\r\n\f]*[+~]/, - - rnative = /^[^{]+\{\s*\[native code/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rescape = /'|\\/g, - rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g, - funescape = function( _, escaped ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - return high !== high ? - escaped : - // BMP codepoint - high < 0 ? - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }; - -// Use a stripped-down slice if we can't use a native one -try { - slice.call( preferredDoc.documentElement.childNodes, 0 )[0].nodeType; -} catch ( e ) { - slice = function( i ) { - var elem, - results = []; - while ( (elem = this[i++]) ) { - results.push( elem ); - } - return results; - }; -} - -/** - * For feature detection - * @param {Function} fn The function to test for native support - */ -function isNative( fn ) { - return rnative.test( fn + "" ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var cache, - keys = []; - - return (cache = function( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key += " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key ] = value); - }); -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return fn( div ); - } catch (e) { - return false; - } finally { - // release memory in IE - div = null; - } -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { - return []; - } - - if ( !documentIsXML && !seed ) { - - // Shortcuts - if ( (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getByClassName && context.getElementsByClassName ) { - push.apply( results, slice.call(context.getElementsByClassName( m ), 0) ); - return results; - } - } - - // QSA path - if ( support.qsa && !rbuggyQSA.test(selector) ) { - old = true; - nid = expando; - newContext = context; - newSelector = nodeType === 9 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && context.parentNode || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, slice.call( newContext.querySelectorAll( - newSelector - ), 0 ) ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Detect xml - * @param {Element|Object} elem An element or a document - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var doc = node ? node.ownerDocument || node : preferredDoc; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - - // Support tests - documentIsXML = isXML( doc ); - - // Check if getElementsByTagName("*") returns only elements - support.tagNameNoComments = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Check if attributes should be retrieved by attribute nodes - support.attributes = assert(function( div ) { - div.innerHTML = ""; - var type = typeof div.lastChild.getAttribute("multiple"); - // IE8 returns a string for some attributes even when not present - return type !== "boolean" && type !== "string"; - }); - - // Check if getElementsByClassName can be trusted - support.getByClassName = assert(function( div ) { - // Opera can't find a second classname (in 9.6) - div.innerHTML = ""; - if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) { - return false; - } - - // Safari 3.2 caches class attributes and doesn't catch changes - div.lastChild.className = "e"; - return div.getElementsByClassName("e").length === 2; - }); - - // Check if getElementById returns elements by name - // Check if getElementsByName privileges form controls or returns elements by ID - support.getByName = assert(function( div ) { - // Inject content - div.id = expando + 0; - div.innerHTML = "
"; - docElem.insertBefore( div, docElem.firstChild ); - - // Test - var pass = doc.getElementsByName && - // buggy browsers will return fewer than the correct 2 - doc.getElementsByName( expando ).length === 2 + - // buggy browsers will return more than the correct 0 - doc.getElementsByName( expando + 0 ).length; - support.getIdNotName = !doc.getElementById( expando ); - - // Cleanup - docElem.removeChild( div ); - - return pass; - }); - - // IE6/7 return modified attributes - Expr.attrHandle = assert(function( div ) { - div.innerHTML = ""; - return div.firstChild && typeof div.firstChild.getAttribute !== strundefined && - div.firstChild.getAttribute("href") === "#"; - }) ? - {} : - { - "href": function( elem ) { - return elem.getAttribute( "href", 2 ); - }, - "type": function( elem ) { - return elem.getAttribute("type"); - } - }; - - // ID find and filter - if ( support.getIdNotName ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== strundefined && !documentIsXML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [m] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== strundefined && !documentIsXML ) { - var m = context.getElementById( id ); - - return m ? - m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ? - [m] : - undefined : - []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.tagNameNoComments ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== strundefined ) { - return context.getElementsByTagName( tag ); - } - } : - function( tag, context ) { - var elem, - tmp = [], - i = 0, - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Name - Expr.find["NAME"] = support.getByName && function( tag, context ) { - if ( typeof context.getElementsByName !== strundefined ) { - return context.getElementsByName( name ); - } - }; - - // Class - Expr.find["CLASS"] = support.getByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== strundefined && !documentIsXML ) { - return context.getElementsByClassName( className ); - } - }; - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21), - // no need to also add to buggyMatches since matches checks buggyQSA - // A support test would require too much code (would include document ready) - rbuggyQSA = [ ":focus" ]; - - if ( (support.qsa = isNative(doc.querySelectorAll)) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explictly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - div.innerHTML = ""; - - // IE8 - Some boolean attributes are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - }); - - assert(function( div ) { - - // Opera 10-12/IE8 - ^= $= *= and empty values - // Should not select anything - div.innerHTML = ""; - if ( div.querySelectorAll("[i^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = isNative( (matches = docElem.matchesSelector || - docElem.mozMatchesSelector || - docElem.webkitMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = new RegExp( rbuggyMatches.join("|") ); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = isNative(docElem.contains) || docElem.compareDocumentPosition ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - // Document order sorting - sortOrder = docElem.compareDocumentPosition ? - function( a, b ) { - var compare; - - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - if ( (compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b )) ) { - if ( compare & 1 || a.parentNode && a.parentNode.nodeType === 11 ) { - if ( a === doc || contains( preferredDoc, a ) ) { - return -1; - } - if ( b === doc || contains( preferredDoc, b ) ) { - return 1; - } - return 0; - } - return compare & 4 ? -1 : 1; - } - - return a.compareDocumentPosition ? -1 : 1; - } : - function( a, b ) { - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - - // Parentless nodes are either documents or disconnected - } else if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - // Always assume the presence of duplicates if sort doesn't - // pass them to our comparison function (as in Google Chrome). - hasDuplicate = false; - [0, 0].sort( sortOrder ); - support.detectDuplicates = hasDuplicate; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - // rbuggyQSA always contains :focus, so no need for an existence check - if ( support.matchesSelector && !documentIsXML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && !rbuggyQSA.test(expr) ) { - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch(e) {} - } - - return Sizzle( expr, document, null, [elem] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - var val; - - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - if ( !documentIsXML ) { - name = name.toLowerCase(); - } - if ( (val = Expr.attrHandle[ name ]) ) { - return val( elem ); - } - if ( documentIsXML || support.attributes ) { - return elem.getAttribute( name ); - } - return ( (val = elem.getAttributeNode( name )) || elem.getAttribute( name ) ) && elem[ name ] === true ? - name : - val && val.specified ? val.value : null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -// Document sorting and removing duplicates -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - i = 1, - j = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - results.sort( sortOrder ); - - if ( hasDuplicate ) { - for ( ; (elem = results[i]); i++ ) { - if ( elem === results[ i - 1 ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - return results; -}; - -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -// Returns a function to use in pseudos for input types -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -// Returns a function to use in pseudos for buttons -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -// Returns a function to use in pseudos for positionals -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - for ( ; (node = elem[i]); i++ ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (see #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[5] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[4] ) { - match[2] = match[4]; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeName ) { - if ( nodeName === "*" ) { - return function() { return true; }; - } - - nodeName = nodeName.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf.call( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifider - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsXML ? - elem.getAttribute("xml:lang") || elem.getAttribute("lang") : - elem.lang) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), - // not comment, processing instructions, or others - // Thanks to Diego Perini for the nodeName shortcut - // Greater than "@" means alpha characters (specifically not starting with "#" or "?") - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) - // use getAttribute instead to test this case - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -function tokenize( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( tokens = [] ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push( { - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - } ); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push( { - value: matched, - type: type, - matches: match - } ); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -} - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var data, cache, outerCache, - dirkey = dirruns + " " + doneName; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { - if ( (data = cache[1]) === true || data === cachedruns ) { - return data === true; - } - } else { - cache = outerCache[ dir ] = [ dirkey ]; - cache[1] = matcher( elem, context, xml ) || cachedruns; - if ( cache[1] === true ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf.call( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( tokens.slice( 0, i - 1 ) ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - // A counter to specify which element is currently being matched - var matcherCachedRuns = 0, - bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, expandContext ) { - var elem, j, matcher, - setMatched = [], - matchedCount = 0, - i = "0", - unmatched = seed && [], - outermost = expandContext != null, - contextBackup = outermostContext, - // We must always have either seed elements or context - elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); - - if ( outermost ) { - outermostContext = context !== document && context; - cachedruns = matcherCachedRuns; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - for ( ; (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - cachedruns = ++matcherCachedRuns; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !group ) { - group = tokenize( selector ); - } - i = group.length; - while ( i-- ) { - cached = matcherFromTokens( group[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - } - return cached; -}; - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function select( selector, context, results, seed ) { - var i, tokens, token, type, find, - match = tokenize( selector ); - - if ( !seed ) { - // Try to minimize operations if there is only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - context.nodeType === 9 && !documentIsXML && - Expr.relative[ tokens[1].type ] ) { - - context = Expr.find["ID"]( token.matches[0].replace( runescape, funescape ), context )[0]; - if ( !context ) { - return results; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && context.parentNode || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, slice.call( seed, 0 ) ); - return results; - } - - break; - } - } - } - } - } - - // Compile and execute a filtering function - // Provide `match` to avoid retokenization if we modified the selector above - compile( selector, match )( - seed, - context, - documentIsXML, - results, - rsibling.test( selector ) - ); - return results; -} - -// Deprecated -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Easy API for creating new setFilters -function setFilters() {} -Expr.filters = setFilters.prototype = Expr.pseudos; -Expr.setFilters = new setFilters(); - -// Initialize with the default document -setDocument(); - -// Override sizzle attribute retrieval -Sizzle.attr = jQuery.attr; -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - -})( window ); -var runtil = /Until$/, - rparentsprev = /^(?:parents|prev(?:Until|All))/, - isSimple = /^.[^:#\[\.,]*$/, - rneedsContext = jQuery.expr.match.needsContext, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend({ - find: function( selector ) { - var i, ret, self, - len = this.length; - - if ( typeof selector !== "string" ) { - self = this; - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - ret = []; - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, this[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = ( this.selector ? this.selector + " " : "" ) + selector; - return ret; - }, - - has: function( target ) { - var i, - targets = jQuery( target, this ), - len = targets.length; - - return this.filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - not: function( selector ) { - return this.pushStack( winnow(this, selector, false) ); - }, - - filter: function( selector ) { - return this.pushStack( winnow(this, selector, true) ); - }, - - is: function( selector ) { - return !!selector && ( - typeof selector === "string" ? - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - rneedsContext.test( selector ) ? - jQuery( selector, this.context ).index( this[0] ) >= 0 : - jQuery.filter( selector, this ).length > 0 : - this.filter( selector ).length > 0 ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - ret = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - cur = this[i]; - - while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) { - if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { - ret.push( cur ); - break; - } - cur = cur.parentNode; - } - } - - return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[0], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - var set = typeof selector === "string" ? - jQuery( selector, context ) : - jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), - all = jQuery.merge( this.get(), set ); - - return this.pushStack( jQuery.unique(all) ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -jQuery.fn.andSelf = jQuery.fn.addBack; - -function sibling( cur, dir ) { - do { - cur = cur[ dir ]; - } while ( cur && cur.nodeType !== 1 ); - - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( this.length > 1 && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret ); - }; -}); - -jQuery.extend({ - filter: function( expr, elems, not ) { - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 ? - jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : - jQuery.find.matches(expr, elems); - }, - - dir: function( elem, dir, until ) { - var matched = [], - cur = elem[ dir ]; - - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, keep ) { - - // Can't pass null or undefined to indexOf in Firefox 4 - // Set to 0 to skip string check - qualifier = qualifier || 0; - - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep(elements, function( elem, i ) { - var retVal = !!qualifier.call( elem, i, elem ); - return retVal === keep; - }); - - } else if ( qualifier.nodeType ) { - return jQuery.grep(elements, function( elem ) { - return ( elem === qualifier ) === keep; - }); - - } else if ( typeof qualifier === "string" ) { - var filtered = jQuery.grep(elements, function( elem ) { - return elem.nodeType === 1; - }); - - if ( isSimple.test( qualifier ) ) { - return jQuery.filter(qualifier, filtered, !keep); - } else { - qualifier = jQuery.filter( qualifier, filtered ); - } - } - - return jQuery.grep(elements, function( elem ) { - return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; - }); -} -function createSafeFragment( document ) { - var list = nodeNames.split( "|" ), - safeFrag = document.createDocumentFragment(); - - if ( safeFrag.createElement ) { - while ( list.length ) { - safeFrag.createElement( - list.pop() - ); - } - } - return safeFrag; -} - -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + - "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", - rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, - rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), - rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rtbody = /\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - option: [ 1, "" ], - legend: [ 1, "
", "
" ], - area: [ 1, "", "" ], - param: [ 1, "", "" ], - thead: [ 1, "", "
" ], - tr: [ 2, "", "
" ], - col: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, - // unless wrapped in a div with non-breaking characters in front of it. - _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] - }, - safeFragment = createSafeFragment( document ), - fragmentDiv = safeFragment.appendChild( document.createElement("div") ); - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -jQuery.fn.extend({ - text: function( value ) { - return jQuery.access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); - }, null, value, arguments.length ); - }, - - wrapAll: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each(function(i) { - jQuery(this).wrapAll( html.call(this, i) ); - }); - } - - if ( this[0] ) { - // The elements to wrap the target around - var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); - - if ( this[0].parentNode ) { - wrap.insertBefore( this[0] ); - } - - wrap.map(function() { - var elem = this; - - while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { - elem = elem.firstChild; - } - - return elem; - }).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each(function(i) { - jQuery(this).wrapInner( html.call(this, i) ); - }); - } - - return this.each(function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - }); - }, - - wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); - - return this.each(function(i) { - jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); - }); - }, - - unwrap: function() { - return this.parent().each(function() { - if ( !jQuery.nodeName( this, "body" ) ) { - jQuery( this ).replaceWith( this.childNodes ); - } - }).end(); - }, - - append: function() { - return this.domManip(arguments, true, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip(arguments, true, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.insertBefore( elem, this.firstChild ); - } - }); - }, - - before: function() { - return this.domManip( arguments, false, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip( arguments, false, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - // keepData is for internal use only--do not document - remove: function( selector, keepData ) { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - if ( !selector || jQuery.filter( selector, [ elem ] ).length > 0 ) { - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - } - - // Remove any remaining nodes - while ( elem.firstChild ) { - elem.removeChild( elem.firstChild ); - } - - // If this is a select, ensure that it displays empty (#12336) - // Support: IE<9 - if ( elem.options && jQuery.nodeName( elem, "select" ) ) { - elem.options.length = 0; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function () { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }, - - html: function( value ) { - return jQuery.access( this, function( value ) { - var elem = this[0] || {}, - i = 0, - l = this.length; - - if ( value === undefined ) { - return elem.nodeType === 1 ? - elem.innerHTML.replace( rinlinejQuery, "" ) : - undefined; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && - ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && - !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1>" ); - - try { - for (; i < l; i++ ) { - // Remove element nodes and prevent memory leaks - elem = this[i] || {}; - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch(e) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function( value ) { - var isFunc = jQuery.isFunction( value ); - - // Make sure that the elements are removed from the DOM before they are inserted - // this can help fix replacing a parent with child elements - if ( !isFunc && typeof value !== "string" ) { - value = jQuery( value ).not( this ).detach(); - } - - return this.domManip( [ value ], true, function( elem ) { - var next = this.nextSibling, - parent = this.parentNode; - - if ( parent ) { - jQuery( this ).remove(); - parent.insertBefore( elem, next ); - } - }); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, table, callback ) { - - // Flatten any nested arrays - args = core_concat.apply( [], args ); - - var first, node, hasScripts, - scripts, doc, fragment, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[0], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[0] = value.call( this, index, table ? self.html() : undefined ); - } - self.domManip( args, table, callback ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - table = table && jQuery.nodeName( first, "tr" ); - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( - table && jQuery.nodeName( this[i], "table" ) ? - findOrAppend( this[i], "tbody" ) : - this[i], - node, - i - ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Hope ajax is available... - jQuery.ajax({ - url: node.src, - type: "GET", - dataType: "script", - async: false, - global: false, - "throws": true - }); - } else { - jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); - } - } - } - } - - // Fix #11809: Avoid leaking memory - fragment = first = null; - } - } - - return this; - } -}); - -function findOrAppend( elem, tag ) { - return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) ); -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - var attr = elem.getAttributeNode("type"); - elem.type = ( attr && attr.specified ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - if ( match ) { - elem.type = match[1]; - } else { - elem.removeAttribute("type"); - } - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var elem, - i = 0; - for ( ; (elem = elems[i]) != null; i++ ) { - jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); - } -} - -function cloneCopyEvent( src, dest ) { - - if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { - return; - } - - var type, i, l, - oldData = jQuery._data( src ), - curData = jQuery._data( dest, oldData ), - events = oldData.events; - - if ( events ) { - delete curData.handle; - curData.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - - // make the cloned public data object a copy from the original - if ( curData.data ) { - curData.data = jQuery.extend( {}, curData.data ); - } -} - -function fixCloneNodeIssues( src, dest ) { - var nodeName, e, data; - - // We do not need to do anything for non-Elements - if ( dest.nodeType !== 1 ) { - return; - } - - nodeName = dest.nodeName.toLowerCase(); - - // IE6-8 copies events bound via attachEvent when using cloneNode. - if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) { - data = jQuery._data( dest ); - - for ( e in data.events ) { - jQuery.removeEvent( dest, e, data.handle ); - } - - // Event data gets referenced instead of copied if the expando gets copied too - dest.removeAttribute( jQuery.expando ); - } - - // IE blanks contents when cloning scripts, and tries to evaluate newly-set text - if ( nodeName === "script" && dest.text !== src.text ) { - disableScript( dest ).text = src.text; - restoreScript( dest ); - - // IE6-10 improperly clones children of object elements using classid. - // IE10 throws NoModificationAllowedError if parent is null, #12132. - } else if ( nodeName === "object" ) { - if ( dest.parentNode ) { - dest.outerHTML = src.outerHTML; - } - - // This path appears unavoidable for IE9. When cloning an object - // element in IE9, the outerHTML strategy above is not sufficient. - // If the src has innerHTML and the destination does not, - // copy the src.innerHTML into the dest.innerHTML. #10324 - if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { - dest.innerHTML = src.innerHTML; - } - - } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { - // IE6-8 fails to persist the checked state of a cloned checkbox - // or radio button. Worse, IE6-7 fail to give the cloned element - // a checked appearance if the defaultChecked value isn't also set - - dest.defaultChecked = dest.checked = src.checked; - - // IE6-7 get confused and end up setting the value of a cloned - // checkbox/radio button to an empty string instead of "on" - if ( dest.value !== src.value ) { - dest.value = src.value; - } - - // IE6-8 fails to return the selected option to the default selected - // state when cloning options - } else if ( nodeName === "option" ) { - dest.defaultSelected = dest.selected = src.defaultSelected; - - // IE6-8 fails to set the defaultValue to the correct value when - // cloning other types of input fields - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - i = 0, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone(true); - jQuery( insert[i] )[ original ]( elems ); - - // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() - core_push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - -function getAll( context, tag ) { - var elems, elem, - i = 0, - found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) : - undefined; - - if ( !found ) { - for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { - if ( !tag || jQuery.nodeName( elem, tag ) ) { - found.push( elem ); - } else { - jQuery.merge( found, getAll( elem, tag ) ); - } - } - } - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], found ) : - found; -} - -// Used in buildFragment, fixes the defaultChecked property -function fixDefaultChecked( elem ) { - if ( manipulation_rcheckableType.test( elem.type ) ) { - elem.defaultChecked = elem.checked; - } -} - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var destElements, node, clone, i, srcElements, - inPage = jQuery.contains( elem.ownerDocument, elem ); - - if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { - clone = elem.cloneNode( true ); - - // IE<=8 does not properly clone detached, unknown element nodes - } else { - fragmentDiv.innerHTML = elem.outerHTML; - fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); - } - - if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && - (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - // Fix all IE cloning issues - for ( i = 0; (node = srcElements[i]) != null; ++i ) { - // Ensure that the destination node is not null; Fixes #9587 - if ( destElements[i] ) { - fixCloneNodeIssues( node, destElements[i] ); - } - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0; (node = srcElements[i]) != null; i++ ) { - cloneCopyEvent( node, destElements[i] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - destElements = srcElements = node = null; - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var j, elem, contains, - tmp, tag, tbody, wrap, - l = elems.length, - - // Ensure a safe fragment - safe = createSafeFragment( context ), - - nodes = [], - i = 0; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || safe.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - - tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; - - // Descend through wrappers to the right content - j = wrap[0]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Manually add leading whitespace removed by IE - if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { - nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); - } - - // Remove IE's autoinserted from table fragments - if ( !jQuery.support.tbody ) { - - // String was a , *may* have spurious - elem = tag === "table" && !rtbody.test( elem ) ? - tmp.firstChild : - - // String was a bare or - wrap[1] === "
" && !rtbody.test( elem ) ? - tmp : - 0; - - j = elem && elem.childNodes.length; - while ( j-- ) { - if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { - elem.removeChild( tbody ); - } - } - } - - jQuery.merge( nodes, tmp.childNodes ); - - // Fix #12392 for WebKit and IE > 9 - tmp.textContent = ""; - - // Fix #12392 for oldIE - while ( tmp.firstChild ) { - tmp.removeChild( tmp.firstChild ); - } - - // Remember the top-level container for proper cleanup - tmp = safe.lastChild; - } - } - } - - // Fix #11356: Clear elements from fragment - if ( tmp ) { - safe.removeChild( tmp ); - } - - // Reset defaultChecked for any radios and checkboxes - // about to be appended to the DOM in IE 6/7 (#8060) - if ( !jQuery.support.appendChecked ) { - jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); - } - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( safe.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - tmp = null; - - return safe; - }, - - cleanData: function( elems, /* internal */ acceptData ) { - var elem, type, id, data, - i = 0, - internalKey = jQuery.expando, - cache = jQuery.cache, - deleteExpando = jQuery.support.deleteExpando, - special = jQuery.event.special; - - for ( ; (elem = elems[i]) != null; i++ ) { - - if ( acceptData || jQuery.acceptData( elem ) ) { - - id = elem[ internalKey ]; - data = id && cache[ id ]; - - if ( data ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Remove cache only if it was not already removed by jQuery.event.remove - if ( cache[ id ] ) { - - delete cache[ id ]; - - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if ( deleteExpando ) { - delete elem[ internalKey ]; - - } else if ( typeof elem.removeAttribute !== core_strundefined ) { - elem.removeAttribute( internalKey ); - - } else { - elem[ internalKey ] = null; - } - - core_deletedIds.push( id ); - } - } - } - } - } -}); -var iframe, getStyles, curCSS, - ralpha = /alpha\([^)]*\)/i, - ropacity = /opacity\s*=\s*([^)]*)/, - rposition = /^(top|right|bottom|left)$/, - // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" - // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rmargin = /^margin/, - rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), - rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), - rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), - elemdisplay = { BODY: "block" }, - - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: 0, - fontWeight: 400 - }, - - cssExpand = [ "Top", "Right", "Bottom", "Left" ], - cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; - -// return a css property mapped to a potentially vendor prefixed property -function vendorPropName( style, name ) { - - // shortcut for names that are not vendor prefixed - if ( name in style ) { - return name; - } - - // check for vendor prefixed names - var capName = name.charAt(0).toUpperCase() + name.slice(1), - origName = name, - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in style ) { - return name; - } - } - - return origName; -} - -function isHidden( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); -} - -function showHide( elements, show ) { - var display, elem, hidden, - values = [], - index = 0, - length = elements.length; - - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - values[ index ] = jQuery._data( elem, "olddisplay" ); - display = elem.style.display; - if ( show ) { - // Reset the inline display of this element to learn if it is - // being hidden by cascaded rules or not - if ( !values[ index ] && display === "none" ) { - elem.style.display = ""; - } - - // Set elements which have been overridden with display: none - // in a stylesheet to whatever the default browser style is - // for such an element - if ( elem.style.display === "" && isHidden( elem ) ) { - values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); - } - } else { - - if ( !values[ index ] ) { - hidden = isHidden( elem ); - - if ( display && display !== "none" || !hidden ) { - jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); - } - } - } - } - - // Set the display of most of the elements in a second loop - // to avoid the constant reflow - for ( index = 0; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - if ( !show || elem.style.display === "none" || elem.style.display === "" ) { - elem.style.display = show ? values[ index ] || "" : "none"; - } - } - - return elements; -} - -jQuery.fn.extend({ - css: function( name, value ) { - return jQuery.access( this, function( elem, name, value ) { - var len, styles, - map = {}, - i = 0; - - if ( jQuery.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - }, - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - var bool = typeof state === "boolean"; - - return this.each(function() { - if ( bool ? state : isHidden( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - }); - } -}); - -jQuery.extend({ - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Exclude the following css properties to add px - cssNumber: { - "columnCount": true, - "fillOpacity": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: { - // normalize float css property - "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" - }, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = jQuery.camelCase( name ), - style = elem.style; - - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // convert relative number strings (+= or -=) to relative numbers. #7345 - if ( type === "string" && (ret = rrelNum.exec( value )) ) { - value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); - // Fixes bug #9237 - type = "number"; - } - - // Make sure that NaN and null values aren't set. See: #7116 - if ( value == null || type === "number" && isNaN( value ) ) { - return; - } - - // If a number was passed in, add 'px' to the (except for certain CSS properties) - if ( type === "number" && !jQuery.cssNumber[ origName ] ) { - value += "px"; - } - - // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, - // but it would mean to define eight (for every problematic property) identical functions - if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { - - // Wrapped to prevent IE from throwing errors when 'invalid' values are provided - // Fixes bug #5509 - try { - style[ name ] = value; - } catch(e) {} - } - - } else { - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var num, val, hooks, - origName = jQuery.camelCase( name ); - - // Make sure that we're working with the right name - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - //convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Return, converting to number if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; - } - return val; - }, - - // A method for quickly swapping in/out CSS properties to get correct calculations - swap: function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; - } -}); - -// NOTE: we've included the "window" in window.getComputedStyle -// because jsdom on node.js will break without it. -if ( window.getComputedStyle ) { - getStyles = function( elem ) { - return window.getComputedStyle( elem, null ); - }; - - curCSS = function( elem, name, _computed ) { - var width, minWidth, maxWidth, - computed = _computed || getStyles( elem ), - - // getPropertyValue is only needed for .css('filter') in IE9, see #12537 - ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, - style = elem.style; - - if ( computed ) { - - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right - // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels - // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values - if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret; - }; -} else if ( document.documentElement.currentStyle ) { - getStyles = function( elem ) { - return elem.currentStyle; - }; - - curCSS = function( elem, name, _computed ) { - var left, rs, rsLeft, - computed = _computed || getStyles( elem ), - ret = computed ? computed[ name ] : undefined, - style = elem.style; - - // Avoid setting ret to empty string here - // so we don't default to auto - if ( ret == null && style && style[ name ] ) { - ret = style[ name ]; - } - - // From the awesome hack by Dean Edwards - // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 - - // If we're not dealing with a regular pixel number - // but a number that has a weird ending, we need to convert it to pixels - // but not position css attributes, as those are proportional to the parent element instead - // and we can't measure the parent instead because it might trigger a "stacking dolls" problem - if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { - - // Remember the original values - left = style.left; - rs = elem.runtimeStyle; - rsLeft = rs && rs.left; - - // Put in the new values to get a computed value out - if ( rsLeft ) { - rs.left = elem.currentStyle.left; - } - style.left = name === "fontSize" ? "1em" : ret; - ret = style.pixelLeft + "px"; - - // Revert the changed values - style.left = left; - if ( rsLeft ) { - rs.left = rsLeft; - } - } - - return ret === "" ? "auto" : ret; - }; -} - -function setPositiveNumber( elem, value, subtract ) { - var matches = rnumsplit.exec( value ); - return matches ? - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : - value; -} - -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i = extra === ( isBorderBox ? "border" : "content" ) ? - // If we already have the right measurement, avoid augmentation - 4 : - // Otherwise initialize for horizontal or vertical properties - name === "width" ? 1 : 0, - - val = 0; - - for ( ; i < 4; i += 2 ) { - // both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); - } - - if ( isBorderBox ) { - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // at this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } else { - // at this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // at this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - return val; -} - -function getWidthOrHeight( elem, name, extra ) { - - // Start with offset property, which is equivalent to the border-box value - var valueIsBorderBox = true, - val = name === "width" ? elem.offsetWidth : elem.offsetHeight, - styles = getStyles( elem ), - isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // some non-html elements return undefined for offsetWidth, so check for null/undefined - // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 - // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 - if ( val <= 0 || val == null ) { - // Fall back to computed then uncomputed css if necessary - val = curCSS( elem, name, styles ); - if ( val < 0 || val == null ) { - val = elem.style[ name ]; - } - - // Computed unit is not pixels. Stop here and return. - if ( rnumnonpx.test(val) ) { - return val; - } - - // we need the check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); - - // Normalize "", auto, and prepare for extra - val = parseFloat( val ) || 0; - } - - // use the active box-sizing model to add/subtract irrelevant styles - return ( val + - augmentWidthOrHeight( - elem, - name, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles - ) - ) + "px"; -} - -// Try to determine the default display value of an element -function css_defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - // Use the already-created iframe if possible - iframe = ( iframe || - jQuery(""); - printFrame = $("
"); - printFrame.attr("name", printFrameName); - //printFrame.appendTo(this.groupdocsViewerWrapper); - printFrame.appendTo(bodyElement); - } - else - printFrame.empty(); - - this.printImageElements.length = 0; - var pageCount = data.page_count; - - if (!data.lic && pageCount > 3) - pageCount = 3; - - var imgElement; - for (var pageNum = 0; pageNum < pageCount; pageNum++) { - imgElement = $("").appendTo(printFrame); - this.printImageElements.push(imgElement); - } - - if (!data.lic && groupdocsViewerWrapper.find(".licBanner").length == 0) { - viewerMainWrapper.addClass("viewer_mainwrapper_trial"); - //viewerMainWrapper.css("top", "94px"); - - this.licElement = $("
"); - this.licElement.addClass("banner_trial"); - if (!this.showHeader) - this.licElement.css("top", "0"); - - var unlicensedMessage = this._getLocalizedString("This viewer has been created using an unlicensed version of ", "UnlicensedViewer"); - this.licElement.html(unlicensedMessage + " GroupDocs Viewer for .NET "); - this.licElement.appendTo(groupdocsViewerWrapper); - - if (!this.showHeader) - viewerMainWrapper.css("top", this.licElement.height() + "px"); - this.resizeHandler(); - } - }, - - documentLoadCompleteHandler: function (data, groupdocsViewerWrapper, viewerMainWrapper) { - var self = this; - if (this.showImageWidth) { - alert("Image width: " + data.page_size.Width); - } - - this.downloadUrl = data.url; - this.pdfDownloadUrl = data.pdfDownloadUrl; - this.pdfPrintUrl = data.pdfPrintUrl; - this.documentPath = data.guid; - var downloadButton = groupdocsViewerWrapper.find(".btn_download"); - var printButton = groupdocsViewerWrapper.find(".print_button"); - downloadButton.unbind(); - printButton.unbind(); - //var printFrame = this.groupdocsViewerWrapper.find("iframe[name=groupdocsPrintFrame]"); - //printFrame.remove(); - - downloadButton.bind({ - click: function () { - self._downloadDocument(); - return false; - } - }); - - //var printFrameLoaded = false; - printButton.bind({ - click: function () { - self._printDocument(); - return false; - } - }); - }, - - documentSinglePagedHandler: function (isDocumentSinglePaged, navigationWrapper) { - if (this.showPaging) { - if (isDocumentSinglePaged) - navigationWrapper.hide(); - else - navigationWrapper.show(); - } - }, - - _localizeElements: function () { - var self = this; - if (this.localizedStrings != null) { - self.element.find("[data-localize],[data-localize-ph],[data-localize-tooltip]").each(function () { - var that = $(this); - var localizationKey = that.attr("data-localize"); - var localizationTextValue; - if (localizationKey) { - localizationTextValue = self.localizedStrings[localizationKey]; - that.text(localizationTextValue); - } - else { - localizationKey = that.attr("data-localize-ph"); - if (localizationKey) { - localizationTextValue = self.localizedStrings[localizationKey]; - that.attr("placeholder", localizationTextValue); - } - else { - localizationKey = that.attr("data-localize-tooltip"); - if (localizationKey) { - localizationTextValue = self.localizedStrings[localizationKey]; - that.attr("data-tooltip", localizationTextValue); - } - } - } - }); - } - }, - - getScrollbarWidth: function () { - var scrollbarWidth = null; - - // Create the measurement node - var scrollDivJquery = $("
").css("width", "100px").css("height", "100px") - .css("overflow", "scroll").css("position", "absolute").css("top", "-9999px"); - var scrollDiv = scrollDivJquery[0]; - //scrollDiv.className = "scrollbar-measure"; - document.body.appendChild(scrollDiv); - - // Get the scrollbar width - scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; - - // Delete the DIV - document.body.removeChild(scrollDiv); - return scrollbarWidth; - }, - - resizeHandler: function () { - if (this.showHeader) { - var viewerHeaderNewHeight = this.viewerHeader.outerHeight(true); - - //if (viewerHeaderNewHeight != this.viewerHeaderHeight) { - var licElementHeight = 0; - if (this.licElement) { - licElementHeight = this.licElement.height(); - } - - if (viewerHeaderNewHeight != this.viewerMainWrapper.position().top - licElementHeight) { - var newTop = viewerHeaderNewHeight; - - if (this.licElement) { - this.licElement.css("top", newTop.toString() + "px"); - newTop += licElementHeight; - } - this.viewerMainWrapper.css("top", newTop.toString() + "px"); - //this.viewerHeaderHeight = viewerHeaderNewHeight; - if (this.viewMode == this.viewModes.BookMode) - this.viewerAdapter.docViewerPageFlipViewModel.reInitSelectable(); - else { - this.viewerAdapter.docViewerViewModel.reInitSelectable(); - } - //this.viewerAdapter.docViewerViewModel.reInitCanvasOffset(); - } - } - if (this.useInnerThumbnails) { - var thumbnailPanelWidth = 0; - var thumbnailsViewModel = this.viewerAdapter.thumbnailsViewModel; - if (thumbnailsViewModel) - thumbnailPanelWidth = thumbnailsViewModel.getThumbnailsPanelWidth(); - if (this.viewMode == this.viewModes.BookMode) - this.viewerAdapter.docViewerPageFlipViewModel.resizeViewerElement(thumbnailPanelWidth); - else - this.viewerAdapter.docViewerViewModel.resizeViewerElement(thumbnailPanelWidth); - } - else { - this.viewerAdapter.docViewerViewModel.loadImagesForVisiblePages(); - } - - this._setFitWidthAndHeightValues(); - }, - - resizeHandlerWithDelay: function () { - //if (this.browserIsInternetExplorer) { - if (this.resizeTimeoutId) - clearTimeout(this.resizeTimeoutId); - var self = this; - this.resizeTimeoutId = window.setTimeout(function () { - self.resizeHandler(); - }, 1000); - //} - }, - - setWidth: function (width) { - this.groupdocsViewerWrapper.width(width); - //this.loadImagesForVisiblePages(); - //this.loadImagesForVisiblePagesIe(); - this.resizeHandler(); - this.resizeHandlerWithDelay(); - }, - - setHeight: function (height) { - this.groupdocsViewerWrapper.height(height); - this.resizeHandler(); - this.resizeHandlerWithDelay(); - }, - - _showFileOpenDialog: function () { - var self = this; - this.fileOpenDialogWrapper.addClass("in"); - this.fileOpenDialogWrapper.show(); - - this.backdrop = $('
a",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="
t
",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj; -return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="
",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&>(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X
","
"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l) -}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("");n("body").append(t),t.remove(),t=null},f)),i++)},cancel:function(){i===1&&t.clearInterval(u),i>0&&i--}}}();r.transports.foreverFrame={name:"foreverFrame",supportsKeepAlive:!0,timeOut:3e3,start:function(r,f,e){var o=this,h=i.foreverFrame.count+=1,c,s=n("");if(t.EventSource){e&&(r.log("This browser supports SSE, skipping Forever Frame."),e());return}u.prevent(),c=i.getUrl(r,this.name),c+="&frameId="+h,n("body").append(s),s.prop("src",c),i.foreverFrame.connections[h]=r,r.log("Binding to iframe's readystatechange event."),s.bind("readystatechange",function(){n.inArray(this.readyState,["loaded","complete"])>=0&&(r.log("Forever frame iframe readyState changed to "+this.readyState+", reconnecting"),o.reconnect(r))}),r.frame=s[0],r.frameId=h,f&&(r.onSuccess=f),t.setTimeout(function(){r.onSuccess&&(r.log("Failed to connect using forever frame source, it timed out after "+o.timeOut+"ms."),o.stop(r),e&&e())},o.timeOut)},reconnect:function(n){var r=this;t.setTimeout(function(){if(n.frame&&i.ensureReconnectingState(n)){var u=n.frame,t=i.getUrl(n,r.name,!0)+"&frameId="+n.frameId;n.log("Updating iframe src to '"+t+"'."),u.src=t}},n.reconnectDelay)},lostConnection:function(n){this.reconnect(n)},send:function(n,t){i.ajaxSend(n,t)},receive:function(t,r){var u;i.processMessages(t,r),t.frameMessageCount=(t.frameMessageCount||0)+1,t.frameMessageCount>50&&(t.frameMessageCount=0,u=t.frame.contentWindow||t.frame.contentDocument,u&&u.document&&n("body",u.document).empty())},stop:function(t){var r=null;if(u.cancel(),t.frame){if(t.frame.stop)t.frame.stop();else try{r=t.frame.contentWindow||t.frame.contentDocument,r.document&&r.document.execCommand&&r.document.execCommand("Stop")}catch(f){t.log("SignalR: Error occured when stopping foreverFrame transport. Message = "+f.message)}n(t.frame).remove(),delete i.foreverFrame.connections[t.frameId],t.frame=null,t.frameId=null,delete t.frame,delete t.frameId,t.log("Stopping forever frame")}},abort:function(n,t){i.ajaxAbort(n,t)},getConnection:function(n){return i.foreverFrame.connections[n]},started:function(t){t.onSuccess?(t.onSuccess(),t.onSuccess=null,delete t.onSuccess):e(t,r.connectionState.reconnecting,r.connectionState.connected)===!0&&n(t).triggerHandler(f.onReconnect)}}}(window.jQuery,window),function(n,t){"use strict";var r=n.signalR,f=n.signalR.events,e=n.signalR.changeState,u=n.signalR.isDisconnecting,i=r.transports._logic;r.transports.longPolling={name:"longPolling",supportsKeepAlive:!1,reconnectDelay:3e3,init:function(n,r){var e=this,f,o=function(i){u(n)===!1&&(n.log("SignalR: Server ping failed because '"+i+"', re-trying ping."),t.setTimeout(f,e.reconnectDelay))};n.log("SignalR: Initializing long polling connection with server."),f=function(){i.pingServer(n,e.name).done(r).fail(o)},f()},start:function(o,s){var l=this,v=!1,y=function(){v||(v=!0,s(),o.log("Longpolling connected"))},a=0,c=null,p=function(i){t.clearTimeout(c),c=null,e(o,r.connectionState.reconnecting,r.connectionState.connected)===!0&&(o.log("Raising the reconnect event"),n(i).triggerHandler(f.onReconnect))},w=36e5;o.pollXhr&&(o.log("Polling xhr requests already exists, aborting."),o.stop()),l.init(o,function(){o.messageId=null,t.setTimeout(function(){(function e(s,h){var k=s.messageId,d=k===null,v=!d,g=!h,b=i.getUrl(s,l.name,v,g);u(s)!==!0&&(o.log("Attempting to connect to '"+b+"' using longPolling."),s.pollXhr=n.ajax({url:b,global:!1,cache:!1,type:"GET",dataType:o.ajaxDataType,contentType:o.contentType,success:function(r){var o=0,f;(a=0,c!==null&&p(),y(),r&&(f=i.maximizePersistentResponse(r)),i.processMessages(s,r),f&&n.type(f.LongPollDelay)==="number"&&(o=f.LongPollDelay),f&&f.Disconnect)||u(s)!==!0&&(o>0?t.setTimeout(function(){e(s,!1)},o):e(s,!1))},error:function(u,h){if(t.clearTimeout(c),c=null,h==="abort"){o.log("Aborted xhr requst.");return}a++,o.state!==r.connectionState.reconnecting&&(o.log("An error occurred using longPolling. Status = "+h+". "+u.responseText),n(s).triggerHandler(f.onError,[u.responseText])),i.ensureReconnectingState(s),l.init(s,function(){e(s,!0)})}}),v&&h===!0&&(c=t.setTimeout(function(){p(s)},Math.min(1e3*(Math.pow(2,a)-1),w))))})(o),t.setTimeout(function(){y()},250)},250)})},lostConnection:function(){throw new Error("Lost Connection not handled for LongPolling");},send:function(n,t){i.ajaxSend(n,t)},stop:function(n){n.pollXhr&&(n.pollXhr.abort(),n.pollXhr=null,delete n.pollXhr)},abort:function(n,t){i.ajaxAbort(n,t)}}}(window.jQuery,window),function(n,t){"use strict";function f(n){return n+s}function h(n,t,i){for(var f=n.length,u=[],r=0;r=1)){o.now=Math.min(i[c.axis]-j[c.axis],Math.max(0,o.start+((k?a.pageX:a.pageY)-p.start)));n=o.now*h.ratio;g.obj.css(l,-n);j.obj.css(l,o.now)}return false}function v(b){a(document).unbind("mousemove",w);a(document).unbind("mouseup",v);j.obj.unbind("mouseup",v);document.ontouchmove=j.obj[0].ontouchend=document.ontouchend=null;return false}function u(b){if(!(g.ratio>=1)){var b=b||window.event;var d=b.wheelDelta?b.wheelDelta/120:-b.detail/3;n-=d*c.wheel;n=Math.min(g[c.axis]-f[c.axis],Math.max(0,n));j.obj.css(l,n/h.ratio);g.obj.css(l,-n);b=a.event.fix(b);b.preventDefault()}}function t(b){p.start=k?b.pageX:b.pageY;var c=parseInt(j.obj.css(l));o.start=c=="auto"?0:c;a(document).bind("mousemove",w);document.ontouchmove=function(b){a(document).unbind("mousemove");w(b.touches[0])};a(document).bind("mouseup",v);j.obj.bind("mouseup",v);j.obj[0].ontouchend=document.ontouchend=function(b){a(document).unbind("mouseup");j.obj.unbind("mouseup");v(b.touches[0])};return false}function s(){j.obj.bind("mousedown",t);j.obj[0].ontouchstart=function(a){a.preventDefault();j.obj.unbind("mousedown");t(a.touches[0]);return false};i.obj.bind("mouseup",w);if(c.scroll&&this.addEventListener){e[0].addEventListener("DOMMouseScroll",u,false);e[0].addEventListener("mousewheel",u,false)}else if(c.scroll){e[0].onmousewheel=u}}function r(){j.obj.css(l,n/h.ratio);g.obj.css(l,-n);p["start"]=j.obj.offset()[l];var a=m.toLowerCase();h.obj.css(a,i[c.axis]);i.obj.css(a,i[c.axis]);j.obj.css(a,j[c.axis])}function q(){d.update();s();return d}var d=this;var e=b;var f={obj:a(".viewport",b)};var g={obj:a(".overview",b)};var h={obj:a(".scrollbar",b)};var i={obj:a(".track",h.obj)};var j={obj:a(".thumb",h.obj)};var k=c.axis=="x",l=k?"left":"top",m=k?"Width":"Height";var n,o={start:0,now:0},p={};this.update=function(a){f[c.axis]=f.obj[0]["offset"+m];g[c.axis]=g.obj[0]["scroll"+m];g.ratio=f[c.axis]/g[c.axis];h.obj.toggleClass("disable",g.ratio>=1);i[c.axis]=c.size=="auto"?f[c.axis]:c.size;j[c.axis]=Math.min(i[c.axis],Math.max(0,c.sizethumb=="auto"?i[c.axis]*g.ratio:c.sizethumb));h.ratio=c.sizethumb=="auto"?g[c.axis]/i[c.axis]:(g[c.axis]-f[c.axis])/(i[c.axis]-j[c.axis]);n=a=="relative"&&g.ratio<=1?Math.min(g[c.axis]-f[c.axis],Math.max(0,n)):0;n=a=="bottom"&&g.ratio<=1?g[c.axis]-f[c.axis]:isNaN(parseInt(a))?n:parseInt(a);r()};return q()}a.tiny=a.tiny||{};a.tiny.scrollbar={options:{axis:"y",wheel:40,scroll:true,size:"auto",sizethumb:"auto"}};a.fn.tinyscrollbar=function(c){var c=a.extend({},a.tiny.scrollbar.options,c);this.each(function(){a(this).data("tsb",new b(a(this),c))});return this};a.fn.tinyscrollbar_update=function(b){return a(this).data("tsb").update(b)};})(jQuery) \ No newline at end of file diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs.Demo.Annotation.Mvc/Scripts/libs/jquery.ui.touch-punch.min.js b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs.Demo.Annotation.Mvc/Scripts/libs/jquery.ui.touch-punch.min.js deleted file mode 100644 index 33d6f97..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs.Demo.Annotation.Mvc/Scripts/libs/jquery.ui.touch-punch.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - * jQuery UI Touch Punch 0.2.2 - * - * Copyright 2011, Dave Furfero - * Dual licensed under the MIT or GPL Version 2 licenses. - * - * Depends: - * jquery.ui.widget.js - * jquery.ui.mouse.js - */ -(function(b){b.support.touch="ontouchend" in document;if(!b.support.touch){return;}var c=b.ui.mouse.prototype,e=c._mouseInit,a;function d(g,h){if(g.originalEvent.touches.length>1){return;}g.preventDefault();var i=g.originalEvent.changedTouches[0],f=document.createEvent("MouseEvents");f.initMouseEvent(h,true,true,window,1,i.screenX,i.screenY,i.clientX,i.clientY,false,false,false,false,0,null);g.target.dispatchEvent(f);}c._touchStart=function(g){var f=this;if(a||!f._mouseCapture(g.originalEvent.changedTouches[0])){return;}a=true;f._touchMoved=false;d(g,"mouseover");d(g,"mousemove");d(g,"mousedown");};c._touchMove=function(f){if(!a){return;}this._touchMoved=true;d(f,"mousemove");};c._touchEnd=function(f){if(!a){return;}d(f,"mouseup");d(f,"mouseout");if(!this._touchMoved){d(f,"click");}a=false;};c._mouseInit=function(){var f=this;f.element.bind("touchstart",b.proxy(f,"_touchStart")).bind("touchmove",b.proxy(f,"_touchMove")).bind("touchend",b.proxy(f,"_touchEnd"));e.call(f);};})(jQuery); \ No newline at end of file diff --git a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs.Demo.Annotation.Mvc/Scripts/libs/knockout-3.2.0.js b/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs.Demo.Annotation.Mvc/Scripts/libs/knockout-3.2.0.js deleted file mode 100644 index bed24e1..0000000 --- a/Plugins/GroupDocs_Annotation_SharePointPlugin/GroupDocs.Demo.Annotation.Mvc/Scripts/libs/knockout-3.2.0.js +++ /dev/null @@ -1,111 +0,0 @@ -/*! - * Knockout JavaScript library v3.2.0 - * (c) Steven Sanderson - http://knockoutjs.com/ - * License: MIT (http://www.opensource.org/licenses/mit-license.php) - */ - -(function() {(function(p){var s=this||(0,eval)("this"),v=s.document,L=s.navigator,w=s.jQuery,D=s.JSON;(function(p){"function"===typeof require&&"object"===typeof exports&&"object"===typeof module?p(module.exports||exports,require):"function"===typeof define&&define.amd?define(["exports","require"],p):p(s.ko={})})(function(M,N){function H(a,d){return null===a||typeof a in R?a===d:!1}function S(a,d){var c;return function(){c||(c=setTimeout(function(){c=p;a()},d))}}function T(a,d){var c;return function(){clearTimeout(c); -c=setTimeout(a,d)}}function I(b,d,c,e){a.d[b]={init:function(b,h,k,f,m){var l,q;a.s(function(){var f=a.a.c(h()),k=!c!==!f,z=!q;if(z||d||k!==l)z&&a.Y.la()&&(q=a.a.ia(a.f.childNodes(b),!0)),k?(z||a.f.T(b,a.a.ia(q)),a.Ca(e?e(m,f):m,b)):a.f.ja(b),l=k},null,{o:b});return{controlsDescendantBindings:!0}}};a.h.ha[b]=!1;a.f.Q[b]=!0}var a="undefined"!==typeof M?M:{};a.b=function(b,d){for(var c=b.split("."),e=a,g=0;ga.a.m(b,m[c])&&b.push(m[c]);return b},Da:function(a,b){a=a||[];for(var c=[],d=0,f=a.length;df?d&&b.push(c):d||b.splice(f,1)},xa:e,extend:d,za:c,Aa:e?c:d,G:b,na:function(a,b){if(!a)return a;var c={},d;for(d in a)a.hasOwnProperty(d)&&(c[d]=b(a[d],d,a));return c},Ka:function(b){for(;b.firstChild;)a.removeNode(b.firstChild)},oc:function(b){b=a.a.S(b);for(var c=v.createElement("div"),d=0,f=b.length;df?a.setAttribute("selected",b):a.selected=b},cb:function(a){return null===a||a===p?"":a.trim?a.trim():a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},vc:function(a,b){a=a||"";return b.length>a.length?!1:a.substring(0,b.length)===b},cc:function(a,b){if(a===b)return!0;if(11===a.nodeType)return!1;if(b.contains)return b.contains(3===a.nodeType?a.parentNode:a);if(b.compareDocumentPosition)return 16==(b.compareDocumentPosition(a)& -16);for(;a&&a!=b;)a=a.parentNode;return!!a},Ja:function(b){return a.a.cc(b,b.ownerDocument.documentElement)},ob:function(b){return!!a.a.qb(b,a.a.Ja)},t:function(a){return a&&a.tagName&&a.tagName.toLowerCase()},n:function(b,c,d){var e=f&&k[c];if(!e&&w)w(b).bind(c,d);else if(e||"function"!=typeof b.addEventListener)if("undefined"!=typeof b.attachEvent){var g=function(a){d.call(b,a)},h="on"+c;b.attachEvent(h,g);a.a.w.da(b,function(){b.detachEvent(h,g)})}else throw Error("Browser doesn't support addEventListener or attachEvent"); -else b.addEventListener(c,d,!1)},oa:function(b,c){if(!b||!b.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var d;"input"===a.a.t(b)&&b.type&&"click"==c.toLowerCase()?(d=b.type,d="checkbox"==d||"radio"==d):d=!1;if(w&&!d)w(b).trigger(c);else if("function"==typeof v.createEvent)if("function"==typeof b.dispatchEvent)d=v.createEvent(h[c]||"HTMLEvents"),d.initEvent(c,!0,!0,s,0,0,0,0,0,!1,!1,!1,!1,0,b),b.dispatchEvent(d);else throw Error("The supplied element doesn't support dispatchEvent"); -else if(d&&b.click)b.click();else if("undefined"!=typeof b.fireEvent)b.fireEvent("on"+c);else throw Error("Browser doesn't support triggering events");},c:function(b){return a.C(b)?b():b},Xa:function(b){return a.C(b)?b.v():b},Ba:function(b,c,d){if(c){var f=/\S+/g,e=b.className.match(f)||[];a.a.u(c.match(f),function(b){a.a.ea(e,b,d)});b.className=e.join(" ")}},bb:function(b,c){var d=a.a.c(c);if(null===d||d===p)d="";var f=a.f.firstChild(b);!f||3!=f.nodeType||a.f.nextSibling(f)?a.f.T(b,[b.ownerDocument.createTextNode(d)]): -f.data=d;a.a.fc(b)},Mb:function(a,b){a.name=b;if(7>=f)try{a.mergeAttributes(v.createElement(""),!1)}catch(c){}},fc:function(a){9<=f&&(a=1==a.nodeType?a:a.parentNode,a.style&&(a.style.zoom=a.style.zoom))},dc:function(a){if(f){var b=a.style.width;a.style.width=0;a.style.width=b}},sc:function(b,c){b=a.a.c(b);c=a.a.c(c);for(var d=[],f=b;f<=c;f++)d.push(f);return d},S:function(a){for(var b=[],c=0,d=a.length;c","
"]||!c.indexOf("", -""]||(!c.indexOf("",""]||[0,"",""];b="ignored
"+c[1]+b+c[2]+"
";for("function"==typeof s.innerShiv?d.appendChild(s.innerShiv(b)):d.innerHTML=b;c[0]--;)d=d.lastChild;d=a.a.S(d.lastChild.childNodes)}return d};a.a.$a=function(b,d){a.a.Ka(b);d=a.a.c(d);if(null!==d&&d!==p)if("string"!=typeof d&&(d=d.toString()),w)w(b).html(d);else for(var c=a.a.ba(d),e=0;em[0]?h+m[0]:m[0]),h);for(var h=1===t?h:Math.min(d+(m[1]||0), -h),t=d+t-2,z=Math.max(h,t),u=[],r=[],E=2;dc;c++)b=b();return b})};a.toJSON=function(b,c,d){b=a.Qb(b);return a.a.eb(b,c,d)};c.prototype={save:function(b,c){var d=a.a.m(this.keys,b);0<=d?this.hb[d]=c:(this.keys.push(b),this.hb.push(c))},get:function(b){b=a.a.m(this.keys,b);return 0<=b?this.hb[b]:p}}})(); -a.b("toJS",a.Qb);a.b("toJSON",a.toJSON);(function(){a.i={q:function(b){switch(a.a.t(b)){case "option":return!0===b.__ko__hasDomDataOptionValue__?a.a.e.get(b,a.d.options.Va):7>=a.a.L?b.getAttributeNode("value")&&b.getAttributeNode("value").specified?b.value:b.text:b.value;case "select":return 0<=b.selectedIndex?a.i.q(b.options[b.selectedIndex]):p;default:return b.value}},ca:function(b,d,c){switch(a.a.t(b)){case "option":switch(typeof d){case "string":a.a.e.set(b,a.d.options.Va,p);"__ko__hasDomDataOptionValue__"in -b&&delete b.__ko__hasDomDataOptionValue__;b.value=d;break;default:a.a.e.set(b,a.d.options.Va,d),b.__ko__hasDomDataOptionValue__=!0,b.value="number"===typeof d?d:""}break;case "select":if(""===d||null===d)d=p;for(var e=-1,g=0,h=b.options.length,k;g=t){k&&c.push(n?{key:k,value:n.join("")}:{unknown:k});k=n=t=0;continue}}else if(58===r){if(!n)continue}else if(47===r&&z&&1a.a.L&&(a.g.register=function(a){return function(b){v.createElement(b); -return a.apply(this,arguments)}}(a.g.register),v.createDocumentFragment=function(b){return function(){var d=b(),g=a.g.Ub,h;for(h in g)g.hasOwnProperty(h)&&d.createElement(h);return d}}(v.createDocumentFragment))})();(function(){var b=0;a.d.component={init:function(d,c,e,g,h){function k(){var a=f&&f.dispose;"function"===typeof a&&a.call(f);m=null}var f,m;a.a.w.da(d,k);a.s(function(){var e=a.a.c(c()),g,n;"string"===typeof e?g=e:(g=a.a.c(e.name),n=a.a.c(e.params));if(!g)throw Error("No component name specified"); -var t=m=++b;a.g.get(g,function(b){if(m===t){k();if(!b)throw Error("Unknown component '"+g+"'");var c=b.template;if(!c)throw Error("Component '"+g+"' has no template");c=a.a.ia(c);a.f.T(d,c);var c=n,e=b.createViewModel;b=e?e.call(b,c,{element:d}):c;c=h.createChildContext(b);f=b;a.Ca(c,d)}})},null,{o:d});return{controlsDescendantBindings:!0}}};a.f.Q.component=!0})();var Q={"class":"className","for":"htmlFor"};a.d.attr={update:function(b,d){var c=a.a.c(d())||{};a.a.G(c,function(c,d){d=a.a.c(d);var h= -!1===d||null===d||d===p;h&&b.removeAttribute(c);8>=a.a.L&&c in Q?(c=Q[c],h?b.removeAttribute(c):b[c]=d):h||b.setAttribute(c,d.toString());"name"===c&&a.a.Mb(b,h?"":d.toString())})}};(function(){a.d.checked={after:["value","attr"],init:function(b,d,c){function e(){var e=b.checked,k=q?h():e;if(!a.Y.ma()&&(!f||e)){var g=a.k.B(d);m?l!==k?(e&&(a.a.ea(g,k,!0),a.a.ea(g,l,!1)),l=k):a.a.ea(g,k,e):a.h.pa(g,c,"checked",k,!0)}}function g(){var c=a.a.c(d());b.checked=m?0<=a.a.m(c,h()):k?c:h()===c}var h=a.Ib(function(){return c.has("checkedValue")? -a.a.c(c.get("checkedValue")):c.has("value")?a.a.c(c.get("value")):b.value}),k="checkbox"==b.type,f="radio"==b.type;if(k||f){var m=k&&a.a.c(d())instanceof Array,l=m?h():p,q=f||m;f&&!b.name&&a.d.uniqueName.init(b,function(){return!0});a.s(e,null,{o:b});a.a.n(b,"click",e);a.s(g,null,{o:b})}}};a.h.V.checked=!0;a.d.checkedValue={update:function(b,d){b.value=a.a.c(d())}}})();a.d.css={update:function(b,d){var c=a.a.c(d());"object"==typeof c?a.a.G(c,function(c,d){d=a.a.c(d);a.a.Ba(b,c,d)}):(c=String(c||""), -a.a.Ba(b,b.__ko__cssValue,!1),b.__ko__cssValue=c,a.a.Ba(b,c,!0))}};a.d.enable={update:function(b,d){var c=a.a.c(d());c&&b.disabled?b.removeAttribute("disabled"):c||b.disabled||(b.disabled=!0)}};a.d.disable={update:function(b,d){a.d.enable.update(b,function(){return!a.a.c(d())})}};a.d.event={init:function(b,d,c,e,g){var h=d()||{};a.a.G(h,function(k){"string"==typeof k&&a.a.n(b,k,function(b){var h,l=d()[k];if(l){try{var q=a.a.S(arguments);e=g.$data;q.unshift(e);h=l.apply(e,q)}finally{!0!==h&&(b.preventDefault? -b.preventDefault():b.returnValue=!1)}!1===c.get(k+"Bubble")&&(b.cancelBubble=!0,b.stopPropagation&&b.stopPropagation())}})})}};a.d.foreach={Eb:function(b){return function(){var d=b(),c=a.a.Xa(d);if(!c||"number"==typeof c.length)return{foreach:d,templateEngine:a.O.Oa};a.a.c(d);return{foreach:c.data,as:c.as,includeDestroyed:c.includeDestroyed,afterAdd:c.afterAdd,beforeRemove:c.beforeRemove,afterRender:c.afterRender,beforeMove:c.beforeMove,afterMove:c.afterMove,templateEngine:a.O.Oa}}},init:function(b, -d){return a.d.template.init(b,a.d.foreach.Eb(d))},update:function(b,d,c,e,g){return a.d.template.update(b,a.d.foreach.Eb(d),c,e,g)}};a.h.ha.foreach=!1;a.f.Q.foreach=!0;a.d.hasfocus={init:function(b,d,c){function e(e){b.__ko_hasfocusUpdating=!0;var f=b.ownerDocument;if("activeElement"in f){var g;try{g=f.activeElement}catch(h){g=f.body}e=g===b}f=d();a.h.pa(f,c,"hasfocus",e,!0);b.__ko_hasfocusLastValue=e;b.__ko_hasfocusUpdating=!1}var g=e.bind(null,!0),h=e.bind(null,!1);a.a.n(b,"focus",g);a.a.n(b,"focusin", -g);a.a.n(b,"blur",h);a.a.n(b,"focusout",h)},update:function(b,d){var c=!!a.a.c(d());b.__ko_hasfocusUpdating||b.__ko_hasfocusLastValue===c||(c?b.focus():b.blur(),a.k.B(a.a.oa,null,[b,c?"focusin":"focusout"]))}};a.h.V.hasfocus=!0;a.d.hasFocus=a.d.hasfocus;a.h.V.hasFocus=!0;a.d.html={init:function(){return{controlsDescendantBindings:!0}},update:function(b,d){a.a.$a(b,d())}};I("if");I("ifnot",!1,!0);I("with",!0,!1,function(a,d){return a.createChildContext(d)});var K={};a.d.options={init:function(b){if("select"!== -a.a.t(b))throw Error("options binding applies only to SELECT elements");for(;0a.a.L)var h=a.a.e.F(),k=a.a.e.F(),f=function(b){var c=this.activeElement;(c=c&&a.a.e.get(c,k))&&c(b)},m=function(b,c){var d=b.ownerDocument;a.a.e.get(d,h)||(a.a.e.set(d,h,!0),a.a.n(d,"selectionchange", -f));a.a.e.set(b,k,c)};a.d.textInput={init:function(b,c,f){function k(c,d){a.a.n(b,c,d)}function h(){var d=a.a.c(c());if(null===d||d===p)d="";v!==p&&d===v?setTimeout(h,4):b.value!==d&&(s=d,b.value=d)}function u(){y||(v=b.value,y=setTimeout(r,4))}function r(){clearTimeout(y);v=y=p;var d=b.value;s!==d&&(s=d,a.h.pa(c(),f,"textInput",d))}var s=b.value,y,v;10>a.a.L?(k("propertychange",function(a){"value"===a.propertyName&&r()}),8==a.a.L&&(k("keyup",r),k("keydown",r)),8<=a.a.L&&(m(b,r),k("dragend",u))): -(k("input",r),5>e&&"textarea"===a.a.t(b)?(k("keydown",u),k("paste",u),k("cut",u)):11>d?k("keydown",u):4>g&&(k("DOMAutoComplete",r),k("dragdrop",r),k("drop",r)));k("change",r);a.s(h,null,{o:b})}};a.h.V.textInput=!0;a.d.textinput={preprocess:function(a,b,c){c("textInput",a)}}})();a.d.uniqueName={init:function(b,d){if(d()){var c="ko_unique_"+ ++a.d.uniqueName.Zb;a.a.Mb(b,c)}}};a.d.uniqueName.Zb=0;a.d.value={after:["options","foreach"],init:function(b,d,c){if("input"!=b.tagName.toLowerCase()||"checkbox"!= -b.type&&"radio"!=b.type){var e=["change"],g=c.get("valueUpdate"),h=!1,k=null;g&&("string"==typeof g&&(g=[g]),a.a.ga(e,g),e=a.a.rb(e));var f=function(){k=null;h=!1;var e=d(),f=a.i.q(b);a.h.pa(e,c,"value",f)};!a.a.L||"input"!=b.tagName.toLowerCase()||"text"!=b.type||"off"==b.autocomplete||b.form&&"off"==b.form.autocomplete||-1!=a.a.m(e,"propertychange")||(a.a.n(b,"propertychange",function(){h=!0}),a.a.n(b,"focus",function(){h=!1}),a.a.n(b,"blur",function(){h&&f()}));a.a.u(e,function(c){var d=f;a.a.vc(c, -"after")&&(d=function(){k=a.i.q(b);setTimeout(f,0)},c=c.substring(5));a.a.n(b,c,d)});var m=function(){var e=a.a.c(d()),f=a.i.q(b);if(null!==k&&e===k)setTimeout(m,0);else if(e!==f)if("select"===a.a.t(b)){var g=c.get("valueAllowUnset"),f=function(){a.i.ca(b,e,g)};f();g||e===a.i.q(b)?setTimeout(f,0):a.k.B(a.a.oa,null,[b,"change"])}else a.i.ca(b,e)};a.s(m,null,{o:b})}else a.ra(b,{checkedValue:d})},update:function(){}};a.h.V.value=!0;a.d.visible={update:function(b,d){var c=a.a.c(d()),e="none"!=b.style.display; -c&&!e?b.style.display="":!c&&e&&(b.style.display="none")}};(function(b){a.d[b]={init:function(d,c,e,g,h){return a.d.event.init.call(this,d,function(){var a={};a[b]=c();return a},e,g,h)}}})("click");a.H=function(){};a.H.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource");};a.H.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock");};a.H.prototype.makeTemplateSource=function(b,d){if("string"==typeof b){d=d||v;var c= -d.getElementById(b);if(!c)throw Error("Cannot find template with ID "+b);return new a.r.l(c)}if(1==b.nodeType||8==b.nodeType)return new a.r.fa(b);throw Error("Unknown template type: "+b);};a.H.prototype.renderTemplate=function(a,d,c,e){a=this.makeTemplateSource(a,e);return this.renderTemplateSource(a,d,c)};a.H.prototype.isTemplateRewritten=function(a,d){return!1===this.allowTemplateRewriting?!0:this.makeTemplateSource(a,d).data("isRewritten")};a.H.prototype.rewriteTemplate=function(a,d,c){a=this.makeTemplateSource(a, -c);d=d(a.text());a.text(d);a.data("isRewritten",!0)};a.b("templateEngine",a.H);a.fb=function(){function b(b,c,d,k){b=a.h.Wa(b);for(var f=a.h.ha,m=0;ma.a.L?0:b.nodes)?b.nodes():null;if(d)return a.a.S(d.cloneNode(!0).childNodes);b=b.text();return a.a.ba(b)};a.O.Oa=new a.O;a.ab(a.O.Oa);a.b("nativeTemplateEngine",a.O);(function(){a.Sa=function(){var a=this.kc= -function(){if(!w||!w.tmpl)return 0;try{if(0<=w.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch(a){}return 1}();this.renderTemplateSource=function(b,e,g){g=g||{};if(2>a)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var h=b.data("precompiled");h||(h=b.text()||"",h=w.template(null,"{{ko_with $item.koBindingContext}}"+h+"{{/ko_with}}"),b.data("precompiled",h));b=[e.$data];e=w.extend({koBindingContext:e},g.templateOptions);e=w.tmpl(h, -b,e);e.appendTo(v.createElement("div"));w.fragments={};return e};this.createJavaScriptEvaluatorBlock=function(a){return"{{ko_code ((function() { return "+a+" })()) }}"};this.addTemplate=function(a,b){v.write("", - _appPath, _urlPrefix); - - _stylesheetTemplate = string.Format("", - _appPath, _urlPrefix); - } - - public override string ToString() - { - var html = new StringBuilder(); - - foreach (var script in _scriptsViewer) - { - html.AppendFormat(_scriptTemplate, string.Empty, script); - html.AppendLine(); - } - html.AppendFormat("", - _appPath + "Default.aspx"); - - html.Append(""); - - html.AppendFormat(_scriptTemplate, string.Empty, "/libs/GroupdocsViewer.all.js"); - - foreach (var script in _scripts) - { - html.AppendFormat(_scriptTemplate, string.Empty, script); - html.AppendLine(); - } - - foreach (var css in _stylesheets) - { - html.AppendFormat(_stylesheetTemplate, string.Empty, css); - html.AppendLine(); - } - - html.AppendFormat(@"", _appPath); - html.AppendLine(); - - html.AppendLine(""); - - return html.ToString(); - } - - string IHtmlString.ToHtmlString() - { - return ToString(); - } - } -} \ No newline at end of file diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/AnnotationWidget.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/AnnotationWidget.cs deleted file mode 100644 index 530da55..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/AnnotationWidget.cs +++ /dev/null @@ -1,908 +0,0 @@ -using System; -using System.IO; -using System.Linq; -using System.Text; -using System.Web; -using GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Options; -using AnnotationReviewerRights = GroupDocs.Annotation.Domain.AnnotationReviewerRights; - -namespace GroupDocs_Annotation_SharePoint_WebPart -{ - public class AnnotationWidget : IHtmlString - { - #region Fields - private static ApplicationPathFinder pathFinder = new ApplicationPathFinder(); - private string _storagePath = pathFinder.GetApplicationPath() + "_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/App_Data/"; // App_Data folder path - private const string _annotationWidgetClass = "groupdocsAnnotation"; - private const string _htmlTemplate = @" - "; - - private readonly IAuthenticationService _authSvc; - private readonly IAnnotationService _annotationSvc; - - protected AnnotationWidgetOptions _options = new AnnotationWidgetOptions(); - protected InputStream? _stream; - #endregion Fields - - - public AnnotationWidget(IAuthenticationService authSvc, IAnnotationService annotationSvc) - { - _authSvc = authSvc; - _annotationSvc = annotationSvc; - } - - /// - /// Sets an HTML DOM element identifier - /// - /// A DOM element identifier - /// An instance of the widget object - public AnnotationWidget ElementId(string id) - { - _options.ElementId = id; - return this; - } - - /// - /// Sets a file path to be opened on application startup - /// - /// A file path - /// An instance of the widget object - public AnnotationWidget FilePath(string path) - { - _options.FilePath = path; - return this; - } - - /// - /// Sets a document stream and its name to be opened - /// - /// The file stream - /// The file name - /// An instance of the widget object - public AnnotationWidget Stream(Stream stream, string fileName) - { - //Filename validation - if(string.IsNullOrWhiteSpace(fileName) == true) - { - throw new ArgumentException("Filename cannot be NULL or empty string"); - } - string tempFilename = fileName.Trim().ToLowerInvariant(); - if(tempFilename.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0) - { - throw new ArgumentException("Filename contains invalid characters"); - } - string[] illegalFilenames = - { "CON", "PRN", "AUX", "NUL", - "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", - "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9" }; - - if(illegalFilenames.Contains(tempFilename, StringComparer.InvariantCultureIgnoreCase)) - { - throw new ArgumentException("Filename is invalid"); - } - if(tempFilename.Length > 200) - { - throw new ArgumentException("Filename is too long"); - } - //Extension validation - string extension = Path.GetExtension(tempFilename); - if(extension == "") - { - throw new ArgumentException("Specified filename should contain extension"); - } - extension = extension.Trim().TrimStart(new char[1] { '.' }); - - //Defining a FileType - string[] supportedExtensions = Enum.GetNames(typeof(FileType)); - string[] cleared = Array.FindAll(supportedExtensions, s => s.Equals("Undefined", StringComparison.OrdinalIgnoreCase) == false).ToArray(); - - var definedFileType = FileType.Undefined; - - for(int i = 0; i < cleared.Length; i++) - { - string current = cleared[i]; - if(current.Equals(extension, StringComparison.OrdinalIgnoreCase) == true) - { - definedFileType = (FileType) Enum.Parse(typeof(FileType), current, true); - break; - } - } - - if(definedFileType == FileType.Undefined) - { - throw new ArgumentException("Extension '" + extension + "' is unknown or not supported"); - } - - _stream = new InputStream { Stream = stream, FileName = fileName, FileType = definedFileType }; - return this; - } - - /// - /// Sets a document stream and its content type to be opened - /// - /// The file stream - /// The stream content type - /// An instance of the widget object - public AnnotationWidget Stream(Stream stream, FileType fileType) - { - _stream = new InputStream { Stream = stream, FileType = fileType, FileName = Guid.NewGuid().ToString() }; - return this; - } - - /// - /// Sets the document global access rights - /// - /// The access rights value - /// - public AnnotationWidget AccessRights(AnnotationReviewerRights rights) - { - _options.AccessRights = rights; - return this; - } - - /// - /// Sets a width of the container - /// - /// A width value - /// An instance of the widget object - public AnnotationWidget Width(int width) - { - _options.Width = width; - return this; - } - - /// - /// Sets a height of the container - /// - /// - /// A height value - public AnnotationWidget Height(int height) - { - _options.Height = height; - return this; - } - - /// - /// Sets a quality of the page images - /// - /// A quality value - /// An instance of the widget object - public AnnotationWidget Quality(byte quality) - { - _options.Quality = quality; - return this; - } - - /// - /// Sets a flag specifying whether a right click is allowed for the container - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget EnableRightClickMenu(bool enabled) - { - _options.EnableRightClickMenu = enabled; - return this; - } - - /// - /// Sets a flag specifying whether the header is visible - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget ShowHeader(bool show) - { - _options.ShowHeader = show; - return this; - } - - /// - /// Sets a flag specifying whether the zooming widget is visible - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget ShowZoom(bool show) - { - _options.ShowZoom = show; - return this; - } - - /// - /// Sets a flag specifying whether the pagination widget is visible - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget ShowPaging(bool show) - { - _options.ShowPaging = show; - return this; - } - - - /// - /// Sets a flag specifying whether the file open button is visible - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget ShowFileExplorer(bool show) - { - _options.ShowFileExplorer = show; - return this; - } - - /// - /// Sets a flag specifying wheter the thumbnails pane is visible - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget ShowThumbnails(bool show) - { - _options.ShowThumbnails = show; - return this; - } - - /// - /// Specifies whether the annotation tools bar is visible - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget ShowToolbar(bool show) - { - _options.ShowToolbar = show; - return this; - } - - /// - /// Sets a flag specifying whether the thumbnails pane is opened on application startup - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget OpenThumbnails(bool open) - { - _options.OpenThumbnails = open; - return this; - } - - /// - /// Sets a flag specifying whether the page fits the container width on application startup - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget ZoomToFitWidth(bool fit) - { - _options.ZoomToFitWidth = fit; - return this; - } - - /// - /// Sets a flag specifying whether the page fits the container height on application startup - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget ZoomToFitHeight(bool fit) - { - _options.ZoomToFitHeight = fit; - return this; - } - - /// - /// Sets a zoom value on application startup - /// - /// A positive integer - /// An instance of the widget object - public AnnotationWidget Zoom(byte factor) - { - _options.Zoom = factor; - return this; - } - - /// - /// Sets a number of pages to load on application start - /// - /// A positive integer - /// An instance of the widget object - public AnnotationWidget PreloadPageCount(int count) - { - _options.PreloadPageCount = count; - return this; - } - - /// - /// Sets a flag specifying whether the right hand side pane is visible - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget EnableSidePanel(bool enable = true) - { - _options.EnableSidePanel = enable; - return this; - } - - /// - /// Sets a flag specifying whether the document is scrolled up when an annotation receives focus - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget ScrollOnFocus(bool scroll = true) - { - _options.ScrollOnFocus = scroll; - return this; - } - - /// - /// Sets a color for the text strikeout tool - /// - /// An integer color value - /// An instance of the widget object - public AnnotationWidget StrikeOutColor(int color) - { - _options.StrikeOutColor = color; - return this; - } - - /// - /// Sets a color for the text underline tool - /// - /// An integer color value - /// An instance of the widget object - public AnnotationWidget UnderlineColor(int color) - { - _options.UnderlineColor = color; - return this; - } - - /// - /// Sets a color for the highlight text tool - /// - /// An integer color value - /// An instance of the widget object - public AnnotationWidget HighlightColor(int color) - { - _options.HighlightColor = color; - return this; - } - - /// - /// Sets a background color for the text field annotation - /// - /// An integer color value - /// An instance of the widget object - public AnnotationWidget TextFieldBackgroundColor(int color) - { - _options.TextFieldBackgroundColor = color; - return this; - } - - /// - /// Sets a connecting line position used to connect an annotation with its icon on the side bar - /// - /// One of the allowed position values - /// An instance of the widget object - public AnnotationWidget ConnectorPos(ConnectorPosition position = ConnectorPosition.Middle) - { - _options.ConnectorPos = position; - return this; - } - - /// - /// Sets a flag specifying whether an annotation reply is saved when an input box losses the focus - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget SaveReplyOnFocusLoss(bool saveReplyOnFocusLoss) - { - _options.SaveReplyOnFocusLoss = saveReplyOnFocusLoss; - return this; - } - - /// - /// Sets a flag specifying whether an annotation is activated by clicking on it - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget ClickableAnnotations(bool clickable) - { - _options.ClickableAnnotations = clickable; - return this; - } - - /// - /// Sets a flag specifying whether a connecting line should be removed for annotations without comments - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget DisconnectUncommented(bool disconnect) - { - _options.DisconnectUncommented = disconnect; - return this; - } - - /// - /// Sets a flag indicating whether a standard modal window is displayed when an error occurs - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget EnableStandardErrorHandling(bool enabled) - { - _options.EnableStandardErrorHandling = enabled; - return this; - } - - /// - /// Sets a flag indicating if annotations will be imported automatically after document opened - /// (works only with pdf documents) - /// - /// A flag value - /// An instance of the widget object - public AnnotationWidget EnableAnnotationsAutoImport(bool enabled) - { - _options.EnableAnnotationsAutoImport = enabled; - return this; - } - - /// - /// Sets annotation tools allowed for the application - /// - /// A combination of annotation tools - /// An instance of the widget object - public AnnotationWidget Tools(AnnotationTools tools) - { - _options.Tools = tools; - return this; - } - - /// - /// Sets area annotation tool drawing options - /// - /// The drawing options used to display area annotations - /// An instance of the widget object - public AnnotationWidget AreaToolOptions(DrawingOptions options) - { - _options.AreaToolOptions = options; - return this; - } - - /// - /// Sets polyline annotation tool drawing options - /// - /// The drawing options used to display polyline annotations - /// An instance of the widget object - public AnnotationWidget PolylineToolOptions(DrawingOptions options) - { - _options.PolylineToolOptions = options; - return this; - } - - /// - /// Sets arrow annotation tool drawing options - /// - /// The drawing options used to display polyline annotations - /// An instance of the widget object - public AnnotationWidget ArrowToolOptions(DrawingOptions options) - { - _options.ArrowToolOptions = options; - return this; - } - - - /// - /// - /// - /// The minimum page image width - /// An instance of the widget object - public AnnotationWidget MinimumImageWidth(int minWidth) - { - _options.MinimumImageWidth = minWidth; - return this; - } - - /// - /// Enables or disables the undo/redo functionality - /// - /// The flag indicating whether the undo/redo functionality is enabled or not - /// An instance of the widget object - public AnnotationWidget EnableUndo(bool enabled) - { - _options.UndoEnabled = enabled; - return this; - } - - /// - /// Sets the font settings for the typewriter tool - /// - /// The font size - /// The font family - /// An instance of the widget object - public AnnotationWidget TypewriterFont(float size, string family = null) - { - _options.TypewriterFont = new FontOptions { Size = size, Family = family }; - return this; - } - - /// - /// Sets the font settings for the watermark tool - /// - /// The font size - /// The font family - /// An instance of the widget object - public AnnotationWidget WatermarkFont(float size, string family = null) - { - _options.WatermarkFont = new FontOptions { Size = size, Family = family }; - return this; - } - - - /// - /// Sets the flag indicating if annotations can be selected when a tool other than the hand one is active or not - /// - /// The flag indicating the selection mode - /// An instance of the widget object - public AnnotationWidget AnyToolSelection(bool any) - { - _options.AnyToolSelection = any; - return this; - } - - /// - /// Enables or disables the tab-based navigation of annotations - /// - /// The flag indicating if the tab-based navigation is enabled or not - /// An instance of the widget object - public AnnotationWidget EnableTabNavigation(bool enabled) - { - _options.TabNavigationEnabled = enabled; - return this; - } - - /// - /// Enables or disables the tooltip for annotations - /// - /// The flag indicating if the tooltip is enabled or not - /// An instance of the widget object - public AnnotationWidget EnableTooltips(bool enabled) - { - _options.TooltipsEnabled = enabled; - return this; - } - - /// - /// Enables or disables the text selection feature when the hand tool is active - /// - /// The flag indicating if the text selection is enabled or not - /// An instance of the widget object - public AnnotationWidget EnableTextSelection(bool enabled) - { - _options.TextSelectionEnabled = enabled; - return this; - } - - /// - /// Sets text selection mode by words or chars - /// - /// The parameter which indicates the text selection mode - /// An instance of the widget object - public AnnotationWidget TextSelectionMode(TextSelectionMode mode) - { - _options.TextSelectionByCharModeEnabled = (mode == GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Options.TextSelectionMode.ByChars); - return this; - } - - /// - /// Sets custom watermark options - /// - /// An instance of the object containing the watermark options - /// An instance of the widget object - public AnnotationWidget Watermark(WatermarkOptions watermark) - { - _options.Watermark = watermark; - return this; - } - - /// - /// Sets the tool deactivation mode - /// - /// - /// An instance of the widget object - public AnnotationWidget ToolDeactivationMode(ToolDeactivationMode mode) - { - _options.ToolDeactivation = mode; - return this; - } - - /// - /// Searche for separate words. - /// - /// - /// An instance of the widget object - public AnnotationWidget SearchForSeparateWords(bool value) - { - _options.SearchForSeparateWords = value; - return this; - } - - public override string ToString() - { - if(_stream != null) - { - using(var fileStream = new FileStream(_storagePath + _stream.Value.FileName, FileMode.Create)) - { - _stream.Value.Stream.CopyTo(fileStream); - } - _options.FilePath = _stream.Value.FileName; - } - - if(_options.AccessRights != null && !string.IsNullOrEmpty(_options.FilePath)) - { - _annotationSvc.SetDocumentAccessRights( - System.Text.RegularExpressions.Regex.Replace(_options.FilePath, "\\\\+", "\\"), _options.AccessRights.Value); - } - - if(_options.EnableAnnotationsAutoImport) - { - _annotationSvc.ImportAnnotations(null, System.Text.RegularExpressions.Regex.Replace(_options.FilePath, "\\\\+", "\\")); - } - - return string.Format(_htmlTemplate, - _options.ElementId, - _annotationWidgetClass, - GetWidgetOptions()); - } - - public string ToHtmlString() - { - return ToString(); - } - - #region Private members - private string GetWidgetOptions() - { - StringBuilder sb = new StringBuilder(); - - const int minusPosition = 2; - bool localeSupported; - - - sb.Append("localizedStrings : null,"); - - sb.AppendFormat("width: {0},", _options.Width); - sb.AppendLine(); - - sb.AppendFormat("height: {0},", _options.Height); - sb.AppendLine(); - - sb.AppendFormat("fileId: '{0}',", _options.FilePath); - sb.AppendLine(); - - sb.AppendFormat("docViewerId: '{0}-doc-viewer',", _options.ElementId); - sb.AppendLine(); - - sb.AppendFormat("quality: {0},", _options.Quality); - sb.AppendLine(); - - sb.AppendFormat("enableRightClickMenu: {0},", _options.EnableRightClickMenu.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("showHeader: {0},", _options.ShowHeader.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("showZoom: {0},", _options.ShowZoom.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("showPaging: {0},", _options.ShowPaging.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("showFileExplorer: {0},", _options.ShowFileExplorer.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("showThumbnails: {0},", _options.ShowThumbnails.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("showToolbar: {0},", _options.ShowToolbar.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("openThumbnails: {0},", _options.OpenThumbnails.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("zoomToFitWidth: {0},", _options.ZoomToFitWidth.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("zoomToFitHeight: {0},", _options.ZoomToFitHeight.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("initialZoom: {0},", _options.Zoom); - sb.AppendLine(); - - sb.AppendFormat("preloadPagesCount: {0},", _options.PreloadPageCount); - sb.AppendLine(); - - sb.AppendFormat("enableSidePanel: {0},", _options.EnableSidePanel.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("scrollOnFocus: {0},", _options.ScrollOnFocus.ToString().ToLower()); - sb.AppendLine(); - - if(_options.StrikeOutColor != null) - { - sb.AppendFormat("strikeOutColor: '#{0,6:x6}',", _options.StrikeOutColor.Value); - sb.AppendLine(); - } - - if(_options.UnderlineColor != null) - { - sb.AppendFormat("underlineColor: '#{0,6:x6}',", _options.UnderlineColor.Value); - sb.AppendLine(); - } - - if(_options.HighlightColor >= 0) - { - sb.AppendFormat("highlightColor: '#{0,6:x6}',", _options.HighlightColor); - sb.AppendLine(); - } - - if(_options.TextFieldBackgroundColor != null) - { - sb.AppendFormat("textFieldBackgroundColor: '#{0,6:x6}',", _options.TextFieldBackgroundColor.Value); - sb.AppendLine(); - } - - sb.AppendFormat("enabledTools: {0},", _options.Tools.ToString("d")); - sb.AppendLine(); - - sb.AppendFormat("connectorPosition: {0},", _options.ConnectorPos.ToString("d")); - sb.AppendLine(); - - sb.AppendFormat("saveReplyOnFocusLoss: {0},", _options.SaveReplyOnFocusLoss.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("clickableAnnotations: {0},", _options.ClickableAnnotations.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("disconnectUncommented: {0},", _options.DisconnectUncommented.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("enableStandardErrorHandling: {0},", _options.EnableStandardErrorHandling.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("undoEnabled: {0},", _options.UndoEnabled.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("anyToolSelection: {0},", _options.AnyToolSelection.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("tabNavigationEnabled: {0},", _options.TabNavigationEnabled.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("tooltipsEnabled: {0},", _options.TooltipsEnabled.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("textSelectionEnabled: {0},", _options.TextSelectionEnabled.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("textSelectionByCharModeEnabled: {0},", _options.TextSelectionByCharModeEnabled.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("toolDeactivationMode: {0},", (byte) _options.ToolDeactivation); - sb.AppendLine(); - - if(_options.MinimumImageWidth > 0) - { - sb.AppendFormat("minimumImageWidth: {0},", _options.MinimumImageWidth); - sb.AppendLine(); - } - - if(_options.AreaToolOptions != null) - { - sb.AppendFormat("areaToolOptions: {0},", GetToolDrawingOptions(_options.AreaToolOptions)); - sb.AppendLine(); - } - - if(_options.PolylineToolOptions != null) - { - sb.AppendFormat("polylineToolOptions: {0},", GetToolDrawingOptions(_options.PolylineToolOptions)); - sb.AppendLine(); - } - - if(_options.ArrowToolOptions != null) - { - sb.AppendFormat("arrowToolOptions: {0},", GetToolDrawingOptions(_options.ArrowToolOptions)); - sb.AppendLine(); - } - - if(_options.TypewriterFont != null) - { - sb.AppendFormat("typewriterFont: {0},", GetToolFontOptions(_options.TypewriterFont)); - sb.AppendLine(); - } - - if(_options.Watermark != null) - { - sb.AppendFormat("watermarkText: '{0}',", _options.Watermark.Text); - sb.AppendLine(); - - if(_options.Watermark.Color != null) - { - sb.AppendFormat("watermarkColor: {0},", _options.Watermark.Color.Value.ToArgb()); - sb.AppendLine(); - } - - sb.AppendFormat("watermarkPosition: '{0}',", _options.Watermark.Position.ToString()); - sb.AppendLine(); - sb.AppendFormat("watermarkFontSize: {0},", _options.Watermark.FontSize); - sb.AppendLine(); - } - - - if(_options.Watermark != null) - { - sb.AppendFormat("textSelectionByCharModeEnabled: {0},", _options.TextSelectionByCharModeEnabled.ToString().ToLower()); - sb.AppendLine(); - } - - - sb.AppendLine("sideboarContainerSelector: 'div.comments_sidebar_wrapper',"); - sb.AppendLine("usePageNumberInUrlHash: false,"); - sb.AppendLine("textSelectionSynchronousCalculation: true,"); - sb.AppendLine("variableHeightPageSupport: true,"); - sb.AppendLine("useJavaScriptDocumentDescription: true,"); - sb.AppendLine("isRightPanelEnabled: true,"); - sb.AppendLine("createMarkup: true,"); - sb.AppendLine("use_pdf: 'true',"); - sb.AppendLine("_mode: 'annotatedDocument',"); - - sb.AppendLine("selectionContainerSelector: \"[name='selection-content']\","); - sb.AppendLine(); - - sb.AppendLine("graphicsContainerSelector: '.annotationsContainer',"); - sb.AppendLine(); - - sb.AppendFormat("searchForSeparateWords: {0},", _options.SearchForSeparateWords.ToString().ToLower()); - sb.AppendLine(); - - sb.AppendFormat("userName: '{0}',", _authSvc.UserName); - sb.AppendFormat("userId: '{0}'", _authSvc.UserKey); - sb.AppendLine(); - - return sb.ToString(); - } - - private static string GetToolDrawingOptions(DrawingOptions options) - { - return string.Format("{{ pen: {{ width: {0}, color: {1}, dashStyle: {2} }}, brush: {{ color: {3} }} }}", - options.PenWidth, - options.PenColor != null ? options.PenColor.ToString() : "null", - options.DashStyle.ToString("d"), - options.BrushColor != null ? options.BrushColor.ToString() : "null"); - } - - private static string GetToolFontOptions(FontOptions options) - { - return string.Format("{{ size: {0}, family: {1} }}", - options.Size, - string.IsNullOrEmpty(options.Family) ? "null" : string.Format("'{0}'", options.Family)); - } - #endregion Private members - - #region Nested types - protected struct InputStream - { - public Stream Stream - { - get; set; - } - public string FileName - { - get; set; - } - public FileType FileType - { - get; set; - } - } - #endregion Nested types - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/ApplicationPathFinder.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/ApplicationPathFinder.cs deleted file mode 100644 index 3d34e90..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/ApplicationPathFinder.cs +++ /dev/null @@ -1,86 +0,0 @@ -using System; -using System.Web; - -namespace GroupDocs_Annotation_SharePoint_WebPart -{ - public class ApplicationPathFinder - { - private static string _baseUrl; - - public string BaseUrl - { - get - { - return _baseUrl; - } - set - { - _baseUrl = value; - } - } - - public string GetApplicationPath() - { - string applicationPath; - string baseUrl = null; - - HttpContext context = HttpContext.Current; - if(context == null) // WCF - { - applicationPath = _baseUrl; - } - else - { - HttpApplicationState application = context.Application; - baseUrl = (string) application["GroupdocsBaseUrl"]; - - if(baseUrl == null) - { - HttpRequest request = context.Request; - applicationPath = string.Format("{0}{1}", GetApplicationHost(), request.ApplicationPath); - } - else - { - applicationPath = baseUrl; - } - } - - if(!applicationPath.EndsWith("/")) - applicationPath += "/"; - return applicationPath; - } - - public string GetApplicationHost() - { - string applicationHost; - HttpContext context = HttpContext.Current; - if(context == null) // WCF - { - applicationHost = _baseUrl; - } - else - { - HttpApplicationState application = HttpContext.Current.Application; - string baseUrl = (string) application["GroupdocsBaseUrl"]; - if(baseUrl == null) - { - HttpRequest request = HttpContext.Current.Request; - applicationHost = string.Format("{0}://{1}{2}", request.Url.Scheme, request.Url.Host, - request.Url.Port == 80 ? string.Empty : ":" + request.Url.Port); - } - else - { - Uri url; - if(Uri.TryCreate(baseUrl, UriKind.Absolute, out url)) - { - applicationHost = string.Format("{0}://{1}{2}", url.Scheme, url.Host, - url.Port == 80 ? string.Empty : ":" + url.Port); - } - else - applicationHost = baseUrl; - } - } - return applicationHost; - } - } -} \ No newline at end of file diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/DocumentOpenSubscriber.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/DocumentOpenSubscriber.cs deleted file mode 100644 index 38aa22b..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/DocumentOpenSubscriber.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Web; -using GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic; -using Microsoft.Practices.Unity; - -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic -{ - internal class DocumentOpenSubscriber - { - public void HandleEvent(string path, IAnnotationService svc) - { - var un = HttpContext.Current.Session["UserName"] != null ? HttpContext.Current.Session["UserName"].ToString() : ""; - //var svc = UnityConfig.GetConfiguredContainer().Resolve(); - if (!string.IsNullOrEmpty(un)) - { - // add user to the document collaborator list - svc.AddCollaborator(path, un, null, null, null); - } - else - { - svc.AddCollaborator(path, "GroupDocs@GroupDocs.com", "Anonym", "A.", null); // allow anonymous users to annotate on a document - } - } - } -} \ No newline at end of file diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/EmbeddedResourceManager.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/EmbeddedResourceManager.cs deleted file mode 100644 index 412d684..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/EmbeddedResourceManager.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System.IO; -using System.Reflection; - -namespace GroupDocs_Annotation_SharePoint_WebPart - -{ - public class EmbeddedResourceManager - { - private const string _namespace = "GroupDocs_Annotation_SharePoint_WebPart"; - private readonly Assembly _assembly = Assembly.GetExecutingAssembly(); - - public string GetScript(string resourceName) - { - resourceName = string.Format("{0}.Scripts.{1}", _namespace, resourceName.Replace('/', '.')); - string text; - var stream = _assembly.GetManifestResourceStream(resourceName); - if (stream == null) - { - return string.Empty; - } - using (var reader = new StreamReader(stream)) - { - text = reader.ReadToEnd(); - } - return text; - } - - public string GetCss(string resourceName) - { - resourceName = string.Format("{0}.CSS.{1}", _namespace, resourceName.Replace('/', '.')); - string text; - var stream = _assembly.GetManifestResourceStream(resourceName); - if(stream == null) - { - return string.Empty; - } - using(var reader = new StreamReader(stream)) - { - text = reader.ReadToEnd(); - } - return text; - } - - public byte[] GetBinaryResource(string resourceName) - { - byte[] resource; - resourceName = string.Format("{0}.Images.{1}", _namespace, resourceName.Replace('/', '.')); - var stream = _assembly.GetManifestResourceStream(resourceName); - if (stream == null) - { - return null; - } - using (var reader = new BinaryReader(stream)) - { - resource = reader.ReadBytes((int) stream.Length); - } - return resource; - } - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/FileBrowserTreeDataResponse.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/FileBrowserTreeDataResponse.cs deleted file mode 100644 index 742e9a8..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/FileBrowserTreeDataResponse.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Collections.Generic; - -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic -{ - public class FileBrowserTreeDataResponse - { - public FileBrowserTreeNode[] nodes { get; set; } - public int count { get; set; } - } - - public class FileBrowserTreeNode - { - public string path { get; set; } - public string name { get; set; } - public string type { get; set; } - public string docType { get; set; } - public string fileType { get; set; } - public long size { get; set; } - public long modifyTime { get; set; } - - public List nodes { get; set; } - } - - public class LoadFileBrowserTreeDataParameters : DocumentParameters - { - public int PageIndex { get; set; } - public int PageSize { get; set; } - public string OrderBy { get; set; } - public bool OrderAsc { get; set; } - public string Filter { get; set; } - public string FileTypes { get; set; } - public bool Extended { get; set; } - public string InstanceIdToken { get; set; } - public string Callback { get; set; } - } -} \ No newline at end of file diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/FileDataJsonSerializer.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/FileDataJsonSerializer.cs deleted file mode 100644 index 7d876af..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/FileDataJsonSerializer.cs +++ /dev/null @@ -1,228 +0,0 @@ -using System; -using System.Globalization; -using System.Linq; -using System.Text; -using System.Collections.Generic; -using GroupDocs.Annotation.Domain; - -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic -{ - /// - /// Class FileDataJsonSerializer. - /// - public class FileDataJsonSerializer - { - /// - /// The _file data - /// - private readonly List _fileData; - - /// - /// The _default culture - /// - private readonly CultureInfo _defaultCulture = CultureInfo.InvariantCulture; - - /// - /// Initializes a new instance of the class. - /// - /// The file data. - public FileDataJsonSerializer(List fileData) - { - _fileData = fileData; - } - - /// - /// Serializes this instance. - /// - /// System.String. - public string Serialize(bool isDefault) - { - - - var isCellsFileData = _fileData.Any(_ => !string.IsNullOrEmpty(_.Name)); - if (isCellsFileData && !isDefault) - return SerializeCells(); - - return SerializeDefault(); - } - - /// - /// Serializes the default. - /// - /// System.String. - private string SerializeDefault() - { - StringBuilder json = new StringBuilder(); - - json.Append(string.Format("{{\"maxPageHeight\":{0},\"widthForMaxHeight\":{1}", - _fileData[0].Height, _fileData[0].Width)); - json.Append(",\"pages\":["); - - int pageCount = _fileData.Count; - for (int i = 0; i < pageCount; i++) - { - PageData pageData = _fileData[i]; - - bool needSeparator = pageData.Number != 1; - if (needSeparator) - json.Append(","); - - AppendPage(pageData, json); - - bool includeRows = pageData.Rows.Count > 0; - if (includeRows) - { - json.Append(",\"rows\":["); - for (int j = 0; j < pageData.Rows.Count; j++) - { - bool appendRowSeaparator = j != 0; - if (appendRowSeaparator) - json.Append(","); - - AppendRow(pageData.Rows[j], json); - } - json.Append("]"); // rows - } - json.Append("}"); // page - } - json.Append("]"); // pages - json.Append("}"); // document - - return json.ToString(); - } - - /// - /// Serializes cells. - /// - /// System.String. - private string SerializeCells() - { - StringBuilder json = new StringBuilder(); - - json.Append("{\"sheets\":["); - - int pageCount = _fileData.Count; - for (int i = 0; i < pageCount; i++) - { - PageData pageData = _fileData[i]; - - bool needSeparator = pageData.Number != 1; - if (needSeparator) - json.Append(","); - - json.Append(string.Format("{{\"name\":\"{0}\"}}", pageData.Name)); - } - - json.Append("]"); // pages - json.Append("}"); // document - - return json.ToString(); - } - - /// - /// Appends the page. - /// - /// The page data. - /// The json. - private void AppendPage(PageData pageData, StringBuilder json) - { - json.Append(string.Format("{{\"w\":{0},\"h\":{1},\"number\":{2}", - pageData.Width.ToString(_defaultCulture), - pageData.Height.ToString(_defaultCulture), - pageData.Number.ToString(_defaultCulture))); - } - - /// - /// Appends the row. - /// - /// The row data. - /// The json. - private void AppendRow(RowData rowData, StringBuilder json) - { - string[] textCoordinates = new string[rowData.TextCoordinates.Count]; - for (int i = 0; i < rowData.TextCoordinates.Count; i++) - textCoordinates[i] = rowData.TextCoordinates[i].ToString(_defaultCulture); - - string[] characterCoordinates = new string[rowData.CharacterCoordinates.Count]; - for (int i = 0; i < rowData.CharacterCoordinates.Count; i++) - characterCoordinates[i] = rowData.CharacterCoordinates[i].ToString(_defaultCulture); - - json.Append(String.Format("{{\"l\":{0},\"t\":{1},\"w\":{2},\"h\":{3},\"c\":[{4}],\"s\":\"{5}\",\"ch\":[{6}]}}", - rowData.LineLeft.ToString(_defaultCulture), - rowData.LineTop.ToString(_defaultCulture), - rowData.LineWidth.ToString(_defaultCulture), - rowData.LineHeight.ToString(_defaultCulture), - string.Join(",", textCoordinates), - JsonEncode(rowData.Text), - string.Join(",", characterCoordinates))); - } - - /// - /// Appends the content control. - /// - /// The content control. - /// The json. - private void AppendContentControl(ContentControl contentControl, StringBuilder json) - { - json.Append(string.Format("{{\"title\":\"{0}\", \"startPage\":{1}, \"endPage\":{2}}}", - JsonEncode(contentControl.Title), - contentControl.StartPageNumber.ToString(_defaultCulture), - contentControl.EndPageNumber.ToString(_defaultCulture))); - } - - /// - /// Jsons the encode. - /// - /// The text. - /// System.String. - private string JsonEncode(string text) - { - if (string.IsNullOrEmpty(text)) - return string.Empty; - - int i; - int length = text.Length; - StringBuilder stringBuilder = new StringBuilder(length + 4); - for (i = 0; i < length; i += 1) - { - char c = text[i]; - switch (c) - { - case '\\': - case '"': - case '/': - stringBuilder.Append('\\'); - stringBuilder.Append(c); - break; - case '\b': - stringBuilder.Append("\\b"); - break; - case '\t': - stringBuilder.Append("\\t"); - break; - case '\n': - stringBuilder.Append("\\n"); - break; - case '\f': - stringBuilder.Append("\\f"); - break; - case '\r': - stringBuilder.Append("\\r"); - break; - default: - if (c < ' ') - { - string t = "000" + Convert.ToByte(c).ToString("X"); - stringBuilder.Append("\\u" + t.Substring(t.Length - 4)); - } - else - { - stringBuilder.Append(c); - } - break; - } - } - return stringBuilder.ToString(); - } - } -} \ No newline at end of file diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/FileType.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/FileType.cs deleted file mode 100644 index ea6875e..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/FileType.cs +++ /dev/null @@ -1,257 +0,0 @@ -namespace GroupDocs_Annotation_SharePoint_WebPart -{ - /// - /// Define file types - /// - //[Obfuscation(Feature = "internalization", Exclude = true, ApplyToMembers = true)] - public enum FileType : long - { - /// - /// Undefined - /// - Undefined = -1, - - /// - /// Doc - /// - Doc, - /// - /// Docm - /// - Docm, - /// - /// Docx - /// - Docx, - /// - /// Dot - /// - Dot, - /// - /// Dotm - /// - Dotm, - /// - /// Dotx - /// - Dotx, - /// - /// RTF - /// - Rtf, - /// - /// Text - /// - Txt, - /// - /// Odt - /// - Odt, - /// - /// Ods - /// - Ods, - /// - /// Ott - /// - Ott, - - /// - /// XLS - /// - Xls, - /// - /// XLSX - /// - Xlsx, - /// - /// XLSM - /// - Xlsm, - /// - /// XLSB - /// - Xlsb, - /// - /// CSV - /// - Csv, - /// - /// XLS2003 - /// - Xls2003, - - /// - /// PPT - /// - Ppt, - /// - /// PPS - /// - Pps, - /// - /// PPTX - /// - Pptx, - /// - /// PPSX - /// - Ppsx, - /// - /// Odp - /// - Odp, - - /// - /// PDF - /// - Pdf, - - /// - /// XML - /// - Xml, - /// - /// HTM - /// - Htm, - /// - /// HTML - /// - Html, - /// - /// HTML5 - /// - Html5, - /// - /// Epub - /// - Epub, - /// - /// XPS - /// - Xps, - /// - /// Tiff - /// - Tiff, - /// - /// Tif - /// - Tif, - /// - /// JPEG - /// - Jpeg, - /// - /// JPG - /// - Jpg, - /// - /// PNG - /// - Png, - /// - /// GIF - /// - Gif, - /// - /// BMP - /// - Bmp, - /// - /// icon - /// - Ico, - /// - /// PSD - /// - Psd, - - /// - /// Zip - /// - Zip, - /// - /// Rar - /// - Rar, - - /// - /// MPT - /// - Mpt, - /// - /// MPP - /// - Mpp, - - /// - /// MSG - /// - Msg, - /// - /// Eml - /// - Eml, - /// - /// Emlx - /// - Emlx, - /// - /// MHT - /// - Mht, - - /// - /// VSD - /// - Vsd, - /// - /// VSDX - /// - Vsdx, - /// - /// VSS - /// - Vss, - /// - /// VST - /// - Vst, - /// - /// VSX - /// - Vsx, - /// - /// VTX - /// - Vtx, - /// - /// VDW - /// - Vdw, - /// - /// VDX - /// - Vdx, - - /// - /// SVG - /// - Svg, - /// - /// js - /// - Js, - - /// - /// DXF - /// - Dxf, - /// - /// DWG - /// - Dwg - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/GetFileParameters.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/GetFileParameters.cs deleted file mode 100644 index 5f22a44..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/GetFileParameters.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic -{ - public class GetFileParameters : WatermarkedDocumentParameters - { - public bool GetPdf { get; set; } - public bool IsPrintable { get; set; } - public string DisplayName { get; set; } - public bool IgnoreDocumentAbsence { get; set; } - public bool UseHtmlBasedEngine { get; set; } - public bool SupportPageRotation { get; set; } - public string InstanceIdToken { get; set; } - } -} \ No newline at end of file diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/GetImageUrlsParameters.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/GetImageUrlsParameters.cs deleted file mode 100644 index bccbee8..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/GetImageUrlsParameters.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic -{ - public class GetImageUrlsParameters : WatermarkedDocumentParameters - { - public int? Width { get; set; } - public int FirstPage { get; set; } - public int? PageCount { get; set; } - public int? Quality { get; set; } - public bool UsePdf { get; set; } - public bool IgnoreDocumentAbsence { get; set; } - public bool UseHtmlBasedEngine { get; set; } - public bool SupportPageRotation { get; set; } - public string InstanceIdToken { get; set; } - public string Locale { get; set; } - public string Callback { get; set; } - } - - public class GetImageUrlsResponse : OperationStatusResponse - { - public string[] imageUrls { get; set; } - } -} \ No newline at end of file diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/HtmlHelperExtensions.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/HtmlHelperExtensions.cs deleted file mode 100644 index 1a14b66..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/HtmlHelperExtensions.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Web.Mvc; -using GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic; -using Microsoft.Practices.Unity; - -namespace GroupDocs_Annotation_SharePoint_WebPart -{ - public static class HtmlHelperExtensions - { - /// - /// Creates an instance of an object rendering annotation JavaScript code - /// - /// An instance of the JavaScript rendering object - public static AnnotationScripts AnnotationScripts() - { - return new AnnotationScripts(); - } - - /// - /// Creates an instance of an object creating annotation widget HTML code - /// - /// An instance of the HTML code creation object - public static AnnotationWidget Annotation() - { - return UnityConfig.GetConfiguredContainer().Resolve(); - } - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/IAnnotationService.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/IAnnotationService.cs deleted file mode 100644 index af9d795..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/IAnnotationService.cs +++ /dev/null @@ -1,257 +0,0 @@ -using System.IO; -using GroupDocs.Annotation.Domain; -using GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults; -using GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Options; -using AnnotationReplyInfo = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.Data.AnnotationReplyInfo; -using Point = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.DataGeometry.Point; -using Rectangle = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.DataGeometry.Rectangle; -using ReviewerInfo = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.Data.ReviewerInfo; - -namespace GroupDocs_Annotation_SharePoint_WebPart -{ - /// - /// Encapsulates methods for annotations management - /// - public interface IAnnotationService - { - /// - /// Returns a list of annotations for a document - /// - /// Socket connection identifier to validate user permissions for - /// The document path to get annotations for - /// An instance of an object containing information document annotations - ListAnnotationsResult ListAnnotations(string connectionId, string fileId); - - /// - /// Creates a new annotation for a document - /// - /// Socket connection identifier to validate user permissions for - /// The document path to create the annotation for - /// The annotation type - /// The annotation text message - /// The annotation bounds - /// The document page number to create the annotation at - /// The annotation left-top position - /// The annotation SVG path - /// The annotation drawing options (pen color, width etc.) - /// The annotation font options (size and family) - /// An instance of an object containing information about a created annotation - CreateAnnotationResult CreateAnnotation(string connectionId, string fileId, byte type, string message, Rectangle rectangle, int pageNumber, Point annotationPosition, string svgPath, DrawingOptions options, FontOptions font); - - /// - /// Removes an annotation from a document - /// - /// Socket connection identifier to validate user permissions for - /// The document path to remove the annotation from - /// The annotation global unique identifier - /// An instance of an object containing the removed annotation metadata - DeleteAnnotationResult DeleteAnnotation(string connectionId, string fileId, string annotationGuid); - - /// - /// Adds a reply to an annotation - /// - /// Socket connection identifier to validate user permissions for - /// The document path to add the reply to - /// The annotation global unique identifier - /// The reply text - /// The parent reply global unique identifier - /// An instance of an object containing the the added reply metadata - AddReplyResult AddAnnotationReply(string connectionId, string fileId, string annotationGuid, string message, string parentReplyGuid); - - /// - /// Removes a reply from an annotation - /// - /// Socket connection identifier to validate user permissions for - /// The document path to remove the reply from - /// The annotation global unique identifier - /// The reply global unique identifier - /// An instance of an object containing information about the removed reply - DeleteReplyResult DeleteAnnotationReply(string connectionId, string fileId, string annotationGuid, string replyGuid); - - /// - /// Updates a reply text - /// - /// Socket connection identifier to validate user permissions for - /// The document path to update the reply text for - /// The annotation global unique identifier - /// The reply global unique identifier - /// The text message to update - /// An instance of an object containing the operation result - EditReplyResult EditAnnotationReply(string connectionId, string fileId, string annotationGuid, string replyGuid, string message); - - /// - /// Restores a hierarchy of annotation replies - /// - /// Socket connection identifier to validate user permissions for - /// The document path to update the reply text for - /// The annotation global unique identifier - /// The list of annotation replies to restore - /// An instance of an object containing the operation result - RestoreRepliesResult RestoreAnnotationReplies(string connectionId, string fileId, string annotationGuid, AnnotationReplyInfo[] replies); - - /// - /// Resisizes the annotation - /// - /// Socket connection identifier to validate user permissions for - /// The document path to resize the annotation for - /// The annotation global unique identifier - /// The new width of the annotation - /// The new height of the annotation - /// An instance of an object containing the operation result - ResizeAnnotationResult ResizeAnnotation(string connectionId, string fileId, string annotationGuid, double width, double height); - - /// - /// Moves the annotation marker to a new position - /// - /// Socket connection identifier to validate user permissions for - /// The document path to move the annotation marker for - /// The annotation global unique identifier - /// The X coordinate of the annotation - /// The Y coordinate of the annotation - /// The document page number to move the annotation to - /// An instance of an object containing the operation result and annotation metadata - MoveAnnotationResult MoveAnnotationMarker(string connectionId, string fileId, string annotationGuid, double left, double top, int? pageNumber); - - /// - /// Updates the text field information - /// - /// Socket connection identifier to validate user permissions for - /// The document path to update the text field information for - /// The annotation global unique identifier - /// The text of the annotation - /// The font family used to render the text - /// The font size used to render the text - /// An instance of an object containing the operation result - SaveAnnotationTextResult SaveTextField(string connectionId, string fileId, string annotationGuid, string text, string fontFamily, double fontSize); - - /// - /// Updates the text field color - /// - /// Socket connection identifier to validate user permissions for - /// The document path to update the text field color for - /// The annotation global unique identifier - /// The font color of the text - /// An instance of an object containing the operation result - SaveAnnotationTextResult SetTextFieldColor(string connectionId, string fileId, string annotationGuid, int fontColor); - - /// - /// Updates the background color of the annotation - /// - /// Socket connection identifier to validate user permissions for - /// The document path to update the background color for - /// The annotation global unique identifier - /// The background color of the annotation - /// An instance of an object containing the operation result - SaveAnnotationTextResult SetAnnotationBackgroundColor(string connectionId, string fileId, string annotationGuid, int color); - - /// - /// Adds document collaborator - /// - /// The document path to add the collaborator to - /// The email address of the collaborator - /// The first name of the collaborator - /// The last name of the collaborator - /// The invitation text message to be sent to the collaborator - /// The annotation permissions for the collaborator - /// The file stream of the collaborator's avatar - /// An instance of an object containing the operation result and collaborators details - SetCollaboratorsResult AddCollaborator(string fileId, string reviewerEmail, string reviewerFirstName, string reviewerLastName, string reviewerInvitationMessage, AnnotationReviewerRights rights, Stream avatar = null); - - /// - /// Adds document collaborator - /// - /// The document path to add the collaborator to - /// The email address of the collaborator - /// The first name of the collaborator - /// The last name of the collaborator - /// The invitation text message to be sent to the collaborator - /// The file stream of the collaborator's avatar - /// An instance of an object containing the operation result and collaborators details - SetCollaboratorsResult AddCollaborator(string fileId, string reviewerEmail, string reviewerFirstName, string reviewerLastName, string reviewerInvitationMessage, Stream avatar = null); - - /// - /// Removes the document collaborator - /// - /// The document path to remove the collaborator from - /// The email address of the collaborator - /// An instance of an object containing the operation result and collaborators details - SetCollaboratorsResult DeleteCollaborator(string fileId, string reviewerEmail); - - /// - /// Returns the document collaborators information - /// - /// The document path to get collaborators for - /// An instance of an object containing the operation result and collaborators details - GetCollaboratorsResult GetCollaborators(string fileId); - - /// - /// Returns the collaborator's metadata - /// - /// The collaborator global unique identifier - /// An instance of an object containing the collaborator's details - ReviewerInfo GetCollaboratorMetadata(string userId); - - /// - /// Returns an annotation document collaborator's metadata - /// - /// The document path to get collaborator for - /// The collaborator name - /// An instance of an object containing the collaborator's details - ReviewerInfo GetDocumentCollaborator(string fileId, string userName); - - /// - /// Updates a collaborator display color - /// - /// The document path to update the collaborator display color for - /// The collaborator name - /// The display color - /// An instance of an object containing the collaborator's details - ReviewerInfo SetCollaboratorColor(string fileId, string userName, uint color); - - /// - /// Updates collaborator annotation permissions - /// - /// The document path to update the collaborator permission for - /// The collaborator name - /// The collaborator's annotation permissions - /// An instance of an object containing the collaborator's details - ReviewerInfo SetCollaboratorRights(string fileId, string userName, AnnotationReviewerRights rights); - - /// - /// Updates the document global annotation permissions - /// - /// The document path to update the permissions for - /// The annotation permissions - void SetDocumentAccessRights(string fileId, AnnotationReviewerRights rights); - - /// - /// Removes document annotations - /// - /// The document path to remove annotations from - void DeleteAnnotations(string fileId); - - /// - /// Imports annotations from a document into the internal storage - /// - /// Socket connection identifier to validate user permissions for - /// The document path to import annotations from - void ImportAnnotations(string connectionId, string fileId); - - /// - /// Exports annotations from the internal storage to the original document - /// - /// Socket connection identifier to validate user permissions for - /// The document path to export annotations to - /// A path to the result file containing exported annotations - string ExportAnnotations(string connectionId, string fileId); - - /// - /// Converts a document to PDF format - /// - /// Socket connection identifier to validate user permissions for - /// The document path to convert - /// A path to the converted file - string GetAsPdf(string connectionId, string fileId); - - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/IAuthenticationService.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/IAuthenticationService.cs deleted file mode 100644 index c70a75e..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/IAuthenticationService.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace GroupDocs_Annotation_SharePoint_WebPart -{ - /// - /// Encapsulates properties returning an authenticated and anonymous user names and keys - /// - public interface IAuthenticationService - { - /// - /// Gets an authenticated user key - /// - string UserKey { get; } - - /// - /// Gets an authenticated user name - /// - string UserName { get; } - - /// - /// Gets an anonymous user key - /// - string AnonymousUserKey { get; } - - /// - /// Gets an anonymous user name - /// - string AnonymousUserName { get; } - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/AnnotationTools.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/AnnotationTools.cs deleted file mode 100644 index 63ae337..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/AnnotationTools.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System; - -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Options -{ - [Flags] - public enum AnnotationTools - { - /// - /// The text selection tool - /// - Text = 1, - - /// - /// The rectangular area drawing tool - /// - Area = Text << 1, - - /// - /// The pointer tool - /// - Point = Area << 1, - - /// - /// The text strikout tool - /// - TextStrikeout = Point << 1, - - /// - /// The polyline drawing tool - /// - Polyline = TextStrikeout << 1, - - /// - /// The text field tool - /// - TextField = Polyline << 1, - - /// - /// The watermark tool - /// - Watermark = TextField << 1, - - /// - /// The text replacement tool - /// - TextReplacement = Watermark << 1, - - /// - /// The line drawing tool - /// - Arrow = TextReplacement << 1, - - /// - /// The text redaction tool - /// - TextRedaction = Arrow << 1, - - /// - /// The resources redaction tool - /// - ResourceRedaction = TextRedaction << 1, - - /// - /// The underline text tool - /// - TextUnderline = ResourceRedaction << 1, - - /// - /// The distance tool to measure the distance between two points - /// - Distance = TextUnderline << 1, - - /// - /// All the available tools - /// - All = (Text | Area | Point | TextStrikeout | Polyline | TextField | Watermark | TextReplacement | Arrow | TextRedaction | ResourceRedaction | TextUnderline | Distance) - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/AnnotationWidgetOptions.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/AnnotationWidgetOptions.cs deleted file mode 100644 index 445e024..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/AnnotationWidgetOptions.cs +++ /dev/null @@ -1,283 +0,0 @@ -using GroupDocs.Annotation.Domain; - -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Options -{ - /// - /// Encapsulates annotation widget properties - /// - public class AnnotationWidgetOptions - { - /// - /// A default zoom value - /// - public const byte DefZoom = 100; - - /// - /// A default quality value - /// - public const byte DefQuality = 90; - - public AnnotationWidgetOptions() - { - Zoom = DefZoom; - Quality = DefQuality; - ShowThumbnails = true; - ShowZoom = true; - ShowPaging = true; - EnableRightClickMenu = true; - EnableSidePanel = true; - ShowHeader = true; - ShowToolbar = true; - ScrollOnFocus = true; - EnableStandardErrorHandling = true; - UndoEnabled = true; - Tools = AnnotationTools.All; - HighlightColor = -1; - AnyToolSelection = true; - TooltipsEnabled = true; - EnableAnnotationsAutoImport = false; - SearchForSeparateWords = false; - } - - - #region Properties - - /// - /// An HTML DOM element identifier - /// - public string ElementId { get; set; } - - /// - /// A file path to be opened on application startup - /// - public string FilePath { get; set; } - - /// - /// A document global access rights - /// - public AnnotationReviewerRights? AccessRights { get; set; } - - /// - /// A width of the container - /// - public int Width { get; set; } - - /// - /// A height of the container - /// - public int Height { get; set; } - - /// - /// A quality of the page images - /// - public byte Quality { get; set; } - - /// - /// Specifies whether a right click is allowed for the container - /// - public bool EnableRightClickMenu { get; set; } - - /// - /// Specifies whether the header is visible - /// - public bool ShowHeader { get; set; } - - /// - /// Specifies whether the zooming widget is visible - /// - public bool ShowZoom { get; set; } - - /// - /// Specifies whether the pagination widget is visible - /// - public bool ShowPaging { get; set; } - - /// - /// Specifies whether the file open button is visible - /// - public bool ShowFileExplorer { get; set; } - - /// - /// Specifies wheter the thumbnails pane is visible - /// - public bool ShowThumbnails { get; set; } - - /// - /// Specifies whether the annotation tools bar is visible - /// - public bool ShowToolbar { get; set; } - - /// - /// Specifies whether the thumbnails pane is opened on application startup - /// - public bool OpenThumbnails { get; set; } - - /// - /// Specifies whether the page fits the container width on application startup - /// - public bool ZoomToFitWidth { get; set; } - - /// - /// Specifies whether the page fits the container height on application startup - /// - public bool ZoomToFitHeight { get; set; } - - /// - /// Zoom value on application startup - /// - public byte Zoom { get; set; } - - /// - /// A number of pages to load on application start - /// - public int PreloadPageCount { get; set; } - - /// - /// Specifies whether the right hand side pane is visible - /// - public bool EnableSidePanel { get; set; } - - /// - /// Specifies whether the document should be scrolled up when an annotation receives focus - /// - public bool ScrollOnFocus { get; set; } - - /// - /// A color for the text strikeout tool - /// - public int? StrikeOutColor { get; set; } - - /// - /// A color for the text underline tool - /// - public int? UnderlineColor { get; set; } - - /// - /// A color for the highlight text tool - /// - public int HighlightColor { get; set; } - - /// - /// A background color for the text field annotation - /// - public int? TextFieldBackgroundColor { get; set; } - - /// - /// Annotation tools allowed for the application - /// - public AnnotationTools Tools { get; set; } - - /// - /// A text strikeout tool mode which is used for the annotations export - /// - public StrikeoutToolMode StrikeoutMode { get; set; } - - /// - /// A connecting line position used to connect an annotation with its icon on the side bar - /// - public ConnectorPosition ConnectorPos { get; set; } - - /// - /// The area annotation tool drawing options - /// - public DrawingOptions AreaToolOptions { get; set; } - - /// - /// The polyline annotation tool drawing options - /// - public DrawingOptions PolylineToolOptions { get; set; } - - /// - /// The arrow annotation tool drawing options - /// - public DrawingOptions ArrowToolOptions { get; set; } - - /// - /// Specifies whether an annotation reply is saved when an input box losses the focus - /// - public bool SaveReplyOnFocusLoss { get; set; } - - /// - /// Specifies whether an annotation is activated by clicking on it - /// - public bool ClickableAnnotations { get; set; } - - /// - /// Specifies whether a connecting line should be removed for annotations without comments - /// - public bool DisconnectUncommented { get; set; } - - /// - /// The flag indicating whether a standard modal window is displayed when an error occurs - /// - public bool EnableStandardErrorHandling { get; set; } - - /// - /// Specifies the minimum width of the page images to be loaded from the server - /// - public int MinimumImageWidth { get; set; } - - /// - /// The flag indicating whether undo/redo feature is enabled or not - /// - public bool UndoEnabled { get; set; } - - /// - /// The font settings for the typewriter tool - /// - public FontOptions TypewriterFont { get; set; } - - /// - /// The font settings for the watermark tool - /// - public FontOptions WatermarkFont { get; set; } - - - /// - /// Gets or sets the flag indicating if annotations can be selected when a tool other than the hand one is active or not - /// - public bool AnyToolSelection { get; set; } - - /// - /// Gets or sets the flag indicating if a tab-based navigation is enabled for annotations - /// - public bool TabNavigationEnabled { get; set; } - - /// - /// Gets or sets the flag indicating if text selection is enabled when the hand tool is active - /// - public bool TextSelectionEnabled { get; set; } - - /// - /// Gets or sets the text selection mode - /// - public bool TextSelectionByCharModeEnabled { get; set; } - - /// - /// Gets or sets the flag indicating if a tooltip is enabled for annotations - /// - public bool TooltipsEnabled { get; set; } - - /// - /// Gets or sets custom watermark options - /// - public WatermarkOptions Watermark { get; set; } - - /// - /// Gets or sets the flag indicating if an active tool is automatically deactivated once an annotation is created - /// - public ToolDeactivationMode ToolDeactivation { get; set; } - - /// - /// Gets or sets the flag indicating if annotations will be imported automatically after document opened - /// (works only with pdf documents) - /// - public bool EnableAnnotationsAutoImport { get; set; } - - /// - /// Viewers ability for search symbols - /// - public bool SearchForSeparateWords { get; set; } - #endregion Properties - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/ConnectorPosition.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/ConnectorPosition.cs deleted file mode 100644 index 8cb96b9..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/ConnectorPosition.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Options -{ - public enum ConnectorPosition : byte - { - Middle, - Bottom - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/DrawingOptions.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/DrawingOptions.cs deleted file mode 100644 index bafec98..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/DrawingOptions.cs +++ /dev/null @@ -1,42 +0,0 @@ -using GroupDocs.Annotation.Domain; - -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Options -{ - - /// - /// Encapsulate a set of properties used to draw graphics annotations - /// - public class DrawingOptions - { - public DrawingOptions() - { - PenWidth = 1; - } - - /// - /// Stroke width in pixels, default is 1 - /// - public byte PenWidth { get; set; } - - /// - /// Stroke color, the reviewer color is used by default - /// - public int? PenColor { get; set; } - - /// - /// The style used for dashed lines - /// - public DashStyle DashStyle { get; set; } - - /// - /// The color of the brush used to fill the entire area - /// - public int? BrushColor { get; set; } - - public byte PenStyle - { - get { return (byte) this.DashStyle; } - set { this.DashStyle = (DashStyle) value; } - } - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/FontOptions.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/FontOptions.cs deleted file mode 100644 index 47e6678..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/FontOptions.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Options -{ - /// - /// Encapsulates the annotation tool font settings - /// - public class FontOptions - { - /// - /// Gets or sets the font size - /// - public float? Size { get; set; } - - /// - /// Gets or sets the font family - /// - public string Family { get; set; } - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/StrikeoutToolMode.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/StrikeoutToolMode.cs deleted file mode 100644 index ddcebc9..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/StrikeoutToolMode.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Options -{ - public enum StrikeoutToolMode : byte - { - Strikeout = 0, - Remove = 1 - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/TextSelectionMode.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/TextSelectionMode.cs deleted file mode 100644 index 3d4e954..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/TextSelectionMode.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Options -{ - public enum TextSelectionMode - { - ByWords = 0, - ByChars - } -} \ No newline at end of file diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/ToolDeactivationMode.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/ToolDeactivationMode.cs deleted file mode 100644 index e768705..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/ToolDeactivationMode.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Options -{ - public enum ToolDeactivationMode : byte - { - Manual, - Auto - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/WatermarkOptions.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/WatermarkOptions.cs deleted file mode 100644 index 6d9e7ea..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Options/WatermarkOptions.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Drawing; -using GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.Data; - -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Options -{ - public class WatermarkOptions - { - public string Text { get; set; } - public Color? Color { get; set; } - public WatermarkPosition Position { get; set; } - public float FontSize { get; set; } - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Responses/FailedResponse.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Responses/FailedResponse.cs deleted file mode 100644 index 6ca0f33..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Responses/FailedResponse.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; - -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Responses -{ - public class FailedResponse - { - //[DataMember(Name = "success")] - public bool success { get; set; } - - //[DataMember(Name = "Reason")] - public String Reason { get; set; } - - public FailedResponse() - { - success = false; - } - } - -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Responses/FileResponse.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Responses/FileResponse.cs deleted file mode 100644 index db85249..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Responses/FileResponse.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Responses -{ - public class FileResponse : FailedResponse - { - public FileResponse() - { - } - - public FileResponse(string path) - { - success = true; - this.fileId = path; - } - - public string fileId { get; set; } - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Responses/UrlResponse.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Responses/UrlResponse.cs deleted file mode 100644 index 0de40fb..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Responses/UrlResponse.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Responses -{ - public class UrlResponse : FailedResponse - { - public UrlResponse() - { - } - - public UrlResponse(string url) - { - success = true; - this.url = url; - } - - public string url { get; set; } - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Service/AnnotationService.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Service/AnnotationService.cs deleted file mode 100644 index 87aa7b5..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/Service/AnnotationService.cs +++ /dev/null @@ -1,844 +0,0 @@ -using System; -using System.Collections.Specialized; -using System.IO; -using System.Linq; -using System.Web; -using AutoMapper; -using GroupDocs.Annotation.Domain; -using GroupDocs.Annotation.Exception; -using GroupDocs.Annotation.Handler; -using GroupDocs.Annotation.Handler.Input.DataObjects; -using GroupDocs.Annotation.Handler.Input; -using GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Options; -using AddReplyResult = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.AddReplyResult; -using AnnotationInfo = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.Data.AnnotationInfo; -using AnnotationReplyInfo = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.Data.AnnotationReplyInfo; -using AnnotationReviewerRights = GroupDocs.Annotation.Domain.AnnotationReviewerRights; -using AnnotationType = GroupDocs.Annotation.Domain.AnnotationType; -using CreateAnnotationResult = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.CreateAnnotationResult; -using DeleteAnnotationResult = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.DeleteAnnotationResult; -using DeleteReplyResult = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.DeleteReplyResult; -using DocumentType = GroupDocs.Annotation.Domain.DocumentType; -using EditReplyResult = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.EditReplyResult; -using GetCollaboratorsResult = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.GetCollaboratorsResult; -using ListAnnotationsResult = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.ListAnnotationsResult; -using MoveAnnotationResult = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.MoveAnnotationResult; -using Point = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.DataGeometry.Point; -using Rectangle = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.DataGeometry.Rectangle; -using ResizeAnnotationResult = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.ResizeAnnotationResult; -using RestoreRepliesResult = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.RestoreRepliesResult; -using Result = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.Result; -using ReviewerInfo = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.Data.ReviewerInfo; -using SaveAnnotationTextResult = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.SaveAnnotationTextResult; -using SetCollaboratorsResult = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.SetCollaboratorsResult; -using TextFieldInfo = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.Data.TextFieldInfo; - -namespace GroupDocs_Annotation_SharePoint_WebPart.Service -{ - /// - /// Encapsulates methods for annotations management - /// - public class AnnotationService : IAnnotationService - { - #region Fields - private readonly IAnnotationBroadcaster _annotationBroadcaster; - private readonly IAuthenticationService _authenticationSvc; - private readonly IUserDataHandler _userSvc; - private readonly AnnotationImageHandler _annotator; - private readonly IDocumentDataHandler _documentSvc; - private readonly IInputDataHandler _fileSvc; - private static ApplicationPathFinder pathFinder = new ApplicationPathFinder(); - private string storagePath = pathFinder.GetApplicationPath() + "_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/App_Data"; - private IMapper _mapper; - #endregion Fields - - /// - /// Initializes a new instance of the AnnotationService class - /// - /// The annotation Socket events broadcasting object - /// The authentication service - /// The annotation management service - public AnnotationService(IAnnotationBroadcaster annotationBroadcaster, IAuthenticationService authenticationSvc, - AnnotationImageHandler annotator) - { - _annotationBroadcaster = annotationBroadcaster; - _authenticationSvc = authenticationSvc; - _userSvc = annotator.GetUserDataHandler(); - _annotator = annotator; - _documentSvc = annotator.GetDocumentDataHandler(); - _fileSvc = annotator.GetInputDataHandler(); - MapperConfiguration config = new MapperConfiguration(cfg => - { - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap() - .ForMember(dst => dst.X, opt => opt.MapFrom(src => src.HasValue ? src.Value.X : 0.0)) - .ForMember(dst => dst.Y, opt => opt.MapFrom(src => src.HasValue ? src.Value.Y : 0.0)); - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap(); - }); - _mapper = config.CreateMapper(); - } - - /// - /// Returns a list of annotations for a document - /// - /// Socket connection identifier to validate user permissions for - /// The document path to get annotations for - /// An instance of an object containing information document annotations - public ListAnnotationsResult ListAnnotations(string connectionId, string fileId) - { - var reviewer = _annotationBroadcaster.GetConnectionUser(connectionId); - if (reviewer == null) - { - throw new AnnotatorException("There is no such reviewer."); - } - var user = _userSvc.GetUserByGuid(reviewer.Value.UserGuid); - var document = GetDocument(fileId, user.Id); - if (document == null) - { - _documentSvc.Add(new Document - { - OwnerId = user.Id, - Name = fileId, - CreatedOn = DateTime.Now, - Guid = Guid.NewGuid().ToString() - }); - document = _documentSvc.GetDocument(fileId); - } - - return _mapper.Map(_annotator.GetAnnotations(document.Id, null, user.Id)); - } - - /// - /// Creates a new annotation for a document - /// - /// Socket connection identifier to validate user permissions for - /// The document path to create the annotation for - /// The annotation type - /// The annotation text message - /// The annotation bounds - /// The document page number to create the annotation at - /// The annotation left-top position - /// The annotation SVG path - /// The annotation drawing options (pen color, width etc.) - /// The annotation text font - /// An instance of an object containing information about a created annotation - public CreateAnnotationResult CreateAnnotation(string connectionId, string fileId, byte type, string message, - Rectangle rectangle, int pageNumber, Point annotationPosition, string svgPath, DrawingOptions options, FontOptions font) - { - var reviewer = _annotationBroadcaster.GetConnectionUser(connectionId); - if (reviewer == null) - { - throw new AnnotatorException("There is no such reviewer."); - } - - var user = _userSvc.GetUserByGuid(reviewer.Value.UserGuid); - var document = GetDocument(fileId, user.Id); - var collaboratorsInfo = _mapper.Map(_annotator.GetCollaborators(document.Id)); - var caller = collaboratorsInfo.Collaborators.FirstOrDefault(c => c.Guid == reviewer.Value.UserGuid); - - var annotation = new GroupDocs.Annotation.Domain.AnnotationInfo - { - Type = (AnnotationType)type, - Box = new GroupDocs.Annotation.Domain.Rectangle(rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height), - PageNumber = pageNumber, - AnnotationPosition = new GroupDocs.Annotation.Domain.Point(annotationPosition.X, annotationPosition.Y), - SvgPath = svgPath, - PenColor = options != null ? options.PenColor : -984833, - PenWidth = options != null ? (byte?)options.PenWidth : 1, - PenStyle = options != null ? (byte?)options.DashStyle : (byte?)DashStyle.Solid, - BackgroundColor = options != null ? options.BrushColor : -984833, - FontFamily = !string.IsNullOrEmpty(font.Family) ? "Arial" : "Calibri", - FontSize = font.Size != null ? font.Size : 4, - }; - - if (!string.IsNullOrWhiteSpace(message)) - { - annotation.Replies = new[] { new GroupDocs.Annotation.Domain.AnnotationReplyInfo { Message = message } }; - } - - var result = _annotator.CreateAnnotation(annotation, document.Id, user.Id); - - _annotationBroadcaster.CreateAnnotation( - collaboratorsInfo.Collaborators.Select(c => c.Guid).ToList(), - connectionId, - reviewer.Value.UserGuid, - caller != null ? caller.PrimaryEmail : _authenticationSvc.AnonymousUserName, - fileId, - annotation.Type, - result.Guid, - (byte)result.Access, - result.ReplyGuid, - pageNumber, - _mapper.Map(rectangle), - annotationPosition, - svgPath, - options, - font); - - return _mapper.Map(result); - } - - /// - /// Removes an annotation from a document - /// - /// Socket connection identifier to validate user permissions for - /// The document path to remove the annotation from - /// The annotation global unique identifier - /// An instance of an object containing the removed annotation metadata - public DeleteAnnotationResult DeleteAnnotation(string connectionId, string fileId, string annotationGuid) - { - var reviewer = _annotationBroadcaster.GetConnectionUser(connectionId); - if (reviewer == null) - { - throw new AnnotatorException("There is no such reviewer."); - } - - var user = _userSvc.GetUserByGuid(reviewer.Value.UserGuid); - var document = GetDocument(fileId, user.Id); - var collaboratorsInfo = _mapper.Map(_annotator.GetCollaborators(document.Id)); - - var annotation = _annotator.GetAnnotation(annotationGuid, document.Id, user.Id); - - var result = _annotator.DeleteAnnotation(annotation.Id, document.Id, user.Id); - _annotationBroadcaster.DeleteAnnotation(collaboratorsInfo.Collaborators.Select(c => c.Guid).ToList(), fileId, connectionId, annotationGuid); - - return _mapper.Map(result); - } - - /// - /// Adds a reply to an annotation - /// - /// Socket connection identifier to validate user permissions for - /// The document path to add the reply to - /// The annotation global unique identifier - /// The reply text - /// The parent reply global unique identifier - /// An instance of an object containing the the added reply metadata - public AddReplyResult AddAnnotationReply(string connectionId, string fileId, string annotationGuid, string message, string parentReplyGuid) - { - var reviewer = _annotationBroadcaster.GetConnectionUser(connectionId); - if (reviewer == null) - { - throw new AnnotatorException("There is no such reviewer."); - } - - var user = _userSvc.GetUserByGuid(reviewer.Value.UserGuid); - var document = GetDocument(fileId, user.Id); - var annotation = _annotator.GetAnnotation(annotationGuid, document.Id, user.Id); - var collaboratorsInfo = _annotator.GetCollaborators(document.Id); - - var caller = collaboratorsInfo.Collaborators.FirstOrDefault(c => c.Guid == reviewer.Value.UserGuid); - var callerName = caller != null && (!string.IsNullOrEmpty(caller.FirstName) || !string.IsNullOrEmpty(caller.LastName)) ? - string.Format("{0} {1}", caller.FirstName ?? string.Empty, caller.LastName ?? string.Empty).Trim() : - _authenticationSvc.AnonymousUserName; - - var result = _annotator.CreateAnnotationReply(annotation.Id, message, parentReplyGuid, document.Id, user.Id); - _annotationBroadcaster.AddAnnotationReply(collaboratorsInfo.Collaborators.Select(c => c.Guid).ToList(), - connectionId, reviewer.Value.UserGuid, callerName, annotationGuid, - result.ReplyGuid, parentReplyGuid, - result.ReplyDateTime, message); - return _mapper.Map(result); - } - - /// - /// Removes a reply from an annotation - /// - /// Socket connection identifier to validate user permissions for - /// The document path to remove the reply from - /// The annotation global unique identifier - /// The reply global unique identifier - /// An instance of an object containing information about the removed reply - public DeleteReplyResult DeleteAnnotationReply(string connectionId, string fileId, string annotationGuid, string replyGuid) - { - var reviewer = _annotationBroadcaster.GetConnectionUser(connectionId); - if (reviewer == null) - { - throw new AnnotatorException("There is no such reviewer."); - } - var user = _userSvc.GetUserByGuid(reviewer.Value.UserGuid); - var document = GetDocument(fileId, user.Id); - var collaboratorsInfo = _annotator.GetCollaborators(document.Id); - - var result = _annotator.DeleteAnnotationReply(replyGuid, document.Id, user.Id); - _annotationBroadcaster.DeleteAnnotationReply(collaboratorsInfo.Collaborators.Select(c => c.Guid).ToList(), connectionId, annotationGuid, replyGuid, _mapper.Map(result.Replies)); - - return _mapper.Map(result); - } - - /// - /// Updates a reply text - /// - /// Socket connection identifier to validate user permissions for - /// The document path to update the reply text for - /// The annotation global unique identifier - /// The reply global unique identifier - /// The text message to update - /// An instance of an object containing the operation result - public EditReplyResult EditAnnotationReply(string connectionId, string fileId, string annotationGuid, string replyGuid, string message) - { - var reviewer = _annotationBroadcaster.GetConnectionUser(connectionId); - if (reviewer == null) - { - throw new AnnotatorException("There is no such reviewer."); - } - var user = _userSvc.GetUserByGuid(reviewer.Value.UserGuid); - var document = GetDocument(fileId, user.Id); - var collaboratorsInfo = _annotator.GetCollaborators(document.Id); - - var result = _annotator.EditAnnotationReply(replyGuid, message, document.Id, user.Id); - _annotationBroadcaster.EditAnnotationReply(collaboratorsInfo.Collaborators.Select(c => c.Guid).ToList(), connectionId, annotationGuid, replyGuid, message); - - return _mapper.Map(result); - } - - - /// - /// Restores a hierarchy of annotation replies - /// - /// Socket connection identifier to validate user permissions for - /// The document path to update the reply text for - /// The annotation global unique identifier - /// The list of annotation replies to restore - /// An instance of an object containing the operation result - public RestoreRepliesResult RestoreAnnotationReplies(string connectionId, string fileId, string annotationGuid, AnnotationReplyInfo[] replies) - { - var reviewer = _annotationBroadcaster.GetConnectionUser(connectionId); - if (reviewer == null) - { - throw new AnnotatorException("There is no such reviewer."); - } - var user = _userSvc.GetUserByGuid(reviewer.Value.UserGuid); - var document = GetDocument(fileId, user.Id); - - _annotator.CheckReviewerPermissions(user.Id, document.Id, AnnotationReviewerRights.CanAnnotate); - - if (replies == null || replies.Length == 0) - { - return new RestoreRepliesResult { AnnotationGuid = annotationGuid, ReplyIds = new string[0] }; - } - - var idsMap = new StringDictionary(); - var result = new RestoreRepliesResult { AnnotationGuid = annotationGuid, ReplyIds = new string[replies.Length] }; - var annotation = _mapper.Map(_annotator.GetAnnotation(annotationGuid, document.Id, user.Id)); - - for (var i = 0; i < replies.Length; i++) - { - var r = replies[i]; - var parentGuid = (!string.IsNullOrEmpty(r.ParentReplyGuid) && idsMap.ContainsKey(r.ParentReplyGuid) ? - idsMap[r.ParentReplyGuid] : r.ParentReplyGuid); - var replyResult = _annotator.CreateAnnotationReply(annotation.Id, r.Message, parentGuid, document.Id, user.Id); - - idsMap[r.Guid] = replyResult.ReplyGuid; - result.ReplyIds[i] = replyResult.ReplyGuid; - } - - return result; - } - - /// - /// Resisizes the annotation - /// - /// Socket connection identifier to validate user permissions for - /// The document path to resize the annotation for - /// The annotation global unique identifier - /// The new width of the annotation - /// The new height of the annotation - /// An instance of an object containing the operation result - public ResizeAnnotationResult ResizeAnnotation(string connectionId, string fileId, string annotationGuid, double width, double height) - { - var reviewer = _annotationBroadcaster.GetConnectionUser(connectionId); - if (reviewer == null) - { - throw new AnnotatorException("There is no such reviewer."); - } - var user = _userSvc.GetUserByGuid(reviewer.Value.UserGuid); - var document = GetDocument(fileId, user.Id); - var collaboratorsInfo = _annotator.GetCollaborators(document.Id); - - var annotation = _annotator.GetAnnotation(annotationGuid, document.Id, user.Id); - var result = _annotator.ResizeAnnotation(annotation.Id, new AnnotationSizeInfo { Width = width, Height = height }, document.Id, user.Id); - - _annotationBroadcaster.ResizeAnnotation(collaboratorsInfo.Collaborators.Select(c => c.Guid).ToList(), fileId, connectionId, annotationGuid, width, height); - - return _mapper.Map(result); - } - - /// - /// Moves the annotation marker to a new position - /// - /// Socket connection identifier to validate user permissions for - /// The document path to move the annotation marker for - /// The annotation global unique identifier - /// The X coordinate of the annotation - /// The Y coordinate of the annotation - /// The document page number to move the annotation to - /// An instance of an object containing the operation result and annotation metadata - public MoveAnnotationResult MoveAnnotationMarker(string connectionId, string fileId, string annotationGuid, double left, double top, int? pageNumber) - { - var reviewer = _annotationBroadcaster.GetConnectionUser(connectionId); - if (reviewer == null) - { - throw new AnnotatorException("There is no such reviewer."); - } - var user = _userSvc.GetUserByGuid(reviewer.Value.UserGuid); - var document = GetDocument(fileId, user.Id); - var collaboratorsInfo = _annotator.GetCollaborators(document.Id); - - var annotation = _annotator.GetAnnotation(annotationGuid, document.Id, user.Id); - var position = new Point { X = left, Y = top }; - var result = _annotator.MoveAnnotationMarker(annotation.Id, new GroupDocs.Annotation.Domain.Point(position.X, position.Y), pageNumber, document.Id, user.Id); - - _annotationBroadcaster.MoveAnnotationMarker(collaboratorsInfo.Collaborators.Select(c => c.Guid).ToList(), connectionId, annotationGuid, position, pageNumber); - - return _mapper.Map(result); - } - - /// - /// Updates the text field information - /// - /// Socket connection identifier to validate user permissions for - /// The document path to update the text field information for - /// The annotation global unique identifier - /// The text of the annotation - /// The font family used to render the text - /// The font size used to render the text - /// An instance of an object containing the operation result - public SaveAnnotationTextResult SaveTextField(string connectionId, string fileId, string annotationGuid, string text, string fontFamily, double fontSize) - { - var reviewer = _annotationBroadcaster.GetConnectionUser(connectionId); - if (reviewer == null) - { - throw new AnnotatorException("There is no such reviewer."); - } - var user = _userSvc.GetUserByGuid(reviewer.Value.UserGuid); - var document = GetDocument(fileId, user.Id); - var collaboratorsInfo = _annotator.GetCollaborators(document.Id); - - var annotation = _annotator.GetAnnotation(annotationGuid, document.Id, user.Id); - var result = _annotator.SaveTextField(annotation.Id, new GroupDocs.Annotation.Domain.TextFieldInfo { FieldText = text, FontFamily = fontFamily, FontSize = fontSize }, document.Id, user.Id); - - _annotationBroadcaster.UpdateTextField(collaboratorsInfo.Collaborators.Select(c => c.Guid).ToList(), connectionId, annotationGuid, text, fontFamily, fontSize); - - return _mapper.Map(result); - } - - /// - /// Updates the text field color - /// - /// Socket connection identifier to validate user permissions for - /// The document path to update the text field color for - /// The annotation global unique identifier - /// The font color of the text - /// An instance of an object containing the operation result - public SaveAnnotationTextResult SetTextFieldColor(string connectionId, string fileId, string annotationGuid, int fontColor) - { - var reviewer = _annotationBroadcaster.GetConnectionUser(connectionId); - if (reviewer == null) - { - throw new AnnotatorException("There is no such reviewer."); - } - var user = _userSvc.GetUserByGuid(reviewer.Value.UserGuid); - var document = GetDocument(fileId, user.Id); - var collaboratorsInfo = _annotator.GetCollaborators(document.Id); - - var annotation = _annotator.GetAnnotation(annotationGuid, document.Id, user.Id); - var result = _annotator.SetTextFieldColor(annotation.Id, fontColor, document.Id, user.Id); - - _annotationBroadcaster.SetTextFieldColor(collaboratorsInfo.Collaborators.Select(c => c.Guid).ToList(), fileId, connectionId, annotationGuid, fontColor); - - return _mapper.Map(result); - } - - /// - /// Updates the background color of the annotation - /// - /// Socket connection identifier to validate user permissions for - /// The document path to update the background color for - /// The annotation global unique identifier - /// The background color of the annotation - /// An instance of an object containing the operation result - public SaveAnnotationTextResult SetAnnotationBackgroundColor(string connectionId, string fileId, string annotationGuid, int color) - { - var reviewer = _annotationBroadcaster.GetConnectionUser(connectionId); - if (reviewer == null) - { - throw new AnnotatorException("There is no such reviewer."); - } - var user = _userSvc.GetUserByGuid(reviewer.Value.UserGuid); - var document = GetDocument(fileId, user.Id); - var collaboratorsInfo = _annotator.GetCollaborators(document.Id); - - var annotation = _annotator.GetAnnotation(annotationGuid, document.Id, user.Id); - var result = _annotator.SetAnnotationBackgroundColor(annotation.Id, color, document.Id, user.Id); - - _annotationBroadcaster.SetAnnotationBackgroundColor(collaboratorsInfo.Collaborators.Select(c => c.Guid).ToList(), fileId, connectionId, annotationGuid, color); - - return _mapper.Map(result); - } - - /// - /// Adds document collaborator - /// - /// The document path to add the collaborator to - /// The email address of the collaborator - /// The first name of the collaborator - /// The last name of the collaborator - /// The invitation text message to be sent to the collaborator - /// The file stream of the collaborator's avatar - /// An instance of an object containing the operation result and collaborators details - public SetCollaboratorsResult AddCollaborator(string fileId, string reviewerEmail, string reviewerFirstName, string reviewerLastName, string reviewerInvitationMessage, Stream avatar = null) - { - return AddCollaborator(fileId, reviewerEmail, reviewerFirstName, reviewerLastName, reviewerInvitationMessage, AnnotationReviewerRights.All, avatar); - } - - /// - /// Adds document collaborator - /// - /// The document path to add the collaborator to - /// The email address of the collaborator - /// The first name of the collaborator - /// The last name of the collaborator - /// The invitation text message to be sent to the collaborator - /// The annotation permissions for the collaborator - /// The file stream of the collaborator's avatar - /// An instance of an object containing the operation result and collaborators details - public SetCollaboratorsResult AddCollaborator(string fileId, string reviewerEmail, string reviewerFirstName, string reviewerLastName, string reviewerInvitationMessage, AnnotationReviewerRights rights, Stream avatar = null) - { - MemoryStream memoryStream = (MemoryStream)avatar; - var reviewer = new GroupDocs.Annotation.Domain.ReviewerInfo - { - PrimaryEmail = reviewerEmail, - FirstName = reviewerFirstName, - LastName = reviewerLastName, - AccessRights = rights, - Avatar = memoryStream != null ? memoryStream.ToArray() : new byte[0] - }; - User user = null; - try - { - user = _userSvc.GetUserByEmail(reviewerEmail); - } - catch (Exception ex) - { - - throw; - } - - if (user == null) - { - _userSvc.Add(new User - { - Email = reviewer.PrimaryEmail, - Guid = Guid.NewGuid().ToString(), - Photo = reviewer.Avatar, - FirstName = reviewer.FirstName, - LastName = reviewer.LastName - }); - user = _userSvc.GetUserByEmail(reviewerEmail); - } - var document = GetDocument(fileId, user.Id); - var result = _mapper.Map(_annotator.AddCollaborator(document.Id, reviewer)); - return result; - } - - /// - /// Removes the document collaborator - /// - /// The document path to remove the collaborator from - /// The email address of the collaborator - /// An instance of an object containing the operation result and collaborators details - public SetCollaboratorsResult DeleteCollaborator(string fileId, string reviewerEmail) - { - var document = _documentSvc.GetDocument(fileId); - var result = _mapper.Map(_annotator.DeleteCollaborator(document.Id, reviewerEmail)); - return result; - } - - /// - /// Returns the document collaborators information - /// - /// The document path to get collaborators for - /// An instance of an object containing the operation result and collaborators details - public GetCollaboratorsResult GetCollaborators(string fileId) - { - var document = _documentSvc.GetDocument(fileId); - return _mapper.Map(_annotator.GetCollaborators(document.Id)); - } - - /// - /// Returns the collaborator's metadata - /// - /// The collaborator global unique identifier - /// An instance of an object containing the collaborator's details - public ReviewerInfo GetCollaboratorMetadata(string userId) - { - return _mapper.Map(_annotator.GetCollaboratorMetadata(userId)); - } - - /// - /// Returns an annotation document collaborator's metadata - /// - /// The document path to get collaborator for - /// The collaborator name - /// An instance of an object containing the collaborator's details - public ReviewerInfo GetDocumentCollaborator(string fileId, string userName) - { - var document = _documentSvc.GetDocument(fileId); - return _mapper.Map(_annotator.GetDocumentCollaborator(document.Id, userName)); - } - - /// - /// Updates a collaborator display color - /// - /// The document path to update the collaborator display color for - /// The collaborator name - /// The display color - /// An instance of an object containing the collaborator's details - public ReviewerInfo SetCollaboratorColor(string fileId, string userName, uint color) - { - var document = _documentSvc.GetDocument(fileId); - var collaborator = _annotator.GetDocumentCollaborator(document.Id, userName); - collaborator.Color = color; - - var result = _annotator.UpdateCollaborator(document.Id, collaborator); - var reviewer = result.Collaborators.FirstOrDefault(c => c.PrimaryEmail == userName); - - _annotationBroadcaster.SetReviewersColors(result.Collaborators.Select(c => c.Guid).ToList(), null, _mapper.Map(result.Collaborators)); - - return _mapper.Map(reviewer); - } - - /// - /// Updates collaborator annotation permissions - /// - /// The document path to update the collaborator permission for - /// The collaborator name - /// The collaborator's annotation permissions - /// An instance of an object containing the collaborator's details - public ReviewerInfo SetCollaboratorRights(string fileId, string userName, AnnotationReviewerRights rights) - { - var document = _documentSvc.GetDocument(fileId); - var collaborator = _annotator.GetDocumentCollaborator(document.Id, userName); - collaborator.AccessRights = rights; - - var result = _annotator.UpdateCollaborator(document.Id, collaborator); - _annotationBroadcaster.SetReviewersColors(result.Collaborators.Select(c => c.Guid).ToList(), null, _mapper.Map(result.Collaborators)); - - return _mapper.Map(result.Collaborators.FirstOrDefault(c => c.PrimaryEmail == userName)); - } - - /// - /// Updates the document global annotation permissions - /// - /// The document path to update the permissions for - /// The annotation permissions - public void SetDocumentAccessRights(string fileId, AnnotationReviewerRights rights) - { - var document = _documentSvc.GetDocument(fileId); - long documentId = document != null ? document.Id : _annotator.CreateDocument(fileId); - _annotator.SetDocumentAccessRights(documentId, rights); - } - - /// - /// Removes document annotations - /// - /// The document path to remove annotations from - public void DeleteAnnotations(string fileId) - { - var document = _documentSvc.GetDocument(fileId); - _annotator.DeleteAnnotations(document.Id); - } - - /// - /// Imports annotations from a document into the internal storage - /// - /// Socket connection identifier to validate user permissions for - /// The document path to import annotations from - public void ImportAnnotations(string connectionId, string fileId) - { - var document = _documentSvc.GetDocument(fileId); - if (document == null) - { - var newDocument = new Document - { - Name = fileId, - CreatedOn = DateTime.Now, - Guid = Guid.NewGuid().ToString() - }; - _documentSvc.Add(newDocument); - document = _documentSvc.GetDocument(fileId); - } - long userId = 0; - if (connectionId == null) - { - AddCollaborator(fileId, _authenticationSvc.AnonymousUserName, null, null, null); - } - else - { - var connectionUser = _annotationBroadcaster.GetConnectionUser(connectionId); - if (connectionUser == null) - { - throw new AnnotatorException("Connection user is null."); - } - var user = _userSvc.GetUserByGuid(connectionUser.Value.UserGuid); - userId = user.Id; - _annotator.AddCollaborator(document.Id, - new GroupDocs.Annotation.Domain.ReviewerInfo - { - PrimaryEmail = user.Email, - FirstName = user.FirstName, - LastName = user.LastName - }); - } - - Import(document.Id, fileId, userId); - ImportAnnotationWithCleaning(fileId); - } - - private void ImportAnnotationWithCleaning(string fileId) - { - using (Stream inputDoc = _annotator.GetPdfFile(fileId).Stream) - { - SaveCleanDocument(inputDoc, fileId); - } - } - - /// - /// Exports annotations from the internal storage to the original document - /// - /// Socket connection identifier to validate user permissions for - /// The document path to export annotations to - /// A path to the result file containing exported annotations - public string ExportAnnotations(string connectionId, string fileId) - { - var document = _documentSvc.GetDocument(fileId); - var reviewer = _annotationBroadcaster.GetConnectionUser(connectionId); - if (reviewer == null) - { - throw new AnnotatorException("There is no such reviewer."); - } - var user = _userSvc.GetUserByGuid(reviewer.Value.UserGuid); - _annotator.CheckReviewerPermissions(user.Id, document.Id, AnnotationReviewerRights.CanExport); - return Export(document.Id, fileId, user.Id); - } - - /// - /// Converts a document to PDF format - /// - /// Socket connection identifier to validate user permissions for - /// The document path to convert - /// A path to the converted file - public string GetAsPdf(string connectionId, string fileId) - { - var document = _documentSvc.GetDocument(fileId); - var reviewer = _annotationBroadcaster.GetConnectionUser(connectionId); - if (reviewer == null) - { - throw new AnnotatorException("There is no such reviewer."); - } - var user = _userSvc.GetUserByGuid(reviewer.Value.UserGuid); - _annotator.CheckReviewerPermissions(user.Id, document.Id, AnnotationReviewerRights.CanDownload); - var tempStorage = pathFinder.GetApplicationPath() + "_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/App_Data/Temp"; - var fileName = Path.ChangeExtension(Path.GetRandomFileName(), "pdf"); - using (Stream inputDoc = _annotator.GetPdfFile(fileId).Stream) - using (var tempDoc = new FileStream(Path.Combine(tempStorage, fileName), FileMode.Create)) - { - inputDoc.Position = 0; - inputDoc.CopyTo(tempDoc); - return "Temp\\" + fileName; - } - } - - private Document GetDocument(string fileName, long userId) - { - var document = _documentSvc.GetDocument(fileName); - if (document == null) - { - _annotator.CreateDocument(fileName, DocumentType.Pdf, userId); - var doc = _documentSvc.GetDocument(fileName); - return doc; - } - return document; - } - - public string Export(long documentId, string fileId, long userId) - { - using (Stream inputDoc = _annotator.GetPdfFile(fileId).Stream) - { - var resultStream = _annotator.ExportAnnotationsToDocument(documentId, inputDoc, DocumentType.Pdf, userId); - var fileName = string.Format("{0}_WithComments_{1}.{2}", - Path.GetFileNameWithoutExtension(fileId), - DateTime.UtcNow.ToString("yyyy-MM-dd HH-mm-ss"), - "pdf"); - string tempFilePath = Path.Combine(storagePath + "//Temp", fileName); - try - { - using (var fs = new FileStream(tempFilePath, FileMode.Create)) - { - resultStream.Position = 0; - resultStream.CopyTo(fs); - } - } - catch (Exception e) - { - throw new AnnotatorException("Failed to save output file to the storage."); - } - - return Path.Combine("Temp", fileName); - } - } - - /// - /// Import annotations with merge functionality - /// - /// - /// - /// - private void Import(long documentId, string fileId, long userId) - { - using (Stream inputDoc = _annotator.GetPdfFile(fileId).Stream) - { - _annotator.ImportAnnotations(documentId, inputDoc, DocumentType.Pdf, userId); - } - } - - private void SaveCleanDocument(Stream inputDoc, string fileId) - { - Stream resultClean = _annotator.RemoveAnnotationStream(inputDoc, DocumentType.Pdf); - string path = Path.GetDirectoryName(fileId); - var uploadDir = path != "" - ? Path.Combine(pathFinder.GetApplicationPath() + "_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/App_Data", path) - : pathFinder.GetApplicationPath() + "_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/App_Data"; - var fileName = string.Format("{0}.{1}", - Path.GetFileNameWithoutExtension(fileId), - "pdf"); - var filePath = Path.Combine(uploadDir, fileName); - inputDoc.Dispose(); - if (!Directory.Exists(uploadDir)) - { - Directory.CreateDirectory(uploadDir); - } - using (var stream = File.Create(filePath)) - { - resultClean.CopyTo(stream); - } - resultClean.Dispose(); - } - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/UnityConfig.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/UnityConfig.cs deleted file mode 100644 index 330874a..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/UnityConfig.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System; -using System.Web; -using GroupDocs.Annotation.Config; -using GroupDocs.Annotation.Handler; -using GroupDocs.Annotation.Handler.Input; -using GroupDocs_Annotation_SharePoint_WebPart.Security; -using GroupDocs_Annotation_SharePoint_WebPart.Service; -using Microsoft.Practices.Unity; - - - -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic -{ - /// - /// Specifies the Unity configuration for the main container. - /// - public class UnityConfig - { - private static ApplicationPathFinder pathFinder = new ApplicationPathFinder(); - #region Unity Container - private static Lazy container = new Lazy(() => - { - var container = new UnityContainer(); - RegisterTypes(container); - - return container; - }); - - /// - /// Gets the configured Unity container. - /// - public static IUnityContainer GetConfiguredContainer() - { - return container.Value; - } - #endregion - - /// Registers the type mappings with the Unity container. - /// The unity container to configure. - /// There is no need to register concrete types such as controllers or API controllers (unless you want to - /// change the defaults), as Unity allows resolving a concrete type even if it was not previously registered. - public static void RegisterTypes(IUnityContainer container) - { - // NOTE: To load from web.config uncomment the line below. Make sure to add a Microsoft.Practices.Unity.Configuration to the using statements. - // container.LoadConfiguration(); - container.RegisterType("AnnotationWidget"); - - string repositoryFolder = HttpContext.Current.Server.MapPath("~/_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/App_Data"); - var annotator = new AnnotationImageHandler( - new AnnotationConfig { StoragePath = repositoryFolder }, - new GroupDocs.Data.Json.Repositories.UserRepository(repositoryFolder), - new GroupDocs.Data.Json.Repositories.DocumentRepository(repositoryFolder), - new GroupDocs.Data.Json.Repositories.AnnotationRepository(repositoryFolder), - new GroupDocs.Data.Json.Repositories.AnnotationReplyRepository(repositoryFolder), - new GroupDocs.Data.Json.Repositories.AnnotationCollaboratorRepository(repositoryFolder)); - - - container.RegisterInstance(typeof(IUserDataHandler), annotator.GetUserDataHandler()); - - - #region Instances - //container.RegisterInstance(typeof (IDocumentDataHandler), new DocumentRepository(repositoryFolder)); - //container.RegisterInstance(typeof(IAnnotationCollaboratorDataHandler), new AnnotationCollaboratorRepository(repositoryFolder)); - //container.RegisterInstance(typeof(IAnnotationReplyDataHandler), new AnnotationReplyRepository(repositoryFolder)); - //container.RegisterInstance(typeof(IAnnotationDataHandler), new AnnotationRepository(repositoryFolder)); - //container.RegisterInstance(typeof(IInputDataHandler), new InputDataHandler(repositoryFolder)); - //container.RegisterInstance(typeof(IFileDataStore), new FileStore(repositoryFolder)); - #endregion Instances - - - container.RegisterInstance(typeof(AnnotationImageHandler), annotator); - - container.RegisterType(); - container.RegisterType(); - container.RegisterType(); - container.RegisterType(); - } - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/ViewDocumentParameters.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/ViewDocumentParameters.cs deleted file mode 100644 index a420fcd..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/BusinessLogic/ViewDocumentParameters.cs +++ /dev/null @@ -1,84 +0,0 @@ -namespace GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic -{ - public class ViewDocumentParameters : WatermarkedDocumentParameters - { - public ViewDocumentParameters() - { - UsePdf = true; - } - - public bool UseHtmlBasedEngine { get; set; } - public bool UsePngImagesForHtmlBasedEngine { get; set; } - public int? Count { get; set; } - public int? Width { get; set; } - public int? Quality { get; set; } - public bool UsePdf { get; set; } - public int? PreloadPagesCount { get; set; } - public bool ConvertWordDocumentsCompletely { get; set; } - public string FileDisplayName { get; set; } - public bool IgnoreDocumentAbsence { get; set; } - public bool SupportPageRotation { get; set; } - public bool SupportListOfContentControls { get; set; } - public bool SupportListOfBookmarks { get; set; } - public bool EmbedImagesIntoHtmlForWordFiles { get; set; } - public string InstanceIdToken { get; set; } - public string Locale { get; set; } - public string PasswordForOpening { get; set; } - public bool SaveFontsInAllFormats { get; set; } - public string Callback { get; set; } - } - - public abstract class WatermarkedDocumentParameters : DocumentParameters - { - public string WatermarkText { get; set; } - public int? WatermarkColor { get; set; } - public WatermarkPosition? WatermarkPosition { get; set; } - public float? WatermarkWidth { get; set; } - } - - public abstract class DocumentParameters - { - public string Path { get; set; } - } - - /// - /// Position of a watermark on a document page - /// - public enum WatermarkPosition - { - /// - /// Default value - from bottom left to top right corner - /// - Diagonal, - TopLeft, TopCenter, TopRight, BottomLeft, BottomCenter, BottomRight - } - - public class ViewDocumentResponse : OperationStatusResponse - { - public string path { get; set; } - public string docType { get; set; } - public string fileType { get; set; } - public string url { get; set; } - public string pdfDownloadUrl { get; set; } - public string name { get; set; } - public string[] imageUrls { get; set; } - public bool lic { get; set; } - public string pdfPrintUrl { get; set; } - public string[] pageHtml { get; set; } - public string[] pageCss { get; set; } - public string documentDescription { get; set; } - public string urlForResourcesInHtml { get; set; } - public string sharedCss { get; set; } - } - - public class OperationStatusResponse - { - public OperationStatusResponse() - { - success = true; - } - - public bool success { get; set; } - } -} - diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/CSS/Annotation.Toolbox.css b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/CSS/Annotation.Toolbox.css deleted file mode 100644 index 5e5841c..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/CSS/Annotation.Toolbox.css +++ /dev/null @@ -1,2702 +0,0 @@ -.h_t_i_undo -{ - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -1087px -631px; -} - - .h_t_i_undo.disabled - { - background-position: -1087px -662px; - } - -.h_t_i_redo -{ - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -1125px -631px; -} - - .h_t_i_redo.disabled - { - background-position: -1125px -662px; - } - -.comments_sidebar_wrapper -{ - z-index: 101 !important; -} - -.new_head_tools_btn, .new_head_tools_btn:after -{ - z-index: 101; -} - -.grpdx ul, .grpdx ol -{ - padding: 0; - margin: 0 0 9px 25px; -} - - .grpdx ul ul, .grpdx ul ol, .grpdx ol ol, .grpdx ol ul - { - margin-bottom: 0; - } - -.grpdx ul -{ - list-style: disc; -} - -.grpdx ol -{ - list-style: decimal; -} - -.grpdx li -{ - line-height: 18px; -} - -.grpdx ul.unstyled, .grpdx ol.unstyled -{ - margin-left: 0; - list-style: none; -} - -.grpdx a -{ - color: #08c; - text-decoration: none; -} - - .grpdx a:hover - { - color: #005580; - text-decoration: underline; - } - -.grpdx input, .grpdx textarea, .grpdx select, .grpdx .uneditable-input -{ - display: inline-block; - width: 210px; - height: 18px; - padding: 4px; - margin-bottom: 9px; - font-size: 14px; - line-height: 18px; - color: #555; - border: 1px solid #ccc; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - font-family: "PT Sans",Helvetica,Arial,sans-serif; -} - -.grpdx.modal -{ - z-index: 99999; -} - -.grpdx .modal_content .manage_coll span.checkbox -{ - float: right; - margin: 8px 25px; -} - -.grpdx .modal_content .manage_coll.invite_manage span.checkbox -{ - margin: 8px 33px; - float: left; -} - -.grpdx .modal_content .manage_heading .export -{ - margin: 0 0 0 10px; - width: 42px; -} - -.grpdx .modal_content .manage_heading .proof -{ - margin: 0 0 0 24px; - width: 39px; -} - -.grpdx .modal_content .manage_heading .download -{ - margin: 0 0 0 18px; - width: 59px; -} - -.grpdx .modal_content .manage_heading .view -{ - margin: 0 0 0 18px; - width: 34px; -} - -.grpdx .modal_content .manage_heading .delete -{ - margin: 0 0 0 6px; - width: auto; -} - -.grpdx .modal_content .manage_add_usr.link_input -{ - margin: 1px 0 0 20px; - width: 330px; -} - -.grpdx.modal2 .popclose.del_user -{ - position: relative; - float: right; - right: 0; - top: 0; - margin: 7px 9px 0 0; -} - -.grpdx .ui-widget-content a -{ - color: #fff; -} - -.grpdx .ui-widget-content -{ - border: none; - background: none; - color: #fff; -} - -.grpdx .ui-widget-header -{ - border: none; - background: none; - color: #fff; - font-weight: bold; -} - - .grpdx .ui-state-active, .grpdx .ui-widget-content .ui-state-active, .grpdx .ui-widget-header .ui-state-active - { - border: none; - background: #fff; - font-weight: bold; - color: #fff; - } - - .grpdx .ui-state-default, .grpdx .ui-widget-content .ui-state-default, .grpdx .ui-widget-header .ui-state-default - { - border-color: transparent; - } - -.grpdx .ui-state-focus -{ - border: none !important; - background: none !important; -} - -.grpdx .ui-state-active a, .grpdx .ui-state-active a:link, .grpdx .ui-state-active a:visited -{ - color: #dfdfdf; - text-decoration: none; -} - -.grpdx .red_button_sb -{ - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - border: 1px solid #c04f1e; - display: inline-block; - text-align: center; - background-color: #de561b; - background-image: -moz-linear-gradient(top,#ea5f23,#cc4810); - background-image: -ms-linear-gradient(top,#ea5f23,#cc4810); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#ea5f23),to(#cc4810)); - background-image: -webkit-linear-gradient(top,#ea5f23,#cc4810); - background-image: -o-linear-gradient(top,#ea5f23,#cc4810); - background-image: linear-gradient(top,#ea5f23,#cc4810); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ea5f23',endColorstr='#cc4810',GradientType=0); - -webkit-box-shadow: inset 0px 1px 1px 0px rgba(255,255,255,0.3),0px 2px 0px 0px rgba(0,0,0,0.1); - box-shadow: inset 0px 1px 1px 0px rgba(255,255,255,0.3),0px 2px 0px 0px rgba(0,0,0,0.1); - font-size: 18px; - color: #fff; - font-weight: bold; - text-shadow: 0px -1px 0px #b54819; - line-height: 26px; - padding: 0 10px; - -ms-filter: dropshadow(color=#b54819,offx=0,offy=-1); -} - - .grpdx .red_button:hover, .grpdx .btn.red_button:hover, .grpdx .red_button_sb:hover - { - background-color: #e97620; - background-image: -moz-linear-gradient(top,#eb8626,#e75d17); - background-image: -ms-linear-gradient(top,#eb8626,#e75d17); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#eb8626),to(#e75d17)); - background-image: -webkit-linear-gradient(top,#eb8626,#e75d17); - background-image: -o-linear-gradient(top,#eb8626,#e75d17); - background-image: linear-gradient(top,#eb8626,#e75d17); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eb8626',endColorstr='#e75d17',GradientType=0); - color: #fff; - text-decoration: none; - background-position: 0; - } - - .grpdx .red_button_sb:hover - { - background-color: #e97620; - background-image: -moz-linear-gradient(top,#eb8626,#e75d17); - background-image: -ms-linear-gradient(top,#eb8626,#e75d17); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#eb8626),to(#e75d17)); - background-image: -webkit-linear-gradient(top,#eb8626,#e75d17); - background-image: -o-linear-gradient(top,#eb8626,#e75d17); - background-image: linear-gradient(top,#eb8626,#e75d17); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eb8626',endColorstr='#e75d17',GradientType=0); - color: #fff; - text-decoration: none; - background-position: 0; - } - -.grpdx .red_button_sb -{ - margin-left: 10px; - font-size: 16px; - padding: 3px 7px; -} - - .grpdx .red_button_sb.disabled - { - cursor: default; - opacity: 0.5; - } - -.grpdx .new_annotation_tools.tools_container_slide, .grpdx .embed_annotation_tools.tools_container_slide -{ - left: 215px; -} - -.grpdx .tools_container -{ - width: 47px; - padding: 0 7px 6px; - border: 1px solid #cbcbcb; - background: #dfdfdf; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - position: absolute !important; - z-index: 999; - right: 50%; - top: 14px; - display: inline-block; - -webkit-box-shadow: 0 2px 2px rgba(255,255,255,0.9) inset,4px 4px 6px rgba(0,0,0,0.3); - -moz-box-shadow: 0 2px 2px rgba(255,255,255,0.9) inset,4px 4px 6px rgba(0,0,0,0.3); - box-shadow: 0 2px 2px rgba(255,255,255,0.9) inset,4px 4px 6px rgba(0,0,0,0.3); - margin-right: -540px; -} - -.grpdx .tools_dots -{ - cursor: move; - width: 14px; - height: 2px; - background: url(../images/sprites_annotation.png) no-repeat; - background-position: 0 0; - display: inline-block; - padding: 7px 18px; -} - -.grpdx .tools_list -{ - list-style: none outside none !important; - margin: 0 !important; -} - -.grpdx .tool_field -{ - width: 45px; - -webkit-transition: all 0.3s ease; - -moz-transition: all 0.3s ease; - -ms-transition: all 0.3s ease; - -o-transition: all 0.3s ease; - transition: all 0.3s ease; - height: 45px; - border: 1px solid #8a8a8a; - -webkit-box-shadow: 0px 0px 6px rgba(0,0,0,0.2); - -moz-box-shadow: 0px 0px 6px rgba(0,0,0,0.2); - box-shadow: 0px 0px 6px rgba(0,0,0,0.2); - display: inline-block; - margin: 3px 0; - cursor: move; - position: relative; -} - - .grpdx .tool_field:hover - { - border: 1px solid #d45119; - -webkit-box-shadow: 0px 0px 6px rgba(0,0,0,0.35); - -moz-box-shadow: 0px 0px 6px rgba(0,0,0,0.35); - box-shadow: 0px 0px 6px rgba(0,0,0,0.35); - } - -.grpdx .tool_field_tooltip -{ - right: 47px; - top: 6px; - position: absolute; - width: 170px; - background: none repeat scroll 0 0 rgba(200,200,200,0.8); - font-weight: bold; - text-align: center; -} - -.grpdx button.tool_field -{ - width: 47px; - height: 47px; - cursor: pointer; -} - -.grpdx .embed_annotation_tools -{ - left: 10px; - right: auto; - top: 5px; - padding: 0 5px 6px; - width: 33px; - top: 100px; -} - - .grpdx .embed_annotation_tools .tools_dots - { - background-position: -9px -309px; - padding: 7px 12px; - } - - .grpdx .embed_annotation_tools .tool_field - { - width: 32px; - height: 32px; - } - - .grpdx .embed_annotation_tools .tool_field_tooltip - { - left: 30px !important; - top: -1px !important; - } - - .grpdx .embed_annotation_tools .text_box_annotate - { - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -1000px -701px; - } - - .grpdx .embed_annotation_tools .text_box_annotate.active - { - background-position: -1041px -701px; - } - - .grpdx .embed_annotation_tools .point_box - { - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -1000px -839px; - } - - .grpdx .embed_annotation_tools .point_box.active - { - background-position: -1041px -839px; - } - - .grpdx .embed_annotation_tools .area_box - { - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -1000px -805px; - } - - .grpdx .embed_annotation_tools .area_box.active - { - background-position: -1041px -805px; - } - - .grpdx .embed_annotation_tools .pointer_box - { - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -940px -593px; - } - - .grpdx .embed_annotation_tools .pointer_box.active - { - background-position: -992px -593px; - } - - .grpdx .embed_annotation_tools .strike_box - { - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -1000px -770px; - } - - .grpdx .embed_annotation_tools .strike_box.active - { - background-position: -1041px -770px; - } - - .grpdx .embed_annotation_tools .hand_box - { - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -1000px -666px; - } - - .grpdx .embed_annotation_tools .hand_box.active - { - background-position: -1041px -666px; - } - - .grpdx .embed_annotation_tools .highlight_box - { - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -1000px -736px; - } - - .grpdx .embed_annotation_tools .highlight_box.active - { - background-position: -1041px -736px; - } - - .grpdx .embed_annotation_tools .uploadimg_box - { - background: url(../images/sprites_annotation.png) no-repeat -1000px -874px; - } - - .grpdx .embed_annotation_tools .uploadimg_box.active - { - background-position: -1041px -874px; - } - - .grpdx .embed_annotation_tools .polyline_box - { - background: url(../images/sprites_annotation.png) no-repeat -1088px -701px; - } - - .grpdx .embed_annotation_tools .polyline_box.active - { - background-position: -1127px -701px; - } - - .grpdx .embed_annotation_tools .image_box - { - background: url(../images/sprites_annotation.png) no-repeat -1088px -738px; - } - - .grpdx .embed_annotation_tools .image_box.active - { - background-position: -1127px -738px; - } - - .grpdx .embed_annotation_tools .watermark_box - { - background: url(../images/sprites_annotation.png) no-repeat -1088px -774px; - } - - .grpdx .embed_annotation_tools .watermark_box.active - { - background-position: -1127px -774px; - } - - .grpdx .embed_annotation_tools .replace_box - { - background: url(../images/sprites_annotation.png) no-repeat -1000px -910px; - } - - .grpdx .embed_annotation_tools .replace_box.active - { - background-position: -1041px -910px; - } - - .grpdx .embed_annotation_tools .redtext_box - { - background: url(../images/sprites_annotation.png) no-repeat -555px -1257px; - } - - .grpdx .embed_annotation_tools .redtext_box.active - { - background-position: -590px -1257px; - } - - .grpdx .embed_annotation_tools .redarea_box - { - background: url(../images/sprites_annotation.png) no-repeat -555px -1292px; - } - - .grpdx .embed_annotation_tools .redarea_box.active - { - background-position: -590px -1292px; - } - - .grpdx .embed_annotation_tools .redtextarea_box - { - background: url(../images/sprites_annotation.png) no-repeat -1088px -810px; - } - - .grpdx .embed_annotation_tools .redtextarea_box.active - { - background-position: -1127px -810px; - } - - .grpdx .embed_annotation_tools .redres_box - { - background: url(../images/sprites_annotation.png) no-repeat -1088px -846px; - } - - .grpdx .embed_annotation_tools .redres_box.active - { - background-position: -1127px -846px; - } - - .grpdx .embed_annotation_tools .arrow_tool - { - background: url(../images/sprites_annotation.png) no-repeat -1088px -882px; - } - - .grpdx .embed_annotation_tools .arrow_tool.active - { - background-position: -1127px -882px; - } - - .grpdx .embed_annotation_tools .underline_tool - { - background: url(../images/sprites_annotation.png) no-repeat -1088px -918px; - } - - .grpdx .embed_annotation_tools .underline_tool.active - { - background-position: -1127px -918px; - } - - .grpdx .embed_annotation_tools .ruler_tool - { - background: url(../images/sprites_annotation.png) no-repeat -1088px -954px; - } - - .grpdx .embed_annotation_tools .ruler_tool.active - { - background-position: -1127px -954px; - } - -.grpdx .com_heading -{ - border-bottom: 1px solid #393939; - line-height: 32px !important; - font-size: 15px !important; -} - -.grpdx .comment_name -{ - z-index: 999; - width: 140px; - font-size: 14px; - font-weight: bold; - overflow: hidden; - text-overflow: ellipsis; - -ms-text-overflow: ellipsis; - -o-text-overflow: ellipsis; - white-space: nowrap; - position: absolute; - top: 0px; - left: 50px; - color: #393939; -} - -.grpdx .comment_time -{ - position: absolute; - top: 18px; - left: 50px; - color: #888; - z-index: 999; - font-size: 12px !important; -} - -.grpdx .comment_text_wrapper -{ - position: relative; - display: inline-block; -} - -.grpdx .comment_text -{ - background: #fff; - padding: 20px 8px 10px; - width: 184px; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - border-radius: 8px; - margin: 0px 0 0 0; - position: relative; - color: #333; - font-size: 14px; -} - -.grpdx .comment_box_pointer -{ - position: absolute; - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -354px -114px; - width: 10px; - height: 8px; - bottom: 100%; - right: 10px; - display: inline-block; -} - -.grpdx .comment_reply_btn -{ - color: #393939; - text-decoration: underline; - float: right !important; - margin: 5px 0 0 10px; - font-size: 16px; -} - -.grpdx .comment_box_sidebar -{ - position: relative; - padding: 20px 0 0 0; - margin: 0 0 25px; -} - - .grpdx .comment_box_sidebar .reply_pointer - { - position: absolute; - top: 0; - left: -15px; - } - - .grpdx .comment_box_sidebar.lvl1 - { - margin: 0 0 25px 15px; - } - - .grpdx .comment_box_sidebar.lvl1 .comment_text - { - width: 169px; - } - - .grpdx .comment_box_sidebar.lvl2 - { - margin: 0 0 25px 30px; - } - - .grpdx .comment_box_sidebar.lvl2 .comment_text - { - width: 154px; - } - - .grpdx .comment_box_sidebar.lvl3 - { - margin: 0 0 25px 45px; - } - - .grpdx .comment_box_sidebar.lvl3 .comment_text - { - width: 139px; - } - -.grpdx .comment_avatar -{ - position: absolute; - top: 0; - left: 8px; - z-index: 999; -} - -.grpdx .blanc_avatar_icon -{ - background: url("../images/sprites_annotation.png") no-repeat scroll -219px -120px transparent; - display: inline-block; - height: 32px; - width: 32px; -} - -.grpdx .blanc_avatar_icon_plus -{ - background: url("../images/sprites_annotation.png") no-repeat scroll -219px -157px transparent; - display: inline-block; - height: 32px; - width: 32px; -} - -.grpdx .reply_pointer -{ - background: url(../images/sprites_annotation.png) no-repeat; - width: 7px; - height: 9px; - display: inline-block; - background-position: -342px -115px; - float: left; - margin: 5px 5px 40px 5px; -} - -.grpdx .reply_area -{ - width: 171px; - height: 70px; - font-size: 14px !important; -} - -.grpdx .reply_box -{ - overflow: hidden; - margin: 10px 0; -} - -.grpdx .comments_sidebar_collapsed -{ - padding-bottom: 67px; - background: #dfdfdf; - border: 1px solid #cdcdcd; - border-radius: 8px 0 0 8px; - width: 50px; - padding: 24px 0 0 5px; -} - -.grpdx .comments_sidebar_expanded -{ - width: 240px; -} - - .grpdx .comments_sidebar_expanded .comments_content - { - padding-bottom: 76px; - } - - .grpdx .comments_sidebar_expanded .ui-tabs-hide - { - display: none !important; - } - - .grpdx .comments_sidebar_expanded .ui-tabs-panel - { - display: inline-block; - } - -.grpdx .comments_togle_btn -{ - position: absolute; - top: 3px; - right: 19px; -} - -.grpdx .sidebar_toggle_btn -{ - position: absolute; - top: 5px; - right: 19px; -} - -.grpdx .expanded_toggle_icon -{ - background: url(../images/sprites_annotation.png) no-repeat; - width: 15px; - height: 15px; - display: inline-block; - padding: 3px; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; - background-position: -334px -133px; - background-color: #dfdfdf; - border: 1px solid #cdcdcd; -} - -.grpdx .collapsed_toggle_icon -{ - background: url(../images/sprites_annotation.png) no-repeat; - width: 15px; - height: 15px; - display: inline-block; - background-position: -360px -136px; - right: 37px; -} - -.grpdx .comments_content -{ - background: #dfdfdf; - border: 1px solid #cdcdcd; - border-radius: 0 3px 3px 3px; - margin-top: 44px; -} - -.grpdx .comment_tabs_buttons -{ - margin: 0 0 -1px 0 !important; - position: absolute; - top: 0; - left: 0; -} - - .grpdx .comment_tabs_buttons li - { - list-style: none outside none; - float: left; - margin: 0 5px 0 0 !important; - background-color: #dfdfdf !important; - } - - .grpdx .comment_tabs_buttons li a - { - height: 43px; - width: 47px; - display: inline-block; - background: #fff; - border: 1px solid #cdcdcd; - border-radius: 3px 3px 0 0; - } - - .grpdx .comment_tabs_buttons li.ui-tabs-selected a, .grpdx .comment_tabs_buttons li.ui-tabs-active a - { - background: #dfdfdf; - border-bottom: 1px solid #dfdfdf; - } - -.grpdx .com_usr_icon -{ - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -304px -129px; - width: 18px; - height: 22px; - display: inline-block; - margin: 11px 14px; -} - -.grpdx .com_sum_icon -{ - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -304px -358px; - width: 18px; - height: 22px; - display: inline-block; - margin: 11px 14px; -} - -.grpdx .com_com_icon -{ - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -304px -162px; - width: 18px; - height: 22px; - display: inline-block; - margin: 11px 14px; -} - -.grpdx .com_usr_icon -{ - margin: 4px 14px; -} - -.grpdx .com_com_icon -{ - margin: 4px 14px; -} - -.grpdx .comments_number -{ - background: none repeat scroll 0 0 #d3480d; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - border-radius: 8px; - color: #fff; - font-size: 12px; - font-weight: bold; - height: 14px; - line-height: 13px; - padding: 1px 5px; - position: absolute; - right: -12px; - top: -8px; - text-align: center; - width: auto; -} - -.grpdx .comments_number_rect -{ - background: none repeat scroll 0 0 #d3480d; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - border-radius: 8px; - color: #fff; - font-size: 12px; - font-weight: bold; - height: 14px; - line-height: 13px; - padding: 1px 5px; - position: absolute; - right: -12px; - top: -8px; - text-align: center; - width: auto; -} - -.grpdx .collapsed_anno_box -{ - height: 23px; - margin: 5px 0 5px -5px; - padding: 10px 0 10px 7px; - width: 50px; -} - - .grpdx .collapsed_anno_box:hover - { - background: #efefef; - } - -.grpdx .anno_select -{ - position: relative; -} - -.grpdx .anno_universal_icon -{ - display: inline-block; - height: 23px; - width: 32px; - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -334px -163px; -} - -.grpdx .comments_togle_btn -{ - cursor: pointer; -} - -.grpdx span.delete_button_x, .grpdx div.red_pointer, .grpdx .anno_del -{ - z-index: 1; -} - -.grpdx .red_pointer -{ - display: inline-block; - position: absolute; - width: 26px; - height: 27px; - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -1036px -175px; - cursor: pointer; -} - - .grpdx .red_pointer p - { - margin: 0 0 0 6px; - font-size: 12px; - color: #fff; - font-weight: bold; - text-shadow: 0px -1px 0px #000; - -ms-filter: dropshadow(color=#000,offx=0,offy=-1); - } - -.grpdx .anno_field_avatar -{ - background: url(../images/sprites_annotation.png) no-repeat; - width: 48px; - height: 48px; - display: inline-block; - float: left; - background-position: -161px -56px; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - border-radius: 8px; - position: absolute; - border: 2px solid #dfdfdf; - margin: 0; - top: 0; - left: -60px; -} - -.grpdx .area_cursor -{ - cursor: url(../images/area_cursor.ico) 16 15,url(../images/area_cursor.ico),crosshair !important; -} - -.grpdx .crossarea_cursor -{ - cursor: url(../images/crossarea_cursor.ico) 16 15,url(../images/crossarea_cursor.ico),crosshair !important; -} - -.grpdx .crossarrow_cursor -{ - cursor: url(../images/crossarrow_cursor.ico) 16 15,url(../images/crossarrow_cursor.ico),crosshair !important; -} - -.grpdx .pointanno_cursor -{ - cursor: url(../images/pointanno_cursor.ico) 15 21,url(../images/pointanno_cursor.ico),text !important; -} - -.grpdx .pointer_cursor -{ - cursor: url(../images/pointer_cursor.ico) 11 4,url(../images/pointer_cursor.ico),crosshair !important; -} - -.grpdx .polyline_cursor -{ - cursor: url(../images/polyline_cursor.ico) 8 23,url(../images/polyline_cursor.ico),crosshair !important; -} - -.grpdx .textanno_cursor -{ - cursor: url(../images/textanno_cursor.ico) 9 16,url(../images/textanno_cursor.ico),text !important; -} - -.grpdx .typewritter_cursor -{ - cursor: url(../images/typewritter_cursor.ico) 13 16,url(../images/typewritter_cursor.ico),text !important; -} - -.grpdx .upload_cursor -{ - cursor: url(../images/upload_cursor.ico) 15 16,url(../images/upload_cursor.ico),text !important; -} - -.grpdx .watermark_cursor -{ - cursor: url(../images/watermark_cursor.ico) 15 16,url(../images/watermark_cursor.ico),text !important; -} - -.grpdx .strikeout_cursor -{ - cursor: url(../images/strikeout_cursor.ico) 15 16,url(../images/cursor_strikeout.ico),text !important; -} - -.grpdx .crossruler_cursor -{ - cursor: url(../images/crossruler_cursor.ico) 16 15,url(../images/crossruler_cursor.ico),crosshair !important; -} - -.grpdx .underline_cursor -{ - cursor: url(../images/underline_cursor.ico) 15 16,url(../images/underline_cursor.ico),text !important; -} - -.grpdx .auto_cursor -{ - cursor: auto; -} - -.grpdx .doc_text_area -{ - position: absolute; -} - -.grpdx .doc_text_area_text -{ - margin: 0; - padding: 3px 5px; - border: 1px dotted #000; - background: #fff; - -webkit-box-shadow: 1px 1px 3px 0px rgba(0,0,0,0.6); - -moz-box-shadow: 1px 1px 3px 0px rgba(0,0,0,0.6); - box-shadow: 1px 1px 3px 0px rgba(0,0,0,0.6); -} - -.grpdx .text_area_toolbar -{ - cursor: auto; - position: absolute; - padding: 5px 0 0 5px; - border: 1px solid #8b8b8b; - top: -69px; - left: 0; - height: auto; - width: 202px; - display: inline-block; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - z-index: 1002; - background-color: #e0e0e0; - background-image: -moz-linear-gradient(top,#f2f2f2,#c4c4c4); - background-image: -ms-linear-gradient(top,#f2f2f2,#c4c4c4); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#c4c4c4)); - background-image: -webkit-linear-gradient(top,#f2f2f2,#c4c4c4); - background-image: -o-linear-gradient(top,#f2f2f2,#c4c4c4); - background-image: linear-gradient(top,#f2f2f2,#c4c4c4); - background-repeat: repeat-x; -} - - .grpdx .text_area_toolbar.small-toolbar - { - top: -40px; - } - -.grpdx .ta_move -{ - width: 19px; - height: 19px; - margin: 1px; - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -786px -867px; - display: inline-block; - float: left; - position: relative; -} - - .grpdx .ta_move:hover - { - border: 1px solid #d2470d; - margin: 0; - background-color: #dfdfdf; - } - - .grpdx .ta_move:hover .ta_tooltip - { - display: block; - } - -.grpdx .ta_tool_wrapper -{ - float: left; - position: relative; - margin: 0 0 0 6px; -} - - .grpdx .ta_tool_wrapper:hover .ta_tooltip - { - display: block; - } - -.grpdx .ta_color_selected -{ - width: 19px; - height: 19px; - display: inline-block; - border: 1px solid #8a8a8a; - border-right: 0 none; - float: left; -} - -.grpdx .ta_dropdown_btn -{ - border: 1px solid #8a8a8a; - display: inline-block; - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; - background: url(../images/sprites_annotation.png) no-repeat; - width: 9px; - height: 19px; - background-position: -813px -861px; - background-color: #dfdfdf; -} - - .grpdx .ta_dropdown_btn:hover - { - border-color: #d2470d; - } - -.grpdx .ta_font_selected -{ - height: 19px; - width: 71px; - overflow: hidden; - text-overflow: ellipsis; - -ms-text-overflow: ellipsis; - -o-text-overflow: ellipsis; - white-space: nowrap; - line-height: 19px; - padding: 0 0 0 5px; - display: inline-block; - float: left; - border: 1px solid #8a8a8a; - border-right: 0 none; - background: #fff; - font-size: 12px; -} - -.grpdx .ta_size_selected -{ - height: 19px; - width: 71px; - overflow: hidden; - text-overflow: ellipsis; - -ms-text-overflow: ellipsis; - -o-text-overflow: ellipsis; - white-space: nowrap; - line-height: 19px; - padding: 0 0 0 5px; - display: inline-block; - float: left; - border: 1px solid #8a8a8a; - border-right: 0 none; - background: #fff; - font-size: 12px; - width: 20px; -} - -.grpdx .ta_plus -{ - position: relative; - height: 19px; - width: 18px; - display: inline-block; - z-index: 998; - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; - float: left; - border: 1px solid #8a8a8a; - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -809px -896px; - background-color: #dfdfdf; -} - - .grpdx .ta_plus:hover - { - border-color: #d2470d; - z-index: 999; - } - -.grpdx .ta_minus -{ - position: relative; - height: 19px; - width: 18px; - display: inline-block; - z-index: 998; - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; - float: left; - border: 1px solid #8a8a8a; - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -809px -896px; - background-color: #dfdfdf; - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; - margin-left: -1px; - background-position: -832px -896px; -} - - .grpdx .ta_minus:hover - { - border-color: #d2470d; - z-index: 999; - } - -.grpdx .ta_del_wrapper -{ - float: left; - margin: -5px 0 0 6px; - padding: 3px 0 0; -} - - .grpdx .ta_del_wrapper:hover .ta_tooltip - { - display: block; - } - -.grpdx .ta_del -{ - display: inline-block; - width: 19px; - height: 19px; - background: url(../images/sprites_annotation.png) no-repeat; - margin: 2px 4px 0; - border: 1px solid rgba(255,255,255,0); - background-position: -786px -894px; -} - - .grpdx .ta_del:hover - { - border: 1px solid #d2470d; - margin: 2px 4 px 0; - background-color: #dfdfdf; - } - -.grpdx .ta_resize_box -{ - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -829px -872px; - cursor: pointer; - width: 11px; - height: 11px; - display: inline-block; - position: absolute; - bottom: -6px; - right: -6px; - z-index: 9997; -} - - .grpdx .ta_resize_box:hover - { - background-position: -844px -872px; - } - -.grpdx .ta_tool_wrapper.no_left_m -{ - margin-left: 0 !important; -} - -.grpdx .ta_tool_wrapper .text_control -{ - position: relative; - height: 19px; - width: 18px; - display: inline-block; - z-index: 998; - float: left; - border: 1px solid #8a8a8a; - background: url(../images/sprites_annotation.png) no-repeat; - background-color: #dfdfdf; -} - - .grpdx .ta_tool_wrapper .text_control:hover - { - border-color: #d2470d; - z-index: 999; - } - - .grpdx .ta_tool_wrapper .text_control.active - { - background-color: #aaa; - } - - .grpdx .ta_tool_wrapper .text_control.ta_bold - { - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; - background-position: -809px -914px; - } - - .grpdx .ta_tool_wrapper .text_control.ta_italic - { - border-left: 0; - border-right: 0; - background-position: -824px -914px; - } - - .grpdx .ta_tool_wrapper .text_control.ta_underline - { - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; - background-position: -840px -914px; - } - - .grpdx .ta_tool_wrapper .text_control.ta_align_left - { - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; - background-position: -808px -930px; - } - - .grpdx .ta_tool_wrapper .text_control.ta_align_center - { - border-left: 0; - border-right: 0; - background-position: -824px -930px; - } - - .grpdx .ta_tool_wrapper .text_control.ta_align_right - { - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; - background-position: -840px -930px; - } - -.grpdx .ta_dropdown -{ - position: absolute; - top: 26px; - border: 1px solid #8a8a8a; - background: #fff; - padding: 3px; - margin: 0; - z-index: 9999; - display: none; -} - - .grpdx .ta_dropdown li - { - list-style: none outside none; - padding: 1px 3px; - font-size: 12px; - } - - .grpdx .ta_dropdown li:hover - { - background: #dfdfdf; - } - - .grpdx .ta_dropdown li a - { - color: #393939; - display: inline-block; - } - - .grpdx .ta_dropdown li a:hover - { - text-decoration: none; - color: #393939; - } - - .grpdx .ta_dropdown.font_color - { - width: 231px; - } - - .grpdx .ta_dropdown.font_color li - { - float: left; - } - -.grpdx .ta_tooltip -{ - position: absolute; - top: -30px; - line-height: 18px; - padding: 2px 8px; - font-size: 14px; - display: none; - background: #8a8a8a; - background: rgba(0,0,0,0.8); - color: #fff; - border-radius: 4px; -} - -.grpdx .ta_tooltip_pointer -{ - display: inline-block; - white-space: nowrap; - position: absolute; - bottom: -10px; - left: 50%; - margin-left: -5px; - border-color: rgba(0,0,0,0.8) transparent transparent; - border-style: solid; - border-width: 5px; - height: 0; - width: 0; -} - -.grpdx .ta_tp_move -{ - margin-left: -15px; -} - -.grpdx .ta_tp_color -{ - margin-left: -32px; - width: 81px; -} - -.grpdx .ta_tp_font -{ - margin-left: -6px; - width: 69px; - font-family: "PT Sans",Helvetica,Arial,sans-serif; - font-size: 14px; -} - -.grpdx .ta_tp_font_size -{ - margin-left: -42px; - width: 106px; -} - -.grpdx .ta_tp_font_size_adjust -{ - margin-left: -38px; - width: 107px; -} - -.grpdx .ta_tp_del -{ - margin-left: -14px; - width: 38px; - top: 0px; -} - -.grpdx .ta_tp_text_style -{ - width: 106px; - margin-left: -32px; -} - -.grpdx .ta_tp_text_alignment -{ - width: 137px; - margin-left: -47px; -} - -.grpdx .ta_color_sel -{ - width: 19px; - height: 19px; - display: inline-block; - margin: 1px -2px -3px; -} - - .grpdx .ta_color_sel.black - { - background: black; - } - - .grpdx .ta_color_sel.red - { - background: red; - } - - .grpdx .ta_color_sel.orange - { - background: orange; - } - - .grpdx .ta_color_sel.green - { - background: green; - } - - .grpdx .ta_color_sel.blue - { - background: blue; - } - -.grpdx .document_anno_icon -{ - background: url(../images/sprites_annotation.png) no-repeat; - width: 22px; - height: 22px; - position: absolute; - display: inline-block; - z-index: 999; - cursor: pointer; -} - -.grpdx .text_anno -{ - background-position: -302px -223px; -} - -.grpdx .area_anno -{ - background-position: -302px -304px; -} - -.grpdx .point_anno -{ - background-position: -301px -197px; -} - -.grpdx .arrow_anno -{ - background-position: -1067px -211px; -} - -.grpdx .redtxt_anno -{ - background-position: -1099px -212px; - width: 26px; -} - -.grpdx .redimg_anno -{ - background-position: -1131px -212px; - width: 24px; -} - -.grpdx .underline_anno -{ - background-position: -1068px -247px; - width: 24px; -} - -.grpdx .ruler_anno -{ - background-position: -1100px -246px; - width: 24px; -} - -.grpdx .polyline_anno -{ - background-position: -302px -333px; -} - -.grpdx .replace_anno -{ - background-position: -1068px -176px; - width: 15px; - margin: -6px 0 0 3px; - background-image: url(../images/sprites_annotation.png); -} - -.grpdx .replacetext_anno -{ - background-position: -1068px -176px; - width: 25px; - margin-top: -6px; - background-image: url(../images/sprites_annotation.png); -} - -.grpdx .redtext_anno -{ - background-position: -1132px -176px; - width: 28px; - height: 26px; - margin-top: -5px; - background-image: url(../images/sprites_annotation.png); -} - -.grpdx .redarea_anno -{ - background-position: -1099px -176px; - width: 26px; - height: 27px; - margin-top: -5px; - background-image: url(../images/sprites_annotation.png); -} - -.grpdx .current_anno -{ - background-position: -303px -258px !important; - width: 20px !important; - margin: 0; -} - -.grpdx .anno_del -{ - position: absolute; - line-height: 20px; - font-weight: bold; -} - -.grpdx .blue_button -{ - background: #125389; - border: 1px solid #125389; - color: #fff !important; - text-shadow: none; -} - -.grpdx div.thumbnailsContainer, .grpdx .thumbs_btn -{ - z-index: 100; -} - -.grpdx .new_head_tools_wrapper -{ - margin: 0 0 0 10px; - background-color: rgba(17,83,137,0.1); - width: auto; - height: 45px; - border-color: rgba(255,255,255,0.1); - border-width: 1px; - border-style: solid; - -moz-box-shadow: 1px 3px 1px 0px rgba(0,0,0,0.1); - -webkit-box-shadow: 1px 3px 1px 0px rgba(0,0,0,0.1); - box-shadow: 1px 3px 1px 0px rgba(0,0,0,0.1); - -ms-filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX = 1,OffY = 3,Color = #1a000000,Positive = true)"; - display: inline-block; - position: relative; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - padding: 0 3px; -} - -.grpdx .new_head_tools_dropdown_wrapper -{ - position: relative; - width: 40px; - height: 45px; - float: left; -} - -.grpdx .new_head_tools_btn -{ - width: 33px; - height: 31px; - border: 1px solid #114f83; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - display: inline-block; - float: left; - cursor: pointer; - -webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.15); - -moz-box-shadow: 0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.15); - box-shadow: 0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.15); - margin: 5px 3px; -} - - .grpdx .new_head_tools_btn.text_tool - { - line-height: 29px; - padding: 0 7px; - color: #fff; - width: auto; - } - - .grpdx .new_head_tools_btn:hover, .grpdx .new_head_tools_btn.active - { - border-color: #0f4470; - -webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.4) inset,0 1px 0 rgba(255,255,255,0.3); - -moz-box-shadow: 0 1px 0 rgba(255,255,255,0.4) inset,0 1px 0 rgba(255,255,255,0.3); - box-shadow: 0 1px 0 rgba(255,255,255,0.4) inset,0 1px 0 rgba(255,255,255,0.3); - } - -.grpdx .head_tool_dropdown -{ - -webkit-box-shadow: 1px 1px 0px rgba(0,0,0,0.2); - -moz-box-shadow: 1px 1px 0px rgba(0,0,0,0.2); - box-shadow: 1px 1px 0px rgba(0,0,0,0.2); - padding: 7px 0; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - left: 3px; - right: auto; - top: 43px; -} - - .grpdx .head_tool_dropdown li - { - line-height: 14px; - list-style: none; - } - - .grpdx .head_tool_dropdown li a - { - line-height: 14px; - padding: 2px 6px 5px; - } - - .grpdx .head_tool_dropdown li a:hover - { - background: none; - color: #29bbec; - text-decoration: none; - } - - .grpdx .head_tool_dropdown li a:hover .h_t_d_i_annotate - { - background-position: -775px -310px; - } - - .grpdx .head_tool_dropdown li a:hover .h_t_d_i_fitwidth - { - background-position: -537px -994px; - } - - .grpdx .head_tool_dropdown li a:hover .h_t_d_i_fitheight - { - background-position: -536px -1017px; - } - - .grpdx .head_tool_dropdown li a:hover .h_t_d_i_scroll - { - background-position: -597px -995px; - } - - .grpdx .head_tool_dropdown li a:hover .h_t_d_i_pdf - { - height: 20px; - background-position: -566px -1068px; - } - - .grpdx .head_tool_dropdown li a:hover .h_t_d_i_normal - { - height: 20px; - background-position: -566px -1107px; - } - - .grpdx .head_tool_dropdown li a span - { - background: url(../images/sprites_annotation.png) no-repeat; - margin: -2px -2px 0 0; - display: inline-block; - float: left; - height: 23px; - width: 23px; - } - - .grpdx .head_tool_dropdown li a span.h_t_d_i_annotate - { - background-position: -740px -310px; - } - - .grpdx .head_tool_dropdown li a span.h_t_d_i_fitwidth - { - background-position: -516px -993px; - } - - .grpdx .head_tool_dropdown li a span.h_t_d_i_fitheight - { - background-position: -515px -1016px; - } - - .grpdx .head_tool_dropdown li a span.h_t_d_i_scroll - { - background-position: -566px -994px; - } - - .grpdx .head_tool_dropdown li a span.h_t_d_i_pdf - { - height: 20px; - background-position: -566px -1068px; - } - - .grpdx .head_tool_dropdown li a span.h_t_d_i_doc - { - height: 20px; - background-position: -566px -1127px; - } - - .grpdx .head_tool_dropdown li a span.h_t_d_i_normal - { - height: 20px; - background-position: -566px -1107px; - } - -.grpdx .link_with_pointer_cursor -{ - cursor: pointer; -} - -.grpdx #tab_summary .collapsed_anno_box -{ - width: 225px; - padding: 5px 0 2px 7px; - margin: 10px 0 10px -5px; -} - - .grpdx #tab_summary .collapsed_anno_box a - { - float: left; - font-family: "PT Sans",Helvetica,Arial,sans-serif; - font-size: 14px; - } - - .grpdx #tab_summary .collapsed_anno_box .tab_sum_comment_text - { - width: 173px; - margin: 0 0 0 17px; - overflow: hidden; - text-overflow: ellipsis; - -ms-text-overflow: ellipsis; - -o-text-overflow: ellipsis; - white-space: nowrap; - float: left; - color: #393939; - } - - .grpdx #tab_summary .collapsed_anno_box .tab_sum_comment_text:hover - { - color: #393939; - } - -.grpdx .rev_avatar -{ - position: relative; - float: left; -} - -.grpdx .reviewers_box -{ - margin: 10px 0; - height: 32px; - display: inline-block; -} - -.grpdx .rev_name -{ - line-height: 32px; - font-size: 16px; - font-weight: bold; - margin: 0 0 0 10px; - overflow: hidden; - text-overflow: ellipsis; - -ms-text-overflow: ellipsis; - -o-text-overflow: ellipsis; - white-space: nowrap; - width: 180px; - display: inline-block; - float: left; -} - -.grpdx .rev_color_box -{ - width: 9px; - height: 9px; - top: -5px; - right: -5px; - position: absolute; - border: 1px solid #b2b2b2; - background: #3fb5dc; -} - -.grpdx .tab_users_wrapper -{ - padding: 8px; - width: 224px; -} - -.grpdx viewer_header -{ - overflow: visible; -} - -.grpdx .fileOpenDialogWrapper -{ - z-index: 10000; -} - -.grpdx .sigModalbody -{ - margin: 5px; -} - -.grpdx .ivn_line_wrapper -{ - margin: 10px 0; - padding: 0 20px; - line-height: 32px; - overflow: hidden; -} - -.grpdx .inv_line_name -{ - width: 60px; - text-align: right; - float: left; - margin: 0 5px 0 0; - line-height: 25px; -} - -.grpdx .mng_line_name -{ - width: 75px; - text-align: right; - float: left; - margin: 0 5px 0 0; - line-height: 25px; -} - -.grpdx .inv_mail_input -{ - width: 290px; - float: left; -} - -.grpdx .inv_msg_area -{ - width: 290px; -} - -.grpdx .inv_send_btn -{ - margin: 0 10px 10px 0; - float: right !important; -} - -.grpdx .mng_line_wrapper -{ - line-height: 32px; - margin: 0 0 5px; - overflow: hidden; - padding: 0 20px; -} - -.grpdx #inv_mail -{ - padding: 10px 0 0 0; -} - -.grpdx .tab-content -{ - overflow: hidden; - background-color: #fff; - border: 1px solid #d5d5d5; - margin-top: -1px; - -webkit-border-radius: 0 6px 6px 6px; - -moz-border-radius: 0 6px 6px 6px; - border-radius: 0 6px 6px 6px; -} - -.grpdx .tabs-below .nav-tabs, .grpdx .tabs-right .nav-tabs, .grpdx .tabs-left .nav-tabs -{ - border-bottom: 0; -} - -.grpdx .tab-content > .tab-pane, .grpdx .pill-content > .pill-pane -{ - display: none; -} - -.grpdx .tab-content > .active, .grpdx .pill-content > .active -{ - display: block; -} - -.grpdx .tabs-below .nav-tabs -{ - border-top: 1px solid #ddd; -} - - .grpdx .tabs-below .nav-tabs > li - { - margin-top: -1px; - margin-bottom: 0; - } - - .grpdx .tabs-below .nav-tabs > li > a - { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; - } - - .grpdx .tabs-below .nav-tabs > li > a:hover - { - border-bottom-color: transparent; - border-top-color: #ddd; - } - - .grpdx .tabs-below .nav-tabs .active > a, .grpdx .tabs-below .nav-tabs .active > a:hover - { - border-color: transparent #ddd #ddd #ddd; - } - -.grpdx .tabs-left .nav-tabs > li, .grpdx .tabs-right .nav-tabs > li -{ - float: none; -} - - .grpdx .tabs-left .nav-tabs > li > a, .grpdx .tabs-right .nav-tabs > li > a - { - min-width: 74px; - margin-right: 0; - margin-bottom: 3px; - } - -.grpdx .tabs-left .nav-tabs -{ - float: left; - margin-right: 19px; - border-right: 1px solid #ddd; -} - - .grpdx .tabs-left .nav-tabs > li > a - { - margin-right: -1px; - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; - } - - .grpdx .tabs-left .nav-tabs > li > a:hover - { - border-color: #eee #ddd #eee #eee; - } - - .grpdx .tabs-left .nav-tabs .active > a, .grpdx .tabs-left .nav-tabs .active > a:hover - { - border-color: #ddd transparent #ddd #ddd; - *border-right-color: #fff; - } - -.grpdx .tabs-right .nav-tabs -{ - float: right; - margin-left: 19px; - border-left: 1px solid #ddd; -} - - .grpdx .tabs-right .nav-tabs > li > a - { - margin-left: -1px; - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; - } - - .grpdx .tabs-right .nav-tabs > li > a:hover - { - border-color: #eee #eee #eee #ddd; - } - - .grpdx .tabs-right .nav-tabs .active > a, .grpdx .tabs-right .nav-tabs .active > a:hover - { - border-color: #ddd #ddd #ddd transparent; - border-left-color: #fff; - } - -.grpdx .page-image, .grpdx .highlight-pane, .grpdx .search-pane -{ - margin: 0; -} - -.grpdx .transformtool -{ - position: absolute; - border: 1px solid #cb6c6f; -} - - .grpdx .transformtool:before, .grpdx .transformtool:after, .grpdx .transformtool .bd_lr:before, .grpdx .transformtool .bd_lr:after - { - content: ''; - display: block; - top: -4px; - left: 0; - width: 100%; - height: 7px; - background: url(../images/selection2.gif); - position: absolute; - z-index: -1; - } - - .grpdx .transformtool:after - { - top: auto; - bottom: -4px; - } - - .grpdx .transformtool .bd_lr:before, .grpdx .transformtool .bd_lr:after - { - left: -4px; - top: -4px; - height: 100%; - width: 7px; - padding: 4px 0; - } - - .grpdx .transformtool .bd_lr:after - { - right: -4px; - left: auto; - } - - .grpdx .transformtool .sq_t:before, .grpdx .transformtool .sq_t:after, .grpdx .transformtool .sq_b:before, .grpdx .transformtool .sq_b:after, .grpdx .transformtool .sq_c:before, .grpdx .transformtool .sq_c:after, .grpdx .transformtool .sq_m:before, .grpdx .transformtool .sq_m:after - { - content: ''; - position: absolute; - width: 5px; - height: 5px; - background: #fff; - border: 1px solid #505050; - } - - .grpdx .transformtool .sq_t:before - { - top: -4px; - left: -4px; - } - - .grpdx .transformtool .sq_t:after - { - top: -4px; - right: -4px; - } - - .grpdx .transformtool .sq_b:before - { - bottom: -4px; - left: -4px; - } - - .grpdx .transformtool .sq_b:after - { - bottom: -4px; - right: -4px; - } - - .grpdx .transformtool .sq_c:before - { - top: -4px; - left: 50%; - margin-left: -4px; - } - - .grpdx .transformtool .sq_c:after - { - bottom: -4px; - left: 50%; - margin-left: -4px; - } - - .grpdx .transformtool .sq_m:before - { - top: 50%; - left: -4px; - margin-top: -4px; - } - - .grpdx .transformtool .sq_m:after - { - top: 50%; - right: -4px; - margin-top: -4px; - } - -.grpdx .replace_tab -{ - position: absolute; - background: #e9865b; - font: 700 15px/30px 'PT Sans',sans-serif; - height: 30px; - width: 80px; - color: #fff; - text-align: center; - border-radius: 3px 3px 0 0; - top: -30px; - left: 0; -} - -.grpdx .file_browser_folder_list, .grpdx .file_browser_file_list -{ - margin: 0; -} - - .grpdx .file_browser_folder_list li, .grpdx .file_browser_file_list li - { - list-style: none; - } - -.grpdx .small_button -{ - color: #393939; -} - - .grpdx .small_button:hover - { - text-decoration: none; - color: #393939; - } - -.grpdx .redactiontextarea -{ - position: absolute; - background: #333; - padding: 0 6px 6px 0; - margin: -3px 0 0 -3px; - cursor: pointer; -} - -.grpdx .replacetextarea -{ - background: #f19770; - position: absolute; -} - -.grpdx .iframe-code -{ - height: 80px; - width: 604px; -} - -.widget-tooltip -{ - position: absolute; - width: 50px; - height: 50px; -} - - .widget-tooltip .wt-icon - { - background: url(../images/sprites_annotation.png) -305px -386px; - width: 16px; - height: 17px; - position: absolute; - right: 0; - top: 0; - z-index: 2; - } - - .widget-tooltip .wt-icon + .tooltip - { - position: absolute !important; - background: rgba(0,0,0,0.8); - border-radius: 5px; - font: 700 12px/22px "PT Sans",Helvetica,Arial,sans-serif; - color: #fff; - padding: 0 5px; - white-space: nowrap; - } - - .widget-tooltip .wt-container - { - background: #fff9cf; - border-radius: 5px; - width: 180px; - display: block; - position: absolute; - min-height: 100px; - border: 1px solid #e2ce7a; - top: -5px; - display: none; - left: 100%; - margin-left: -20px; - } - - .widget-tooltip .wt-header - { - font: 13px/22px "PT Sans",Helvetica,Arial,sans-serif; - color: #333; - padding: 0 5px 0 25px; - border-bottom: 1px solid #e6d584; - } - - .widget-tooltip .wt-close - { - width: 16px; - height: 16px; - position: absolute; - background: url(../images/sprites_annotation.png) -306px -403px; - text-indent: -99px; - overflow: hidden; - right: 3px; - top: 3px; - } - - .widget-tooltip ul - { - margin-bottom: 15px !important; - } - - .widget-tooltip ul:last-child - { - margin-bottom: 4px !important; - } - - .widget-tooltip ul, .widget-tooltip li - { - padding: 0; - list-style: none; - margin: 0; - } - - .widget-tooltip li - { - margin: 0 8px 0 4px; - position: relative; - } - - .widget-tooltip li:hover .date, .widget-tooltip li:hover .wt-comment - { - background: #fffef8; - } - - .widget-tooltip li li - { - margin: 0 0 0 10px; - } - - .widget-tooltip li li h5:before - { - content: ''; - display: inline-block; - background: url(../images/sprites_annotation.png) -309px -423px; - width: 10px; - height: 10px; - margin-right: 5px; - } - - .widget-tooltip .date, .widget-tooltip .wt-comment - { - background: #fffdec; - border: 1px solid #e7d685; - margin: 0; - font: 11px/24px "PT Sans",Helvetica,Arial,sans-serif; - } - - .widget-tooltip .date - { - border-radius: 5px 5px 0 0; - border-bottom: 0; - color: #b4b3a7; - padding: 0 8px; - } - - .widget-tooltip .wt-comment - { - border-radius: 0 0 5px 5px; - border-top: 0; - color: #333; - padding: 4px 8px 6px; - margin-top: -7px; - line-height: 16px; - } - - .widget-tooltip .overflowed .wt-comment - { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - .widget-tooltip .overflowed .icon-expand - { - display: block; - } - - .widget-tooltip h5 - { - margin: 6px 0 8px 5px; - font: 700 12px "PT Sans",Helvetica,Arial,sans-serif; - } - - .widget-tooltip .icon-expand - { - color: #c2c1b5; - padding: 5px; - position: absolute; - right: 3px; - top: 22px; - font: 700 15px "PT Sans",Helvetica,Arial,sans-serif; - display: none; - } - - .widget-tooltip .icon-expand:hover - { - color: #c2c1b5; - text-decoration: none; - } - - .widget-tooltip .icon-expand + .tooltip - { - position: absolute !important; - background: rgba(0,0,0,0.8); - border-radius: 5px; - font: 700 12px/22px "PT Sans",Helvetica,Arial,sans-serif; - color: #fff; - padding: 0 5px; - white-space: nowrap; - } - - .widget-tooltip .scrollbar - { - height: 230px; - width: 180px; - } - -.scrollable -{ - position: relative; -} - - .scrollable:focus - { - outline: 0; - } - - .scrollable .viewport - { - position: relative; - overflow: hidden; - } - - .scrollable .viewport .overview - { - position: absolute; - width: 179px; - } - - .scrollable .scroll-bar - { - display: none; - } - - .scrollable .scroll-bar:before - { - content: ''; - display: block; - position: absolute; - top: 0; - left: -174px; - right: -2px; - height: 10px; - background: #fff; - z-index: 5; - background-color: transparent; - background-image: -webkit-linear-gradient(top,rgba(0,0,0,0.1),transparent); - background-image: linear-gradient(to bottom,rgba(0,0,0,0.1),transparent); - } - - .scrollable .scroll-bar.vertical - { - position: absolute; - height: 100%; - width: 4px; - right: 2px; - } - - .scrollable .scroll-bar.vertical .thumb - { - width: 100%; - min-height: 10px; - } - - .scrollable .scroll-bar .thumb - { - position: absolute; - background: rgba(0,0,0,0.2); - border-radius: 3px; - } - -.not-selectable -{ - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.grpdx .comments_sidebar_wrapper .comments_sidebar_collapsed, .grpdx .comments_sidebar_wrapper .comments_sidebar_expanded -{ - position: absolute; - right: 0; -} - -.grpdx .new_head_tools_wrapper -{ - margin-left: 5px; -} - - .grpdx .new_head_tools_wrapper.undo-bar - { - margin: 0; - } - - .grpdx .new_head_tools_wrapper[name='search_wrapper'] - { - margin: 0; - } - -.input_search, .grpdx .input_search -{ - width: 65px; -} - -.input_search_clear -{ - left: 108px; -} - -.comments_scroll -{ - display: inline-block; - width: 240px; -} - - .comments_scroll .viewport - { - overflow: hidden; - position: relative; - margin: 7px 0 0 15px; - width: 200px; - } - - .comments_scroll .overview - { - list-style: none; - position: absolute; - left: 0; - top: 0; - padding: 0; - margin: 0; - } - - .comments_scroll .scrollbar - { - background: transparent url(../images/bg-scrollbar-track-y.png) no-repeat 0 0; - padding: 5px 0 0 0; - position: relative; - background-position: 0 0; - float: right; - width: 15px; - margin-left: 5px; - } - - .comments_scroll .track - { - background: transparent url(../images/bg-scrollbar-trackend-y_sidebar.png) no-repeat 0 100%; - height: 100%; - width: 13px; - position: relative; - padding: 0 1px; - } - - .comments_scroll .thumb - { - background: transparent url(../images/bg-scrollbar-thumb-y_sidebar.png) no-repeat 50% 100%; - height: 20px; - width: 25px; - cursor: pointer; - overflow: hidden; - position: absolute; - top: 0; - left: -5px; - } - - .comments_scroll .thumb .end - { - background: transparent url(../images/bg-scrollbar-thumb-y.png) no-repeat 50% 0; - overflow: hidden; - height: 5px; - width: 25px; - } - - .comments_scroll .disable - { - display: none; - } - - .comments_scroll h3 - { - margin: 0 0 5px 0; - } - -.grpdx .rev_name -{ - width: 150px !important; -} - -#users_scroll .overview -{ - width: 100%; -} - -#upload-button > .file-input -{ - width: auto; -} - -.new_head_tools_btn.h_t_i_import.import_btn.import_file_uploader > .file-input -{ - overflow: hidden; - width: 32px !important; - height: 32px !important; - margin: 0; -} - -.new_head_tools_dropdown_wrapper .h_t_i_print -{ - background: url(../images/sprites_annotation.png) no-repeat; - background-position: -463px -1060px; -} - -.grpdx .head_tool_dropdown li a .h_t_d_printclear -{ - background: url(../images/sprites_annotation.png) -596px -1083px no-repeat; -} - -.grpdx .head_tool_dropdown li a .h_t_d_printanno -{ - background: url(../images/sprites_annotation.png) -599px -1061px no-repeat; -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/CSS/Annotation.css b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/CSS/Annotation.css deleted file mode 100644 index 231a82c..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/CSS/Annotation.css +++ /dev/null @@ -1,144 +0,0 @@ -.replyAuthor -{ - color: #707070; - vertical-align: top; - display: inline-block; - width: 95%; - overflow: hidden; -} - -.replyContent -{ - word-wrap: break-word; - display: inline; - width: 100%; -} - - .replyContent.textInput - { - height: 16px; - width: 90%; - font-size: 10px; - } - - -.annotationsContainer -{ - position: absolute; - z-index: 23; - width: 100%; - height: 100%; - top: 0; - line-height: 18px; -} - - -.pagesContainer -{ - padding: 7px 0; - position: absolute; -} - -.textStrikeout -{ - position: absolute; - z-index: 24; - cursor: pointer; -} - -.textStrikeoutLine -{ - position: absolute; - top: 50%; - height: 2px; - width: 100%; - background-color: red; - /*z-index:100;*/ -} - - -.raphaelWrapper -{ - width: 100%; - height: 100%; - z-index: 22; - overflow: visible; -} - - .raphaelWrapper svg - { - overflow: visible !important; - } - -.figureContextMenu -{ - position: absolute; - z-index: 102; - background-color: silver; - padding: 5px 20px; - cursor: pointer; - border: 3px outset silver; -} - -/*.colon::after { - content: ":"; -}*/ - -.ellipsis::after -{ - content: "..."; -} - -.tool_field .popupdiv-hover -{ - display: none; -} - -.tool_field:hover .popupdiv-hover -{ - display: block; -} - -.comment_text -{ - white-space: pre-wrap; /* CSS3 */ - white-space: -moz-pre-wrap; /* Firefox */ - white-space: -pre-wrap; /* Opera <7 */ - white-space: -o-pre-wrap; /* Opera 7 */ - word-wrap: break-word; /* IE */ - min-height: 18px; -} - -.grpdx .page_number_in_summary -{ - font-size: 14px; - font-style: italic; - text-align: center; - margin-left: -20px; - margin-top: 5px; -} - -.centered_doc_page -{ - margin: 0 auto; - display: block !important; - float: right; - margin-right: 18.5%; -} - -.grpdx .page-image, .grpdx .highlight-pane, .grpdx .search-pane -{ - margin: 0; -} - -.selection-highlight.static -{ - cursor: pointer; -} - -.grpdx .comments_sidebar_wrapper .comments_sidebar_collapsed, -.grpdx .comments_sidebar_wrapper .comments_sidebar_expanded -{ - position: absolute; - right: 0; -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/CSS/bootstrap.css b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/CSS/bootstrap.css deleted file mode 100644 index 538d5d7..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/CSS/bootstrap.css +++ /dev/null @@ -1 +0,0 @@ -.highlight-pane{position:relative;margin:0 37px}.custom-pane{position:relative}.search-pane{position:relative;margin:0 34px}.highlight{border-style:none;cursor:text;font-size:0;line-height:0;position:absolute;z-index:24}.selection-highlight{background-color:#28f;opacity:.3;filter:alpha(opacity=20);padding:0 6px 6px 0;margin:-3px 0 0 -3px}.search-highlight{background-color:green;opacity:.4;filter:alpha(opacity=50)}.template-selection-highlight{background-color:#28f;opacity:.2;filter:alpha(opacity=20)}.selection-check{background:url("../images/sprite1.png") no-repeat top left;position:absolute;background-position:-496px -127px;height:16px;width:16px;cursor:pointer}.selection-del{background:url("../images/sprite1.png") no-repeat top left;background-position:-480px -127px;position:absolute;height:16px;width:16px;cursor:pointer}#selection-content{height:32px;left:0;position:absolute;top:-480px;width:32px;display:none}#book-wrapper.single_page_wrapper{width:850px;height:1100px;margin:18px auto}#doc_viewer.scroll_on{overflow-x:hidden;overflow-y:hidden}.page_flip_layout.single{margin:5px 0}.page_flip_layout.single .page{background:#fff}.page_prev{position:absolute;display:block;height:1100px;width:30px;top:0;left:-30px;background:#000;opacity:.2;border-radius:4px 0 0 4px}.page_prev:hover{opacity:.4}.page_next{position:absolute;display:block;height:1100px;width:30px;top:0;right:-30px;background:#000;opacity:.2;border-radius:0 4px 4px 0}.page_next:hover{opacity:.4}#doc_viewer_wrapper.single_page_v2{top:0;bottom:0}.page_flip_layout .page.hard,.page_flip_layout .page.hard_ie9{background:none repeat scroll 0 0 #125389}.page_flip_layout .page.hard h1,.page_flip_layout .page.hard_ie9 h1{background:none repeat scroll 0 0 #fff;margin:100px 0 0 30px;padding:10px}a.first_page_link:hover{text-decoration:none}#book-wrapper{width:1700px;height:1100px;margin:0 auto}#book-zoom{-webkit-transition:-webkit-transform 1s;-moz-transition:-moz-transform 1s;-ms-transition:-ms-transform 1s;-o-transition:-o-transform 1s;transition:transform 1s;position:relative}.animated{-webkit-transition:margin-left .2s ease-in-out;-moz-transition:margin-left .2s ease-in-out;-o-transition:margin-left .2s ease-in-out;-ms-transition:margin-left .2s ease-in-out;transition:margin-left .2s ease-in-out}.page_flip_layout{margin:5px 0}.page_flip_layout .page{background:#fff;-webkit-box-shadow:0 0 20px rgba(0,0,0,.2);-moz-box-shadow:0 0 20px rgba(0,0,0,.2);-ms-box-shadow:0 0 20px rgba(0,0,0,.2);-o-box-shadow:0 0 20px rgba(0,0,0,.2);box-shadow:0 0 20px rgba(0,0,0,.2)}.page_flip_layout .even .gradient{position:absolute;top:0;left:0;width:100%;height:100%;background-image:url(../images/right-border.png);background-position:right top;background-repeat:repeat-y}.page_flip_layout .odd .gradient{position:absolute;top:0;left:0;width:100%;height:100%;background-image:url(../images/left-border.png);background-position:left top;background-repeat:repeat-y}.page_flip_layout .page-wrapper{-webkit-perspective:2000px;-moz-perspective:2000px;-ms-perspective:2000px;perspective:2000px}.page_flip_layout .loader{background-image:url(../images/loader.gif);width:22px;height:22px;position:absolute;top:280px;left:219px}.shadow{-webkit-transition:-webkit-box-shadow .5s;-moz-transition:-moz-box-shadow .5s;-o-transition:-webkit-box-shadow .5s;-ms-transition:-ms-box-shadow .5s;-webkit-box-shadow:0 0 20px #ccc;-moz-box-shadow:0 0 20px #ccc;-o-box-shadow:0 0 20px #ccc;-ms-box-shadow:0 0 20px #ccc;box-shadow:0 0 20px #ccc}.ui-state-disabled{cursor:default!important}.turnjs-slider .ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.turnjs-slider .ui-slider{position:relative;text-align:left}.turnjs-slider .ui-slider-handle{position:absolute;z-index:0;width:80px;height:8px;cursor:default;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}.turnjs-slider .ui-slider-horizontal{height:8px;width:520px;margin-left:39px}.turnjs-slider .ui-slider-horizontal .ui-slider-handle{margin-left:-40px;margin-top:-1px}li.thumb-page{position:relative}.progresspin{z-index:-1}.embedded_viewer_wrapper{background:url("../images/mainbg.png") repeat scroll 0 0 transparent;bottom:0;display:inline-block;left:0;position:absolute;top:40px;width:100%}.doc_viewer{width:100%;height:100%;overflow:auto}.thumbs_btn_slide{left:205px}.viewer_header{background:none repeat scroll 0 0 #125389;border-bottom:1px solid #073052;display:inline-block;position:relative;width:100%}.groupdocs_viewer_wrapper{position:relative;background-color:#125389}.page.hard{background:none repeat scroll 0 0 #125389}.page{box-shadow:0 0 20px rgba(0,0,0,.2)}div.doc_viewer_flip{height:auto;overflow:visible;position:relative;top:0;padding:0;left:30px;right:30px}div.pages_container_flip{overflow:visible}div.doc_viewer_wrapper_flip{overflow:hidden}.page_image_flip{margin:0}.page.hard h1{background:none repeat scroll 0 0 #fff;margin:100px 0 0 30px;padding:10px}.doc-page{padding:0}.doc_viewer_wrapper_page_flip{display:inline-block;position:absolute;width:100%;height:100%}.page-wrapper{-webkit-perspective:2000px;-moz-perspective:2000px;-ms-perspective:2000px;perspective:2000px}.ui-selectable-helper{position:absolute;z-index:1000;border:1px dotted #000}.grpdx .page-image,.grpdx .viewer_loading_overlay,.grpdx .highlight-pane,.grpdx .search-pane,.grpdx .html_pages_container .html_page_contents{margin:0}.grpdx .pages_container{line-height:0;position:relative}.grpdx .pages_container>.doc-page{margin-bottom:15px;margin-left:7px}div.thumbnailsContainer,.thumbs_btn{z-index:25}.modal-backdrop{z-index:26}.grpdx a,.grpdx a:hover{color:inherit}.grpdx .thumbnailsContainer .thumb-page{min-height:0}div.thumbnailsContainer ul li img.thumb_image{margin:auto;position:absolute;bottom:0;left:0;right:0;top:0}div.thumbnailsContainer ul li .html_page_contents img{width:auto}div.thumbnailsContainer ul li .thumbnail_wrapper{margin:auto;position:absolute;left:0;right:0;top:0;bottom:0}div.thumbnailsContainer ul li .html_page_contents{margin:0;display:inline-block}.grpdx div.thumbnailsContainer ul li .mouse_intercept_overlay{width:100%;height:100%;position:absolute;left:0;top:0;background-color:transparent;z-index:2}.grpdx .ie div.thumbnailsContainer ul li .thumbnail_wrapper{font-size:12pt}.groupdocs_viewer_wrapper{overflow:hidden}.modal.fade{top:-350px}.new_head_tools_btn:after{line-height:18px}.new_head_tools_btn:after{z-index:1000000}.grpdx .modal_dialog_wrapper{display:none;z-index:1001}.grpdx .modal_dialog_overlay{position:absolute;width:100%;height:100%;background-color:#000;opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50);z-index:1001}.grpdx .modal_dialog_content_wrapper{position:absolute;position:absolute;margin:30px auto;z-index:1002;border:1px solid #000;left:50%;top:50%;overflow:auto}.grpdx .modal_dialog_header{height:25px;font-size:15px;font-weight:bold;border-collapse:collapse;background-color:#ccc;padding:3px 10px}.grpdx .modal_dialog_content{background-color:#fff;padding:10px;border:1px solid #000}.grpdx .doc-page{overflow:hidden}.grpdx .html_page_contents{-moz-transform-origin:left 0;-webkit-transform-origin:left 0;-ms-transform-origin:left 0}.grpdx .html_page_contents{line-height:normal;background-color:#fff;z-index:1;position:relative;overflow:hidden;display:inline-block}.grpdx .html_pages_container .viewer_loading_overlay{z-index:1}.grpdx .thumbnail_wrapper{overflow:hidden}.grpdx .thumbnail_panel{display:inline-block}.grpdx .thumbnail_panel div.thumbnailsContainer{display:block}.thumbnailsContainer{display:none}.search_highlight_html{background-color:#9c9;fill:#9c9;position:static!important;font-size:inherit!important}.grpdx .pages_container .current_search_highlight{fill:lime}.grpdx .ie .doc-page .html_page_contents>div{font-size:12em}.grpdx .ie .doc-page .html_page_contents>div.text_document_wrapper,.grpdx .ie .doc-page .html_page_contents>div.html_document_wrapper{font-size:16px}.grpdx .ie .doc-page .html_page_contents>.pageWordToHtml{font-size:1em}.grpdx .ie8 .doc-page{background-color:#fff}.page-image{z-index:1;position:relative}.grpdx .doc-page.cover_page{display:block}.grpdx .doc-page .html_page_contents .slideTitle{display:none}.grpdx .doc-page .html_watermark{z-index:1;height:100%;position:absolute;left:0;top:0;width:100%;line-height:1em}.grpdx .doc-page .html_document_wrapper{background-color:#fff;position:relative;z-index:1;overflow:hidden;display:inline-block}.grpdx .doc-page .text_document_wrapper{display:inline}body>div.groupdocsPrintFrame,body>div.groupdocsPrintFrameDeactivated{display:none}@media print{*{margin:0!important;padding:0!important}html,body{height:100%!important}body{overflow:visible!important}body *{display:none!important}body div.groupdocsPrintFrame{height:100%}body div.groupdocsPrintFrame,body div.groupdocsPrintFrame img{display:block!important}div.groupdocsPrintFrame img{max-width:100%;max-height:100%;page-break-after:always}} \ No newline at end of file diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/CSS/groupdocsViewer.all.css b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/CSS/groupdocsViewer.all.css deleted file mode 100644 index 487aec6..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/CSS/groupdocsViewer.all.css +++ /dev/null @@ -1,20 +0,0 @@ -@font-face{font-family:'PT Sans'; -font-style:normal; -font-weight:normal; -src:url('../../GroupDocs_Annotation_SharePoint_WebPart/fonts/PT_Sans-Web-Regular.eot?#') format('eot'),url('../../GroupDocs_Annotation_SharePoint_WebPart/fonts/PT_Sans-Web-Regular.woff') format('woff'),url('../../GroupDocs_Annotation_SharePoint_WebPart/fonts/PT_Sans-Web-Regular.ttf') format('truetype')} -@font-face{font-family:'PT Sans'; -font-style:normal; -font-weight:bold; -src:url('../../GroupDocs_Annotation_SharePoint_WebPart/fonts/PT_Sans-Web-Bold.eot?#') format('eot'),url('../../GroupDocs_Annotation_SharePoint_WebPart/fonts/PT_Sans-Web-Bold.woff') format('woff'),url('../../GroupDocs_Annotation_SharePoint_WebPart/fonts/PT_Sans-Web-Bold.ttf') format('truetype')} -.grpdx{font-size:16px;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;height:100%}.grpdx a:hover,.grpdx a:active{outline:0}img.groupdocs_base{max-width:100%;height:auto;border:0;-ms-interpolation-mode:bicubic}.grpdx input{margin:0;font-size:100%;vertical-align:middle;*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}body.groupdocs_base{margin:0;font-family:"PT Sans",Helvetica,Arial,sans-serif;font-size:14px;line-height:18px;color:#333;background-color:#fff}.grpdx a{color:#08c;text-decoration:none}.grpdx a:hover{color:#005580;text-decoration:underline}.row:before,.row:after{display:table;content:""}.row:after{clear:both}.row:before,.row:after{display:table;content:""}.row:after{clear:both}.row:before,.row:after{display:table;content:""}.row:after{clear:both}.row:before,.row:after{display:table;content:""}.row:after{clear:both}.row-fluid:before,.row-fluid:after{display:table;content:""}.row-fluid:after{clear:both}.row-fluid:before,.row-fluid:after{display:table;content:""}.row-fluid:after{clear:both}.row-fluid>[class*=span]:first-child{margin-left:0}.row-fluid:before,.row-fluid:after{display:table;content:""}.row-fluid:after{clear:both}.row-fluid:before,.row-fluid:after{display:table;content:""}.row-fluid:after{clear:both}.grpdx p{margin:0 0 9px;font-family:"PT Sans",Helvetica,Arial,sans-serif;font-size:14px;line-height:18px}.grpdx ul,.grpdx ol{padding:0;margin:0 0 9px 25px}.grpdx ul{list-style:disc}li.groupdocs_base{line-height:18px}blockquote small:before{content:'\2014 \00A0'}.spritebg{background:url(../images/sprites.png) no-repeat}q:before,q:after,blockquote:before,blockquote:after{content:""}.grpdx label,.grpdx input{font-size:14px;font-weight:400;line-height:18px}.grpdx input{font-family:"PT Sans",Helvetica,Arial,sans-serif}.grpdx input{display:inline-block;width:210px;height:18px;padding:4px;margin-bottom:9px;font-size:14px;line-height:18px;color:#555;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.grpdx input{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s}.grpdx input:focus,.grpdx textarea:focus{border-color:#a4a4a4;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(255,255,255,0.9);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(255,255,255,0.9);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(255,255,255,0.9);outline:0;outline:thin dotted \9}.grpdx input[type=file]:focus,.grpdx input[type=radio]:focus,input[type=checkbox]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.grpdx input[disabled],.grpdx input[readonly]{background-color:#f5f5f5;border-color:#ddd;cursor:not-allowed}.grpdx input:focus:required:invalid,.grpdx textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b}.grpdx input:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}:-moz-placeholder{color:#999}::-webkit-input-placeholder{color:#999}:-moz-placeholder{color:#999}::-webkit-input-placeholder{color:#999}.input-prepend:before,.input-append:before,.input-prepend:after,.input-append:after{display:table;content:""}.input-prepend:after,.input-append:after{clear:both}.input-prepend:before,.input-append:before,.input-prepend:after,.input-append:after{display:table;content:""}.input-prepend:after,.input-append:after{clear:both}.input-prepend input:focus,.input-append input:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{position:relative;z-index:2}.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown:hover .caret,.open.dropdown .caret{opacity:1;filter:alpha(opacity=100)}.grpdx .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;_width:160px;padding:4px 0;margin:0;list-style:none;background-color:#fff;border-color:#ccc;border-color:rgba(0,0,0,0.2);border-style:solid;border-width:1px;-webkit-border-radius:5px 0 5px 5px;-moz-border-radius:5px 0 5px 5px;border-radius:5px 0 5px 5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px}.dropdown-menu.bottom-up{top:auto;bottom:100%;margin-bottom:2px}.dropdown-menu .divider{height:1px;margin:5px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff;*width:100%;*margin:-5px 0 5px}.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:400;line-height:18px;color:#555;white-space:nowrap}.dropdown-menu li>a:hover,.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#fff;text-decoration:none;background-color:#08c}.dropdown.open{*z-index:1000}.dropdown.open .dropdown-toggle{color:#fff;background:#ccc;background:rgba(0,0,0,0.3)}.dropdown.open .dropdown-menu{display:block}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0,0,0,0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.fade{-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-ms-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear;opacity:0}.fade.in{opacity:1}.collapse{-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-ms-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease;position:relative;overflow:hidden;height:0}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:700;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover{color:#000;text-decoration:none;opacity:.4;filter:alpha(opacity=40);cursor:pointer}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{background-color:#e6e6e6}.btn:active,.btn.active{background-color:#ccc \9}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{background-color:#e6e6e6}.btn:active,.btn.active{background-color:#ccc \9}.btn:hover{color:#333;text-decoration:none;background-color:#e6e6e6;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-ms-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);background-color:#e6e6e6;background-color:#d9d9d9 \9;outline:0}.btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover,.btn-inverse,.btn-inverse:hover{text-shadow:0 1px 0 rgba(255,255,255,0.8);color:#393939;font-weight:700}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{background-color:#262626}.btn-inverse:active,.btn-inverse.active{background-color:#0c0c0c \9}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{background-color:#262626}.btn-inverse:active,.btn-inverse.active{background-color:#0c0c0c \9}button.btn::-moz-focus-inner,input[type=submit].btn::-moz-focus-inner{padding:0;border:0}.btn-group:before,.btn-group:after{display:table;content:""}.btn-group:after{clear:both}.btn-group:before,.btn-group:after{display:table;content:""}.btn-group:after{clear:both}.btn-group .btn:hover,.btn-group .btn:focus,.btn-group .btn:active,.btn-group .btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100)}.nav{margin-left:0;margin-bottom:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav .nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:700;line-height:18px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-left:14px;padding-right:14px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list .active>a,.nav-list .active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^=icon-]{margin-right:2px}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:20px;padding-left:20px;margin-right:5px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:15px;padding-bottom:15px;border:1px solid #d1d1d1;background:#eee;color:#393939;font-weight:700;-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0;-webkit-box-shadow:inset 0 2px 1px 0 rgba(255,255,255,0.5);-moz-box-shadow:inset 0 2px 1px 0 rgba(255,255,255,0.5);box-shadow:inset 0 2px 1px 0 rgba(255,255,255,0.5)}.nav-tabs>li>a:hover{background-color:#e1e1e1}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#393939;background-color:#fff;border:1px solid #d5d5d5;border-bottom-color:transparent;cursor:default}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills .active>a,.nav-pills .active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-toggle:hover .caret,.nav-pills .dropdown-toggle:hover .caret{border-top-color:#005580}.nav>.dropdown.active>a:hover{color:#000;cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav .open .caret,.nav .open.active .caret,.nav .open a:hover .caret{border-top-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover{border-color:#999}.tabbable:before,.tabbable:after{display:table;content:""}.tabbable:after{clear:both}.tabbable:before,.tabbable:after{display:table;content:""}.tabbable:after{clear:both}.tabs-below .nav-tabs{border-top:1px solid #ddd}.tabs-below .nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below .nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below .nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd}.tabs-below .nav-tabs .active>a,.tabs-below .nav-tabs .active>a:hover{border-color:transparent #ddd #ddd}.tabs-left .nav-tabs>li,.tabs-right .nav-tabs>li{float:none}.tabs-left .nav-tabs>li>a,.tabs-right .nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left .nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left .nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left .nav-tabs>li>a:hover{border-color:#eee #ddd #eee #eee}.tabs-left .nav-tabs .active>a,.tabs-left .nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right .nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.tabs-right .nav-tabs .active>a,.tabs-right .nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.btn-navbar:hover,.btn-navbar:active,.btn-navbar.active,.btn-navbar.disabled,.btn-navbar[disabled]{background-color:#222}.btn-navbar:active,.btn-navbar.active{background-color:#080808 \9}.btn-navbar:hover,.btn-navbar:active,.btn-navbar.active,.btn-navbar.disabled,.btn-navbar[disabled]{background-color:#222}.btn-navbar:active,.btn-navbar.active{background-color:#080808 \9}.navbar .brand:hover{text-decoration:none}.navbar .navbar-text a:hover{color:#fff;background-color:transparent}.navbar-form:before,.navbar-form:after{display:table;content:""}.navbar-form:after{clear:both}.navbar-form:before,.navbar-form:after{display:table;content:""}.navbar-form:after{clear:both}.navbar-search .search-query :-moz-placeholder{color:#eee}.navbar-search .search-query ::-webkit-input-placeholder{color:#eee}.navbar-search .search-query :-moz-placeholder{color:#eee}.navbar-search .search-query ::-webkit-input-placeholder{color:#eee}.navbar-search .search-query:hover{color:#fff;background-color:#999;background-color:rgba(255,255,255,0.5)}.navbar-search .search-query:focus,.navbar-search .search-query.focused{padding:5px 10px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15);outline:0}.navbar .nav>li>a:hover{background-color:transparent;color:#fff;text-decoration:none}.navbar .nav .active>a,.navbar .nav .active>a:hover{color:#fff;text-decoration:none;background-color:#222}.navbar .dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,0.2);position:absolute;top:-7px;left:9px}.navbar .dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:10px}.navbar .nav .active>.dropdown-toggle:hover{color:#fff}.navbar .nav.pull-right .dropdown-menu:before{left:auto;right:12px}.navbar .nav.pull-right .dropdown-menu:after{left:auto;right:13px}.pagination{height:36px;margin:18px 0}.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination li{display:inline}.pagination a{float:left;padding:0 14px;line-height:34px;text-decoration:none;border:1px solid #ddd;border-left-width:0}.pagination a:hover,.pagination .active a{background-color:#f5f5f5}.pagination .active a{color:#999;cursor:default}.pagination .disabled a,.pagination .disabled a:hover{color:#999;background-color:transparent;cursor:default}.pagination li:first-child a{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.pagination li:last-child a{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pager{margin-left:0;margin-bottom:18px;list-style:none;text-align:center;*zoom:1}.pager:before,.pager:after{display:table;content:""}.pager:after{clear:both}.pager:before,.pager:after{display:table;content:""}.pager:after{clear:both}.pager li{display:inline}.pager a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager a:hover{text-decoration:none;background-color:#f5f5f5}.pager .next a{float:right}.pager .previous a{float:left}.grpdx .modal-open .dropdown-menu{z-index:2050}.grpdx .modal-open .dropdown.open{*z-index:2050}.grpdx .modal-open .popover{z-index:2060}.grpdx .modal-open .tooltip{z-index:2070}.grpdx .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.grpdx .modal-backdrop.fade{opacity:0}.grpdx .modal-backdrop,.grpdx .modal-backdrop.fade.in{opacity:.35;filter:alpha(opacity=35)}.grpdx .modal{padding:10px;position:fixed;top:50%;left:50%;z-index:1050;max-height:570px;overflow:auto;width:560px;margin:-250px 0 0 -280px;background-color:#dfdfdf;border:1px solid #cacccb;*border:1px solid #999;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.grpdx .modal.fade{-webkit-transition:opacity 0.3s linear,top 0.3s ease-out;-moz-transition:opacity 0.3s linear,top 0.3s ease-out;-ms-transition:opacity 0.3s linear,top 0.3s ease-out;-o-transition:opacity 0.3s linear,top 0.3s ease-out;transition:opacity 0.3s linear,top 0.3s ease-out;top:-25%}.grpdx .modal.fade.in{top:50%}.grpdx .modal.modal300px{width:300px;margin:-250px 0 0 -150px}.grpdx .modal.modal800px{width:800px;margin:-250px 0 0 -400px;padding:3px}.grpdx .modal-header{padding:9px 15px;border-bottom:1px solid #eee}.grpdx .modal-header .close{margin-top:2px}.grpdx .modal-body{padding:15px}.grpdx .modal-body .modal-form{margin-bottom:0}.grpdx .modal-footer{padding:14px 15px 15px;margin-bottom:0;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;*zoom:1}.grpdx .modal-footer:before,.grpdx .modal-footer:after{display:table;content:""}.grpdx .modal-footer:after{clear:both}.grpdx .modal-footer:before,.grpdx .modal-footer:after{display:table;content:""}.grpdx .modal-footer:after{clear:both}.grpdx .modal-footer .btn{float:right;margin-left:5px;margin-bottom:0}.thumbnails:before,.thumbnails:after{display:table;content:""}.thumbnails:after{clear:both}.thumbnails:before,.thumbnails:after{display:table;content:""}.thumbnails:after{clear:both}a.thumbnail:hover{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.label:hover{color:#fff;text-decoration:none}.label-important:hover{background-color:#953b39}.label-warning:hover{background-color:#c67605}.label-success:hover{background-color:#356635}.label-info:hover{background-color:#2d6987}@-webkit-keyframes progress-bar-stripes{from{background-position:0 0} -to{background-position:40px 0}} -@-moz-keyframes progress-bar-stripes{from{background-position:0 0} -to{background-position:40px 0}} -@keyframes progress-bar-stripes{from{background-position:0 0} -to{background-position:40px 0}} -.carousel-control:hover{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.left{float:left}.right{float:right !important}a.small_button{cursor:pointer}.small_button{color:#393939;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;border:1px solid #bdbdbd;line-height:26px;padding:3px 8px;position:relative;font-size:14px;background:#dfdfdf;margin-left:10px;-webkit-box-shadow:inset 0 1px 2px rgba(255,255,255,0.8);-moz-box-shadow:inset 0 1px 2px rgba(255,255,255,0.8);box-shadow:inset 0 1px 2px rgba(255,255,255,0.8);text-shadow:0 -1px 0 #fff;-ms-filter:dropshadow(color=#fff,offx=0,offy=-1)}.small_button:hover{background:#fff;text-decoration:none;color:#393939}.big_button{color:#393939;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;border:1px solid #d1d1d1;line-height:26px;padding:6px 10px;position:relative;font-size:22px;font-weight:700;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease;cursor:pointer;display:inline-block;background:#dfdfdf;margin-left:10px;-webkit-box-shadow:inset 0 1px 1px rgba(255,255,255,0.7);-moz-box-shadow:inset 0 1px 1px rgba(255,255,255,0.7);box-shadow:inset 0 1px 1px rgba(255,255,255,0.7);text-shadow:0 -1px 0 #fff;-ms-filter:dropshadow(color=#fff,offx=0,offy=-1)}.big_button:hover{background:#fff;text-decoration:none;color:#393939}.grpdx .modaltext{font-size:14px}.ellipses{overflow:hidden;text-overflow:ellipsis;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;white-space:nowrap}.ellipsis{overflow:hidden;text-overflow:ellipsis;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;white-space:nowrap}.ui-sortable-helper{list-style-type:none}.yellow_btn{border:1px solid #ead996;background-color:#f7e3a2;background-image:-moz-linear-gradient(top,#fff8da,#ebc44d);background-image:-ms-linear-gradient(top,#fff8da,#ebc44d);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff8da),to(#ebc44d));background-image:-webkit-linear-gradient(top,#fff8da,#ebc44d);background-image:-o-linear-gradient(top,#fff8da,#ebc44d);background-image:linear-gradient(top,#fff8da,#ebc44d);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff8da',endColorstr='#ebc44d',GradientType=0)}.yellow_btn:hover{background-color:#f9e8b0;background-image:-moz-linear-gradient(top,#fff8da,#f0d071);background-image:-ms-linear-gradient(top,#fff8da,#f0d071);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff8da),to(#f0d071));background-image:-webkit-linear-gradient(top,#fff8da,#f0d071);background-image:-o-linear-gradient(top,#fff8da,#f0d071);background-image:linear-gradient(top,#fff8da,#f0d071);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff8da',endColorstr='#f0d071',GradientType=0)}#breadcrumb{display:inline-block;width:100%;height:58px}#mainwrapper{background:url(../images/mainbg.png) repeat;bottom:0;display:inline-block;position:absolute;top:62px;width:100%;left:0}#mainwrapper .wrapper{padding:0 15px}#mainwrapper_html_version_only{position:relative;display:inline-block;width:100%;background:url(../images/mainbg.png) repeat;margin-top:-3px}#mainwrapper_html_version_only .wrapper{padding:0 15px}#rightpanel{float:right!important;display:inline-block;position:relative;width:230px}.wrapper{padding:0 15px}.tool_tip{position:absolute;z-index:1000;min-width:30px;min-height:20px;background:#dfdfdf;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;border:1px solid #cacccb;left:0;top:100%;padding:2px;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease;margin:10px 0 0;display:none}.tool_tip p{margin:5px;word-wrap:break-word;white-space:nowrap}.tool_tip_pointer{position:absolute;z-index:1002;width:13px;height:8px;background:url(../images/sprites.png) no-repeat;background-position:-225px -91px;top:-7px;left:20px}.aheader{background:url(../images/sprites.png) no-repeat;background-position:-1px -2px}.aheader:hover{background-position:-56px -2px}.apps li:hover{background-color:rgba(255,255,255,0.1)}.apps li a:hover{text-decoration:none}.searchfield:focus{-webkit-box-shadow:inset 0 4px 4px rgba(0,0,0,0.2),0 1px 0 #8babc5;-moz-box-shadow:inset 0 4px 4px rgba(0,0,0,0.2),0 1px 0 #8babc5;box-shadow:inset 0 4px 4px rgba(0,0,0,0.2),0 1px 0 #8babc5}.profileicon:active{background-position:-361px -675px}.headtoolsicon:active{background-position:-364px -725px}.searchicon:active{background-position:-360px -629px}.breadcrumbs .dropdown_breadcrumb_left a:hover{text-decoration:none}.breadcrumbs .dropdown_breadcrumb_left:hover{background:url(../images/sprites.png) no-repeat;background-position:-435px -932px}.breadcrumbs .dropdown_breadcrumb_right:hover{background:url(../images/sprites.png) no-repeat;background-position:-747px -932px}.breadcrumbs li.dropdown_breadcrumb_right:hover>ul{visibility:visible}.breadcrumbs li.dropdown_breadcrumb_right ul li:hover>ul{visibility:visible}.breadcrumbs .folder_breadcrumb a:hover,.breadcrumbs .folder_breadcrumb span:hover{text-decoration:none}.breadcrumbs .folder_breadcrumb:hover{background-position:-435px -932px}.breadcrumbs .folder_breadcrumb:hover i{background-position:-725px -820px}.breadcrumbs .current_breadcrumb span:hover{text-decoration:none}#breadcrumbbtns li:hover{background:url(../images/breadrighthover.png) no-repeat top right}#breadcrumbbtns li:hover a{background:url(../images/breadlefthover.png) no-repeat top left;text-decoration:none}#breadcrumbbtns .current:hover{background:url(../images/breadrightcurrent.png) no-repeat top right}#breadcrumbbtns .current:hover span{background:url(../images/breadleftcurrent.png) no-repeat top left;text-decoration:none}#breadcrumbbtns .current_reverse:hover{background:url(../images/breadrightcurrent_reverse.png) no-repeat top right}#breadcrumbbtns .current_reverse:hover span{background:url(../images/breadleftcurrent_reverse.png) no-repeat top left;text-decoration:none}#breadcrumbbtns .dropdownli:hover{background:0}#breadcrumbbtns .dropdownli:hover a{background:#fff;border-bottom:0}#breadcrumbbtns .dropdownli:hover li a{background:0}#breadcrumbbtns .drop-close:hover{background-color:#fff;border-bottom:0}#breadcrumbbtns .dropdown-menu li a:hover{color:#29bbec}#rightpanel .user .avatar:hover .tool_tip{display:block}#rightpanel .user a.urs_mng_text:hover{color:#125389}#rightpanel .getextraspace:hover{background:#fff}.profile-mail:hover{text-decoration:none}.profile-mail:hover h3{color:#d4490e}.alertbox .resend:hover{color:#d54e14}.vsi1:hover{background-position:0 -99px}.vsi2:hover{background-position:-30px -99px}.vsi3:hover{background-position:-64px -99px}#uploadbtn:hover h3{color:#55cdf4}#uploadbtn:hover .uploadbtnicon{background-position:-104px -109px}#newfolderbtn:hover h3{color:#55cdf4}#newfolderbtn:hover .newfolderbtnicon{background-position:-131px -100px}.newfolderbox .newfolderline a.old_grey_btn:hover{background:#fff;text-decoration:none}.smallarrow{display:inline-block;float:left;background:url(../images/sprites.png) no-repeat;width:5px;height:3px;margin:10px 0 0 5px}.up{background-position:-15px -55px}.down{background-position:-15px -60px}#centermainlistfolder li:hover .unchecked{background-position:0 -16px}#centermainlist li:hover .unchecked,.cl_centermainlist li:hover .unchecked{background-position:0 -16px}.listbox{height:39px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;float:left;cursor:pointer}.folderlist{background:#fffbed;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease;border:1px solid #fff3c4}.folderlist:hover{background:#fff;border:1px solid #d5b62e}.folderlist:hover .listfunctions{display:inline-block}.filelist{background:#f7f7f7;border:1px solid #ededed;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all 0.3s ease}.filelist:hover{background:#fff;border:1px solid #b8ebfc}.filelist:hover .listfunctions{display:inline-block}.filelist:hover .listfilesize{margin-right:80px}.sharebutton{display:inline-block;float:right!important;background:url(../images/sprites.png) no-repeat;background-position:-219px -120px;border:2px solid #fff;height:32px;width:32px;margin:2px 0 0}.uploading_file{background:#e2e2e2;border-color:#c9c9c9;-webkit-box-shadow:inset 0 3px 1px #ebebeb;-moz-box-shadow:inset 0 3px 1px #ebebeb;box-shadow:inset 0 3px 1px #ebebeb}.uploading_file:hover{background:#e2e2e2;border-color:#c9c9c9;-webkit-box-shadow:inset 0 3px 1px #ebebeb;-moz-box-shadow:inset 0 3px 1px #ebebeb;box-shadow:inset 0 3px 1px #ebebeb}#centermainlist .listbox li:hover .functext,#centermainlist .grid_item li:hover .functext,#centermainlistfolder .folderlist li:hover .functext,#centermainlistfolder .grid_item li:hover .functext{color:#29bbec;background:#fff}#centermainlist .listbox li:hover a,#centermainlist .grid_item li:hover a,#centermainlistfolder .folderlist li:hover a,#centermainlistfolder .grid_item li:hover a{background:#fff}#centermainlist .listbox li:hover .ficon1,#centermainlist .grid_item li:hover .ficon1,#centermainlistfolder .folderlist li:hover .ficon1,#centermainlistfolder .grid_item li:hover .ficon1{background-position:-775px -4px}#centermainlist .listbox li:hover .ficon2,#centermainlist .grid_item li:hover .ficon2,#centermainlistfolder .folderlist li:hover .ficon2,#centermainlistfolder .grid_item li:hover .ficon2{background-position:-775px -29px}#centermainlist .listbox li:hover .ficon3,#centermainlist .grid_item li:hover .ficon3,#centermainlistfolder .folderlist li:hover .ficon3,#centermainlistfolder .grid_item li:hover .ficon3{background-position:-775px -54px}#centermainlist .listbox li:hover .ficon4,#centermainlist .grid_item li:hover .ficon4,#centermainlistfolder .folderlist li:hover .ficon4,#centermainlistfolder .grid_item li:hover .ficon4{background-position:-775px -79px}#centermainlist .listbox li:hover .ficon5,#centermainlist .grid_item li:hover .ficon5,#centermainlistfolder .folderlist li:hover .ficon5,#centermainlistfolder .grid_item li:hover .ficon5{background-position:-775px -104px}#centermainlist .listbox li:hover .ficon6,#centermainlist .grid_item li:hover .ficon6,#centermainlistfolder .folderlist li:hover .ficon6,#centermainlistfolder .grid_item li:hover .ficon6{background-position:-775px -130px}#centermainlist .listbox li:hover .ficon7,#centermainlist .grid_item li:hover .ficon7,#centermainlistfolder .folderlist li:hover .ficon7,#centermainlistfolder .grid_item li:hover .ficon7{background-position:-775px -161px}#centermainlist .listbox li:hover .ficon8,#centermainlist .grid_item li:hover .ficon8,#centermainlistfolder .folderlist li:hover .ficon8,#centermainlistfolder .grid_item li:hover .ficon8{background-position:-775px -187px}#centermainlist .listbox li:hover .ficon9,#centermainlist .grid_item li:hover .ficon9,#centermainlistfolder .folderlist li:hover .ficon9,#centermainlistfolder .grid_item li:hover .ficon9{background-position:-775px -219px}#centermainlist .listbox li:hover .ficon10,#centermainlist .grid_item li:hover .ficon10,#centermainlistfolder .folderlist li:hover .ficon10,#centermainlistfolder .grid_item li:hover .ficon10{background-position:-775px -310px}#centermainlist .listbox li:hover .ficon11,#centermainlist .grid_item li:hover .ficon11,#centermainlistfolder .folderlist li:hover .ficon11,#centermainlistfolder .grid_item li:hover .ficon11{background-position:-777px -338px}#centermainlist .listbox li:hover .ficon12,#centermainlist .grid_item li:hover .ficon12,#centermainlistfolder .folderlist li:hover .ficon12,#centermainlistfolder .grid_item li:hover .ficon12{background-position:-777px -366px}#centermainlist .listbox li:hover .ficon13,#centermainlist .grid_item li:hover .ficon13,#centermainlistfolder .folderlist li:hover .ficon13,#centermainlistfolder .grid_item li:hover .ficon13{background-position:-775px -394px}.context_menu li:hover .functext{color:#29bbec;background:#fff}.context_menu li:hover a{background:#fff}.context_menu li:hover .ficon1{background-position:-775px -4px}.context_menu li:hover .ficon2{background-position:-775px -29px}.context_menu li:hover .ficon3{background-position:-775px -54px}.context_menu li:hover .ficon4{background-position:-775px -79px}.context_menu li:hover .ficon5{background-position:-775px -104px}.context_menu li:hover .ficon6{background-position:-775px -130px}.context_menu li:hover .ficon7{background-position:-775px -161px}.context_menu li:hover .ficon8{background-position:-775px -187px}.context_menu li:hover .ficon9{background-position:-775px -219px}.context_menu li:hover .ficon10{background-position:-775px -310px}.context_menu li:hover .ficon11{background-position:-777px -338px}.context_menu li:hover .ficon12{background-position:-777px -366px}.context_menu li:hover .ficon13{background-position:-775px -394px}.listfilesize{float:right!important;width:140px;margin:10px 80px 0 0}.listmodified{float:right!important;width:130px;margin:10px 0 0}.listsmalltext{font-size:12px;color:#848484;text-align:right}.listname{font-size:14px;margin:10px 0 0 17px;display:inline-block;float:left;overflow:hidden;text-overflow:ellipsis;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;white-space:nowrap;width:125px}.author-name{float:left;overflow:hidden;text-overflow:ellipsis;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;white-space:nowrap;width:85px;margin:10px 3px 0 26px}.grpdx .listname_file_browser{font-size:14px;margin:10px 0 0;display:inline-block;float:left;overflow:hidden;text-overflow:ellipsis;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;white-space:nowrap;max-width:400px}.foldername{color:#8a6905}.filename{color:#393939}.share{width:100px;overflow:hidden;float:right!important;display:inline-block;height:39px}.share .smallarrow.down{float:right!important;margin:19px 0 0 3px}.share .popbox{right:157px;top:44px}.listicons{display:inline-block;float:left;width:22px;height:28px;background:url(../images/sprites.png) no-repeat;margin:6px 5px}.licon_folder{background-position:-422px 1px}.licon_word{background-position:-422px -27px}.licon_ppt{background-position:-422px -61px}.licon_pdf{background-position:-422px -92px}.licon_openof{background-position:-422px -120px}.licon_bmp{background-position:-422px -148px}.licon_envelope{background-position:-422px -173px}.licon_xls{background-position:-422px -207px}.licon_visio{background-position:-422px -360px}.licon_outlook{background-position:-466px -329px}.licon_mpp{background-position:-466px -360px}.licon_unkwn{background-position:-422px -239px}.licon_proof{background-position:-422px -271px}.licon_conv{background-position:-424px -300px}.licon_assem{background-position:-740px -76px}.licon_temp{background-position:-640px -1037px}.licon_html{background-position:-423px -332px}.dropped{display:none !important}.ui-selected{background:#edfafe;border:1px solid #b8ebfc}.popbox{display:none;position:absolute;z-index:1000;width:310px;min-height:70px;background:#dfdfdf;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;border:1px solid #cacccb;right:192px;top:40px;padding:0 0 4px}.popbox h4{margin:8px 0 15px 7px}.popbox .popboxline{height:34px;margin:0 5px 3px 7px}.popbox .popboxline p{float:left;line-height:27px;font-size:14px;margin:0}.popbox .popboxline a{float:right!important;color:#393939;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;border:1px solid #bdbdbd;line-height:26px;padding:0 8px;text-shadow:0 -1px 0 #fff;-ms-filter:dropshadow(color=#fff,offx=0,offy=-1)}.popbox .popboxline .popemail{width:200px}.popclose{position:absolute;z-index:1002;width:26px;height:26px;background:url(../images/sprites.png) no-repeat;background-position:-465px -81px;top:6px;right:6px;cursor:pointer}.popupshow{display:block !important}.progresspin{width:47px;height:47px;background:url(../images/spinner.gif);float:left;display:inline-block;margin:-5px 0;z-index:-1}.popbox .popboxline a:hover{background:#fff;text-decoration:none}.convert .popupa:hover{border:1px solid #cacccb;padding:2px 3px}.convert .popbox .goconvert:hover{background:#fff;text-decoration:none}.convert .convertformatchoose:hover{border:1px solid #cacccb;padding:4px}.uploading .cancelupload:hover{background:#fff;text-decoration:none}.myaccmodal .emailalert p a:hover{color:#d54e14}.myaccmodal .profileapi p a:hover{color:#d54e14}.tool-button:hover{background-position:-820px -59px;color:#063359;text-decoration:none}.tool-button:hover .t_copy{background-position:-714px -187px}.tool-button:hover .t_move{background-position:-714px -161px}.tool-button:hover .t_paste{background-position:-714px -245px}.tool-button:hover .t_down{background-position:-714px -279px}.tool-button:hover .t_share{background-position:-714px -104px}.tool-button:hover .t_arch{background-position:-714px -130px}.tool-button:hover .t_del{background-position:-714px -219px}.tool-button:active{background-position:-820px -110px;color:#063359;text-decoration:none;padding:1px 0 0 1px;margin:0 0 4px}footer p a:hover{color:#55cdf4;text-decoration:none}footer.footer p a:hover{color:#55cdf4;text-decoration:none}footer.footer a.footlogo:hover{text-decoration:none}a.footlogo:hover{text-decoration:none}#file_browser_modal h3{margin:5px 10px}.file_browser_content{background:#fff;border:1px solid #c9c9c9;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;position:relative;padding:15px}.upload_file_browser_icon{height:21px;width:21px;background:url(../images/sprites.png) no-repeat;background-position:-104px -144px;display:inline-block;float:left}.file_browser_upload_btn{display:inline-block;float:left;line-height:20px;margin:0;overflow:hidden}.file_browser_toolbar{width:100%;overflow:hidden;margin:15px 0}.file_browser_sort{width:100%;overflow:hidden;margin:0 0 15px}.file_browser_sort h4{float:left}.file_browser_sort_filename{width:60%;float:left}.file_browser_sort_size{width:15%;float:right !important}.file_browser_sort_modified{width:15%;float:right !important}.grpdx .file_browser_folder_list{list-style:none outside none;margin:0}.file_browser_folder_list li{height:41px;margin-bottom:2px;position:relative;width:100%}.file_browser_listbox{height:39px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;float:left;cursor:pointer;width:100%}.grpdx .file_browser_file_list{list-style:none outside none;margin:0}.grpdx .file_browser_file_list li{height:41px;margin-bottom:2px;position:relative;width:100%}.grpdx .file_browser_listbox.filelist .listfilesize{width:15%;float:right!important;margin:10px 0;text-align:left}.grpdx .file_browser_listbox.filelist .listmodified{width:15%;float:right!important;margin:10px 0;text-align:left}.grpdx .file_browser_listbox.filelist:hover .listfilesize{margin-right:0}#openfile-dialog{max-height:550px}.folder_browser{padding:3px}.folder_browser h3{margin:5px 10px}.folder_browser_content{background:#fff;border:1px solid #c9c9c9;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;position:relative;padding:5px}.folder_browser_content a:hover{text-decoration:none}.folder_browser_buttons{width:100%;overflow:auto;margin:10px 0 0}.file-input{cursor:pointer;font-size:50px!important;margin:0;opacity:0;padding:0!important;position:absolute;right:0;top:0;filter:alpha(opacity=0) !important;height:auto !important}.category_view_h3{display:inline-block;margin:0 16px}.category_view_linewrapper{display:inline-block}.loading_overlay{position:absolute;z-index:999;top:63px;bottom:0;width:100%;background:url(../images/mainbg.png) repeat scroll 0 0 transparent;display:inline-block}.loading_overlay.embed{top:40px}.loading_overlay_message{position:absolute;top:50%;left:50%;margin:-50px 0 0 -105px;width:235px}.loading_overlay_message p{font-size:16px;font-weight:700;margin:8px 0;float:left}.viewer_loading_overlay{background:#fff;display:inline-block;position:relative}.loading_overlay_message{position:absolute;top:30%;left:50%;margin:-50px 0 0 -105px;width:235px}.loading_overlay_message p{font-size:16px;font-weight:700;margin:8px 0;float:left}.input_error{border:1px solid #923a16}.ui-autocomplete{cursor:default;position:absolute;border:1px solid #ddd;color:#333;background:#f2f2f2}* html .ui-autocomplete{width:1px}.ui-menu{display:block;float:left;list-style:none outside none;margin:0;padding:2px}.ui-menu .ui-menu{margin-top:-3px}.ui-menu .ui-menu-item{clear:left;float:left;margin:0;padding:0;width:100%}.ui-menu .ui-menu-item a{display:block;line-height:1.5;padding:.2em .4em;text-decoration:none;color:#393939}.ui-menu .ui-menu-item a.ui-state-hover,.ui-menu .ui-menu-item a.ui-state-active{font-weight:400;margin:-1px}.ui-autocomplete .ui-state-hover{background-color:#fff}.validation_message{color:#923a16;font-family:GochiHandRegular;font-size:16px}.dropfileshere.wizard_dropfield{margin:10px 0 20px 8px}.btn-group.app_buttons .main_btn.app_dash:active .app_icon,.log_in_btn_wrapper .main_btn.app_dash:active .app_icon{background-position:-316px -704px}.btn-group.app_buttons .main_btn.app_anno:active .app_icon,.log_in_btn_wrapper .main_btn.app_anno:active .app_icon{background-position:-316px -832px}.btn-group.app_buttons .main_btn.app_assem:active .app_icon,.log_in_btn_wrapper .main_btn.app_assem:active .app_icon{background-position:-314px -783px}.btn-group.app_buttons .main_btn.app_sig:active .app_icon,.log_in_btn_wrapper .main_btn.app_sig:active .app_icon{background-position:-315px -743px}.btn-group.app_buttons .main_btn.app_view:active .app_icon,.log_in_btn_wrapper .main_btn.app_view:active .app_icon{background-position:-314px -668px}.btn-group.app_buttons .main_btn.app_comp:active .app_icon,.log_in_btn_wrapper .main_btn.app_comp:active .app_icon{background-position:-311px -882px}.btn-group.app_buttons .main_btn.app_conv:active .app_icon,.log_in_btn_wrapper .main_btn.app_conv:active .app_icon{background-position:-313px -925px}.btn-group.app_buttons .main_btn.log_in_btn:active .app_icon,.log_in_btn_wrapper .main_btn.log_in_btn:active .app_icon{background-position:-323px -632px}.btn-group.app_buttons .main_btn:hover,.log_in_btn_wrapper .main_btn:hover{text-decoration:none;-webkit-box-shadow:inset 0 1px 1px rgba(255,255,255,0.7),0 0 5px 3px #41a5cc;-moz-box-shadow:inset 0 1px 1px rgba(255,255,255,0.7),0 0 5px 3px #41a5cc;box-shadow:inset 0 1px 1px rgba(255,255,255,0.7),0 0 5px 3px #41a5cc}.btn-group.app_buttons .main_btn:hover p,.log_in_btn_wrapper .main_btn:hover p{margin:12px 10px 0 8px}.btn-group.app_buttons .main_btn:hover .shadow_wrapper,.log_in_btn_wrapper .main_btn:hover .shadow_wrapper{-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.5);-moz-box-shadow:0 1px 0 rgba(255,255,255,0.6);box-shadow:0 1px 0 rgba(255,255,255,0.6)}.btn-group.app_buttons .main_btn:active,.log_in_btn_wrapper .main_btn:active{background:url(../images/head_btn_bg_hover.png) repeat-x}.btn-group.app_buttons .main_btn:active p,.log_in_btn_wrapper .main_btn:active p{color:#55cdf4;margin:13px 9px 0}.btn-group.app_buttons .main_btn:active .app_pointer,.log_in_btn_wrapper .main_btn:active .app_pointer{background-position:-256px -649px;margin:22px 6px 15px 5px}a.new_head_text:hover{color:#fff}.head_white_alert:hover{background-position:-201px -207px}.head_white_alert:hover .alertbox{display:block;left:-59px;top:35px}.dropdown-menu a{overflow:hidden}.profile_dropdown li a:hover{background:0;color:#393939;text-decoration:underline}html,body{height:100%}.head_profile_dropdown_wrapper:hover .profile_dropdown{display:block}.blue_head_text:hover{color:#8be3ff}.new_head_tools_wrapper{margin:0 3px;background-color:rgba(17,83,137,0.1);width:auto;height:45px;border-color:rgba(255,255,255,0.1);border-width:1px;border-style:solid;-moz-box-shadow:1px 3px 1px 0 rgba(0,0,0,0.1);-webkit-box-shadow:1px 3px 1px 0 rgba(0,0,0,0.1);box-shadow:1px 3px 1px 0 rgba(0,0,0,0.1);display:inline-block;position:relative;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:0 3px}.new_head_tools_wrapper{border-color:#296494\9}.new_head_tools_dropdown_wrapper{position:relative;width:40px;height:45px;float:left;margin:0 3px 0 0}.new_head_tools_btn{width:33px;height:31px;border:1px solid #114f83;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;display:inline-block;float:left;cursor:pointer;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.15);box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.15);margin:5px 3px}.new_head_tools_btn.text_tool{line-height:29px;padding:0 7px;color:#fff;width:auto}.new_head_tools_btn:hover,.new_head_tools_btn.active{border-color:#0f4470;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.4) inset,0 1px 0 rgba(255,255,255,0.3);-moz-box-shadow:0 1px 0 rgba(255,255,255,0.4) inset,0 1px 0 rgba(255,255,255,0.3);box-shadow:0 1px 0 rgba(255,255,255,0.4) inset,0 1px 0 rgba(255,255,255,0.3)}.h_t_i_browser{background:url(../images/sprites.png) no-repeat;background-position:-7px -1022px}.h_t_i_embed{background:url(../images/sprites.png) no-repeat;background-position:-48px -1023px}.h_t_i_download{background:url(../images/sprites.png) no-repeat;background-position:-88px -1024px}.h_t_i_export{background:url(../images/sprites.png) no-repeat;background-position:-89px -1024px}.h_t_i_import{background:url(../images/sprites.png) no-repeat;background-position:-465px -1026px}.h_t_i_print{background:url(../images/sprites.png) no-repeat;background-position:-129px -1023px}.h_t_i_tools{background:url(../images/sprites.png) no-repeat;background-position:-169px -1023px}.h_t_i_nav1{background:url(../images/sprites.png) no-repeat;background-position:2px -1062px}.h_t_i_nav1.disabled{opacity:.4;filter:alpha(opacity=40);cursor:default}.h_t_i_nav1.disabled:hover{border:1px solid #114f83;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.2) inset;-moz-box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.2) inset;box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.2) inset}.h_t_i_nav2{background:url(../images/sprites.png) no-repeat;background-position:-38px -1062px}.h_t_i_nav2.disabled{opacity:.4;filter:alpha(opacity=40);cursor:default}.h_t_i_nav2.disabled:hover{border:1px solid #114f83;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.2) inset;-moz-box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.2) inset;box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.2) inset}.h_t_i_nav3{background:url(../images/sprites.png) no-repeat;background-position:-130px -1062px}.h_t_i_nav3.disabled{opacity:.4;filter:alpha(opacity=40);cursor:default}.h_t_i_nav3.disabled:hover{border:1px solid #114f83;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.2) inset;-moz-box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.2) inset;box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.2) inset}.h_t_i_nav4{background:url(../images/sprites.png) no-repeat;background-position:-170px -1062px}.h_t_i_nav4.disabled{opacity:.4;filter:alpha(opacity=40);cursor:default}.h_t_i_nav4.disabled:hover{border:1px solid #114f83;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.2) inset;-moz-box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.2) inset;box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 0 rgba(255,255,255,0.2) inset}.h_t_i_zoomin{background:url(../images/sprites.png) no-repeat;background-position:-261px -1025px}.h_t_i_zoomout{background:url(../images/sprites.png) no-repeat;background-position:-220px -1025px}.h_t_i_zoom{background:url(../images/sprites.png) no-repeat;background-position:-299px -1025px}.h_t_i_rotatecl{background:url(../images/sprites.png) no-repeat;background-position:-262px -1060px}.h_t_i_rotatecon{background:url(../images/sprites.png) no-repeat;background-position:-262px -1093px}.h_t_i_singlepage{background:url(../images/sprites.png) no-repeat;background-position:-381px -1028px}.new_head_search_input::-webkit-input-placeholder{color:#9fb9cf !important;text-shadow:0 1px 0 rgba(0,0,0,0.33) !important}.new_head_search_input:-moz-placeholder{color:#9fb9cf !important;text-shadow:0 1px 0 rgba(0,0,0,0.33) !important}.new_head_search_input::-moz-placeholder{color:#9fb9cf !important;text-shadow:0 1px 0 rgba(0,0,0,0.33) !important}.new_head_search_input:-ms-input-placeholder{color:#9fb9cf !important;text-shadow:0 1px 0 rgba(0,0,0,0.33) !important}.new_head_search_input:focus{background:#f1f1f1;width:250px}.grpdx .new_head_input{height:23px;float:left;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;display:inline-block;border:1px solid #658fb2;background:#125389;color:#fff;margin:6px 3px;width:32px !important}.grpdx .new_head_input{padding:6px 4px 2px\0/}:root .grpdx .new_head_input{padding:4px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.grpdx .new_head_input{padding:4px}}.grpdx .new_head_of{margin:7px 2px;color:#fff;line-height:22px;float:left;padding:4px 0;height:23px}.head_tool_dropdown{-webkit-box-shadow:1px 1px 0 rgba(0,0,0,0.2);-moz-box-shadow:1px 1px 0 rgba(0,0,0,0.2);box-shadow:1px 1px 0 rgba(0,0,0,0.2);padding:7px 0;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;left:3px;min-width:120px;right:auto;top:43px}.head_tool_dropdown li{line-height:14px}.head_tool_dropdown li a{line-height:14px;padding:2px 6px 5px;cursor:pointer}.head_tool_dropdown li a:hover{background:0;color:#29bbec;text-decoration:none}.head_tool_dropdown li a:hover .h_t_d_i_annotate{background-position:-775px -310px}.head_tool_dropdown li a:hover .h_t_d_i_signature{background-position:-776px -366px}.head_tool_dropdown li a:hover .h_t_d_i_compare{background-position:-776px -339px}.head_tool_dropdown li a:hover .h_t_d_i_questionnare{background-position:-774px -55px}.head_tool_dropdown li a:hover .h_t_d_i_conversion{background-position:-775px -395px}.head_tool_dropdown li a:hover .h_t_d_i_fitwidth{background-position:-537px -994px}.head_tool_dropdown li a:hover .h_t_d_i_fitheight{background-position:-536px -1017px}.head_tool_dropdown li a:hover .h_t_d_i_scroll{background-position:-597px -995px}.head_tool_dropdown li a:hover .h_t_d_i_single{background-position:-596px -1016px}.head_tool_dropdown li a:hover .h_t_d_i_double{background-position:-596px -1036px}.head_tool_dropdown li a:hover .h_t_d_i_pdf{height:20px;background-position:-566px -1068px}.head_tool_dropdown li a:hover .h_t_d_i_doc{height:20px;background-position:-566px -1127px}.head_tool_dropdown li a:hover .h_t_d_i_normal{height:20px;background-position:-566px -1107px}.head_tool_dropdown li a p{margin:0 0 0 5px}.head_tool_dropdown li a span{background:url(../images/sprites.png) no-repeat;margin:0 4px 0 0;display:inline-block;float:left;height:23px;width:23px}.head_tool_dropdown li a span.h_t_d_i_scroll{background-position:-566px -994px}.head_tool_dropdown li a span.h_t_d_i_double{background-position:-565px -1036px}.try_new_version:hover{background-image:-moz-linear-gradient(46% 0 0deg,#d2460c 0,#de771c 98%,#de771c 100%);background-image:-webkit-gradient(linear,46% 0,46% 106%,color-stop(0,#d2460c),color-stop(0.98,#de771c),color-stop(1,#de771c));background-image:-webkit-linear-gradient(-90deg,#d2460c 0,#de771c 98%,#de771c 100%);background-image:-o-linear-gradient(0deg,#d2460c 0,#de771c 98%,#de771c 100%);background-image:-ms-linear-gradient(0deg,#d2460c 0,#de771c 98%,#de771c 100%);background-image:linear-gradient(0deg,#d2460c 0,#de771c 98%,#de771c 100%);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffd2460c,endColorstr=#ffde771c,GradientType=0)"}.rp_white_box:before,.rp_white_box:after{display:table;content:""}.rp_white_box:after{clear:both}.rp_white_box:before,.rp_white_box:after{display:table;content:""}.rp_white_box:after{clear:both}.btn:hover{background-color:#f6f6f6;background-image:-moz-linear-gradient(top,#fafafa,#f1f1f1);background-image:-ms-linear-gradient(top,#fafafa,#f1f1f1);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f1f1f1));background-image:-webkit-linear-gradient(top,#fafafa,#f1f1f1);background-image:-o-linear-gradient(top,#fafafa,#f1f1f1);background-image:linear-gradient(top,#fafafa,#f1f1f1);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa',endColorstr='#f1f1f1',GradientType=0);background-position:0;color:#333;text-decoration:none;transition:background-position 0.1s linear 0s}.red_button:hover,.btn.red_button:hover,.red_button_sb:hover{background-color:#e97620;background-image:-moz-linear-gradient(top,#eb8626,#e75d17);background-image:-ms-linear-gradient(top,#eb8626,#e75d17);background-image:-webkit-gradient(linear,0 0,0 100%,from(#eb8626),to(#e75d17));background-image:-webkit-linear-gradient(top,#eb8626,#e75d17);background-image:-o-linear-gradient(top,#eb8626,#e75d17);background-image:linear-gradient(top,#eb8626,#e75d17);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eb8626',endColorstr='#e75d17',GradientType=0);color:#fff;text-decoration:none;background-position:0}.dropdown-menu li>a:hover,.dropdown-menu .active>a,.dropdown-menu .active>a:hover{background-color:#333;color:#fff;text-decoration:none}.grey_button:hover{background-color:#dcdcdc;background-image:-moz-linear-gradient(top,#cfcfcf,#efefef);background-image:-ms-linear-gradient(top,#cfcfcf,#efefef);background-image:-webkit-gradient(linear,0 0,0 100%,from(#cfcfcf),to(#efefef));background-image:-webkit-linear-gradient(top,#cfcfcf,#efefef);background-image:-o-linear-gradient(top,#cfcfcf,#efefef);background-image:linear-gradient(top,#cfcfcf,#efefef);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cfcfcf',endColorstr='#efefef',GradientType=0);color:#383838;text-decoration:none}.text_btn:hover{color:#383838}.grpdx .modal2{background:rgba(255,255,255,0.15);border:0 none;padding:7px;max-height:580px;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px}.grpdx .modal2 .popclose{width:20px;height:20px;background-position:-972px -982px;top:26px;right:22px}.grpdx .modal2{background:rgba(255,255,255,0.15);border:0 none;padding:7px;max-height:580px;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px}.grpdx .modal2 .popclose{width:20px;height:20px;background-position:-972px -982px;top:26px;right:22px}.grpdx .modal2 input{border:1px solid #ccc;height:28px}.grpdx .modal2 select{height:36px;padding:6px 4px}.grpdx .modal_inner_wrapper{background:#f2f2f2;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.grpdx .modal_header{*zoom:1;background:#ddd;border-bottom:1px solid #fff;padding:15px;-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.grpdx .modal_header:before,.grpdx .modal_header:after{display:table;content:""}.grpdx .modal_header:after{clear:both}.grpdx .modal_header:before,.grpdx .modal_header:after{display:table;content:""}.grpdx .modal_header:after{clear:both}.grpdx .modal_header h3{float:left;margin:0 15px 0 0}.grpdx .modal_content{padding:15px;max-height:408px;overflow-y:auto}.grpdx .modal_input_wrap_half{width:48%;position:relative}.grpdx .modal_input_wrap_half input{width:96%}.grpdx .modal_input_wrap_full{width:100%;float:left}.grpdx .modal_input_wrap_full input{width:98.3%}.grpdx .modal_footer{padding:15px 15px 10px;border-top:1px solid #fff;background:#ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.grpdx .modal_btn_wrapper{*zoom:1;display:inline-block;width:100%}.grpdx .modal_btn_wrapper:before,.grpdx .modal_btn_wrapper:after{display:table;content:""}.grpdx .modal_btn_wrapper:after{clear:both}.grpdx .modal_btn_wrapper:before,.grpdx .modal_btn_wrapper:after{display:table;content:""}.grpdx .modal_btn_wrapper:after{clear:both}.grpdx .modal_btn_wrapper.h30{height:30px}@-moz-keyframes bounce_circleG{50%{background-color:#29bff0}} -@-webkit-keyframes bounce_circleG{50%{background-color:#29bff0}} -@-ms-keyframes bounce_circleG{50%{background-color:#29bff0}} -@-o-keyframes bounce_circleG{50%{background-color:#29bff0}} -@keyframes bounce_circleG{50%{background-color:#29bff0}} -#appswitch.viewer:hover{background-position:-2px -52px}#appswitch.viewer:hover p{margin:16px 0 0 47px}.grpdx .modal.fade{top:-250px}.viewer_mainwrapper{background:url(../images/mainbg.png) repeat scroll 0 0 transparent;bottom:0;display:inline-block;position:absolute;top:61px;width:100%;left:0}.thumbs_btn{position:absolute;top:50%;margin-top:-60px;width:45px;height:120px;background:url(../images/sprites.png) no-repeat;background-position:-78px -187px;background-color:#125389;left:0;z-index:1000;-webkit-border-radius:0 5px 5px 0;-moz-border-radius:0 5px 5px 0;border-radius:0 5px 5px 0}.thumbs_btn_slide{left:205px}div.thumbnailsContainer{position:absolute;top:0;left:0;width:203px;overflow:auto;height:100%;z-index:1000;border-right:2px solid #125389;background:#B2B2B2;background: transparent\9;background:rgba(0,0,0,0.3);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c000000,endColorstr=#4c000000)}div.thumbnailsContainer:nth-child(n){filter:none;}div.thumbnailsContainer ul{list-style-type:none;margin:0;}div.thumbnailsContainer ul li.ui-selected{background:#CBCBCB;background: transparent\9;background:rgba(255,255,255,0.4);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#66ffffff,endColorstr=#66ffffff);border:0}div.thumbnailsContainer ul li.ui-selected:nth-child(n){filter:none;}div.thumbnailsContainer ul li{text-align:center;padding:10px 0;min-width:187px;min-height:201px}div.thumbnailsContainer ul li img{border:1px solid #bcbcbc;width:150px;height:auto;display:inline-block;-webkit-box-shadow:3px 3px 6px #919191;-moz-box-shadow:3px 3px 6px #919191;box-shadow:3px 3px 6px #919191}.thumb_progress{left:50%;top:50%;margin-left:-23px;margin-top:-23px;position:absolute}.head_button:hover{color:#125389;text-decoration:none;background:#fff}.zoombtn:hover .zoomicon{background-position:-129px -238px}.dropdwn li a:hover{color:#125389;text-decoration:none;background:#fff}.doc-page{display:inline-block;position:relative;}.page-image{-webkit-box-shadow:2px 2px 9px #d6d6d6;-moz-box-shadow:2px 2px 9px #d6d6d6;box-shadow:2px 2px 9px #d6d6d6;display:inline-block;margin:0 34px;padding:0;border:1px solid #ededed}.modal-blue .nav-tabs>li>a:hover{border:0;-webkit-box-shadow:0 0 0 transparent;-moz-box-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;background:transparent;color:#fff}.signature-type-one.active,.signature-type-one:hover{border:1px solid #29bff0}.modal-blue .btn-grey:hover,.modal-blue .btn-red:hover{background-color:#e97620;background-image:-moz-linear-gradient(top,#eb8626,#e75d17);background-image:-ms-linear-gradient(top,#eb8626,#e75d17);background-image:-webkit-gradient(linear,0 0,0 100%,from(#eb8626),to(#e75d17));background-image:-webkit-linear-gradient(top,#eb8626,#e75d17);background-image:-o-linear-gradient(top,#eb8626,#e75d17);background-image:linear-gradient(top,#eb8626,#e75d17);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eb8626',endColorstr='#e75d17',GradientType=0);color:#fff;text-decoration:none;background-position:0}.modal-blue .btn-grey:hover{background-color:#f1f1f1;background-image:-moz-linear-gradient(top,#fff,#ddd);background-image:-ms-linear-gradient(top,#fff,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#ddd));background-image:-webkit-linear-gradient(top,#fff,#ddd);background-image:-o-linear-gradient(top,#fff,#ddd);background-image:linear-gradient(top,#fff,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#dddddd',GradientType=0);color:#393939}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}.grpdx h3,.grpdx h4{color:#333;font-weight:700;margin:0;font-size:14px}.grpdx h3{font-size:18px;line-height:27px}.viewer_mainwrapper_trial{top:94px}.banner_trial{background:url(../images/bg-trial.png);color:#fff;font-size:13px;line-height:32px;text-align:center;text-shadow:0 -1px 0 rgba(178,1,0,0.65);position:absolute;left:0;right:0;top:62px}.banner_trial>a{color:#fdd334;border-bottom:1px dashed #fdd334}.banner_trial>a:hover{border-bottom:0;text-decoration:none}.banner_trial:before{content:'';background:url(../images/sprites.png) -470px -296px;margin:-4px 8px 0;vertical-align:middle;display:inline-block;width:16px;height:17px}.input_search,.grpdx .input_search{float:left;width:97px;height:21px;margin:7px 3px 0;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;font:14px/20px "PT Sans",Helvetica,Arial,sans-serif;background:#fff url(../images/sprites.png) -1167px -818px no-repeat;border:0;padding:5px 30px 5px;-webkit-box-shadow:0 2px 5px 2px rgba(0,0,0,0.2) inset;-moz-box-shadow:0 2px 5px 2px rgba(0,0,0,0.2) inset;box-shadow:0 2px 5px 2px rgba(0,0,0,0.2) inset}.search_wrapper{position:relative}.input_search_clear{height:16px;width:16px;position:absolute;left:140px;top:14px;background:url(../images/sprites.png) -1141px -824px;cursor:pointer}.grpdx input[type="text"]::-ms-clear{display:none;width:0;height:0}.grpdx .input_search{transition:width 0s;box-shadow:0 0 0 transparent\9;background-color:#F4F4F4\9;background-position-x:-1197px\9;border:0;border-width:30px\9;border-color:transparent\9;border-style:solid\9;border-right-color:"#F4F4F4\9";padding-right:0\9;padding-left:0\9;border-top:0;border-bottom:0}.grpdx .input_search:focus{border:0;border-width:30px\9;border-color:transparent\9;border-style:solid\9;border-top:0;border-bottom:0;background-color:#ffffff\9;background-position-x:-1197px\9;outline:0 none}::-webkit-input-placeholder{color:#aaa;font:14px/19px "PT Sans",Helvetica,Arial,sans-serif}:-moz-placeholder{color:#aaa;font:14px/19px "PT Sans",Helvetica,Arial,sans-serif}::-moz-placeholder{color:#aaa;font:14px/19px "PT Sans",Helvetica,Arial,sans-serif}:-ms-input-placeholder{color:#aaa;font:14px/19px "PT Sans",Helvetica,Arial,sans-serif}.viewer_header_wrapper{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none;padding:6px 15px;overflow:visible}.viewer_header{height:auto;min-height:60px;line-height:0}.navigation-bar{height:42px}@media (max-width:292px){.viewer_header .viewer_header_wrapper{min-width:261px;overflow:auto}}.new_head_tools_btn{position:relative;text-decoration:none}.new_head_tools_btn:before,.new_head_tools_btn:after{opacity:0;filter:alpha(opacity=0);display:none\9;position:absolute;-webkit-transition:opacity 0.3s ease;-moz-transition:opacity 0.3s ease;-ms-transition:opacity 0.3s ease;-o-transition:opacity 0.3s ease;transition:opacity 0.3s ease;pointer-events:none}.new_head_tools_btn:before{content:"";border-bottom:5px solid #333;border-left:5px solid transparent;border-right:5px solid transparent;bottom:-9px;left:11px}.new_head_tools_btn:after{content:attr(data-tooltip);bottom:-33px;left:0;max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#333;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;white-space:nowrap}.new_head_tools_btn:hover:before,.new_head_tools_btn:hover:after{opacity:1;filter:alpha(opacity=100);display:block\9}.new_head_tools_btn.disabled:hover:before,.new_head_tools_btn.disabled:hover:after{display:none}.new_head_tools_btn.h_t_i_browser:after{left:-22px}.new_head_tools_btn.h_t_i_download:after{left:-22px}.new_head_tools_btn.h_t_i_export:after{left:-22px}.new_head_tools_btn.h_t_i_embed:after{left:-13px}.new_head_tools_btn.h_t_i_tools:after{left:-9px}.new_head_tools_btn.h_t_i_print:after{left:-7px}.new_head_tools_btn.h_t_i_search:after{left:-12px}.new_head_tools_btn.h_t_i_nav1:after{left:-23px}.new_head_tools_btn.h_t_i_nav2:after{left:-36px}.new_head_tools_btn.h_t_i_nav3:after{left:-24px}.new_head_tools_btn.h_t_i_nav4:after{left:-22px}.new_head_tools_btn.h_t_i_zoomin:after{left:-17px}.new_head_tools_btn.h_t_i_zoomout:after{left:-23px}.new_head_tools_btn.h_t_i_zoom:after{left:-27px}.new_head_tools_btn.h_t_i_singlepage:after{left:-26px}.head_tool_dropdown_export{min-width:167px}.grpdx .comment_tabs_buttons>li{border:0 !important}.grpdx .comment_tabs_buttons .ui-tabs-anchor{outline:0}.grpdx .comment_tabs_buttons .ui-tabs-anchor .com_com_icon{margin:11px 14px}.grpdx .comment_tabs_buttons .ui-state-focus,.grpdx .comment_tabs_buttons .ui-state-hover{border:0}.grpdx .comment_box_sidebar .comment_text{outline:none}.grpdx .annotation_icons_wrapper .collapsed_anno_box{height:23px;margin:6px 0 5px -2px;padding:10px 0 7px 7px;width:40px}.thumbnail_panel{position:relative;float:left;height:100%;min-width:30px}.thumbnail_panel .thumbnail_stripe{position:absolute;top:0;bottom:0;left:0;width:30px;background-color:#c1c3c7}.thumbnail_panel .thumbnail_stripe .thumbnail_open{display:block;width:19px;height:22px;margin:14px 0 0 6px;background:url(../images/sprites.png) no-repeat;background-position:-935px -1257px}.thumbnail_panel .thumbnail_stripe .thumbnail_open:hover{background-position:-935px -1284px}.thumbnail_panel.active .thumbnailsContainer{display:block}.thumbnail_panel.active .thumbnail_open{background-position:-935px -1284px}.thumbnail_panel div.thumbnailsContainer{position:relative;background-color:#d3d5d8;margin-left:30px;border-left:1px solid #777d84;border-right:0;width:203px}.thumbnail_panel div.thumbnailsContainer h3{font-size:14px;color:#333;margin:0;text-align:center;height:42px;line-height:42px;position:absolute;top:0;left:0;right:0;z-index:3;background-color:#d3d5d8}.thumbnail_panel div.thumbnailsContainer h3 .static{-webkit-box-shadow:0 2px 10px 0 rgba(0,0,0,0.5);-moz-box-shadow:0 2px 10px 0 rgba(0,0,0,0.5);box-shadow:0 2px 10px 0 rgba(0,0,0,0.5)}.thumbnail_panel div.thumbnailsContainer .panel_close{display:block;position:absolute;top:11px;right:5px;width:21px;height:20px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;border:1px solid transparent;z-index:4}.thumbnail_panel div.thumbnailsContainer .panel_close:before{content:"";position:absolute;width:6px;height:9px;top:5px;left:7px;background:url(../images/sprites.png) no-repeat;background-position:-960px -1260px}.thumbnail_panel div.thumbnailsContainer .panel_close:hover{border-color:#b9bbbe}.thumbnail_panel div.thumbnailsContainer .panel_close:hover:before{background-position:-960px -1275px}.thumbnail_panel div.thumbnailsContainer .pages_thumbs{counter-reset:item}.thumbnail_panel div.thumbnailsContainer .pages_thumbs .thumb_page{min-height:201px;margin-bottom:50px}.thumbnail_panel div.thumbnailsContainer .pages_thumbs .thumb_page:after{content:counter(item);counter-increment:item;position:absolute;bottom:-27px;left:0;right:0;text-align:center}.thumbnail_panel div.thumbnailsContainer .pages_thumbs .thumb_page img{-webkit-box-shadow:1px 1px 4px 0px rgba(0,0,0,0.2);-moz-box-shadow:1px 1px 4px 0px rgba(0,0,0,0.2);box-shadow:1px 1px 4px 0px rgba(0,0,0,0.2)}.thumbnail_panel div.thumbnailsContainer .pages_thumbs .thumb_page.ui-selected{background-color:#d3d5d8}.thumbnail_panel div.thumbnailsContainer .pages_thumbs .thumb_page.ui-selected img{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border:5px solid #55cff6;-webkit-border-radius:3%;-moz-border-radius:3%;border-radius:3%}.thumbnail_panel div.thumbnailsContainer .pages_thumbs .thumb_page .thumb_controls{position:absolute;top:0;left:50%;right:auto;bottom:0;z-index:2}.thumbnail_panel div.thumbnailsContainer .pages_thumbs .thumb_page .thumb_controls button{display:none;border:0;background-color:transparent}.thumbnail_panel div.thumbnailsContainer .pages_thumbs .thumb_page .thumb_controls .delete_page{position:absolute;top:-7px;right:-7px;width:22px;height:26px;background:url(../images/sprites.png) no-repeat;background-position:-980px -1260px}.thumbnail_panel div.thumbnailsContainer .pages_thumbs .thumb_page .thumb_controls .page_rotate{position:absolute;width:23px;height:22px;bottom:7px;right:4px;border:1px solid #b9bbbe;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;background-color:#fff}.thumbnail_panel div.thumbnailsContainer .pages_thumbs .thumb_page .thumb_controls .page_rotate:before{content:"";display:block;position:absolute;width:14px;height:15px;left:3px;top:3px;background:url(../images/sprites.png) no-repeat;background-position:-960px -1293px}.thumbnail_panel div.thumbnailsContainer .pages_thumbs .thumb_page .thumb_controls:hover button{display:block}.document-wrapper{float:left;padding:40px}.groupdocs_viewer_wrapper{background-color:#777d84}.grpdx .ta_resize_box_round{background:#d35620;width:16px;height:16px;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;position:absolute;cursor:pointer}.ta_resize_box_square{background:#d35620;width:20px;height:20px;position:absolute}.grpdx .doc_viewer_tabs{border-bottom:36px solid #c4c4c4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background:#fff}.grpdx .doc_viewer_tabs .doc-page{border:1px solid #ededed}.grpdx .tab_control_wrapper {position:absolute;bottom:0;overflow-y:auto;height:35px;background:url("../images/mainbg.png") repeat;width:100%}.grpdx .tab_control_wrapper > .doc_viewer_tab_control{margin:0;background:url(../images/mainbg.png) repeat;padding:0 20px}.grpdx .doc_viewer_tab_control>li{display:inline-block;margin-right:-3px;vertical-align:top;position:relative}.grpdx .doc_viewer_tab_control>li:after,.grpdx .doc_viewer_tab_control>li:before{content:'';position:absolute;top:0;right:-5px;border-width:3px;border-style:solid;border-color:#f4f4f4 transparent transparent #f4f4f4}.grpdx .doc_viewer_tab_control>li:before{top:1px;border-color:#c4c4c4 transparent transparent #c4c4c4}.grpdx .doc_viewer_tab_control>li>a{display:block;min-width:70px;max-width:150px;border:1px solid #c4c4c4;border-top:0;background-color:#f4f4f4;background-image:-webkit-linear-gradient(top,#f4f4f4,#ededed);background-image:linear-gradient(to bottom,#f4f4f4,#ededed);border-radius:0 0 5px 5px;text-align:center;font:700 12px/24px "PT Sans",Helvetica,Arial,sans-serif;color:#7f7f7f;white-space:nowrap;padding-right:5px;padding-left:5px;text-overflow:ellipsis;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);-moz-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);overflow:hidden}.grpdx .doc_viewer_tab_control>li>a:hover{text-decoration:none;color:#595959}.grpdx .doc_viewer_tab_control>li.active{z-index:2;margin-top:-1px}.grpdx .doc_viewer_tab_control>li.active>a{background-color:#fff;background-image:-webkit-linear-gradient(top,#fff,#f5f5f5);background-image:linear-gradient(to bottom,#fff,#f5f5f5);color:#333;position:relative;padding-top:1px}.grpdx .doc_viewer_tab_control>li.active:after{border-color:#fff transparent transparent #fff}.grpdx .transformtool:before,.grpdx .transformtool:after,.grpdx .transformtool .bd_lr:before,.grpdx .transformtool .bd_lr:after{opacity:.5}.jerrorwrapper{position:absolute}.grpdx .modal_progressbar{border:3px solid rgba(0,0,0,0.15) !important;border-radius:8px;width:531px !important;height:auto !important;margin:-200px 0 0 -265px !important;-webkit-box-shadow:0 0 10px rgba(0,0,0,0.7);-moz-box-shadow:0 0 10px rgba(0,0,0,0.7);box-shadow:0 0 10px rgba(0,0,0,0.7)}.grpdx .modal_progressbar .modal_dialog_header{background:#ddd;height:57px;color:#444;font:700 20px/55px "PT Sans",Helvetica,Arial,sans-serif;padding-left:20px}.grpdx .modal_progressbar .modal_dialog_header .percent{display:none}.grpdx .modal_progressbar .modal_dialog_content{border:0;padding:20px 20px 25px;background:#f2f2f2;border-top:1px solid #fff;height:35px}.grpdx .modal_progressbar .modal_dialog_content p{font:400 14px "PT Sans",Helvetica,Arial,sans-serif;color:#444}.grpdx .modal_progressbar .progressbar{background:#d4d4d4;height:16px;border-radius:8px;overflow:hidden;margin:8px 0}.grpdx .modal_progressbar .progressbar .progress{height:100%;float:left;background:#e96730;border-radius:8px}.grpdx .modal_progressbar .icon_minimize,.grpdx .modal_progressbar .icon_maximize{width:18px;height:18px;background:#393939;border-radius:9px;float:right;margin:20px 20px 20px 0;-webkit-box-shadow:0 1px 0px rgba(255,255,255,0.7);-moz-box-shadow:0 1px 0px rgba(255,255,255,0.7);box-shadow:0 1px 0px rgba(255,255,255,0.7);color:#fff;font:700 16px/15px "PT Sans",Helvetica,Arial,sans-serif;text-align:center}.grpdx .modal_progressbar .icon_minimize:hover,.grpdx .modal_progressbar .icon_maximize:hover{text-decoration:none}.grpdx .modal_progressbar .icon_maximize{display:none;font:700 17px/18px "PT Sans",Helvetica,Arial,sans-serif}.grpdx .modal_progressbar.min{top:auto !important;left:auto !important;bottom:-90px;right:35px !important;width:auto !important}.grpdx .modal_progressbar.min .modal_dialog_header{font-size:14px}.grpdx .modal_progressbar.min .modal_dialog_header .percent{display:inline}.grpdx .modal_progressbar.min .icon_minimize{display:none}.grpdx .modal_progressbar.min .icon_maximize{display:block}.grpdx .pages_container .current_search_highlight{background-color:lime}.grpdx .content_control_visual_wrapper{position:absolute;background-color:transparent;z-index:1;border:1px dashed #aeaeae}.grpdx .content_control_visual_wrapper:hover,.grpdx .content_control_visual_wrapper.hover{background-color:rgba(157,217,242,0.15)}.grpdx .content_control_visual_wrapper:before{content:attr(data-title);opacity:0;height:20px;overflow:visible;position:absolute;top:-24px;left:-1px;text-shadow:1px 1px 0 #fff}.grpdx .content_control_visual_wrapper:hover:before,.grpdx .content_control_visual_wrapper.hover:before{opacity:1;color:#7c7c7c;background-color:#c7edfc;font:400 14px/18px "PT Sans",Helvetica,Arial,sans-serif;padding:3px 6px 0;border:1px dashed #aeaeae;border-bottom:0}.grpdx .head_tool_dropdown li a p{margin-left:27px} \ No newline at end of file diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Default.aspx b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Default.aspx deleted file mode 100644 index 822d365..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Default.aspx +++ /dev/null @@ -1,157 +0,0 @@ -<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %> -<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %> -<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> -<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> -<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %> -<%@ Import Namespace="Microsoft.SharePoint" %> -<%@ Assembly Name="Microsoft.Web.CommandUI, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> -<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="GroupDocs_Annotation_SharePoint_WebPart.Default" DynamicMasterPageFile="~masterurl/default.master" %> - - - GroupDocs.Annotation: WebForms - Front-End Application - - <%-- *** By Executing AnnotationScripts will render all required JS and CSS from server side along with calling initial JS methods. ***--%> - <%=GroupDocs_Annotation_SharePoint_WebPart.HtmlHelperExtensions.AnnotationScripts() %> - - <%-- *** You can also use this as another option to render scripts from specific path as you required, please must comment AnnotationScripts line if using this. ***--%> - <%-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --%> - <%-- --%> - - <%-- *** By Executing Annotation() will render all required JS and options from server side along with calling initial JS methods. ***--%> - <%-- <%=GroupDocs_Annotation_SharePoint_WebPart.HtmlHelperExtensions.Annotation() - .ElementId("annotation-widget") - .FilePath("Quick_Start_Guide_To_Using_GroupDocs.pdf") - .ShowZoom(true) - .ShowPaging(true) - .ShowThumbnails(true) - .OpenThumbnails(false) - .PreloadPageCount(3) - .EnableRightClickMenu(true) - .ShowFileExplorer(true) - .Tools(GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Options.AnnotationTools.All) - .ShowHeader(true) - - .ClickableAnnotations(true) - .ShowFileExplorer(true) - .AccessRights(GroupDocs.Annotation.Domain.AnnotationReviewerRights.All) %>--%> - - - - - - <%-- *** 'annotation-widget' div will be populated and rendered with html for Viewer and Annotation tools & features provided by GroupDocs.Annotation for .NET API for .NET *** --%> -
-
- <%-- *** Default: You can also use this as another option to call annotation with js options as you required (its faster than above as it execute directly without getting response from server before js execution, please must comment above Annotation() script lines if using this. ***--%> - - - -
- - -GroupDocs.Annotation SharePoint Web-Part - - - -GroupDocs.Annotation SharePoint Web-Part - diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Default.aspx.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Default.aspx.cs deleted file mode 100644 index abc4589..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Default.aspx.cs +++ /dev/null @@ -1,674 +0,0 @@ -using System; -using System.ComponentModel; -using System.Web.UI.WebControls.WebParts; -using System.Collections.Generic; -using System.Collections.Specialized; -using System.IO; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Web.Services; -using System.Web.Script.Services; -using GroupDocs.Annotation.Config; -using System.Web.Security; -using System.Web.Script.Serialization; -using GroupDocs.Annotation.Domain; -using GroupDocs.Annotation.Domain.Containers; -using GroupDocs.Annotation.Domain.Image; -using GroupDocs.Annotation.Domain.Options; -using GroupDocs.Annotation.Handler; -using GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic; -using GroupDocs.Annotation; -using GroupDocs.Annotation.Exception; -using GroupDocs.Annotation.Handler.Input.DataObjects; -using GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Options; -using GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Responses; -using Microsoft.Practices.Unity; -using AnnotationReplyInfo = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.Data.AnnotationReplyInfo; -using DeleteReplyResult = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.DeleteReplyResult; -using Point = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.DataGeometry.Point; -using Rectangle = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.DataGeometry.Rectangle; -using RestoreRepliesResult = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.RestoreRepliesResult; -using Microsoft.SharePoint.WebControls; -using Microsoft.AspNet.SignalR; -using System.Web.Routing; -using Microsoft.Web.Infrastructure.DynamicModuleHelper; - - - - - -namespace GroupDocs_Annotation_SharePoint_WebPart -{ - public partial class Default : LayoutsPageBase - { - #region Static Fields - - private static EmbeddedResourceManager _resourceManager; - private static IAnnotationService _annotationSvc; - private static AnnotationImageHandler annotator; - private static ApplicationPathFinder pathFinder = new ApplicationPathFinder(); - - - #endregion Fields - protected void Page_Load(object sender, EventArgs e) - { - if (!Page.IsPostBack) - { - // Register and initialize once only, all other methods will use and share same objects/configs. - - // initializing AnnotationImageHandler object. - annotator = UnityConfig.GetConfiguredContainer().Resolve(); - - // initializing EmbeddedResourceManager object. - _resourceManager = new EmbeddedResourceManager(); - - //AnnotationHub.userGUID = "52ced024-26e0-4b59-a510-ca8f5368e315"; - // initializing AnnotationService object. - _annotationSvc = UnityConfig.GetConfiguredContainer().Resolve(); - - //Here you should apply proper GroupDocs.Annotation license (in case you want to - //use this sample without trial limits) - GroupDocs.Annotation.License lic = new GroupDocs.Annotation.License(); - lic.SetLicense("C:/Users/Ali Ahmad/Documents/GroupDocs.Total.lic"); - - - - } - } - - #region Annotaion Viewer Members - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static string GetScript(string name) - { - string script = new EmbeddedResourceManager().GetScript(name); - return script; - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static string GetCss(string name) - { - string css = new EmbeddedResourceManager().GetCss(name); - return css; - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static byte[] GetEmbeddedImage(string name) - { - byte[] imageBody = new EmbeddedResourceManager().GetBinaryResource(name); - string mimeType = "image/png"; - return imageBody; - } - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static string GetTimes(int myinput, string myinput2, bool myinput3) - { - return "my success test txt.. : myinput: " + myinput.ToString() + " myinput2: " + myinput2 + " myinput3:" + myinput3.ToString(); - } - - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static ViewDocumentResponse ViewDocument(string path) - { - string request = path; - try - { - GroupDocs.Annotation.License lic = new GroupDocs.Annotation.License(); - lic.SetLicense("C:/Users/Ali Ahmad/Documents/GroupDocs.Total.lic"); - - } - catch (Exception ex) - { - - throw; - } - - - string fileName = Path.GetFileName(request); - var pathFinder = new ApplicationPathFinder(); - string _appPath = HttpContext.Current.Server.MapPath("~/_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/"); - ViewDocumentResponse result = new ViewDocumentResponse - { - pageCss = new string[] { }, - lic = true, - pdfDownloadUrl = _appPath + "App_Data/" + request, - url = _appPath + "App_Data/" + request, - path = request, - name = fileName - }; - DocumentInfoContainer docInfo = null; - try - { - docInfo = annotator.GetDocumentInfo(request); - } - catch (Exception ex) - { - - throw; - } - - result.documentDescription = new FileDataJsonSerializer(docInfo.Pages).Serialize(true); - result.docType = docInfo.DocumentType; - result.fileType = docInfo.FileType; - - List imagePages = annotator.GetPages(request); - - // Provide images urls - List urls = new List(); - - // If no cache - save images to temp folder - string tempFolderPath = HttpContext.Current.Server.MapPath("~/_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/Content/TempStorage"); - - - foreach (PageImage pageImage in imagePages) - { - string docFoldePath = Path.Combine(tempFolderPath, request); - - if (!Directory.Exists(docFoldePath)) - Directory.CreateDirectory(docFoldePath); - - string pageImageName = string.Format("{0}\\{1}.png", docFoldePath, pageImage.PageNumber); - - using (Stream stream = pageImage.Stream) - using (FileStream fileStream = new FileStream(pageImageName, FileMode.Create)) - { - stream.Seek(0, SeekOrigin.Begin); - stream.CopyTo(fileStream); - } - string baseUrl = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.ApplicationPath + "_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/"; - urls.Add(string.Format("{0}Content/TempStorage/{1}/{2}.png", baseUrl, request, pageImage.PageNumber)); - } - - result.imageUrls = urls.ToArray(); - - // invoke event - new DocumentOpenSubscriber().HandleEvent(request, _annotationSvc); - - return result; - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static FileBrowserTreeDataResponse LoadFileBrowserTreeData(string path) - { - string parameters = ""; - - string tempPath = HttpContext.Current.Server.MapPath("~/_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/App_Data/"); - if (!string.IsNullOrEmpty(parameters)) - tempPath = Path.Combine(tempPath, parameters); - - FileTreeContainer tree = null; - try - { - tree = annotator.LoadFileTree(new FileTreeOptions(tempPath)); - } - catch (Exception ex) - { - - throw; - } - - List treeNodes = tree.FileTree; - FileBrowserTreeDataResponse data = new FileBrowserTreeDataResponse - { - nodes = ToFileTreeNodes(parameters, treeNodes).ToArray(), - count = tree.FileTree.Count - }; - - return data; - } - - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static GetImageUrlsResponse GetImageUrls(string path) - { - string parameters = path; - - if (string.IsNullOrEmpty(parameters)) - { - GetImageUrlsResponse empty = new GetImageUrlsResponse { imageUrls = new string[0] }; - - return empty; - } - - List imagePages = annotator.GetPages(parameters); - - // Save images some where and provide urls - List urls = new List(); - string tempFolderPath = HttpContext.Current.Server.MapPath("~/_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/Content/TempStorage"); - - foreach (PageImage pageImage in imagePages) - { - string docFoldePath = Path.Combine(tempFolderPath, parameters); - - if (!Directory.Exists(docFoldePath)) - Directory.CreateDirectory(docFoldePath); - - string pageImageName = string.Format("{0}\\{1}.png", docFoldePath, pageImage.PageNumber); - - using (Stream stream = pageImage.Stream) - using (FileStream fileStream = new FileStream(pageImageName, FileMode.Create)) - { - stream.Seek(0, SeekOrigin.Begin); - stream.CopyTo(fileStream); - } - - string baseUrl = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.ApplicationPath + "_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/"; - urls.Add(string.Format("{0}Content/TempStorage/{1}/{2}.png", baseUrl, parameters, pageImage.PageNumber)); - } - - GetImageUrlsResponse result = new GetImageUrlsResponse { imageUrls = urls.ToArray() }; - - return result; - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static Stream GetFile(GetFileParameters parameters) - { - string displayName = string.IsNullOrEmpty(parameters.DisplayName) ? - Path.GetFileName(parameters.Path) : Uri.EscapeDataString(parameters.DisplayName); - - Stream fileStream = annotator.GetFile(parameters.Path).Stream; - - //jquery.fileDownload uses this cookie to determine that a file download has completed successfully - HttpContext.Current.Response.SetCookie(new HttpCookie("jqueryFileDownloadJSForGD", "true") { Path = "/" }); - - return fileStream; - } - - private static List ToFileTreeNodes(string path, List nodes) - { - return nodes.Select(_ => - new FileBrowserTreeNode - { - path = string.IsNullOrEmpty(path) ? _.Name : string.Format("{0}/{1}", path, _.Name), - docType = string.IsNullOrEmpty(_.DocumentType) ? _.DocumentType : _.DocumentType.ToLower(), - fileType = string.IsNullOrEmpty(_.FileType) ? _.FileType : _.FileType.ToLower(), - name = _.Name, - size = _.Size, - modifyTime = (long)(_.LastModificationDate - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds, - type = _.IsDirectory ? "folder" : "file" - - }) - .ToList(); - } - - - private static string GetPdfDownloadUrl(ViewDocumentParameters request) - { - return GetFileUrl(request.Path, true, false, request.FileDisplayName, - request.IgnoreDocumentAbsence, - request.UseHtmlBasedEngine); - } - - private static string GetFileUrl(ViewDocumentParameters request) - { - return GetFileUrl(request.Path, false, false, request.FileDisplayName); - } - - public static string GetFileUrl(string path, bool getPdf, bool isPrintable, string fileDisplayName = null, - bool ignoreDocumentAbsence = false, - bool useHtmlBasedEngine = false) - { - NameValueCollection queryString = HttpUtility.ParseQueryString(string.Empty); - queryString["path"] = path; - if (!isPrintable) - { - queryString["getPdf"] = getPdf.ToString().ToLower(); - if (fileDisplayName != null) - queryString["displayName"] = fileDisplayName; - } - - if (ignoreDocumentAbsence) - { - queryString["ignoreDocumentAbsence"] = ignoreDocumentAbsence.ToString().ToLower(); - } - - queryString["useHtmlBasedEngine"] = useHtmlBasedEngine.ToString().ToLower(); - - string handlerName = isPrintable ? "GetPdfWithPrintDialog" : "GetFile"; - - string baseUrl = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.ApplicationPath + "_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/"; - - string fileUrl = string.Format("{0}{1}?{2}", baseUrl, handlerName, queryString); - return fileUrl; - } - - private static byte[] GetBytes(Stream input) - { - input.Position = 0; - - using (MemoryStream ms = new MemoryStream()) - { - input.CopyTo(ms); - return ms.ToArray(); - } - } - - #endregion - #region Annotation Members - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static AnnotationResults.CreateAnnotationResult CreateAnnotation(string connectionId, string userId, string privateKey, - string fileId, byte type, string message, Rectangle rectangle, int pageNumber, Point annotationPosition, string svgPath, - DrawingOptions drawingOptions, FontOptions font) - { - try - { - //_annotationSvc = UnityConfig.GetConfiguredContainer().Resolve(); - - var result = _annotationSvc.CreateAnnotation(connectionId, fileId, type, message, rectangle, pageNumber, annotationPosition, svgPath, drawingOptions, font); - return result; - } - catch (AnnotatorException e) - { - throw e; - } - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static AnnotationResults.DeleteAnnotationResult DeleteAnnotation(string connectionId, string userId, string privateKey, string fileId, string annotationGuid) - { - try - { - var result = _annotationSvc.DeleteAnnotation(connectionId, fileId, annotationGuid); - return result; - } - catch (AnnotatorException e) - { - return null; - } - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static AnnotationResults.AddReplyResult AddAnnotationReply(string connectionId, string userId, string privateKey, string fileId, string annotationGuid, string message, string parentReplyGuid) - { - try - { - var result = _annotationSvc.AddAnnotationReply(connectionId, fileId, annotationGuid, message, parentReplyGuid); - return result; - } - catch (AnnotatorException e) - { - return null; - } - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static AnnotationResults.DeleteReplyResult DeleteAnnotationReply(string connectionId, string userId, string privateKey, string fileId, string annotationGuid, string replyGuid) - { - try - { - DeleteReplyResult result = _annotationSvc.DeleteAnnotationReply(connectionId, fileId, annotationGuid, replyGuid); - return result; - } - catch (AnnotatorException e) - { - return null; - } - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static AnnotationResults.EditReplyResult EditAnnotationReply(string connectionId, string userId, string privateKey, string fileId, string annotationGuid, string replyGuid, string message) - { - try - { - var result = _annotationSvc.EditAnnotationReply(connectionId, fileId, annotationGuid, replyGuid, message); - return result; - } - catch (AnnotatorException e) - { - return null; - } - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static AnnotationResults.RestoreRepliesResult RestoreAnnotationReplies(string connectionId, string fileId, string annotationGuid, AnnotationReplyInfo[] replies) - { - try - { - var result = (replies == null || replies.Length == 0 ? - new RestoreRepliesResult { AnnotationGuid = annotationGuid, ReplyIds = new string[0] } : - _annotationSvc.RestoreAnnotationReplies(connectionId, fileId, annotationGuid, replies)); - return result; - } - catch (AnnotatorException e) - { - return null; - } - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static AnnotationResults.ListAnnotationsResult ListAnnotations(string connectionId, string userId, string privateKey, string fileId) - { - try - { - var result = _annotationSvc.ListAnnotations(connectionId, fileId); - return result; - } - catch (AnnotatorException e) - { - return null; - } - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static AnnotationResults.ResizeAnnotationResult ResizeAnnotation(string connectionId, string fileId, string annotationGuid, double width, double height) - { - try - { - var result = _annotationSvc.ResizeAnnotation(connectionId, fileId, annotationGuid, width, height); - return result; - } - catch (AnnotatorException e) - { - return null; - } - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static AnnotationResults.MoveAnnotationResult MoveAnnotationMarker(string connectionId, string userId, string privateKey, string fileId, - string annotationGuid, double left, double top, int? pageNumber) - { - try - { - var result = _annotationSvc.MoveAnnotationMarker(connectionId, fileId, annotationGuid, left, top, pageNumber); - return result; - } - catch (AnnotatorException e) - { - return null; - } - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static AnnotationResults.SaveAnnotationTextResult SaveTextField(string connectionId, string userId, string privateKey, string fileId, - string annotationGuid, string text, string fontFamily, double fontSize) - { - try - { - var result = _annotationSvc.SaveTextField(connectionId, fileId, annotationGuid, text, fontFamily, fontSize); - return result; - } - catch (AnnotatorException e) - { - return null; - } - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static AnnotationResults.SaveAnnotationTextResult SetTextFieldColor(string connectionId, string fileId, string annotationGuid, int fontColor) - { - try - { - var result = _annotationSvc.SetTextFieldColor(connectionId, fileId, annotationGuid, fontColor); - return result; - } - catch (AnnotatorException e) - { - return null; - } - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static AnnotationResults.SaveAnnotationTextResult SetAnnotationBackgroundColor(string connectionId, string fileId, string annotationGuid, int color) - { - try - { - var result = _annotationSvc.SetAnnotationBackgroundColor(connectionId, fileId, annotationGuid, color); - return result; - } - catch (AnnotatorException e) - { - return null; - } - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static AnnotationResults.GetCollaboratorsResult GetDocumentCollaborators(string userId, string privateKey, string fileId) - { - var result = _annotationSvc.GetCollaborators(fileId); - return result; - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static AnnotationResults.SetCollaboratorsResult AddDocumentReviewer(string userId, string privateKey, - string fileId, string reviewerEmail, string reviewerFirstName, string reviewerLastName, string reviewerInvitationMessage) - { - var result = _annotationSvc.AddCollaborator(fileId, reviewerEmail, reviewerFirstName, reviewerLastName, reviewerInvitationMessage); - return result; - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static HtmlString ExportAnnotations(string connectionId, string fileId, string format, string mode) - { - try - { - string fileName = _annotationSvc.ExportAnnotations(connectionId, fileId); - - return new HtmlString(fileName); - } - catch (Exception e) - { - return new HtmlString(""); - } - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static FileResponse ImportAnnotations(string connectionId, string fileGuid) - { - try - { - _annotationSvc.ImportAnnotations(connectionId, fileGuid); - return new FileResponse(fileGuid); - } - catch (Exception e) - { - return null; - } - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static string GetPdfVersionOfDocument(string connectionId, string fileId) - { - try - { - var fileName = _annotationSvc.GetAsPdf(connectionId, fileId); - return fileName; - } - catch (Exception e) - { - return ""; - } - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static FileStream DownloadFile(string path) - { - var filePath = pathFinder.GetApplicationPath() + "_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/App_Data/" + path; - FileStream ff = File.OpenRead(filePath); - return ff; - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static FileResponse UploadFile(string user_id, string fld, string fileName, bool? multiple = false) - { - var user = UnityConfig.GetConfiguredContainer().Resolve().GetUserDataHandler().GetUserByGuid(user_id) ?? - new User(); - try - { - var files = HttpContext.Current.Request.Files; - var uploadDir = Path.Combine(pathFinder.GetApplicationPath() + "_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/App_Data", fld); - var filePath = Path.Combine(uploadDir, fileName ?? files[0].FileName); - - Directory.CreateDirectory(uploadDir); - - using (var stream = System.IO.File.Create(filePath)) - { - ((multiple ?? false) ? HttpContext.Current.Request.InputStream : files[0].InputStream).CopyTo(stream); - } - - var fileId = Path.Combine(fld, fileName ?? files[0].FileName); - try - { - annotator.CreateDocument(fileId, DocumentType.Pdf, user.Id); - } - catch (AnnotatorException e) - { - if (annotator.RemoveDocument(fileId)) - { - annotator.CreateDocument(fileId, DocumentType.Pdf, user.Id); - } - } - return new FileResponse(fileId); - } - catch (IOException e) - { - return null; - } - } - - [WebMethod] - [ScriptMethod(ResponseFormat = ResponseFormat.Json)] - public static AnnotationResults.Data.ReviewerInfo GetAvatar(string userId) - { - var collaborator = _annotationSvc.GetCollaboratorMetadata(userId); - if (collaborator == null || collaborator.Avatar == null) - { - return new AnnotationResults.Data.ReviewerInfo(); - } - - const string mimeType = "image/png"; - return collaborator; - } - - #endregion Annotation members - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Default.aspx.designer.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Default.aspx.designer.cs deleted file mode 100644 index 44c5267..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Default.aspx.designer.cs +++ /dev/null @@ -1,15 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace GroupDocs_Annotation_SharePoint_WebPart { - - - public partial class Default { - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/DocumentReviewer.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/DocumentReviewer.cs deleted file mode 100644 index 27c6130..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/DocumentReviewer.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace GroupDocs_Annotation_SharePoint_WebPart -{ - public struct DocumentReviewer - { - public string DocumentGuid { get; set; } - public string UserGuid { get; set; } - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/IAnnotationBroadcaster.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/IAnnotationBroadcaster.cs deleted file mode 100644 index ae3599b..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/IAnnotationBroadcaster.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using System.Collections.Generic; -using GroupDocs.Annotation.Domain; -using GroupDocs_Annotation_SharePoint_WebPart.BusinessLogic.Options; -using AnnotationInfo = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.Data.AnnotationInfo; -using AnnotationReplyInfo = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.Data.AnnotationReplyInfo; -using Point = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.DataGeometry.Point; -using Rectangle = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.DataGeometry.Rectangle; -using ReviewerInfo = GroupDocs_Annotation_SharePoint_WebPart.AnnotationResults.Data.ReviewerInfo; - -namespace GroupDocs_Annotation_SharePoint_WebPart -{ - public interface IAnnotationBroadcaster - { - void CreateAnnotation(IList collaboratorGuids, - string connectionIdToExclude, - string userGuid, - string userName, - string documentGuid, - AnnotationType annotationType, - string annotationGuid, - byte access, - string replyGuid, - int pageNumber, - Rectangle box, - Point? annotationPosition, - string svgPath, - DrawingOptions options, - FontOptions font); - - void AddAnnotationReply(IList collaboratorGuids, - string connectionIdToExclude, - string userGuid, - string userName, - string annotationGuid, - string replyGuid, - string parentReplyGuid, - DateTime replyDateTime, - string text); - void SetReviewersColors(IList collaboratorGuids, string connectionIdToExclude, ReviewerInfo[] reviewerDescriptions); - void SetReviewersRights(IList collaboratorGuids, string connectionIdToExclude, ReviewerInfo[] reviewerDescriptions); - - void ResizeAnnotation(IList collaboratorGuids, string documentGuid, string connectionIdToExclude, string annotationGuid, double width, double height); - void SetTextFieldColor(IList collaboratorGuids, string documentGuid, string connectionIdToExclude, string annotationGuid, int fontColor); - void SetAnnotationBackgroundColor(IList collaboratorGuids, string documentGuid, string connectionIdToExclude, string annotationGuid, int color); - void DeleteAnnotation(IList collaboratorGuids, string documentGuid, string connectionIdToExclude, string annotationGuid); - void MoveAnnotationMarker(IList collaboratorGuids, string connectionIdToExclude, string annotationGuid, Point position, int? pageNumber); - void DeleteAnnotationReply(IList collaboratorGuids, string connectionIdToExclude, string annotationGuid, string replyGuid, AnnotationReplyInfo[] replies); - void EditAnnotationReply(IList collaboratorGuids, string connectionIdToExclude, string annotationGuid, string replyGuid, string message); - void UpdateTextField(IList collaboratorGuids, string connectionIdToExclude, string annotationGuid, - string text, string fontFamily, double? fontSize); - void SetAnnotationAccess(IList collaboratorGuids, string connectionIdToExclude, string annotationGuid, byte annotationAccess, AnnotationInfo annotation); - void MoveAnnotation(IList collaboratorGuids, string connectionIdToExclude, string annotationGuid, int pageNumber, Point position); - - void SetUserGuidForConnection(string connectionGuid, string userGuid); - DocumentReviewer? GetConnectionUser(string connectionId); - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/IAnnotationHub.cs b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/IAnnotationHub.cs deleted file mode 100644 index 478fa70..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/IAnnotationHub.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Collections.Generic; - -namespace GroupDocs_Annotation_SharePoint_WebPart -{ - - public interface IAnnotationHub - { - void SetUserGuidForConnection(string connectionGuid, string userGuid); - string[] GetConnectionIdsToCall(string connectionIdToExclude, IList collaboratorGuids); - string[] GetConnectionIdsToCall(string connectionIdToExclude, IList collaboratorGuids, string documentGuid); - DocumentReviewer? GetConnectionUser(string connectionId); - } -} diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/area_cursor.ico b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/area_cursor.ico deleted file mode 100644 index c8b3dc9..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/area_cursor.ico and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-scrollbar-thumb-y.png b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-scrollbar-thumb-y.png deleted file mode 100644 index e8fcd05..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-scrollbar-thumb-y.png and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-scrollbar-thumb-y_sidebar.png b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-scrollbar-thumb-y_sidebar.png deleted file mode 100644 index 8c0fe5f..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-scrollbar-thumb-y_sidebar.png and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-scrollbar-track-y.png b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-scrollbar-track-y.png deleted file mode 100644 index 1827f3a..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-scrollbar-track-y.png and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-scrollbar-trackend-y.png b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-scrollbar-trackend-y.png deleted file mode 100644 index ee788f5..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-scrollbar-trackend-y.png and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-scrollbar-trackend-y_sidebar.png b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-scrollbar-trackend-y_sidebar.png deleted file mode 100644 index 1562b12..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-scrollbar-trackend-y_sidebar.png and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-trial.png b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-trial.png deleted file mode 100644 index 9747014..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bg-trial.png and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bggrey.png b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bggrey.png deleted file mode 100644 index e6a7ebd..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/bggrey.png and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/comment_cursor.ico b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/comment_cursor.ico deleted file mode 100644 index e24195e..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/comment_cursor.ico and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/crossarea_cursor.ico b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/crossarea_cursor.ico deleted file mode 100644 index 12f93bd..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/crossarea_cursor.ico and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/crossarrow_cursor.ico b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/crossarrow_cursor.ico deleted file mode 100644 index 4d5d20c..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/crossarrow_cursor.ico and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/crossruler_cursor.ico b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/crossruler_cursor.ico deleted file mode 100644 index e8bf045..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/crossruler_cursor.ico and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/cursor_strikeout.ico b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/cursor_strikeout.ico deleted file mode 100644 index 1a9cfef..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/cursor_strikeout.ico and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/mainbg.png b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/mainbg.png deleted file mode 100644 index 0fdc102..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/mainbg.png and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/pointanno_cursor.ico b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/pointanno_cursor.ico deleted file mode 100644 index c5377dc..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/pointanno_cursor.ico and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/pointer_cursor.ico b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/pointer_cursor.ico deleted file mode 100644 index 32d0d14..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/pointer_cursor.ico and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/polyline_cursor.ico b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/polyline_cursor.ico deleted file mode 100644 index 653576f..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/polyline_cursor.ico and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/selection2.gif b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/selection2.gif deleted file mode 100644 index 6bee748..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/selection2.gif and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/spinner.gif b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/spinner.gif deleted file mode 100644 index 44df830..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/spinner.gif and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/sprites.png b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/sprites.png deleted file mode 100644 index 583e5d8..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/sprites.png and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/sprites_annotation.png b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/sprites_annotation.png deleted file mode 100644 index 506e77a..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/sprites_annotation.png and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/strikeout_cursor.ico b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/strikeout_cursor.ico deleted file mode 100644 index 209020e..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/strikeout_cursor.ico and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/textanno_cursor.ico b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/textanno_cursor.ico deleted file mode 100644 index ee00dd2..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/textanno_cursor.ico and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/typewritter_cursor.ico b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/typewritter_cursor.ico deleted file mode 100644 index c62a1ec..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/typewritter_cursor.ico and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/underline_cursor.ico b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/underline_cursor.ico deleted file mode 100644 index 7bc23ce..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/underline_cursor.ico and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/uploading.gif b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/uploading.gif deleted file mode 100644 index 4fb7c23..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/uploading.gif and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/viewer_fading.png b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/viewer_fading.png deleted file mode 100644 index 416d237..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/viewer_fading.png and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/watermark_cursor.ico b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/watermark_cursor.ico deleted file mode 100644 index 56aac8a..0000000 Binary files a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Images/watermark_cursor.ico and /dev/null differ diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Scripts/Annotation2Legacy.js b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Scripts/Annotation2Legacy.js deleted file mode 100644 index 690999d..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Scripts/Annotation2Legacy.js +++ /dev/null @@ -1,3152 +0,0 @@ -(function ($, undefined) { - var GuestUser = { - Name: 'groupdocs@groupdocs.com', - DisplayName: 'guest' - }; - - var englishLocale = { - 'ago': 'ago', - 'hour': 'hour', - 'hours': 'hours', - 'minute': 'minute', - 'minutes': 'minutes', - 'day': 'day', - 'days': 'days', - 'week': 'week', - 'weeks': 'weeks', - 'lessThanAMinuteAgo': 'less than a minute ago' - }; - - var ToolDeactivationMode = { - Manual: 0, - Auto: 1 - }; - - // - // Annotation reply structure - // - AnnotationReply = function (reply, serverTime) { - this._init(reply, serverTime || new Date()); - }; - - $.extend(AnnotationReply.prototype, { - guid: null, - index: -1, - text: null, - repliedOn: null, - userGuid: null, - userName: null, - parentReply: null, - replyLevel: 0, - baseAvatarUrl: null, - avatarUrl: null, - childReplies: null, - - _init: function (reply, serverTime) { - this.guid = ko.observable(reply.guid); - this.repliedOn = reply.repliedOn; - var replyDateTime = new Date(this.repliedOn); - var now = serverTime; - - var difference = now.getTime() - replyDateTime.getTime(); - - difference = (difference > 0 ? difference : 0); - - var daysDifference = Math.floor(difference / 1000 / 60 / 60 / 24); - difference -= daysDifference * 1000 * 60 * 60 * 24; - - var hoursDifference = Math.floor(difference / 1000 / 60 / 60); - difference -= hoursDifference * 1000 * 60 * 60; - - var minutesDifference = Math.floor(difference / 1000 / 60); - difference -= minutesDifference * 1000 * 60; - - //var secondsDifference = Math.floor(difference / 1000); - if (hoursDifference > 0) { - if (minutesDifference > 15 && minutesDifference < 45) - hoursDifference += 0.5; - if (minutesDifference >= 45) { - hoursDifference += 1; - if (hoursDifference >= 24) - daysDifference += 1; - } - } - - var localization = $.extend(true, {}, englishLocale, window.localizedStrings || {}); - - var localizedAgo = localization["ago"]; - - var localizedHour = localization["hour"]; - var localizedHours = localization["hours"]; - - var localizedDay = localization["day"]; - var localizedDays = localization["days"]; - - var localizedWeek = localization["week"]; - var localizedWeeks = localization["weeks"]; - - if (daysDifference < 7) { - if (daysDifference == 0) { - if (hoursDifference == 0) { - if (minutesDifference == 0) { - - this.displayDateTime = localization["lessThanAMinuteAgo"]; - } else { - - var localizedMin = localization["minute"]; - var localizedMins = localization["minutes"]; - - this.displayDateTime = window.jGroupdocs.stringExtensions.format("{0} {1} {2}", minutesDifference, (minutesDifference == 1 ? localizedMin : localizedMins), localizedAgo); - } - } - else { - this.displayDateTime = window.jGroupdocs.stringExtensions.format("{0} {1} {2}", hoursDifference, (hoursDifference == 1 ? localizedHour : localizedHours), localizedAgo); - - } - } - else { - this.displayDateTime = window.jGroupdocs.stringExtensions.format("{0} {1} {2} {3} {4}", daysDifference, (daysDifference == 1 ? localizedDay : localizedDays), hoursDifference, (hoursDifference == 1 ? localizedHour : localizedHours), localizedAgo); - } - } - else { - this.displayDateTime = window.jGroupdocs.stringExtensions.format("{0} {1} {2} {3} {4}", Math.floor(daysDifference / 7), (Math.floor(daysDifference / 7) == 1 ? localizedWeek : localizedWeeks), daysDifference % 7, (daysDifference % 7) == 1 ? localizedDay : localizedDays, localizedAgo); - } - - //this.displayDateTime = replyDateTime.getFullYear() + "-" + (replyDateTime.getMonth() + 1) + "-" + replyDateTime.getDate() + " " + - // replyDateTime.getHours() + ":" + replyDateTime.getMinutes() + ":" + replyDateTime.getSeconds(); - this.userGuid = reply.userGuid; - this.userName = (reply.userName == GuestUser.Name ? GuestUser.DisplayName : reply.userName || GuestUser.DisplayName); - this.text = ko.observable(reply.text); - this.parentReplyGuid = ko.observable(reply.parentReplyGuid); - this.replyLevel = reply.replyLevel; - this.avatarUrl = (reply.isAvatarExist === false ? null : this.baseAvatarUrl + reply.userGuid); - this.childReplies = ko.observableArray([]); - - this.isEmpty = ko.computed(function () { - return !(this.guid() && this.guid().length); - }, this); - }, - - clone: function () { - return new AnnotationReply(ko.toJS(this), new Date()); - }, - - restore: function (source) { - if (!source || source.guid() != this.guid()) { - return false; - } - - this.text(source.text()); - return true; - } - }); - - // - // Annotation structure - // - Annotation = function (annotation, serverTime) { - this._init(annotation, serverTime); - }; - - $.extend(Annotation.prototype, { - guid: null, - creatorGuid: null, - type: null, - access: null, - bounds: null, - displayBounds: null, - annotationPosition: null, - annotationOriginalTextBoxDisplayPosition: null, - annotationSideIconDisplayPosition: null, - textRange: null, - createdOn: null, - documentGuid: null, - comments: null, - replies: null, - activeReply: null, - activeReplyData: null, - svgPath: null, - displaySvgPath: null, - connectingLine: null, - annotationIsPublic: null, - startingPoint: null, - text: null, - fontSize: null, - fontFamily: null, - isBeingDeleted: null, - fontColor: null, - penColor: null, - penWidth: null, - penStyle: null, - backgroundColor: null, - selectionCounter: null, - connectorPosition: 0, - // Annotation Type enum - AnnotationType: { None: -1, Text: 0, Area: 1, Point: 2, TextStrikeout: 3, Polyline: 4, TextField: 5, Watermark: 6, TextReplacement: 7, Arrow: 8, TextRedaction: 9, ResourcesRedaction: 10, TextUnderline: 11, Distance: 12 }, - AnnotationExportMode: { Append: 0, TrackChanges: 1 }, - AnnotationAccess: { Public: 0, Private: 1 }, - ConnectorPosition: { Middle: 0, Bottom: 1 }, - - _init: function (annotation, serverTime) { - this.guid = annotation.Guid; - this.type = annotation.Type; - this.access = annotation.Access; - this.pageNumber = annotation.PageNumber; - this.bounds = ko.observable(new jSaaspose.Rect(annotation.Box.X, annotation.Box.Y, annotation.Box.X + annotation.Box.Width, annotation.Box.Y + annotation.Box.Height, false)); - this.displayBounds = ko.observable(new jSaaspose.Rect(0, 0, 0, 0)); - this.annotationPosition = ko.observable(new jSaaspose.Point(annotation.AnnotationPosition.X, annotation.AnnotationPosition.Y)); - this.annotationOriginalTextBoxDisplayPosition = ko.observable(new jSaaspose.Point(0, 0)); - this.annotationSideIconDisplayPosition = ko.observable(new jSaaspose.Point(0, 0)); - this.createdOn = annotation.CreatedOn; - this.documentGuid = annotation.DocumentGuid; - this.replies = ko.observableArray([]); - this.comments = ko.observableArray([]); - this.activeReply = ko.observable(-1); - this.svgPath = annotation.SvgPath; - this.displaySvgPath = ""; - this.annotationIsPublic = ko.observable(annotation.Access == Annotation.prototype.AnnotationAccess.Public); - this.creatorGuid = annotation.CreatorGuid; - this.startingPoint = annotation.startingPoint; - this.text = annotation.FieldText; - this.fontFamily = annotation.FontFamily; - this.fontSize = annotation.FontSize; - this.isBeingDeleted = ko.observable(false); - this.fontColor = ko.observable(annotation.FontColor || 0); - this.selectionCounter = annotation.selectionCounter; - this.penColor = annotation.PenColor || (annotation.DrawingOptions ? annotation.DrawingOptions.penColor : undefined); - this.penWidth = annotation.PenWidth || (annotation.DrawingOptions ? annotation.DrawingOptions.penWidth : undefined); - this.penStyle = annotation.PenStyle || (annotation.DrawingOptions ? annotation.DrawingOptions.penStyle : undefined); - this.backgroundColor = ko.observable(annotation.BackgroundColor || (annotation.DrawingOptions ? annotation.DrawingOptions.BrushColor : undefined)); - - if (annotation.Range) { - this.textRange = { position: annotation.Range.Position, length: annotation.Range.Length }; - } - - this.commentsEnabled = (this.type != Annotation.prototype.AnnotationType.TextStrikeout && - this.type != Annotation.prototype.AnnotationType.TextField && - this.type != Annotation.prototype.AnnotationType.Watermark); - - this.sortReplies(annotation.Replies, serverTime); - - this.replyCount = ko.computed(function () { - return $.grep(this.replies(), function (r) { return !r.isEmpty(); }).length; - }, this); - - this.activeReply.subscribe(function (newValue) { - var reply = this.getReplyAt(newValue); - if (reply) - this.activeReplyData = reply.clone(); - }, this); - }, - - boundingBox: function () { - if (this.bounds().top() < 0) { - this.bounds().setTop(0); - this.bounds(this.bounds()); - } - - /*if (this.svgPath && this.svgPath.length > 0 && - (this.type == Annotation.prototype.AnnotationType.Text || - this.type == Annotation.prototype.AnnotationType.TextReplacement || - this.type == Annotation.prototype.AnnotationType.TextRedaction)) { - - var points = JSON.parse(this.svgPath); - if ($.isArray(points) == false) - return this.bounds(); - - var bounds = new jSaaspose.Rect(points[0].x, points[0].y, 0, 0); - - for (var i = 1; i < points.length; i++) { - bounds.topLeft.x = Math.min(bounds.topLeft.x, points[i].x); - bounds.bottomRight.x = Math.max(bounds.bottomRight.x, points[i].x); - bounds.topLeft.y = Math.min(bounds.topLeft.y, points[i].y); - bounds.bottomRight.y = Math.max(bounds.bottomRight.y, points[i].y); - } - - return bounds; - }*/ - - return this.bounds(); - }, - - sortReplies: function (inputReplies, serverTime) { - var i; - var reply; - var unsortedReplies = []; - for (i = 0; i < inputReplies.length; i++) { - var r = new AnnotationReply(inputReplies[i], serverTime); - unsortedReplies.push(r); - } - - var parentReplyGuid; - for (i = 0; i < unsortedReplies.length; i++) { - reply = unsortedReplies[i]; - this.calculateReplyLevel(reply, unsortedReplies); - } - - var sortedReplies = []; - var replyLevel = 0; - var repliesMoved = 0; - parentReplyGuid = null; - var repliesMovedForThisLevel = false; - var replyQuantity = unsortedReplies.length; - var parentReplyGuids = []; - - while (repliesMoved < replyQuantity) { - do { - repliesMovedForThisLevel = false; - for (i = 0; i < unsortedReplies.length; i++) { - reply = unsortedReplies[i]; - if (reply.replyLevel == replyLevel && (reply.parentReplyGuid() == parentReplyGuid || replyLevel == 0)) { - sortedReplies.push(reply); - repliesMoved++; - repliesMovedForThisLevel = true; - parentReplyGuids.push(parentReplyGuid); - parentReplyGuid = reply.guid(); - unsortedReplies.splice(i, 1); - replyLevel++; - break; - } - } - } while (repliesMovedForThisLevel) - parentReplyGuid = parentReplyGuids.pop(); - replyLevel--; - } - - for (i = 0; i < sortedReplies.length; i++) { - this.pushReply(sortedReplies[i]); - } - }, - - activateLastReply: function () { - var count = this.replies().length; - this.activeReply(count - 1); - }, - - deactivateActiveReply: function () { - this.activeReply(-1); - }, - - pushReply: function (reply) { - reply.index = this.replies().length; - this.replies.push(reply); - - if (reply.replyLevel == 0 && !reply.isEmpty()) { - this.comments.push(reply); - this.comments.sort(function (left, right) { - var leftTime = left.repliedOn, - rightTime = right.repliedOn; - - if (leftTime == rightTime) - return 0; - - return (leftTime > rightTime ? 1 : -1); - }); - } - }, - - addReply: function (userGuid, userName) { - var reply = new AnnotationReply({ userGuid: userGuid, userName: userName, text: '', repliedOn: new Date() }); - this.pushReply(reply); - this.activateLastReply(); - }, - - addReplyFromAnotherUser: function (reply) { - if (this.replies().length == 1 && this.replies()[0].userGuid == reply.userGuid) { - this.replies.remove(this.replies[0]); - this.replies().length = 0; - } - - reply.guid = reply.replyGuid; - - var r = new AnnotationReply(reply, new Date(reply.serverTime)); - this.calculateReplyLevel(r, this.replies()); - - var replyCount = this.replies().length; - - if (replyCount > 0 && this.replies()[replyCount - 1].isEmpty()) { // an empty reply at the end - this.replies()[replyCount - 1].index++; - if (this.activeReply() >= replyCount - 1) - this.activeReply(this.activeReply() + 1); - r.index = replyCount - 1; - this.replies.splice(-1, 0, r); - - if (r.replyLevel == 0) - this.comments.push(r); - } - else { - this.pushReply(r); - this.deactivateActiveReply(); - } - return r; - }, - - getActiveReply: function () { - var index = this.activeReply(); - return this.getReplyAt(index); - }, - - setActiveReply: function (reply) { - // var index = this.replies().indexOf(reply); - var index = $.inArray(reply, this.replies()); - this.activeReply(index); - }, - - setActiveReplyIndex: function (replyIndex) { - this.activeReply(replyIndex); - }, - - getReplyAt: function (index) { - return (index < 0 || index >= this.replies().length ? null : this.replies()[index]); - }, - - updateReply: function (replyGuid, text) { - var reply = this.findReply(replyGuid); - if (reply) { - reply.text(text); - } - }, - - deleteAllReplies: function () { - this.replies.removeAll(); - this.comments.removeAll(); - }, - - makeEmpty: function () { - var reply = new AnnotationReply({ text: "", repliedOn: "", userName: "" }); - this.replies([reply]); - }, - - findReply: function (replyGuid) { - for (var i = 0; i < this.replies().length; i++) { - if (this.replies()[i].guid() == replyGuid) { - return this.replies()[i]; - } - } - - return null; - }, - - findReplyInArray: function (array, replyGuid) { - for (var i = 0; i < array.length; i++) { - if (array[i].guid() == replyGuid) { - return array[i]; - } - } - - return null; - }, - - createConnectingLine: function (canvas, startX, startY, endX, endY, skipX, endX2) { - this.removeConnectingLine(); - var offsetLeft = 20, offsetRight = 10; - var bounds = this.displayBounds(); - this.connectingLine = canvas.path( - window.jGroupdocs.stringExtensions.format("M{0},{1}L{2},{3}L{4},{5}L{6},{7}m{8},0L{9},{7}", - startX, startY, - endX - offsetLeft, startY, - endX - offsetRight, endY, - endX, endY, - skipX, - endX2)); - - this.connectingLine.attr({ "stroke-opacity": 1 }); - this.connectingLine.attr({ "stroke-width": 1 }); - this.setLineColorToInactive(); - }, - - setLineColorToActive: function () { - this.changeConnectingLineColor("#D3480D"); - this.changeConnectingLineDash(""); - }, - - setLineColorToInactive: function () { - this.changeConnectingLineColor("#000"); - this.changeConnectingLineDash(". "); - }, - - changeConnectingLineColor: function (color) { - if (this.connectingLine != null) - this.connectingLine.attr({ stroke: color }); - }, - - changeConnectingLineDash: function (dashString) { - if (this.connectingLine != null) - this.connectingLine.attr({ "stroke-dasharray": dashString }); - }, - - removeConnectingLine: function () { - if (this.connectingLine != null) { - this.connectingLine.remove(); - this.connectingLine = null; - } - }, - - insertReplyAfterAnotherReply: function (existingReply, newReply) { - if (existingReply == null) { - this.pushReply(newReply); - } else { - var existingReplyIndex = this.replies.indexOf(existingReply); - //this.replies.splice(existingReplyIndex + 1, 0, newReply); - var lastChildOfParent = existingReplyIndex; - for (var i = 0; i < this.replies().length; i++) { - if (this.replies()[i].parentReplyGuid() == existingReply.guid()) { - lastChildOfParent = i; - } - } - this.replies.splice(lastChildOfParent + 1, 0, newReply); - } - }, - - calculateReplyLevel: function (reply, replyArray) { - reply.replyLevel = 0; - var parentReplyGuid = reply.parentReplyGuid(); - - while (parentReplyGuid != null) { - var parentReply = this.findReplyInArray(replyArray, parentReplyGuid); - - if (parentReply == null) { - parentReplyGuid = null; - } - else { - if (reply.replyLevel == 0) - parentReply.childReplies.push(reply); - - parentReplyGuid = parentReply.parentReplyGuid(); - reply.replyLevel++; - } - } - }, - - checkReplyHasChildren: function (replyGuid) { - for (var i = 0; i < this.replies().length; i++) { - if (this.replies()[i].parentReplyGuid() == replyGuid) { - return true; - } - } - - return false; - }, - - getReplyDescendants: function (replyGuid) { - var parentGuids = [replyGuid]; - var replies = []; - - while (parentGuids.length > 0) { - var parentReplyGuid = parentGuids.pop(); - - for (var i = 0; i < this.replies().length; i++) { - var r = this.replies()[i]; - - if (!r.isEmpty() && r.parentReplyGuid() == parentReplyGuid) { - replies.push(r); - parentGuids.push(r.guid()); - } - } - } - - return replies; - } - }); - - // - // Annotation Model - // - annotationModel = function (options) { - $.extend(this, options); - this._init(); - }; - - $.extend(annotationModel.prototype, docViewerModel.prototype, { - createAnnotation: function (fileId, type, message, pageNumber, rectangle, annotationPosition, svgPath, drawingOptions, font, callback, errorCallback) { - this._portalService.createAnnotationAsync($.connection.hub.id, this.userId, this.userKey, fileId, type, message, - pageNumber, rectangle, annotationPosition, svgPath, drawingOptions, font, - function (response) { - callback.apply(this, [response]); - }, - function (error) { - errorCallback.apply(this, [error]); - }); - }, - - deleteAnnotation: function (fileId, annotationGuid, callback, errorCallback) { - this._portalService.deleteAnnotationAsync($.connection.hub.id, this.userId, this.userKey, fileId, annotationGuid, - function (response) { - callback.apply(this, [response]); - }, - function (error) { - errorCallback.apply(this, [error]); - }); - }, - - addAnnotationReply: function (fileId, annotationGuid, message, parentReplyGuid, callback, errorCallback) { - this._portalService.addAnnotationReplyAsync($.connection.hub.id, this.userId, this.userKey, fileId, annotationGuid, message, parentReplyGuid, - function (response) { - callback.apply(this, [response]); - }, - function (error) { - errorCallback.apply(this, [error]); - }); - }, - - editAnnotationReply: function (fileId, annotationGuid, replyGuid, message, callback, errorCallback) { - this._portalService.editAnnotationReplyAsync($.connection.hub.id, this.userId, this.userKey, fileId, annotationGuid, replyGuid, message, - function (response) { - if (!response.data.d || response.data.d.Success == false) { - errorCallback.apply(this, [response.data.d || {}]); - } - else { - callback.apply(this, [response]); - } - }.bind(this), - function (error) { - errorCallback.apply(this, [error]); - }); - }, - - restoreAnnotationReplies: function (fileId, annotationGuid, replies, callback, errorCallback) { - this._portalService.restoreAnnotationRepliesAsync($.connection.hub.id, fileId, annotationGuid, replies, - function (response) { - if (!response.data.d || response.data.d.Success == false) { - errorCallback.apply(this, [response.data.d || {}]); - } - else { - callback.apply(this, [response]); - } - }.bind(this), - function (error) { - errorCallback.apply(this, [error]); - }); - }, - - deleteAnnotationReply: function (fileId, annotationGuid, replyGuid, callback, errorCallback) { - this._portalService.deleteAnnotationReplyAsync($.connection.hub.id, this.userId, this.userKey, fileId, annotationGuid, replyGuid, - function (response) { - callback.apply(this, [response]); - }, - function (error) { - errorCallback.apply(this, [error]); - }); - }, - listAnnotations: function (fileId, callback, errorCallback) { - this._portalService.listAnnotationsAsync($.connection.hub.id, this.userId, this.userKey, fileId, - function (response) { - callback.apply(this, [response]); - }, - function (error) { - errorCallback.apply(this, [error]); - }); - }, - - exportAnnotations: function (fileId, format, mode, callback, errorCallback) { - this._portalService.exportAnnotationsAsync($.connection.hub.id, fileId, format, mode, - function (response) { - callback.apply(this, [response.data.d]); - }.bind(this), - function (error) { - errorCallback.apply(this, [error]); - }.bind(this)); - }, - - importAnnotations: function (fileId, saveCurrentAnnotations, callback, errorCallback) { - this._portalService.importAnnotationsAsync(this.userId, this.userKey, $.connection.hub.id, fileId, saveCurrentAnnotations, - function (response) { - callback.apply(this, [response.data.d]); - }.bind(this), - function (error) { - error.Reason = window.localizedStrings[error.Reason]; - errorCallback.apply(this, [error]); - }.bind(this)); - }, - - getPdfVersionOfDocument: function (fileGuid, callback, errorCallback) { - this._portalService.getPdfVersionOfDocumentAsync($.connection.hub.id, fileGuid, - function (response) { - callback.apply(this, [response.data.d]); - }.bind(this), - function (error) { - errorCallback.apply(this, [error]); - }.bind(this)); - }, - - getJobOutDoc: function (jobId, callback, errorCallback) { - this._portalService.getJobOutDocAsync(this.userId, this.userKey, jobId, - function (response) { - callback.apply(this, [response.data.d]); - }.bind(this), - function (error) { - errorCallback.apply(this, [error]); - }.bind(this), - false - ).Subscribe(); - }, - - moveAnnotation: function (fileId, annotationGuid, left, top, callback, errorCallback) { - this._portalService.moveAnnotationAsync($.connection.hub.id, this.userId, this.userKey, fileId, annotationGuid, left, top, - function (response) { - callback.apply(this, [response]); - }, - function (error) { - errorCallback.apply(this, [error]); - }); - }, - - resizeAnnotation: function (fileId, annotationGuid, width, height, callback, errorCallback) { - this._portalService.resizeAnnotationAsync($.connection.hub.id, this.userId, this.userKey, fileId, annotationGuid, width, height, - function (response) { - callback.apply(this, [response]); - }, - function (error) { - errorCallback.apply(this, [error]); - }); - }, - - moveAnnotationMarker: function (fileId, annotationGuid, left, top, pageNumber, callback, errorCallback) { - this._portalService.moveAnnotationMarkerAsync($.connection.hub.id, this.userId, this.userKey, fileId, annotationGuid, left, top, pageNumber, - function (response) { - callback.apply(this, [response]); - }, - function (error) { - errorCallback.apply(this, [error]); - }); - }, - - setAnnotationAccess: function (fileId, annotationGuid, annotationAccess, callback, errorCallback) { - this._portalService.setAnnotationAccessAsync($.connection.hub.id, this.userId, this.userKey, fileId, annotationGuid, annotationAccess, - function (response) { - callback.apply(this, [response]); - }, - function (error) { - errorCallback.apply(this, [error]); - }); - }, - - getDocumentCollaborators: function (fileId, successCallback) { - var response = {}; - response = this._portalService.getDocumentCollaboratorsSync(this.userId, this.userKey, fileId); - return response; - }, - - setDocumentCollaborators: function (fileId, collaboratorNames, successCallback, errorCallback) { - this._portalService.setDocumentCollaboratorsAsync(this.userId, this.userKey, fileId, "2", collaboratorNames, - function (response) { - successCallback.apply(this, [response]); - }.bind(this), - function (error) { - errorCallback.apply(this, [error.Reason]); - }); - }, - - addDocumentReviewer: function (fileId, reviewerEmail, reviewerFirstName, reviewerLastName, reviewerInvitationMessage, successCallback, errorCallback) { - if (jSaaspose.utils.validateEmail(reviewerEmail)) { - this._portalService.addDocumentReviewerAsync(this.userId, this.userKey, fileId, - reviewerEmail, reviewerFirstName, reviewerLastName, - reviewerInvitationMessage, - function (response) { - successCallback.apply(this, [response]); - }.bind(this), - function (error) { - errorCallback.apply(this, [error.Reason]); - }); - } else { - errorCallback.apply(this, ["You should enter a valid email"]); - } - }, - - deleteDocumentReviewer: function (fileId, reviewerId, successCallback, errorCallback) { - this._portalService.deleteDocumentReviewerAsync(this.userId, this.userKey, fileId, reviewerId, - function (response) { - successCallback.apply(this, [response]); - }.bind(this), - function (error) { - errorCallback.apply(this, [error.Reason]); - }); - }, - - setReviewerRights: function (fileId, collaborators, successCallback, errorCallback) { - this._portalService.setReviewerRightsAsync($.connection.hub.id, this.userId, this.userKey, fileId, collaborators, - function (response) { - successCallback.apply(this, [response]); - }.bind(this), - function (error) { - errorCallback.apply(this, [error.Reason]); - }); - }, - - setSharedLinkAccessRights: function (fileId, sharedLinkAccessRights, successCallback, errorCallback) { - this._portalService.setSharedLinkAccessRightsAsync(this.userId, this.userKey, fileId, sharedLinkAccessRights, - function (response) { - successCallback.apply(this, [response]); - }.bind(this), - function (error) { - errorCallback.apply(this, [error.Reason]); - }); - }, - - getReviewerContacts: function (successCallback) { - this._portalService.getReviewerContactsAsync(this.userId, this.userKey, - function (response) { - successCallback.apply(this, [response]); - }, - function (error) { - jerror("An error has occurred: " + error.Reason); - }); - }, - - setReviewerContacts: function (reviewerContacts, successCallback, errorCallback) { - this._portalService.setReviewerContactsAsync(this.userId, this.userKey, reviewerContacts, - function (response) { - successCallback.apply(this, [response]); - }.bind(this), - function (error) { - errorCallback.apply(this, [error.Reason]); - }); - } - }); - - // - // Annotation View Model - // - annotationViewModel = function (options) { - $.extend(this, options); - this._create(options); - }; - - $.extend(annotationViewModel.prototype, docViewerViewModel.prototype, { - annotations: ko.observableArray([]), - activeAnnotation: null, - hoveredAnnotation: null, - prevHoveredAnnotation: null, - userName: 'guest@groupdocs.com', - //annotationModeObservable: ko.observable(Annotation.prototype.AnnotationType.Text), - annotationModeObservable: ko.observable(null), - _containerElement: null, - _designVersion: 2, - _collaborators: null, - newCollaborator: null, - newCollaboratorFirstName: null, - newCollaboratorLastName: null, - reviewerContacts: null, - newReviewerContactEmail: null, - newReviewerContactFirstName: null, - newReviewerContactLastName: null, - invited: null, - busySavingReviewerRights: null, - busySavingReviewerContacts: null, - busyAddingReviewer: null, - reviewerAutocompleteInputField: null, - linkToCollaborate: null, - canRedact: null, - canDelete: null, - canExport: null, - canDownload: null, - canAnnotate: null, - canView: null, - currentUserIsDocumentOwner: null, - isAnonymousUser: false, - reviewerInvitationMessage: null, - iconHeight: 22, - minimumDistance: 45, - fixedIconShift: 45, - draggedMarker: true, - embeddedAnnotation: false, - alwaysOnePageInRow: true, - fullSynchronization: false, - busyDeletingReviewer: null, - horizontalCursorPointShift: -10, - verticalCursorPointShift: 5, - isRightPanelEnabled: true, - - isTextAnnotationButtonEnabled: true, - isRectangleAnnotationButtonEnabled: true, - isPointAnnotationButtonEnabled: true, - isStrikeoutAnnotationButtonEnabled: true, - isPolylineAnnotationButtonEnabled: true, - isTypewriterAnnotationButtonEnabled: true, - isWatermarkAnnotationButtonEnabled: true, - - isTextReplacementAnnotationButtonEnabled: true, - isArrowAnnotationButtonEnabled: true, - isTextRedactionAnnotationButtonEnabled: true, - isResourceRedactionAnnotationButtonEnabled: true, - isTextUnderlineAnnotationButtonEnabled: true, - isDistanceAnnotationButtonEnabled: true, - - - isMouseBroadcastEnabled: true, - isMasterOfBroadcast: false, - storeAnnotationCoordinatesRelativeToPages: false, - saveReplyOnFocusLoss: false, - anyToolSelection: true, - scrollOnFocus: true, - disconnectUncommented: false, - _undoRedo: null, - - _create: function (options) { - this._model = new annotationModel(options); - this._init(options); - }, - - _init: function (options) { - var self = this; - - if (this.embeddedAnnotation) { - this.pageImageWidth = this.getImageWidthWithoutRightPanel(); - if (this.fullSynchronization && this.isMasterOfBroadcast) { - this.zoomToFitHeight = true; - } - } - - this._undoRedo = new jGroupdocs.AnnotationUndoManager(); - - this.annotations = ko.observableArray([]); - this.annotationModeObservable = ko.observable(null); - - this.newCollaborator = ko.observable(""); - this.newCollaboratorFirstName = ko.observable(""); - this.newCollaboratorLastName = ko.observable(""); - - this.invited = ko.observable(false); - this._containerElement = options.graphicsContainerElement; - this._collaborators = ko.observableArray([]); - this.reviewerContacts = ko.observableArray([]); - this.newReviewerContactEmail = ko.observable(""); - this.newReviewerContactFirstName = ko.observable(""); - this.newReviewerContactLastName = ko.observable(""); - this.activeAnnotationInternal = ko.observable(null); - this.hoveredAnnotation = ko.observable(null); - this.prevHoveredAnnotation = ko.observable(null); - - this.hoveredAnnotation.subscribe(function (newValue) { - if (newValue) - self.prevHoveredAnnotation(newValue); - }); - - this.activeAnnotation = ko.computed({ - read: function () { - return this.activeAnnotationInternal(); - }, - write: function (value) { - var topOffset; - var activeAnnotation = this.activeAnnotationInternal(); - - if (activeAnnotation != null && activeAnnotation != value && activeAnnotation.setLineColorToInactive) - activeAnnotation.setLineColorToInactive(); - - if (value != null) { - if (value.setLineColorToActive) - value.setLineColorToActive(); - - this.scrollToVisible(value); - } - - this.activeAnnotationInternal(value); - }, - owner: this - }); - - //this.activeAnnotation({ replies: { text: "", repliedOn: "", userName: ""} }); - this.activeAnnotation(null); - this.busySavingReviewerRights = ko.observable(false); - this.busySavingReviewerContacts = ko.observable(false); - this.busyAddingReviewer = ko.observable(false); - this.busyDeletingReviewer = ko.observable(false); - - this.canRedact = ko.observable(false); - this.canDelete = ko.observable(false); - this.canExport = ko.observable(false); - this.canDownload = ko.observable(false); - this.canAnnotate = ko.observable(false); - this.canView = ko.observable(false); - this.currentUserIsDocumentOwner = ko.observable(false); - this.isAnonymousUser = ko.observable(false); - this.reviewerInvitationMessage = ko.observable(""); - this.draggedMarker = false; - if (this.embeddedAnnotation) { - this.fixedIconShift = 35; - } - - this.setupChromeMouseWheelHandler(); - this.getCanvas(); - AnnotationReply.prototype.baseAvatarUrl = this.baseAvatarUrl; - - docViewerViewModel.prototype._init.call(this, options); - }, - - loadDocument: function (fileId) { - docViewerViewModel.prototype.loadDocument.call(this, fileId); - - var reviewerContacts = []; - for (var i = 0; i < this.reviewerContacts().length; i++) - reviewerContacts.push(this.reviewerContacts()[i].emailAddress); - - if (this.reviewerAutocompleteInputField) { - this.reviewerAutocompleteInputField.autocomplete({ - source: reviewerContacts, - select: function (event, ui) { - $(this).val(ui.item.value); - $(this).focus(); - $(this).trigger(jQuery.Event('keypress', { which: 13 })); - } - }); - } - - this._clearAnnotations(); - this.getReviewerContacts(); - }, - - getCanvas: function () { - if (this._canvas == null) { - var raphaelWrapper = $("
").appendTo(this._containerElement).addClass("raphaelWrapper"); - this._canvas = Raphael(raphaelWrapper[0], "100%", "100%"); - } - return this._canvas; - }, - - setFileId: function (fileId) { - this.fileId = fileId; - }, - - listAnnotations: function () { - this._model.listAnnotations(this.fileId, - function (response) { - this._onAnnotationsReceived(response.data.d); - }.bind(this), - function (error) { - this._onError(error); - }.bind(this)); - }, - - removeActiveAnnotation: function () { - var ann = this.activeAnnotation(); - if (!ann.isBeingDeleted()) - this.removeAnnotation(ann); - }, - - removeAnnotation: function (annotation, e) { - if (annotation.guid == null) - return; - - if (annotation.isBeingDeleted) - annotation.isBeingDeleted(true); - - var bounds = annotation.bounds(), - pos = annotation.annotationPosition(), - annotationGuid = annotation.guid, - activeReply = annotation.getActiveReply(), - data = { - creatorGuid: this.userId, - guid: annotation.guid, - type: annotation.type, - fieldText: annotation.fieldText, - pageNumber: annotation.pageNumber, - box: (bounds ? { x: bounds.left(), y: bounds.top(), width: bounds.width(), height: bounds.height() } : null), - annotationPosition: (pos ? { x: pos.x, y: pos.y } : null), - range: annotation.range, - svgPath: annotation.svgPath, - drawingOptions: annotation.drawingOptions, - replies: annotation.replies(), - access: annotation.access, - startingPoint: annotation.startingPoint, - selectionCounter: annotation.selectionCounter - }, - replies = annotation.getReplyDescendants(null), - deleteCommand = new DeleteAnnotationCommand(this._model, this.fileId, data, { - onDone: function (response) { - annotation.isBeingDeleted(false); - - if (activeReply != null && activeReply.initialText != null && activeReply.initialText.length >= 0) { - activeReply.text(activeReply.initialText); - activeReply.initialText = null; - } - - this._onAnnotationRemoved(annotation); - }.bind(this), - - onDoFailed: this._onError.bind(this), - - onUndone: function (response) { - annotationGuid = data.guid = response.data.d.AnnotationGuid; - annotation.guid = annotationGuid; - - this._addAnnotation(annotation); - this.activeAnnotation(annotation); - }.bind(this), - - onUndoFailed: this._onError.bind(this), - - onIdsFixedUp: function (ids) { - if (annotationGuid == ids.oldId) { - annotationGuid = ids.newId; - annotation.guid = annotationGuid; - } - else { - for (var i = 0; i < replies.length; i++) - if (replies[i].guid() == ids.oldId) - replies[i].guid(ids.newId); - } - }.bind(this) - }, - replies); - $('#comments_scroll_2').tinyscrollbar_update('relative'); - this._undoRedo.executeAsync(deleteCommand); - }, - - deleteActiveAnnotation: function () { - var annotation = this.activeAnnotation(); - if (!annotation.isBeingDeleted()) - this.removeAnnotation(annotation); - }, - - _onAnnotationRemoved: function (annotation) { - if (this.activeAnnotation() == annotation) - this.activeAnnotation(null); - - if (annotation.commentsEnabled) { - annotation.removeConnectingLine(); - this.deselectTextInRect(annotation.bounds(), true, annotation.pageNumber, annotation.selectionCounter); - } - - this.annotations.remove(annotation); - - $(this).trigger('onAnnotationRemoved', [annotation]); - - if (annotation.commentsEnabled) - this.preventIconsFromOverlapping(); - }, - - moveAnnotation: function (annotation, position) { - if (annotation.guid != null) { - this._model.moveAnnotation(this.fileId, annotation.guid, position.x, position.y, - function (response) { - }.bind(this), - function (error) { - this._onError(error); - }.bind(this)); - } - }, - - resizeAnnotation: function (annotation, width, height, originalSize) { - if (annotation.guid != null) { - var oldSize = originalSize, - annotationGuid = annotation.guid, - resizeCommand = new ResizeAnnotationCommand(this._model, this.fileId, annotation, { - onDone: function (response) { - this.setTextFieldSize(annotation, width, height); - }.bind(this), - - onUndone: function (response) { - this.setTextFieldSize(annotation, oldSize.width, oldSize.height); - }.bind(this), - - onDoFailed: function (response) { - this.setTextFieldSize(annotation, oldSize.width, oldSize.height); - this._onError.bind(this); - }.bind(this), - - onIdsFixedUp: function (ids) { - annotationGuid = ids.newId; - annotation = this.findAnnotation(annotationGuid); - }.bind(this), - - onUndoFailed: this._onError.bind(this) - }, - { width: width, height: height }, - oldSize); - - this._undoRedo.executeAsync(resizeCommand); - } - }, - - moveAnnotationMarker: function (annotation, position, originalPos) { - if (annotation.guid != null) { - var self = this, - annotationGuid = annotation.guid, - oldPosition = originalPos, - triggerEvent = (annotation.type == Annotation.prototype.AnnotationType.Area - || annotation.type == Annotation.prototype.AnnotationType.Polyline - || annotation.type == Annotation.prototype.AnnotationType.ResourcesRedaction - || annotation.type == Annotation.prototype.AnnotationType.Arrow - || annotation.type == Annotation.prototype.AnnotationType.Distance), - moveCommand = new MoveAnnotationCommand(this._model, this.fileId, annotation, { - onDone: function (response) { - this._moveAnnotationMarkerTo(annotation, position, null, triggerEvent); - }.bind(this), - - onUndone: function (response) { - this._moveAnnotationMarkerTo(annotation, originalPos, null, triggerEvent); - }.bind(this), - - onDoFailed: function (response) { - this._moveAnnotationMarkerTo(annotation, originalPos, null, triggerEvent); - this._onError.bind(this); - }.bind(this), - - onIdsFixedUp: function (ids) { - annotationGuid = ids.newId; - annotation = this.findAnnotation(annotationGuid); - }.bind(this), - - onUndoFailed: this._onError.bind(this) - }, - position, - oldPosition); - - this._undoRedo.executeAsync(moveCommand); - } - }, - - createTextAnnotation: function (pageNumber, bounds, position, length, selectionCounter, rects) { - var color = (typeof (this.highlightColor) === 'string' ? parseInt(this.highlightColor.replace('#', '0x')) : null); - this.createAnnotation(Annotation.prototype.AnnotationType.Text, pageNumber, bounds, position, length, null, null, selectionCounter, { brushColor: color }, rects, null, null); - }, - - createAnnotation: function (type, pageNumber, bounds, position, length, markerFigure, svgPath, selectionCounter, drawingOptions, rects, fieldText, font) { - if (!markerFigure) - markerFigure = null; - - var box = { X: bounds.left(), Y: bounds.top(), Width: bounds.width(), Height: bounds.height() }; - var offsets = this.getPageImageOffsets(type); - - var annotationTextBoxPosition = { X: this.pageWidth(), Y: bounds.top() }; - var containerWidth = this.graphicsContainerElement.width(); - var textBoxWidth = 265; - var margin = 10; - var scrollbarWidth = 10; - var scale = this.scale(); - var startingPoint; - if (annotationTextBoxPosition.x * scale + textBoxWidth > containerWidth - scrollbarWidth) { - annotationTextBoxPosition.x = (containerWidth - scrollbarWidth - textBoxWidth - offsets.offsetX) / scale; - if (markerFigure) { - var boundingBox = markerFigure.getBBox(false); - var screenBounds = new jSaaspose.Rect(boundingBox.x, boundingBox.y, boundingBox.x + boundingBox.width, boundingBox.y + boundingBox.height); - var selectable = this.getSelectableInstance(); - var startingPointRaphael = markerFigure.getPointAtLength(0); - startingPoint = new jSaaspose.Point(startingPointRaphael.x, startingPointRaphael.y); - var absoluteBounds = selectable.convertRectToAbsoluteCoordinates(screenBounds, startingPoint); - annotationTextBoxPosition.y = absoluteBounds.bottom() + margin / scale; - } - else { - annotationTextBoxPosition.y = box.y + box.height + margin; - } - } - - var self = this; - var range = null; - - if (position != null && length != null) { - range = { position: position, length: length }; - } - - if (rects && rects.length) { - var points = []; - var h = this.unscaledPageHeight; - - $.each(rects, function () { - points.push({ x: this.left(), y: h - this.top() }); - points.push({ x: this.right(), y: h - this.top() }); - points.push({ x: this.left(), y: h - this.bottom() }); - points.push({ x: this.right(), y: h - this.bottom() }); - }); - - svgPath = JSON.stringify(points); - } - - - var annotation = null, - annotationGuid = '', - data = { - Guid: '', - Type: type, - FieldText: fieldText, - PageNumber: pageNumber, - Box: box, - AnnotationPosition: annotationTextBoxPosition, - Range: range, - SvgPath: svgPath, - DrawingOptions: drawingOptions, - FontFamily: font ? font.Family : null, - FontSize: font ? font.size : null - }, - createCommand = new CreateAnnotationCommand(this._model, this.fileId, data, { - onDone: function (response) { - annotationGuid = response.data.d.Guid; - annotation = new Annotation($.extend(data, { - Guid: annotationGuid, - Replies: [], - CreatorGuid: this.userId, - Access: Annotation.prototype.AnnotationAccess.Public, - startingPoint: startingPoint, - selectionCounter: selectionCounter - })); - this.updateAnnotationDisplayPosition(annotation); - this._onAnnotationCreated(annotation, markerFigure); - //alert("afterrr _onAnnotationCreated: "); - - if (this.toolDeactivationMode == ToolDeactivationMode.Auto) - this.setHandToolMode(); - - }.bind(this), - - onDoFailed: this._onError.bind(this), - - onUndone: function (response) { - this._onAnnotationRemoved(annotation); - - annotationGuid = ''; - markerFigure = null; - }.bind(this), - - onUndoFailed: this._onError.bind(this), - - onIdsFixedUp: function (ids) { - annotationGuid = annotation.Guid = ids.newId; - annotation = this.findAnnotation(annotationGuid); - markerFigure = null; - }.bind(this) - }); - - this._undoRedo.executeAsync(createCommand); - }, - - _onAnnotationCreated: function (annotation, markerFigure) { - $('#comments_scroll_2').tinyscrollbar_update('relative'); - if (!annotation.commentsEnabled) { - this.annotations.push(annotation); - - $(this).trigger('onAnnotationCreated', [annotation]); - - return; - } - - annotation.addReply(this.userId, this.userName); - - this.annotations.push(annotation); - this.preventIconsFromOverlapping(); - - var color = annotation.backgroundColor(); - //alert("before selectionCounter"); - - annotation.selectionCounter = this.selectTextInRect( - annotation.bounds(), - this.markerClickHandler.bind(this, annotation), - annotation.pageNumber, - annotation.selectionCounter, - color && color !== undefined ? this.getRgbColorFromInteger(color) : null, - { mouseenter: function () { this.hoveredAnnotation(annotation); }.bind(this), mouseleave: function () { this.hoveredAnnotation(null); }.bind(this) }); - //alert("annotation.selectionCounter: " + annotation.selectionCounter); - //alert("after selectionCounter"); - - this.createConnectingLineAndIcon(annotation); - this.activeAnnotation(annotation); - //alert("after activeAnnotation"); - - $(this).trigger('onAnnotationCreated', [annotation, markerFigure]); - annotation.activeReply(0); - }, - - createClickHandler: function (markerElement, annotation) { - $(markerElement).click(this.markerClickHandler.bind(this, annotation)); - }, - - editAnnotationReply: function (annotationGuid, replyGuid, annotationMessage) { - var annotation = this.findAnnotation(annotationGuid), - reply = annotation.findReply(replyGuid), - newText = reply.text(), - oldText = annotation.activeReplyData.text(), - editReplyCommand = new EditAnnotationReplyCommand(this._model, this.fileId, annotation, { - onDone: function (response) { - reply.text(newText); - }.bind(this), - - onUndone: function (response) { - reply.text(oldText); - }.bind(this), - - onDoFailed: function (response) { - reply.text(oldText); - this._onError.bind(this) - }.bind(this), - - onUndoFailed: this._onError.bind(this) - }, - reply, - newText, - oldText); - - this._undoRedo.executeAsync(editReplyCommand); - }, - - restoreAnnotationReplies: function (annotationGuid, replies) { - this._model.restoreAnnotationReplies(this.fileId, annotationGuid, replies, - function (response) { - }.bind(this), - this._onError.bind(this)); - }, - - deleteAnnotationReply: function (annotationGuid, replyGuid) { - var annotation = this.findAnnotation(annotationGuid), - reply = annotation.findReply(replyGuid), - replyDescendants = annotation.getReplyDescendants(replyGuid); - deleteReplyCommand = new DeleteAnnotationReplyCommand(this._model, this.fileId, annotation, { - onDone: function (response) { - this._onAnnotationReplyRemoved(response); - }.bind(this), - - onUndone: function (response) { - this._onAnnotationReplyAdded(annotation, reply, true, true); - - for (var i = 0; i < replyDescendants.length; i++) - this._onAnnotationReplyAdded(annotation, replyDescendants[i], true, true); - }.bind(this), - - onIdsFixedUp: function (ids) { - if (replyGuid == ids.oldId) { - replyGuid = ids.newId; - reply = annotation.findReply(replyGuid); - } - else - if (annotationGuid == ids.oldId) { - annotationGuid = ids.newId; - annotation = this.findAnnotation(annotationGuid); - } - else - for (var i = 0; i < replyDescendants.length; i++) { - if (replyDescendants[i].guid() == ids.oldId) - replyDescendants[i].guid(ids.newId); - else - if (replyDescendants[i].parentReplyGuid() == ids.oldId) - replyDescendants[i].parentReplyGuid(ids.newId); - } - }.bind(this), - - onDoFailed: this._onError.bind(this), - onUndoFailed: this._onError.bind(this) - }, - reply); - - this._undoRedo.executeAsync(deleteReplyCommand); - }, - - _onAnnotationReplyRemoved: function (response) { - var annotation = this.findAnnotation(response.data.d.AnnotationGuid); - annotation.deleteAllReplies(); - - annotation.sortReplies(response.data.d.Replies, new Date(response.data.d.ServerTime)); - if (annotation.replies().length == 0) { - annotation.addReply(this.userId, this.userName); - annotation.activeReply(0); - } - - if (this.disconnectUncommented && annotation.replyCount() == 0) { - annotation.removeConnectingLine(); - } - }, - - deleteReply: function (reply) { - var annotation = this.activeAnnotation(); - var replies = annotation.replies(); - if (replies.length > 1 || (replies.length == 1 && replies[0].guid())) - annotation.replies.remove(reply); - if (replies.length == 1 && !replies[0].guid()) - reply.text(""); - - if (this.disconnectUncommented && annotation.replyCount() == 0) { - annotation.removeConnectingLine(); - } - }, - - addAnnotationReply: function (annotation, reply, keepFocusedReply) { - if (annotation.Guid && reply && reply.text().length) { - var replyGuid = reply.guid() || '', - annotationGuid = annotation.Guid, - addReplyCommand = new CreateAnnotationReplyCommand(this._model, this.fileId, annotation, { - onDone: function (response) { - reply.guid(response.data.d.ReplyGuid); - reply.repliedOn = response.data.d.RepliedOn; - - var redone = (replyGuid != null && replyGuid !== undefined && replyGuid.length > 0 && replyGuid != reply.guid()); - replyGuid = reply.guid(); - - this._onAnnotationReplyAdded(annotation, reply, keepFocusedReply, redone); - }.bind(this), - - onUndone: function (response) { - this._onAnnotationReplyRemoved(response); - }.bind(this), - - onIdsFixedUp: function (ids) { - if (replyGuid == ids.oldId) { - replyGuid = ids.newId; - annotation.findReply(replyGuid); - } - else - if (annotationGuid == ids.oldId) { - annotationGuid = ids.newId; - annotation = this.findAnnotation(annotationGuid); - } - }.bind(this), - - onDoFailed: this._onError.bind(this), - onUndoFailed: this._onError.bind(this) - }, - reply); - - this._undoRedo.executeAsync(addReplyCommand); - } - }, - - commitAnnotationReplyOnBlur: function (annotation, keepFocusedReply, reply) { - if (this.saveReplyOnFocusLoss) - return this.commitAnnotationReply(annotation, keepFocusedReply, reply); - }, - - commitAnnotationReply: function (annotation, keepFocusedReply, reply) { - var activeReply = reply; - if (!activeReply) - activeReply = annotation.getActiveReply(); - - if (activeReply) { - annotation.deactivateActiveReply(); - - if (activeReply.guid() && activeReply.guid().length) { - var text = jGroupdocs.html.toText(activeReply.text()); - this.editAnnotationReply(annotation.guid, activeReply.guid(), text); - } - else { - this.addAnnotationReply(annotation, activeReply, keepFocusedReply); - } - } - }, - - activateAnnotationReply: function (annotation, replyInex) { - var reply = annotation.getReplyAt(replyInex); - if (reply && reply.userName == this.userName) { - annotation.activeReply(replyInex); - } - }, - - exportAnnotations: function () { - this.exportingAnnotationsProgress.modal("show"); - this._model.exportAnnotations(this.fileId, 'Pdf', Annotation.prototype.AnnotationExportMode.Append, - function (response) { - if (response.success) { - this._onExportJobScheduled(response.jobId); - } - else { - this.exportingAnnotationsProgress.modal("hide"); - this._onError({ Reason: response.error }); - } - }.bind(this), - function (error) { - this._onError(error); - }); - }, - - chooseImportFormat: function () { - this.choosingImportFormat.modal("show"); - }, - - importAnnotations: function (format) { - this.importDocumentAnnotations(this.fileId, format); - }, - - importDocumentAnnotations: function (fileId, format) { - if (this.choosingImportFormat) - this.choosingImportFormat.modal("hide"); - - if (this.importingAnnotationsProgress) - this.importingAnnotationsProgress.modal("show"); - - this._model.importAnnotations(fileId, format, - function (response) { - if (response.success) { - this._onAnnotationsImported(response); - } - else { - this.importingAnnotationsProgress.modal("hide"); - this._onError({ Reason: response.error }); - } - }.bind(this), - function (error) { - this.importingAnnotationsProgress.modal("hide"); - this._onError(error); - }.bind(this)); - }, - - _onAnnotationsImported: function (response) { - this.importingAnnotationsProgress.modal("hide"); - }, - - getPdfVersionOfDocument: function () { - this.exportingAnnotationsProgress.modal("show"); - this._model.getPdfVersionOfDocument(this.fileId, - function (response) { - if (response.success) { - if (!response.original) { - this._onExportJobScheduled(response.jobId); - } else { - this.exportingAnnotationsProgress.modal("hide"); - window.location.href = response.original; - } - } - else { - this.exportingAnnotationsProgress.modal("hide"); - this._onError({ Reason: response.error }); - } - }.bind(this), - function (error) { - this._onError(error); - }); - }, - - setAnnotationMode: function (mode) { - var selectable = this.getSelectable(); - if (selectable != null) { - selectable.dvselectable("setMode", mode); - selectable.dvselectable("setTextSelectionMode", this.textSelectionByCharModeEnabled); - } - }, - - setTextAnnotationMode: function () { - this.setAnnotationMode($.ui.dvselectable.prototype.SelectionModes.SelectText); - this.annotationModeObservable(Annotation.prototype.AnnotationType.Text); - }, - - setAreaAnnotationMode: function () { - this.setAnnotationMode($.ui.dvselectable.prototype.SelectionModes.SelectRectangle); - this.annotationModeObservable(Annotation.prototype.AnnotationType.Area); - }, - - setPointAnnotationMode: function () { - this.setAnnotationMode($.ui.dvselectable.prototype.SelectionModes.ClickPoint); - this.annotationModeObservable(Annotation.prototype.AnnotationType.Point); - }, - - setStrikeoutTextMode: function () { - this.setAnnotationMode($.ui.dvselectable.prototype.SelectionModes.SelectTextToStrikeout); - this.annotationModeObservable(Annotation.prototype.AnnotationType.TextStrikeout); - }, - - setPolylineAnnotationMode: function () { - this.setAnnotationMode($.ui.dvselectable.prototype.SelectionModes.TrackMouseMovement); - this.annotationModeObservable(Annotation.prototype.AnnotationType.Polyline); - }, - - setTextFieldAnnotationMode: function () { - this.setAnnotationMode($.ui.dvselectable.prototype.SelectionModes.SelectRectangle); - this.annotationModeObservable(Annotation.prototype.AnnotationType.TextField); - }, - - setWatermarkAnnotationMode: function () { - this.setAnnotationMode($.ui.dvselectable.prototype.SelectionModes.SelectRectangle); - this.annotationModeObservable(Annotation.prototype.AnnotationType.Watermark); - }, - - setHandToolMode: function () { - this.setAnnotationMode(this.textSelectionEnabled === true ? - $.ui.dvselectable.prototype.SelectionModes.SelectText : $.ui.dvselectable.prototype.SelectionModes.DoNothing); - this.annotationModeObservable(null); - }, - - // annotation broadcast handlers - - addAnnotationFromAnotherUser: function (data) { - var annotation = new Annotation({ - pageNumber: data.pageNumber, - box: data.box, - annotationPosition: data.annotationPosition, - documentGuid: this.fileId, - guid: data.annotationGuid, - replies: [], - type: data.annotationType, - svgPath: data.svgPath, - creatorGuid: data.userGuid, - access: data.access, - penColor: (data.drawingOptions ? data.drawingOptions.penColor : null), - penWidth: (data.drawingOptions ? data.drawingOptions.penWidth : null), - penStyle: (data.drawingOptions ? data.drawingOptions.penStyle : null), - backgroundColor: (data.drawingOptions ? data.drawingOptions.brushColor : null), - fontSize: (data.font ? data.font.size : null), - fontFamily: (data.font ? data.font.family : null) - }, new Date(data.serverTime)); - - this.updateAnnotationDisplayPosition(annotation); - this.annotations.push(annotation); - - if (annotation.commentsEnabled) { - annotation.addReply(this.userId, this.userName); - this.preventIconsFromOverlapping(); - - if (annotation.type == Annotation.prototype.AnnotationType.Text || - annotation.type == Annotation.prototype.AnnotationType.TextReplacement) { - - this.selectTextForAnnotation(annotation); - } - - this.createConnectingLineAndIcon(annotation); - } - - return annotation; - }, - - findAnnotation: function (guid) { - var annotation = null; - for (var i = 0; i < this.annotations().length; i++) { - if (this.annotations()[i].guid == guid) { - annotation = this.annotations()[i]; - break; - } - } - return annotation; - }, - - _indexOfAnnotation: function (guid) { - for (var i = 0; i < this.annotations().length; i++) { - if (this.annotations()[i].guid == guid) { - return i; - } - } - - return -1; - }, - - _getAnnotationAt: function (index) { - return (index >= 0 && index < this.annotations().length ? this.annotations()[index] : null); - }, - - addAnnotationReplyFromAnotherUser: function (rawReply) { - var annotation = this.findAnnotation(rawReply.annotationGuid); - var reply = annotation.addReplyFromAnotherUser(rawReply); - - if (annotation.replyCount() == 1) { - this.createConnectingLineAndIcon(annotation); - } - }, - - editAnnotationReplyOnClient: function (annotationGuid, replyGuid, message) { - this.findAnnotation(annotationGuid).updateReply(replyGuid, message); - }, - - deleteAnnotationReplyOnClient: function (annotationGuid, replyGuid, replies) { - var annotation = this.findAnnotation(annotationGuid); - annotation.deleteAllReplies(); - annotation.sortReplies(replies); - if (annotation.replies().length == 0) - annotation.addReply(this.userId, this.userName); - - if (this.disconnectUncommented && annotation.replyCount() == 0) { - annotation.removeConnectingLine(); - } - }, - - clearAllAnnotationOnClient: function () { - while (this.annotations().length > 0) { - var annotation = this.annotations()[0]; - this.deleteAnnotationOnClient(annotation.guid); - } - }, - - deleteAnnotationOnClient: function (annotationGuid) { - for (var i = 0; i < this.annotations().length; i++) { - var annotation = this.annotations()[i]; - if (annotation.guid == annotationGuid) { - if (this.activeAnnotation() == annotation) - this.activeAnnotation(null); - this.deselectTextInRect(annotation.bounds(), true, annotation.pageNumber, annotation.selectionCounter); - annotation.removeConnectingLine(); - this.annotations.splice(i, 1); - break; - } - } - }, - - setAnnotationAccessOnClient: function (annotationGuid, annotationAccess, annotation) { - var screenAnnotation = this.findAnnotation(annotationGuid); - if (screenAnnotation != null && screenAnnotation.creatorGuid == this.userId) { - screenAnnotation.annotationIsPublic(annotationAccess == Annotation.prototype.AnnotationAccess.Public); - } - else { - if (annotationAccess == Annotation.prototype.AnnotationAccess.Private) { - if (screenAnnotation != null) - this.deleteAnnotationOnClient(annotationGuid); - } - else if (annotationAccess == Annotation.prototype.AnnotationAccess.Public) { - this._onAnnotationsReceived({ annotations: [annotation] }, true); - } - } - }, - - _onAnnotationsReceived: function (response, appendOnly) { - //alert(JSON.stringify(response)); - var list = []; - var selectable = this.getSelectableInstance(); - var pages = selectable.getPages(), - pageCount = (pages ? pages.length : 0); - if (response.Annotations) { - for (var i = 0; i < response.Annotations.length; i++) { - if (response.Annotations[i].PageNumber >= pageCount) { - continue; - } - - //if (i <= 0) { - // alert("ENNNNDDD response.Annotations[i].pageNumber: " + response.Annotations[0].PageNumber + " pageCount: " + pageCount); - //} - var annotation = new Annotation(response.Annotations[i], new Date(response.serverTime)); - this._onAnnotationReceived(annotation); - list.push(annotation); - } - } - - if (appendOnly) { - list = this.annotations().concat(list); - } - else { - this._clearAnnotations(); - } - - this.annotations(list); - this.preventIconsFromOverlapping(); - - $(this).trigger('onAnnotationsReceived', [list]); - }, - - _onAnnotationReceived: function (annotation) { - this.updateAnnotationDisplayPosition(annotation); - - if (annotation.commentsEnabled) { - if (annotation.replies().length == 0) { - annotation.addReply(this.userId, this.userName); - annotation.setActiveReplyIndex(0); - } - else - annotation.setActiveReplyIndex(-1); - - if (annotation.type == Annotation.prototype.AnnotationType.Text || annotation.type == Annotation.prototype.AnnotationType.TextReplacement) { - this.selectTextForAnnotation(annotation); - } - - this.createConnectingLineAndIcon(annotation); - } - - $(this).trigger('onAnnotationReceived', [annotation]); - }, - - _addAnnotation: function (annotation) { - this._onAnnotationReceived(annotation); - this.annotations.push(annotation); - - this.preventIconsFromOverlapping(); - $(this).trigger('onAnnotationsReceived', [annotation]); - }, - - _clearAnnotations: function () { - var annotations = this.annotations(); - for (var j = 0; j < annotations.length; j++) { - annotations[j].removeConnectingLine(); - $(this).trigger('onAnnotationRemoved', [annotations[j]]); - } - - this.activeAnnotation(null); - this.annotations.removeAll(); - - this._undoRedo.clear(); - }, - - markerClickHandler: function (annotation) { - if ((this.anyToolSelection === true || this.annotationModeObservable() == null) && !this.draggedMarker) { - this.activeAnnotation(annotation); - } - this.draggedMarker = false; - }, - - _onAnnotationReplyAdded: function (annotation, reply, keepFocusedReply, redone) { - var replyCount = annotation.replyCount(); - - if (replyCount == 0) - annotation.deleteAllReplies(); - - if (redone) - annotation.pushReply(reply); - - if (replyCount == 1 || (redone && replyCount == 0)) { - if (!redone) - annotation.comments.push(reply); - - this.createConnectingLineAndIcon(annotation); - } - - $(this).trigger('onAnnotationReplyAdded', [annotation, reply]); - }, - - _onExportJobScheduled: function (jobId) { - this._model.getJobOutDoc(jobId, - function (doc) { - if (doc) { - this.exportingAnnotationsProgress.modal("hide"); - - if (doc.error) { - jerror('Sorry, the conversion is failed. A notification has been sent to the GroupDocs Support Team.'); - } - else { - window.location.href = doc.url; - } - } - else { - window.setTimeout(function () { - this._onExportJobScheduled(jobId); - }.bind(this), 2000); - } - }.bind(this), - function (node, error) { - this.inprogress(false); - jerror(); - }); - }, - - selectTextForAnnotation: function (annotation) { - var selectable = this.getSelectable(); - var selectionMode = selectable.dvselectable("getMode"); - var color = annotation.backgroundColor(); - selectable.dvselectable("setMode", $.ui.dvselectable.prototype.SelectionModes.SelectText, true); - - annotation.selectionCounter = this.selectTextInRect( - annotation.bounds(), this.markerClickHandler.bind(this, annotation), annotation.pageNumber, undefined, color && color !== undefined ? this.getRgbColorFromInteger(color) : null, - { mouseenter: function () { this.hoveredAnnotation(annotation); }.bind(this), mouseleave: function () { this.hoveredAnnotation(null); }.bind(this) }); - selectable.dvselectable("setMode", selectionMode); - }, - - getPageImageOffsets: function (annotationType) { - var offsets = { offsetX: 0, offsetY: 0 }; - - if (annotationType != Annotation.prototype.AnnotationType.TextStrikeout && - annotationType != Annotation.prototype.AnnotationType.TextField && - annotationType != Annotation.prototype.AnnotationType.Watermark && - annotationType != Annotation.prototype.AnnotationType.TextRemoval && - annotationType != Annotation.prototype.AnnotationType.TextRedaction && - annotationType != Annotation.prototype.AnnotationType.TextUnderline) { - - offsets.offsetX = this.getPageImageHorizontalOffset(); - offsets.offsetY = this.getPageImageVerticalOffset(); - } - - return offsets; - }, - - getPageImageHorizontalOffset: function () { - var leftImageMargin = 34; - return leftImageMargin; - }, - - getPageImageVerticalOffset: function () { - var pagePadding = 6; - return pagePadding; - }, - - moveAnnotationOnClient: function (annotationGuid, position) { - var annotation = this.findAnnotation(annotationGuid); - if (annotation != null) { - annotation.annotationPosition(new jSaaspose.Point(position.x, position.y)); - this.createConnectingLineAndIcon(annotation, false); - } - }, - - moveAnnotationMarkerOnClient: function (annotationGuid, position, pageNumber) { - var annotation = this.findAnnotation(annotationGuid); - var annotationBounds; - if (annotation != null) { - annotationBounds = annotation.bounds().clone(); - this._moveAnnotationMarkerTo(annotation, position, pageNumber, false); - } - - $(this).trigger('onAnnotationMarkerMovedOnClient', [annotationGuid, position, pageNumber, annotationBounds]); - }, - - _moveAnnotationMarkerTo: function (annotation, position, pageNumber, triggerEvent, responseData) { - var annotationBounds = annotation.bounds().clone(); - annotation.bounds(new jSaaspose.Rect(position.x, position.y, - position.x + annotationBounds.width(), position.y + annotationBounds.height())); - - if (pageNumber) - annotation.pageNumber = pageNumber; - - this.updateAnnotationDisplayPosition(annotation); - this.preventIconsFromOverlapping(); - this.createConnectingLineAndIcon(annotation); - - if (triggerEvent == true) - $(this).trigger('onAnnotationMarkerMovedOnClient', [annotation.guid, position, (pageNumber || annotation.pageNumber), annotationBounds]); - }, - - createConnectingLineAndIcon: function (annotation, createIcon, beforeSwitchingPanels) { - if ((this.disconnectUncommented == false || annotation.replyCount()) && annotation.commentsEnabled) { - this.createConnectingLine(annotation, beforeSwitchingPanels); - - if (createIcon) { - this.createRightSideIcon(annotation); - } - } - }, - - createConnectingLine: function (annotation, beforeSwitchingPanels) { - var iconWidth = iconHeight = this.iconHeight, - visiblePanel = this.rightSideElement.children(beforeSwitchingPanels ? ":hidden" : ":visible"), - rightOffset = visiblePanel.width(); - - var result = this.getAnnotationSideIconCoordinates(annotation); - var iconLeft = Math.round(this.pageLeft() + this.getAnnotationSideIconLeft()); - var rightEdge = Math.max(annotation.displayBounds().left(), annotation.displayBounds().right()); - - annotation.createConnectingLine(this.getCanvas(), - Math.round(rightEdge + (annotation.penWidth || 2) / 2), result.iconMiddle, - iconLeft, Math.round(annotation.annotationSideIconDisplayPosition().y + iconHeight / 2), - iconWidth, - this.documentSpace.outerWidth() - rightOffset); - - if (this.activeAnnotation() == annotation) { - annotation.setLineColorToActive(); - } - }, - - redrawConnectingLines: function (beforeSwitchingPanels) { - for (var i = 0; i < this.annotations().length; i++) { - this.createConnectingLineAndIcon(this.annotations()[i], false, beforeSwitchingPanels); - } - }, - - createRightSideIcon: function (annotation) { - var result = this.getAnnotationSideIconCoordinates(annotation); - annotation.annotationOriginalTextBoxDisplayPosition(new jSaaspose.Point(this.getAnnotationSideIconLeft(), result.iconTop)); - }, - - getAnnotationSideIconCoordinates: function (annotation) { - var iconTop, iconMiddle; - var iconHeight = this.iconHeight; - var bounds = annotation.displayBounds(); - - if (this.connectorPosition == Annotation.prototype.ConnectorPosition.Middle && - (annotation.type == Annotation.prototype.AnnotationType.Text || - annotation.type == Annotation.prototype.AnnotationType.TextReplacement)) { - - var selectable = this.getSelectableInstance(); - var rect = null; - var minTop = null, maxBottom = null; - var rects = selectable.getRowsFromRect(bounds); - - for (var i = 0; i < rects.length; i++) { - rect = rects[i].bounds; - if (minTop == null || rect.top() < minTop) - minTop = rect.top(); - if (maxBottom == null || rect.bottom() > maxBottom) - maxBottom = rect.bottom(); - } - - var annotationMarkerHeight = maxBottom - minTop; - iconTop = Math.round(minTop - (iconHeight - annotationMarkerHeight) / 2); - iconMiddle = Math.round(minTop + annotationMarkerHeight / 2); - } - else - if (this.connectorPosition == Annotation.prototype.ConnectorPosition.Middle) { - iconTop = Math.round(bounds.top() - (iconHeight - bounds.height()) / 2); - iconMiddle = Math.round(bounds.top() + bounds.height() / 2); - } - else { - var offset = (annotation.type == Annotation.prototype.AnnotationType.Point ? 14 : (annotation.penWidth || 1) / 2 - 1); - var bottom = Math.max(bounds.top(), bounds.bottom()); - iconTop = Math.round(bottom - iconHeight / 2 + offset); - iconMiddle = Math.round(bottom + offset); - } - - return { iconTop: iconTop, iconMiddle: iconMiddle }; - }, - - getAnnotationSideIconLeft: function () { - var iconWidth = this.iconHeight; - return Math.round(this.pageWidth() + this.imageHorizontalMargin - iconWidth); - //return this.pageWidth(); - }, - - setupRemoveAnnotationMenu: function (contextMenu) { - $("html").click(function () { - contextMenu.remove(); - return false; - }); - }, - - setZoom: function (value) { - var activeAnnot = this.activeAnnotation(); - this.activeAnnotation(null); - - this.redrawScreenWhenZooming(value); - - if (this.fullSynchronization && this.isZoomBroadcastEnabled && this.isMasterOfBroadcast) { - this.broadcastDocumentScale(); - // this._model.broadcastDocumentScale(this.fileId, this.pageWidth(), //value, - // function (response) { - // } .bind(this), - // function (error) { - // this._onError(error); - // } .bind(this)); - } - this.activeAnnotation(activeAnnot); - }, - - broadcastDocumentScale: function () { - //var windowPercentage = this.pageWidth() / (window.innerWidth - this.imageHorizontalMargin * 2) * 100; - //var windowPercentage = this.pageHeight() / this.documentSpace.height() * 100; - var windowPercentage = this.pageHeight() / this.documentSpace[0].clientHeight * 100; - $.connection.annotationHub.server.broadcastDocumentScale(this.userId, this.userKey, this.fileId, windowPercentage); - }, - - redrawScreenWhenZooming: function (value) { - docViewerViewModel.prototype.setZoom.call(this, value, true); - this.redrawWorkingArea(); - }, - - resizePagesToWindowSize: function () { - if (this.embeddedAnnotation && this.fullSynchronization && this.isMasterOfBroadcast) { - var pageWidth = this.getImageWidthWithoutRightPanel(); - if (pageWidth != this.initialWidth) { - var currentZoom = this.zoom(); - this.initialWidth = pageWidth; - this.pageImageWidth = pageWidth; - //var zoom = pageImageWidth / this.initialWidth * 100.0; - docViewerViewModel.prototype.setZoom.call(this, currentZoom, true); - //this.setZoom(zoom); - //var selectable = this.getSelectable().data("dvselectable"); - //selectable.options.pageHeight = this.pageHeight(); - } - } - }, - - redrawWorkingArea: function () { - this.reInitSelectable(); - this.recalculatePageLeft(); - - var annotationCount = this.annotations().length; - for (var i = 0; i < annotationCount; i++) { - var annotation = this.annotations()[i]; - - this.updateAnnotationDisplayPosition(annotation); - this.createConnectingLineAndIcon(annotation); - } - - this.preventIconsFromOverlapping(); - $(this).trigger('onSetZoom', [this.zoom()]); - }, - - setDocumentScaleOnClient: function (windowPercentage) { - //var windowPercentage = this.pageWidth() / window.innerWidth; - //var width = windowPercentage / 100 * (window.innerWidth - this.imageHorizontalMargin * 2); - //var height = windowPercentage / 100 * this.documentSpace.height(); - var height = windowPercentage / 100 * this.documentSpace[0].clientHeight; - var zoom = height / (this.pageImageWidth * this.heightWidthRatio) * 100; - //var zoom = width / this.pageImageWidth * 100; - this.redrawScreenWhenZooming(zoom); - }, - - setDocumentScrollOnClient: function (horizontalScrollPosition, verticalScrollPosition, scale) { - this.setDocumentScrollCalled = true; - this.synchronizeDocumentScroll(horizontalScrollPosition, verticalScrollPosition, scale); - }, - - synchronizeDocumentScroll: function (horizontalScrollPortion, scrollTop, scale) { - var documentSpace = this.documentSpace[0]; - var firstPageTop = parseInt(this._firstPage.css("padding-top")); - var pagePadding = firstPageTop; - var maxScrollLeft = documentSpace.scrollWidth - documentSpace.clientWidth; - - //var theirPageWidth = this.pageWidth() / this.scale() * scale + 2 * this.imageHorizontalMargin; - //var horizontalScrollPortion = scrollLeft / theirPageWidth; - //var horizontalScrollPosition = scrollLeft / scale * this.scale(); - //var horizontalScrollPosition = (this.pageWidth() + 2 * this.imageHorizontalMargin) * horizontalScrollPortion; - //var pagePosition = this._firstPage.outerHeight(true) * pageNumber; - var imageMargin = this.getImageMargin(); - var pageHeightInSenderScale = this.pageHeight() / this.scale() * scale; - var pageNumber = Math.floor(scrollTop / (pageHeightInSenderScale + imageMargin)); - var ourTop = (scrollTop - pagePadding - pageNumber * imageMargin) / scale * this.scale() + pagePadding + pageNumber * imageMargin; - - this.documentSpace[0].scrollLeft = maxScrollLeft * horizontalScrollPortion; - this.documentSpace[0].scrollTop = ourTop; - }, - - ScrollDocViewEnd: function (item, e) { - docViewerViewModel.prototype.ScrollDocViewEnd.call(this, item, e); - - if (!this.setDocumentScrollCalled) { - this.broadcastDocumentScroll(); - } - this.setDocumentScrollCalled = false; - }, - - broadcastDocumentScroll: function () { - if (this.fullSynchronization && this.isScrollBroadcastEnabled && this.isMasterOfBroadcast) { - var horizontalScrollPosition = this.scrollPosition[0]; - var verticalScrollPosition = this.scrollPosition[1]; - var scale = this.scale(); - - var documentSpace = this.documentSpace[0]; - var maxScrollLeft = documentSpace.scrollWidth - documentSpace.clientWidth; - var horizontalScrollPortion; - if (maxScrollLeft == 0) - horizontalScrollPortion = 0; - else - horizontalScrollPortion = horizontalScrollPosition / maxScrollLeft; - $.connection.annotationHub.server.broadcastDocumentScroll(this.userId, this.userKey, this.fileId, - horizontalScrollPortion, verticalScrollPosition, scale); - // this._model.broadcastDocumentScroll(this.fileId, scrollPosition, - // function (response) { - // } .bind(this), - // function (error) { - // this._onError(error); - // } .bind(this)); - } - }, - - broadcastMouseCursorPosition: function (left, top) { - if (this.fullSynchronization && this.isMasterOfBroadcast) { - var scale = this.scale(); - var scrollTop = this.documentSpace[0].scrollTop; - var documentSpaceTop = this.documentSpace.offset().top; - var documentPageLeft = this._firstPage.find(".page-image").offset().left - this._firstPage.parent().offset().left; - - $.connection.annotationHub.server.broadcastMouseCursorPosition(this.userId, this.userKey, this.fileId, - left - documentPageLeft, top - documentSpaceTop, scale, scrollTop); - //this._model.broadcastMouseCursorPosition(this.fileId, left, top, - // function (response) { - // } .bind(this), - // function (error) { - // this._onError(error); - // } .bind(this)); - } - }, - - setMousePositionOnClient: function (left, top, scale, scrollTop) { - var pointer = $('#cursor_hand'); - var documentSpaceTop = this.documentSpace.offset().top; - //var firstPageTop = this._firstPage.offset().top; - var firstPageTop = parseInt(this._firstPage.css("padding-top")); - //var pagePadding = firstPageTop + documentSpaceTop; - var pagePadding = firstPageTop; - var ourLeft = left, ourTop = top; - //if (left - this.imageHorizontalMargin > 0) { - //ourLeft = (left - this.imageHorizontalMargin) / scale * this.scale() + this.imageHorizontalMargin; - ourLeft = left / scale * this.scale(); - var imageMargin = this.getImageMargin(); - - var pageHeightInSenderScale = this.pageHeight() / this.scale() * scale; - var pageNumber = Math.floor((scrollTop + top) / (pageHeightInSenderScale + imageMargin)); - ourTop = (top - pagePadding - pageNumber * imageMargin) / scale * this.scale() + pagePadding + pageNumber * imageMargin; - //} - ourLeft += this.horizontalCursorPointShift; - ourLeft += this._firstPage.find(".page-image").offset().left - this._firstPage.parent().offset().left; - //var scrollTopInOurScale = scrollTop / scale * this.scale(); - //ourTop += documentSpaceTop + (scrollTop - pageNumber * imagePadding) / scale * this.scale() - this.documentSpace[0].scrollTop + pageNumber * imagePadding; - ourTop += documentSpaceTop; - var ourScrollTop = this.documentSpace[0].scrollTop; - ourTop += scrollTop / scale * this.scale() - ourScrollTop; - ourTop += this.verticalCursorPointShift; - pointer.css({ left: ourLeft, top: ourTop }); - }, - - getImageMargin: function () { - var imageMargin = this._firstPage.outerHeight(true) - this._firstPage.find(".page-image").height(); - return imageMargin; - }, - - updateAnnotationDisplayPosition: function (annotation) { - var bounds = annotation.boundingBox(); - - if (bounds != annotation.bounds()) { - bounds.topLeft.y = this.unscaledPageHeight - bounds.topLeft.y; - bounds.bottomRight.y = this.unscaledPageHeight - bounds.bottomRight.y; - } - - bounds = (this.storeAnnotationCoordinatesRelativeToPages ? - this.convertPageAndRectToScreenCoordinates(annotation.pageNumber, bounds) : - this.convertRectToScreenCoordinates(bounds)); - annotation.displayBounds(bounds.round()); - - var result = this.getAnnotationSideIconCoordinates(annotation); - annotation.annotationOriginalTextBoxDisplayPosition(new jSaaspose.Point(this.getAnnotationSideIconLeft(), result.iconTop)); - }, - - convertPointToAbsoluteCoordinates: function (point, pointToFindPageFor) { - var scale = this.scale(); - var left = point.x; - var top = point.y; - - var selectable = this.getSelectableInstance(); - var page = selectable.findPageAtVerticalPosition(pointToFindPageFor.y); - if (page == null) - return null; - left -= page.rect.left(); - top -= page.rect.top(); - var pageOffset; - - var pageNumber = parseInt(page.pageId) - 1; - pageOffset = pageNumber * this.getPageHeight(); - pageOffset /= scale; - left /= scale; - top /= scale; - var position = new jSaaspose.Point(left, top + pageOffset); - return position; - }, - - convertPointToRelativeToPageUnscaledCoordinates: function (point, pointToFindPageFor) { - var scale = this.scale(); - var left = point.x; - var top = point.y; - - var selectable = this.getSelectableInstance(); - var page = selectable.findPageAtVerticalPosition(pointToFindPageFor.y); - if (page == null) { - return null; - } - left -= page.rect.left(); - top -= page.rect.top(); - left /= scale; - top /= scale; - var position = new jSaaspose.Point(left, top); - return position; - }, - - convertRectToScreenCoordinates: function (rect) { - var selectable = this.getSelectableInstance(); - return selectable.convertRectToScreenCoordinates(rect); - }, - - convertPageAndRectToScreenCoordinates: function (pageNumber, rect) { - var selectable = this.getSelectableInstance(); - return selectable.convertPageAndRectToScreenCoordinates(pageNumber, rect); - }, - - annotationIsPublicChangedHandler: function (annotation) { - if (annotation.guid != null) { - annotation.access = annotation.annotationIsPublic() ? 0 : 1; - this._model.setAnnotationAccess(this.fileId, annotation.guid, annotation.access, - function (response) { - }.bind(this), - function (error) { - this._onError(error); - }.bind(this)); - } - - return true; - }, - - replyOnEnter: function (annotation, event) { - var keyCode = (event.which ? event.which : event.keyCode); - if (keyCode === 13) { // Enter - this.commitAnnotationReply(annotation); - return false; - } - return true; - }, - - focusOutHandler: function (annotation, reply, e) { - var target = (e && e.target) || (e && e.srcElement); - if (!$(target).is('.annotationButton')) - if (annotation.activeReply() == reply.index) - this.commitAnnotationReply(annotation, true); - return true; - }, - - saveReplyIfClickedOnAnotherReply: function (clickedAnnotation, clickedReply, event) { - if (this.activeAnnotation() != null && (this.activeAnnotation() != clickedAnnotation || clickedAnnotation.activeReply() != clickedReply.index)) - this.commitAnnotationReply(this.activeAnnotation(), true); - this.activeAnnotation(clickedAnnotation); - this.activateAnnotationReply(clickedAnnotation, clickedReply.index); - }, - - getDocumentCollaborators: function (fileId) { - if ((fileId || this.fileId) && !this.anonymousAnnotation) { - var response = this._model.getDocumentCollaborators(fileId || this.fileId); - //alert("getDocumentCollaborators: " + JSON.stringify(response)); - if (response.error) { - jerror(response.error.Reason); - } - - var owner = response.data.d.Owner; - this.createReviewersFromResponse(response); - this.currentUserIsDocumentOwner(owner != null && owner.Guid == this.userId); - - if (response.data.d.SharedLinkAccessRights) { - this._setAccessRights(response.data.d.SharedLinkAccessRights || -1); - } - else - if (owner) - this._setAccessRights(owner.AccessRights || -1); - } - }, - - _resetAccessRights: function () { - }, - - _setAccessRights: function (access) { - var canRedact = ((access & 32) > 0), - canDelete = ((access & 16) > 0), - canExport = ((access & 8) > 0), - canDownload = ((access & 4) > 0), - canAnnotate = ((access & 2) > 0), - canView = ((access & 1) > 0); - - this.canRedact(canRedact); - this.canDelete(canDelete); - this.canExport(canExport); - this.canDownload(canDownload); - this.canAnnotate(canAnnotate); - this.canView(canView); - }, - - setDocumentCollaborators: function (setReviewerContacts, newCollaborator) { - if (newCollaborator) - this.newCollaborator(newCollaborator); - if (this.newCollaborator() != "") { - this.busyAddingReviewer(true); - - var serverCollaborators = []; - var i, j; - var collaborator; - for (i = 0; i < this._collaborators().length; i++) { - collaborator = this._collaborators()[i]; - serverCollaborators.push(collaborator.emailAddress); - } - - serverCollaborators.push(this.newCollaborator()); - - if (setReviewerContacts) { - this.newReviewerContactEmail(this.newCollaborator()); - this.setReviewerContacts(); - } - - this._model.setDocumentCollaborators(this.fileId, serverCollaborators, - function (response) { - this.busyAddingReviewer(false); - - this.newCollaborator(""); - this.createReviewersFromResponse(response); - this.invited(true); - }.bind(this), - function (error) { - this.busyAddingReviewer(false); - this.invited(false); - jerror(error); - }.bind(this) - ); - } - }, - - addDocumentReviewer: function () { - if (this.newCollaborator() != "") { - this.busyAddingReviewer(true); - - this._model.addDocumentReviewer(this.fileId, - this.newCollaborator(), - this.newCollaboratorFirstName(), - this.newCollaboratorLastName(), - this.reviewerInvitationMessage(), - function (response) { - this.newReviewerContactEmail(this.newCollaborator()); - this.newReviewerContactFirstName(""); - this.newReviewerContactLastName(""); - this.setReviewerContacts(); - this.busyAddingReviewer(false); - - this.newCollaborator(""); - this.createReviewersFromResponse(response); - this.invited(true); - }.bind(this), - function (error) { - this.busyAddingReviewer(false); - this.invited(false); - jerror(error); - }.bind(this) - ); - } - }, - - deleteDocumentReviewer: function (reviewer) { - this.busyDeletingReviewer(true); - - this._model.deleteDocumentReviewer(this.fileId, reviewer.id, - function (response) { - this.busyDeletingReviewer(false); - this._collaborators.remove(reviewer); - //this.createReviewersFromResponse(response); - }.bind(this), - function (error) { - this.busyDeletingReviewer(false); - jerror(error); - }.bind(this) - ); - }, - - createReviewersFromResponse: function (response) { - var newItems = []; - var owner = response.data.d.Owner; - var ownerIsSet = false; - var canAnnotate, canDownload, canView, canExport, canDelete, canRedact; - var access; - var emailAddress, displayName; - var ownerSuffix = " (Owner)"; - var viewModel = this; - var isOwner; - $.each(response.data.d.Collaborators, function (index, value) { - access = value.access_rights; - emailAddress = value.primary_email; - if (value.firstName != null && value.lastName != null && value.firstName != "" && value.lastName != "") - displayName = value.firstName + " " + value.lastName; - else - displayName = value.primary_email; - if (owner && emailAddress == owner.primary_email) { - ownerIsSet = true; - canAnnotate = canDownload = canView = canExport = canDelete = canRedact = alwaysTrue; - displayName += ownerSuffix; - isOwner = true; - } - else { - canRedact = ko.observable((access & 32) > 0); - canDelete = ko.observable((access & 16) > 0); - canExport = ko.observable((access & 8) > 0); - canDownload = ko.observable((access & 4) > 0); - canAnnotate = ko.observable((access & 2) > 0); - canView = ko.observable((access & 1) > 0); - isOwner = false; - } - - if (value.guid == viewModel.userId) { - viewModel._setAccessRights(access > 0 ? access : -1); - } - - var reviewer = { - emailAddress: emailAddress, - displayName: displayName, - color: ko.observable((value.color == null ? viewModel.getDefaultColor() : value.color)), - id: value.id, - guid: value.guid, - canAnnotate: canAnnotate, - canDownload: canDownload, - canView: canView, - canExport: canExport, - canDelete: canDelete, - canRedact: canRedact, - isOwner: isOwner, - avatar: value.avatar, - avatarUrl: (viewModel.baseAvatarUrl + value.guid) - }; - - if (isOwner) - newItems.splice(0, 0, reviewer); - else - newItems.push(reviewer); - }); - - function alwaysTrue() { return true; } - - if (!ownerIsSet && owner) { - if (owner.firstName != null && owner.lastName != null && owner.firstName != "" && owner.lastName != "") - displayName = owner.firstName + " " + owner.lastName; - else - displayName = owner.primary_email; - newItems.splice(0, 0, { - emailAddress: owner.primary_email, - displayName: displayName + ownerSuffix, - color: ko.observable((owner.color == null ? viewModel.getDefaultColor() : owner.color)), - id: null, - guid: owner.guid, - canAnnotate: alwaysTrue, - canDownload: alwaysTrue, - canView: alwaysTrue, - canExport: alwaysTrue, - canDelete: alwaysTrue, - canRedact: alwaysTrue, - isOwner: true, - avatarUrl: (viewModel.baseAvatarUrl + owner.guid) - }); - } - - this._collaborators(newItems); - }, - - getReviewerContacts: function () { - if (this.fileId && !this.anonymousAnnotation) { - this._model.getReviewerContacts(function (response) { - var newItems = []; - $.each(response.data.d.ReviewerContacts, function (index, value) { - newItems.push({ - emailAddress: value.emailAddress, - firstName: value.firstName == null ? "" : value.firstName, - lastName: value.lastName == null ? "" : value.lastName - }); - }); - - this.reviewerContacts(newItems); - - var reviewerContacts = []; - for (var i = 0; i < this.reviewerContacts().length; i++) - reviewerContacts.push(this.reviewerContacts()[i].emailAddress); - - if (this.reviewerAutocompleteInputField) { - this.reviewerAutocompleteInputField.autocomplete("option", "source", reviewerContacts); - } - - }.bind(this)); - } - }, - - setReviewerContacts: function () { - if (this.newReviewerContactEmail() != "") { - this.busySavingReviewerContacts(true); - var serverReviewerContacts = []; - var i; - var reviewerContact; - for (i = 0; i < this.reviewerContacts().length; i++) { - reviewerContact = this.reviewerContacts()[i]; - serverReviewerContacts.push(reviewerContact); - } - - serverReviewerContacts.push({ - emailAddress: this.newReviewerContactEmail(), - firstName: this.newReviewerContactFirstName(), - lastName: this.newReviewerContactLastName() - }); - - this._model.setReviewerContacts(serverReviewerContacts, - function (response) { - this.busySavingReviewerContacts(false); - var newItems = []; - $.each(response.data.d.ReviewerContacts, function (index, value) { - newItems.push({ - emailAddress: value.emailAddress, - firstName: value.firstName == null ? "" : value.firstName, - lastName: value.lastName == null ? "" : value.lastName - }); - }); - this.reviewerContacts(newItems); - - this.newReviewerContactEmail(""); - this.newReviewerContactFirstName(""); - this.newReviewerContactLastName(""); - this.invited(true); - }.bind(this), - function (error) { - this.busySavingReviewerContacts(false); - this.invited(false); - jerror(error); - }.bind(this)); - } - }, - - - findCollaborator: function (collaboratorGuid) { - var reviewer = null; - for (var i = 0; i < this._collaborators().length; i++) { - if (this._collaborators()[i].guid == collaboratorGuid) { - reviewer = this._collaborators()[i]; - break; - } - } - return reviewer; - }, - - findReviewerByEmail: function (reviewerEmailAddress) { - var reviewer = null; - for (var i = 0; i < this._collaborators().length; i++) { - if (this._collaborators()[i].emailAddress == reviewerEmailAddress) { - reviewer = this._collaborators()[i]; - break; - } - } - return reviewer; - }, - - getLastReplyColor: function (annotation) { - var replies = annotation.replies(); - if (replies.length > 0) { - var userGuid = replies[replies.length - 1].userGuid; - return this.getRgbColorOfReviewer(userGuid); - } - else { - return "#" + this.getDefaultColor().toString(); - } - }, - - getDefaultColor: function () { - return 0x125389; - }, - - getLastReplyText: function (annotation) { - var replies = annotation.replies(); - if (replies.length > 0) { - var replyText = replies[replies.length - 1].text(); - return jGroupdocs.html.toText(replyText); - } - else { - return ""; - } - }, - - _getReviewerColor: function (userGuid) { - var reviewer = this.findCollaborator(userGuid); - var color; - - if (reviewer == null) - color = this.getDefaultColor(); - else { - color = reviewer.color(); - if (color == null) - color = this.getDefaultColor(); - } - - return color; - }, - - _getHexReviewerColor: function (userGuid) { - var color = this._getReviewerColor(userGuid); - return jSaaspose.utils.getHexColor(color); - }, - - getRgbColorOfReviewer: function (userGuid) { - var color = this._getReviewerColor(userGuid); - return this.getRgbColorFromInteger(color); - }, - - getRgbColorFromInteger: function (color) { - return isNaN(color) ? 'rgb(255, 255, 255)' : 'rgb(' + (color >> 16 & 255) + ',' + (color >> 8 & 255) + ',' + (color & 255) + ')'; - }, - - setReviewerRights: function () { - this.busySavingReviewerRights(true); - var serverCollaborators = []; - for (var i = 0; i < this._collaborators().length; i++) { - var collaborator = this._collaborators()[i]; - var serverCollaborator = { - primary_email: collaborator.emailAddress, color: collaborator.color(), - id: collaborator.id, guid: collaborator.guid, - access_rights: ((collaborator.canRedact() && collaborator.canView()) ? 32 : 0) | - ((collaborator.canDelete() && collaborator.canView()) ? 16 : 0) | - ((collaborator.canExport() && collaborator.canView()) ? 8 : 0) | - ((collaborator.canDownload() && collaborator.canView()) ? 4 : 0) | - ((collaborator.canAnnotate() && collaborator.canView()) ? 2 : 0) | - (collaborator.canView() ? 1 : 0) - }; - serverCollaborators.push(serverCollaborator); - } - - this._model.setReviewerRights(this.fileId, serverCollaborators, - function (response) { - if (this.currentUserIsDocumentOwner()) { - this.applySharedLinkAccessRights(); - } - else { - this.busySavingReviewerRights(false); - } - //this.busy(false); - //this.invited(true); - }.bind(this), - function (error) { - this.busySavingReviewerRights(false); - //this.invited(false); - jerror(error); - }.bind(this) - ); - }, - - applySharedLinkAccessRights: function () { - if (!this.currentUserIsDocumentOwner()) { - return; - } - - this.busySavingReviewerRights(true); - - var sharedLinkAccessRights = - ((this.canRedact() && this.canView()) ? 32 : 0) | - ((this.canDelete() && this.canView()) ? 16 : 0) | - ((this.canExport() && this.canView()) ? 8 : 0) | - ((this.canDownload() && this.canView()) ? 4 : 0) | - ((this.canAnnotate() && this.canView()) ? 2 : 0) | - (this.canView() ? 1 : 0); - - this._model.setSharedLinkAccessRights(this.fileId, sharedLinkAccessRights, - function (response) { - this.triggerOnReviewerColorsChanged(); - this.busySavingReviewerRights(false); - }.bind(this), - function (error) { - this.busySavingReviewerRights(false); - jerror(error); - }.bind(this) - ); - }, - - addChildReply: function (annotation, parentReplyGuid) { - var parentReply = annotation.findReply(parentReplyGuid); - var replyLevel = 0; - if (parentReply != null) { - replyLevel = parentReply.replyLevel + 1; - } - var newReply = new AnnotationReply({ - parentReplyGuid: parentReplyGuid, - userName: this.userName, - repliedOn: new Date().getTime(), - userGuid: this.userId, - replyLevel: replyLevel - }); - if (parentReply != null) { - parentReply.childReplies.push(newReply); - annotation.insertReplyAfterAnotherReply(parentReply, newReply); - } - annotation.setActiveReply(newReply); - - var scrollbar = $('#comments_scroll'); - if (scrollbar.length > 0) { - scrollbar.tinyscrollbar_update('relative'); - } - }, - - setReviewersColorsOnClient: function (reviewerDescriptions) { - for (var i = 0; i < reviewerDescriptions.length; i++) { - var reviewer = this.findReviewerByEmail(reviewerDescriptions[i].emailAddress); - if (reviewer != null) - reviewer.color(reviewerDescriptions[i].color); - } - this.triggerOnReviewerColorsChanged(); - }, - - setReviewersRightsOnClient: function (reviewerDescriptions) { - for (var i = 0; i < reviewerDescriptions.length; i++) { - var reviewer = this.findReviewerByEmail(reviewerDescriptions[i].emailAddress); - - if (reviewer != null) { - var access = reviewerDescriptions[i].accessRights; - - reviewer.canRedact((access & 32) > 0); - reviewer.canDelete((access & 16) > 0); - reviewer.canExport((access & 8) > 0); - reviewer.canDownload((access & 4) > 0); - reviewer.canAnnotate((access & 2) > 0); - reviewer.canView((access & 1) > 0); - - if (reviewer.guid == this.userId) { - this._setAccessRights(access); - } - } - } - }, - - triggerOnReviewerColorsChanged: function () { - $(this).trigger('onReviewerColorsChanged', []); - }, - - preventIconsFromOverlapping: function () { - this.annotations.sort(function (left, right) { - var leftY = left.annotationOriginalTextBoxDisplayPosition().y; - var rightY = right.annotationOriginalTextBoxDisplayPosition().y; - if (leftY > rightY) - return 1; - else if (leftY < rightY) - return -1; - else if (leftY == rightY) - return 0; - }); - var previousY = null; - var previousOriginalY = null; - var minimumDistance = this.minimumDistance; - var annotation; - var distance; - for (var i = 0; i < this.annotations().length; i++) { - annotation = this.annotations()[i]; - if (!annotation.commentsEnabled) - continue; - - if (previousY == null) { - annotation.annotationSideIconDisplayPosition().y = annotation.annotationOriginalTextBoxDisplayPosition().y; - } - else { - distance = annotation.annotationOriginalTextBoxDisplayPosition().y - previousOriginalY; - if (distance < minimumDistance) { - distance = minimumDistance; - annotation.annotationSideIconDisplayPosition().y = previousY + distance; - } - else { - if (annotation.annotationOriginalTextBoxDisplayPosition().y >= previousY + minimumDistance) - annotation.annotationSideIconDisplayPosition().y = annotation.annotationOriginalTextBoxDisplayPosition().y; - else { - distance = minimumDistance; - annotation.annotationSideIconDisplayPosition().y = previousY + distance; - } - } - - } - previousY = annotation.annotationSideIconDisplayPosition().y; - previousOriginalY = annotation.annotationOriginalTextBoxDisplayPosition().y; - annotation.annotationSideIconDisplayPosition().x = annotation.annotationOriginalTextBoxDisplayPosition().x; - annotation.annotationSideIconDisplayPosition(annotation.annotationSideIconDisplayPosition()); - - this.createConnectingLineAndIcon(annotation, false); - } - }, - - getImageWidthWithoutRightPanel: function () { - var rightOffset; - var visiblePanel = this.rightSideElement.children(":visible"); - if (this.isRightPanelEnabled) - rightOffset = Math.round(visiblePanel.width()); - else - rightOffset = 0; - - var fixedDistanceBetweenPageAndRightPanel = 68; - if (this.embeddedAnnotation && this.fullSynchronization) { // centered page - if (this.isRightPanelEnabled) { - rightOffset *= 2; - fixedDistanceBetweenPageAndRightPanel *= 2; - } - else { - fixedDistanceBetweenPageAndRightPanel = 40; - } - } - //var imageHorizontalMargin = this.imageHorizontalMargin; - return this.documentSpace.width() - rightOffset - fixedDistanceBetweenPageAndRightPanel; - //return this.documentSpace.width() - 2 * this.imageHorizontalMargin - rightOffset; - //return this.documentSpace[0].clientWidth - 2 * this.imageHorizontalMargin - rightOffset; - }, - - setImageWidthWithoutRightPanel: function () { - var ratio = null; - if (this.embeddedAnnotation) { - var requiredWidth = this.getImageWidthWithoutRightPanel(); - //if (this.pageWidth() > requiredWidth) { - ratio = requiredWidth / this.pageImageWidth * 100; - //this.setZoom(ratio); - //} - } - return ratio; - }, - - setDocumentScroll: function (verticalScrollPosition) { - var documentSpace = this.documentSpace[0]; - documentSpace.scrollTop = verticalScrollPosition; - }, - - scrollToVisible: function (annotation) { - var displayPos = null; - - if (this.scrollOnFocus && annotation.annotationSideIconDisplayPosition && (displayPos = annotation.annotationSideIconDisplayPosition()) != null) { - var topOffset = (annotation.replyCount() > 0 ? 165 : 190); - var scrollTop = Math.max(displayPos.y - topOffset, 0); - var documentSpace = this.documentSpace[0]; - - if (displayPos.y < documentSpace.scrollTop || displayPos.y > documentSpace.scrollTop + documentSpace.clientHeight) - this.setDocumentScroll(scrollTop); - } - }, - - // mouse wheel scroll without lags in Chrome - setupChromeMouseWheelHandler: function () { - var browserIsChrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase()); - if (!browserIsChrome) - return; - var self = this; - var mouseWheelStepPixels = 0; - var mouseWheelFired = false; - var previousScrollTop = 0; - var wheelDelta = 0; - - function chromeMouseWheelHandler(incomingEvent) { - //var st = self.documentSpace.scrollTop(); - var delta = 0; - var event = incomingEvent; - if (incomingEvent.originalEvent) - event = incomingEvent.originalEvent; - if (!event) /* For IE. */ - event = window.event; - if (event.wheelDelta) { /* IE/Opera. */ - delta = event.wheelDelta / 120; - } else if (event.detail) { /** Mozilla case. */ - /** In Mozilla, sign of delta is different than in IE. - * Also, delta is multiple of 3. - */ - delta = -event.detail / 3; - } - /** If delta is nonzero, handle it. - * Basically, delta is now positive if wheel was scrolled up, - * and negative, if wheel was scrolled down. - */ - if (delta && mouseWheelStepPixels > 0) { - var st = self.documentSpace.scrollTop(); - st -= delta * mouseWheelStepPixels; - if (st < self.documentSpace[0].scrollHeight - self.documentSpace.height()) - $(this).trigger('onBeforeScrollDocView', { position: st }); - } - - previousScrollTop = self.documentSpace.scrollTop(); - wheelDelta = delta; - mouseWheelFired = true; - } - - function chromeScrollHandler() { - if (mouseWheelFired && wheelDelta != 0) { - var st = self.documentSpace.scrollTop(); - if (st < self.documentSpace[0].scrollHeight - self.documentSpace.height()) { - mouseWheelStepPixels = (self.documentSpace.scrollTop() - previousScrollTop) / wheelDelta; - if (mouseWheelStepPixels < 0) - mouseWheelStepPixels = -mouseWheelStepPixels; - } - mouseWheelFired = false; - } - } - - this.documentSpace.bind("scroll", chromeScrollHandler); - this.documentSpace.bind("mousewheel", chromeMouseWheelHandler); - }, - - broadcastMasterResolution: function () { - if (this.fullSynchronization && this.isMasterOfBroadcast) { - this.broadcastDocumentScale(); - } - }, - - slaveConnectedHandlerOnClient: function () { - if (this.fullSynchronization && this.isMasterOfBroadcast) { - this.broadcastDocumentScroll(); - this.broadcastDocumentScale(); - } - }, - - broadcastSlaveConnected: function () { - if (this.fullSynchronization && !this.isMasterOfBroadcast) { - $.connection.annotationHub.server.broadcastSlaveConnected(this.fileId); - } - }, - - isThereActiveAnnotation: function () { - return this.activeAnnotation() != null; - }, - - activateNextAnnotation: function () { - return this._activateAnnotation(1); - }, - - activatePrevAnnotation: function () { - return this._activateAnnotation(-1); - }, - - _activateAnnotation: function (direction) { - var annotationCount = this.annotations().length; - if (annotationCount <= 0) - return null; - - var annotation = this.activeAnnotation(); - - if (annotation != null) { - var idx = this._indexOfAnnotation(annotation.guid); - annotation = this._getAnnotationAt(idx + direction); - } - - if (annotation == null) - annotation = (direction >= 0 ? this.annotations()[0] : this.annotations()[annotationCount - 1]); - - this.activeAnnotation(annotation); - return annotation; - } - }); - - - // - // Annotation viewer - // - $.widget('ui.docAnnotationViewer', $.ui.docViewer, { - _create: function () { - $.ui.docViewer.prototype._create.call(this); - var viewModel = this.getViewModel(); - ko.bindingHandlers.makeDraggable = { - init: function (element, valueAccessor, allBindingsAccessor, marker) { - if (valueAccessor()) { - //if (marker.annotation.type == Annotation.prototype.AnnotationType.Point) - // viewModel.createConnectingLine(marker.annotation, $(element).height()); - - $(element).draggable(valueAccessor()); - } - } - }; - - ko.bindingHandlers.htmlValue = { - init: function (element, valueAccessor, allBindingsAccessor) { - function updateHandler(onToolbar) { - var modelValue = valueAccessor(); - //var elementValue = $(element).text(); - var elementValue = $(element).html(); - - if (ko.isWriteableObservable(modelValue)) { - modelValue(elementValue); - } - else { //handle non-observable one-way binding - var allBindings = allBindingsAccessor(); - if (allBindings['_ko_property_writers'] && allBindings['_ko_property_writers'].htmlValue) - allBindings['_ko_property_writers'].htmlValue(elementValue); - } - if (onToolbar) - $(element).trigger("koValueUpdatedOnToolbar"); - else - $(element).trigger("koValueUpdated", element); - } - - function updateHandlerNotToolbar() { - updateHandler(false); - } - - function updateHandlerToolbar() { - updateHandler(true); - } - - ko.utils.registerEventHandler(element, "clickoutside", updateHandlerNotToolbar); - ko.utils.registerEventHandler(element, "clickoutsideOnToolbar", updateHandlerToolbar); - ko.utils.registerEventHandler(element, "blur", updateHandler); - ko.utils.registerEventHandler(element, "keyup", updateHandler); - ko.utils.registerEventHandler(element, "input", updateHandler); - }, - update: function (element, valueAccessor) { - var value = ko.utils.unwrapObservable(valueAccessor()) || ""; - var newInnerHtml = (value && value.length ? value.replace(/\n/g, '
') : ''); - if (newInnerHtml != element.innerHTML) { - element.innerHTML = newInnerHtml; - } - - var scrollbar = $('#comments_scroll'); - if (scrollbar.length > 0) { - scrollbar.tinyscrollbar_update('relative'); - } - } - }; - - $(document).bind("mousedown", function (event) { - var activeElement = $(document.activeElement); - var target = (event && event.target) || (event && event.srcElement); - - var activeToolbar = $(".text_area_toolbar").has(activeElement); - var toolbarWasActive = (activeToolbar.length > 0); - if (target != document.activeElement && - (activeElement.is("input") || activeElement.is("textarea") || activeElement.is("[contenteditable='true']") || toolbarWasActive) - && !$(target).is(".annotationButton") - && !$(target).is(".ta_resize_box") - && !(toolbarWasActive && activeToolbar.parent().has(target).length > 0 && $(target).is(".doc_text_area_text"))) { - if ($(".text_area_toolbar").has(target).length == 0) - activeElement.trigger("clickoutside"); - else - activeElement.trigger("clickoutsideOnToolbar"); - //if (toolbarWasActive) - // activeToolbar.trigger("clickoutside"); - } - var visibleToolbars = $(".text_area_toolbar:visible"); - if ($(".text_area_toolbar").has(target).length == 0 && !$(target).is(".doc_text_area_text")) - visibleToolbars.trigger("clickoutside"); - return true; - }); - }, - - _createViewModel: function () { - return new annotationViewModel(this.options); - } - }); -})(jQuery); \ No newline at end of file diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Scripts/AnnotationCommands.js b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Scripts/AnnotationCommands.js deleted file mode 100644 index dc39955..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Scripts/AnnotationCommands.js +++ /dev/null @@ -1,686 +0,0 @@ -jGroupdocs.AnnotationUndoManager = function () { - jGroupdocs.UndoManager.prototype.constructor.apply(this, arguments); - - this.canRedoObservable = ko.observable(false); - this.canUndoObservable = ko.observable(false); - this.busy = ko.computed(function () { - return this.canRedoObservable() && this.canUndoObservable(); - }, this); -}; - -$.extend(jGroupdocs.AnnotationUndoManager.prototype, jGroupdocs.UndoManager.prototype, { - canRedoObservable: ko.observable(false), - canUndoObservable: ko.observable(false), - busy: null, - - _onDone: function (command) { - jGroupdocs.UndoManager.prototype._onDone.apply(this, arguments); - - this._fixupIds(command); - this._refreshObservables(); - }, - - _onUndone: function (command) { - jGroupdocs.UndoManager.prototype._onUndone.apply(this, arguments); - - this._fixupIds(command); - this._refreshObservables(); - }, - - _onDoUndoFailed: function (command) { - jGroupdocs.UndoManager.prototype._onDoUndoFailed.apply(this, arguments); - this._refreshObservables(); - }, - - _onExecuting: function () { - this._refreshObservables(); - }, - - _refreshObservables: function () { - this.canRedoObservable(this.canRedo()); - this.canUndoObservable(this.canUndo()); - }, - - _fixupIds: function (command) { - var maps = command.idsMap(), j; - - for (j = 0; j < maps.length; j++) { - var ids = maps[j], - newIdExists = (ids.newId != null && ids.newId !== undefined && ids.newId.length > 0); - - if (ids.oldId == null || ids.oldId.length <= 0 || !newIdExists || ids.oldId == ids.newId) - continue; - - for (var i = 0; i < this._commands.length; i++) { - if (this._commands[i] != command && this._commands[i].fixupIds(ids)) - this._commands[i].onIdsFixedUp(ids); - } - } - - for (j = 0; j < maps.length; j++) { - var ids = maps[j], - newIdExists = (ids.newId != null && ids.newId !== undefined && ids.newId.length > 0); - - if (newIdExists && command.fixupIds(ids)) - command.onIdsFixedUp(ids); - } - } -}); - -// Annotation commands base class -AnnotationCommand = function (model, fileId, annotation, callbacks) { - jGroupdocs.AsyncCommand.prototype.constructor.apply(this, [callbacks]); - - this._model = model; - this._fileId = fileId; - this._annotation = annotation; - this._annotationId = (annotation ? annotation.guid : null); - this._idsMap = { - oldId: annotation.guid, - newId: annotation.guid - }; -}; - -$.extend(AnnotationCommand.prototype, jGroupdocs.AsyncCommand.prototype, { - _model: null, - _fileId: null, - _annotation: null, - _annotationId: null, - _idsMap: { - oldId: '', - newId: '' - }, - - idsMap: function () { - return [this._idsMap]; - }, - - fixupIds: function (ids, preserveIdsMap) { - if (this._annotationId != ids.oldId) - return (this._annotationId == ids.newId); - - this._annotationId = ids.newId; - this._annotation.guid = ids.newId; - - if (!preserveIdsMap) - this._idsMap.newId = this._idsMap.oldId = ids.newId; - - return true; - }, - - onIdsFixedUp: function (ids) { - if (this._callbacks && this._callbacks.onIdsFixedUp) - this._callbacks.onIdsFixedUp(ids); - } -}); - - - -// Annotation creation command -CreateAnnotationCommand = function (model, fileId, annotation, callbacks) { - AnnotationCommand.prototype.constructor.apply(this, arguments); -}; - -$.extend(CreateAnnotationCommand.prototype, AnnotationCommand.prototype, { - executeAsync: function () { - this._model.createAnnotation( - this._fileId, - this._annotation.Type, - this._annotation.FieldText, - this._annotation.PageNumber, - this._annotation.Box, - this._annotation.AnnotationPosition, - //this._annotation.range, - this._annotation.SvgPath, - this._annotation.DrawingOptions, - { family: this._annotation.FontFamily, size: this._annotation.FontSize }, - this._onDone.bind(this), - this._onDoFailed.bind(this)); - } -}); - - - -// Annotation replies restore command -RestoreAnnotationRepliesCommand = function (model, fileId, annotation, callbacks, replies) { - AnnotationCommand.prototype.constructor.apply(this, arguments); - this._replies = replies; -}; - -$.extend(RestoreAnnotationRepliesCommand.prototype, AnnotationCommand.prototype, { - _replies: null, - - executeAsync: function () { - this._model.restoreAnnotationReplies( - this._fileId, - this._annotationId, - this._replies, - this._onDone.bind(this), - this._onDoFailed.bind(this)); - }, - - _onDone: function (response) { - AnnotationCommand.prototype._onDone.apply(this, arguments); - } -}); - - - -// Annotation and replies restoring command -RestoreAnnotationCommand = function (model, fileId, annotation, callbacks, replies) { - AnnotationCommand.prototype.constructor.apply(this, arguments); - - this._replies = []; - - if (replies && replies.length) { - for (var i = 0; i < replies.length; i++) { - var rd = replies[i]; - this._replies.push({ - guid: rd.guid(), - message: rd.text(), - userGuid: rd.userGuid, - parentReplyGuid: rd.parentReplyGuid(), - repliedOn: rd.repliedOn - }); - } - } -}; - - -$.extend(RestoreAnnotationCommand.prototype, AnnotationCommand.prototype, { - _replies: null, - _replyIdsMap: null, - - executeAsync: function () { - var callbacks = { - onDone: this._onAnnotationCreated.bind(this), - onDoFailed: this._onDoFailed.bind(this) - }; - - var createCmd = new CreateAnnotationCommand( - this._model, - this._fileId, - this._annotation, - callbacks); - createCmd.executeAsync(); - }, - - idsMap: function () { - var map = AnnotationCommand.prototype.idsMap.apply(this, arguments); - map.push.apply(map, this._replyIdsMap || []); - - return map; - }, - - _onAnnotationCreated: function (response) { - this._annotation.guid = response.data.annotationGuid; - - var callbacks = { - onDone: this._onDone.bind(this), - onDoFailed: this._onDoFailed.bind(this) - }; - - var restoreRepliesCmd = new RestoreAnnotationRepliesCommand( - this._model, - this._fileId, - this._annotation, - callbacks, - this._replies); - restoreRepliesCmd.executeAsync(); - }, - - _onDone: function (response) { - this._replyIdsMap = []; - - for (var i = 0; i < response.data.ids.length; i++) { - this._replyIdsMap.push({ - oldId: this._replies[i].guid, - newId: response.data.ids[i] - }); - } - - this._idsMap.newId = response.data.annotationGuid; - AnnotationCommand.prototype._onDone.apply(this, arguments); - }, - - _onDoFailed: function (response) { - this._idsMap.newId = ''; - AnnotationCommand.prototype._onDoFailed.apply(this, arguments); - } -}); - - - -// Annotation deletion command -DeleteAnnotationCommand = function (model, fileId, annotation, callbacks, replies) { - AnnotationCommand.prototype.constructor.apply(this, arguments); - this._replies = replies; -}; - -$.extend(DeleteAnnotationCommand.prototype, AnnotationCommand.prototype, { - _replies: null, - _undoCmd: null, - - executeAsync: function () { - this._undoCmd = null; - this._model.deleteAnnotation( - this._fileId, - this._annotationId, - this._onDone.bind(this), - this._onDoFailed.bind(this)); - }, - - undoCommand: function () { - var callbacks = { - onDone: this._onUndone.bind(this), - onDoFailed: this._callbacks.onUndoFailed.bind(this) - }; - - this._undoCmd = new RestoreAnnotationCommand( - this._model, - this._fileId, - this._annotation, - callbacks, - this._replies); - - return this._undoCmd; - }, - - idsMap: function () { - return (this._undoCmd != null ? - this._undoCmd.idsMap() : AnnotationCommand.prototype.idsMap.apply(this, arguments)); - }, - - _onDone: function (response) { - this._idsMap.newId = ''; - AnnotationCommand.prototype._onDone.apply(this, arguments); - }, - - _onUndone: function (response) { - this._idsMap.newId = response.data.annotationGuid; - AnnotationCommand.prototype._onUndone.apply(this, arguments); - } -}); - - - -// Annotation creation command -$.extend(CreateAnnotationCommand.prototype, { - undoCommand: function () { - var callbacks = { - onDone: this._onUndone.bind(this), - onDoFailed: this._callbacks.onUndoFailed.bind(this) - }; - - return new DeleteAnnotationCommand( - this._model, - this._fileId, - this._annotation, - callbacks); - }, - - _onDone: function (response) { - this._idsMap.newId = response.data.annotationGuid; - AnnotationCommand.prototype._onDone.apply(this, arguments); - }, - - _onUndone: function (response) { - this._idsMap.newId = ''; - AnnotationCommand.prototype._onUndone.apply(this, arguments); - } -}); - - - -// Move annotation command -MoveAnnotationCommand = function (model, fileId, annotation, callbacks, newPosition, oldPosition) { - AnnotationCommand.prototype.constructor.apply(this, arguments); - - this._newPosition = newPosition; - this._oldPosition = oldPosition; -}; - -$.extend(MoveAnnotationCommand.prototype, AnnotationCommand.prototype, { - _newPosition: null, - _oldPosition: null, - - executeAsync: function () { - this._model.moveAnnotationMarker( - this._fileId, - this._annotation.guid, - this._newPosition.x, - this._newPosition.y, - this._annotation.pageNumber, - this._onDone.bind(this), - this._onDoFailed.bind(this)); - }, - - undoCommand: function () { - var callbacks = { - onDone: this._callbacks.onUndone.bind(this), - onDoFailed: this._callbacks.onUndoFailed.bind(this) - }; - - return new MoveAnnotationCommand( - this._model, - this._fileId, - this._annotation, - callbacks, - this._oldPosition, - null); - } -}); - - -// Resize annotation command -ResizeAnnotationCommand = function (model, fileId, annotation, callbacks, newSize, oldSize) { - AnnotationCommand.prototype.constructor.apply(this, arguments); - - this._newSize = newSize; - this._oldSize = oldSize; -}; - -$.extend(ResizeAnnotationCommand.prototype, AnnotationCommand.prototype, { - _newSize: null, - _oldSize: null, - - executeAsync: function () { - this._model.resizeAnnotation( - this._fileId, - this._annotation.guid, - this._newSize.width, - this._newSize.height, - this._onDone.bind(this), - this._onDoFailed.bind(this)); - }, - - undoCommand: function () { - var callbacks = { - onDone: this._callbacks.onUndone.bind(this), - onDoFailed: this._callbacks.onUndoFailed.bind(this) - }; - - return new ResizeAnnotationCommand( - this._model, - this._fileId, - this._annotation, - callbacks, - this._oldSize, - null); - } -}); - - - -// Set annotation color command -SetAnnotationColorCommand = function (model, fileId, annotation, callbacks, newColor, oldColor) { - AnnotationCommand.prototype.constructor.apply(this, arguments); - - this._newColor = newColor; - this._oldColor = oldColor; -}; - -$.extend(SetAnnotationColorCommand.prototype, AnnotationCommand.prototype, { - _newColor: null, - _oldColor: null, - - executeAsync: function () { - this._model.setTextFieldColor( - this._fileId, - this._annotation.guid, - this._newColor, - this._onDone.bind(this), - this._onDoFailed.bind(this)); - }, - - undoCommand: function () { - var callbacks = { - onDone: this._callbacks.onUndone.bind(this), - onDoFailed: this._callbacks.onUndoFailed.bind(this) - }; - - return new SetAnnotationColorCommand( - this._model, - this._fileId, - this._annotation, - callbacks, - this._oldColor, - null); - } -}); - - - - - -// Annotation reply command -AnnotationReplyCommand = function (model, fileId, annotation, callbacks, reply) { - AnnotationCommand.prototype.constructor.apply(this, arguments); - - this._reply = reply; - this._replyId = (reply && reply.guid ? reply.guid() : ''); - this._idsMap.newId = this._idsMap.oldId = this._replyId; -}; - -$.extend(AnnotationReplyCommand.prototype, AnnotationCommand.prototype, { - _reply: null, - _replyId: null, - - fixupIds: function (ids, preserveIdsMap) { - if (AnnotationCommand.prototype.fixupIds.apply(this, [ids, true])) { - return true; - } - - if (this._replyId != ids.oldId) - return (this._replyId == ids.newId); - - this._replyId = ids.newId; - this._reply.guid(ids.newId); - - if (!preserveIdsMap) - this._idsMap.newId = this._idsMap.oldId = ids.newId; - - return true; - } -}); - - - -// Annotation reply deletion command -DeleteAnnotationReplyCommand = function (model, fileId, annotation, callbacks, reply) { - AnnotationReplyCommand.prototype.constructor.apply(this, arguments); - - this._replyDescendants = []; - - this._replyDescendants.push({ - guid: reply.guid(), - message: reply.text(), - userGuid: reply.userGuid, - parentReplyGuid: reply.parentReplyGuid(), - repliedOn: reply.repliedOn - }); - - if (annotation.getReplyDescendants) { - var replyDescendants = annotation.getReplyDescendants(this._replyId); - - for (var i = 0; i < replyDescendants.length; i++) { - var rd = replyDescendants[i]; - this._replyDescendants.push({ - guid: rd.guid(), - message: rd.text(), - userGuid: rd.userGuid, - parentReplyGuid: rd.parentReplyGuid(), - repliedOn: rd.repliedOn - }); - } - } -}; - -$.extend(DeleteAnnotationReplyCommand.prototype, AnnotationReplyCommand.prototype, { - _replyDescendants: null, - _descendantIdsMap: null, - - executeAsync: function () { - this._model.deleteAnnotationReply( - this._fileId, - this._annotationId, - this._replyId, - this._onDone.bind(this), - this._onDoFailed.bind(this)); - }, - - fixupIds: function (ids, preserveIdsMap) { - var result = AnnotationReplyCommand.prototype.fixupIds.apply(this, arguments); - - for (var i = 0; i < this._replyDescendants.length; i++) { - if (this._replyDescendants[i].guid == ids.oldId) { - this._replyDescendants[i].guid = ids.newId; - result = true; - } - else - if (this._replyDescendants[i].parentReplyGuid == ids.oldId) - this._replyDescendants[i].parentReplyGuid = ids.newId; - } - - return result; - }, - - idsMap: function () { - var map = AnnotationReplyCommand.prototype.idsMap.apply(this, arguments); - map.push.apply(map, this._descendantIdsMap || []); - - return map; - } -}); - - -// Annotation reply creation command -CreateAnnotationReplyCommand = function (model, fileId, annotation, callbacks, reply) { - AnnotationReplyCommand.prototype.constructor.apply(this, arguments); -}; - -$.extend(CreateAnnotationReplyCommand.prototype, AnnotationReplyCommand.prototype, { - executeAsync: function () { - var text = jGroupdocs.html.toText(this._reply.text()); - this._model.addAnnotationReply( - this._fileId, - this._annotationId, - text, - this._reply.parentReplyGuid(), - this._onDone.bind(this), - this._onDoFailed.bind(this)); - }, - - undoCommand: function () { - var callbacks = { - onDone: this._onUndone.bind(this), - onDoFailed: this._callbacks.onUndoFailed.bind(this) - }; - - return new DeleteAnnotationReplyCommand( - this._model, - this._fileId, - this._annotation, - callbacks, - this._reply); - }, - - _onDone: function (response) { - this._idsMap.newId = response.data.replyGuid; - AnnotationReplyCommand.prototype._onDone.apply(this, arguments); - }, - - _onUndone: function (response) { - this._idsMap.newId = ''; - AnnotationReplyCommand.prototype._onUndone.apply(this, arguments); - } -}); - - - - -// Annotation reply deletion command undo operation -$.extend(DeleteAnnotationReplyCommand.prototype, { - undoCommand: function () { - var callbacks = { - onDone: this._onUndone.bind(this), - onDoFailed: this._callbacks.onUndoFailed.bind(this) - }; - - - return new RestoreAnnotationRepliesCommand( - this._model, - this._fileId, - this._annotation, - callbacks, - this._replyDescendants); - - /*return new CreateAnnotationReplyCommand( - this._model, - this._fileId, - this._annotation, - callbacks, - this._reply);*/ - }, - - _onDone: function (response) { - this._idsMap.newId = ''; - AnnotationReplyCommand.prototype._onDone.apply(this, arguments); - }, - - _onUndone: function (response) { - this._idsMap.newId = response.data.replyGuid; - this._descendantIdsMap = []; - - for (var i = 0; i < response.data.ids.length; i++) { - this._descendantIdsMap.push({ - oldId: this._replyDescendants[i].guid, - newId: response.data.ids[i] - }); - } - - AnnotationReplyCommand.prototype._onUndone.apply(this, arguments); - } -}); - - - -// Annotation reply edit command -EditAnnotationReplyCommand = function (model, fileId, annotation, callbacks, reply, newText, oldText) { - AnnotationReplyCommand.prototype.constructor.apply(this, arguments); - - this._newText = newText; - this._oldText = oldText; -}; - -$.extend(EditAnnotationReplyCommand.prototype, AnnotationReplyCommand.prototype, { - _newText: null, - _oldText: null, - - executeAsync: function () { - var text = jGroupdocs.html.toText(this._newText); - this._model.editAnnotationReply( - this._fileId, - this._annotationId, - this._replyId, - text, - this._onDone.bind(this), - this._onDoFailed.bind(this)); - }, - - undoCommand: function () { - var callbacks = { - onDone: this._callbacks.onUndone.bind(this), - onDoFailed: this._callbacks.onUndoFailed.bind(this) - }; - - return new EditAnnotationReplyCommand( - this._model, - this._fileId, - this._annotation, - callbacks, - this._reply, - this._oldText, - null); - } -}); diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Scripts/AnnotationInitControls.js b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Scripts/AnnotationInitControls.js deleted file mode 100644 index 9723e18..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Scripts/AnnotationInitControls.js +++ /dev/null @@ -1,228 +0,0 @@ -window.groupdocs.initAnnotationControlsAndHandlers = function (annotationWidget, annotationsViewer, annotationsViewerVM) { - - var commentModePanel = $(annotationWidget).find('div.embed_annotation_tools'); - commentModePanel.css('margin-right', 0); - - commentModePanel.draggable({ - scroll: false, - handle: '.tools_dots', - containment: 'body', - appendTo: 'body' - }); - - $(annotationWidget).find('.tool_field').click(function () { - var toolFields = $(annotationWidget).find('.tool_field'); - if (toolFields.hasClass('active')) { - $(toolFields.removeClass('active')); - } - ; - $(this).addClass('active'); - }); - - $(annotationWidget).find('.header_tools_icon').hover( - function () { $(this).find('.tooltip_on_hover').css('display', 'block'); }, - function () { $(this).find('.tooltip_on_hover').css('display', 'none'); }); - - - if (annotationsViewerVM.enableSidePanel) - $(annotationWidget).find(".comments_togle_btn").click(function () { flipPanels(true); }); - - $(annotationWidget).find('.comments_scroll').tinyscrollbar({ sizethumb: 50 }); - - var annotationIconsWrapper = $(annotationWidget).find('.annotation_icons_wrapper'); - var annotationIconsWrapperParent = annotationIconsWrapper.parent()[0]; - var annotationIconsWrapperParentScrollTop; - - annotationsViewer.bind('onDocumentLoadComplete', function (e, data) { - annotationsViewerVM.setHandToolMode(); - - annotationIconsWrapper.height($(annotationsViewer).find('.pages_container').height()); - annotationIconsWrapperParent.scrollTop = annotationIconsWrapperParentScrollTop; - - window.setTimeout(resizeSidebar, 10); - }); - - annotationsViewer.bind('onDocViewScrollPositionSet', function (e, data) { - annotationIconsWrapper.parent()[0].scrollTop = data.position; - } .bind(this)); - - annotationsViewer.bind('onBeforeScrollDocView onDocViewScrollPositionSet', function (e, data) { - if (annotationIconsWrapperParent.scrollTop != data.position) { - annotationIconsWrapperParent.scrollTop = data.position; - annotationIconsWrapperParentScrollTop = data.position; - } - } .bind(this)); - - function flipPanels(togglePanels) { - var docViewer = $(annotationsViewer)[0]; - var annotationIconsPanelVisible = $(annotationWidget).find('.comments_sidebar_collapsed').is(':visible'); - - function setIconsPanelScrollTop() { - if (!annotationIconsPanelVisible) - annotationIconsWrapperParent.scrollTop = docViewer.scrollTop; - } - - function redrawLinesAndCalculateZoom() { - setIconsPanelScrollTop(); - - if (togglePanels) - annotationsViewerVM.redrawConnectingLines(!annotationIconsPanelVisible); - else { - annotationsViewerVM.resizePagesToWindowSize(); - var selectableElement = annotationsViewerVM.getSelectable(); - - if (selectableElement != null) { - var selectable = (selectableElement.data('ui-dvselectable') || selectableElement.data('dvselectable')); - selectable.initStorage(); - } - - annotationsViewerVM.redrawWorkingArea(); - } - } - - if (togglePanels) { - if (!annotationIconsPanelVisible) { - redrawLinesAndCalculateZoom(); - } - - var setIntervalId = window.setInterval(function () { - setIconsPanelScrollTop(); - }, 50); - - $(annotationWidget).find('.comments_sidebar_collapsed').toggle('slide', { direction: 'right' }, 400, function () { - clearInterval(setIntervalId); - setIconsPanelScrollTop(); - }); - - $(annotationWidget).find('.comments_sidebar_expanded').toggle('slide', { direction: 'right' }, 400, - function () { - if (annotationIconsPanelVisible) - redrawLinesAndCalculateZoom(); - else - setIconsPanelScrollTop(); - - //window.setZoomWhenTogglePanel(); - }); - } - else - redrawLinesAndCalculateZoom(); - - $(annotationWidget).find('.comments_scroll').tinyscrollbar_update('relative'); - } - - $(window).resize(function () { - flipPanels(false); - resizeSidebar(); - }); - - resizeSidebar(); - - - function resizeSidebar() { - var containerHeight = $(annotationWidget).find(".doc_viewer").height(); - $(annotationWidget).find('.comments_content').css({ 'height': (containerHeight - 152) + 'px' }); - $(annotationWidget).find('.comments_scroll').css({ 'height': (containerHeight - 152) + 'px' }); - $(annotationWidget).find('.comments_scroll .viewport').css({ 'height': (containerHeight - 80) + 'px' }); - $(annotationWidget).find('.comments_sidebar_collapsed').css({ 'height': (containerHeight - 50) + 'px' }); - $(annotationWidget).find('.comments_scroll').tinyscrollbar_update('relative'); - } - - $('html').click(function () { - if ($(annotationWidget).find('.dropdown_menu_button').hasClass('active')) { - $(annotationWidget).find('.dropdown_menu_button.active').next('.dropdown_menu').hide('blind', 'fast'); - $(annotationWidget).find('.dropdown_menu_button.active').removeClass('active'); - } - }); - - // initialize keyboard shortcuts - if (Mousetrap) { - var baseMousetrapStopCallback = Mousetrap.stopCallback; - - Mousetrap.stopCallback = function (e, element, combo, sequence) { - if (annotationsViewerVM.tabNavigationEnabled !== true) { - return true; - } - - return false; - }; - - Mousetrap.bind(['command+z', 'ctrl+z'], function (e) { - annotationsViewerVM.undo(); - return false; - }); - - Mousetrap.bind(['shift+command+z', 'ctrl+y'], function (e) { - annotationsViewerVM.redo(); - return false; - }); - - Mousetrap.bind(['del'], function (e) { - var annotation = annotationsViewerVM.activeAnnotation(), - reply = (annotation ? annotation.getActiveReply() : null); - - if (annotation == null || (reply != null && reply.text().length > 0)) { - return true; - } - - annotationsViewerVM.removeAnnotation(annotation, e); - return false; - }); - - Mousetrap.bind('tab', function (e) { - if (annotationsViewerVM.tabNavigationEnabled !== true) - return true; - - annotationsViewerVM.activateNextAnnotation(); - return false; - }); - - Mousetrap.bind('shift+tab', function (e) { - if (annotationsViewerVM.tabNavigationEnabled !== true) - return true; - - annotationsViewerVM.activatePrevAnnotation(); - return false; - }); - } - - // initialize error modal dialog - window.jerror = function (msg, handler, title) { - $(annotationWidget).trigger("error.groupdocs", msg); - - if (annotationsViewerVM.enableStandardErrorHandling) { - var ttl = title || 'Error'; - - if (!msg) msg = 'Sorry, we\'re unable to perform your request right now. Please try again later.'; - - $('#jerrormodal h3').text(ttl); - $('#jerrormodalText').text(msg.Reason ? msg.Reason : msg); - - if (handler) { - $('#jerrormodal').one('hidden', handler); - } - - $('#jerrormodal').modal('show'); - } - } - - - if ($('#jerrormodal').length > 0) - return; - - $("
").appendTo('body'); - - $('#jerrormodal').modal({ show: false }); - -} \ No newline at end of file diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Scripts/AnnotationService.js b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Scripts/AnnotationService.js deleted file mode 100644 index 1529ac4..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Scripts/AnnotationService.js +++ /dev/null @@ -1,144 +0,0 @@ -$.extend(jSaaspose.PortalService.prototype, { - getReviewerContactsAsync: function (userId, privateKey, successCallback, errorCallback) { - }, - - listAnnotationsAsync: function (connectionId, userId, privateKey, fileId, successCallback, errorCallback) { - //alert("listAnnotationsAsync"); - var data = { connectionId: connectionId, userId: userId, privateKey: privateKey, fileId: fileId }; - return this._runServiceAsync(this.applicationPath + '/ListAnnotations' + this._urlSuffix, data, successCallback, errorCallback, false); - }, - - createAnnotationAsync: function (connectionId, userId, privateKey, fileId, type, message, pageNumber, rectangle, annotationPosition, svgPath, drawingOptions, font, successCallback, errorCallback) { - var data = { - connectionId: connectionId, userId: userId, privateKey: privateKey, fileId: fileId, type: type, message: (typeof message === 'undefined') ? '' : message, - pageNumber: pageNumber, rectangle: rectangle, annotationPosition: annotationPosition, svgPath: svgPath, - drawingOptions: (typeof drawingOptions === 'undefined') ? null : drawingOptions, font: (typeof font === 'undefined') ? null : font - }; - //alert("caling from service.js/CreateAnnotation connectionId: " + JSON.stringify(data)); - - return this._runServiceAsync(this.applicationPath + '/CreateAnnotation' + this._urlSuffix, data, successCallback, errorCallback, false); - }, - - deleteAnnotationAsync: function (connectionId, userId, privateKey, fileId, annotationGuid, successCallback, errorCallback) { - //alert("deleteAnnotationAsync"); - var data = { connectionId: connectionId, userId: userId, privateKey: privateKey, fileId: fileId, annotationGuid: annotationGuid, message: (typeof message === 'undefined') ? 'default' : message }; - return this._runServiceAsync(this.applicationPath + "/DeleteAnnotation" + this._urlSuffix, data, successCallback, errorCallback, false); - }, - - addAnnotationReplyAsync: function (connectionId, userId, privateKey, fileId, annotationGuid, message, parentReplyGuid, successCallback, errorCallback) { - //alert("addAnnotationReplyAsync: parentReplyGuid: " + parentReplyGuid); - var data = { - connectionId: connectionId, userId: userId, privateKey: privateKey, fileId: fileId, - annotationGuid: annotationGuid, message: (typeof message === 'undefined') ? 'default' : message, parentReplyGuid: (typeof parentReplyGuid === 'undefined') ? '' : parentReplyGuid - }; - return this._runServiceAsync(this.applicationPath + '/AddAnnotationReply' + this._urlSuffix, data, successCallback, errorCallback, false); - }, - - deleteAnnotationReplyAsync: function (connectionId, userId, privateKey, fileId, annotationGuid, replyGuid, successCallback, errorCallback) { - var data = { connectionId: connectionId, userId: userId, privateKey: privateKey, fileId: fileId, annotationGuid: annotationGuid, replyGuid: replyGuid }; - return this._runServiceAsync(this.applicationPath + "/DeleteAnnotationReply" + this._urlSuffix, data, successCallback, errorCallback, false); - }, - - editAnnotationReplyAsync: function (connectionId, userId, privateKey, fileId, annotationGuid, replyGuid, message, successCallback, errorCallback) { - var data = { - connectionId: connectionId, userId: userId, privateKey: privateKey, fileId: fileId, annotationGuid: annotationGuid, - replyGuid: replyGuid, message: (typeof message === 'undefined') ? 'default' : message - }; - return this._runServiceAsync(this.applicationPath + '/EditAnnotationReply' + this._urlSuffix, data, successCallback, errorCallback, false); - }, - - restoreAnnotationRepliesAsync: function (connectionId, fileId, annotationGuid, replies, successCallback, errorCallback) { - var data = { connectionId: connectionId, fileId: fileId, annotationGuid: annotationGuid, replies: replies }; - return this._runServiceAsync(this.applicationPath + '/RestoreAnnotationReplies' + this._urlSuffix, data, successCallback, errorCallback, false); - }, - - viewAnnotatedDocumentAsync: function (userId, privateKey, guid, index, count, width, height, quality, usePdf, watermark, successCallback, errorCallback, useCache) { - var data = { userId: userId, privateKey: privateKey, path: guid, width: width, quality: quality, usePdf: usePdf, preloadPagesCount: count, watermarkText: watermark.text, watermarkColor: watermark.color, watermarkPosition: watermark.position, watermarkFontSize: watermark.fontSize }; - data = { path: guid }; - ////alert("annotation service viewdocument" + this.applicationPath + '/ViewDocument' + this._urlSuffix); - this._runServiceAsync(this.applicationPath + this.urlPrefix + '/ViewDocument' + this._urlSuffix, data, successCallback, errorCallback, useCache != null ? useCache : true); - }, - - moveAnnotationMarkerAsync: function (connectionId, userId, privateKey, fileId, annotationGuid, left, top, pageNumber, successCallback, errorCallback) { - var data = { connectionId: connectionId, userId: userId, privateKey: privateKey, fileId: fileId, annotationGuid: annotationGuid, left: left, top: top, pageNumber: pageNumber }; - return this._runServiceAsync(this.applicationPath + "/MoveAnnotationMarker" + this._urlSuffix, data, successCallback, errorCallback, false); - }, - saveTextFieldAsync: function (connectionId, userId, privateKey, fileId, annotationGuid, text, fontFamily, fontSize, successCallback, errorCallback) { - var data = { - connectionId: connectionId, userId: userId, privateKey: privateKey, fileId: fileId, annotationGuid: annotationGuid, - text: text, fontFamily: fontFamily, fontSize: fontSize - }; - return this._runServiceAsync(this.applicationPath + "/SaveTextField" + this._urlSuffix, data, successCallback, errorCallback, false); - }, - - setTextFieldColorAsync: function (connectionId, userId, privateKey, fileId, annotationGuid, fontColor, successCallback, errorCallback) { - var data = { - connectionId: connectionId, userId: userId, privateKey: privateKey, fileId: fileId, annotationGuid: annotationGuid, - fontColor: fontColor - }; - return this._runServiceAsync(this.applicationPath + "/SetTextFieldColor" + this._urlSuffix, data, successCallback, errorCallback, false); - }, - - setAnnotationBackgroundColorAsync: function (connectionId, fileId, annotationGuid, color, successCallback, errorCallback) { - var data = { connectionId: connectionId, fileId: fileId, annotationGuid: annotationGuid, color: color }; - return this._runServiceAsync(this.applicationPath + "/SetAnnotationBackgroundColor" + this._urlSuffix, data, successCallback, errorCallback, false); - }, - - resizeAnnotationAsync: function (connectionId, userId, privateKey, fileId, annotationGuid, width, height, successCallback, errorCallback) { - var data = { - connectionId: connectionId, userId: userId, privateKey: privateKey, fileId: fileId, - annotationGuid: annotationGuid, width: width, height: height - }; - return this._runServiceAsync(this.applicationPath + "/ResizeAnnotation" + this._urlSuffix, data, successCallback, errorCallback, false); - }, - - exportAnnotationsAsync: function (connectionId, fileId, format, mode, successCallback, errorCallback) { - var data = { connectionId: connectionId, fileId: fileId, format: format, mode: mode }; - return this._runServiceAsync(this.applicationPath + "/ExportAnnotations" + this._urlSuffix, data, successCallback, errorCallback, false); - }, - - importAnnotationsAsync: function (userId, privateKey, connectionId, fileId, saveCurrentAnnotations, successCallback, errorCallback) { - var data = { connectionId: connectionId, fileGuid: fileId, userId: userId, privateKey: privateKey, saveCurrentAnnotations: saveCurrentAnnotations }; - return this._runServiceAsync(this.applicationPath + 'ImportAnnotations' + this._urlSuffix, data, successCallback, errorCallback, false); - }, - - getPdfVersionOfDocumentAsync: function (connectionId, fileId, successCallback, errorCallback) { - var data = { connectionId: connectionId, fileId: fileId }; - return this._runServiceAsync(this.applicationPath + "/GetPdfVersionOfDocument" + this._urlSuffix, data, successCallback, errorCallback, false); - }, - - addDocumentReviewerAsync: function (userId, privateKey, fileId, reviewerEmail, reviewerFirstName, reviewerLastName, - reviewerInvitationMessage, successCallback, errorCallback) { - var data = { - userId: userId, privateKey: privateKey, fileId: fileId, reviewerEmail: reviewerEmail, - reviewerFirstName: reviewerFirstName, reviewerLastName: reviewerLastName, - reviewerInvitationMessage: reviewerInvitationMessage - }; - return this._runServiceAsync(this.applicationPath + "/AddDocumentReviewer", data, successCallback, errorCallback, false); - }, - - getDocumentCollaboratorsAsync: function (userId, privateKey, fileId, successCallback, errorCallback) { - var data = { userId: userId, privateKey: privateKey, fileId: fileId }; - ////alert("appppppppppppppp: " + this.applicationPath + "/GetDocumentCollaborators" + this._urlSuffix); - ////alert("annotation service GetDocumentCollaborators"); - return this._runServiceAsync(this.applicationPath + "/GetDocumentCollaborators" + this._urlSuffix, data, successCallback, errorCallback, false); - }, - - getDocumentCollaboratorsSync: function (userId, privateKey, fileId) { - var r = null; - var data = { userId: userId, privateKey: privateKey, fileId: fileId }; - var successCallback = function (response) { r = response; }; - var errorCallback = function (response) { r = { error: response }; }; - - this._runService(this.applicationPath + "/GetDocumentCollaborators" + this._urlSuffix, data, false, successCallback, errorCallback, false); - return r; - }, - - setReviewerContactsAsync: function (userId, privateKey, reviewerContacts, successCallback, errorCallback) { - }, - - getFile: function (fileId, successCallback, errorCallback, useCache) { - var data = { fileId: fileId }; - successCallback({ fileId: fileId, url: this.applicationPath + this.urlPrefix + '/GetFile' + this._urlSuffix + '?path=' + fileId }); - } -}); \ No newline at end of file diff --git a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Scripts/AnnotationWidget.js b/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Scripts/AnnotationWidget.js deleted file mode 100644 index a3db916..0000000 --- a/Plugins/WebPart/GroupDocs_Annotation_SharePoint_WebPart/Layouts/GroupDocs_Annotation_SharePoint_WebPart/Scripts/AnnotationWidget.js +++ /dev/null @@ -1,1744 +0,0 @@ -ko.bindingHandlers.focused = { - init: function (element, valueAccessor, allBindingsAccessor, viewModel) { - $(element).focus(); - } -}; - -(function ($) { - var AnnotationTools = { - Text: 1, - Area: 2, - Point: 4, - TextStrikeout: 8, - Polyline: 16, - TextField: 32, - Watermark: 64, - TextReplacement: 128, - Arrow: 256, - TextRedaction: 512, - ResourcesRedaction: 1024, - TextUnderline: 2048, - Distance: 4096 - }; - - $.widget("ui.groupdocsAnnotation", $.ui.groupdocsViewer, { - _viewer: null, - _adapter: null, - _importerUploader: null, - viewerViewModel: null, - - options: { - enableViewerInit: false, - textSelectionSynchronousCalculation: true, - usePageNumberInUrlHash: false, - variableHeightPageSupport: true, - useJavaScriptDocumentDescription: true, - saveReplyOnFocusLoss: true, - createMarkup: true, - showSearch: true, - undoEnabled: true, - tooltipsEnabled: true, - textSelectionEnabled: false, - textSelectionByCharModeEnabled: false, - use_pdf: 'true', - _mode: 'annotatedDocument' - }, - - _create: function () { - this.options.showPaging &= this.options.showHeader; - this.options.showZoom &= this.options.showHeader; - this.options.showSearch &= this.options.showHeader; - - if (this.options.createMarkup) { - this._createMarkup(); - } - $.ui.groupdocsViewer.prototype._create.apply(this, arguments); - - var self = this; - this._viewer = this.element.find('.doc_viewer').groupdocsAnnotationViewer( - $.extend(this.options, { - graphicsContainerElement: self.element.find(self.options.graphicsContainerSelector), - selectionContent: self.element.find(self.options.selectionContainerSelector), - rightSideElement: self.element.find(self.options.sideboarContainerSelector), - exportingAnnotationsProgress: self.element.find('.export_annotations_modal'), - importingAnnotationsProgress: self.element.find('.importing_annotations_modal'), - element: self.element, - showHyperlinks: false, - storeAnnotationCoordinatesRelativeToPages: true, - baseAvatarUrl: self.applicationPath + 'GetAvatar' + (self.useHttpHandlers ? 'Handler' : '') + '?userId=', - imageHorizontalMargin: 0, - redactionToolOptions: { - pen: { width: 1, color: 0x333333, dashStyle: 0 }, - brush: { color: 0x333333 } - } - }) - ); - - var viewerViewModel = this.viewerViewModel = this._viewer.groupdocsAnnotationViewer('getViewModel'); - - this.getViewModel().viewerAdapter = this._adapter = viewerViewModel.viewerAdapter = new DocViewerAdapter({ - docSpaceCreator: function () { return self._viewer; }, - docSpaceViewModel: function () { return viewerViewModel; }, - navigation: (this.options.showPaging ? this.element.find(".navigation-bar") : null), - navigationOptions: { createHtml: true }, - zooming: (this.options.showZoom ? this.element.find('.zoom_wrappper') : null), - zoomingOptions: { createHtml: true }, - thumbnails: (this.options.showThumbnails ? this.element.find(".viewer_mainwrapper") : null), - thumbnailsOptions: { - createHtml: true /*, thumbnailWidth: thumbnailImageWidth*/, - _mode: 'webComponent' - }, - search: (this.options.showSearch ? this.element.find("[name='search_wrapper']") : null), - searchOptions: { createHtml: true, viewerElement: this.element.find('.doc_viewer'), searchIsVisible: this.options.showSearch, searchForSeparateWords: this.options.searchForSeparateWords } - }); - - if (!this.options.showPaging) { - $(this.element.find('.navigation-bar')).hide(); - } - - $("html").click(function () { - if (self._adapter.zoomViewModel) { - self._adapter.zoomViewModel.showDropDownMenu(false); - } - - viewerViewModel.exportMenuOpened(false); - }); - - var thumbsButton = this.element.find(".thumbs_btn"); - - thumbsButton.click(function () { - $(this).toggleClass("thumbs_btn_slide", 'slow'); - self.element.find(".thumbnailsContainer").toggle('slide', 'slow', function () { - if ($.browser.msie) { - thumbsButton.css("background-image", ""); - //setThumbsImage(); - } - }); - - return false; - }); - - this.element.find('.comments_sidebar_expanded').tabs({ - selected: 2, - show: false, - hide: false, - activate: function (event, ui) { - self.element.find('#comments_scroll').tinyscrollbar_update('relative'); - self.element.find('#comments_scroll_2').tinyscrollbar_update('relative'); - } - }); - - - this._viewer.bind('onTextSelected', function (e, pageNumber, bounds, position, length, selectionCounter, rects) { - switch (viewerViewModel.annotationModeObservable()) { - case Annotation.prototype.AnnotationType.TextReplacement: - viewerViewModel.createReplacementAnnotation(pageNumber, bounds, position, length, selectionCounter, rects); - break; - case Annotation.prototype.AnnotationType.TextRedaction: - viewerViewModel.createTextRedactionAnnotation(pageNumber, bounds, position, length, selectionCounter, rects); - break; - case Annotation.prototype.AnnotationType.TextUnderline: - viewerViewModel.createTextUnderline(pageNumber, bounds, position, length, selectionCounter, rects); - break; - case Annotation.prototype.AnnotationType.Text: - viewerViewModel.createTextAnnotation(pageNumber, bounds, position, length, selectionCounter, rects); - break; - } - }); - - this._viewer.bind('onTextToStrikeoutSelected', function (e, pageNumber, bounds, position, length, selectionCounter, rects) { - viewerViewModel.createTextStrikeout(pageNumber, bounds, position, length, selectionCounter, rects); - }); - - - this._viewer.bind('onRectangleSelected', function (e, pageNumber, bounds) { - switch (viewerViewModel.annotationModeObservable()) { - case Annotation.prototype.AnnotationType.Area: - viewerViewModel.createAreaAnnotation(pageNumber, bounds); - break; - case Annotation.prototype.AnnotationType.ResourcesRedaction: - viewerViewModel.createResourcesRedactionAnnotation(pageNumber, bounds); - break; - case Annotation.prototype.AnnotationType.TextField: - viewerViewModel.createTextField(pageNumber, bounds); - break; - case Annotation.prototype.AnnotationType.Watermark: - viewerViewModel.createWatermark(pageNumber, bounds); - break; - } - }); - - this._viewer.bind('onPointClicked', function (e, pageNumber, bounds) { - viewerViewModel.createPointAnnotation(pageNumber, bounds); - }); - - this._viewer.bind('onMouseMoveStarted', function (e, pageNumber, point) { - switch (viewerViewModel.annotationModeObservable()) { - case Annotation.prototype.AnnotationType.Arrow: - viewerViewModel.createGraphicsAnnotation(pageNumber, point); - break; - case Annotation.prototype.AnnotationType.Distance: - viewerViewModel.createDistanceAnnotation(pageNumber, point); - break; - default: - viewerViewModel.createPolylineAnnotation(pageNumber, point); - break; - } - }); - - if (this.options.showToolbar) - ko.applyBindings(viewerViewModel, $(this.element).find('div.embed_annotation_tools').get(0)); - - if (this.options.showHeader) { - ko.applyBindings(viewerViewModel, $(this.element).find('.tools_wrapper').get(0)); - ko.applyBindings(viewerViewModel, $(this.element).find('.undo-bar').get(0)); - } - - ko.applyBindings(viewerViewModel, $(this.element).find('.comments_sidebar_wrapper').get(0)); - ko.applyBindings(viewerViewModel, $(this.element).find("#addCollaboratorTab").get(0)); - ko.applyBindings(viewerViewModel, $(this.element).find(".viewer_alerts").get(0)); - - if (!this.options.showThumbnails) { - $(this.element).find(".thumbs_btn").hide(); - } - - if (this.options.openThumbnails) { - $(this.element).find(".thumbs_btn").addClass("thumbs_btn_slide"); - $(this.element).find(".thumbnailsContainer").css("display", "block"); - } - else { - $(this.element).find(".thumbnailsContainer").css("display", "none"); - } - - if (!this.options.enableRightClickMenu) { - $(this.element).get(0).oncontextmenu = function () { return false; } - } - - if (this.options.showFileExplorer) { - var fod = $(this.element).find(".fileOpenDialogWrapper").fileOpenDialog({ - hostUrl: $.ui.groupdocsViewer.prototype.applicationPath, - fileExplorer: $(this.element).find(".file_browser_content"), - fileUploader: $(this.element).find(".file_browser_toolbar"), - resourcePrefix: this.options.resourcePrefix, - urlHashEnabled: false - }); - fod.bind('fileSelected', function (e, metadata) { viewerViewModel.onFileSelected(metadata); $(fod).modal('hide') }); - $(fod).css({ 'display': 'none' }); - } - - // file uploader for annotations import - this._importerUploader = $(this.element).find('.import_file_uploader').uploader({ - userId: self.options.userId, - url: self.applicationPath, - proxy: 'UploadFile' + (this.useHttpHandlers ? 'Handler' : ''), - fld: 'Uploads', - multiple: true, - addFileBtn: $(this.element).find('.import_btn') - }); - - this._importerUploader.bind('onStart', function (e, id, fileName, fileSize) { - }); - - this._importerUploader.bind('onComplete', function (e, id, metadata) { - /// - /// s the specified e. - /// - /// The e. - /// The identifier. - /// The metadata. - /// - this.viewerViewModel.importDocumentAnnotations(metadata.fileId); - }.bind(this)); - - if (this.tooltipsEnabled) { - $('.wt-icon').click(expandAnnotationTooltip); - - $('.wt-close').click(function (e) { - e.preventDefault(); - $(this).parents('.wt-container').hide(); - - }); - - $('.icon-expand').click(function (e) { - e.preventDefault(); - $(this).parents('.overflowed').removeClass('overflowed'); - $('.scrollbar').customScrollbar(); - }); - } - - this.initControlsAndHandlers(); - }, - - _createMarkup: function () { - var groupdocsViewerWrapper = this._groupdocsViewerWrapperMarkup(); - - var viewerMarkup = this._viewerMarkup(); - viewerMarkup.appendTo(groupdocsViewerWrapper); - - if (this.options.showToolbar) - this._toolboxMarkup().appendTo(groupdocsViewerWrapper); - - this._localizeControl(this._sidebarMarkup()).appendTo(groupdocsViewerWrapper); - - this._modalsMarkup().appendTo(groupdocsViewerWrapper); - - groupdocsViewerWrapper.appendTo(this.element); - }, - - _localizeControl: function (control) { - - var sourceText = control[0].innerHTML; - - var pattern = new RegExp('(@)' + '(localize)' + '(\\()' + '((?:[a-z][a-z]+))' + '(\\))', ["i"]); - - var phraseMatch; - do { - phraseMatch = pattern.exec(sourceText); - - if (phraseMatch) { - var phrase = phraseMatch[0]; - var internalPattern = new RegExp('.*?' + '(?:[a-z][a-z]+)' + '.*?' + '((?:[a-z][a-z]+))', ["i"]); - var key = internalPattern.exec(phrase); - var localizedWord = this.options.localizedStrings != null ? (this.options.localizedStrings[key[1]] ? this.options.localizedStrings[key[1]] : key[1]) : key[1]; - if (localizedWord) { - sourceText = sourceText.replace(phrase, localizedWord); - control[0].innerHTML = sourceText; - } - } - - } while (phraseMatch) - - return control; - }, - - _groupdocsViewerWrapperMarkup: function () { - return $('
'); - }, - - _viewerMarkup: function () { - var html = ''; - - if (this.element.find('[name="selection-content"]').length == 0) - html += ' '; - - html += '' + - (this.options.showHeader ? this._toolbarMarkup() : '') + - - '
' + - '
' + - ' ' + - '
' + - - '
' + - '
' + - '
' + - (this.options.tooltipsEnabled ? this._tooltipMarkupt() : '') + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - ' ' + - ' ' + - ' ' + - //'
' + - ' ' + - ' ' + - ' ' + - ' ' + - '
' + - ' ' + - '

' + - ' ' + - '
' + - '
' + - ' ' + - ' ' + - ' ' + - ' ' + - this._textReplacementMarkup() + - this._watermarksMarkup() + - '
' + - ' ' + - '
' + - '
' + - '
' + - ' ' + - '

Loading your content...

' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - ' ' + - '
' + - ' ' + - '
' + - '
' + - ' ' + - '
'; - - return $($.trim(html)); - }, - - _toolbarMarkup: function () { - return '' + - '
' + - '
' + - - '
' + - '
' + - ' ' + - ' ' + - '
' + - ' ' + - ' ' + - '
' + - - ' ' + - '
' + - '
' + - '
' + - '
' + - ' ' + - ' ' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
'; - }, - - _toolboxMarkup: function () { - //alert("_toolboxMarkup"); - var html = '' + - '
' + - ' ' + - '
    ' + - '
  • ' + - ' ' + - '
  • '; - - if ((this.options.enabledTools & AnnotationTools.Text) == AnnotationTools.Text) { - html += - '
  • ' + - ' ' + - '
  • '; - } - - if ((this.options.enabledTools & AnnotationTools.Area) == AnnotationTools.Area) { - html += - '
  • ' + - ' ' + - '
  • '; - } - - if ((this.options.enabledTools & AnnotationTools.Point) == AnnotationTools.Point) { - html += - '
  • ' + - ' ' + - '
  • '; - } - - if ((this.options.enabledTools & AnnotationTools.TextStrikeout) == AnnotationTools.TextStrikeout) { - html += - '
  • ' + - ' ' + - '
  • '; - } - - if ((this.options.enabledTools & AnnotationTools.Polyline) == AnnotationTools.Polyline) { - html += - '
  • ' + - ' ' + - '
  • '; - } - - if ((this.options.enabledTools & AnnotationTools.TextField) == AnnotationTools.TextField) { - html += - '
  • ' + - ' ' + - '
  • '; - } - - if ((this.options.enabledTools & AnnotationTools.Watermark) == AnnotationTools.Watermark) { - html += - '
  • ' + - ' ' + - '
  • '; - } - - if ((this.options.enabledTools & AnnotationTools.TextReplacement) == AnnotationTools.TextReplacement) { - html += - '
  • ' + - ' ' + - '
  • '; - } - - if ((this.options.enabledTools & AnnotationTools.Arrow) == AnnotationTools.Arrow) { - html += - '
  • ' + - ' ' + - '
  • '; - } - - if ((this.options.enabledTools & AnnotationTools.TextRedaction) == AnnotationTools.TextRedaction) { - html += - '
  • ' + - ' ' + - '
  • '; - } - - if ((this.options.enabledTools & AnnotationTools.ResourcesRedaction) == AnnotationTools.ResourcesRedaction) { - html += - '
  • ' + - ' ' + - '
  • '; - } - - if ((this.options.enabledTools & AnnotationTools.TextUnderline) == AnnotationTools.TextUnderline) { - html += - '
  • ' + - ' ' + - '
  • '; - } - - if ((this.options.enabledTools & AnnotationTools.Distance) == AnnotationTools.Distance) { - html += - '
  • ' + - ' ' + - '
  • '; - } - - html += - '
' + - '
'; - - return $(html); - }, - - _sidebarMarkup: function () { - return $( - '
' + - ' ' + - - '
' + - ' ' + - '
' + - '
' + - ' ' + - '
' + - ' ' + - ' ' + - ' ' + - '
' + - ' ' + - '
' + - '
' + - '
' + - '
'); - }, - - _textfieldToolbarMarkup: function () { - return '' + - '' + - '
' + - ' ' + - ' Move ' + - ' ' + - '
' + - ' Select Color' + - ' ' + - ' ' + - ' ' + - '
' + - '
' + - ' Select Font' + - ' ' + - ' ' + - ' ' + - '
' + - '
' + - ' Select Font Size' + - ' ' + - ' ' + - ' ' + - '
' + - '
' + - ' Adjust Font Size' + - ' ' + - ' ' + - ' ' + - ' ' + - '
' + - '
' + - ' Delete' + - ' ' + - '
' + - '
'; - }, - - _textReplacementMarkup: function () { - return '' + - ' ' + - ' ' + - ' '; - - }, - _watermarksMarkup: function () { - return '' + - '' + - ' ' + - ' ' + - ' ' + - ''; - }, - - _modalsMarkup: function () { - return $( - '' + - - '' + - - - ''); - }, - - _tooltipMarkupt: function () { - return '' + - '' + - '
' + - '
' + - '
' + - '
' + - '
' + - ' ' + - '
'; - }, - - getViewer: function () { - return this._viewer; - }, - - activateAnnotation: function (annotation) { - this.viewerViewModel.activeAnnotation(annotation); - }, - - getAnnotationsObservable: function () { - return this.viewerViewModel.annotations; - }, - - getAnnotationsByPagesObservable: function () { - return this.viewerViewModel.annotationsByPagesObservable; - }, - - getActiveAnnotationObservable: function () { - return this.viewerViewModel.activeAnnotation; - }, - - getLastReplyColor: function (annotation) { - return this.viewerViewModel.getLastReplyColor(annotation); - }, - - getLastReplyText: function (annotation) { - return this.viewerViewModel.getLastReplyText(annotation); - }, - - deleteActiveAnnotation: function () { - this.viewerViewModel.deleteActiveAnnotation(); - }, - - commitReplyOfActiveAnnotation: function (replyIndex) { - var activeAnnotation = this.viewerViewModel.activeAnnotation(); - activeAnnotation.activeReply(replyIndex); - this.viewerViewModel.commitAnnotationReply(activeAnnotation); - }, - - deleteReply: function (annotationGuid, replyGuid) { - this.viewerViewModel.deleteAnnotationReply(annotationGuid, replyGuid); - }, - - getCurrentUserGuid: function () { - return this.viewerViewModel.userId; - }, - - addChildReply: function (annotation, parentReplyGuid) { - return this.viewerViewModel.addChildReply(annotation, parentReplyGuid); - }, - - setAnnotationMode: function (mode) { - switch (mode) { - case Annotation.prototype.AnnotationType.Text: - this.viewerViewModel.setTextAnnotationMode(); - break; - case Annotation.prototype.AnnotationType.Area: - this.viewerViewModel.setAreaAnnotationMode(); - break; - case Annotation.prototype.AnnotationType.Point: - this.viewerViewModel.setPointAnnotationMode(); - break; - case Annotation.prototype.AnnotationType.TextStrikeout: - case Annotation.prototype.AnnotationType.TextRemoval: - this.viewerViewModel.setStrikeoutTextMode(); - break; - case Annotation.prototype.AnnotationType.Polyline: - this.viewerViewModel.setPolylineAnnotationMode(); - break; - case Annotation.prototype.AnnotationType.TextField: - this.viewerViewModel.setTextFieldAnnotationMode(); - break; - case Annotation.prototype.AnnotationType.Watermark: - this.viewerViewModel.setWatermarkAnnotationMode(); - break; - case Annotation.prototype.AnnotationType.TextReplacement: - this.viewerViewModel.setReplacementAnnotationMode(); - break; - case Annotation.prototype.AnnotationType.Arrow: - this.viewerViewModel.setArrowAnnotationMode(); - break; - case Annotation.prototype.AnnotationType.TextRedaction: - this.viewerViewModel.setTextRedactionAnnotationMode(); - break; - case Annotation.prototype.AnnotationType.ResourcesRedaction: - this.viewerViewModel.setResourcesRedactionAnnotationMode(); - break; - default: - this.viewerViewModel.setHandToolMode(); - break; - } - }, - - exportAnnotations: function (format) { - this.viewerViewModel.exportAnnotationsTo(format); - }, - - importAnnotations: function (fileId) { - if (fileId) - this.viewerViewModel.importDocumentAnnotations(fileId); - else - this.viewerViewModel.importAnnotations(); - }, - - loadDocument: function (fileId) { - this.viewerViewModel.loadDocument(fileId); - }, - - initControlsAndHandlers: function () { - window.groupdocs.initAnnotationControlsAndHandlers(this.element, this._viewer, this.viewerViewModel); - } - }); - - - /* Widget viewer and view model */ - groupdocsAnnotationViewerModel = function (options) { - measurementAnnotationModel.prototype.constructor.apply(this, arguments); - }; - - $.extend(groupdocsAnnotationViewerModel.prototype, measurementAnnotationModel.prototype, { - getFile: function (fileId, callback, errorCallback) { - this._portalService.getFile(fileId, - function (response) { - //alert("$.extend(groupdocsAnnotationViewerModel.prototype, measurementAnnotationModel.prototype, { " + JSON.stringify(response)); - callback.apply(this, [response]); - }, - function (error) { - //alert("ERRRRRRRRor $.extend(groupdocsAnnotationViewerModel.prototype, measurementAnnotationModel.prototype, { " + JSON.stringify(error)); - errorCallback.apply(this, [error]); - }); - } - }); - - - - groupdocsAnnotationViewerViewModel = function (options) { - measurementAnnotationViewModel.prototype.constructor.apply(this, arguments); - }; - - $.extend(groupdocsAnnotationViewerViewModel.prototype, measurementAnnotationViewModel.prototype, { - annotationHub: null, - fileExplorerEnabled: ko.observable(false), - licensed: ko.observable(false), - annotationsByPages: null, - showHeader: false, - showZoom: false, - localizedStrings: null, - charSelection: false, - thumbsImageBase64Encoded: null, - undoEnabled: true, - exportMenuOpened: false, - - _create: function (options) { - var self = this; - - this._model = new groupdocsAnnotationViewerModel(options); - this._init(options); - - this.fileExplorerEnabled = ko.observable(options.showFileExplorer || false); - this.licensed = ko.observable(true); - this.annotationsByPages = { pageNumbers: ko.observableArray([]) }; - this.annotationsByPagesObservable = ko.observableArray(); - this.showHeader = options.showHeader; - this.showZoom = options.showZoom; - this.localizedStrings = options.localizedStrings; - //this.charSelection = option.charSelection; - //this.viewerViewModel.localizedStrings = options.localizedStrings; - this.undoEnabled = options.undoEnabled; - this.exportMenuOpened = ko.observable(false); - this.thumbsImageBase64Encoded = options.thumbsImageBase64Encoded; - this.licensed.subscribe(function (newValue) { - window.setTimeout(self.reInitCanvasOffset.bind(self), 100); - }); - - }, - - _init: function (options) { - measurementAnnotationViewModel.prototype._init.call(this, options); - - var self = this; - var prevAnnotations = []; - var oldAnnotationsPages = []; - var newAnnotationPages = []; - - var changedPages = {}; - var newPageToAnnot; - var oldPageToAnnot; - - var temporaryValue = []; - - var temporaryValueArr; - - this.annotations.subscribe(function (newValue) { - - var changes = $.grep(ko.utils.compareArrays(prevAnnotations, newValue), - function (x) { return (isNaN(x.moved) && (x.status == 'added' || x.status == 'deleted')); }); - prevAnnotations = newValue.slice(0); - - $.each(changes, function (index, valueArgs) { - var pageNumber = valueArgs.value.pageNumber; - var pageKey = 'page_' + pageNumber.toString(); - var pageAnnotations = self.annotationsByPages[pageKey]; - var indexTemporaryValueArr = -1; - temporaryValueArr = valueArgs.value; //valueArgs.slice() - - if (temporaryValue.length == 0) { - temporaryValue.push(temporaryValueArr); - } - else { - indexTemporaryValueArr = -1; - for (var elementArr = 0, lengthArrValue = temporaryValue.length; elementArr < lengthArrValue; elementArr++) { - if (temporaryValueArr.guid === temporaryValue[elementArr].guid) { - indexTemporaryValueArr = elementArr; - temporaryValue.splice(elementArr, 1); - temporaryValue.push(temporaryValueArr); - break; - } - } - - if (indexTemporaryValueArr == -1) { - temporaryValue.push(temporaryValueArr); - } - } - - if (!pageAnnotations) { - pageAnnotations = { page: pageNumber, annotations: ko.observableArray([]) }; - - self.annotationsByPages[pageKey] = pageAnnotations; - self.annotationsByPages.pageNumbers.push(pageNumber); - } - - changedPages[pageKey] = pageAnnotations; - - if (!self.annotationsByPagesObservable()[pageNumber]) { - self.annotationsByPagesObservable.valueWillMutate(); - self.annotationsByPagesObservable()[pageNumber] = ko.observableArray(); - self.annotationsByPagesObservable.valueHasMutated(); - } - - if (valueArgs.status == 'deleted') { - pageAnnotations.annotations.remove(valueArgs.value); - self.annotationsByPagesObservable()[pageNumber].remove(valueArgs.value); - - if (indexTemporaryValueArr != -1) temporaryValue.splice(indexTemporaryValueArr, 1); - - if (pageAnnotations.annotations().length == 0) { - self.annotationsByPages.pageNumbers.remove(pageNumber); - self.annotationsByPages[pageKey] = undefined; - } - } - else { - pageAnnotations.annotations.push(valueArgs.value); - self.annotationsByPagesObservable()[pageNumber].push(valueArgs.value); - } - - - }); - - $.each(newValue, function (index, valueNewValue) { - newAnnotationPages[index] = { guid: valueNewValue.guid, page: valueNewValue.pageNumber } - }); - if (newAnnotationPages.length > 0) { - var lastElementNewArray = newAnnotationPages.length - 1; - if (oldAnnotationsPages.length == 0) { - oldAnnotationsPages = newAnnotationPages.slice(); - } - else {//search the element in oldArray, if not found - add him - var searchTerm = newAnnotationPages[lastElementNewArray].guid, indexElement = -1; - for (var element = 0, len = oldAnnotationsPages.length; element < len; element++) { - if (oldAnnotationsPages[element].guid === searchTerm) { - indexElement = element; - break; - } - } - - if (indexElement == -1) { - oldAnnotationsPages.push(newAnnotationPages[lastElementNewArray]); - } - } - } - var movedAnnotationFromPage = []; - $.each(newAnnotationPages, function (index, valueMoved) { - for (var countOld = 0; countOld < oldAnnotationsPages.length; countOld++) { - if (valueMoved.guid == oldAnnotationsPages[countOld].guid) { - if (valueMoved.page == oldAnnotationsPages[countOld].page) { - continue; - } else { - var indexAnnotationPages = -1; - var indexTemporaryValue; - - for (var elementAnnotation = 0, lengthAnnotationValue = newAnnotationPages.length; elementAnnotation < lengthAnnotationValue; elementAnnotation++) { - if (valueMoved.guid === newAnnotationPages[elementAnnotation].guid) { - indexAnnotationPages = elementAnnotation; - break; - } - } - oldPageToAnnot = oldAnnotationsPages[countOld].page; - movedAnnotationFromPage = oldAnnotationsPages.slice(); - oldAnnotationsPages.splice(countOld, 1);// - newPageToAnnot = valueMoved.page; - oldAnnotationsPages.push(newAnnotationPages[indexAnnotationPages]); - - for (var count = 0; count < len; count++) { //with new page and delete old page - if (valueMoved.guid == movedAnnotationFromPage[count].guid) { - var pageOld = movedAnnotationFromPage[count].page; - var pageKeyOld = 'page_' + pageOld.toString(); - var pageNumberNew = newPageToAnnot; - var pageKeyNew = 'page_' + pageNumberNew.toString(); - - var pageAnnotationsUpd = self.annotationsByPages[pageKeyOld]; - var pageAnnotationsNew = self.annotationsByPages[pageKeyNew]; - - var indexElementTemporaryValue = -1; - for (var elementValue = 0, lengthTemporaryValue = temporaryValue.length; elementValue < lengthTemporaryValue; elementValue++) { - if (valueMoved.guid === temporaryValue[elementValue].guid) { - indexElementTemporaryValue = elementValue; - temporaryValue[elementValue].pageNumber = oldPageToAnnot; - break; - } - } - - pageAnnotationsUpd.annotations.remove(temporaryValue[indexElementTemporaryValue]); - self.annotationsByPagesObservable()[pageOld].remove(temporaryValue[indexElementTemporaryValue]); - - if (pageAnnotationsUpd.annotations().length == 0) { - self.annotationsByPages.pageNumbers.remove(pageOld); - self.annotationsByPages[pageKeyOld] = undefined; - } - - if (!pageAnnotationsNew) { - pageAnnotationsNew = { page: pageNumberNew, annotations: ko.observableArray([]) }; - - self.annotationsByPages[pageKeyNew] = pageAnnotationsNew; - self.annotationsByPages.pageNumbers.push(pageNumberNew); - } - changedPages[pageKeyNew] = pageAnnotationsNew; - - if (!self.annotationsByPagesObservable()[pageNumberNew]) { - self.annotationsByPagesObservable.valueWillMutate(); - self.annotationsByPagesObservable()[pageNumberNew] = ko.observableArray(); - self.annotationsByPagesObservable.valueHasMutated(); - } - - temporaryValue[indexElementTemporaryValue].pageNumber = pageNumberNew; - - pageAnnotationsNew.annotations.push(temporaryValue[indexElementTemporaryValue]); - self.annotationsByPagesObservable()[pageNumberNew].push(temporaryValue[indexElementTemporaryValue]); - - //movedAnnotationFromPage.splice(); - - break; - - } - } - movedAnnotationFromPage.splice(); - } - } - } - }); - - $.each(changedPages, function (i, p) { - p.annotations.sort(function (x, y) { - var diff = (x.bounds().top() - y.bounds().top()); - - return (diff == 0 ? 0 : - (diff > 0 ? 1 : -1)); - }); - }); - - self.annotationsByPages.pageNumbers.sort(); - }, this); - }, - - getLocalized: function (key) { - var localized = this.localizedStrings[key]; - return localized; - }, - - - - showExpandedCommentsPanel: function () { - if (this.enableSidePanel) { - this.element.find('.comments_sidebar_collapsed').hide(); - this.element.find('.comments_sidebar_expanded').show(); - this.element.find('.comments_sidebar_expanded').tabs('option', 'active', 1); - this.element.find('#comments_scroll').tinyscrollbar_update('relative'); - this.element.find('#comments_scroll_2').tinyscrollbar_update('relative'); - this.redrawConnectingLines(); - //window.setZoomWhenTogglePanel(); - } - }, - - expandAnnotationTooltip: function (e) { - $(e.target).siblings('.wt-container').show(); - $('.widget-tooltip .wt-comment').each(function () { - if (jGroupdocs.html.textWidth($(this).text(), "400 11px 'PT Sans', Helvetica, Arial, sans-serif") > $(this).width()) { - $(this).parent().addClass('overflowed'); - } - }); - $('.widget-tooltip .scrollbar').customScrollbar(); - - return false; - }, - - dropdownMenuClickHandler: function (target) { - var self = $(this); - - if (self.hasClass('active')) { - self.parent().find('.dropdown_menu').hide('blind', 'fast', function () { - self.removeClass('active'); - document.activeElement = self[0]; - }); - } - else { - self.parent().find('.dropdown_menu').show('blind', 'fast', function () { - self.addClass('active'); - }); - } - }, - - markerClickHandler: function (annotation) { - measurementAnnotationViewModel.prototype.markerClickHandler.call(this, annotation); - - if (this.clickableAnnotations) { - this.showExpandedCommentsPanel(); - } - }, - - toggleExportMenu: function (viewModel, event) { - this.exportMenuOpened(!this.exportMenuOpened()); - event.stopPropagation(); - }, - - getPageImageHorizontalOffset: function () { - var leftImageMargin = 17; - return leftImageMargin; - }, - - exportAnnotationsTo: function (format, mode) { - this.exportingAnnotationsProgress.modal("show"); - - this._model.exportAnnotations(this.fileId, format || 'Pdf', mode || Annotation.prototype.AnnotationExportMode.Append, - function (response) { - this._onAnnotationsExported(response); - }.bind(this), - function (error) { - this.exportingAnnotationsProgress.modal("hide"); - this._onError(error); - }.bind(this)); - }, - - getPdfVersionOfDocument: function () { - this.exportingAnnotationsProgress.modal("show"); - - this._model.getPdfVersionOfDocument(this.fileId, - function (response) { - this._onPdfVerionOfDocumentReceived(response); - }.bind(this), - function (error) { - this.exportingAnnotationsProgress.modal("hide"); - this._onError(error); - }.bind(this)); - }, - - downloadDocument: function () { - this._model.getFile(this.fileId, - function (response) { - this._onDocumentDownloaded(response); - }.bind(this), - function (error) { - this._onError(error); - }); - }, - - openFileExplorer: function () { - $(this.element).find(".fileOpenDialogWrapper").modal('show'); - }, - - onFileSelected: function (metadata) { - this.loadDocument(metadata.path); - }, - - undo: function () { - if (this._undoRedo) - this._undoRedo.undoAsync(); - }, - - redo: function () { - if (this._undoRedo) - this._undoRedo.redoAsync(); - }, - - _onDocumentLoaded: function (response) { - measurementAnnotationViewModel.prototype._onDocumentLoaded.apply(this, arguments); - //alert("AnnotationWidget.js INNER _onDocumentLoaded " + JSON.stringify(response)); - - this.licensed(response.lic === true); - //alert("AnnotationWidget.js response.lic: " + response.lic); - if (!response.lic && $(this.element).find(".licBanner").length == 0) { - $(this.element).find(".viewer_mainwrapper").addClass("viewer_mainwrapper_trial"); - - if (!this.showHeader) { - $(this.element).find(".viewer_mainwrapper").css("top", "32px"); - } - } - - if (this.showZoom) { - var zoomViewModel = this.viewerAdapter.zooming.zooming('getViewModel'); - zoomViewModel.setFitWidthZoom(this.getFitWidthZoom()); - zoomViewModel.setFitHeightZoom(this.getFitHeightZoom()); - } else { - $(".zoom_wrappper").css('display', 'none'); - } - var isChrome = false; //navigator.userAgent.toLowerCase().indexOf('chrome') > -1; - var urlParts = jGroupdocs.http.splitUrl($.ui.groupdocsViewer.prototype.applicationPath); - var baseUrl = urlParts.schema + '://' + urlParts.authority;// + (urlParts.path && urlParts.path != '/' ? '/' + urlParts.path : ''); - - - //alert("AnnotationWidget.js - [connection.annotationHub]: " + $.connection.annotationHub); - //this.showExpandedCommentsPanel(); - this.annotationHub = $.connection.annotationHub.client; - ////alert("1111111111 AnnotationWidget.js Before connection.annotationHub.client "); - this.annotationHub.createAnnotationOnClient = this._hubHandler._onAnnotationCreated.bind(this); - ////alert("222222222 AnnotationWidget.js Before connection.annotationHub.client "); - this.annotationHub.createReplyOnClient = this._hubHandler._onAnnotationReplyCreated.bind(this); - ////alert("3333333 AnnotationWidget.js Before connection.annotationHub.client "); - this.annotationHub.moveAnnotationOnClient = this._hubHandler._onAnnotationMoved.bind(this); - ////alert("4444444 AnnotationWidget.js Before connection.annotationHub.client "); - this.annotationHub.setReviewersColorsOnClient = this._hubHandler._onReviewerColorChanged.bind(this); - ////alert("5555555 AnnotationWidget.js Before connection.annotationHub.client "); - this.annotationHub.setReviewerRightsOnClient = this._hubHandler._onReviewerRightsChanged.bind(this); - ////alert("666666 AnnotationWidget.js Before connection.annotationHub.client "); - this.annotationHub.resizeAnnotationOnClient = this._hubHandler._onAnnotationResized.bind(this); - ////alert("7777 AnnotationWidget.js Before connection.annotationHub.client "); - this.annotationHub.setTextFieldColorOnClient = this._hubHandler._onTextFieldColorSet.bind(this); - ////alert("88888 AnnotationWidget.js Before connection.annotationHub.client "); - this.annotationHub.setAnnotationBackgroundColorOnClient = this._hubHandler._onAnnotationBackgroundColorSet.bind(this); - ////alert("99999 AnnotationWidget.js Before connection.annotationHub.client "); - this.annotationHub.deleteAnnotationOnClient = this._hubHandler._onAnnotationRemoved.bind(this); - ////alert("1010101010 AnnotationWidget.js Before connection.annotationHub.client "); - this.annotationHub.moveAnnotationMarkerOnClient = this._hubHandler._onAnnotationMarkerMoved.bind(this); - ////alert("1010000001111 AnnotationWidget.js Before connection.annotationHub.client "); - this.annotationHub.editAnnotationReplyOnClient = this._hubHandler._onAnnotationReplyEdited.bind(this); - ////alert("212122121 AnnotationWidget.js Before connection.annotationHub.client "); - this.annotationHub.deleteAnnotationReplyOnClient = this._hubHandler._onAnnotationReplyRemoved.bind(this); - ////alert("13313131133 AnnotationWidget.js Before connection.annotationHub.client "); - this.annotationHub.updateTextFieldOnClient = this._hubHandler._onTextFieldUpdated.bind(this); - ////alert("1414414114 AnnotationWidget.js Before connection.annotationHub.client "); - this.annotationHub.setAnnotationAccessOnClient = this._hubHandler._onAnnotationAccessChanged.bind(this); - //alert("151551111 AnnotationWidget.js Before connection.annotationHub.client "); - - - //myhubConnection.qs = { 'uid': this.userId }; - //myhubConnection.url = baseUrl + '/_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/signalr1_1_2/hubs'; - //myhubConnection.start({ jsonp: isChrome }).done(this._onConnectionEstablished.bind(this)).done(); - - - $.connection.hub.qs = { 'uid': this.userId }; - $.connection.hub.url = baseUrl + '/_layouts/15/GroupDocs_Annotation_SharePoint_WebPart/signalr1_1_2/hubs'; - $.connection.hub.start({ jsonp: isChrome }).done(this._onConnectionEstablished.bind(this)); - this._localizeElements(); - this._setThumbsImage(); - - localizedStrings = this.localizedStrings; - //alert("this.userId: " + this.userId); - //alert("AnnotationWidget.js AFTER ENDDDDDDDD connection.annotationHub.client "); - //alert("AnnotationWidget.js baseUrl + '/signalr1_1_2/hubs' " + baseUrl + '/signalr1_1_2/hubs'); - }, - - _localizeElements: function () { - var localizedStrings = this.localizedStrings; - if (localizedStrings != null) { - this.element.find("[data-localize],[data-localize-ph],[data-localize-tooltip]").each(function () { - var that = $(this); - var localizationKey = that.attr("data-localize"); - var localizationTextValue; - if (localizationKey) { - localizationTextValue = localizedStrings[localizationKey]; - that.text(localizationTextValue); - } else { - localizationKey = that.attr("data-localize-ph"); - if (localizationKey) { - localizationTextValue = localizedStrings[localizationKey]; - that.attr("placeholder", localizationTextValue); - } else { - localizationKey = that.attr("data-localize-tooltip"); - if (localizationKey) { - localizationTextValue = localizedStrings[localizationKey]; - that.attr("data-tooltip", localizationTextValue); - } - } - } - }); - } - }, - - _setThumbsImage: function () { - var thumbsButton = this.element.find(".thumbs_btn"); - - if (this.showThumbnails && this.thumbsImageBase64Encoded != null) { - thumbsButton.css("background-image", "url(data:image/png;base64," + this.thumbsImageBase64Encoded + ")") - .css("background-position", "0 0"); - } - }, - - _onAnnotationsImported: function (response) { - measurementAnnotationViewModel.prototype._onAnnotationsImported.apply(this, arguments); - this.loadDocument(response.fileId); - }, - - _onAnnotationsExported: function (response) { - this.exportingAnnotationsProgress.modal("hide"); - this._downloadFileAt(response.url); - }, - - _onAnnotationCreated: function (annotation, markerFigure) { - measurementAnnotationViewModel.prototype._onAnnotationCreated.call(this, annotation, markerFigure); - this.showExpandedCommentsPanel(); - }, - - _onPdfVerionOfDocumentReceived: function (response) { - this.exportingAnnotationsProgress.modal("hide"); - this._downloadFileAt(response.url); - }, - - _onDocumentDownloaded: function (response) { - this._downloadFileAt(response.url); - }, - - _downloadFileAt: function (url) { - var frameId = 'groupdocs-file-download', - downloader = $('#' + frameId); - - if (!downloader || downloader.length == 0) { - downloader = $('"); - printFrame = $("
"); - printFrame.attr("name", printFrameName); - //printFrame.appendTo(this.groupdocsViewerWrapper); - printFrame.appendTo(bodyElement); - } - else - printFrame.empty(); - - this.printImageElements.length = 0; - var pageCount = data.page_count; - - if (!data.lic && pageCount > 3) - pageCount = 3; - - var imgElement; - for (var pageNum = 0; pageNum < pageCount; pageNum++) { - imgElement = $("").appendTo(printFrame); - this.printImageElements.push(imgElement); - } - - if (!data.lic && groupdocsViewerWrapper.find(".licBanner").length == 0) { - viewerMainWrapper.addClass("viewer_mainwrapper_trial"); - //viewerMainWrapper.css("top", "94px"); - - this.licElement = $("
"); - this.licElement.addClass("banner_trial"); - if (!this.showHeader) - this.licElement.css("top", "0"); - - var unlicensedMessage = this._getLocalizedString("This viewer has been created using an unlicensed version of ", "UnlicensedViewer"); - this.licElement.html(unlicensedMessage + " GroupDocs Viewer for .NET "); - this.licElement.appendTo(groupdocsViewerWrapper); - - if (!this.showHeader) - viewerMainWrapper.css("top", this.licElement.height() + "px"); - this.resizeHandler(); - } - }, - - documentLoadCompleteHandler: function (data, groupdocsViewerWrapper, viewerMainWrapper) { - var self = this; - if (this.showImageWidth) { - //alert("Image width: " + data.page_size.Width); - } - - this.downloadUrl = data.url; - this.pdfDownloadUrl = data.pdfDownloadUrl; - this.pdfPrintUrl = data.pdfPrintUrl; - this.documentPath = data.guid; - var downloadButton = groupdocsViewerWrapper.find(".btn_download"); - var printButton = groupdocsViewerWrapper.find(".print_button"); - downloadButton.unbind(); - printButton.unbind(); - //var printFrame = this.groupdocsViewerWrapper.find("iframe[name=groupdocsPrintFrame]"); - //printFrame.remove(); - - downloadButton.bind({ - click: function () { - self._downloadDocument(); - return false; - } - }); - - //var printFrameLoaded = false; - printButton.bind({ - click: function () { - self._printDocument(); - return false; - } - }); - }, - - documentSinglePagedHandler: function (isDocumentSinglePaged, navigationWrapper) { - if (this.showPaging) { - if (isDocumentSinglePaged) - navigationWrapper.hide(); - else - navigationWrapper.show(); - } - }, - - _localizeElements: function () { - var self = this; - if (this.localizedStrings != null) { - self.element.find("[data-localize],[data-localize-ph],[data-localize-tooltip]").each(function () { - var that = $(this); - var localizationKey = that.attr("data-localize"); - var localizationTextValue; - if (localizationKey) { - localizationTextValue = self.localizedStrings[localizationKey]; - that.text(localizationTextValue); - } - else { - localizationKey = that.attr("data-localize-ph"); - if (localizationKey) { - localizationTextValue = self.localizedStrings[localizationKey]; - that.attr("placeholder", localizationTextValue); - } - else { - localizationKey = that.attr("data-localize-tooltip"); - if (localizationKey) { - localizationTextValue = self.localizedStrings[localizationKey]; - that.attr("data-tooltip", localizationTextValue); - } - } - } - }); - } - }, - - getScrollbarWidth: function () { - var scrollbarWidth = null; - - // Create the measurement node - var scrollDivJquery = $("
").css("width", "100px").css("height", "100px") - .css("overflow", "scroll").css("position", "absolute").css("top", "-9999px"); - var scrollDiv = scrollDivJquery[0]; - //scrollDiv.className = "scrollbar-measure"; - document.body.appendChild(scrollDiv); - - // Get the scrollbar width - scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; - - // Delete the DIV - document.body.removeChild(scrollDiv); - return scrollbarWidth; - }, - - resizeHandler: function () { - if (this.showHeader) { - var viewerHeaderNewHeight = this.viewerHeader.outerHeight(true); - - //if (viewerHeaderNewHeight != this.viewerHeaderHeight) { - var licElementHeight = 0; - if (this.licElement) { - licElementHeight = this.licElement.height(); - } - - if (viewerHeaderNewHeight != this.viewerMainWrapper.position().top - licElementHeight) { - var newTop = viewerHeaderNewHeight; - - if (this.licElement) { - this.licElement.css("top", newTop.toString() + "px"); - newTop += licElementHeight; - } - this.viewerMainWrapper.css("top", newTop.toString() + "px"); - //this.viewerHeaderHeight = viewerHeaderNewHeight; - if (this.viewMode == this.viewModes.BookMode) - this.viewerAdapter.docViewerPageFlipViewModel.reInitSelectable(); - else { - this.viewerAdapter.docViewerViewModel.reInitSelectable(); - } - //this.viewerAdapter.docViewerViewModel.reInitCanvasOffset(); - } - } - if (this.useInnerThumbnails) { - var thumbnailPanelWidth = 0; - var thumbnailsViewModel = this.viewerAdapter.thumbnailsViewModel; - if (thumbnailsViewModel) - thumbnailPanelWidth = thumbnailsViewModel.getThumbnailsPanelWidth(); - if (this.viewMode == this.viewModes.BookMode) - this.viewerAdapter.docViewerPageFlipViewModel.resizeViewerElement(thumbnailPanelWidth); - else - this.viewerAdapter.docViewerViewModel.resizeViewerElement(thumbnailPanelWidth); - } - else { - this.viewerAdapter.docViewerViewModel.loadImagesForVisiblePages(); - } - - this._setFitWidthAndHeightValues(); - }, - - resizeHandlerWithDelay: function () { - //if (this.browserIsInternetExplorer) { - if (this.resizeTimeoutId) - clearTimeout(this.resizeTimeoutId); - var self = this; - this.resizeTimeoutId = window.setTimeout(function () { - self.resizeHandler(); - }, 1000); - //} - }, - - setWidth: function (width) { - this.groupdocsViewerWrapper.width(width); - //this.loadImagesForVisiblePages(); - //this.loadImagesForVisiblePagesIe(); - this.resizeHandler(); - this.resizeHandlerWithDelay(); - }, - - setHeight: function (height) { - this.groupdocsViewerWrapper.height(height); - this.resizeHandler(); - this.resizeHandlerWithDelay(); - }, - - _showFileOpenDialog: function () { - var self = this; - this.fileOpenDialogWrapper.addClass("in"); - this.fileOpenDialogWrapper.show(); - - this.backdrop = $('