From a13d704fccbdb8962daf333673d2712e3d2b0056 Mon Sep 17 00:00:00 2001 From: Mauro Baso Date: Fri, 11 Jul 2025 22:18:11 +0200 Subject: [PATCH 1/2] Neon RaiseExceptions configuration parameter passthrough --- Source/Core/WiRL.Configuration.Neon.pas | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Source/Core/WiRL.Configuration.Neon.pas b/Source/Core/WiRL.Configuration.Neon.pas index bc3d0063..7d2e277d 100644 --- a/Source/Core/WiRL.Configuration.Neon.pas +++ b/Source/Core/WiRL.Configuration.Neon.pas @@ -30,6 +30,7 @@ interface function SetIgnoreFieldPrefix(AValue: Boolean): IWiRLConfigurationNeon; function SetUseUTCDate(AValue: Boolean): IWiRLConfigurationNeon; function SetPrettyPrint(AValue: Boolean): IWiRLConfigurationNeon; + function SetRaiseExceptions(AValue: Boolean): IWiRLConfigurationNeon; function AddSerializer(ASerializerClass: TCustomSerializerClass): IWiRLConfigurationNeon; function RemoveSerializer(ASerializerClass: TCustomSerializerClass): IWiRLConfigurationNeon; end; @@ -38,6 +39,7 @@ interface TWiRLConfigurationNeon = class(TWiRLConfiguration, IWiRLConfigurationNeon) private FPrettyPrint: Boolean; + FRaiseExceptions: Boolean; FIgnoreFieldPrefix: Boolean; FMemberCustomCase: TCaseFunc; FUseUTCDate: Boolean; @@ -62,6 +64,7 @@ TWiRLConfigurationNeon = class(TWiRLConfiguration, IWiRLConfigurationNeon) function SetIgnoreFieldPrefix(AValue: Boolean): IWiRLConfigurationNeon; function SetUseUTCDate(AValue: Boolean): IWiRLConfigurationNeon; function SetPrettyPrint(AValue: Boolean): IWiRLConfigurationNeon; + function SetRaiseExceptions(AValue: Boolean): IWiRLConfigurationNeon; function AddSerializer(ASerializerClass: TCustomSerializerClass): IWiRLConfigurationNeon; function RemoveSerializer(ASerializerClass: TCustomSerializerClass): IWiRLConfigurationNeon; @@ -76,6 +79,7 @@ TWiRLConfigurationNeon = class(TWiRLConfiguration, IWiRLConfigurationNeon) property Visibility: TNeonVisibility read FVisibility write FVisibility; property IgnoreFieldPrefix: Boolean read FIgnoreFieldPrefix write FIgnoreFieldPrefix; property UseUTCDate: Boolean read FUseUTCDate write FUseUTCDate; + property RaiseExceptions: Boolean read FRaiseExceptions write FRaiseExceptions; public property Serializers: TNeonSerializerRegistry read FSerializers write FSerializers; end; @@ -99,6 +103,7 @@ constructor TWiRLConfigurationNeon.Create; SetVisibility([mvPublic, mvPublished]); SetUseUTCDate(True); SetPrettyPrint(False); + SetRaiseExceptions(False); end; class function TWiRLConfigurationNeon.Default: IWiRLConfigurationNeon; @@ -150,6 +155,7 @@ function TWiRLConfigurationNeon.GetNeonConfig: INeonConfiguration; .SetIgnoreFieldPrefix(FIgnoreFieldPrefix) .SetUseUTCDate(FUseUTCDate) .SetPrettyPrint(FPrettyPrint) + .SetRaiseExceptions(FRaiseExceptions) .GetSerializers .RegisterSerializer(TGUIDSerializer) .RegisterSerializer(TStreamSerializer) @@ -204,6 +210,13 @@ function TWiRLConfigurationNeon.SetPrettyPrint(AValue: Boolean): IWiRLConfigurat Result := Self; end; +function TWiRLConfigurationNeon.SetRaiseExceptions( + AValue: Boolean): IWiRLConfigurationNeon; +begin + FRaiseExceptions := AValue; + Result := Self; +end; + function TWiRLConfigurationNeon.SetUseUTCDate(AValue: Boolean): IWiRLConfigurationNeon; begin FUseUTCDate := AValue; From c0354c0ccb0a65e255bfb0bd5637994401ce0fdf Mon Sep 17 00:00:00 2001 From: Mauro Baso Date: Tue, 4 Nov 2025 14:33:28 +0100 Subject: [PATCH 2/2] Merge branch 'delphi-blocks:master' into master --- .gitignore | 1 + Demos/01.HelloWorld/Demo.Entities.pas | 20 +- Demos/01.HelloWorld/DemoHelloWorld.dproj | 49 +- Demos/01.HelloWorld/DemoHelloWorldConsole.dpr | 5 + .../01.HelloWorld/DemoHelloWorldConsole.dproj | 13 +- .../DemoHelloWorldGroup.groupproj | 18 +- .../01.HelloWorld/DemoHelloWorldWebBroker.dpr | 23 + .../DemoHelloWorldWebBroker.dproj | 1136 ++++ .../01.HelloWorld/DemoHelloWorldWebBroker.res | Bin 0 -> 154876 bytes Demos/01.HelloWorld/FMXClientProject.dproj | 42 +- Demos/01.HelloWorld/Server.Forms.Main.dfm | 9 + Demos/01.HelloWorld/Server.Forms.Main.pas | 19 + .../Server.Forms.WebBrokerMain.dfm | 62 + .../Server.Forms.WebBrokerMain.pas | 93 + .../Server.Resources.HelloWorld.pas | 41 +- .../01.HelloWorld/Server.Resources.Params.pas | 16 +- .../01.HelloWorld/Server.WebModules.Main.dfm | 11 + .../01.HelloWorld/Server.WebModules.Main.pas | 92 + Demos/01.HelloWorld/www/core.html | 15 + Demos/01.HelloWorld/www/core.js | 112 + Demos/01.HelloWorld/www/database.html | 23 + Demos/01.HelloWorld/www/database.js | 7 + Demos/01.HelloWorld/www/index.html | 27 + Demos/01.HelloWorld/www/main.css | 35 + Demos/01.HelloWorld/www/main.js | 20 + Demos/01.HelloWorld/www/types.html | 14 + Demos/01.HelloWorld/www/types.js | 47 + Demos/18.OpenAPI/DemoOpenAPI.dproj | 35 +- Demos/18.OpenAPI/Server.Entities.Customer.pas | 11 +- Demos/18.OpenAPI/Server.Entities.pas | 6 +- Demos/18.OpenAPI/Server.Forms.Main.pas | 30 +- .../18.OpenAPI/Server.Resources.Customer.pas | 2 +- Demos/18.OpenAPI/Server.Resources.Demo.pas | 39 +- Demos/20.Exceptions/Server.Exceptions.pas | 17 +- Demos/20.Exceptions/Server.Forms.Main.dfm | 3 + Demos/20.Exceptions/Server.Forms.Main.pas | 14 +- Demos/20.Exceptions/Server.Resources.pas | 18 +- Libs/Neon | 2 +- Libs/OpenAPI | 2 +- Packages/10.0Seattle/WiRL.dpk | 3 +- Packages/10.0Seattle/WiRL.dproj | 1 + Packages/10.0Seattle/WiRLDesign.dpk | 3 +- Packages/10.0Seattle/WiRLDesign.dproj | 4 + Packages/10.1Berlin/WiRL.dpk | 3 +- Packages/10.1Berlin/WiRL.dproj | 1 + Packages/10.1Berlin/WiRLDesign.dpk | 3 +- Packages/10.1Berlin/WiRLDesign.dproj | 4 + Packages/10.2Tokyo/WiRL.dpk | 3 +- Packages/10.2Tokyo/WiRL.dproj | 1 + Packages/10.2Tokyo/WiRLDesign.dpk | 3 +- Packages/10.2Tokyo/WiRLDesign.dproj | 4 + Packages/10.3Rio/WiRL.dpk | 3 +- Packages/10.3Rio/WiRL.dproj | 1 + Packages/10.3Rio/WiRLDesign.dpk | 3 +- Packages/10.3Rio/WiRLDesign.dproj | 4 + Packages/10.4Sydney/WiRL.dpk | 3 +- Packages/10.4Sydney/WiRL.dproj | 1 + Packages/10.4Sydney/WiRLDesign.dpk | 3 +- Packages/10.4Sydney/WiRLDesign.dproj | 4 + Packages/11.0Alexandria/WiRL.dproj | 205 - Packages/11.0Alexandria/WiRLDesign.dpk | 69 - Packages/11.0Alexandria/WiRLDesign.dproj | 210 - .../{11.0Alexandria => 11AndLater}/WiRL.dpk | 2 + .../{12.0Athens => 11AndLater}/WiRL.dproj | 3 + .../{12.0Athens => 11AndLater}/WiRLDesign.dpk | 5 +- .../WiRLDesign.dproj | 5 + .../WiRLGroup.groupproj | 9 + Packages/12.0Athens/WiRL.dpk | 140 - Packages/12.0Athens/WiRLGroup.groupproj | 48 - Samples/PetStore/bin/README.md | 1 + .../PetStore/dist/OAS/Components.Headers.json | 21 + .../PetStore/dist/OAS/Components.Info.json | 15 + .../PetStore/dist/OAS/Components.Servers.json | 10 + Samples/PetStore/dist/OAS/TPetResource.json | 39 + Samples/PetStore/dist/UI/api-logo.png | Bin 0 -> 15207 bytes Samples/PetStore/dist/UI/drawing.svg | 317 + Samples/PetStore/dist/UI/favicon-16x16.png | Bin 0 -> 665 bytes Samples/PetStore/dist/UI/favicon-32x32.png | Bin 0 -> 628 bytes Samples/PetStore/dist/UI/index.css | 25 + Samples/PetStore/dist/UI/index.html | 58 + Samples/PetStore/dist/UI/oauth2-redirect.html | 6 + Samples/PetStore/dist/UI/oauth2-redirect.js | 1 + .../PetStore/dist/UI/swagger-initializer.js | 20 + Samples/PetStore/dist/UI/swagger-ui-bundle.js | 2 + .../dist/UI/swagger-ui-standalone-preset.js | 2 + Samples/PetStore/dist/UI/swagger-ui.css | 3 + Samples/PetStore/dist/UI/swagger-ui.js | 2 + Samples/PetStore/dist/XML/README.md | 1 + Samples/PetStore/lib/README.md | 1 + Samples/PetStore/source/PetStore.Entities.pas | 83 + .../PetStore/source/PetStore.Forms.Main.dfm | 90 + .../PetStore/source/PetStore.Forms.Main.pas | 208 + .../source/PetStore.Resources.OpenAPI.pas | 29 + .../PetStore/source/PetStore.Resources.pas | 378 ++ Samples/PetStore/source/PetStoreAPI.dpr | 32 + Samples/PetStore/source/PetStoreAPI.dproj | 1061 +++ Samples/PetStore/source/PetStoreAPI.res | Bin 0 -> 7172 bytes Samples/PetStore/source/PetstoreAPI.ico | Bin 0 -> 4604 bytes Source/Client/WiRL.Client.CustomResource.pas | 4 +- Source/Core/WiRL.Configuration.Errors.pas | 107 + Source/Core/WiRL.Configuration.Neon.pas | 33 +- Source/Core/WiRL.Configuration.OpenAPI.pas | 16 +- Source/Core/WiRL.Core.Application.Worker.pas | 25 +- Source/Core/WiRL.Core.Application.pas | 16 +- Source/Core/WiRL.Core.Attributes.pas | 30 +- Source/Core/WiRL.Core.Auth.Resource.pas | 4 +- Source/Core/WiRL.Core.Context.Server.pas | 14 +- Source/Core/WiRL.Core.Context.pas | 189 +- Source/Core/WiRL.Core.Exceptions.pas | 249 +- Source/Core/WiRL.Core.Injection.pas | 58 +- Source/Core/WiRL.Core.MessageBody.Default.pas | 95 +- Source/Core/WiRL.Core.Metadata.OASDoc.pas | 435 ++ Source/Core/WiRL.Core.Metadata.XMLDoc.pas | 87 +- Source/Core/WiRL.Core.Metadata.pas | 149 +- Source/Core/WiRL.Core.OpenAPI.Resource.pas | 8 +- Source/Core/WiRL.Core.OpenAPI.pas | 565 +- Source/Core/WiRL.Core.Register.pas | 5 +- Source/Core/WiRL.Engine.Core.pas | 6 +- Source/Core/WiRL.http.Accept.MediaType.pas | 4 +- Source/Core/WiRL.http.Core.pas | 12 + Source/Core/WiRL.http.Server.Indy.pas | 42 +- Source/Core/WiRL.http.Server.Interfaces.pas | 10 +- Source/Core/WiRL.http.Server.WebBroker.pas | 616 ++ Source/Core/WiRL.http.Server.pas | 44 +- Source/IDE Wizard/ServerMainFormSRC.txt | 10 +- Source/IDE Wizard/ServerResources.txt | 26 +- .../WiRL.Wizards.Dialogs.NewResource.dfm | 5152 +++++++++++++++ .../WiRL.Wizards.Dialogs.NewResource.pas | 72 + .../WiRL.Wizards.Dialogs.ServerProject.dfm | 5825 ++++++++++++++--- .../WiRL.Wizards.Dialogs.ServerProject.pas | 22 +- .../WiRL.Wizards.Modules.Classes.pas | 9 + .../WiRL.Wizards.Modules.MainForm.pas | 96 +- .../WiRL.Wizards.Modules.Resources.pas | 104 +- .../WiRL.Wizards.ProjectCreator.pas | 32 +- Source/IDE Wizard/WiRL.Wizards.Utils.pas | 367 +- Source/IDE Wizard/WiRL.Wizards.pas | 149 +- Source/IDE Wizard/WiRLServerProject.txt | 3 +- ...iRL.Tests.Framework.ContentNegotiation.pas | 25 +- .../WiRL.Tests.Framework.ContextInjection.pas | 20 +- .../WiRL.Tests.Framework.ConvertRequest.pas | 26 +- .../WiRL.Tests.Framework.ExceptionMapper.pas | 21 +- .../Source/WiRL.Tests.Framework.Filters.pas | 26 +- .../WiRL.Tests.Framework.GarbageCollector.pas | 12 +- .../WiRL.Tests.Framework.MessageBody.pas | 36 +- .../Source/WiRL.Tests.Framework.Request.pas | 13 +- .../Source/WiRL.Tests.Framework.Resources.pas | 41 +- .../WiRL.Tests.Framework.Validators.pas | 34 +- .../Mock/WiRL.Tests.Mock.ExceptionMapper.pas | 6 +- Tests/Mock/WiRL.Tests.Mock.Server.pas | 20 - 149 files changed, 17773 insertions(+), 2482 deletions(-) create mode 100644 Demos/01.HelloWorld/DemoHelloWorldWebBroker.dpr create mode 100644 Demos/01.HelloWorld/DemoHelloWorldWebBroker.dproj create mode 100644 Demos/01.HelloWorld/DemoHelloWorldWebBroker.res create mode 100644 Demos/01.HelloWorld/Server.Forms.WebBrokerMain.dfm create mode 100644 Demos/01.HelloWorld/Server.Forms.WebBrokerMain.pas create mode 100644 Demos/01.HelloWorld/Server.WebModules.Main.dfm create mode 100644 Demos/01.HelloWorld/Server.WebModules.Main.pas create mode 100644 Demos/01.HelloWorld/www/core.html create mode 100644 Demos/01.HelloWorld/www/core.js create mode 100644 Demos/01.HelloWorld/www/database.html create mode 100644 Demos/01.HelloWorld/www/database.js create mode 100644 Demos/01.HelloWorld/www/index.html create mode 100644 Demos/01.HelloWorld/www/main.css create mode 100644 Demos/01.HelloWorld/www/main.js create mode 100644 Demos/01.HelloWorld/www/types.html create mode 100644 Demos/01.HelloWorld/www/types.js delete mode 100644 Packages/11.0Alexandria/WiRL.dproj delete mode 100644 Packages/11.0Alexandria/WiRLDesign.dpk delete mode 100644 Packages/11.0Alexandria/WiRLDesign.dproj rename Packages/{11.0Alexandria => 11AndLater}/WiRL.dpk (97%) rename Packages/{12.0Athens => 11AndLater}/WiRL.dproj (97%) rename Packages/{12.0Athens => 11AndLater}/WiRLDesign.dpk (94%) rename Packages/{12.0Athens => 11AndLater}/WiRLDesign.dproj (97%) rename Packages/{11.0Alexandria => 11AndLater}/WiRLGroup.groupproj (87%) delete mode 100644 Packages/12.0Athens/WiRL.dpk delete mode 100644 Packages/12.0Athens/WiRLGroup.groupproj create mode 100644 Samples/PetStore/bin/README.md create mode 100644 Samples/PetStore/dist/OAS/Components.Headers.json create mode 100644 Samples/PetStore/dist/OAS/Components.Info.json create mode 100644 Samples/PetStore/dist/OAS/Components.Servers.json create mode 100644 Samples/PetStore/dist/OAS/TPetResource.json create mode 100644 Samples/PetStore/dist/UI/api-logo.png create mode 100644 Samples/PetStore/dist/UI/drawing.svg create mode 100644 Samples/PetStore/dist/UI/favicon-16x16.png create mode 100644 Samples/PetStore/dist/UI/favicon-32x32.png create mode 100644 Samples/PetStore/dist/UI/index.css create mode 100644 Samples/PetStore/dist/UI/index.html create mode 100644 Samples/PetStore/dist/UI/oauth2-redirect.html create mode 100644 Samples/PetStore/dist/UI/oauth2-redirect.js create mode 100644 Samples/PetStore/dist/UI/swagger-initializer.js create mode 100644 Samples/PetStore/dist/UI/swagger-ui-bundle.js create mode 100644 Samples/PetStore/dist/UI/swagger-ui-standalone-preset.js create mode 100644 Samples/PetStore/dist/UI/swagger-ui.css create mode 100644 Samples/PetStore/dist/UI/swagger-ui.js create mode 100644 Samples/PetStore/dist/XML/README.md create mode 100644 Samples/PetStore/lib/README.md create mode 100644 Samples/PetStore/source/PetStore.Entities.pas create mode 100644 Samples/PetStore/source/PetStore.Forms.Main.dfm create mode 100644 Samples/PetStore/source/PetStore.Forms.Main.pas create mode 100644 Samples/PetStore/source/PetStore.Resources.OpenAPI.pas create mode 100644 Samples/PetStore/source/PetStore.Resources.pas create mode 100644 Samples/PetStore/source/PetStoreAPI.dpr create mode 100644 Samples/PetStore/source/PetStoreAPI.dproj create mode 100644 Samples/PetStore/source/PetStoreAPI.res create mode 100644 Samples/PetStore/source/PetstoreAPI.ico create mode 100644 Source/Core/WiRL.Configuration.Errors.pas create mode 100644 Source/Core/WiRL.Core.Metadata.OASDoc.pas create mode 100644 Source/Core/WiRL.http.Server.WebBroker.pas create mode 100644 Source/IDE Wizard/WiRL.Wizards.Dialogs.NewResource.dfm create mode 100644 Source/IDE Wizard/WiRL.Wizards.Dialogs.NewResource.pas diff --git a/.gitignore b/.gitignore index 5c307dbd..6fabe7de 100644 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,4 @@ __recovery/ *.delphilsp.json *.tmp /Demos/22.WebStencilsDemo/data.db +/references \ No newline at end of file diff --git a/Demos/01.HelloWorld/Demo.Entities.pas b/Demos/01.HelloWorld/Demo.Entities.pas index 4181728a..5fc61489 100644 --- a/Demos/01.HelloWorld/Demo.Entities.pas +++ b/Demos/01.HelloWorld/Demo.Entities.pas @@ -66,8 +66,12 @@ TRecordParam = record TSimpleParam = class(TObject) private FValue: string; + FPrefix: string; public property Value: string read FValue write FValue; + property Prefix: string read FPrefix write FPrefix; + + function ToString: string; override; constructor Create(const AValue: string); end; @@ -77,9 +81,23 @@ implementation { TSimpleParam } constructor TSimpleParam.Create(const AValue: string); +var + LValueList: TArray; begin inherited Create; - FValue := AValue; + LValueList := AValue.Split(['.']); + if Length(LValueList) >= 2 then + begin + FPrefix := LValueList[0]; + FValue := LValueList[1]; + end + else + FValue := AValue; +end; + +function TSimpleParam.ToString: string; +begin + Result := Format('Prefix: [%s] - Value [%s]', [FPrefix, FValue]); end; end. diff --git a/Demos/01.HelloWorld/DemoHelloWorld.dproj b/Demos/01.HelloWorld/DemoHelloWorld.dproj index ecd949c4..c5a98847 100755 --- a/Demos/01.HelloWorld/DemoHelloWorld.dproj +++ b/Demos/01.HelloWorld/DemoHelloWorld.dproj @@ -7,9 +7,10 @@ Application VCL DCC32 - 20.1 + 20.3 1 Win32 + DemoHelloWorld true @@ -104,9 +105,9 @@ Debug - true 1033 - $(BDS)\bin\delphi_PROJECTICON.ico + none + true true @@ -173,22 +174,16 @@ - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components True False - + - - - DemoHelloWorld.exe - true - - 1 @@ -197,16 +192,6 @@ 0 - - - classes - 64 - - - classes - 64 - - res\xml @@ -217,12 +202,6 @@ 1 - - - library\lib\armeabi-v7a - 1 - - library\lib\armeabi @@ -315,6 +294,16 @@ 1 + + + res\values-v35 + 1 + + + res\values-v35 + 1 + + res\drawable-anydpi-v26 @@ -782,6 +771,9 @@ 1 + + 1 + @@ -1043,6 +1035,7 @@ + 12 diff --git a/Demos/01.HelloWorld/DemoHelloWorldConsole.dpr b/Demos/01.HelloWorld/DemoHelloWorldConsole.dpr index 97e43dc6..aba71b3e 100644 --- a/Demos/01.HelloWorld/DemoHelloWorldConsole.dpr +++ b/Demos/01.HelloWorld/DemoHelloWorldConsole.dpr @@ -19,6 +19,7 @@ uses WiRL.Console.Base, WiRL.Console.Factory, WiRL.Engine.REST, + WiRL.Engine.WebServer, WiRL.http.Server, WiRL.http.Server.Indy, Server.Resources.HelloWorld in 'Server.Resources.HelloWorld.pas', @@ -49,6 +50,10 @@ begin 'Server.Resources.Database.TDatabaseResource', 'Server.Resources.Params.TParametersResource']) ; + + AServer.AddEngine('/') + .SetEngineName('FileSystemEngine') + .SetRootFolder('..\..\www'); end ); try diff --git a/Demos/01.HelloWorld/DemoHelloWorldConsole.dproj b/Demos/01.HelloWorld/DemoHelloWorldConsole.dproj index 8bfb2f10..f9110a2a 100644 --- a/Demos/01.HelloWorld/DemoHelloWorldConsole.dproj +++ b/Demos/01.HelloWorld/DemoHelloWorldConsole.dproj @@ -7,7 +7,7 @@ 1 Console None - 20.2 + 20.3 Win32 DemoHelloWorldConsole @@ -107,7 +107,6 @@ - False True False @@ -241,6 +240,16 @@ 1 + + + res\values-v35 + 1 + + + res\values-v35 + 1 + + res\drawable-anydpi-v26 diff --git a/Demos/01.HelloWorld/DemoHelloWorldGroup.groupproj b/Demos/01.HelloWorld/DemoHelloWorldGroup.groupproj index e55ea612..4cc20992 100755 --- a/Demos/01.HelloWorld/DemoHelloWorldGroup.groupproj +++ b/Demos/01.HelloWorld/DemoHelloWorldGroup.groupproj @@ -9,6 +9,9 @@ + + + @@ -38,6 +41,15 @@ + + + + + + + + + @@ -48,13 +60,13 @@ - + - + - + diff --git a/Demos/01.HelloWorld/DemoHelloWorldWebBroker.dpr b/Demos/01.HelloWorld/DemoHelloWorldWebBroker.dpr new file mode 100644 index 00000000..adc8ec4a --- /dev/null +++ b/Demos/01.HelloWorld/DemoHelloWorldWebBroker.dpr @@ -0,0 +1,23 @@ +program DemoHelloWorldWebBroker; +{$APPTYPE GUI} + +uses + Vcl.Forms, + Web.WebReq, + IdHTTPWebBrokerBridge, + Server.Forms.WebBrokerMain in 'Server.Forms.WebBrokerMain.pas' {Form1}, + Server.WebModules.Main in 'Server.WebModules.Main.pas' {MainWebModule: TWebModule}, + Demo.Entities in 'Demo.Entities.pas', + Server.Resources.Database in 'Server.Resources.Database.pas', + Server.Resources.HelloWorld in 'Server.Resources.HelloWorld.pas', + Server.Resources.Params in 'Server.Resources.Params.pas'; + +{$R *.res} + +begin + if WebRequestHandler <> nil then + WebRequestHandler.WebModuleClass := WebModuleClass; + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/Demos/01.HelloWorld/DemoHelloWorldWebBroker.dproj b/Demos/01.HelloWorld/DemoHelloWorldWebBroker.dproj new file mode 100644 index 00000000..145d36c3 --- /dev/null +++ b/Demos/01.HelloWorld/DemoHelloWorldWebBroker.dproj @@ -0,0 +1,1136 @@ + + + {E55EE676-8E6B-4B55-B7E0-0497D9840F17} + 20.3 + VCL + True + Debug + Win32 + DemoHelloWorldWebBroker + 3 + Application + DemoHelloWorldWebBroker.dpr + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + .\$(Platform)\$(Config) + .\$(Platform)\$(Config) + false + false + false + false + false + System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) + $(BDS)\bin\delphi_PROJECTICON.ico + $(BDS)\bin\delphi_PROJECTICNS.icns + DemoHelloWorldWebBroker + ../../Source/Core;../../Source/Data;../../Source/Data/FireDAC;../../Libs/Neon/Source;../../Libs/JWT/Source/Common;../../Libs/JWT/Source/JOSE;../../Source/Extensions;$(DCC_UnitSearchPath) + 1040 + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + + + JvNet;EasyReST.Core;vclwinx;DataSnapServer;fmx;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;appanalytics;IndyProtocols;vclx;Skia.Package.RTL;dbxcds;vcledge;rbUSERDesign2329;FmxTeeUI;DBXFirebirdDriver;dacvcl290;JvAppFrm;FireDACSqliteDriver;DbxClientDriver;JclVcl;soapmidas;TeeUI;Jcl;dbexpress;JvManagedThreads;vquery290;inet;vcltouch;JvDB;FireDACDBXDriver;fmxdae;JvCustom;CustomIPTransport;FireDACMSSQLDriver;JvSystem;rbTC2329;JvControls;JvCrypt;JvJans;JvMM;IndySystem;JvGlobus;ibxbindings;JclContainers;JvPageComps;vclFireDAC;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;EasyLib.Core;bindcompdbx;rtl;FireDACMySQLDriver;DBXSqliteDriver;DBXSybaseASEDriver;JvRuntimeDesign;JvXPCtrls;vclimg;DataSnapFireDAC;unidacfmx290;inetdbxpress;FireDAC;JvDocking;JvDlgs;xmlrtl;ibxpress;dsnap;JvCmp;FireDACDb2Driver;DBXOracleDriver;DBXInformixDriver;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;StyleControls_d12Athens;DatasnapConnectorsFreePascal;ibdacvcl290;SVGIconImageList;emshosting;EasyLib.Xforms;SVGIconImageListRestClient;FireDACCommonDriver;IndyIPClient;rbIDE2329;bindcompvclwinx;rbUSER2329;emsedge;bindcompfmx;crcontrols290;JvBands;inetdb;ibmonitor;FireDACASADriver;Tee;SVGIconImageListFMX;vclactnband;fmxFireDAC;FireDACInfxDriver;DBXMySQLDriver;VclSmp;DataSnapCommon;JvPascalInterpreter;fmxase;JvPluginSystem;DBXOdbcDriver;JvTimeFramework;dbrtl;FireDACOracleDriver;Skia.Package.FMX;TeeDB;FireDACMSAccDriver;DataSnapIndy10ServerTransport;JclDeveloperTools;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;rbCloudSC2329;FireDACMongoDBDriver;JvWizards;EasyLib.StyleUI;FireDACTDataDriver;Skia.Package.VCL;vcldb;VCLXDBGrid290;JvCore;unidacvcl290;dacfmx290;bindcomp;inetstn;IndyCore;RESTBackendComponents;rbTCUI2329;rbRCL2329;FireDACADSDriver;ibdac290;RESTComponents;IndyIPServer;vcl;dsnapxml;adortl;dsnapcon;DataSnapClient;DataSnapProviderClient;JvDotNetCtrls;JvHMI;dac290;DBXDb2Driver;ibdacfmx290;emsclientfiredac;FireDACPgDriver;FireDACDSDriver;JvPrintPreview;tethering;JvStdCtrls;bindcompvcl;CloudService;DBXSybaseASADriver;FMXTee;soaprtl;unidac290;rbBDE2329;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + $(BDS)\bin\default_app.manifest + + + vclwinx;DataSnapServer;fmx;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;appanalytics;IndyProtocols;vclx;dbxcds;vcledge;rbUSERDesign2329;FmxTeeUI;DBXFirebirdDriver;FireDACSqliteDriver;DbxClientDriver;soapmidas;TeeUI;dbexpress;inet;vcltouch;FireDACDBXDriver;fmxdae;CustomIPTransport;FireDACMSSQLDriver;IndySystem;ibxbindings;vclFireDAC;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;bindcompdbx;rtl;FireDACMySQLDriver;DBXSqliteDriver;DBXSybaseASEDriver;vclimg;DataSnapFireDAC;inetdbxpress;FireDAC;xmlrtl;ibxpress;dsnap;FireDACDb2Driver;DBXOracleDriver;DBXInformixDriver;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;StyleControls_d12Athens;DatasnapConnectorsFreePascal;SVGIconImageList;emshosting;SVGIconImageListRestClient;FireDACCommonDriver;IndyIPClient;rbIDE2329;bindcompvclwinx;rbUSER2329;emsedge;bindcompfmx;inetdb;ibmonitor;FireDACASADriver;Tee;SVGIconImageListFMX;vclactnband;fmxFireDAC;FireDACInfxDriver;DBXMySQLDriver;VclSmp;DataSnapCommon;fmxase;DBXOdbcDriver;dbrtl;FireDACOracleDriver;TeeDB;FireDACMSAccDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;rbCloudSC2329;FireDACMongoDBDriver;FireDACTDataDriver;Skia.Package.VCL;vcldb;bindcomp;inetstn;IndyCore;RESTBackendComponents;rbRCL2329;FireDACADSDriver;RESTComponents;IndyIPServer;vcl;dsnapxml;adortl;dsnapcon;DataSnapClient;DataSnapProviderClient;DBXDb2Driver;emsclientfiredac;FireDACPgDriver;FireDACDSDriver;tethering;bindcompvcl;CloudService;DBXSybaseASADriver;FMXTee;soaprtl;rbBDE2329;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + $(BDS)\bin\default_app.manifest + + + DEBUG;$(DCC_Define) + true + false + true + true + true + true + true + + + false + PerMonitorV2 + true + 1033 + + + PerMonitorV2 + + + false + RELEASE;$(DCC_Define) + 0 + 0 + + + PerMonitorV2 + + + PerMonitorV2 + + + + MainSource + + +
Form1
+ dfm +
+ +
MainWebModule
+ dfm + TWebModule +
+ + + + + + Base + + + Cfg_1 + Base + + + Cfg_2 + Base + +
+ + Delphi.Personality.12 + Application + + + + DemoHelloWorldWebBroker.dpr + + + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + + + + DemoHelloWorldWebBroker.exe + true + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + res\xml + 1 + + + res\xml + 1 + + + + + library\lib\armeabi + 1 + + + library\lib\armeabi + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + library\lib\mips + 1 + + + library\lib\mips + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v21 + 1 + + + res\drawable-anydpi-v21 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-v21 + 1 + + + res\values-v21 + 1 + + + + + res\values-v31 + 1 + + + res\values-v31 + 1 + + + + + res\values-v35 + 1 + + + res\values-v35 + 1 + + + + + res\drawable-anydpi-v26 + 1 + + + res\drawable-anydpi-v26 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v33 + 1 + + + res\drawable-anydpi-v33 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-night-v21 + 1 + + + res\values-night-v21 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-ldpi + 1 + + + res\drawable-ldpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-small + 1 + + + res\drawable-small + 1 + + + + + res\drawable-normal + 1 + + + res\drawable-normal + 1 + + + + + res\drawable-large + 1 + + + res\drawable-large + 1 + + + + + res\drawable-xlarge + 1 + + + res\drawable-xlarge + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\drawable-anydpi-v24 + 1 + + + res\drawable-anydpi-v24 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-night-anydpi-v21 + 1 + + + res\drawable-night-anydpi-v21 + 1 + + + + + res\drawable-anydpi-v31 + 1 + + + res\drawable-anydpi-v31 + 1 + + + + + res\drawable-night-anydpi-v31 + 1 + + + res\drawable-night-anydpi-v31 + 1 + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + 0 + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .dll;.bpl + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .bpl + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + 0 + + + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + Contents + 1 + + + Contents + 1 + + + Contents + 1 + + + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + library\lib\armeabi-v7a + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen + 64 + + + ..\$(PROJECTNAME).launchscreen + 64 + + + + + 1 + + + 1 + + + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + + + + + + + + + + + + + True + True + + + 12 + + + + +
diff --git a/Demos/01.HelloWorld/DemoHelloWorldWebBroker.res b/Demos/01.HelloWorld/DemoHelloWorldWebBroker.res new file mode 100644 index 0000000000000000000000000000000000000000..d4fa6dc0af2edf97ac7df8a28a0eb5a4139ac3b1 GIT binary patch literal 154876 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 z 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

2n&}XTyYeB3JL7!0 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 literal 0 HcmV?d00001 diff --git a/Demos/01.HelloWorld/FMXClientProject.dproj b/Demos/01.HelloWorld/FMXClientProject.dproj index 755fdf28..a2139a60 100755 --- a/Demos/01.HelloWorld/FMXClientProject.dproj +++ b/Demos/01.HelloWorld/FMXClientProject.dproj @@ -1,7 +1,7 @@  {D615A55E-A6D1-4E41-A02C-EEF2535D636A} - 20.1 + 20.3 FMX FMXClientProject.dpr True @@ -9,6 +9,7 @@ Win32 1 Application + FMXClientProject true @@ -172,7 +173,7 @@ Microsoft Office XP Sample Automation Server Wrapper Components - + @@ -192,12 +193,7 @@ - - - FMXClientProject.exe - true - - + 1 @@ -210,16 +206,6 @@ 0 - - - classes - 64 - - - classes - 64 - - res\xml @@ -230,12 +216,6 @@ 1 - - - library\lib\armeabi-v7a - 1 - - library\lib\armeabi @@ -328,6 +308,16 @@ 1 + + + res\values-v35 + 1 + + + res\values-v35 + 1 + + res\drawable-anydpi-v26 @@ -858,6 +848,9 @@ 1 + + 1 + @@ -1151,6 +1144,7 @@ + True diff --git a/Demos/01.HelloWorld/Server.Forms.Main.dfm b/Demos/01.HelloWorld/Server.Forms.Main.dfm index 1922425b..dbd38435 100755 --- a/Demos/01.HelloWorld/Server.Forms.Main.dfm +++ b/Demos/01.HelloWorld/Server.Forms.Main.dfm @@ -52,6 +52,15 @@ object MainForm: TMainForm TabOrder = 2 Text = '8080' end + object ButtonOpenBrowser: TButton + Left = 200 + Top = 41 + Width = 107 + Height = 25 + Caption = 'Open Browser' + TabOrder = 3 + OnClick = ButtonOpenBrowserClick + end end object MainActionList: TActionList Left = 104 diff --git a/Demos/01.HelloWorld/Server.Forms.Main.pas b/Demos/01.HelloWorld/Server.Forms.Main.pas index 593530c2..401d0456 100755 --- a/Demos/01.HelloWorld/Server.Forms.Main.pas +++ b/Demos/01.HelloWorld/Server.Forms.Main.pas @@ -20,6 +20,7 @@ interface WiRL.Configuration.Converter, WiRL.Core.Converter, WiRL.Engine.REST, + WiRL.Engine.WebServer, WiRL.http.Server, WiRL.http.Server.Indy; @@ -33,12 +34,14 @@ TMainForm = class(TForm) StopServerAction: TAction; PortNumberEdit: TEdit; Label1: TLabel; + ButtonOpenBrowser: TButton; procedure StartServerActionExecute(Sender: TObject); procedure StartServerActionUpdate(Sender: TObject); procedure StopServerActionExecute(Sender: TObject); procedure StopServerActionUpdate(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure ButtonOpenBrowserClick(Sender: TObject); private RESTServer: TWiRLServer; public @@ -50,8 +53,20 @@ TMainForm = class(TForm) implementation +uses + WinApi.Windows, Winapi.ShellApi; + {$R *.dfm} +procedure TMainForm.ButtonOpenBrowserClick(Sender: TObject); +var + LURL: string; +begin + StartServerAction.Execute; + LURL := Format('http://localhost:%s/', [PortNumberEdit.Text]); + ShellExecute(0, nil, PChar(LURL), nil, nil, SW_SHOWNOACTIVATE); +end; + procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction); begin StopServerAction.Execute; @@ -76,6 +91,10 @@ procedure TMainForm.FormCreate(Sender: TObject); .SetVisibility([mvPublic, mvPublished]) .SetMemberCase(TNeonCase.PascalCase); + RESTServer.AddEngine('/') + .SetEngineName('FileSystemEngine') + .SetRootFolder('..\..\www'); + StartServerAction.Execute; end; diff --git a/Demos/01.HelloWorld/Server.Forms.WebBrokerMain.dfm b/Demos/01.HelloWorld/Server.Forms.WebBrokerMain.dfm new file mode 100644 index 00000000..afaeea10 --- /dev/null +++ b/Demos/01.HelloWorld/Server.Forms.WebBrokerMain.dfm @@ -0,0 +1,62 @@ +object Form1: TForm1 + Left = 271 + Top = 114 + Caption = 'Form1' + ClientHeight = 235 + ClientWidth = 399 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OnCreate = FormCreate + TextHeight = 13 + object Label1: TLabel + Left = 24 + Top = 48 + Width = 20 + Height = 13 + Caption = 'Port' + end + object ButtonStart: TButton + Left = 24 + Top = 8 + Width = 75 + Height = 25 + Caption = 'Start' + TabOrder = 0 + OnClick = ButtonStartClick + end + object ButtonStop: TButton + Left = 105 + Top = 8 + Width = 75 + Height = 25 + Caption = 'Stop' + TabOrder = 1 + OnClick = ButtonStopClick + end + object EditPort: TEdit + Left = 24 + Top = 67 + Width = 121 + Height = 21 + TabOrder = 2 + Text = '8080' + end + object ButtonOpenBrowser: TButton + Left = 24 + Top = 112 + Width = 107 + Height = 25 + Caption = 'Open Browser' + TabOrder = 3 + OnClick = ButtonOpenBrowserClick + end + object ApplicationEvents1: TApplicationEvents + OnIdle = ApplicationEvents1Idle + Left = 288 + Top = 24 + end +end diff --git a/Demos/01.HelloWorld/Server.Forms.WebBrokerMain.pas b/Demos/01.HelloWorld/Server.Forms.WebBrokerMain.pas new file mode 100644 index 00000000..eb7f678e --- /dev/null +++ b/Demos/01.HelloWorld/Server.Forms.WebBrokerMain.pas @@ -0,0 +1,93 @@ +unit Server.Forms.WebBrokerMain; + +interface + +uses + Winapi.Messages, System.SysUtils, System.Variants, + System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, + Vcl.AppEvnts, Vcl.StdCtrls, IdHTTPWebBrokerBridge, IdGlobal, Web.HTTPApp; + +type + TForm1 = class(TForm) + ButtonStart: TButton; + ButtonStop: TButton; + EditPort: TEdit; + Label1: TLabel; + ApplicationEvents1: TApplicationEvents; + ButtonOpenBrowser: TButton; + procedure FormCreate(Sender: TObject); + procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); + procedure ButtonStartClick(Sender: TObject); + procedure ButtonStopClick(Sender: TObject); + procedure ButtonOpenBrowserClick(Sender: TObject); + private + FServer: TIdHTTPWebBrokerBridge; + procedure StartServer; + { Private declarations } + public + { Public declarations } + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +uses +{$IFDEF MSWINDOWS} + WinApi.Windows, Winapi.ShellApi, +{$ENDIF} + System.Generics.Collections; + +procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); +begin + ButtonStart.Enabled := not FServer.Active; + ButtonStop.Enabled := FServer.Active; + EditPort.Enabled := not FServer.Active; +end; + +procedure TForm1.ButtonOpenBrowserClick(Sender: TObject); +{$IFDEF MSWINDOWS} +var + LURL: string; +{$ENDIF} +begin + StartServer; +{$IFDEF MSWINDOWS} + LURL := Format('http://localhost:%s/', [EditPort.Text]); + ShellExecute(0, + nil, + PChar(LURL), nil, nil, SW_SHOWNOACTIVATE); +{$ENDIF} +end; + +procedure TForm1.ButtonStartClick(Sender: TObject); +begin + StartServer; +end; + +procedure TForm1.ButtonStopClick(Sender: TObject); +begin + FServer.Active := False; + FServer.Bindings.Clear; +end; + +procedure TForm1.FormCreate(Sender: TObject); +begin + FServer := TIdHTTPWebBrokerBridge.Create(Self); + StartServer; +end; + +procedure TForm1.StartServer; +begin + if not FServer.Active then + begin + FServer.Bindings.Clear; + FServer.DefaultPort := StrToInt(EditPort.Text); + FServer.Active := True; + end; +end; + +end. diff --git a/Demos/01.HelloWorld/Server.Resources.HelloWorld.pas b/Demos/01.HelloWorld/Server.Resources.HelloWorld.pas index f75408af..7caaf61d 100644 --- a/Demos/01.HelloWorld/Server.Resources.HelloWorld.pas +++ b/Demos/01.HelloWorld/Server.Resources.HelloWorld.pas @@ -115,6 +115,32 @@ implementation System.DateUtils, System.StrUtils, System.IOUtils, WiRL.http.Accept.Language; +function DumpStream(AStream: TStream; AMaxSize: Integer = -1): string; +var + LBuffer: TBytes; + LByte: Byte; + LLen: Integer; +begin + // Exit if the stream is empty + if AMaxSize.Size = 0 then + Exit(''); + + // If specified read only the first 'AMaxSize' bytes + if (AMaxSize > 0) and (AStream.Size > AMaxSize) then + LLen := AMaxSize + else + LLen := AStream.Size; + + SetLength(LBuffer, LLen); + AStream.Read(LBuffer[0], LLen); + + for LByte in LBuffer do + begin + Result := Result + IntToHex(LByte, 2) + ' '; + end; +end; + + { THelloWorldResource } function THelloWorldResource.EchoString(AString: string): string; @@ -171,10 +197,10 @@ function THelloWorldResource.PostOrder(AOrderProposal: TOrderProposal): TOrder; end; function THelloWorldResource.PostMultiPartExample( - [FormParam] AValue: string; - [FormParam] AContent: TWiRLFormDataPart; - [FormParam] AJSON: TJSONObject - ): TJSONObject; + AValue: string; + AContent: TWiRLFormDataPart; + AJSON: TJSONObject +): TJSONObject; var LContentBuffer: TBytes; begin @@ -184,12 +210,15 @@ function THelloWorldResource.PostMultiPartExample( .AddPair('AValue', AValue) .AddPair('JSON', AJSON.ToJSON) .AddPair('FileName', AContent.FileName) - .AddPair('ContentSize', TJSONNumber.Create(Length(LContentBuffer))); + .AddPair('ContentSize', TJSONNumber.Create(Length(LContentBuffer))) + .AddPair('Content', DumpStream(AContent.ContentStream)); end; function THelloWorldResource.PostStreamExample(AContent: TStream): string; begin - Result := 'Stream len: ' + IntToStr(AContent.Size); + Result := + 'Stream len: ' + IntToStr(AContent.Size) + sLineBreak + + DumpStream(AContent) + sLineBreak; end; function THelloWorldResource.ReverseString(AString: string): string; diff --git a/Demos/01.HelloWorld/Server.Resources.Params.pas b/Demos/01.HelloWorld/Server.Resources.Params.pas index 6432954f..104455a5 100644 --- a/Demos/01.HelloWorld/Server.Resources.Params.pas +++ b/Demos/01.HelloWorld/Server.Resources.Params.pas @@ -84,17 +84,17 @@ implementation function TParametersResource.ParamFloat(AParam: Double): Double; begin - Result := AParam; + Result := AParam / 10; end; function TParametersResource.ParamStr(AParam: string): string; begin - Result := AParam; + Result := 'Value: ' + AParam; end; function TParametersResource.ParamDate(AParam: TDate): TDate; begin - Result := AParam; + Result := IncYear(AParam, 1); end; function TParametersResource.ParamArray(AParam: TArrayInt): TArrayInt; @@ -109,17 +109,17 @@ function TParametersResource.ParamArrayBody(AParam: TArrayParam): TArrayParam; function TParametersResource.ParamBool(AParam: Boolean): Boolean; begin - Result := AParam; + Result := not AParam; end; function TParametersResource.ParamDateTime(AParam: TDateTime): TDateTime; begin - Result := AParam; + Result := IncHour(AParam, 12); end; function TParametersResource.ParamEnum(AParam: TMyEnum): TMyEnum; begin - Result := AParam; + Result := TMyEnum((Ord(AParam) + 1 ) mod Ord(High(TMyEnum))); end; function TParametersResource.ParamTime(AParam: TTime): TTime; @@ -129,12 +129,12 @@ function TParametersResource.ParamTime(AParam: TTime): TTime; function TParametersResource.ParamInt(AParam: Integer): Integer; begin - Result := AParam; + Result := AParam + 1; end; function TParametersResource.ParamObject(AParam: TSimpleParam): string; begin - Result := AParam.Value; + Result := AParam.ToString; end; function TParametersResource.ParamRecord(AParam: TRecordParam): TRecordParam; diff --git a/Demos/01.HelloWorld/Server.WebModules.Main.dfm b/Demos/01.HelloWorld/Server.WebModules.Main.dfm new file mode 100644 index 00000000..a080c74b --- /dev/null +++ b/Demos/01.HelloWorld/Server.WebModules.Main.dfm @@ -0,0 +1,11 @@ +object MainWebModule: TMainWebModule + Actions = < + item + Default = True + Name = 'DefaultHandler' + PathInfo = '/webbroker' + OnAction = WebModule1DefaultHandlerAction + end> + Height = 230 + Width = 415 +end diff --git a/Demos/01.HelloWorld/Server.WebModules.Main.pas b/Demos/01.HelloWorld/Server.WebModules.Main.pas new file mode 100644 index 00000000..dcbb6a61 --- /dev/null +++ b/Demos/01.HelloWorld/Server.WebModules.Main.pas @@ -0,0 +1,92 @@ +unit Server.WebModules.Main; + +interface + +uses + System.SysUtils, System.Classes, System.TypInfo, + Web.HTTPApp, + Soap.SOAPHTTPDisp, Soap.WebBrokerSOAP, + + Neon.Core.Types, + + WiRL.http.Server, + WiRL.http.Server.WebBroker, + WiRL.Engine.Core, + WiRL.Engine.REST, + WiRL.Engine.WebServer, + WiRL.Core.Converter, + WiRL.Configuration.Converter, + WiRL.Configuration.Neon; + +type + TMainWebModule = class(TWebModule) + procedure WebModule1DefaultHandlerAction(Sender: TObject; + Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); + private + FWiRLServer: TWiRLServer; + FDispatcher: TWiRLDispatcher; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + + property Action; + end; + +var + WebModuleClass: TComponentClass = TMainWebModule; + +implementation + +{%CLASSGROUP 'Vcl.Controls.TControl'} + +{$R *.dfm} + +constructor TMainWebModule.Create(AOwner: TComponent); +begin + inherited; + FWiRLServer := TWiRLServer.Create(nil); + + FWiRLServer.AddEngine('/rest') + .SetEngineName('RESTEngine') + .AddApplication('/app') + .SetResources('*') + .SetFilters('*') + + .Plugin.Configure + .AddFormat(TypeInfo(TDateTime), TWiRLFormatSetting.ISODATE_UTC) + .ApplyConfig + + .Plugin.Configure + .SetUseUTCDate(True) + .SetVisibility([mvPublic, mvPublished]) + .SetMemberCase(TNeonCase.PascalCase); + + FWiRLServer.AddEngine('/') + .SetEngineName('FileSystemEngine') + .SetRootFolder('..\..\www'); + + FWiRLServer.Active := True; + + // Create the dispatcher for WebBroker + FDispatcher := TWiRLDispatcher.Create(Self); + FDispatcher.Server := FWiRLServer; +end; + +destructor TMainWebModule.Destroy; +begin + FWiRLServer.Free; + FDispatcher.Free; + inherited; +end; + +procedure TMainWebModule.WebModule1DefaultHandlerAction(Sender: TObject; + Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); +begin + Response.Content := + '' + + 'Web Server Application' + + 'Web Server Application' + + ''; +end; + +end. diff --git a/Demos/01.HelloWorld/www/core.html b/Demos/01.HelloWorld/www/core.html new file mode 100644 index 00000000..b6d4bfa6 --- /dev/null +++ b/Demos/01.HelloWorld/www/core.html @@ -0,0 +1,15 @@ + +

+
+ + + + + + + + + +
+ +
diff --git a/Demos/01.HelloWorld/www/core.js b/Demos/01.HelloWorld/www/core.js new file mode 100644 index 00000000..bd0584ac --- /dev/null +++ b/Demos/01.HelloWorld/www/core.js @@ -0,0 +1,112 @@ +async function echoText() { + try { + const result = await fetch('/rest/app/helloworld/echostring/test'); + const data = await result.text(); + log(data); + } catch (error) { + log("Error: " + error.message); + } +} + +async function reverseText() { + try { + const result = await fetch('/rest/app/helloworld/reversestring/test'); + const data = await result.text(); + log(data); + } catch (error) { + log("Error: " + error.message); + } +} + +async function postString() { + try { + const response = await fetch('/rest/app/helloworld/poststring', { + method: 'POST', + headers: { + 'Content-Type': 'text/plain' + }, + body: 'Hello, World!' + }); + const data = await response.text(); + log(data); + } catch (error) { + log("Error: " + error.message); + } +} + +async function postStream() { + const binaryData = new Uint8Array([0x01, 0x02, 0x03, 0x04, 0x05, 0x00, 0xf0, 0xff]); + try { + const response = await fetch('/rest/app/helloworld/poststream', { + method: 'POST', + headers: { + 'Content-Type': 'application/octet-stream' + }, + body: binaryData + }); + const data = await response.text(); + log(data); + } catch (error) { + log("Error: " + error.message); + } +} + +async function getObject() { + try { + const response = await fetch('/rest/app/helloworld/person?id=12'); + const person = await response.json(); + log( + 'Name: ' + person.Name + '\n' + + 'Age: ' + person.Age + '\n' + + 'Detail: ' + person.Detail + ); + } catch (error) { + log("Error: " + error.message); + } +} + +async function getException() { + try { + const response = await fetch('/rest/app/helloworld/exception'); + const error = await response.json(); + log( + 'Success: ' + response.ok + '\n' + + 'Info: ' + error.message + ); + } catch (error) { + log("Error: " + error.message); + } +} + +async function getImage() { + const imgElement = document.getElementById("image"); + imgElement.src = '/rest/app/entity/image'; + imgElement.style.display = 'block'; +} + +async function postMultiPart() { + const binaryArray = new Uint8Array([0x01, 0x02, 0x03, 0x04, 0x05, 0x00, 0xf0, 0xff]); + const binaryData = new Blob([binaryArray], { type: 'application/octet-stream' }); + + const formData = new FormData(); + formData.append('AValue', new Blob(['Hello, World!'], { type: 'text/plain' })); + formData.append('AContent', binaryData, 'hello.txt'); + formData.append('AJSON', new Blob(['{"message": "Hello, World!"}'], { type: 'application/json' }), 'hello.json'); + + try { + const response = await fetch('/rest/app/helloworld/multipart', { + method: 'POST', + body: formData + }); + const data = await response.json(); + log( + 'AValue: ' + data.AValue + '\n' + + 'ContentSize: ' + data.ContentSize + '\n' + + 'FileName: ' + data.FileName + '\n' + + 'Content: ' + data.Content + '\n' + + 'JSON: ' + data.JSON + ); + } catch (error) { + log("Error: " + error.message); + } +} \ No newline at end of file diff --git a/Demos/01.HelloWorld/www/database.html b/Demos/01.HelloWorld/www/database.html new file mode 100644 index 00000000..0861110d --- /dev/null +++ b/Demos/01.HelloWorld/www/database.html @@ -0,0 +1,23 @@ + +
+
+ +
+ + + + + + + + + + + + + + + +
IDValue
......
+
+
diff --git a/Demos/01.HelloWorld/www/database.js b/Demos/01.HelloWorld/www/database.js new file mode 100644 index 00000000..90c65b87 --- /dev/null +++ b/Demos/01.HelloWorld/www/database.js @@ -0,0 +1,7 @@ +async function getData() { + const result = await fetch('/rest/app/database/db'); + const data = await result.json(); + const table = data.map(item => `${item.id}${item.value}`).join('\n'); + document.getElementById('table-body').innerHTML = table; +} + diff --git a/Demos/01.HelloWorld/www/index.html b/Demos/01.HelloWorld/www/index.html new file mode 100644 index 00000000..b16ce6fa --- /dev/null +++ b/Demos/01.HelloWorld/www/index.html @@ -0,0 +1,27 @@ + + + + + + WiRL Demo + + + + + +
+ +
+
+
+ + \ No newline at end of file diff --git a/Demos/01.HelloWorld/www/main.css b/Demos/01.HelloWorld/www/main.css new file mode 100644 index 00000000..4434d514 --- /dev/null +++ b/Demos/01.HelloWorld/www/main.css @@ -0,0 +1,35 @@ +html, body { + height: 100%; +} + +.tool-panel { + display: flex; + flex-direction: row; + gap: 1rem; + height: 90%; +} + +.toolbar { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.textarea { + flex: 1; + resize: none; + width: 100%; + border: 1px solid var(--pico-border-color); + border-radius: var(--pico-border-radius); + padding: 1rem; + font-family: inherit; + font-size: inherit; +} + +main { + height: 100%; +} + +.image { + width: 100px; +} \ No newline at end of file diff --git a/Demos/01.HelloWorld/www/main.js b/Demos/01.HelloWorld/www/main.js new file mode 100644 index 00000000..d51275bc --- /dev/null +++ b/Demos/01.HelloWorld/www/main.js @@ -0,0 +1,20 @@ +showModule('core'); + +function log(message) { + const textarea = document.getElementById("textarea"); + textarea.value += '------------------------------------\n' + message + '\n'; +} + +async function showModule(name) { + // Load HTML content + const container = document.getElementById('container'); + container.innerHTML = await (await fetch(name + '.html')).text(); + + // Execute scripts in the loaded HTML + container.querySelectorAll('script').forEach(old => { + const script = document.createElement('script'); + script.textContent = old.textContent; + if (old.src) script.src = old.src; + old.replaceWith(script); + }); +} diff --git a/Demos/01.HelloWorld/www/types.html b/Demos/01.HelloWorld/www/types.html new file mode 100644 index 00000000..ad997103 --- /dev/null +++ b/Demos/01.HelloWorld/www/types.html @@ -0,0 +1,14 @@ + +
+
+ + + + + + + + +
+ +
diff --git a/Demos/01.HelloWorld/www/types.js b/Demos/01.HelloWorld/www/types.js new file mode 100644 index 00000000..eeac7979 --- /dev/null +++ b/Demos/01.HelloWorld/www/types.js @@ -0,0 +1,47 @@ +async function stringTest() { + const result = await fetch('/rest/app/params/str/lorem%20ipsum'); + const data = await result.text(); + log('Expected: lorem ipsum\nGot: ' + data); +} + +async function integerTest() { + const result = await fetch('/rest/app/params/int/12'); + const data = await result.text(); + log('Expected: 13\nGot: ' + data); +} + +async function floatTest() { + const result = await fetch('/rest/app/params/float/1.12'); + const data = await result.text(); + log('Expected: 0.112\nGot: ' + data); +} + +async function booleanTest() { + const result = await fetch('/rest/app/params/bool/true'); + const data = await result.text(); + log('Expected: false\nGot: ' + data); +} + +async function enumTest() { + const result = await fetch('/rest/app/params/enum/Second'); + const data = await result.text(); + log('Expected: First\nGot: ' + data); +} + +async function simpleObjectTest() { + const result = await fetch('/rest/app/params/object/prefix.value'); + const data = await result.text(); + log('Expected: Prefix: [prefix] - Value [value]\nGot: ' + data); +} + +async function dateTest() { + const result = await fetch('/rest/app/params/date/2025-09-30'); + const data = await result.text(); + log('Expected: 2026-09-30\nGot: ' + data); +} + +async function dateTimeTest() { + const result = await fetch('/rest/app/params/datetime/2025-09-30T14:30:00Z'); + const data = await result.text(); + log('Expected: 2025-10-01T02:30:00.000Z\nGot: ' + data); +} \ No newline at end of file diff --git a/Demos/18.OpenAPI/DemoOpenAPI.dproj b/Demos/18.OpenAPI/DemoOpenAPI.dproj index 44c47e60..92afea6c 100644 --- a/Demos/18.OpenAPI/DemoOpenAPI.dproj +++ b/Demos/18.OpenAPI/DemoOpenAPI.dproj @@ -7,9 +7,10 @@ Application VCL DCC32 - 20.1 + 20.3 1 Win32 + DemoOpenAPI true @@ -190,7 +191,7 @@ True False - + @@ -200,16 +201,6 @@ 0 - - - classes - 64 - - - classes - 64 - - res\xml @@ -220,12 +211,6 @@ 1 - - - library\lib\armeabi-v7a - 1 - - library\lib\armeabi @@ -318,6 +303,16 @@ 1 + + + res\values-v35 + 1 + + + res\values-v35 + 1 + + res\drawable-anydpi-v26 @@ -785,6 +780,9 @@ 1 + + 1 + @@ -1046,6 +1044,7 @@ + 12 diff --git a/Demos/18.OpenAPI/Server.Entities.Customer.pas b/Demos/18.OpenAPI/Server.Entities.Customer.pas index 97ad8eff..f8d783e3 100644 --- a/Demos/18.OpenAPI/Server.Entities.Customer.pas +++ b/Demos/18.OpenAPI/Server.Entities.Customer.pas @@ -2,7 +2,7 @@ { } { WiRL: RESTful Library for Delphi } { } -{ Copyright (c) 2015-2021 WiRL Team } +{ Copyright (c) 2015-2025 WiRL Team } { } { https://github.com/delphi-blocks/WiRL } { } @@ -15,6 +15,7 @@ interface System.SysUtils, System.Classes, System.Contnrs, System.Generics.Collections, System.Math, System.Math.Vectors, System.Types, + Neon.Core.Persistence.JSON.Schema, Neon.Core.Types, Neon.Core.Attributes; @@ -37,13 +38,13 @@ TOrderItem = class TOrderItems = class(TObjectList) end; + [JsonSchema('title=Order')] TOrder = class private FId: Integer; FIdCustomer: Integer; FItems: TOrderItems; FTotal: Double; - FPippo: string; public constructor Create; destructor Destroy; override; @@ -53,9 +54,9 @@ TOrder = class property IdCustomer: Integer read FIdCustomer write FIdCustomer; property Items: TOrderItems read FItems write FItems; property Total: Double read FTotal write FTotal; - property Pippo: string read FPippo write FPippo; end; + [JsonSchema('title=Orders')] TOrders = class(TObjectList) public function AddOrder(AID: Integer): TOrder; @@ -64,6 +65,7 @@ TOrders = class(TObjectList) /// /// Customer entiry /// + [JsonSchema('title=Customer')] TCustomer = class private FCity: string; @@ -75,12 +77,15 @@ TCustomer = class destructor Destroy; override; function AddOrder: TOrder; + [JsonSchema('description=Code for the customer,required')] property Id: Integer read FId write FId; property CompanyName: string read FCompanyName write FCompanyName; property City: string read FCity write FCity; + [JsonSchema('description=List of orders')] property Orders: TOrders read FOrders write FOrders; end; + [JsonSchema('title=Customers')] TCustomers = class(TObjectList) public function AddCustomer(const ACompanyName: string): TCustomer; diff --git a/Demos/18.OpenAPI/Server.Entities.pas b/Demos/18.OpenAPI/Server.Entities.pas index 4d0ceefb..2c75e907 100644 --- a/Demos/18.OpenAPI/Server.Entities.pas +++ b/Demos/18.OpenAPI/Server.Entities.pas @@ -2,7 +2,7 @@ { } { WiRL: RESTful Library for Delphi } { } -{ Copyright (c) 2015-2021 WiRL Team } +{ Copyright (c) 2015-2025 WiRL Team } { } { https://github.com/delphi-blocks/WiRL } { } @@ -16,7 +16,8 @@ interface System.Math, System.Math.Vectors, System.Types, Neon.Core.Types, - Neon.Core.Attributes; + Neon.Core.Attributes, + Neon.Core.Persistence.JSON.Schema; {$M+} @@ -107,6 +108,7 @@ TNote = class property Text: string read FText write FText; end; + [JsonSchema('title=Person')] TPerson = class private FAddresses: TAddresses; diff --git a/Demos/18.OpenAPI/Server.Forms.Main.pas b/Demos/18.OpenAPI/Server.Forms.Main.pas index a37b6cf8..c7657678 100644 --- a/Demos/18.OpenAPI/Server.Forms.Main.pas +++ b/Demos/18.OpenAPI/Server.Forms.Main.pas @@ -2,7 +2,7 @@ { } { WiRL: RESTful Library for Delphi } { } -{ Copyright (c) 2015-2023 WiRL Team } +{ Copyright (c) 2015-2025 WiRL Team } { } { https://github.com/delphi-blocks/WiRL } { } @@ -19,8 +19,10 @@ interface WiRL.Configuration.Neon, WiRL.Configuration.CORS, WiRL.Configuration.OpenAPI, + WiRL.Core.Exceptions, Neon.Core.Types, Neon.Core.Persistence, + Neon.Core.Persistence.JSON.Schema, WiRL.Core.Application, WiRL.Engine.REST, WiRL.Engine.FileSystem, @@ -70,6 +72,7 @@ implementation uses System.TypInfo, WiRL.Core.Utils, + WiRL.http.Accept.MediaType, WiRL.Core.Metadata.XMLDoc, WiRL.Core.OpenAPI.Resource; @@ -111,6 +114,11 @@ function TMainForm.ConfigureOpenAPIDocument: TOpenAPIDocument; LExtensionObject.AddPair('backgroundColor', '#FFFFFF'); LExtensionObject.AddPair('altText', 'API Logo'); Result.Info.Extensions.Add('x-logo', LExtensionObject); + + + //var res := Result.Components.AddResponse('BadRequest', 'Bad Request'); + //var mt := res.AddMediaType(TMediaType.APPLICATION_JSON); + //mt.Schema.SetSchemaReference() end; procedure TMainForm.FormDestroy(Sender: TObject); @@ -137,7 +145,6 @@ procedure TMainForm.FormCreate(Sender: TObject); FEngine.AddApplication(APP_PATH) .SetAppName('demo') - // Test for namespaces .SetResources('Server.Resources.Demo.*') .SetResources('Server.Resources.Customer.*') .SetResources('Server.Resources.OpenAPI') @@ -155,15 +162,31 @@ procedure TMainForm.FormCreate(Sender: TObject); .ApplyConfig .Plugin.Configure + .SetNeonConfiguration( + TNeonConfiguration.Camel + .Rules.ForClass + .SetIgnoreMembers([ + 'BaseException', + 'HelpContext', + 'InnerException', + 'StackTrace', + 'StackInfo']) + .ApplyConfig + ) + // Set the OpenAPI resource (to skip it in the documentation generation) .SetOpenAPIResource(TDocumentationResource) + // Set the Delphi XML documentation output directory (Project -> Options -> Compiler) .SetXMLDocFolder('{AppPath}\..\..\Docs') + // Set the folder to the html UI assets location .SetGUIDocFolder('{AppPath}\..\..\UI') //.SetGUIDocFolder('{AppPath}\..\..\ReDoc') + // Set the (optional) API logo .SetAPILogo('api-logo.png') + // Set the OpenAPI document for the OpenAPI engine to fill .SetAPIDocument(LDocument) @@ -172,11 +195,12 @@ procedure TMainForm.FormCreate(Sender: TObject); begin ADocument.Info.Title := 'WiRL OpenAPI Integration Demo (Changed)'; - var tag := ADocument.AddTag('callback', 'User added content'); + ADocument.AddTag('callback', 'User added content'); var res := ADocument.AddPath('/callback'); res.Description := 'This is a test for the callback'; res.Summary := 'Sample'; + var op := res.AddOperation(TOperationType.Get); op.Summary := 'Get Sample Data'; op.Description := 'Sample Data description'; diff --git a/Demos/18.OpenAPI/Server.Resources.Customer.pas b/Demos/18.OpenAPI/Server.Resources.Customer.pas index 6888da57..952d3caa 100644 --- a/Demos/18.OpenAPI/Server.Resources.Customer.pas +++ b/Demos/18.OpenAPI/Server.Resources.Customer.pas @@ -2,7 +2,7 @@ { } { WiRL: RESTful Library for Delphi } { } -{ Copyright (c) 2015-2021 WiRL Team } +{ Copyright (c) 2015-2025 WiRL Team } { } { https://github.com/delphi-blocks/WiRL } { } diff --git a/Demos/18.OpenAPI/Server.Resources.Demo.pas b/Demos/18.OpenAPI/Server.Resources.Demo.pas index 032b0df1..a080087d 100644 --- a/Demos/18.OpenAPI/Server.Resources.Demo.pas +++ b/Demos/18.OpenAPI/Server.Resources.Demo.pas @@ -2,7 +2,7 @@ { } { WiRL: RESTful Library for Delphi } { } -{ Copyright (c) 2015-2021 WiRL Team } +{ Copyright (c) 2015-2025 WiRL Team } { } { https://github.com/delphi-blocks/WiRL } { } @@ -18,6 +18,7 @@ interface WiRL.Engine.REST, WiRL.Core.Application, WiRL.Core.Registry, + WiRL.Core.Exceptions, WiRL.Core.Attributes, WiRL.Core.Application.Worker, WiRL.Core.MessageBody.Default, @@ -27,7 +28,7 @@ interface WiRL.http.URL, WiRL.http.Request, WiRL.http.Response, - + Neon.Core.Persistence.JSON.Schema, Server.Entities; type @@ -45,7 +46,7 @@ TParametersResource = class(TObject) function ParamTestList: string; /// - /// Method with a *sample* documentation + /// Test doc method /// /// /// The first parameter @@ -53,17 +54,31 @@ TParametersResource = class(TObject) /// /// Result is a string representing the input parameter /// - /// - /// Here is a sample remarks placeholder. - /// - /// Succesful response description - ///
Description of the header
- /// Bad request - /// [resource] not found in the database [GET, Path('/test/{p}'), Produces(TMediaType.TEXT_PLAIN)] function ParamTest([PathParam('p')] APathParam: string): string; - [POST, Path('/record')] + /// + /// Thist method shows several response codes + /// + /// + /// Resource's return value + /// + /// + /// Here is a sample remarks placeholder. + /// + ///
+ /// Description of the header + ///
+ /// + /// Bad request + /// + /// + /// Bad request + /// + /// + /// [resource] not found in the database + /// + [POST, Path('/record'), ResponseStatus(201, 'Entity created')] [Consumes(TMediaType.APPLICATION_JSON), Produces(TMediaType.APPLICATION_JSON)] function ParamRecord([BodyParam] ABodyParam: TRecordParam): TRecordParam; @@ -101,6 +116,7 @@ procedure TParametersResource.Test; function TParametersResource.ParamRecord(ABodyParam: TRecordParam): TRecordParam; begin + // It's a record so there's a copy. Result := ABodyParam; end; @@ -145,3 +161,4 @@ initialization TWiRLResourceRegistry.Instance.RegisterResource; end. + diff --git a/Demos/20.Exceptions/Server.Exceptions.pas b/Demos/20.Exceptions/Server.Exceptions.pas index 9edd93d9..4f8841fd 100644 --- a/Demos/20.Exceptions/Server.Exceptions.pas +++ b/Demos/20.Exceptions/Server.Exceptions.pas @@ -1,3 +1,12 @@ +{******************************************************************************} +{ } +{ WiRL: RESTful Library for Delphi } +{ } +{ Copyright (c) 2015-2025 WiRL Team } +{ } +{ https://github.com/delphi-blocks/WiRL } +{ } +{******************************************************************************} unit Server.Exceptions; interface @@ -23,9 +32,6 @@ TWiRLMyNotFoundExceptionMapper = class(TWiRLExceptionMapper) procedure HandleException(AExceptionContext: TWiRLExceptionContext); override; end; - - - implementation @@ -47,12 +53,9 @@ procedure TWiRLMyNotFoundExceptionMapper.HandleException(AExceptionContext: TWiR LJSON.AddPair('class', MyException.ClassName); LJSON.AddPair('test', MyException.Message); - - AExceptionContext.Response.StatusCode := StatusCode; AExceptionContext.Response.ContentType := 'application/json'; AExceptionContext.Response.Content := TJSONHelper.ToJSON(LJSON); - finally LJSON.Free; end; @@ -68,6 +71,6 @@ constructor EMyNotFoundException.Create(AErrorCode: Integer; const Msg: string); end; initialization - TWiRLExceptionMapperRegistry.Instance.RegisterExceptionMapper(); + //TWiRLExceptionMapperRegistry.Instance.RegisterExceptionMapper(); end. diff --git a/Demos/20.Exceptions/Server.Forms.Main.dfm b/Demos/20.Exceptions/Server.Forms.Main.dfm index 4200536d..118ff27f 100644 --- a/Demos/20.Exceptions/Server.Forms.Main.dfm +++ b/Demos/20.Exceptions/Server.Forms.Main.dfm @@ -23,6 +23,7 @@ object MainForm: TMainForm Align = alTop BevelOuter = bvNone TabOrder = 0 + ExplicitWidth = 458 object Label1: TLabel Left = 28 Top = 17 @@ -63,6 +64,8 @@ object MainForm: TMainForm Align = alClient ItemHeight = 13 TabOrder = 1 + ExplicitWidth = 458 + ExplicitHeight = 111 end object MainActionList: TActionList Left = 384 diff --git a/Demos/20.Exceptions/Server.Forms.Main.pas b/Demos/20.Exceptions/Server.Forms.Main.pas index a95855c9..282a8190 100644 --- a/Demos/20.Exceptions/Server.Forms.Main.pas +++ b/Demos/20.Exceptions/Server.Forms.Main.pas @@ -2,7 +2,7 @@ { } { WiRL: RESTful Library for Delphi } { } -{ Copyright (c) 2015-2022 WiRL Team } +{ Copyright (c) 2015-2025 WiRL Team } { } { https://github.com/delphi-blocks/WiRL } { } @@ -14,9 +14,11 @@ interface uses System.Classes, System.SysUtils, Vcl.Forms, Vcl.ActnList, Vcl.ComCtrls, Vcl.StdCtrls, Vcl.Controls, Vcl.ExtCtrls, System.Diagnostics, System.Actions, + WiRL.Engine.REST, WiRL.http.Server, WiRL.http.Server.Indy, + WiRL.Core.Exceptions, WiRL.Core.Application; type @@ -52,6 +54,7 @@ implementation uses Neon.Core.Types, WiRL.Configuration.Neon, + WiRL.Configuration.Errors, WiRL.Core.JSON, WiRL.Rtti.Utils; @@ -84,7 +87,6 @@ procedure TMainForm.StartServerActionExecute(Sender: TObject); // Engine configuration FServer .SetPort(StrToIntDef(PortNumberEdit.Text, 8080)) - .SetThreadPoolSize(5) .AddEngine('/rest') .SetEngineName('WiRL custom Exceptions') @@ -98,6 +100,14 @@ procedure TMainForm.StartServerActionExecute(Sender: TObject); .SetUseUTCDate(True) .SetMemberCase(TNeonCase.SnakeCase) .ApplyConfig + + .Plugin.Configure + .SetErrorClass(EWiRLWebApplicationException) + .SetErrorCase(TNeonCase.CamelCase) + .SetErrorDebugInfo(True) + //.SetErrorMediaType() + .ApplyConfig + ; if not FServer.Active then diff --git a/Demos/20.Exceptions/Server.Resources.pas b/Demos/20.Exceptions/Server.Resources.pas index 9a3ab7a8..251b634f 100644 --- a/Demos/20.Exceptions/Server.Resources.pas +++ b/Demos/20.Exceptions/Server.Resources.pas @@ -2,7 +2,7 @@ { } { WiRL: RESTful Library for Delphi } { } -{ Copyright (c) 2015-2019 WiRL Team } +{ Copyright (c) 2015-2025 WiRL Team } { } { https://github.com/delphi-blocks/WiRL } { } @@ -50,15 +50,19 @@ TDemoResource = class implementation -{ TDemoResource } - - { TDemoResource } function TDemoResource.GetCustomException: string; begin - raise EMyNotFoundException.Create(102, 'Exception Message'); - Result := 'Hello, Error!'; + //raise EMyNotFoundException.Create(102, 'Exception Message'); + try + raise Exception.Create('Simple Exception'); + except + on E: Exception do + begin + Exception.RaiseOuterException(EWiRLNotFoundException.Create('Not Found')); + end; + end; end; function TDemoResource.GetDivByZero: string; @@ -81,6 +85,8 @@ function TDemoResource.GetErrorDetails: string; function TDemoResource.GetException: string; begin raise Exception.Create('Test'); + + raise Exception.Create('Error Message'); end; function TDemoResource.SampleText: string; diff --git a/Libs/Neon b/Libs/Neon index deba0b2a..3365ef8f 160000 --- a/Libs/Neon +++ b/Libs/Neon @@ -1 +1 @@ -Subproject commit deba0b2a29c814c06393218121ee975d0cf568db +Subproject commit 3365ef8f31a3639e0eaccb5c11ed00e43a631355 diff --git a/Libs/OpenAPI b/Libs/OpenAPI index 02c7fbeb..1fbd03f3 160000 --- a/Libs/OpenAPI +++ b/Libs/OpenAPI @@ -1 +1 @@ -Subproject commit 02c7fbeb4256e1606fbbc5b39e95629c59423df3 +Subproject commit 1fbd03f31c7cf1fbff2ce04fabe80db01647dad7 diff --git a/Packages/10.0Seattle/WiRL.dpk b/Packages/10.0Seattle/WiRL.dpk index 39191406..b9608e24 100644 --- a/Packages/10.0Seattle/WiRL.dpk +++ b/Packages/10.0Seattle/WiRL.dpk @@ -134,7 +134,8 @@ contains WiRL.Configuration.Converter in '..\..\Source\Core\WiRL.Configuration.Converter.pas', WiRL.Configuration.Compression in '..\..\Source\Core\WiRL.Configuration.Compression.pas', WiRL.Configuration.OpenAPI in '..\..\Source\Core\WiRL.Configuration.OpenAPI.pas', - WiRL.Rtti.Utils in '..\..\Source\Core\WiRL.Rtti.Utils.pas'; + WiRL.Rtti.Utils in '..\..\Source\Core\WiRL.Rtti.Utils.pas', + WiRL.http.Server.WebBroker in '..\..\Source\Core\WiRL.http.Server.WebBroker.pas'; end. diff --git a/Packages/10.0Seattle/WiRL.dproj b/Packages/10.0Seattle/WiRL.dproj index 5fc1edc8..859b1af5 100644 --- a/Packages/10.0Seattle/WiRL.dproj +++ b/Packages/10.0Seattle/WiRL.dproj @@ -164,6 +164,7 @@ + Base diff --git a/Packages/10.0Seattle/WiRLDesign.dpk b/Packages/10.0Seattle/WiRLDesign.dpk index be4f4b63..f63da7f7 100644 --- a/Packages/10.0Seattle/WiRLDesign.dpk +++ b/Packages/10.0Seattle/WiRLDesign.dpk @@ -63,6 +63,7 @@ contains WiRL.Wizards.Modules.Resources in '..\..\Source\IDE Wizard\WiRL.Wizards.Modules.Resources.pas', WiRL.Wizards in '..\..\Source\IDE Wizard\WiRL.Wizards.pas', WiRL.Wizards.ProjectCreator in '..\..\Source\IDE Wizard\WiRL.Wizards.ProjectCreator.pas', - WiRL.Wizards.Utils in '..\..\Source\IDE Wizard\WiRL.Wizards.Utils.pas'; + WiRL.Wizards.Utils in '..\..\Source\IDE Wizard\WiRL.Wizards.Utils.pas', + WiRL.Wizards.Dialogs.NewResource in '..\..\Source\IDE Wizard\WiRL.Wizards.Dialogs.NewResource.pas' {formNewResourceDialog}; end. diff --git a/Packages/10.0Seattle/WiRLDesign.dproj b/Packages/10.0Seattle/WiRLDesign.dproj index 1b00c2fe..3642cf82 100644 --- a/Packages/10.0Seattle/WiRLDesign.dproj +++ b/Packages/10.0Seattle/WiRLDesign.dproj @@ -113,6 +113,10 @@ + +
formNewResourceDialog
+ dfm +
ResourceItem RCDATA diff --git a/Packages/10.1Berlin/WiRL.dpk b/Packages/10.1Berlin/WiRL.dpk index ddecc5d7..07a0149b 100644 --- a/Packages/10.1Berlin/WiRL.dpk +++ b/Packages/10.1Berlin/WiRL.dpk @@ -134,7 +134,8 @@ contains WiRL.Configuration.Converter in '..\..\Source\Core\WiRL.Configuration.Converter.pas', WiRL.Configuration.Compression in '..\..\Source\Core\WiRL.Configuration.Compression.pas', WiRL.Configuration.OpenAPI in '..\..\Source\Core\WiRL.Configuration.OpenAPI.pas', - WiRL.Rtti.Utils in '..\..\Source\Core\WiRL.Rtti.Utils.pas'; + WiRL.Rtti.Utils in '..\..\Source\Core\WiRL.Rtti.Utils.pas', + WiRL.http.Server.WebBroker in '..\..\Source\Core\WiRL.http.Server.WebBroker.pas'; end. diff --git a/Packages/10.1Berlin/WiRL.dproj b/Packages/10.1Berlin/WiRL.dproj index 74702198..237b8645 100644 --- a/Packages/10.1Berlin/WiRL.dproj +++ b/Packages/10.1Berlin/WiRL.dproj @@ -164,6 +164,7 @@ + Base diff --git a/Packages/10.1Berlin/WiRLDesign.dpk b/Packages/10.1Berlin/WiRLDesign.dpk index 3345754a..55858de4 100644 --- a/Packages/10.1Berlin/WiRLDesign.dpk +++ b/Packages/10.1Berlin/WiRLDesign.dpk @@ -64,6 +64,7 @@ contains WiRL.Wizards.Modules.Resources in '..\..\Source\IDE Wizard\WiRL.Wizards.Modules.Resources.pas', WiRL.Wizards in '..\..\Source\IDE Wizard\WiRL.Wizards.pas', WiRL.Wizards.ProjectCreator in '..\..\Source\IDE Wizard\WiRL.Wizards.ProjectCreator.pas', - WiRL.Wizards.Utils in '..\..\Source\IDE Wizard\WiRL.Wizards.Utils.pas'; + WiRL.Wizards.Utils in '..\..\Source\IDE Wizard\WiRL.Wizards.Utils.pas', + WiRL.Wizards.Dialogs.NewResource in '..\..\Source\IDE Wizard\WiRL.Wizards.Dialogs.NewResource.pas' {formNewResourceDialog}; end. diff --git a/Packages/10.1Berlin/WiRLDesign.dproj b/Packages/10.1Berlin/WiRLDesign.dproj index a0e0c5e1..47838dda 100644 --- a/Packages/10.1Berlin/WiRLDesign.dproj +++ b/Packages/10.1Berlin/WiRLDesign.dproj @@ -113,6 +113,10 @@ + +
formNewResourceDialog
+ dfm +
ResourceItem RCDATA diff --git a/Packages/10.2Tokyo/WiRL.dpk b/Packages/10.2Tokyo/WiRL.dpk index a672b9c4..591be6b6 100644 --- a/Packages/10.2Tokyo/WiRL.dpk +++ b/Packages/10.2Tokyo/WiRL.dpk @@ -134,7 +134,8 @@ contains WiRL.Configuration.Converter in '..\..\Source\Core\WiRL.Configuration.Converter.pas', WiRL.Configuration.Compression in '..\..\Source\Core\WiRL.Configuration.Compression.pas', WiRL.Configuration.OpenAPI in '..\..\Source\Core\WiRL.Configuration.OpenAPI.pas', - WiRL.Rtti.Utils in '..\..\Source\Core\WiRL.Rtti.Utils.pas'; + WiRL.Rtti.Utils in '..\..\Source\Core\WiRL.Rtti.Utils.pas', + WiRL.http.Server.WebBroker in '..\..\Source\Core\WiRL.http.Server.WebBroker.pas'; end. diff --git a/Packages/10.2Tokyo/WiRL.dproj b/Packages/10.2Tokyo/WiRL.dproj index c9cbf752..ead731b5 100644 --- a/Packages/10.2Tokyo/WiRL.dproj +++ b/Packages/10.2Tokyo/WiRL.dproj @@ -164,6 +164,7 @@ + Base diff --git a/Packages/10.2Tokyo/WiRLDesign.dpk b/Packages/10.2Tokyo/WiRLDesign.dpk index 61b757c1..fb933f23 100644 --- a/Packages/10.2Tokyo/WiRLDesign.dpk +++ b/Packages/10.2Tokyo/WiRLDesign.dpk @@ -64,6 +64,7 @@ contains WiRL.Wizards.Modules.Resources in '..\..\Source\IDE Wizard\WiRL.Wizards.Modules.Resources.pas', WiRL.Wizards in '..\..\Source\IDE Wizard\WiRL.Wizards.pas', WiRL.Wizards.ProjectCreator in '..\..\Source\IDE Wizard\WiRL.Wizards.ProjectCreator.pas', - WiRL.Wizards.Utils in '..\..\Source\IDE Wizard\WiRL.Wizards.Utils.pas'; + WiRL.Wizards.Utils in '..\..\Source\IDE Wizard\WiRL.Wizards.Utils.pas', + WiRL.Wizards.Dialogs.NewResource in '..\..\Source\IDE Wizard\WiRL.Wizards.Dialogs.NewResource.pas' {formNewResourceDialog}; end. diff --git a/Packages/10.2Tokyo/WiRLDesign.dproj b/Packages/10.2Tokyo/WiRLDesign.dproj index 950584ee..f911873f 100644 --- a/Packages/10.2Tokyo/WiRLDesign.dproj +++ b/Packages/10.2Tokyo/WiRLDesign.dproj @@ -113,6 +113,10 @@ + +
formNewResourceDialog
+ dfm +
ResourceItem RCDATA diff --git a/Packages/10.3Rio/WiRL.dpk b/Packages/10.3Rio/WiRL.dpk index 358ea7bd..1da1b4c4 100644 --- a/Packages/10.3Rio/WiRL.dpk +++ b/Packages/10.3Rio/WiRL.dpk @@ -134,7 +134,8 @@ contains WiRL.Configuration.Converter in '..\..\Source\Core\WiRL.Configuration.Converter.pas', WiRL.Configuration.Compression in '..\..\Source\Core\WiRL.Configuration.Compression.pas', WiRL.Configuration.OpenAPI in '..\..\Source\Core\WiRL.Configuration.OpenAPI.pas', - WiRL.Rtti.Utils in '..\..\Source\Core\WiRL.Rtti.Utils.pas'; + WiRL.Rtti.Utils in '..\..\Source\Core\WiRL.Rtti.Utils.pas', + WiRL.http.Server.WebBroker in '..\..\Source\Core\WiRL.http.Server.WebBroker.pas'; end. diff --git a/Packages/10.3Rio/WiRL.dproj b/Packages/10.3Rio/WiRL.dproj index e34fdc28..823b240c 100644 --- a/Packages/10.3Rio/WiRL.dproj +++ b/Packages/10.3Rio/WiRL.dproj @@ -164,6 +164,7 @@ + Base diff --git a/Packages/10.3Rio/WiRLDesign.dpk b/Packages/10.3Rio/WiRLDesign.dpk index b8ebb5f4..e3119eed 100644 --- a/Packages/10.3Rio/WiRLDesign.dpk +++ b/Packages/10.3Rio/WiRLDesign.dpk @@ -64,6 +64,7 @@ contains WiRL.Wizards.Modules.Resources in '..\..\Source\IDE Wizard\WiRL.Wizards.Modules.Resources.pas', WiRL.Wizards in '..\..\Source\IDE Wizard\WiRL.Wizards.pas', WiRL.Wizards.ProjectCreator in '..\..\Source\IDE Wizard\WiRL.Wizards.ProjectCreator.pas', - WiRL.Wizards.Utils in '..\..\Source\IDE Wizard\WiRL.Wizards.Utils.pas'; + WiRL.Wizards.Utils in '..\..\Source\IDE Wizard\WiRL.Wizards.Utils.pas', + WiRL.Wizards.Dialogs.NewResource in '..\..\Source\IDE Wizard\WiRL.Wizards.Dialogs.NewResource.pas' {formNewResourceDialog}; end. diff --git a/Packages/10.3Rio/WiRLDesign.dproj b/Packages/10.3Rio/WiRLDesign.dproj index d9b95bdb..a2c77ce6 100644 --- a/Packages/10.3Rio/WiRLDesign.dproj +++ b/Packages/10.3Rio/WiRLDesign.dproj @@ -113,6 +113,10 @@ + +
formNewResourceDialog
+ dfm +
ResourceItem RCDATA diff --git a/Packages/10.4Sydney/WiRL.dpk b/Packages/10.4Sydney/WiRL.dpk index 046924d0..1c00616a 100644 --- a/Packages/10.4Sydney/WiRL.dpk +++ b/Packages/10.4Sydney/WiRL.dpk @@ -134,7 +134,8 @@ contains WiRL.Configuration.Converter in '..\..\Source\Core\WiRL.Configuration.Converter.pas', WiRL.Configuration.Compression in '..\..\Source\Core\WiRL.Configuration.Compression.pas', WiRL.Configuration.OpenAPI in '..\..\Source\Core\WiRL.Configuration.OpenAPI.pas', - WiRL.Rtti.Utils in '..\..\Source\Core\WiRL.Rtti.Utils.pas'; + WiRL.Rtti.Utils in '..\..\Source\Core\WiRL.Rtti.Utils.pas', + WiRL.http.Server.WebBroker in '..\..\Source\Core\WiRL.http.Server.WebBroker.pas'; end. diff --git a/Packages/10.4Sydney/WiRL.dproj b/Packages/10.4Sydney/WiRL.dproj index 3277cefb..9e8e9d97 100644 --- a/Packages/10.4Sydney/WiRL.dproj +++ b/Packages/10.4Sydney/WiRL.dproj @@ -164,6 +164,7 @@ + Base diff --git a/Packages/10.4Sydney/WiRLDesign.dpk b/Packages/10.4Sydney/WiRLDesign.dpk index 11166527..b9c367d7 100644 --- a/Packages/10.4Sydney/WiRLDesign.dpk +++ b/Packages/10.4Sydney/WiRLDesign.dpk @@ -64,6 +64,7 @@ contains WiRL.Wizards.Modules.Resources in '..\..\Source\IDE Wizard\WiRL.Wizards.Modules.Resources.pas', WiRL.Wizards in '..\..\Source\IDE Wizard\WiRL.Wizards.pas', WiRL.Wizards.ProjectCreator in '..\..\Source\IDE Wizard\WiRL.Wizards.ProjectCreator.pas', - WiRL.Wizards.Utils in '..\..\Source\IDE Wizard\WiRL.Wizards.Utils.pas'; + WiRL.Wizards.Utils in '..\..\Source\IDE Wizard\WiRL.Wizards.Utils.pas', + WiRL.Wizards.Dialogs.NewResource in '..\..\Source\IDE Wizard\WiRL.Wizards.Dialogs.NewResource.pas' {formNewResourceDialog}; end. diff --git a/Packages/10.4Sydney/WiRLDesign.dproj b/Packages/10.4Sydney/WiRLDesign.dproj index c9a06dc8..af9ac09e 100644 --- a/Packages/10.4Sydney/WiRLDesign.dproj +++ b/Packages/10.4Sydney/WiRLDesign.dproj @@ -113,6 +113,10 @@ + +
formNewResourceDialog
+ dfm +
ResourceItem RCDATA diff --git a/Packages/11.0Alexandria/WiRL.dproj b/Packages/11.0Alexandria/WiRL.dproj deleted file mode 100644 index 291deaec..00000000 --- a/Packages/11.0Alexandria/WiRL.dproj +++ /dev/null @@ -1,205 +0,0 @@ - - - {EBEA6D21-3813-485E-8BCA-048D1CABD9C1} - WiRL.dpk - True - Debug - 3 - Package - None - 19.5 - Win32 - - - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Cfg_1 - true - true - - - true - Base - true - - - true - ../../Source/Core;../../Source/Data/FireDAC;../../Libs/Neon/Source;../../Libs/JWT/Source/Common;../../Libs/JWT/Source/JOSE;../../Libs/OpenAPI/Source;$(DCC_UnitSearchPath) - ..\..\Lib\280\$(Platform)\$(Config) - WiRL - 1033 - WiRL REST Library - true - false - false - false - $(Auto) - true - false - 00400000 - true - false - - - false - RELEASE;$(DCC_Define) - 0 - 0 - - - DEBUG;$(DCC_Define) - false - true - true - - - - MainSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Base - - - Cfg_1 - Base - - - Cfg_2 - Base - - - - Delphi.Personality.12 - Package - - - - WiRL.dpk - - - - - False - False - False - False - False - False - False - True - True - - - 12 - - - - diff --git a/Packages/11.0Alexandria/WiRLDesign.dpk b/Packages/11.0Alexandria/WiRLDesign.dpk deleted file mode 100644 index 11166527..00000000 --- a/Packages/11.0Alexandria/WiRLDesign.dpk +++ /dev/null @@ -1,69 +0,0 @@ -{******************************************************************************} -{ } -{ WiRL: RESTful Library for Delphi } -{ } -{ Copyright (c) 2015 WiRL Team } -{ https://github.com/delphi-blocks/WiRL } -{ } -{ Licensed under the Apache License, Version 2.0 } -{ http://www.apache.org/licenses/LICENSE-2.0 } -{ } -{******************************************************************************} -package WiRLDesign; - -{$R *.res} -{$R *.dres} -{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} -{$ALIGN 8} -{$ASSERTIONS ON} -{$BOOLEVAL OFF} -{$DEBUGINFO OFF} -{$EXTENDEDSYNTAX ON} -{$IMPORTEDDATA ON} -{$IOCHECKS ON} -{$LOCALSYMBOLS ON} -{$LONGSTRINGS ON} -{$OPENSTRINGS ON} -{$OPTIMIZATION OFF} -{$OVERFLOWCHECKS OFF} -{$RANGECHECKS OFF} -{$REFERENCEINFO ON} -{$SAFEDIVIDE OFF} -{$STACKFRAMES ON} -{$TYPEDADDRESS OFF} -{$VARSTRINGCHECKS ON} -{$WRITEABLECONST OFF} -{$MINENUMSIZE 1} -{$IMAGEBASE $400000} -{$DEFINE DEBUG} -{$ENDIF IMPLICITBUILDING} -{$DESCRIPTION 'WiRL REST components'} -{$LIBSUFFIX AUTO} -{$DESIGNONLY} -{$IMPLICITBUILD OFF} - -requires - rtl, - WiRL, - DesignIDE; - -contains - WiRL.http.Client.Editor in '..\..\Source\Client\WiRL.http.Client.Editor.pas', - WiRL.http.Server.Editor in '..\..\Source\Core\WiRL.http.Server.Editor.pas', - WiRL.Core.Register in '..\..\Source\Core\WiRL.Core.Register.pas', - WiRL.Core.Application.Editor in '..\..\Source\Core\WiRL.Core.Application.Editor.pas' {WiRLAppEditor}, - WiRL.Client.Register in '..\..\Source\Client\WiRL.Client.Register.pas', - WiRL.Client.CustomResource.Editor in '..\..\Source\Client\WiRL.Client.CustomResource.Editor.pas', - WiRL.Client.Application.Editor in '..\..\Source\Client\WiRL.Client.Application.Editor.pas' {WiRLClientAppResourceEditor}, - WiRL.Client.ResourceDebugger in '..\..\Source\Client\WiRL.Client.ResourceDebugger.pas' {WiRLResourceRunnerForm}, - WiRL.Client.ResourceDebuggerHeader in '..\..\Source\Client\WiRL.Client.ResourceDebuggerHeader.pas' {FormEditHeader}, - WiRL.Client.ResourceHeaderEditor in '..\..\Source\Client\WiRL.Client.ResourceHeaderEditor.pas' {FormHeadersEditor}, - WiRL.Wizards.Dialogs.ServerProject in '..\..\Source\IDE Wizard\WiRL.Wizards.Dialogs.ServerProject.pas' {formServerProjectDialog}, - WiRL.Wizards.Modules.Classes in '..\..\Source\IDE Wizard\WiRL.Wizards.Modules.Classes.pas', - WiRL.Wizards.Modules.MainForm in '..\..\Source\IDE Wizard\WiRL.Wizards.Modules.MainForm.pas', - WiRL.Wizards.Modules.Resources in '..\..\Source\IDE Wizard\WiRL.Wizards.Modules.Resources.pas', - WiRL.Wizards in '..\..\Source\IDE Wizard\WiRL.Wizards.pas', - WiRL.Wizards.ProjectCreator in '..\..\Source\IDE Wizard\WiRL.Wizards.ProjectCreator.pas', - WiRL.Wizards.Utils in '..\..\Source\IDE Wizard\WiRL.Wizards.Utils.pas'; - -end. diff --git a/Packages/11.0Alexandria/WiRLDesign.dproj b/Packages/11.0Alexandria/WiRLDesign.dproj deleted file mode 100644 index 3eacf3d4..00000000 --- a/Packages/11.0Alexandria/WiRLDesign.dproj +++ /dev/null @@ -1,210 +0,0 @@ - - - {B7363784-25C2-456C-BE44-D3E58F77E983} - WiRLDesign.dpk - 19.5 - VCL - True - Debug - Win32 - 1 - Package - - - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Cfg_1 - true - true - - - true - Base - true - - - ../../Source/Core;../../Source/Data/FireDAC;../../Libs/JWT/Source/Common;../../Libs/JWT/Source/JOSE;$(DCC_UnitSearchPath) - true - 1033 - true - All - true - WiRLDesign - ..\..\Lib\280\$(Platform)\$(Config) - .\$(Platform)\$(Config) - false - false - false - false - false - WiRL REST components - $(Auto) - true - - - DEBUG;$(DCC_Define) - true - false - true - true - true - - - false - RELEASE;$(DCC_Define) - 0 - 0 - - - - MainSource - - - - - - - - -
WiRLAppEditor
-
- - - -
WiRLClientAppResourceEditor
- dfm -
- -
WiRLResourceRunnerForm
- dfm -
- -
FormEditHeader
- dfm -
- -
FormHeadersEditor
- dfm -
- -
formServerProjectDialog
- dfm -
- - - - - - - - ResourceItem - RCDATA - WiRLServerMainFormDFM - - - ResourceItem - RCDATA - WiRLServerMainFormSRC - - - ResourceItem - RCDATA - WiRLServerResources - - - ResourceItem - RCDATA - WiRLServerProject - - - BITMAP - TWiRLClient - - - BITMAP - TWiRLClientApplication - - - BITMAP - TWiRLEngine - - - BITMAP - TWiRLFileSystemEngine - - - BITMAP - TWiRLhttpEngine - - - BITMAP - TWiRLMBWDefaultProvider - - - BITMAP - TWiRLServer - - - ICON - WiRLServerWizardIcon - - - BITMAP - WiRLSplash - - - Base - - - Cfg_1 - Base - - - Cfg_2 - Base - -
- - Delphi.Personality.12 - Package - - - - WiRLDesign.dpk - - - - - False - False - False - False - False - False - False - True - False - - - 12 - - - -
diff --git a/Packages/11.0Alexandria/WiRL.dpk b/Packages/11AndLater/WiRL.dpk similarity index 97% rename from Packages/11.0Alexandria/WiRL.dpk rename to Packages/11AndLater/WiRL.dpk index 046924d0..171609dd 100644 --- a/Packages/11.0Alexandria/WiRL.dpk +++ b/Packages/11AndLater/WiRL.dpk @@ -98,6 +98,7 @@ contains WiRL.http.Response in '..\..\Source\Core\WiRL.http.Response.pas', WiRL.http.Server in '..\..\Source\Core\WiRL.http.Server.pas', WiRL.http.Server.Indy in '..\..\Source\Core\WiRL.http.Server.Indy.pas', + WiRL.http.Server.WebBroker in '..\..\Source\Core\WiRL.http.Server.WebBroker.pas', WiRL.http.Server.Interfaces in '..\..\Source\Core\WiRL.http.Server.Interfaces.pas', WiRL.http.URL in '..\..\Source\Core\WiRL.http.URL.pas', WiRL.http.Headers in '..\..\Source\Core\WiRL.http.Headers.pas', @@ -134,6 +135,7 @@ contains WiRL.Configuration.Converter in '..\..\Source\Core\WiRL.Configuration.Converter.pas', WiRL.Configuration.Compression in '..\..\Source\Core\WiRL.Configuration.Compression.pas', WiRL.Configuration.OpenAPI in '..\..\Source\Core\WiRL.Configuration.OpenAPI.pas', + WiRL.Configuration.Errors in '..\..\Source\Core\WiRL.Configuration.Errors.pas', WiRL.Rtti.Utils in '..\..\Source\Core\WiRL.Rtti.Utils.pas'; end. diff --git a/Packages/12.0Athens/WiRL.dproj b/Packages/11AndLater/WiRL.dproj similarity index 97% rename from Packages/12.0Athens/WiRL.dproj rename to Packages/11AndLater/WiRL.dproj index 7c22d8bf..941ee37f 100644 --- a/Packages/12.0Athens/WiRL.dproj +++ b/Packages/11AndLater/WiRL.dproj @@ -128,6 +128,7 @@ + @@ -164,7 +165,9 @@ + + Base diff --git a/Packages/12.0Athens/WiRLDesign.dpk b/Packages/11AndLater/WiRLDesign.dpk similarity index 94% rename from Packages/12.0Athens/WiRLDesign.dpk rename to Packages/11AndLater/WiRLDesign.dpk index 11166527..86db634d 100644 --- a/Packages/12.0Athens/WiRLDesign.dpk +++ b/Packages/11AndLater/WiRLDesign.dpk @@ -37,7 +37,7 @@ package WiRLDesign; {$IMAGEBASE $400000} {$DEFINE DEBUG} {$ENDIF IMPLICITBUILDING} -{$DESCRIPTION 'WiRL REST components'} +{$DESCRIPTION 'WiRL REST Components'} {$LIBSUFFIX AUTO} {$DESIGNONLY} {$IMPLICITBUILD OFF} @@ -64,6 +64,7 @@ contains WiRL.Wizards.Modules.Resources in '..\..\Source\IDE Wizard\WiRL.Wizards.Modules.Resources.pas', WiRL.Wizards in '..\..\Source\IDE Wizard\WiRL.Wizards.pas', WiRL.Wizards.ProjectCreator in '..\..\Source\IDE Wizard\WiRL.Wizards.ProjectCreator.pas', - WiRL.Wizards.Utils in '..\..\Source\IDE Wizard\WiRL.Wizards.Utils.pas'; + WiRL.Wizards.Utils in '..\..\Source\IDE Wizard\WiRL.Wizards.Utils.pas', + WiRL.Wizards.Dialogs.NewResource in '..\..\Source\IDE Wizard\WiRL.Wizards.Dialogs.NewResource.pas' {formNewResourceDialog}; end. diff --git a/Packages/12.0Athens/WiRLDesign.dproj b/Packages/11AndLater/WiRLDesign.dproj similarity index 97% rename from Packages/12.0Athens/WiRLDesign.dproj rename to Packages/11AndLater/WiRLDesign.dproj index 65f8484c..f8d517f2 100644 --- a/Packages/12.0Athens/WiRLDesign.dproj +++ b/Packages/11AndLater/WiRLDesign.dproj @@ -114,6 +114,10 @@ + +
formNewResourceDialog
+ dfm +
ResourceItem RCDATA @@ -209,4 +213,5 @@ + diff --git a/Packages/11.0Alexandria/WiRLGroup.groupproj b/Packages/11AndLater/WiRLGroup.groupproj similarity index 87% rename from Packages/11.0Alexandria/WiRLGroup.groupproj rename to Packages/11AndLater/WiRLGroup.groupproj index 6af01ac6..7fb2557e 100644 --- a/Packages/11.0Alexandria/WiRLGroup.groupproj +++ b/Packages/11AndLater/WiRLGroup.groupproj @@ -44,5 +44,14 @@ + + + + + + + + + diff --git a/Packages/12.0Athens/WiRL.dpk b/Packages/12.0Athens/WiRL.dpk deleted file mode 100644 index 046924d0..00000000 --- a/Packages/12.0Athens/WiRL.dpk +++ /dev/null @@ -1,140 +0,0 @@ -{******************************************************************************} -{ } -{ WiRL: RESTful Library for Delphi } -{ } -{ Copyright (c) 2015 WiRL Team } -{ https://github.com/delphi-blocks/WiRL } -{ } -{ Licensed under the Apache License, Version 2.0 } -{ http://www.apache.org/licenses/LICENSE-2.0 } -{ } -{******************************************************************************} -package WiRL; - -{$R *.res} -{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} -{$ALIGN 8} -{$ASSERTIONS ON} -{$BOOLEVAL OFF} -{$DEBUGINFO OFF} -{$EXTENDEDSYNTAX ON} -{$IMPORTEDDATA ON} -{$IOCHECKS ON} -{$LOCALSYMBOLS ON} -{$LONGSTRINGS ON} -{$OPENSTRINGS ON} -{$OPTIMIZATION OFF} -{$OVERFLOWCHECKS OFF} -{$RANGECHECKS OFF} -{$REFERENCEINFO ON} -{$SAFEDIVIDE OFF} -{$STACKFRAMES ON} -{$TYPEDADDRESS OFF} -{$VARSTRINGCHECKS ON} -{$WRITEABLECONST OFF} -{$MINENUMSIZE 1} -{$IMAGEBASE $400000} -{$DEFINE DEBUG} -{$ENDIF IMPLICITBUILDING} -{$DESCRIPTION 'WiRL REST Library'} -{$LIBSUFFIX AUTO} -{$RUNONLY} -{$IMPLICITBUILD OFF} - -requires - rtl, - inet, - dbrtl, - FireDACCommon, - FireDACCommonDriver, - FireDAC, - IndySystem, - IndyProtocols, - IndyCore, - bindengine, - bindcomp, - JOSE, - Neon, - OpenAPI; - -contains - WiRL.Core.Application in '..\..\Source\Core\WiRL.Core.Application.pas', - WiRL.Core.Application.Worker in '..\..\Source\Core\WiRL.Core.Application.Worker.pas', - WiRL.Core.Attributes in '..\..\Source\Core\WiRL.Core.Attributes.pas', - WiRL.Core.Auth.Context in '..\..\Source\Core\WiRL.Core.Auth.Context.pas', - WiRL.Core.Cache in '..\..\Source\Core\WiRL.Core.Cache.pas', - WiRL.Core.Classes in '..\..\Source\Core\WiRL.Core.Classes.pas', - WiRL.Core.Context in '..\..\Source\Core\WiRL.Core.Context.pas', - WiRL.Core.Declarations in '..\..\Source\Core\WiRL.Core.Declarations.pas', - WiRL.Core.Exceptions in '..\..\Source\Core\WiRL.Core.Exceptions.pas', - WiRL.Core.Injection in '..\..\Source\Core\WiRL.Core.Injection.pas', - WiRL.Core.JSON in '..\..\Source\Core\WiRL.Core.JSON.pas', - WiRL.Core.GarbageCollector in '..\..\Source\Core\WiRL.Core.GarbageCollector.pas', - WiRL.Core.Metadata.XMLDoc in '..\..\Source\Core\WiRL.Core.Metadata.XMLDoc.pas', - WiRL.Core.OpenAPI in '..\..\Source\Core\WiRL.Core.OpenAPI.pas', - WiRL.Core.OpenAPI.Resource in '..\..\Source\Core\WiRL.Core.OpenAPI.Resource.pas', - WiRL.Core.MessageBody.Classes in '..\..\Source\Core\WiRL.Core.MessageBody.Classes.pas', - WiRL.Core.MessageBody.Default in '..\..\Source\Core\WiRL.Core.MessageBody.Default.pas', - WiRL.Core.MessageBodyReader in '..\..\Source\Core\WiRL.Core.MessageBodyReader.pas', - WiRL.Core.MessageBodyWriter in '..\..\Source\Core\WiRL.Core.MessageBodyWriter.pas', - WiRL.Core.Registry in '..\..\Source\Core\WiRL.Core.Registry.pas', - WiRL.Core.Singleton in '..\..\Source\Core\WiRL.Core.Singleton.pas', - WiRL.Core.Utils in '..\..\Source\Core\WiRL.Core.Utils.pas', - WiRL.Core.Tuples in '..\..\Source\Core\WiRL.Core.Tuples.pas', - WiRL.Core.Validators in '..\..\Source\Core\WiRL.Core.Validators.pas', - WiRL.Core.Converter in '..\..\Source\Core\WiRL.Core.Converter.pas', - WiRL.Core.Context.Server in '..\..\Source\Core\WiRL.Core.Context.Server.pas', - WiRL.Core.Metadata in '..\..\Source\Core\WiRL.Core.Metadata.pas', - WiRL.Core.Auth.Resource in '..\..\Source\Core\WiRL.Core.Auth.Resource.pas', - WiRL.http.Accept.Charset in '..\..\Source\Core\WiRL.http.Accept.Charset.pas', - WiRL.http.Accept.Encoding in '..\..\Source\Core\WiRL.http.Accept.Encoding.pas', - WiRL.http.Accept.Language in '..\..\Source\Core\WiRL.http.Accept.Language.pas', - WiRL.http.Accept.MediaType in '..\..\Source\Core\WiRL.http.Accept.MediaType.pas', - WiRL.http.Accept.Parser in '..\..\Source\Core\WiRL.http.Accept.Parser.pas', - WiRL.http.Cookie in '..\..\Source\Core\WiRL.http.Cookie.pas', - WiRL.http.Core in '..\..\Source\Core\WiRL.http.Core.pas', - WiRL.http.Filters in '..\..\Source\Core\WiRL.http.Filters.pas', - WiRL.http.Request in '..\..\Source\Core\WiRL.http.Request.pas', - WiRL.http.Response in '..\..\Source\Core\WiRL.http.Response.pas', - WiRL.http.Server in '..\..\Source\Core\WiRL.http.Server.pas', - WiRL.http.Server.Indy in '..\..\Source\Core\WiRL.http.Server.Indy.pas', - WiRL.http.Server.Interfaces in '..\..\Source\Core\WiRL.http.Server.Interfaces.pas', - WiRL.http.URL in '..\..\Source\Core\WiRL.http.URL.pas', - WiRL.http.Headers in '..\..\Source\Core\WiRL.http.Headers.pas', - WiRL.http.MultipartData in '..\..\Source\Core\WiRL.http.MultipartData.pas', - WiRL.http.Filters.Compression in '..\..\Source\Core\WiRL.http.Filters.Compression.pas', - WiRL.http.Filters.CORS in '..\..\Source\Core\WiRL.http.Filters.CORS.pas', - WiRL.http.Client in '..\..\Source\Client\WiRL.http.Client.pas', - WiRL.http.Client.Indy in '..\..\Source\Client\WiRL.http.Client.Indy.pas', - WiRL.http.Client.NetHttp in '..\..\Source\Client\WiRL.http.Client.NetHttp.pas', - WiRL.http.Client.Interfaces in '..\..\Source\Client\WiRL.http.Client.Interfaces.pas', - WiRL.Engine.Core in '..\..\Source\Core\WiRL.Engine.Core.pas', - WiRL.Engine.REST in '..\..\Source\Core\WiRL.Engine.REST.pas', - WiRL.Engine.HTTP in '..\..\Source\Core\WiRL.Engine.HTTP.pas', - WiRL.Engine.FileSystem in '..\..\Source\Core\WiRL.Engine.FileSystem.pas', - WiRL.Engine.WebServer in '..\..\Source\Core\WiRL.Engine.WebServer.pas', - WiRL.Data.Utils in '..\..\Source\Data\WiRL.Data.Utils.pas', - WiRL.Data.MessageBody.Default in '..\..\Source\Data\WiRL.Data.MessageBody.Default.pas', - WiRL.Data.FireDAC in '..\..\Source\Data\FireDAC\WiRL.Data.FireDAC.pas', - WiRL.Data.FireDAC.Updates in '..\..\Source\Data\FireDAC\WiRL.Data.FireDAC.Updates.pas', - WiRL.Data.FireDAC.Persistence in '..\..\Source\Data\FireDAC\WiRL.Data.FireDAC.Persistence.pas', - WiRL.Data.FireDAC.MessageBody.Default in '..\..\Source\Data\FireDAC\WiRL.Data.FireDAC.MessageBody.Default.pas', - WiRL.Data.FireDAC.Utils in '..\..\Source\Data\FireDAC\WiRL.Data.FireDAC.Utils.pas', - WiRL.Client.Application in '..\..\Source\Client\WiRL.Client.Application.pas', - WiRL.Client.Utils in '..\..\Source\Client\WiRL.Client.Utils.pas', - WiRL.Client.Filters in '..\..\Source\Client\WiRL.Client.Filters.pas', - WiRL.Client.Resource in '..\..\Source\Client\WiRL.Client.Resource.pas', - WiRL.Client.CustomResource in '..\..\Source\Client\WiRL.Client.CustomResource.pas', - WiRL.Client.Utils.LiveBindings in '..\..\Source\Client\WiRL.Client.Utils.LiveBindings.pas', - WiRL.Configuration.Auth in '..\..\Source\Core\WiRL.Configuration.Auth.pas', - WiRL.Configuration.Core in '..\..\Source\Core\WiRL.Configuration.Core.pas', - WiRL.Configuration.JWT in '..\..\Source\Core\WiRL.Configuration.JWT.pas', - WiRL.Configuration.Neon in '..\..\Source\Core\WiRL.Configuration.Neon.pas', - WiRL.Configuration.CORS in '..\..\Source\Core\WiRL.Configuration.CORS.pas', - WiRL.Configuration.Converter in '..\..\Source\Core\WiRL.Configuration.Converter.pas', - WiRL.Configuration.Compression in '..\..\Source\Core\WiRL.Configuration.Compression.pas', - WiRL.Configuration.OpenAPI in '..\..\Source\Core\WiRL.Configuration.OpenAPI.pas', - WiRL.Rtti.Utils in '..\..\Source\Core\WiRL.Rtti.Utils.pas'; - -end. - diff --git a/Packages/12.0Athens/WiRLGroup.groupproj b/Packages/12.0Athens/WiRLGroup.groupproj deleted file mode 100644 index 6af01ac6..00000000 --- a/Packages/12.0Athens/WiRLGroup.groupproj +++ /dev/null @@ -1,48 +0,0 @@ - - - {05487DDC-ED85-4481-B211-A4EA9062C73D} - - - - - - - - - - - Default.Personality.12 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Samples/PetStore/bin/README.md b/Samples/PetStore/bin/README.md new file mode 100644 index 00000000..07f894a5 --- /dev/null +++ b/Samples/PetStore/bin/README.md @@ -0,0 +1 @@ +Binaries folder \ No newline at end of file diff --git a/Samples/PetStore/dist/OAS/Components.Headers.json b/Samples/PetStore/dist/OAS/Components.Headers.json new file mode 100644 index 00000000..fd366ee2 --- /dev/null +++ b/Samples/PetStore/dist/OAS/Components.Headers.json @@ -0,0 +1,21 @@ +{ + "X-RateLimit-Limit": { + "description": "Request limit per hour.", + "schema": { + "type": "integer" + } + }, + "X-RateLimit-Remaining": { + "description": "The number of requests left for the time window.", + "schema": { + "type": "integer" + } + }, + "X-RateLimit-Reset": { + "description": "The UTC date/time at which the current rate limit window resets.", + "schema": { + "type": "string", + "format": "date-time" + } + } +} \ No newline at end of file diff --git a/Samples/PetStore/dist/OAS/Components.Info.json b/Samples/PetStore/dist/OAS/Components.Info.json new file mode 100644 index 00000000..a7c24fc9 --- /dev/null +++ b/Samples/PetStore/dist/OAS/Components.Info.json @@ -0,0 +1,15 @@ +{ + "title": "string", + "description": "NullString", + "termsOfService": "NullString", + "contact": { + "name": "NullString", + "url": "NullString", + "email": "NullString" + }, + "license": { + "name": "NullString", + "url": "NullString" + }, + "version": "string" +} \ No newline at end of file diff --git a/Samples/PetStore/dist/OAS/Components.Servers.json b/Samples/PetStore/dist/OAS/Components.Servers.json new file mode 100644 index 00000000..83dddb7c --- /dev/null +++ b/Samples/PetStore/dist/OAS/Components.Servers.json @@ -0,0 +1,10 @@ +[ + { + "url": "http://localhost:8080/", + "description": "Test Server" + }, + { + "url": "http://server.api:8080/", + "description": "Production Server" + } +] \ No newline at end of file diff --git a/Samples/PetStore/dist/OAS/TPetResource.json b/Samples/PetStore/dist/OAS/TPetResource.json new file mode 100644 index 00000000..c563c163 --- /dev/null +++ b/Samples/PetStore/dist/OAS/TPetResource.json @@ -0,0 +1,39 @@ +{ + "name": "pet", + "description": "Everything about your Pets", + "methods": { + "GetPetByTags": { + "id": "getPetById", + "name": "findPetsByTags", + "summary": "Finds Pets by tags", + "description": "Multiple tags can be provided with comma separated strings", + "params": { + "ATags": { + "required": true, + "description": "Tags to filter by" + } + }, + "responses": { + "200": { + "description": "Successful operation", + "headers": { + "X-RateLimit-Remaining": { + "delphiType": "integer" + } + } + }, + "400": { + "ref": "BadRequest", + }, + "500": { + "schema": "Error", + "description": "Generic Server Error" + }, + "zzz": { + "schema": "Error", + "description": "Standard API Error" + }, + } + } + } +} \ No newline at end of file diff --git a/Samples/PetStore/dist/UI/api-logo.png b/Samples/PetStore/dist/UI/api-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..61f2867ca245ab6ab70bbeaa2d674a651fb31ce1 GIT binary patch literal 15207 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 WBD;-_8+J$*PC-Uhx?0jS?Ee7zgR-Ci literal 0 HcmV?d00001 diff --git a/Samples/PetStore/dist/UI/drawing.svg b/Samples/PetStore/dist/UI/drawing.svg new file mode 100644 index 00000000..dc614f1b --- /dev/null +++ b/Samples/PetStore/dist/UI/drawing.svg @@ -0,0 +1,317 @@ + + + + + + + + + + + + + + + + REST:API + + + + + + + + + + + { } + REST:API + + WiRL + + + + + + + + + + + + + + + + + + { } + REST:API + + WiRL + your logo goes here + + diff --git a/Samples/PetStore/dist/UI/favicon-16x16.png b/Samples/PetStore/dist/UI/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..8b194e617af1c135e6b37939591d24ac3a5efa18 GIT binary patch literal 665 zcmV;K0%rY*P)}JKSduyL>)s!A4EhTMMEM%Q;aL6%l#xiZiF>S;#Y{N2Zz%pvTGHJduXuC6Lx-)0EGfRy*N{Tv4i8@4oJ41gw zKzThrcRe|7J~(YYIBq{SYCkn-KQm=N8$CrEK1CcqMI1dv9z#VRL_{D)L|`QmF8}}l zJ9JV`Q}p!p_4f7m_U`WQ@apR4;o;!mnU<7}iG_qr zF(e)x9~BG-3IzcG2M4an0002kNkl41`ZiN1i62V%{PM@Ry|IS_+Yc7{bb`MM~xm(7p4|kMHP&!VGuDW4kFixat zXw43VmgwEvB$hXt_u=vZ>+v4i7E}n~eG6;n4Z=zF1n?T*yg<;W6kOfxpC6nao>VR% z?fpr=asSJ&`L*wu^rLJ5Peq*PB0;alL#XazZCBxJLd&giTfw@!hW167F^`7kobi;( ze<<>qNlP|xy7S1zl@lZNIBR7#o9ybJsptO#%}P0hz~sBp00000NkvXXu0mjfUsDF? literal 0 HcmV?d00001 diff --git a/Samples/PetStore/dist/UI/favicon-32x32.png b/Samples/PetStore/dist/UI/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..249737fe44558e679f0b67134e274461d988fa98 GIT binary patch literal 628 zcmV-)0*n2LP)Ma*GM0}OV<074bNCP7P7GVd{iMr*I6y~TMLss@FjvgL~HxU z%Vvj33AwpD(Z4*$Mfx=HaU16axM zt2xG_rloN<$iy9j9I5 + + + + + Swagger UI + + + + + + + +
+
+
+
+ + Powered by WiRL + +
+
+
+
+ +
+
+ API Logo +
+
+ +
+ + + + + + diff --git a/Samples/PetStore/dist/UI/oauth2-redirect.html b/Samples/PetStore/dist/UI/oauth2-redirect.html new file mode 100644 index 00000000..c4b7be17 --- /dev/null +++ b/Samples/PetStore/dist/UI/oauth2-redirect.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/Samples/PetStore/dist/UI/oauth2-redirect.js b/Samples/PetStore/dist/UI/oauth2-redirect.js new file mode 100644 index 00000000..af2f1342 --- /dev/null +++ b/Samples/PetStore/dist/UI/oauth2-redirect.js @@ -0,0 +1 @@ +"use strict";function run(){var e,r,t,a=window.opener.swaggerUIRedirectOauth2,o=a.state,n=a.redirectUrl;if((t=(r=/code|token|error/.test(window.location.hash)?window.location.hash.substring(1).replace("?","&"):location.search.substring(1)).split("&")).forEach((function(e,r,t){t[r]='"'+e.replace("=",'":"')+'"'})),e=(r=r?JSON.parse("{"+t.join()+"}",(function(e,r){return""===e?r:decodeURIComponent(r)})):{}).state===o,"accessCode"!==a.auth.schema.get("flow")&&"authorizationCode"!==a.auth.schema.get("flow")&&"authorization_code"!==a.auth.schema.get("flow")||a.auth.code)a.callback({auth:a.auth,token:r,isValid:e,redirectUrl:n});else if(e||a.errCb({authId:a.auth.name,source:"auth",level:"warning",message:"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"}),r.code)delete a.state,a.auth.code=r.code,a.callback({auth:a.auth,redirectUrl:n});else{let e;r.error&&(e="["+r.error+"]: "+(r.error_description?r.error_description+". ":"no accessCode received from the server. ")+(r.error_uri?"More info: "+r.error_uri:"")),a.errCb({authId:a.auth.name,source:"auth",level:"error",message:e||"[Authorization failed]: no accessCode received from the server"})}window.close()}"loading"!==document.readyState?run():document.addEventListener("DOMContentLoaded",(function(){run()})); \ No newline at end of file diff --git a/Samples/PetStore/dist/UI/swagger-initializer.js b/Samples/PetStore/dist/UI/swagger-initializer.js new file mode 100644 index 00000000..8ea0ea3a --- /dev/null +++ b/Samples/PetStore/dist/UI/swagger-initializer.js @@ -0,0 +1,20 @@ +window.onload = function() { + // + + // the following lines will be replaced by docker/configurator, when it runs in a docker-container + window.ui = SwaggerUIBundle({ + url: "https://petstore.swagger.io/v2/swagger.json", + dom_id: '#swagger-ui', + deepLinking: true, + presets: [ + SwaggerUIBundle.presets.apis, + SwaggerUIStandalonePreset + ], + plugins: [ + SwaggerUIBundle.plugins.DownloadUrl + ], + layout: "StandaloneLayout" + }); + + // +}; diff --git a/Samples/PetStore/dist/UI/swagger-ui-bundle.js b/Samples/PetStore/dist/UI/swagger-ui-bundle.js new file mode 100644 index 00000000..1c6777bb --- /dev/null +++ b/Samples/PetStore/dist/UI/swagger-ui-bundle.js @@ -0,0 +1,2 @@ +/*! For license information please see swagger-ui-bundle.js.LICENSE.txt */ +!function webpackUniversalModuleDefinition(s,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports.SwaggerUIBundle=o():s.SwaggerUIBundle=o()}(this,(()=>(()=>{var s={251:(s,o)=>{o.read=function(s,o,i,a,u){var _,w,x=8*u-a-1,C=(1<>1,L=-7,B=i?u-1:0,$=i?-1:1,U=s[o+B];for(B+=$,_=U&(1<<-L)-1,U>>=-L,L+=x;L>0;_=256*_+s[o+B],B+=$,L-=8);for(w=_&(1<<-L)-1,_>>=-L,L+=a;L>0;w=256*w+s[o+B],B+=$,L-=8);if(0===_)_=1-j;else{if(_===C)return w?NaN:1/0*(U?-1:1);w+=Math.pow(2,a),_-=j}return(U?-1:1)*w*Math.pow(2,_-a)},o.write=function(s,o,i,a,u,_){var w,x,C,j=8*_-u-1,L=(1<>1,$=23===u?Math.pow(2,-24)-Math.pow(2,-77):0,U=a?0:_-1,V=a?1:-1,z=o<0||0===o&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(x=isNaN(o)?1:0,w=L):(w=Math.floor(Math.log(o)/Math.LN2),o*(C=Math.pow(2,-w))<1&&(w--,C*=2),(o+=w+B>=1?$/C:$*Math.pow(2,1-B))*C>=2&&(w++,C/=2),w+B>=L?(x=0,w=L):w+B>=1?(x=(o*C-1)*Math.pow(2,u),w+=B):(x=o*Math.pow(2,B-1)*Math.pow(2,u),w=0));u>=8;s[i+U]=255&x,U+=V,x/=256,u-=8);for(w=w<0;s[i+U]=255&w,U+=V,w/=256,j-=8);s[i+U-V]|=128*z}},462:(s,o,i)=>{"use strict";var a=i(40975);s.exports=a},659:(s,o,i)=>{var a=i(51873),u=Object.prototype,_=u.hasOwnProperty,w=u.toString,x=a?a.toStringTag:void 0;s.exports=function getRawTag(s){var o=_.call(s,x),i=s[x];try{s[x]=void 0;var a=!0}catch(s){}var u=w.call(s);return a&&(o?s[x]=i:delete s[x]),u}},694:(s,o,i)=>{"use strict";i(91599);var a=i(37257);i(12560),s.exports=a},953:(s,o,i)=>{"use strict";s.exports=i(53375)},1733:s=>{var o=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;s.exports=function asciiWords(s){return s.match(o)||[]}},1882:(s,o,i)=>{var a=i(72552),u=i(23805);s.exports=function isFunction(s){if(!u(s))return!1;var o=a(s);return"[object Function]"==o||"[object GeneratorFunction]"==o||"[object AsyncFunction]"==o||"[object Proxy]"==o}},1907:(s,o,i)=>{"use strict";var a=i(41505),u=Function.prototype,_=u.call,w=a&&u.bind.bind(_,_);s.exports=a?w:function(s){return function(){return _.apply(s,arguments)}}},2205:function(s,o,i){var a;a=void 0!==i.g?i.g:this,s.exports=function(s){if(s.CSS&&s.CSS.escape)return s.CSS.escape;var cssEscape=function(s){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var o,i=String(s),a=i.length,u=-1,_="",w=i.charCodeAt(0);++u=1&&o<=31||127==o||0==u&&o>=48&&o<=57||1==u&&o>=48&&o<=57&&45==w?"\\"+o.toString(16)+" ":0==u&&1==a&&45==o||!(o>=128||45==o||95==o||o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122)?"\\"+i.charAt(u):i.charAt(u):_+="�";return _};return s.CSS||(s.CSS={}),s.CSS.escape=cssEscape,cssEscape}(a)},2209:(s,o,i)=>{"use strict";var a,u=i(9404),_=function productionTypeChecker(){invariant(!1,"ImmutablePropTypes type checking code is stripped in production.")};_.isRequired=_;var w=function getProductionTypeChecker(){return _};function getPropType(s){var o=typeof s;return Array.isArray(s)?"array":s instanceof RegExp?"object":s instanceof u.Iterable?"Immutable."+s.toSource().split(" ")[0]:o}function createChainableTypeChecker(s){function checkType(o,i,a,u,_,w){for(var x=arguments.length,C=Array(x>6?x-6:0),j=6;j>",null!=i[a]?s.apply(void 0,[i,a,u,_,w].concat(C)):o?new Error("Required "+_+" `"+w+"` was not specified in `"+u+"`."):void 0}var o=checkType.bind(null,!1);return o.isRequired=checkType.bind(null,!0),o}function createIterableSubclassTypeChecker(s,o){return function createImmutableTypeChecker(s,o){return createChainableTypeChecker((function validate(i,a,u,_,w){var x=i[a];if(!o(x)){var C=getPropType(x);return new Error("Invalid "+_+" `"+w+"` of type `"+C+"` supplied to `"+u+"`, expected `"+s+"`.")}return null}))}("Iterable."+s,(function(s){return u.Iterable.isIterable(s)&&o(s)}))}(a={listOf:w,mapOf:w,orderedMapOf:w,setOf:w,orderedSetOf:w,stackOf:w,iterableOf:w,recordOf:w,shape:w,contains:w,mapContains:w,orderedMapContains:w,list:_,map:_,orderedMap:_,set:_,orderedSet:_,stack:_,seq:_,record:_,iterable:_}).iterable.indexed=createIterableSubclassTypeChecker("Indexed",u.Iterable.isIndexed),a.iterable.keyed=createIterableSubclassTypeChecker("Keyed",u.Iterable.isKeyed),s.exports=a},2404:(s,o,i)=>{var a=i(60270);s.exports=function isEqual(s,o){return a(s,o)}},2523:s=>{s.exports=function baseFindIndex(s,o,i,a){for(var u=s.length,_=i+(a?1:-1);a?_--:++_{"use strict";var a=i(45951),u=Object.defineProperty;s.exports=function(s,o){try{u(a,s,{value:o,configurable:!0,writable:!0})}catch(i){a[s]=o}return o}},2694:(s,o,i)=>{"use strict";var a=i(6925);function emptyFunction(){}function emptyFunctionWithReset(){}emptyFunctionWithReset.resetWarningCache=emptyFunction,s.exports=function(){function shim(s,o,i,u,_,w){if(w!==a){var x=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw x.name="Invariant Violation",x}}function getShim(){return shim}shim.isRequired=shim;var s={array:shim,bigint:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,elementType:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim,checkPropTypes:emptyFunctionWithReset,resetWarningCache:emptyFunction};return s.PropTypes=s,s}},2874:s=>{s.exports={}},2875:(s,o,i)=>{"use strict";var a=i(23045),u=i(80376);s.exports=Object.keys||function keys(s){return a(s,u)}},2955:(s,o,i)=>{"use strict";var a,u=i(65606);function _defineProperty(s,o,i){return(o=function _toPropertyKey(s){var o=function _toPrimitive(s,o){if("object"!=typeof s||null===s)return s;var i=s[Symbol.toPrimitive];if(void 0!==i){var a=i.call(s,o||"default");if("object"!=typeof a)return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===o?String:Number)(s)}(s,"string");return"symbol"==typeof o?o:String(o)}(o))in s?Object.defineProperty(s,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):s[o]=i,s}var _=i(86238),w=Symbol("lastResolve"),x=Symbol("lastReject"),C=Symbol("error"),j=Symbol("ended"),L=Symbol("lastPromise"),B=Symbol("handlePromise"),$=Symbol("stream");function createIterResult(s,o){return{value:s,done:o}}function readAndResolve(s){var o=s[w];if(null!==o){var i=s[$].read();null!==i&&(s[L]=null,s[w]=null,s[x]=null,o(createIterResult(i,!1)))}}function onReadable(s){u.nextTick(readAndResolve,s)}var U=Object.getPrototypeOf((function(){})),V=Object.setPrototypeOf((_defineProperty(a={get stream(){return this[$]},next:function next(){var s=this,o=this[C];if(null!==o)return Promise.reject(o);if(this[j])return Promise.resolve(createIterResult(void 0,!0));if(this[$].destroyed)return new Promise((function(o,i){u.nextTick((function(){s[C]?i(s[C]):o(createIterResult(void 0,!0))}))}));var i,a=this[L];if(a)i=new Promise(function wrapForNext(s,o){return function(i,a){s.then((function(){o[j]?i(createIterResult(void 0,!0)):o[B](i,a)}),a)}}(a,this));else{var _=this[$].read();if(null!==_)return Promise.resolve(createIterResult(_,!1));i=new Promise(this[B])}return this[L]=i,i}},Symbol.asyncIterator,(function(){return this})),_defineProperty(a,"return",(function _return(){var s=this;return new Promise((function(o,i){s[$].destroy(null,(function(s){s?i(s):o(createIterResult(void 0,!0))}))}))})),a),U);s.exports=function createReadableStreamAsyncIterator(s){var o,i=Object.create(V,(_defineProperty(o={},$,{value:s,writable:!0}),_defineProperty(o,w,{value:null,writable:!0}),_defineProperty(o,x,{value:null,writable:!0}),_defineProperty(o,C,{value:null,writable:!0}),_defineProperty(o,j,{value:s._readableState.endEmitted,writable:!0}),_defineProperty(o,B,{value:function value(s,o){var a=i[$].read();a?(i[L]=null,i[w]=null,i[x]=null,s(createIterResult(a,!1))):(i[w]=s,i[x]=o)},writable:!0}),o));return i[L]=null,_(s,(function(s){if(s&&"ERR_STREAM_PREMATURE_CLOSE"!==s.code){var o=i[x];return null!==o&&(i[L]=null,i[w]=null,i[x]=null,o(s)),void(i[C]=s)}var a=i[w];null!==a&&(i[L]=null,i[w]=null,i[x]=null,a(createIterResult(void 0,!0))),i[j]=!0})),s.on("readable",onReadable.bind(null,i)),i}},3110:(s,o,i)=>{const a=i(5187),u=i(85015),_=i(98023),w=i(53812),x=i(23805),C=i(85105),j=i(86804);class Namespace{constructor(s){this.elementMap={},this.elementDetection=[],this.Element=j.Element,this.KeyValuePair=j.KeyValuePair,s&&s.noDefault||this.useDefault(),this._attributeElementKeys=[],this._attributeElementArrayKeys=[]}use(s){return s.namespace&&s.namespace({base:this}),s.load&&s.load({base:this}),this}useDefault(){return this.register("null",j.NullElement).register("string",j.StringElement).register("number",j.NumberElement).register("boolean",j.BooleanElement).register("array",j.ArrayElement).register("object",j.ObjectElement).register("member",j.MemberElement).register("ref",j.RefElement).register("link",j.LinkElement),this.detect(a,j.NullElement,!1).detect(u,j.StringElement,!1).detect(_,j.NumberElement,!1).detect(w,j.BooleanElement,!1).detect(Array.isArray,j.ArrayElement,!1).detect(x,j.ObjectElement,!1),this}register(s,o){return this._elements=void 0,this.elementMap[s]=o,this}unregister(s){return this._elements=void 0,delete this.elementMap[s],this}detect(s,o,i){return void 0===i||i?this.elementDetection.unshift([s,o]):this.elementDetection.push([s,o]),this}toElement(s){if(s instanceof this.Element)return s;let o;for(let i=0;i{const o=s[0].toUpperCase()+s.substr(1);this._elements[o]=this.elementMap[s]}))),this._elements}get serialiser(){return new C(this)}}C.prototype.Namespace=Namespace,s.exports=Namespace},3121:(s,o,i)=>{"use strict";var a=i(65482),u=Math.min;s.exports=function(s){var o=a(s);return o>0?u(o,9007199254740991):0}},3209:(s,o,i)=>{var a=i(91596),u=i(53320),_=i(36306),w="__lodash_placeholder__",x=128,C=Math.min;s.exports=function mergeData(s,o){var i=s[1],j=o[1],L=i|j,B=L<131,$=j==x&&8==i||j==x&&256==i&&s[7].length<=o[8]||384==j&&o[7].length<=o[8]&&8==i;if(!B&&!$)return s;1&j&&(s[2]=o[2],L|=1&i?0:4);var U=o[3];if(U){var V=s[3];s[3]=V?a(V,U,o[4]):U,s[4]=V?_(s[3],w):o[4]}return(U=o[5])&&(V=s[5],s[5]=V?u(V,U,o[6]):U,s[6]=V?_(s[5],w):o[6]),(U=o[7])&&(s[7]=U),j&x&&(s[8]=null==s[8]?o[8]:C(s[8],o[8])),null==s[9]&&(s[9]=o[9]),s[0]=o[0],s[1]=L,s}},3650:(s,o,i)=>{var a=i(74335)(Object.keys,Object);s.exports=a},3656:(s,o,i)=>{s=i.nmd(s);var a=i(9325),u=i(89935),_=o&&!o.nodeType&&o,w=_&&s&&!s.nodeType&&s,x=w&&w.exports===_?a.Buffer:void 0,C=(x?x.isBuffer:void 0)||u;s.exports=C},4509:(s,o,i)=>{var a=i(12651);s.exports=function mapCacheHas(s){return a(this,s).has(s)}},4640:s=>{"use strict";var o=String;s.exports=function(s){try{return o(s)}catch(s){return"Object"}}},4664:(s,o,i)=>{var a=i(79770),u=i(63345),_=Object.prototype.propertyIsEnumerable,w=Object.getOwnPropertySymbols,x=w?function(s){return null==s?[]:(s=Object(s),a(w(s),(function(o){return _.call(s,o)})))}:u;s.exports=x},4901:(s,o,i)=>{var a=i(72552),u=i(30294),_=i(40346),w={};w["[object Float32Array]"]=w["[object Float64Array]"]=w["[object Int8Array]"]=w["[object Int16Array]"]=w["[object Int32Array]"]=w["[object Uint8Array]"]=w["[object Uint8ClampedArray]"]=w["[object Uint16Array]"]=w["[object Uint32Array]"]=!0,w["[object Arguments]"]=w["[object Array]"]=w["[object ArrayBuffer]"]=w["[object Boolean]"]=w["[object DataView]"]=w["[object Date]"]=w["[object Error]"]=w["[object Function]"]=w["[object Map]"]=w["[object Number]"]=w["[object Object]"]=w["[object RegExp]"]=w["[object Set]"]=w["[object String]"]=w["[object WeakMap]"]=!1,s.exports=function baseIsTypedArray(s){return _(s)&&u(s.length)&&!!w[a(s)]}},4993:(s,o,i)=>{"use strict";var a=i(16946),u=i(74239);s.exports=function(s){return a(u(s))}},5187:s=>{s.exports=function isNull(s){return null===s}},5419:s=>{s.exports=function(s,o,i,a){var u=new Blob(void 0!==a?[a,s]:[s],{type:i||"application/octet-stream"});if(void 0!==window.navigator.msSaveBlob)window.navigator.msSaveBlob(u,o);else{var _=window.URL&&window.URL.createObjectURL?window.URL.createObjectURL(u):window.webkitURL.createObjectURL(u),w=document.createElement("a");w.style.display="none",w.href=_,w.setAttribute("download",o),void 0===w.download&&w.setAttribute("target","_blank"),document.body.appendChild(w),w.click(),setTimeout((function(){document.body.removeChild(w),window.URL.revokeObjectURL(_)}),200)}}},5556:(s,o,i)=>{s.exports=i(2694)()},5861:(s,o,i)=>{var a=i(55580),u=i(68223),_=i(32804),w=i(76545),x=i(28303),C=i(72552),j=i(47473),L="[object Map]",B="[object Promise]",$="[object Set]",U="[object WeakMap]",V="[object DataView]",z=j(a),Y=j(u),Z=j(_),ee=j(w),ie=j(x),ae=C;(a&&ae(new a(new ArrayBuffer(1)))!=V||u&&ae(new u)!=L||_&&ae(_.resolve())!=B||w&&ae(new w)!=$||x&&ae(new x)!=U)&&(ae=function(s){var o=C(s),i="[object Object]"==o?s.constructor:void 0,a=i?j(i):"";if(a)switch(a){case z:return V;case Y:return L;case Z:return B;case ee:return $;case ie:return U}return o}),s.exports=ae},6048:s=>{s.exports=function negate(s){if("function"!=typeof s)throw new TypeError("Expected a function");return function(){var o=arguments;switch(o.length){case 0:return!s.call(this);case 1:return!s.call(this,o[0]);case 2:return!s.call(this,o[0],o[1]);case 3:return!s.call(this,o[0],o[1],o[2])}return!s.apply(this,o)}}},6188:s=>{"use strict";s.exports=Math.max},6205:s=>{s.exports={ROOT:0,GROUP:1,POSITION:2,SET:3,RANGE:4,REPETITION:5,REFERENCE:6,CHAR:7}},6233:(s,o,i)=>{const a=i(6048),u=i(10316),_=i(92340);class ArrayElement extends u{constructor(s,o,i){super(s||[],o,i),this.element="array"}primitive(){return"array"}get(s){return this.content[s]}getValue(s){const o=this.get(s);if(o)return o.toValue()}getIndex(s){return this.content[s]}set(s,o){return this.content[s]=this.refract(o),this}remove(s){const o=this.content.splice(s,1);return o.length?o[0]:null}map(s,o){return this.content.map(s,o)}flatMap(s,o){return this.map(s,o).reduce(((s,o)=>s.concat(o)),[])}compactMap(s,o){const i=[];return this.forEach((a=>{const u=s.bind(o)(a);u&&i.push(u)})),i}filter(s,o){return new _(this.content.filter(s,o))}reject(s,o){return this.filter(a(s),o)}reduce(s,o){let i,a;void 0!==o?(i=0,a=this.refract(o)):(i=1,a="object"===this.primitive()?this.first.value:this.first);for(let o=i;o{s.bind(o)(i,this.refract(a))}))}shift(){return this.content.shift()}unshift(s){this.content.unshift(this.refract(s))}push(s){return this.content.push(this.refract(s)),this}add(s){this.push(s)}findElements(s,o){const i=o||{},a=!!i.recursive,u=void 0===i.results?[]:i.results;return this.forEach(((o,i,_)=>{a&&void 0!==o.findElements&&o.findElements(s,{results:u,recursive:a}),s(o,i,_)&&u.push(o)})),u}find(s){return new _(this.findElements(s,{recursive:!0}))}findByElement(s){return this.find((o=>o.element===s))}findByClass(s){return this.find((o=>o.classes.includes(s)))}getById(s){return this.find((o=>o.id.toValue()===s)).first}includes(s){return this.content.some((o=>o.equals(s)))}contains(s){return this.includes(s)}empty(){return new this.constructor([])}"fantasy-land/empty"(){return this.empty()}concat(s){return new this.constructor(this.content.concat(s.content))}"fantasy-land/concat"(s){return this.concat(s)}"fantasy-land/map"(s){return new this.constructor(this.map(s))}"fantasy-land/chain"(s){return this.map((o=>s(o)),this).reduce(((s,o)=>s.concat(o)),this.empty())}"fantasy-land/filter"(s){return new this.constructor(this.content.filter(s))}"fantasy-land/reduce"(s,o){return this.content.reduce(s,o)}get length(){return this.content.length}get isEmpty(){return 0===this.content.length}get first(){return this.getIndex(0)}get second(){return this.getIndex(1)}get last(){return this.getIndex(this.length-1)}}ArrayElement.empty=function empty(){return new this},ArrayElement["fantasy-land/empty"]=ArrayElement.empty,"undefined"!=typeof Symbol&&(ArrayElement.prototype[Symbol.iterator]=function symbol(){return this.content[Symbol.iterator]()}),s.exports=ArrayElement},6499:(s,o,i)=>{"use strict";var a=i(1907),u=0,_=Math.random(),w=a(1..toString);s.exports=function(s){return"Symbol("+(void 0===s?"":s)+")_"+w(++u+_,36)}},6549:s=>{"use strict";s.exports=Object.getOwnPropertyDescriptor},6925:s=>{"use strict";s.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},7057:(s,o,i)=>{"use strict";var a=i(11470).charAt,u=i(90160),_=i(64932),w=i(60183),x=i(59550),C="String Iterator",j=_.set,L=_.getterFor(C);w(String,"String",(function(s){j(this,{type:C,string:u(s),index:0})}),(function next(){var s,o=L(this),i=o.string,u=o.index;return u>=i.length?x(void 0,!0):(s=a(i,u),o.index+=s.length,x(s,!1))}))},7176:(s,o,i)=>{"use strict";var a,u=i(73126),_=i(75795);try{a=[].__proto__===Array.prototype}catch(s){if(!s||"object"!=typeof s||!("code"in s)||"ERR_PROTO_ACCESS"!==s.code)throw s}var w=!!a&&_&&_(Object.prototype,"__proto__"),x=Object,C=x.getPrototypeOf;s.exports=w&&"function"==typeof w.get?u([w.get]):"function"==typeof C&&function getDunder(s){return C(null==s?s:x(s))}},7309:(s,o,i)=>{var a=i(62006)(i(24713));s.exports=a},7376:s=>{"use strict";s.exports=!0},7463:(s,o,i)=>{"use strict";var a=i(98828),u=i(62250),_=/#|\.prototype\./,isForced=function(s,o){var i=x[w(s)];return i===j||i!==C&&(u(o)?a(o):!!o)},w=isForced.normalize=function(s){return String(s).replace(_,".").toLowerCase()},x=isForced.data={},C=isForced.NATIVE="N",j=isForced.POLYFILL="P";s.exports=isForced},7666:(s,o,i)=>{var a=i(84851),u=i(953);function _extends(){var o;return s.exports=_extends=a?u(o=a).call(o):function(s){for(var o=1;o{const a=i(6205);o.wordBoundary=()=>({type:a.POSITION,value:"b"}),o.nonWordBoundary=()=>({type:a.POSITION,value:"B"}),o.begin=()=>({type:a.POSITION,value:"^"}),o.end=()=>({type:a.POSITION,value:"$"})},8068:s=>{"use strict";var o=(()=>{var s=Object.defineProperty,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,_=Object.prototype.propertyIsEnumerable,__defNormalProp=(o,i,a)=>i in o?s(o,i,{enumerable:!0,configurable:!0,writable:!0,value:a}):o[i]=a,__spreadValues=(s,o)=>{for(var i in o||(o={}))u.call(o,i)&&__defNormalProp(s,i,o[i]);if(a)for(var i of a(o))_.call(o,i)&&__defNormalProp(s,i,o[i]);return s},__publicField=(s,o,i)=>__defNormalProp(s,"symbol"!=typeof o?o+"":o,i),w={};((o,i)=>{for(var a in i)s(o,a,{get:i[a],enumerable:!0})})(w,{DEFAULT_OPTIONS:()=>C,DEFAULT_UUID_LENGTH:()=>x,default:()=>B});var x=6,C={dictionary:"alphanum",shuffle:!0,debug:!1,length:x,counter:0},j=class _ShortUniqueId{constructor(s={}){__publicField(this,"counter"),__publicField(this,"debug"),__publicField(this,"dict"),__publicField(this,"version"),__publicField(this,"dictIndex",0),__publicField(this,"dictRange",[]),__publicField(this,"lowerBound",0),__publicField(this,"upperBound",0),__publicField(this,"dictLength",0),__publicField(this,"uuidLength"),__publicField(this,"_digit_first_ascii",48),__publicField(this,"_digit_last_ascii",58),__publicField(this,"_alpha_lower_first_ascii",97),__publicField(this,"_alpha_lower_last_ascii",123),__publicField(this,"_hex_last_ascii",103),__publicField(this,"_alpha_upper_first_ascii",65),__publicField(this,"_alpha_upper_last_ascii",91),__publicField(this,"_number_dict_ranges",{digits:[this._digit_first_ascii,this._digit_last_ascii]}),__publicField(this,"_alpha_dict_ranges",{lowerCase:[this._alpha_lower_first_ascii,this._alpha_lower_last_ascii],upperCase:[this._alpha_upper_first_ascii,this._alpha_upper_last_ascii]}),__publicField(this,"_alpha_lower_dict_ranges",{lowerCase:[this._alpha_lower_first_ascii,this._alpha_lower_last_ascii]}),__publicField(this,"_alpha_upper_dict_ranges",{upperCase:[this._alpha_upper_first_ascii,this._alpha_upper_last_ascii]}),__publicField(this,"_alphanum_dict_ranges",{digits:[this._digit_first_ascii,this._digit_last_ascii],lowerCase:[this._alpha_lower_first_ascii,this._alpha_lower_last_ascii],upperCase:[this._alpha_upper_first_ascii,this._alpha_upper_last_ascii]}),__publicField(this,"_alphanum_lower_dict_ranges",{digits:[this._digit_first_ascii,this._digit_last_ascii],lowerCase:[this._alpha_lower_first_ascii,this._alpha_lower_last_ascii]}),__publicField(this,"_alphanum_upper_dict_ranges",{digits:[this._digit_first_ascii,this._digit_last_ascii],upperCase:[this._alpha_upper_first_ascii,this._alpha_upper_last_ascii]}),__publicField(this,"_hex_dict_ranges",{decDigits:[this._digit_first_ascii,this._digit_last_ascii],alphaDigits:[this._alpha_lower_first_ascii,this._hex_last_ascii]}),__publicField(this,"_dict_ranges",{_number_dict_ranges:this._number_dict_ranges,_alpha_dict_ranges:this._alpha_dict_ranges,_alpha_lower_dict_ranges:this._alpha_lower_dict_ranges,_alpha_upper_dict_ranges:this._alpha_upper_dict_ranges,_alphanum_dict_ranges:this._alphanum_dict_ranges,_alphanum_lower_dict_ranges:this._alphanum_lower_dict_ranges,_alphanum_upper_dict_ranges:this._alphanum_upper_dict_ranges,_hex_dict_ranges:this._hex_dict_ranges}),__publicField(this,"log",((...s)=>{const o=[...s];o[0]="[short-unique-id] ".concat(s[0]),!0!==this.debug||"undefined"==typeof console||null===console||console.log(...o)})),__publicField(this,"_normalizeDictionary",((s,o)=>{let i;if(s&&Array.isArray(s)&&s.length>1)i=s;else{i=[],this.dictIndex=0;const o="_".concat(s,"_dict_ranges"),a=this._dict_ranges[o];let u=0;for(const[,s]of Object.entries(a)){const[o,i]=s;u+=Math.abs(i-o)}i=new Array(u);let _=0;for(const[,s]of Object.entries(a)){this.dictRange=s,this.lowerBound=this.dictRange[0],this.upperBound=this.dictRange[1];const o=this.lowerBound<=this.upperBound,a=this.lowerBound,u=this.upperBound;if(o)for(let s=a;su;s--)i[_++]=String.fromCharCode(s),this.dictIndex=s}i.length=_}if(o){for(let s=i.length-1;s>0;s--){const o=Math.floor(Math.random()*(s+1));[i[s],i[o]]=[i[o],i[s]]}}return i})),__publicField(this,"setDictionary",((s,o)=>{this.dict=this._normalizeDictionary(s,o),this.dictLength=this.dict.length,this.setCounter(0)})),__publicField(this,"seq",(()=>this.sequentialUUID())),__publicField(this,"sequentialUUID",(()=>{const s=this.dictLength,o=this.dict;let i=this.counter;const a=[];do{const u=i%s;i=Math.trunc(i/s),a.push(o[u])}while(0!==i);const u=a.join("");return this.counter+=1,u})),__publicField(this,"rnd",((s=this.uuidLength||x)=>this.randomUUID(s))),__publicField(this,"randomUUID",((s=this.uuidLength||x)=>{if(null==s||s<1)throw new Error("Invalid UUID Length Provided");const o=new Array(s),i=this.dictLength,a=this.dict;for(let u=0;uthis.formattedUUID(s,o))),__publicField(this,"formattedUUID",((s,o)=>{const i={$r:this.randomUUID,$s:this.sequentialUUID,$t:this.stamp};return s.replace(/\$[rs]\d{0,}|\$t0|\$t[1-9]\d{1,}/g,(s=>{const a=s.slice(0,2),u=Number.parseInt(s.slice(2),10);return"$s"===a?i[a]().padStart(u,"0"):"$t"===a&&o?i[a](u,o):i[a](u)}))})),__publicField(this,"availableUUIDs",((s=this.uuidLength)=>Number.parseFloat(([...new Set(this.dict)].length**s).toFixed(0)))),__publicField(this,"_collisionCache",new Map),__publicField(this,"approxMaxBeforeCollision",((s=this.availableUUIDs(this.uuidLength))=>{const o=s,i=this._collisionCache.get(o);if(void 0!==i)return i;const a=Number.parseFloat(Math.sqrt(Math.PI/2*s).toFixed(20));return this._collisionCache.set(o,a),a})),__publicField(this,"collisionProbability",((s=this.availableUUIDs(this.uuidLength),o=this.uuidLength)=>Number.parseFloat((this.approxMaxBeforeCollision(s)/this.availableUUIDs(o)).toFixed(20)))),__publicField(this,"uniqueness",((s=this.availableUUIDs(this.uuidLength))=>{const o=Number.parseFloat((1-this.approxMaxBeforeCollision(s)/s).toFixed(20));return o>1?1:o<0?0:o})),__publicField(this,"getVersion",(()=>this.version)),__publicField(this,"stamp",((s,o)=>{const i=Math.floor(+(o||new Date)/1e3).toString(16);if("number"==typeof s&&0===s)return i;if("number"!=typeof s||s<10)throw new Error(["Param finalLength must be a number greater than or equal to 10,","or 0 if you want the raw hexadecimal timestamp"].join("\n"));const a=s-9,u=Math.round(Math.random()*(a>15?15:a)),_=this.randomUUID(a);return"".concat(_.substring(0,u)).concat(i).concat(_.substring(u)).concat(u.toString(16))})),__publicField(this,"parseStamp",((s,o)=>{if(o&&!/t0|t[1-9]\d{1,}/.test(o))throw new Error("Cannot extract date from a formated UUID with no timestamp in the format");const i=o?o.replace(/\$[rs]\d{0,}|\$t0|\$t[1-9]\d{1,}/g,(s=>{const o={$r:s=>[...Array(s)].map((()=>"r")).join(""),$s:s=>[...Array(s)].map((()=>"s")).join(""),$t:s=>[...Array(s)].map((()=>"t")).join("")},i=s.slice(0,2),a=Number.parseInt(s.slice(2),10);return o[i](a)})).replace(/^(.*?)(t{8,})(.*)$/g,((o,i,a)=>s.substring(i.length,i.length+a.length))):s;if(8===i.length)return new Date(1e3*Number.parseInt(i,16));if(i.length<10)throw new Error("Stamp length invalid");const a=Number.parseInt(i.substring(i.length-1),16);return new Date(1e3*Number.parseInt(i.substring(a,a+8),16))})),__publicField(this,"setCounter",(s=>{this.counter=s})),__publicField(this,"validate",((s,o)=>{const i=o?this._normalizeDictionary(o):this.dict;return s.split("").every((s=>i.includes(s)))}));const o=__spreadValues(__spreadValues({},C),s);this.counter=0,this.debug=!1,this.dict=[],this.version="5.3.2";const{dictionary:i,shuffle:a,length:u,counter:_}=o;this.uuidLength=u,this.setDictionary(i,a),this.setCounter(_),this.debug=o.debug,this.log(this.dict),this.log("Generator instantiated with Dictionary Size ".concat(this.dictLength," and counter set to ").concat(this.counter)),this.log=this.log.bind(this),this.setDictionary=this.setDictionary.bind(this),this.setCounter=this.setCounter.bind(this),this.seq=this.seq.bind(this),this.sequentialUUID=this.sequentialUUID.bind(this),this.rnd=this.rnd.bind(this),this.randomUUID=this.randomUUID.bind(this),this.fmt=this.fmt.bind(this),this.formattedUUID=this.formattedUUID.bind(this),this.availableUUIDs=this.availableUUIDs.bind(this),this.approxMaxBeforeCollision=this.approxMaxBeforeCollision.bind(this),this.collisionProbability=this.collisionProbability.bind(this),this.uniqueness=this.uniqueness.bind(this),this.getVersion=this.getVersion.bind(this),this.stamp=this.stamp.bind(this),this.parseStamp=this.parseStamp.bind(this)}};__publicField(j,"default",j);var L,B=j;return L=w,((a,_,w,x)=>{if(_&&"object"==typeof _||"function"==typeof _)for(let C of i(_))u.call(a,C)||C===w||s(a,C,{get:()=>_[C],enumerable:!(x=o(_,C))||x.enumerable});return a})(s({},"__esModule",{value:!0}),L)})();s.exports=o.default,"undefined"!=typeof window&&(o=o.default)},9325:(s,o,i)=>{var a=i(34840),u="object"==typeof self&&self&&self.Object===Object&&self,_=a||u||Function("return this")();s.exports=_},9404:function(s){s.exports=function(){"use strict";var s=Array.prototype.slice;function createClass(s,o){o&&(s.prototype=Object.create(o.prototype)),s.prototype.constructor=s}function Iterable(s){return isIterable(s)?s:Seq(s)}function KeyedIterable(s){return isKeyed(s)?s:KeyedSeq(s)}function IndexedIterable(s){return isIndexed(s)?s:IndexedSeq(s)}function SetIterable(s){return isIterable(s)&&!isAssociative(s)?s:SetSeq(s)}function isIterable(s){return!(!s||!s[o])}function isKeyed(s){return!(!s||!s[i])}function isIndexed(s){return!(!s||!s[a])}function isAssociative(s){return isKeyed(s)||isIndexed(s)}function isOrdered(s){return!(!s||!s[u])}createClass(KeyedIterable,Iterable),createClass(IndexedIterable,Iterable),createClass(SetIterable,Iterable),Iterable.isIterable=isIterable,Iterable.isKeyed=isKeyed,Iterable.isIndexed=isIndexed,Iterable.isAssociative=isAssociative,Iterable.isOrdered=isOrdered,Iterable.Keyed=KeyedIterable,Iterable.Indexed=IndexedIterable,Iterable.Set=SetIterable;var o="@@__IMMUTABLE_ITERABLE__@@",i="@@__IMMUTABLE_KEYED__@@",a="@@__IMMUTABLE_INDEXED__@@",u="@@__IMMUTABLE_ORDERED__@@",_="delete",w=5,x=1<>>0;if(""+i!==o||4294967295===i)return NaN;o=i}return o<0?ensureSize(s)+o:o}function returnTrue(){return!0}function wholeSlice(s,o,i){return(0===s||void 0!==i&&s<=-i)&&(void 0===o||void 0!==i&&o>=i)}function resolveBegin(s,o){return resolveIndex(s,o,0)}function resolveEnd(s,o){return resolveIndex(s,o,o)}function resolveIndex(s,o,i){return void 0===s?i:s<0?Math.max(0,o+s):void 0===o?s:Math.min(o,s)}var $=0,U=1,V=2,z="function"==typeof Symbol&&Symbol.iterator,Y="@@iterator",Z=z||Y;function Iterator(s){this.next=s}function iteratorValue(s,o,i,a){var u=0===s?o:1===s?i:[o,i];return a?a.value=u:a={value:u,done:!1},a}function iteratorDone(){return{value:void 0,done:!0}}function hasIterator(s){return!!getIteratorFn(s)}function isIterator(s){return s&&"function"==typeof s.next}function getIterator(s){var o=getIteratorFn(s);return o&&o.call(s)}function getIteratorFn(s){var o=s&&(z&&s[z]||s[Y]);if("function"==typeof o)return o}function isArrayLike(s){return s&&"number"==typeof s.length}function Seq(s){return null==s?emptySequence():isIterable(s)?s.toSeq():seqFromValue(s)}function KeyedSeq(s){return null==s?emptySequence().toKeyedSeq():isIterable(s)?isKeyed(s)?s.toSeq():s.fromEntrySeq():keyedSeqFromValue(s)}function IndexedSeq(s){return null==s?emptySequence():isIterable(s)?isKeyed(s)?s.entrySeq():s.toIndexedSeq():indexedSeqFromValue(s)}function SetSeq(s){return(null==s?emptySequence():isIterable(s)?isKeyed(s)?s.entrySeq():s:indexedSeqFromValue(s)).toSetSeq()}Iterator.prototype.toString=function(){return"[Iterator]"},Iterator.KEYS=$,Iterator.VALUES=U,Iterator.ENTRIES=V,Iterator.prototype.inspect=Iterator.prototype.toSource=function(){return this.toString()},Iterator.prototype[Z]=function(){return this},createClass(Seq,Iterable),Seq.of=function(){return Seq(arguments)},Seq.prototype.toSeq=function(){return this},Seq.prototype.toString=function(){return this.__toString("Seq {","}")},Seq.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},Seq.prototype.__iterate=function(s,o){return seqIterate(this,s,o,!0)},Seq.prototype.__iterator=function(s,o){return seqIterator(this,s,o,!0)},createClass(KeyedSeq,Seq),KeyedSeq.prototype.toKeyedSeq=function(){return this},createClass(IndexedSeq,Seq),IndexedSeq.of=function(){return IndexedSeq(arguments)},IndexedSeq.prototype.toIndexedSeq=function(){return this},IndexedSeq.prototype.toString=function(){return this.__toString("Seq [","]")},IndexedSeq.prototype.__iterate=function(s,o){return seqIterate(this,s,o,!1)},IndexedSeq.prototype.__iterator=function(s,o){return seqIterator(this,s,o,!1)},createClass(SetSeq,Seq),SetSeq.of=function(){return SetSeq(arguments)},SetSeq.prototype.toSetSeq=function(){return this},Seq.isSeq=isSeq,Seq.Keyed=KeyedSeq,Seq.Set=SetSeq,Seq.Indexed=IndexedSeq;var ee,ie,ae,ce="@@__IMMUTABLE_SEQ__@@";function ArraySeq(s){this._array=s,this.size=s.length}function ObjectSeq(s){var o=Object.keys(s);this._object=s,this._keys=o,this.size=o.length}function IterableSeq(s){this._iterable=s,this.size=s.length||s.size}function IteratorSeq(s){this._iterator=s,this._iteratorCache=[]}function isSeq(s){return!(!s||!s[ce])}function emptySequence(){return ee||(ee=new ArraySeq([]))}function keyedSeqFromValue(s){var o=Array.isArray(s)?new ArraySeq(s).fromEntrySeq():isIterator(s)?new IteratorSeq(s).fromEntrySeq():hasIterator(s)?new IterableSeq(s).fromEntrySeq():"object"==typeof s?new ObjectSeq(s):void 0;if(!o)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+s);return o}function indexedSeqFromValue(s){var o=maybeIndexedSeqFromValue(s);if(!o)throw new TypeError("Expected Array or iterable object of values: "+s);return o}function seqFromValue(s){var o=maybeIndexedSeqFromValue(s)||"object"==typeof s&&new ObjectSeq(s);if(!o)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+s);return o}function maybeIndexedSeqFromValue(s){return isArrayLike(s)?new ArraySeq(s):isIterator(s)?new IteratorSeq(s):hasIterator(s)?new IterableSeq(s):void 0}function seqIterate(s,o,i,a){var u=s._cache;if(u){for(var _=u.length-1,w=0;w<=_;w++){var x=u[i?_-w:w];if(!1===o(x[1],a?x[0]:w,s))return w+1}return w}return s.__iterateUncached(o,i)}function seqIterator(s,o,i,a){var u=s._cache;if(u){var _=u.length-1,w=0;return new Iterator((function(){var s=u[i?_-w:w];return w++>_?iteratorDone():iteratorValue(o,a?s[0]:w-1,s[1])}))}return s.__iteratorUncached(o,i)}function fromJS(s,o){return o?fromJSWith(o,s,"",{"":s}):fromJSDefault(s)}function fromJSWith(s,o,i,a){return Array.isArray(o)?s.call(a,i,IndexedSeq(o).map((function(i,a){return fromJSWith(s,i,a,o)}))):isPlainObj(o)?s.call(a,i,KeyedSeq(o).map((function(i,a){return fromJSWith(s,i,a,o)}))):o}function fromJSDefault(s){return Array.isArray(s)?IndexedSeq(s).map(fromJSDefault).toList():isPlainObj(s)?KeyedSeq(s).map(fromJSDefault).toMap():s}function isPlainObj(s){return s&&(s.constructor===Object||void 0===s.constructor)}function is(s,o){if(s===o||s!=s&&o!=o)return!0;if(!s||!o)return!1;if("function"==typeof s.valueOf&&"function"==typeof o.valueOf){if((s=s.valueOf())===(o=o.valueOf())||s!=s&&o!=o)return!0;if(!s||!o)return!1}return!("function"!=typeof s.equals||"function"!=typeof o.equals||!s.equals(o))}function deepEqual(s,o){if(s===o)return!0;if(!isIterable(o)||void 0!==s.size&&void 0!==o.size&&s.size!==o.size||void 0!==s.__hash&&void 0!==o.__hash&&s.__hash!==o.__hash||isKeyed(s)!==isKeyed(o)||isIndexed(s)!==isIndexed(o)||isOrdered(s)!==isOrdered(o))return!1;if(0===s.size&&0===o.size)return!0;var i=!isAssociative(s);if(isOrdered(s)){var a=s.entries();return o.every((function(s,o){var u=a.next().value;return u&&is(u[1],s)&&(i||is(u[0],o))}))&&a.next().done}var u=!1;if(void 0===s.size)if(void 0===o.size)"function"==typeof s.cacheResult&&s.cacheResult();else{u=!0;var _=s;s=o,o=_}var w=!0,x=o.__iterate((function(o,a){if(i?!s.has(o):u?!is(o,s.get(a,j)):!is(s.get(a,j),o))return w=!1,!1}));return w&&s.size===x}function Repeat(s,o){if(!(this instanceof Repeat))return new Repeat(s,o);if(this._value=s,this.size=void 0===o?1/0:Math.max(0,o),0===this.size){if(ie)return ie;ie=this}}function invariant(s,o){if(!s)throw new Error(o)}function Range(s,o,i){if(!(this instanceof Range))return new Range(s,o,i);if(invariant(0!==i,"Cannot step a Range by 0"),s=s||0,void 0===o&&(o=1/0),i=void 0===i?1:Math.abs(i),oa?iteratorDone():iteratorValue(s,u,i[o?a-u++:u++])}))},createClass(ObjectSeq,KeyedSeq),ObjectSeq.prototype.get=function(s,o){return void 0===o||this.has(s)?this._object[s]:o},ObjectSeq.prototype.has=function(s){return this._object.hasOwnProperty(s)},ObjectSeq.prototype.__iterate=function(s,o){for(var i=this._object,a=this._keys,u=a.length-1,_=0;_<=u;_++){var w=a[o?u-_:_];if(!1===s(i[w],w,this))return _+1}return _},ObjectSeq.prototype.__iterator=function(s,o){var i=this._object,a=this._keys,u=a.length-1,_=0;return new Iterator((function(){var w=a[o?u-_:_];return _++>u?iteratorDone():iteratorValue(s,w,i[w])}))},ObjectSeq.prototype[u]=!0,createClass(IterableSeq,IndexedSeq),IterableSeq.prototype.__iterateUncached=function(s,o){if(o)return this.cacheResult().__iterate(s,o);var i=getIterator(this._iterable),a=0;if(isIterator(i))for(var u;!(u=i.next()).done&&!1!==s(u.value,a++,this););return a},IterableSeq.prototype.__iteratorUncached=function(s,o){if(o)return this.cacheResult().__iterator(s,o);var i=getIterator(this._iterable);if(!isIterator(i))return new Iterator(iteratorDone);var a=0;return new Iterator((function(){var o=i.next();return o.done?o:iteratorValue(s,a++,o.value)}))},createClass(IteratorSeq,IndexedSeq),IteratorSeq.prototype.__iterateUncached=function(s,o){if(o)return this.cacheResult().__iterate(s,o);for(var i,a=this._iterator,u=this._iteratorCache,_=0;_=a.length){var o=i.next();if(o.done)return o;a[u]=o.value}return iteratorValue(s,u,a[u++])}))},createClass(Repeat,IndexedSeq),Repeat.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},Repeat.prototype.get=function(s,o){return this.has(s)?this._value:o},Repeat.prototype.includes=function(s){return is(this._value,s)},Repeat.prototype.slice=function(s,o){var i=this.size;return wholeSlice(s,o,i)?this:new Repeat(this._value,resolveEnd(o,i)-resolveBegin(s,i))},Repeat.prototype.reverse=function(){return this},Repeat.prototype.indexOf=function(s){return is(this._value,s)?0:-1},Repeat.prototype.lastIndexOf=function(s){return is(this._value,s)?this.size:-1},Repeat.prototype.__iterate=function(s,o){for(var i=0;i=0&&o=0&&ii?iteratorDone():iteratorValue(s,_++,w)}))},Range.prototype.equals=function(s){return s instanceof Range?this._start===s._start&&this._end===s._end&&this._step===s._step:deepEqual(this,s)},createClass(Collection,Iterable),createClass(KeyedCollection,Collection),createClass(IndexedCollection,Collection),createClass(SetCollection,Collection),Collection.Keyed=KeyedCollection,Collection.Indexed=IndexedCollection,Collection.Set=SetCollection;var le="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function imul(s,o){var i=65535&(s|=0),a=65535&(o|=0);return i*a+((s>>>16)*a+i*(o>>>16)<<16>>>0)|0};function smi(s){return s>>>1&1073741824|3221225471&s}function hash(s){if(!1===s||null==s)return 0;if("function"==typeof s.valueOf&&(!1===(s=s.valueOf())||null==s))return 0;if(!0===s)return 1;var o=typeof s;if("number"===o){if(s!=s||s===1/0)return 0;var i=0|s;for(i!==s&&(i^=4294967295*s);s>4294967295;)i^=s/=4294967295;return smi(i)}if("string"===o)return s.length>Se?cachedHashString(s):hashString(s);if("function"==typeof s.hashCode)return s.hashCode();if("object"===o)return hashJSObj(s);if("function"==typeof s.toString)return hashString(s.toString());throw new Error("Value type "+o+" cannot be hashed.")}function cachedHashString(s){var o=Pe[s];return void 0===o&&(o=hashString(s),xe===we&&(xe=0,Pe={}),xe++,Pe[s]=o),o}function hashString(s){for(var o=0,i=0;i0)switch(s.nodeType){case 1:return s.uniqueID;case 9:return s.documentElement&&s.documentElement.uniqueID}}var fe,ye="function"==typeof WeakMap;ye&&(fe=new WeakMap);var be=0,_e="__immutablehash__";"function"==typeof Symbol&&(_e=Symbol(_e));var Se=16,we=255,xe=0,Pe={};function assertNotInfinite(s){invariant(s!==1/0,"Cannot perform this action with an infinite size.")}function Map(s){return null==s?emptyMap():isMap(s)&&!isOrdered(s)?s:emptyMap().withMutations((function(o){var i=KeyedIterable(s);assertNotInfinite(i.size),i.forEach((function(s,i){return o.set(i,s)}))}))}function isMap(s){return!(!s||!s[Re])}createClass(Map,KeyedCollection),Map.of=function(){var o=s.call(arguments,0);return emptyMap().withMutations((function(s){for(var i=0;i=o.length)throw new Error("Missing value for key: "+o[i]);s.set(o[i],o[i+1])}}))},Map.prototype.toString=function(){return this.__toString("Map {","}")},Map.prototype.get=function(s,o){return this._root?this._root.get(0,void 0,s,o):o},Map.prototype.set=function(s,o){return updateMap(this,s,o)},Map.prototype.setIn=function(s,o){return this.updateIn(s,j,(function(){return o}))},Map.prototype.remove=function(s){return updateMap(this,s,j)},Map.prototype.deleteIn=function(s){return this.updateIn(s,(function(){return j}))},Map.prototype.update=function(s,o,i){return 1===arguments.length?s(this):this.updateIn([s],o,i)},Map.prototype.updateIn=function(s,o,i){i||(i=o,o=void 0);var a=updateInDeepMap(this,forceIterator(s),o,i);return a===j?void 0:a},Map.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):emptyMap()},Map.prototype.merge=function(){return mergeIntoMapWith(this,void 0,arguments)},Map.prototype.mergeWith=function(o){return mergeIntoMapWith(this,o,s.call(arguments,1))},Map.prototype.mergeIn=function(o){var i=s.call(arguments,1);return this.updateIn(o,emptyMap(),(function(s){return"function"==typeof s.merge?s.merge.apply(s,i):i[i.length-1]}))},Map.prototype.mergeDeep=function(){return mergeIntoMapWith(this,deepMerger,arguments)},Map.prototype.mergeDeepWith=function(o){var i=s.call(arguments,1);return mergeIntoMapWith(this,deepMergerWith(o),i)},Map.prototype.mergeDeepIn=function(o){var i=s.call(arguments,1);return this.updateIn(o,emptyMap(),(function(s){return"function"==typeof s.mergeDeep?s.mergeDeep.apply(s,i):i[i.length-1]}))},Map.prototype.sort=function(s){return OrderedMap(sortFactory(this,s))},Map.prototype.sortBy=function(s,o){return OrderedMap(sortFactory(this,o,s))},Map.prototype.withMutations=function(s){var o=this.asMutable();return s(o),o.wasAltered()?o.__ensureOwner(this.__ownerID):this},Map.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new OwnerID)},Map.prototype.asImmutable=function(){return this.__ensureOwner()},Map.prototype.wasAltered=function(){return this.__altered},Map.prototype.__iterator=function(s,o){return new MapIterator(this,s,o)},Map.prototype.__iterate=function(s,o){var i=this,a=0;return this._root&&this._root.iterate((function(o){return a++,s(o[1],o[0],i)}),o),a},Map.prototype.__ensureOwner=function(s){return s===this.__ownerID?this:s?makeMap(this.size,this._root,s,this.__hash):(this.__ownerID=s,this.__altered=!1,this)},Map.isMap=isMap;var Te,Re="@@__IMMUTABLE_MAP__@@",$e=Map.prototype;function ArrayMapNode(s,o){this.ownerID=s,this.entries=o}function BitmapIndexedNode(s,o,i){this.ownerID=s,this.bitmap=o,this.nodes=i}function HashArrayMapNode(s,o,i){this.ownerID=s,this.count=o,this.nodes=i}function HashCollisionNode(s,o,i){this.ownerID=s,this.keyHash=o,this.entries=i}function ValueNode(s,o,i){this.ownerID=s,this.keyHash=o,this.entry=i}function MapIterator(s,o,i){this._type=o,this._reverse=i,this._stack=s._root&&mapIteratorFrame(s._root)}function mapIteratorValue(s,o){return iteratorValue(s,o[0],o[1])}function mapIteratorFrame(s,o){return{node:s,index:0,__prev:o}}function makeMap(s,o,i,a){var u=Object.create($e);return u.size=s,u._root=o,u.__ownerID=i,u.__hash=a,u.__altered=!1,u}function emptyMap(){return Te||(Te=makeMap(0))}function updateMap(s,o,i){var a,u;if(s._root){var _=MakeRef(L),w=MakeRef(B);if(a=updateNode(s._root,s.__ownerID,0,void 0,o,i,_,w),!w.value)return s;u=s.size+(_.value?i===j?-1:1:0)}else{if(i===j)return s;u=1,a=new ArrayMapNode(s.__ownerID,[[o,i]])}return s.__ownerID?(s.size=u,s._root=a,s.__hash=void 0,s.__altered=!0,s):a?makeMap(u,a):emptyMap()}function updateNode(s,o,i,a,u,_,w,x){return s?s.update(o,i,a,u,_,w,x):_===j?s:(SetRef(x),SetRef(w),new ValueNode(o,a,[u,_]))}function isLeafNode(s){return s.constructor===ValueNode||s.constructor===HashCollisionNode}function mergeIntoNode(s,o,i,a,u){if(s.keyHash===a)return new HashCollisionNode(o,a,[s.entry,u]);var _,x=(0===i?s.keyHash:s.keyHash>>>i)&C,j=(0===i?a:a>>>i)&C;return new BitmapIndexedNode(o,1<>>=1)w[C]=1&i?o[_++]:void 0;return w[a]=u,new HashArrayMapNode(s,_+1,w)}function mergeIntoMapWith(s,o,i){for(var a=[],u=0;u>1&1431655765))+(s>>2&858993459))+(s>>4)&252645135,s+=s>>8,127&(s+=s>>16)}function setIn(s,o,i,a){var u=a?s:arrCopy(s);return u[o]=i,u}function spliceIn(s,o,i,a){var u=s.length+1;if(a&&o+1===u)return s[o]=i,s;for(var _=new Array(u),w=0,x=0;x=qe)return createNodes(s,C,a,u);var U=s&&s===this.ownerID,V=U?C:arrCopy(C);return $?x?L===B-1?V.pop():V[L]=V.pop():V[L]=[a,u]:V.push([a,u]),U?(this.entries=V,this):new ArrayMapNode(s,V)}},BitmapIndexedNode.prototype.get=function(s,o,i,a){void 0===o&&(o=hash(i));var u=1<<((0===s?o:o>>>s)&C),_=this.bitmap;return _&u?this.nodes[popCount(_&u-1)].get(s+w,o,i,a):a},BitmapIndexedNode.prototype.update=function(s,o,i,a,u,_,x){void 0===i&&(i=hash(a));var L=(0===o?i:i>>>o)&C,B=1<=ze)return expandNodes(s,z,$,L,Z);if(U&&!Z&&2===z.length&&isLeafNode(z[1^V]))return z[1^V];if(U&&Z&&1===z.length&&isLeafNode(Z))return Z;var ee=s&&s===this.ownerID,ie=U?Z?$:$^B:$|B,ae=U?Z?setIn(z,V,Z,ee):spliceOut(z,V,ee):spliceIn(z,V,Z,ee);return ee?(this.bitmap=ie,this.nodes=ae,this):new BitmapIndexedNode(s,ie,ae)},HashArrayMapNode.prototype.get=function(s,o,i,a){void 0===o&&(o=hash(i));var u=(0===s?o:o>>>s)&C,_=this.nodes[u];return _?_.get(s+w,o,i,a):a},HashArrayMapNode.prototype.update=function(s,o,i,a,u,_,x){void 0===i&&(i=hash(a));var L=(0===o?i:i>>>o)&C,B=u===j,$=this.nodes,U=$[L];if(B&&!U)return this;var V=updateNode(U,s,o+w,i,a,u,_,x);if(V===U)return this;var z=this.count;if(U){if(!V&&--z0&&a=0&&s>>o&C;if(a>=this.array.length)return new VNode([],s);var u,_=0===a;if(o>0){var x=this.array[a];if((u=x&&x.removeBefore(s,o-w,i))===x&&_)return this}if(_&&!u)return this;var j=editableVNode(this,s);if(!_)for(var L=0;L>>o&C;if(u>=this.array.length)return this;if(o>0){var _=this.array[u];if((a=_&&_.removeAfter(s,o-w,i))===_&&u===this.array.length-1)return this}var x=editableVNode(this,s);return x.array.splice(u+1),a&&(x.array[u]=a),x};var Xe,Qe,et={};function iterateList(s,o){var i=s._origin,a=s._capacity,u=getTailOffset(a),_=s._tail;return iterateNodeOrLeaf(s._root,s._level,0);function iterateNodeOrLeaf(s,o,i){return 0===o?iterateLeaf(s,i):iterateNode(s,o,i)}function iterateLeaf(s,w){var C=w===u?_&&_.array:s&&s.array,j=w>i?0:i-w,L=a-w;return L>x&&(L=x),function(){if(j===L)return et;var s=o?--L:j++;return C&&C[s]}}function iterateNode(s,u,_){var C,j=s&&s.array,L=_>i?0:i-_>>u,B=1+(a-_>>u);return B>x&&(B=x),function(){for(;;){if(C){var s=C();if(s!==et)return s;C=null}if(L===B)return et;var i=o?--B:L++;C=iterateNodeOrLeaf(j&&j[i],u-w,_+(i<=s.size||o<0)return s.withMutations((function(s){o<0?setListBounds(s,o).set(0,i):setListBounds(s,0,o+1).set(o,i)}));o+=s._origin;var a=s._tail,u=s._root,_=MakeRef(B);return o>=getTailOffset(s._capacity)?a=updateVNode(a,s.__ownerID,0,o,i,_):u=updateVNode(u,s.__ownerID,s._level,o,i,_),_.value?s.__ownerID?(s._root=u,s._tail=a,s.__hash=void 0,s.__altered=!0,s):makeList(s._origin,s._capacity,s._level,u,a):s}function updateVNode(s,o,i,a,u,_){var x,j=a>>>i&C,L=s&&j0){var B=s&&s.array[j],$=updateVNode(B,o,i-w,a,u,_);return $===B?s:((x=editableVNode(s,o)).array[j]=$,x)}return L&&s.array[j]===u?s:(SetRef(_),x=editableVNode(s,o),void 0===u&&j===x.array.length-1?x.array.pop():x.array[j]=u,x)}function editableVNode(s,o){return o&&s&&o===s.ownerID?s:new VNode(s?s.array.slice():[],o)}function listNodeFor(s,o){if(o>=getTailOffset(s._capacity))return s._tail;if(o<1<0;)i=i.array[o>>>a&C],a-=w;return i}}function setListBounds(s,o,i){void 0!==o&&(o|=0),void 0!==i&&(i|=0);var a=s.__ownerID||new OwnerID,u=s._origin,_=s._capacity,x=u+o,j=void 0===i?_:i<0?_+i:u+i;if(x===u&&j===_)return s;if(x>=j)return s.clear();for(var L=s._level,B=s._root,$=0;x+$<0;)B=new VNode(B&&B.array.length?[void 0,B]:[],a),$+=1<<(L+=w);$&&(x+=$,u+=$,j+=$,_+=$);for(var U=getTailOffset(_),V=getTailOffset(j);V>=1<U?new VNode([],a):z;if(z&&V>U&&x<_&&z.array.length){for(var Z=B=editableVNode(B,a),ee=L;ee>w;ee-=w){var ie=U>>>ee&C;Z=Z.array[ie]=editableVNode(Z.array[ie],a)}Z.array[U>>>w&C]=z}if(j<_&&(Y=Y&&Y.removeAfter(a,0,j)),x>=V)x-=V,j-=V,L=w,B=null,Y=Y&&Y.removeBefore(a,0,x);else if(x>u||V>>L&C;if(ae!==V>>>L&C)break;ae&&($+=(1<u&&(B=B.removeBefore(a,L,x-$)),B&&Vu&&(u=x.size),isIterable(w)||(x=x.map((function(s){return fromJS(s)}))),a.push(x)}return u>s.size&&(s=s.setSize(u)),mergeIntoCollectionWith(s,o,a)}function getTailOffset(s){return s>>w<=x&&w.size>=2*_.size?(a=(u=w.filter((function(s,o){return void 0!==s&&C!==o}))).toKeyedSeq().map((function(s){return s[0]})).flip().toMap(),s.__ownerID&&(a.__ownerID=u.__ownerID=s.__ownerID)):(a=_.remove(o),u=C===w.size-1?w.pop():w.set(C,void 0))}else if(L){if(i===w.get(C)[1])return s;a=_,u=w.set(C,[o,i])}else a=_.set(o,w.size),u=w.set(w.size,[o,i]);return s.__ownerID?(s.size=a.size,s._map=a,s._list=u,s.__hash=void 0,s):makeOrderedMap(a,u)}function ToKeyedSequence(s,o){this._iter=s,this._useKeys=o,this.size=s.size}function ToIndexedSequence(s){this._iter=s,this.size=s.size}function ToSetSequence(s){this._iter=s,this.size=s.size}function FromEntriesSequence(s){this._iter=s,this.size=s.size}function flipFactory(s){var o=makeSequence(s);return o._iter=s,o.size=s.size,o.flip=function(){return s},o.reverse=function(){var o=s.reverse.apply(this);return o.flip=function(){return s.reverse()},o},o.has=function(o){return s.includes(o)},o.includes=function(o){return s.has(o)},o.cacheResult=cacheResultThrough,o.__iterateUncached=function(o,i){var a=this;return s.__iterate((function(s,i){return!1!==o(i,s,a)}),i)},o.__iteratorUncached=function(o,i){if(o===V){var a=s.__iterator(o,i);return new Iterator((function(){var s=a.next();if(!s.done){var o=s.value[0];s.value[0]=s.value[1],s.value[1]=o}return s}))}return s.__iterator(o===U?$:U,i)},o}function mapFactory(s,o,i){var a=makeSequence(s);return a.size=s.size,a.has=function(o){return s.has(o)},a.get=function(a,u){var _=s.get(a,j);return _===j?u:o.call(i,_,a,s)},a.__iterateUncached=function(a,u){var _=this;return s.__iterate((function(s,u,w){return!1!==a(o.call(i,s,u,w),u,_)}),u)},a.__iteratorUncached=function(a,u){var _=s.__iterator(V,u);return new Iterator((function(){var u=_.next();if(u.done)return u;var w=u.value,x=w[0];return iteratorValue(a,x,o.call(i,w[1],x,s),u)}))},a}function reverseFactory(s,o){var i=makeSequence(s);return i._iter=s,i.size=s.size,i.reverse=function(){return s},s.flip&&(i.flip=function(){var o=flipFactory(s);return o.reverse=function(){return s.flip()},o}),i.get=function(i,a){return s.get(o?i:-1-i,a)},i.has=function(i){return s.has(o?i:-1-i)},i.includes=function(o){return s.includes(o)},i.cacheResult=cacheResultThrough,i.__iterate=function(o,i){var a=this;return s.__iterate((function(s,i){return o(s,i,a)}),!i)},i.__iterator=function(o,i){return s.__iterator(o,!i)},i}function filterFactory(s,o,i,a){var u=makeSequence(s);return a&&(u.has=function(a){var u=s.get(a,j);return u!==j&&!!o.call(i,u,a,s)},u.get=function(a,u){var _=s.get(a,j);return _!==j&&o.call(i,_,a,s)?_:u}),u.__iterateUncached=function(u,_){var w=this,x=0;return s.__iterate((function(s,_,C){if(o.call(i,s,_,C))return x++,u(s,a?_:x-1,w)}),_),x},u.__iteratorUncached=function(u,_){var w=s.__iterator(V,_),x=0;return new Iterator((function(){for(;;){var _=w.next();if(_.done)return _;var C=_.value,j=C[0],L=C[1];if(o.call(i,L,j,s))return iteratorValue(u,a?j:x++,L,_)}}))},u}function countByFactory(s,o,i){var a=Map().asMutable();return s.__iterate((function(u,_){a.update(o.call(i,u,_,s),0,(function(s){return s+1}))})),a.asImmutable()}function groupByFactory(s,o,i){var a=isKeyed(s),u=(isOrdered(s)?OrderedMap():Map()).asMutable();s.__iterate((function(_,w){u.update(o.call(i,_,w,s),(function(s){return(s=s||[]).push(a?[w,_]:_),s}))}));var _=iterableClass(s);return u.map((function(o){return reify(s,_(o))}))}function sliceFactory(s,o,i,a){var u=s.size;if(void 0!==o&&(o|=0),void 0!==i&&(i===1/0?i=u:i|=0),wholeSlice(o,i,u))return s;var _=resolveBegin(o,u),w=resolveEnd(i,u);if(_!=_||w!=w)return sliceFactory(s.toSeq().cacheResult(),o,i,a);var x,C=w-_;C==C&&(x=C<0?0:C);var j=makeSequence(s);return j.size=0===x?x:s.size&&x||void 0,!a&&isSeq(s)&&x>=0&&(j.get=function(o,i){return(o=wrapIndex(this,o))>=0&&ox)return iteratorDone();var s=u.next();return a||o===U?s:iteratorValue(o,C-1,o===$?void 0:s.value[1],s)}))},j}function takeWhileFactory(s,o,i){var a=makeSequence(s);return a.__iterateUncached=function(a,u){var _=this;if(u)return this.cacheResult().__iterate(a,u);var w=0;return s.__iterate((function(s,u,x){return o.call(i,s,u,x)&&++w&&a(s,u,_)})),w},a.__iteratorUncached=function(a,u){var _=this;if(u)return this.cacheResult().__iterator(a,u);var w=s.__iterator(V,u),x=!0;return new Iterator((function(){if(!x)return iteratorDone();var s=w.next();if(s.done)return s;var u=s.value,C=u[0],j=u[1];return o.call(i,j,C,_)?a===V?s:iteratorValue(a,C,j,s):(x=!1,iteratorDone())}))},a}function skipWhileFactory(s,o,i,a){var u=makeSequence(s);return u.__iterateUncached=function(u,_){var w=this;if(_)return this.cacheResult().__iterate(u,_);var x=!0,C=0;return s.__iterate((function(s,_,j){if(!x||!(x=o.call(i,s,_,j)))return C++,u(s,a?_:C-1,w)})),C},u.__iteratorUncached=function(u,_){var w=this;if(_)return this.cacheResult().__iterator(u,_);var x=s.__iterator(V,_),C=!0,j=0;return new Iterator((function(){var s,_,L;do{if((s=x.next()).done)return a||u===U?s:iteratorValue(u,j++,u===$?void 0:s.value[1],s);var B=s.value;_=B[0],L=B[1],C&&(C=o.call(i,L,_,w))}while(C);return u===V?s:iteratorValue(u,_,L,s)}))},u}function concatFactory(s,o){var i=isKeyed(s),a=[s].concat(o).map((function(s){return isIterable(s)?i&&(s=KeyedIterable(s)):s=i?keyedSeqFromValue(s):indexedSeqFromValue(Array.isArray(s)?s:[s]),s})).filter((function(s){return 0!==s.size}));if(0===a.length)return s;if(1===a.length){var u=a[0];if(u===s||i&&isKeyed(u)||isIndexed(s)&&isIndexed(u))return u}var _=new ArraySeq(a);return i?_=_.toKeyedSeq():isIndexed(s)||(_=_.toSetSeq()),(_=_.flatten(!0)).size=a.reduce((function(s,o){if(void 0!==s){var i=o.size;if(void 0!==i)return s+i}}),0),_}function flattenFactory(s,o,i){var a=makeSequence(s);return a.__iterateUncached=function(a,u){var _=0,w=!1;function flatDeep(s,x){var C=this;s.__iterate((function(s,u){return(!o||x0}function zipWithFactory(s,o,i){var a=makeSequence(s);return a.size=new ArraySeq(i).map((function(s){return s.size})).min(),a.__iterate=function(s,o){for(var i,a=this.__iterator(U,o),u=0;!(i=a.next()).done&&!1!==s(i.value,u++,this););return u},a.__iteratorUncached=function(s,a){var u=i.map((function(s){return s=Iterable(s),getIterator(a?s.reverse():s)})),_=0,w=!1;return new Iterator((function(){var i;return w||(i=u.map((function(s){return s.next()})),w=i.some((function(s){return s.done}))),w?iteratorDone():iteratorValue(s,_++,o.apply(null,i.map((function(s){return s.value}))))}))},a}function reify(s,o){return isSeq(s)?o:s.constructor(o)}function validateEntry(s){if(s!==Object(s))throw new TypeError("Expected [K, V] tuple: "+s)}function resolveSize(s){return assertNotInfinite(s.size),ensureSize(s)}function iterableClass(s){return isKeyed(s)?KeyedIterable:isIndexed(s)?IndexedIterable:SetIterable}function makeSequence(s){return Object.create((isKeyed(s)?KeyedSeq:isIndexed(s)?IndexedSeq:SetSeq).prototype)}function cacheResultThrough(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):Seq.prototype.cacheResult.call(this)}function defaultComparator(s,o){return s>o?1:s=0;i--)o={value:arguments[i],next:o};return this.__ownerID?(this.size=s,this._head=o,this.__hash=void 0,this.__altered=!0,this):makeStack(s,o)},Stack.prototype.pushAll=function(s){if(0===(s=IndexedIterable(s)).size)return this;assertNotInfinite(s.size);var o=this.size,i=this._head;return s.reverse().forEach((function(s){o++,i={value:s,next:i}})),this.__ownerID?(this.size=o,this._head=i,this.__hash=void 0,this.__altered=!0,this):makeStack(o,i)},Stack.prototype.pop=function(){return this.slice(1)},Stack.prototype.unshift=function(){return this.push.apply(this,arguments)},Stack.prototype.unshiftAll=function(s){return this.pushAll(s)},Stack.prototype.shift=function(){return this.pop.apply(this,arguments)},Stack.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):emptyStack()},Stack.prototype.slice=function(s,o){if(wholeSlice(s,o,this.size))return this;var i=resolveBegin(s,this.size);if(resolveEnd(o,this.size)!==this.size)return IndexedCollection.prototype.slice.call(this,s,o);for(var a=this.size-i,u=this._head;i--;)u=u.next;return this.__ownerID?(this.size=a,this._head=u,this.__hash=void 0,this.__altered=!0,this):makeStack(a,u)},Stack.prototype.__ensureOwner=function(s){return s===this.__ownerID?this:s?makeStack(this.size,this._head,s,this.__hash):(this.__ownerID=s,this.__altered=!1,this)},Stack.prototype.__iterate=function(s,o){if(o)return this.reverse().__iterate(s);for(var i=0,a=this._head;a&&!1!==s(a.value,i++,this);)a=a.next;return i},Stack.prototype.__iterator=function(s,o){if(o)return this.reverse().__iterator(s);var i=0,a=this._head;return new Iterator((function(){if(a){var o=a.value;return a=a.next,iteratorValue(s,i++,o)}return iteratorDone()}))},Stack.isStack=isStack;var at,ct="@@__IMMUTABLE_STACK__@@",lt=Stack.prototype;function makeStack(s,o,i,a){var u=Object.create(lt);return u.size=s,u._head=o,u.__ownerID=i,u.__hash=a,u.__altered=!1,u}function emptyStack(){return at||(at=makeStack(0))}function mixin(s,o){var keyCopier=function(i){s.prototype[i]=o[i]};return Object.keys(o).forEach(keyCopier),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(o).forEach(keyCopier),s}lt[ct]=!0,lt.withMutations=$e.withMutations,lt.asMutable=$e.asMutable,lt.asImmutable=$e.asImmutable,lt.wasAltered=$e.wasAltered,Iterable.Iterator=Iterator,mixin(Iterable,{toArray:function(){assertNotInfinite(this.size);var s=new Array(this.size||0);return this.valueSeq().__iterate((function(o,i){s[i]=o})),s},toIndexedSeq:function(){return new ToIndexedSequence(this)},toJS:function(){return this.toSeq().map((function(s){return s&&"function"==typeof s.toJS?s.toJS():s})).__toJS()},toJSON:function(){return this.toSeq().map((function(s){return s&&"function"==typeof s.toJSON?s.toJSON():s})).__toJS()},toKeyedSeq:function(){return new ToKeyedSequence(this,!0)},toMap:function(){return Map(this.toKeyedSeq())},toObject:function(){assertNotInfinite(this.size);var s={};return this.__iterate((function(o,i){s[i]=o})),s},toOrderedMap:function(){return OrderedMap(this.toKeyedSeq())},toOrderedSet:function(){return OrderedSet(isKeyed(this)?this.valueSeq():this)},toSet:function(){return Set(isKeyed(this)?this.valueSeq():this)},toSetSeq:function(){return new ToSetSequence(this)},toSeq:function(){return isIndexed(this)?this.toIndexedSeq():isKeyed(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Stack(isKeyed(this)?this.valueSeq():this)},toList:function(){return List(isKeyed(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(s,o){return 0===this.size?s+o:s+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+o},concat:function(){return reify(this,concatFactory(this,s.call(arguments,0)))},includes:function(s){return this.some((function(o){return is(o,s)}))},entries:function(){return this.__iterator(V)},every:function(s,o){assertNotInfinite(this.size);var i=!0;return this.__iterate((function(a,u,_){if(!s.call(o,a,u,_))return i=!1,!1})),i},filter:function(s,o){return reify(this,filterFactory(this,s,o,!0))},find:function(s,o,i){var a=this.findEntry(s,o);return a?a[1]:i},forEach:function(s,o){return assertNotInfinite(this.size),this.__iterate(o?s.bind(o):s)},join:function(s){assertNotInfinite(this.size),s=void 0!==s?""+s:",";var o="",i=!0;return this.__iterate((function(a){i?i=!1:o+=s,o+=null!=a?a.toString():""})),o},keys:function(){return this.__iterator($)},map:function(s,o){return reify(this,mapFactory(this,s,o))},reduce:function(s,o,i){var a,u;return assertNotInfinite(this.size),arguments.length<2?u=!0:a=o,this.__iterate((function(o,_,w){u?(u=!1,a=o):a=s.call(i,a,o,_,w)})),a},reduceRight:function(s,o,i){var a=this.toKeyedSeq().reverse();return a.reduce.apply(a,arguments)},reverse:function(){return reify(this,reverseFactory(this,!0))},slice:function(s,o){return reify(this,sliceFactory(this,s,o,!0))},some:function(s,o){return!this.every(not(s),o)},sort:function(s){return reify(this,sortFactory(this,s))},values:function(){return this.__iterator(U)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some((function(){return!0}))},count:function(s,o){return ensureSize(s?this.toSeq().filter(s,o):this)},countBy:function(s,o){return countByFactory(this,s,o)},equals:function(s){return deepEqual(this,s)},entrySeq:function(){var s=this;if(s._cache)return new ArraySeq(s._cache);var o=s.toSeq().map(entryMapper).toIndexedSeq();return o.fromEntrySeq=function(){return s.toSeq()},o},filterNot:function(s,o){return this.filter(not(s),o)},findEntry:function(s,o,i){var a=i;return this.__iterate((function(i,u,_){if(s.call(o,i,u,_))return a=[u,i],!1})),a},findKey:function(s,o){var i=this.findEntry(s,o);return i&&i[0]},findLast:function(s,o,i){return this.toKeyedSeq().reverse().find(s,o,i)},findLastEntry:function(s,o,i){return this.toKeyedSeq().reverse().findEntry(s,o,i)},findLastKey:function(s,o){return this.toKeyedSeq().reverse().findKey(s,o)},first:function(){return this.find(returnTrue)},flatMap:function(s,o){return reify(this,flatMapFactory(this,s,o))},flatten:function(s){return reify(this,flattenFactory(this,s,!0))},fromEntrySeq:function(){return new FromEntriesSequence(this)},get:function(s,o){return this.find((function(o,i){return is(i,s)}),void 0,o)},getIn:function(s,o){for(var i,a=this,u=forceIterator(s);!(i=u.next()).done;){var _=i.value;if((a=a&&a.get?a.get(_,j):j)===j)return o}return a},groupBy:function(s,o){return groupByFactory(this,s,o)},has:function(s){return this.get(s,j)!==j},hasIn:function(s){return this.getIn(s,j)!==j},isSubset:function(s){return s="function"==typeof s.includes?s:Iterable(s),this.every((function(o){return s.includes(o)}))},isSuperset:function(s){return(s="function"==typeof s.isSubset?s:Iterable(s)).isSubset(this)},keyOf:function(s){return this.findKey((function(o){return is(o,s)}))},keySeq:function(){return this.toSeq().map(keyMapper).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(s){return this.toKeyedSeq().reverse().keyOf(s)},max:function(s){return maxFactory(this,s)},maxBy:function(s,o){return maxFactory(this,o,s)},min:function(s){return maxFactory(this,s?neg(s):defaultNegComparator)},minBy:function(s,o){return maxFactory(this,o?neg(o):defaultNegComparator,s)},rest:function(){return this.slice(1)},skip:function(s){return this.slice(Math.max(0,s))},skipLast:function(s){return reify(this,this.toSeq().reverse().skip(s).reverse())},skipWhile:function(s,o){return reify(this,skipWhileFactory(this,s,o,!0))},skipUntil:function(s,o){return this.skipWhile(not(s),o)},sortBy:function(s,o){return reify(this,sortFactory(this,o,s))},take:function(s){return this.slice(0,Math.max(0,s))},takeLast:function(s){return reify(this,this.toSeq().reverse().take(s).reverse())},takeWhile:function(s,o){return reify(this,takeWhileFactory(this,s,o))},takeUntil:function(s,o){return this.takeWhile(not(s),o)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=hashIterable(this))}});var ut=Iterable.prototype;ut[o]=!0,ut[Z]=ut.values,ut.__toJS=ut.toArray,ut.__toStringMapper=quoteString,ut.inspect=ut.toSource=function(){return this.toString()},ut.chain=ut.flatMap,ut.contains=ut.includes,mixin(KeyedIterable,{flip:function(){return reify(this,flipFactory(this))},mapEntries:function(s,o){var i=this,a=0;return reify(this,this.toSeq().map((function(u,_){return s.call(o,[_,u],a++,i)})).fromEntrySeq())},mapKeys:function(s,o){var i=this;return reify(this,this.toSeq().flip().map((function(a,u){return s.call(o,a,u,i)})).flip())}});var pt=KeyedIterable.prototype;function keyMapper(s,o){return o}function entryMapper(s,o){return[o,s]}function not(s){return function(){return!s.apply(this,arguments)}}function neg(s){return function(){return-s.apply(this,arguments)}}function quoteString(s){return"string"==typeof s?JSON.stringify(s):String(s)}function defaultZipper(){return arrCopy(arguments)}function defaultNegComparator(s,o){return so?-1:0}function hashIterable(s){if(s.size===1/0)return 0;var o=isOrdered(s),i=isKeyed(s),a=o?1:0;return murmurHashOfSize(s.__iterate(i?o?function(s,o){a=31*a+hashMerge(hash(s),hash(o))|0}:function(s,o){a=a+hashMerge(hash(s),hash(o))|0}:o?function(s){a=31*a+hash(s)|0}:function(s){a=a+hash(s)|0}),a)}function murmurHashOfSize(s,o){return o=le(o,3432918353),o=le(o<<15|o>>>-15,461845907),o=le(o<<13|o>>>-13,5),o=le((o=o+3864292196^s)^o>>>16,2246822507),o=smi((o=le(o^o>>>13,3266489909))^o>>>16)}function hashMerge(s,o){return s^o+2654435769+(s<<6)+(s>>2)}return pt[i]=!0,pt[Z]=ut.entries,pt.__toJS=ut.toObject,pt.__toStringMapper=function(s,o){return JSON.stringify(o)+": "+quoteString(s)},mixin(IndexedIterable,{toKeyedSeq:function(){return new ToKeyedSequence(this,!1)},filter:function(s,o){return reify(this,filterFactory(this,s,o,!1))},findIndex:function(s,o){var i=this.findEntry(s,o);return i?i[0]:-1},indexOf:function(s){var o=this.keyOf(s);return void 0===o?-1:o},lastIndexOf:function(s){var o=this.lastKeyOf(s);return void 0===o?-1:o},reverse:function(){return reify(this,reverseFactory(this,!1))},slice:function(s,o){return reify(this,sliceFactory(this,s,o,!1))},splice:function(s,o){var i=arguments.length;if(o=Math.max(0|o,0),0===i||2===i&&!o)return this;s=resolveBegin(s,s<0?this.count():this.size);var a=this.slice(0,s);return reify(this,1===i?a:a.concat(arrCopy(arguments,2),this.slice(s+o)))},findLastIndex:function(s,o){var i=this.findLastEntry(s,o);return i?i[0]:-1},first:function(){return this.get(0)},flatten:function(s){return reify(this,flattenFactory(this,s,!1))},get:function(s,o){return(s=wrapIndex(this,s))<0||this.size===1/0||void 0!==this.size&&s>this.size?o:this.find((function(o,i){return i===s}),void 0,o)},has:function(s){return(s=wrapIndex(this,s))>=0&&(void 0!==this.size?this.size===1/0||s{"use strict";i(71340);var a=i(92046);s.exports=a.Object.assign},9957:(s,o,i)=>{"use strict";var a=Function.prototype.call,u=Object.prototype.hasOwnProperty,_=i(66743);s.exports=_.call(a,u)},9999:(s,o,i)=>{var a=i(37217),u=i(83729),_=i(16547),w=i(74733),x=i(43838),C=i(93290),j=i(23007),L=i(92271),B=i(48948),$=i(50002),U=i(83349),V=i(5861),z=i(76189),Y=i(77199),Z=i(35529),ee=i(56449),ie=i(3656),ae=i(87730),ce=i(23805),le=i(38440),pe=i(95950),de=i(37241),fe="[object Arguments]",ye="[object Function]",be="[object Object]",_e={};_e[fe]=_e["[object Array]"]=_e["[object ArrayBuffer]"]=_e["[object DataView]"]=_e["[object Boolean]"]=_e["[object Date]"]=_e["[object Float32Array]"]=_e["[object Float64Array]"]=_e["[object Int8Array]"]=_e["[object Int16Array]"]=_e["[object Int32Array]"]=_e["[object Map]"]=_e["[object Number]"]=_e[be]=_e["[object RegExp]"]=_e["[object Set]"]=_e["[object String]"]=_e["[object Symbol]"]=_e["[object Uint8Array]"]=_e["[object Uint8ClampedArray]"]=_e["[object Uint16Array]"]=_e["[object Uint32Array]"]=!0,_e["[object Error]"]=_e[ye]=_e["[object WeakMap]"]=!1,s.exports=function baseClone(s,o,i,Se,we,xe){var Pe,Te=1&o,Re=2&o,$e=4&o;if(i&&(Pe=we?i(s,Se,we,xe):i(s)),void 0!==Pe)return Pe;if(!ce(s))return s;var qe=ee(s);if(qe){if(Pe=z(s),!Te)return j(s,Pe)}else{var ze=V(s),We=ze==ye||"[object GeneratorFunction]"==ze;if(ie(s))return C(s,Te);if(ze==be||ze==fe||We&&!we){if(Pe=Re||We?{}:Z(s),!Te)return Re?B(s,x(Pe,s)):L(s,w(Pe,s))}else{if(!_e[ze])return we?s:{};Pe=Y(s,ze,Te)}}xe||(xe=new a);var He=xe.get(s);if(He)return He;xe.set(s,Pe),le(s)?s.forEach((function(a){Pe.add(baseClone(a,o,i,a,s,xe))})):ae(s)&&s.forEach((function(a,u){Pe.set(u,baseClone(a,o,i,u,s,xe))}));var Ye=qe?void 0:($e?Re?U:$:Re?de:pe)(s);return u(Ye||s,(function(a,u){Ye&&(a=s[u=a]),_(Pe,u,baseClone(a,o,i,u,s,xe))})),Pe}},10023:(s,o,i)=>{const a=i(6205),INTS=()=>[{type:a.RANGE,from:48,to:57}],WORDS=()=>[{type:a.CHAR,value:95},{type:a.RANGE,from:97,to:122},{type:a.RANGE,from:65,to:90}].concat(INTS()),WHITESPACE=()=>[{type:a.CHAR,value:9},{type:a.CHAR,value:10},{type:a.CHAR,value:11},{type:a.CHAR,value:12},{type:a.CHAR,value:13},{type:a.CHAR,value:32},{type:a.CHAR,value:160},{type:a.CHAR,value:5760},{type:a.RANGE,from:8192,to:8202},{type:a.CHAR,value:8232},{type:a.CHAR,value:8233},{type:a.CHAR,value:8239},{type:a.CHAR,value:8287},{type:a.CHAR,value:12288},{type:a.CHAR,value:65279}];o.words=()=>({type:a.SET,set:WORDS(),not:!1}),o.notWords=()=>({type:a.SET,set:WORDS(),not:!0}),o.ints=()=>({type:a.SET,set:INTS(),not:!1}),o.notInts=()=>({type:a.SET,set:INTS(),not:!0}),o.whitespace=()=>({type:a.SET,set:WHITESPACE(),not:!1}),o.notWhitespace=()=>({type:a.SET,set:WHITESPACE(),not:!0}),o.anyChar=()=>({type:a.SET,set:[{type:a.CHAR,value:10},{type:a.CHAR,value:13},{type:a.CHAR,value:8232},{type:a.CHAR,value:8233}],not:!0})},10043:(s,o,i)=>{"use strict";var a=i(54018),u=String,_=TypeError;s.exports=function(s){if(a(s))return s;throw new _("Can't set "+u(s)+" as a prototype")}},10076:s=>{"use strict";s.exports=Function.prototype.call},10124:(s,o,i)=>{var a=i(9325);s.exports=function(){return a.Date.now()}},10300:(s,o,i)=>{"use strict";var a=i(13930),u=i(82159),_=i(36624),w=i(4640),x=i(73448),C=TypeError;s.exports=function(s,o){var i=arguments.length<2?x(s):o;if(u(i))return _(a(i,s));throw new C(w(s)+" is not iterable")}},10316:(s,o,i)=>{const a=i(2404),u=i(55973),_=i(92340);class Element{constructor(s,o,i){o&&(this.meta=o),i&&(this.attributes=i),this.content=s}freeze(){Object.isFrozen(this)||(this._meta&&(this.meta.parent=this,this.meta.freeze()),this._attributes&&(this.attributes.parent=this,this.attributes.freeze()),this.children.forEach((s=>{s.parent=this,s.freeze()}),this),this.content&&Array.isArray(this.content)&&Object.freeze(this.content),Object.freeze(this))}primitive(){}clone(){const s=new this.constructor;return s.element=this.element,this.meta.length&&(s._meta=this.meta.clone()),this.attributes.length&&(s._attributes=this.attributes.clone()),this.content?this.content.clone?s.content=this.content.clone():Array.isArray(this.content)?s.content=this.content.map((s=>s.clone())):s.content=this.content:s.content=this.content,s}toValue(){return this.content instanceof Element?this.content.toValue():this.content instanceof u?{key:this.content.key.toValue(),value:this.content.value?this.content.value.toValue():void 0}:this.content&&this.content.map?this.content.map((s=>s.toValue()),this):this.content}toRef(s){if(""===this.id.toValue())throw Error("Cannot create reference to an element that does not contain an ID");const o=new this.RefElement(this.id.toValue());return s&&(o.path=s),o}findRecursive(...s){if(arguments.length>1&&!this.isFrozen)throw new Error("Cannot find recursive with multiple element names without first freezing the element. Call `element.freeze()`");const o=s.pop();let i=new _;const append=(s,o)=>(s.push(o),s),checkElement=(s,i)=>{i.element===o&&s.push(i);const a=i.findRecursive(o);return a&&a.reduce(append,s),i.content instanceof u&&(i.content.key&&checkElement(s,i.content.key),i.content.value&&checkElement(s,i.content.value)),s};return this.content&&(this.content.element&&checkElement(i,this.content),Array.isArray(this.content)&&this.content.reduce(checkElement,i)),s.isEmpty||(i=i.filter((o=>{let i=o.parents.map((s=>s.element));for(const o in s){const a=s[o],u=i.indexOf(a);if(-1===u)return!1;i=i.splice(0,u)}return!0}))),i}set(s){return this.content=s,this}equals(s){return a(this.toValue(),s)}getMetaProperty(s,o){if(!this.meta.hasKey(s)){if(this.isFrozen){const s=this.refract(o);return s.freeze(),s}this.meta.set(s,o)}return this.meta.get(s)}setMetaProperty(s,o){this.meta.set(s,o)}get element(){return this._storedElement||"element"}set element(s){this._storedElement=s}get content(){return this._content}set content(s){if(s instanceof Element)this._content=s;else if(s instanceof _)this.content=s.elements;else if("string"==typeof s||"number"==typeof s||"boolean"==typeof s||"null"===s||null==s)this._content=s;else if(s instanceof u)this._content=s;else if(Array.isArray(s))this._content=s.map(this.refract);else{if("object"!=typeof s)throw new Error("Cannot set content to given value");this._content=Object.keys(s).map((o=>new this.MemberElement(o,s[o])))}}get meta(){if(!this._meta){if(this.isFrozen){const s=new this.ObjectElement;return s.freeze(),s}this._meta=new this.ObjectElement}return this._meta}set meta(s){s instanceof this.ObjectElement?this._meta=s:this.meta.set(s||{})}get attributes(){if(!this._attributes){if(this.isFrozen){const s=new this.ObjectElement;return s.freeze(),s}this._attributes=new this.ObjectElement}return this._attributes}set attributes(s){s instanceof this.ObjectElement?this._attributes=s:this.attributes.set(s||{})}get id(){return this.getMetaProperty("id","")}set id(s){this.setMetaProperty("id",s)}get classes(){return this.getMetaProperty("classes",[])}set classes(s){this.setMetaProperty("classes",s)}get title(){return this.getMetaProperty("title","")}set title(s){this.setMetaProperty("title",s)}get description(){return this.getMetaProperty("description","")}set description(s){this.setMetaProperty("description",s)}get links(){return this.getMetaProperty("links",[])}set links(s){this.setMetaProperty("links",s)}get isFrozen(){return Object.isFrozen(this)}get parents(){let{parent:s}=this;const o=new _;for(;s;)o.push(s),s=s.parent;return o}get children(){if(Array.isArray(this.content))return new _(this.content);if(this.content instanceof u){const s=new _([this.content.key]);return this.content.value&&s.push(this.content.value),s}return this.content instanceof Element?new _([this.content]):new _}get recursiveChildren(){const s=new _;return this.children.forEach((o=>{s.push(o),o.recursiveChildren.forEach((o=>{s.push(o)}))})),s}}s.exports=Element},10392:s=>{s.exports=function getValue(s,o){return null==s?void 0:s[o]}},10487:(s,o,i)=>{"use strict";var a=i(96897),u=i(30655),_=i(73126),w=i(12205);s.exports=function callBind(s){var o=_(arguments),i=s.length-(arguments.length-1);return a(o,1+(i>0?i:0),!0)},u?u(s.exports,"apply",{value:w}):s.exports.apply=w},10776:(s,o,i)=>{var a=i(30756),u=i(95950);s.exports=function getMatchData(s){for(var o=u(s),i=o.length;i--;){var _=o[i],w=s[_];o[i]=[_,w,a(w)]}return o}},10866:(s,o,i)=>{const a=i(6048),u=i(92340);class ObjectSlice extends u{map(s,o){return this.elements.map((i=>s.bind(o)(i.value,i.key,i)))}filter(s,o){return new ObjectSlice(this.elements.filter((i=>s.bind(o)(i.value,i.key,i))))}reject(s,o){return this.filter(a(s.bind(o)))}forEach(s,o){return this.elements.forEach(((i,a)=>{s.bind(o)(i.value,i.key,i,a)}))}keys(){return this.map(((s,o)=>o.toValue()))}values(){return this.map((s=>s.toValue()))}}s.exports=ObjectSlice},11002:s=>{"use strict";s.exports=Function.prototype.apply},11042:(s,o,i)=>{"use strict";var a=i(85582),u=i(1907),_=i(24443),w=i(87170),x=i(36624),C=u([].concat);s.exports=a("Reflect","ownKeys")||function ownKeys(s){var o=_.f(x(s)),i=w.f;return i?C(o,i(s)):o}},11091:(s,o,i)=>{"use strict";var a=i(45951),u=i(76024),_=i(92361),w=i(62250),x=i(13846).f,C=i(7463),j=i(92046),L=i(28311),B=i(61626),$=i(49724);i(36128);var wrapConstructor=function(s){var Wrapper=function(o,i,a){if(this instanceof Wrapper){switch(arguments.length){case 0:return new s;case 1:return new s(o);case 2:return new s(o,i)}return new s(o,i,a)}return u(s,this,arguments)};return Wrapper.prototype=s.prototype,Wrapper};s.exports=function(s,o){var i,u,U,V,z,Y,Z,ee,ie,ae=s.target,ce=s.global,le=s.stat,pe=s.proto,de=ce?a:le?a[ae]:a[ae]&&a[ae].prototype,fe=ce?j:j[ae]||B(j,ae,{})[ae],ye=fe.prototype;for(V in o)u=!(i=C(ce?V:ae+(le?".":"#")+V,s.forced))&&de&&$(de,V),Y=fe[V],u&&(Z=s.dontCallGetSet?(ie=x(de,V))&&ie.value:de[V]),z=u&&Z?Z:o[V],(i||pe||typeof Y!=typeof z)&&(ee=s.bind&&u?L(z,a):s.wrap&&u?wrapConstructor(z):pe&&w(z)?_(z):z,(s.sham||z&&z.sham||Y&&Y.sham)&&B(ee,"sham",!0),B(fe,V,ee),pe&&($(j,U=ae+"Prototype")||B(j,U,{}),B(j[U],V,z),s.real&&ye&&(i||!ye[V])&&B(ye,V,z)))}},11287:s=>{s.exports=function getHolder(s){return s.placeholder}},11331:(s,o,i)=>{var a=i(72552),u=i(28879),_=i(40346),w=Function.prototype,x=Object.prototype,C=w.toString,j=x.hasOwnProperty,L=C.call(Object);s.exports=function isPlainObject(s){if(!_(s)||"[object Object]"!=a(s))return!1;var o=u(s);if(null===o)return!0;var i=j.call(o,"constructor")&&o.constructor;return"function"==typeof i&&i instanceof i&&C.call(i)==L}},11470:(s,o,i)=>{"use strict";var a=i(1907),u=i(65482),_=i(90160),w=i(74239),x=a("".charAt),C=a("".charCodeAt),j=a("".slice),createMethod=function(s){return function(o,i){var a,L,B=_(w(o)),$=u(i),U=B.length;return $<0||$>=U?s?"":void 0:(a=C(B,$))<55296||a>56319||$+1===U||(L=C(B,$+1))<56320||L>57343?s?x(B,$):a:s?j(B,$,$+2):L-56320+(a-55296<<10)+65536}};s.exports={codeAt:createMethod(!1),charAt:createMethod(!0)}},11842:(s,o,i)=>{var a=i(82819),u=i(9325);s.exports=function createBind(s,o,i){var _=1&o,w=a(s);return function wrapper(){return(this&&this!==u&&this instanceof wrapper?w:s).apply(_?i:this,arguments)}}},12205:(s,o,i)=>{"use strict";var a=i(66743),u=i(11002),_=i(13144);s.exports=function applyBind(){return _(a,u,arguments)}},12242:(s,o,i)=>{const a=i(10316);s.exports=class BooleanElement extends a{constructor(s,o,i){super(s,o,i),this.element="boolean"}primitive(){return"boolean"}}},12507:(s,o,i)=>{var a=i(28754),u=i(49698),_=i(63912),w=i(13222);s.exports=function createCaseFirst(s){return function(o){o=w(o);var i=u(o)?_(o):void 0,x=i?i[0]:o.charAt(0),C=i?a(i,1).join(""):o.slice(1);return x[s]()+C}}},12560:(s,o,i)=>{"use strict";i(99363);var a=i(19287),u=i(45951),_=i(14840),w=i(93742);for(var x in a)_(u[x],x),w[x]=w.Array},12651:(s,o,i)=>{var a=i(74218);s.exports=function getMapData(s,o){var i=s.__data__;return a(o)?i["string"==typeof o?"string":"hash"]:i.map}},12749:(s,o,i)=>{var a=i(81042),u=Object.prototype.hasOwnProperty;s.exports=function hashHas(s){var o=this.__data__;return a?void 0!==o[s]:u.call(o,s)}},13144:(s,o,i)=>{"use strict";var a=i(66743),u=i(11002),_=i(10076),w=i(47119);s.exports=w||a.call(_,u)},13222:(s,o,i)=>{var a=i(77556);s.exports=function toString(s){return null==s?"":a(s)}},13846:(s,o,i)=>{"use strict";var a=i(39447),u=i(13930),_=i(22574),w=i(75817),x=i(4993),C=i(70470),j=i(49724),L=i(73648),B=Object.getOwnPropertyDescriptor;o.f=a?B:function getOwnPropertyDescriptor(s,o){if(s=x(s),o=C(o),L)try{return B(s,o)}catch(s){}if(j(s,o))return w(!u(_.f,s,o),s[o])}},13930:(s,o,i)=>{"use strict";var a=i(41505),u=Function.prototype.call;s.exports=a?u.bind(u):function(){return u.apply(u,arguments)}},14248:s=>{s.exports=function arraySome(s,o){for(var i=-1,a=null==s?0:s.length;++i{s.exports=function arrayPush(s,o){for(var i=-1,a=o.length,u=s.length;++i{const a=i(10316);s.exports=class RefElement extends a{constructor(s,o,i){super(s||[],o,i),this.element="ref",this.path||(this.path="element")}get path(){return this.attributes.get("path")}set path(s){this.attributes.set("path",s)}}},14744:s=>{"use strict";var o=function isMergeableObject(s){return function isNonNullObject(s){return!!s&&"object"==typeof s}(s)&&!function isSpecial(s){var o=Object.prototype.toString.call(s);return"[object RegExp]"===o||"[object Date]"===o||function isReactElement(s){return s.$$typeof===i}(s)}(s)};var i="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function cloneUnlessOtherwiseSpecified(s,o){return!1!==o.clone&&o.isMergeableObject(s)?deepmerge(function emptyTarget(s){return Array.isArray(s)?[]:{}}(s),s,o):s}function defaultArrayMerge(s,o,i){return s.concat(o).map((function(s){return cloneUnlessOtherwiseSpecified(s,i)}))}function getKeys(s){return Object.keys(s).concat(function getEnumerableOwnPropertySymbols(s){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(s).filter((function(o){return Object.propertyIsEnumerable.call(s,o)})):[]}(s))}function propertyIsOnObject(s,o){try{return o in s}catch(s){return!1}}function mergeObject(s,o,i){var a={};return i.isMergeableObject(s)&&getKeys(s).forEach((function(o){a[o]=cloneUnlessOtherwiseSpecified(s[o],i)})),getKeys(o).forEach((function(u){(function propertyIsUnsafe(s,o){return propertyIsOnObject(s,o)&&!(Object.hasOwnProperty.call(s,o)&&Object.propertyIsEnumerable.call(s,o))})(s,u)||(propertyIsOnObject(s,u)&&i.isMergeableObject(o[u])?a[u]=function getMergeFunction(s,o){if(!o.customMerge)return deepmerge;var i=o.customMerge(s);return"function"==typeof i?i:deepmerge}(u,i)(s[u],o[u],i):a[u]=cloneUnlessOtherwiseSpecified(o[u],i))})),a}function deepmerge(s,i,a){(a=a||{}).arrayMerge=a.arrayMerge||defaultArrayMerge,a.isMergeableObject=a.isMergeableObject||o,a.cloneUnlessOtherwiseSpecified=cloneUnlessOtherwiseSpecified;var u=Array.isArray(i);return u===Array.isArray(s)?u?a.arrayMerge(s,i,a):mergeObject(s,i,a):cloneUnlessOtherwiseSpecified(i,a)}deepmerge.all=function deepmergeAll(s,o){if(!Array.isArray(s))throw new Error("first argument should be an array");return s.reduce((function(s,i){return deepmerge(s,i,o)}),{})};var a=deepmerge;s.exports=a},14792:(s,o,i)=>{var a=i(13222),u=i(55808);s.exports=function capitalize(s){return u(a(s).toLowerCase())}},14840:(s,o,i)=>{"use strict";var a=i(52623),u=i(74284).f,_=i(61626),w=i(49724),x=i(54878),C=i(76264)("toStringTag");s.exports=function(s,o,i,j){var L=i?s:s&&s.prototype;L&&(w(L,C)||u(L,C,{configurable:!0,value:o}),j&&!a&&_(L,"toString",x))}},14974:s=>{s.exports=function safeGet(s,o){if(("constructor"!==o||"function"!=typeof s[o])&&"__proto__"!=o)return s[o]}},15287:(s,o)=>{"use strict";var i=Symbol.for("react.element"),a=Symbol.for("react.portal"),u=Symbol.for("react.fragment"),_=Symbol.for("react.strict_mode"),w=Symbol.for("react.profiler"),x=Symbol.for("react.provider"),C=Symbol.for("react.context"),j=Symbol.for("react.forward_ref"),L=Symbol.for("react.suspense"),B=Symbol.for("react.memo"),$=Symbol.for("react.lazy"),U=Symbol.iterator;var V={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},z=Object.assign,Y={};function E(s,o,i){this.props=s,this.context=o,this.refs=Y,this.updater=i||V}function F(){}function G(s,o,i){this.props=s,this.context=o,this.refs=Y,this.updater=i||V}E.prototype.isReactComponent={},E.prototype.setState=function(s,o){if("object"!=typeof s&&"function"!=typeof s&&null!=s)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,s,o,"setState")},E.prototype.forceUpdate=function(s){this.updater.enqueueForceUpdate(this,s,"forceUpdate")},F.prototype=E.prototype;var Z=G.prototype=new F;Z.constructor=G,z(Z,E.prototype),Z.isPureReactComponent=!0;var ee=Array.isArray,ie=Object.prototype.hasOwnProperty,ae={current:null},ce={key:!0,ref:!0,__self:!0,__source:!0};function M(s,o,a){var u,_={},w=null,x=null;if(null!=o)for(u in void 0!==o.ref&&(x=o.ref),void 0!==o.key&&(w=""+o.key),o)ie.call(o,u)&&!ce.hasOwnProperty(u)&&(_[u]=o[u]);var C=arguments.length-2;if(1===C)_.children=a;else if(1{var a=i(96131);s.exports=function arrayIncludes(s,o){return!!(null==s?0:s.length)&&a(s,o,0)>-1}},15340:()=>{},15377:(s,o,i)=>{"use strict";var a=i(92861).Buffer,u=i(64634),_=i(74372),w=ArrayBuffer.isView||function isView(s){try{return _(s),!0}catch(s){return!1}},x="undefined"!=typeof Uint8Array,C="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array,j=C&&(a.prototype instanceof Uint8Array||a.TYPED_ARRAY_SUPPORT);s.exports=function toBuffer(s,o){if(s instanceof a)return s;if("string"==typeof s)return a.from(s,o);if(C&&w(s)){if(0===s.byteLength)return a.alloc(0);if(j){var i=a.from(s.buffer,s.byteOffset,s.byteLength);if(i.byteLength===s.byteLength)return i}var _=s instanceof Uint8Array?s:new Uint8Array(s.buffer,s.byteOffset,s.byteLength),L=a.from(_);if(L.length===s.byteLength)return L}if(x&&s instanceof Uint8Array)return a.from(s);var B=u(s);if(B)for(var $=0;$255||~~U!==U)throw new RangeError("Array items must be numbers in the range 0-255.")}if(B||a.isBuffer(s)&&s.constructor&&"function"==typeof s.constructor.isBuffer&&s.constructor.isBuffer(s))return a.from(s);throw new TypeError('The "data" argument must be a string, an Array, a Buffer, a Uint8Array, or a DataView.')}},15389:(s,o,i)=>{var a=i(93663),u=i(87978),_=i(83488),w=i(56449),x=i(50583);s.exports=function baseIteratee(s){return"function"==typeof s?s:null==s?_:"object"==typeof s?w(s)?u(s[0],s[1]):a(s):x(s)}},15972:(s,o,i)=>{"use strict";var a=i(49724),u=i(62250),_=i(39298),w=i(92522),x=i(57382),C=w("IE_PROTO"),j=Object,L=j.prototype;s.exports=x?j.getPrototypeOf:function(s){var o=_(s);if(a(o,C))return o[C];var i=o.constructor;return u(i)&&o instanceof i?i.prototype:o instanceof j?L:null}},16038:(s,o,i)=>{var a=i(5861),u=i(40346);s.exports=function baseIsSet(s){return u(s)&&"[object Set]"==a(s)}},16426:s=>{s.exports=function(){var s=document.getSelection();if(!s.rangeCount)return function(){};for(var o=document.activeElement,i=[],a=0;a{var a=i(43360),u=i(75288),_=Object.prototype.hasOwnProperty;s.exports=function assignValue(s,o,i){var w=s[o];_.call(s,o)&&u(w,i)&&(void 0!==i||o in s)||a(s,o,i)}},16708:(s,o,i)=>{"use strict";var a,u=i(65606);function CorkedRequest(s){var o=this;this.next=null,this.entry=null,this.finish=function(){!function onCorkedFinish(s,o,i){var a=s.entry;s.entry=null;for(;a;){var u=a.callback;o.pendingcb--,u(i),a=a.next}o.corkedRequestsFree.next=s}(o,s)}}s.exports=Writable,Writable.WritableState=WritableState;var _={deprecate:i(94643)},w=i(40345),x=i(48287).Buffer,C=(void 0!==i.g?i.g:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var j,L=i(75896),B=i(65291).getHighWaterMark,$=i(86048).F,U=$.ERR_INVALID_ARG_TYPE,V=$.ERR_METHOD_NOT_IMPLEMENTED,z=$.ERR_MULTIPLE_CALLBACK,Y=$.ERR_STREAM_CANNOT_PIPE,Z=$.ERR_STREAM_DESTROYED,ee=$.ERR_STREAM_NULL_VALUES,ie=$.ERR_STREAM_WRITE_AFTER_END,ae=$.ERR_UNKNOWN_ENCODING,ce=L.errorOrDestroy;function nop(){}function WritableState(s,o,_){a=a||i(25382),s=s||{},"boolean"!=typeof _&&(_=o instanceof a),this.objectMode=!!s.objectMode,_&&(this.objectMode=this.objectMode||!!s.writableObjectMode),this.highWaterMark=B(this,s,"writableHighWaterMark",_),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var w=!1===s.decodeStrings;this.decodeStrings=!w,this.defaultEncoding=s.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(s){!function onwrite(s,o){var i=s._writableState,a=i.sync,_=i.writecb;if("function"!=typeof _)throw new z;if(function onwriteStateUpdate(s){s.writing=!1,s.writecb=null,s.length-=s.writelen,s.writelen=0}(i),o)!function onwriteError(s,o,i,a,_){--o.pendingcb,i?(u.nextTick(_,a),u.nextTick(finishMaybe,s,o),s._writableState.errorEmitted=!0,ce(s,a)):(_(a),s._writableState.errorEmitted=!0,ce(s,a),finishMaybe(s,o))}(s,i,a,o,_);else{var w=needFinish(i)||s.destroyed;w||i.corked||i.bufferProcessing||!i.bufferedRequest||clearBuffer(s,i),a?u.nextTick(afterWrite,s,i,w,_):afterWrite(s,i,w,_)}}(o,s)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==s.emitClose,this.autoDestroy=!!s.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new CorkedRequest(this)}function Writable(s){var o=this instanceof(a=a||i(25382));if(!o&&!j.call(Writable,this))return new Writable(s);this._writableState=new WritableState(s,this,o),this.writable=!0,s&&("function"==typeof s.write&&(this._write=s.write),"function"==typeof s.writev&&(this._writev=s.writev),"function"==typeof s.destroy&&(this._destroy=s.destroy),"function"==typeof s.final&&(this._final=s.final)),w.call(this)}function doWrite(s,o,i,a,u,_,w){o.writelen=a,o.writecb=w,o.writing=!0,o.sync=!0,o.destroyed?o.onwrite(new Z("write")):i?s._writev(u,o.onwrite):s._write(u,_,o.onwrite),o.sync=!1}function afterWrite(s,o,i,a){i||function onwriteDrain(s,o){0===o.length&&o.needDrain&&(o.needDrain=!1,s.emit("drain"))}(s,o),o.pendingcb--,a(),finishMaybe(s,o)}function clearBuffer(s,o){o.bufferProcessing=!0;var i=o.bufferedRequest;if(s._writev&&i&&i.next){var a=o.bufferedRequestCount,u=new Array(a),_=o.corkedRequestsFree;_.entry=i;for(var w=0,x=!0;i;)u[w]=i,i.isBuf||(x=!1),i=i.next,w+=1;u.allBuffers=x,doWrite(s,o,!0,o.length,u,"",_.finish),o.pendingcb++,o.lastBufferedRequest=null,_.next?(o.corkedRequestsFree=_.next,_.next=null):o.corkedRequestsFree=new CorkedRequest(o),o.bufferedRequestCount=0}else{for(;i;){var C=i.chunk,j=i.encoding,L=i.callback;if(doWrite(s,o,!1,o.objectMode?1:C.length,C,j,L),i=i.next,o.bufferedRequestCount--,o.writing)break}null===i&&(o.lastBufferedRequest=null)}o.bufferedRequest=i,o.bufferProcessing=!1}function needFinish(s){return s.ending&&0===s.length&&null===s.bufferedRequest&&!s.finished&&!s.writing}function callFinal(s,o){s._final((function(i){o.pendingcb--,i&&ce(s,i),o.prefinished=!0,s.emit("prefinish"),finishMaybe(s,o)}))}function finishMaybe(s,o){var i=needFinish(o);if(i&&(function prefinish(s,o){o.prefinished||o.finalCalled||("function"!=typeof s._final||o.destroyed?(o.prefinished=!0,s.emit("prefinish")):(o.pendingcb++,o.finalCalled=!0,u.nextTick(callFinal,s,o)))}(s,o),0===o.pendingcb&&(o.finished=!0,s.emit("finish"),o.autoDestroy))){var a=s._readableState;(!a||a.autoDestroy&&a.endEmitted)&&s.destroy()}return i}i(56698)(Writable,w),WritableState.prototype.getBuffer=function getBuffer(){for(var s=this.bufferedRequest,o=[];s;)o.push(s),s=s.next;return o},function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:_.deprecate((function writableStateBufferGetter(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(s){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(j=Function.prototype[Symbol.hasInstance],Object.defineProperty(Writable,Symbol.hasInstance,{value:function value(s){return!!j.call(this,s)||this===Writable&&(s&&s._writableState instanceof WritableState)}})):j=function realHasInstance(s){return s instanceof this},Writable.prototype.pipe=function(){ce(this,new Y)},Writable.prototype.write=function(s,o,i){var a=this._writableState,_=!1,w=!a.objectMode&&function _isUint8Array(s){return x.isBuffer(s)||s instanceof C}(s);return w&&!x.isBuffer(s)&&(s=function _uint8ArrayToBuffer(s){return x.from(s)}(s)),"function"==typeof o&&(i=o,o=null),w?o="buffer":o||(o=a.defaultEncoding),"function"!=typeof i&&(i=nop),a.ending?function writeAfterEnd(s,o){var i=new ie;ce(s,i),u.nextTick(o,i)}(this,i):(w||function validChunk(s,o,i,a){var _;return null===i?_=new ee:"string"==typeof i||o.objectMode||(_=new U("chunk",["string","Buffer"],i)),!_||(ce(s,_),u.nextTick(a,_),!1)}(this,a,s,i))&&(a.pendingcb++,_=function writeOrBuffer(s,o,i,a,u,_){if(!i){var w=function decodeChunk(s,o,i){s.objectMode||!1===s.decodeStrings||"string"!=typeof o||(o=x.from(o,i));return o}(o,a,u);a!==w&&(i=!0,u="buffer",a=w)}var C=o.objectMode?1:a.length;o.length+=C;var j=o.length-1))throw new ae(s);return this._writableState.defaultEncoding=s,this},Object.defineProperty(Writable.prototype,"writableBuffer",{enumerable:!1,get:function get(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Writable.prototype,"writableHighWaterMark",{enumerable:!1,get:function get(){return this._writableState.highWaterMark}}),Writable.prototype._write=function(s,o,i){i(new V("_write()"))},Writable.prototype._writev=null,Writable.prototype.end=function(s,o,i){var a=this._writableState;return"function"==typeof s?(i=s,s=null,o=null):"function"==typeof o&&(i=o,o=null),null!=s&&this.write(s,o),a.corked&&(a.corked=1,this.uncork()),a.ending||function endWritable(s,o,i){o.ending=!0,finishMaybe(s,o),i&&(o.finished?u.nextTick(i):s.once("finish",i));o.ended=!0,s.writable=!1}(this,a,i),this},Object.defineProperty(Writable.prototype,"writableLength",{enumerable:!1,get:function get(){return this._writableState.length}}),Object.defineProperty(Writable.prototype,"destroyed",{enumerable:!1,get:function get(){return void 0!==this._writableState&&this._writableState.destroyed},set:function set(s){this._writableState&&(this._writableState.destroyed=s)}}),Writable.prototype.destroy=L.destroy,Writable.prototype._undestroy=L.undestroy,Writable.prototype._destroy=function(s,o){o(s)}},16946:(s,o,i)=>{"use strict";var a=i(1907),u=i(98828),_=i(45807),w=Object,x=a("".split);s.exports=u((function(){return!w("z").propertyIsEnumerable(0)}))?function(s){return"String"===_(s)?x(s,""):w(s)}:w},16962:(s,o)=>{o.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},o.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]},o.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},o.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},o.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},o.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},o.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},o.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},o.realToAlias=function(){var s=Object.prototype.hasOwnProperty,i=o.aliasToReal,a={};for(var u in i){var _=i[u];s.call(a,_)?a[_].push(u):a[_]=[u]}return a}(),o.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},o.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},o.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},17255:(s,o,i)=>{var a=i(47422);s.exports=function basePropertyDeep(s){return function(o){return a(o,s)}}},17285:s=>{function source(s){return s?"string"==typeof s?s:s.source:null}function lookahead(s){return concat("(?=",s,")")}function concat(...s){return s.map((s=>source(s))).join("")}function either(...s){return"("+s.map((s=>source(s))).join("|")+")"}s.exports=function xml(s){const o=concat(/[A-Z_]/,function optional(s){return concat("(",s,")?")}(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),i={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},a={begin:/\s/,contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},u=s.inherit(a,{begin:/\(/,end:/\)/}),_=s.inherit(s.APOS_STRING_MODE,{className:"meta-string"}),w=s.inherit(s.QUOTE_STRING_MODE,{className:"meta-string"}),x={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[a,w,_,u,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[a,u,w,_]}]}]},s.COMMENT(//,{relevance:10}),{begin://,relevance:10},i,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[x],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[x],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:o,relevance:0,starts:x}]},{className:"tag",begin:concat(/<\//,lookahead(concat(o,/>/))),contains:[{className:"name",begin:o,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}},17400:(s,o,i)=>{var a=i(99374),u=1/0;s.exports=function toFinite(s){return s?(s=a(s))===u||s===-1/0?17976931348623157e292*(s<0?-1:1):s==s?s:0:0===s?s:0}},17533:s=>{s.exports=function yaml(s){var o="true false yes no null",i="[\\w#;/?:@&=+$,.~*'()[\\]]+",a={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[s.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},u=s.inherit(a,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),_={className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},w={end:",",endsWithParent:!0,excludeEnd:!0,keywords:o,relevance:0},x={begin:/\{/,end:/\}/,contains:[w],illegal:"\\n",relevance:0},C={begin:"\\[",end:"\\]",contains:[w],illegal:"\\n",relevance:0},j=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+i},{className:"type",begin:"!<"+i+">"},{className:"type",begin:"!"+i},{className:"type",begin:"!!"+i},{className:"meta",begin:"&"+s.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+s.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},s.HASH_COMMENT_MODE,{beginKeywords:o,keywords:{literal:o}},_,{className:"number",begin:s.C_NUMBER_RE+"\\b",relevance:0},x,C,a],L=[...j];return L.pop(),L.push(u),w.contains=L,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:j}}},17670:(s,o,i)=>{var a=i(12651);s.exports=function mapCacheDelete(s){var o=a(this,s).delete(s);return this.size-=o?1:0,o}},17965:(s,o,i)=>{"use strict";var a=i(16426),u={"text/plain":"Text","text/html":"Url",default:"Text"};s.exports=function copy(s,o){var i,_,w,x,C,j,L=!1;o||(o={}),i=o.debug||!1;try{if(w=a(),x=document.createRange(),C=document.getSelection(),(j=document.createElement("span")).textContent=s,j.ariaHidden="true",j.style.all="unset",j.style.position="fixed",j.style.top=0,j.style.clip="rect(0, 0, 0, 0)",j.style.whiteSpace="pre",j.style.webkitUserSelect="text",j.style.MozUserSelect="text",j.style.msUserSelect="text",j.style.userSelect="text",j.addEventListener("copy",(function(a){if(a.stopPropagation(),o.format)if(a.preventDefault(),void 0===a.clipboardData){i&&console.warn("unable to use e.clipboardData"),i&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var _=u[o.format]||u.default;window.clipboardData.setData(_,s)}else a.clipboardData.clearData(),a.clipboardData.setData(o.format,s);o.onCopy&&(a.preventDefault(),o.onCopy(a.clipboardData))})),document.body.appendChild(j),x.selectNodeContents(j),C.addRange(x),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");L=!0}catch(a){i&&console.error("unable to copy using execCommand: ",a),i&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(o.format||"text",s),o.onCopy&&o.onCopy(window.clipboardData),L=!0}catch(a){i&&console.error("unable to copy using clipboardData: ",a),i&&console.error("falling back to prompt"),_=function format(s){var o=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return s.replace(/#{\s*key\s*}/g,o)}("message"in o?o.message:"Copy to clipboard: #{key}, Enter"),window.prompt(_,s)}}finally{C&&("function"==typeof C.removeRange?C.removeRange(x):C.removeAllRanges()),j&&document.body.removeChild(j),w()}return L}},18073:(s,o,i)=>{var a=i(85087),u=i(54641),_=i(70981);s.exports=function createRecurry(s,o,i,w,x,C,j,L,B,$){var U=8&o;o|=U?32:64,4&(o&=~(U?64:32))||(o&=-4);var V=[s,o,x,U?C:void 0,U?j:void 0,U?void 0:C,U?void 0:j,L,B,$],z=i.apply(void 0,V);return a(s)&&u(z,V),z.placeholder=w,_(z,s,o)}},19123:(s,o,i)=>{var a=i(65606),u=i(31499),_=i(88310).Stream;function resolve(s,o,i){var a,_=function create_indent(s,o){return new Array(o||0).join(s||"")}(o,i=i||0),w=s;if("object"==typeof s&&((w=s[a=Object.keys(s)[0]])&&w._elem))return w._elem.name=a,w._elem.icount=i,w._elem.indent=o,w._elem.indents=_,w._elem.interrupt=w,w._elem;var x,C=[],j=[];function get_attributes(s){Object.keys(s).forEach((function(o){C.push(function attribute(s,o){return s+'="'+u(o)+'"'}(o,s[o]))}))}switch(typeof w){case"object":if(null===w)break;w._attr&&get_attributes(w._attr),w._cdata&&j.push(("/g,"]]]]>")+"]]>"),w.forEach&&(x=!1,j.push(""),w.forEach((function(s){"object"==typeof s?"_attr"==Object.keys(s)[0]?get_attributes(s._attr):j.push(resolve(s,o,i+1)):(j.pop(),x=!0,j.push(u(s)))})),x||j.push(""));break;default:j.push(u(w))}return{name:a,interrupt:!1,attributes:C,content:j,icount:i,indents:_,indent:o}}function format(s,o,i){if("object"!=typeof o)return s(!1,o);var a=o.interrupt?1:o.content.length;function proceed(){for(;o.content.length;){var u=o.content.shift();if(void 0!==u){if(interrupt(u))return;format(s,u)}}s(!1,(a>1?o.indents:"")+(o.name?"":"")+(o.indent&&!i?"\n":"")),i&&i()}function interrupt(o){return!!o.interrupt&&(o.interrupt.append=s,o.interrupt.end=proceed,o.interrupt=!1,s(!0),!0)}if(s(!1,o.indents+(o.name?"<"+o.name:"")+(o.attributes.length?" "+o.attributes.join(" "):"")+(a?o.name?">":"":o.name?"/>":"")+(o.indent&&a>1?"\n":"")),!a)return s(!1,o.indent?"\n":"");interrupt(o)||proceed()}s.exports=function xml(s,o){"object"!=typeof o&&(o={indent:o});var i=o.stream?new _:null,u="",w=!1,x=o.indent?!0===o.indent?" ":o.indent:"",C=!0;function delay(s){C?a.nextTick(s):s()}function append(s,o){if(void 0!==o&&(u+=o),s&&!w&&(i=i||new _,w=!0),s&&w){var a=u;delay((function(){i.emit("data",a)})),u=""}}function add(s,o){format(append,resolve(s,x,x?1:0),o)}function end(){if(i){var s=u;delay((function(){i.emit("data",s),i.emit("end"),i.readable=!1,i.emit("close")}))}}return delay((function(){C=!1})),o.declaration&&function addXmlDeclaration(s){var o={version:"1.0",encoding:s.encoding||"UTF-8"};s.standalone&&(o.standalone=s.standalone),add({"?xml":{_attr:o}}),u=u.replace("/>","?>")}(o.declaration),s&&s.forEach?s.forEach((function(o,i){var a;i+1===s.length&&(a=end),add(o,a)})):add(s,end),i?(i.readable=!0,i):u},s.exports.element=s.exports.Element=function element(){var s={_elem:resolve(Array.prototype.slice.call(arguments)),push:function(s){if(!this.append)throw new Error("not assigned to a parent!");var o=this,i=this._elem.indent;format(this.append,resolve(s,i,this._elem.icount+(i?1:0)),(function(){o.append(!0)}))},close:function(s){void 0!==s&&this.push(s),this.end&&this.end()}};return s}},19219:s=>{s.exports=function cacheHas(s,o){return s.has(o)}},19287:s=>{"use strict";s.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},19358:(s,o,i)=>{"use strict";var a=i(85582),u=i(49724),_=i(61626),w=i(88280),x=i(79192),C=i(19595),j=i(54829),L=i(34084),B=i(32096),$=i(39259),U=i(85884),V=i(39447),z=i(7376);s.exports=function(s,o,i,Y){var Z="stackTraceLimit",ee=Y?2:1,ie=s.split("."),ae=ie[ie.length-1],ce=a.apply(null,ie);if(ce){var le=ce.prototype;if(!z&&u(le,"cause")&&delete le.cause,!i)return ce;var pe=a("Error"),de=o((function(s,o){var i=B(Y?o:s,void 0),a=Y?new ce(s):new ce;return void 0!==i&&_(a,"message",i),U(a,de,a.stack,2),this&&w(le,this)&&L(a,this,de),arguments.length>ee&&$(a,arguments[ee]),a}));if(de.prototype=le,"Error"!==ae?x?x(de,pe):C(de,pe,{name:!0}):V&&Z in ce&&(j(de,ce,Z),j(de,ce,"prepareStackTrace")),C(de,ce),!z)try{le.name!==ae&&_(le,"name",ae),le.constructor=de}catch(s){}return de}}},19570:(s,o,i)=>{var a=i(37334),u=i(93243),_=i(83488),w=u?function(s,o){return u(s,"toString",{configurable:!0,enumerable:!1,value:a(o),writable:!0})}:_;s.exports=w},19595:(s,o,i)=>{"use strict";var a=i(49724),u=i(11042),_=i(13846),w=i(74284);s.exports=function(s,o,i){for(var x=u(o),C=w.f,j=_.f,L=0;L{"use strict";var a=i(23034);s.exports=a},19846:(s,o,i)=>{"use strict";var a=i(20798),u=i(98828),_=i(45951).String;s.exports=!!Object.getOwnPropertySymbols&&!u((function(){var s=Symbol("symbol detection");return!_(s)||!(Object(s)instanceof Symbol)||!Symbol.sham&&a&&a<41}))},19931:(s,o,i)=>{var a=i(31769),u=i(68090),_=i(68969),w=i(77797);s.exports=function baseUnset(s,o){return o=a(o,s),null==(s=_(s,o))||delete s[w(u(o))]}},20181:(s,o,i)=>{var a=/^\s+|\s+$/g,u=/^[-+]0x[0-9a-f]+$/i,_=/^0b[01]+$/i,w=/^0o[0-7]+$/i,x=parseInt,C="object"==typeof i.g&&i.g&&i.g.Object===Object&&i.g,j="object"==typeof self&&self&&self.Object===Object&&self,L=C||j||Function("return this")(),B=Object.prototype.toString,$=Math.max,U=Math.min,now=function(){return L.Date.now()};function isObject(s){var o=typeof s;return!!s&&("object"==o||"function"==o)}function toNumber(s){if("number"==typeof s)return s;if(function isSymbol(s){return"symbol"==typeof s||function isObjectLike(s){return!!s&&"object"==typeof s}(s)&&"[object Symbol]"==B.call(s)}(s))return NaN;if(isObject(s)){var o="function"==typeof s.valueOf?s.valueOf():s;s=isObject(o)?o+"":o}if("string"!=typeof s)return 0===s?s:+s;s=s.replace(a,"");var i=_.test(s);return i||w.test(s)?x(s.slice(2),i?2:8):u.test(s)?NaN:+s}s.exports=function debounce(s,o,i){var a,u,_,w,x,C,j=0,L=!1,B=!1,V=!0;if("function"!=typeof s)throw new TypeError("Expected a function");function invokeFunc(o){var i=a,_=u;return a=u=void 0,j=o,w=s.apply(_,i)}function shouldInvoke(s){var i=s-C;return void 0===C||i>=o||i<0||B&&s-j>=_}function timerExpired(){var s=now();if(shouldInvoke(s))return trailingEdge(s);x=setTimeout(timerExpired,function remainingWait(s){var i=o-(s-C);return B?U(i,_-(s-j)):i}(s))}function trailingEdge(s){return x=void 0,V&&a?invokeFunc(s):(a=u=void 0,w)}function debounced(){var s=now(),i=shouldInvoke(s);if(a=arguments,u=this,C=s,i){if(void 0===x)return function leadingEdge(s){return j=s,x=setTimeout(timerExpired,o),L?invokeFunc(s):w}(C);if(B)return x=setTimeout(timerExpired,o),invokeFunc(C)}return void 0===x&&(x=setTimeout(timerExpired,o)),w}return o=toNumber(o)||0,isObject(i)&&(L=!!i.leading,_=(B="maxWait"in i)?$(toNumber(i.maxWait)||0,o):_,V="trailing"in i?!!i.trailing:V),debounced.cancel=function cancel(){void 0!==x&&clearTimeout(x),j=0,a=C=u=x=void 0},debounced.flush=function flush(){return void 0===x?w:trailingEdge(now())},debounced}},20317:s=>{s.exports=function mapToArray(s){var o=-1,i=Array(s.size);return s.forEach((function(s,a){i[++o]=[a,s]})),i}},20334:(s,o,i)=>{"use strict";var a=i(48287).Buffer;class NonError extends Error{constructor(s){super(NonError._prepareSuperMessage(s)),Object.defineProperty(this,"name",{value:"NonError",configurable:!0,writable:!0}),Error.captureStackTrace&&Error.captureStackTrace(this,NonError)}static _prepareSuperMessage(s){try{return JSON.stringify(s)}catch{return String(s)}}}const u=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],_=Symbol(".toJSON called"),destroyCircular=({from:s,seen:o,to_:i,forceEnumerable:w,maxDepth:x,depth:C})=>{const j=i||(Array.isArray(s)?[]:{});if(o.push(s),C>=x)return j;if("function"==typeof s.toJSON&&!0!==s[_])return(s=>{s[_]=!0;const o=s.toJSON();return delete s[_],o})(s);for(const[i,u]of Object.entries(s))"function"==typeof a&&a.isBuffer(u)?j[i]="[object Buffer]":"function"!=typeof u&&(u&&"object"==typeof u?o.includes(s[i])?j[i]="[Circular]":(C++,j[i]=destroyCircular({from:s[i],seen:o.slice(),forceEnumerable:w,maxDepth:x,depth:C})):j[i]=u);for(const{property:o,enumerable:i}of u)"string"==typeof s[o]&&Object.defineProperty(j,o,{value:s[o],enumerable:!!w||i,configurable:!0,writable:!0});return j};s.exports={serializeError:(s,o={})=>{const{maxDepth:i=Number.POSITIVE_INFINITY}=o;return"object"==typeof s&&null!==s?destroyCircular({from:s,seen:[],forceEnumerable:!0,maxDepth:i,depth:0}):"function"==typeof s?`[Function: ${s.name||"anonymous"}]`:s},deserializeError:(s,o={})=>{const{maxDepth:i=Number.POSITIVE_INFINITY}=o;if(s instanceof Error)return s;if("object"==typeof s&&null!==s&&!Array.isArray(s)){const o=new Error;return destroyCircular({from:s,seen:[],to_:o,maxDepth:i,depth:0}),o}return new NonError(s)}}},20426:s=>{var o=Object.prototype.hasOwnProperty;s.exports=function baseHas(s,i){return null!=s&&o.call(s,i)}},20575:(s,o,i)=>{"use strict";var a=i(3121);s.exports=function(s){return a(s.length)}},20798:(s,o,i)=>{"use strict";var a,u,_=i(45951),w=i(96794),x=_.process,C=_.Deno,j=x&&x.versions||C&&C.version,L=j&&j.v8;L&&(u=(a=L.split("."))[0]>0&&a[0]<4?1:+(a[0]+a[1])),!u&&w&&(!(a=w.match(/Edge\/(\d+)/))||a[1]>=74)&&(a=w.match(/Chrome\/(\d+)/))&&(u=+a[1]),s.exports=u},20850:(s,o,i)=>{"use strict";s.exports=i(46076)},20999:(s,o,i)=>{var a=i(69302),u=i(36800);s.exports=function createAssigner(s){return a((function(o,i){var a=-1,_=i.length,w=_>1?i[_-1]:void 0,x=_>2?i[2]:void 0;for(w=s.length>3&&"function"==typeof w?(_--,w):void 0,x&&u(i[0],i[1],x)&&(w=_<3?void 0:w,_=1),o=Object(o);++a<_;){var C=i[a];C&&s(o,C,a,w)}return o}))}},21549:(s,o,i)=>{var a=i(22032),u=i(63862),_=i(66721),w=i(12749),x=i(35749);function Hash(s){var o=-1,i=null==s?0:s.length;for(this.clear();++o{var a=i(16547),u=i(43360);s.exports=function copyObject(s,o,i,_){var w=!i;i||(i={});for(var x=-1,C=o.length;++x{var a=i(51873),u=i(37828),_=i(75288),w=i(25911),x=i(20317),C=i(84247),j=a?a.prototype:void 0,L=j?j.valueOf:void 0;s.exports=function equalByTag(s,o,i,a,j,B,$){switch(i){case"[object DataView]":if(s.byteLength!=o.byteLength||s.byteOffset!=o.byteOffset)return!1;s=s.buffer,o=o.buffer;case"[object ArrayBuffer]":return!(s.byteLength!=o.byteLength||!B(new u(s),new u(o)));case"[object Boolean]":case"[object Date]":case"[object Number]":return _(+s,+o);case"[object Error]":return s.name==o.name&&s.message==o.message;case"[object RegExp]":case"[object String]":return s==o+"";case"[object Map]":var U=x;case"[object Set]":var V=1&a;if(U||(U=C),s.size!=o.size&&!V)return!1;var z=$.get(s);if(z)return z==o;a|=2,$.set(s,o);var Y=w(U(s),U(o),a,j,B,$);return $.delete(s),Y;case"[object Symbol]":if(L)return L.call(s)==L.call(o)}return!1}},22032:(s,o,i)=>{var a=i(81042);s.exports=function hashClear(){this.__data__=a?a(null):{},this.size=0}},22225:s=>{var o="\\ud800-\\udfff",i="\\u2700-\\u27bf",a="a-z\\xdf-\\xf6\\xf8-\\xff",u="A-Z\\xc0-\\xd6\\xd8-\\xde",_="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",w="["+_+"]",x="\\d+",C="["+i+"]",j="["+a+"]",L="[^"+o+_+x+i+a+u+"]",B="(?:\\ud83c[\\udde6-\\uddff]){2}",$="[\\ud800-\\udbff][\\udc00-\\udfff]",U="["+u+"]",V="(?:"+j+"|"+L+")",z="(?:"+U+"|"+L+")",Y="(?:['’](?:d|ll|m|re|s|t|ve))?",Z="(?:['’](?:D|LL|M|RE|S|T|VE))?",ee="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",ie="[\\ufe0e\\ufe0f]?",ae=ie+ee+("(?:\\u200d(?:"+["[^"+o+"]",B,$].join("|")+")"+ie+ee+")*"),ce="(?:"+[C,B,$].join("|")+")"+ae,le=RegExp([U+"?"+j+"+"+Y+"(?="+[w,U,"$"].join("|")+")",z+"+"+Z+"(?="+[w,U+V,"$"].join("|")+")",U+"?"+V+"+"+Y,U+"+"+Z,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",x,ce].join("|"),"g");s.exports=function unicodeWords(s){return s.match(le)||[]}},22551:(s,o,i)=>{"use strict";var a=i(96540),u=i(69982);function p(s){for(var o="https://reactjs.org/docs/error-decoder.html?invariant="+s,i=1;i