From fc091497009ae38565419f694f853b0eb1da2a0a Mon Sep 17 00:00:00 2001 From: fzipi Date: Wed, 16 Oct 2024 13:23:44 +0000 Subject: [PATCH] deploy: 473aa62f0899bcad6eb1ac508f16747dc02cdd9b --- 404.html | 4 ++-- connectors/caddy/index.html | 4 ++-- connectors/coraza-spoa/index.html | 4 ++-- connectors/index.html | 4 ++-- contributors/felipe-zipitria/index.html | 4 ++-- contributors/index.html | 4 ++-- contributors/juan-pablo-tosso/index.html | 4 ++-- docs/index.html | 4 ++-- docs/reference/benchmarks/index.html | 6 +++--- docs/reference/body-processing/index.html | 6 +++--- docs/reference/extending/index.html | 4 ++-- docs/reference/index.html | 4 ++-- docs/reference/internals/index.html | 4 ++-- docs/seclang/actions/index.html | 4 ++-- docs/seclang/directives/index.html | 4 ++-- docs/seclang/execution-flow/index.html | 4 ++-- docs/seclang/index.html | 4 ++-- docs/seclang/operators/index.html | 4 ++-- docs/seclang/syntax/index.html | 4 ++-- docs/seclang/transformations/index.html | 4 ++-- docs/seclang/variables/index.html | 4 ++-- docs/tutorials/coreruleset/index.html | 4 ++-- docs/tutorials/index.html | 4 ++-- docs/tutorials/introduction/index.html | 4 ++-- docs/tutorials/quick-start/index.html | 4 ++-- docs/tutorials/upgrade/index.html | 4 ++-- docs/tutorials/using-plugins/index.html | 4 ++-- index.html | 4 ++-- ...6cca828516a81699558a85ab2474b6ee4c1df2d2231efafe52aae.js | 2 ++ ...e0a483160d2b3af97274830f9fe127b750d503b7d16ecb34cab57.js | 2 -- ...9ce693b95483dc397d8d0197103c024ecadcb06fce9c0d351aaa.css | 2 +- ...1526898ffc681cea3fa3d6be62dfd46c097dac1a4c238dd055e73.js | 2 +- plugins/geoip/index.html | 4 ++-- plugins/index.html | 4 ++-- 34 files changed, 66 insertions(+), 66 deletions(-) create mode 100644 js/highlight.min.3fad8f30a015b158548e09d8ef6b17060443eb3b52ca175cba7e316335b52541272a3857bf56cca828516a81699558a85ab2474b6ee4c1df2d2231efafe52aae.js delete mode 100644 js/highlight.min.86beb544fe09c932e7d01490675d38341a1986f7782726a5edad74025e4a0f885c60e18ddaee0a483160d2b3af97274830f9fe127b750d503b7d16ecb34cab57.js rename main.237e16aa52ac48f5215210c868c67e15f6d3ce87cc775393f94d3a66aa84482a3898f81451ae801fe74f36e4f3c3641e91241de87f47f1d51f8e6742e6861699.css => main.0fbd12f474dcfc4d512bdfbe34bd926d1747470d2ab0c95508cf442d94d4670934ebc995fd719ce693b95483dc397d8d0197103c024ecadcb06fce9c0d351aaa.css (74%) rename main.min.bfa65cedd6250da819d42442541d2515f4bc08872cc860fbda3fd95f9183125b3418e48c5ebfee53f1ec729b29ddd1ec7be9990ad33785624c81b9268ea2fe6b.js => main.min.c4966a03e9ec0dcecee7eaa7d77d4fc0ee1a46b1ddf1d8b2bf83b8ff62213b9e1110153a8cc1526898ffc681cea3fa3d6be62dfd46c097dac1a4c238dd055e73.js (56%) diff --git a/404.html b/404.html index aece787..a624783 100644 --- a/404.html +++ b/404.html @@ -1,5 +1,5 @@ -404 Page not found - OWASP Coraza +404 Page not found - OWASP Coraza

Page not found :(

The page you are looking for doesn't exist or has been moved.

Top
\ No newline at end of file +

Page not found :(

The page you are looking for doesn't exist or has been moved.

Top
\ No newline at end of file diff --git a/connectors/caddy/index.html b/connectors/caddy/index.html index 6f8aecb..01485d5 100644 --- a/connectors/caddy/index.html +++ b/connectors/caddy/index.html @@ -1,6 +1,6 @@ -Caddy - OWASP Coraza +Caddy - OWASP Coraza
Top
\ No newline at end of file +Edit this page on
← HAProxy Coraza SPOA
Top
\ No newline at end of file diff --git a/connectors/coraza-spoa/index.html b/connectors/coraza-spoa/index.html index 3e0fb83..95c79d0 100644 --- a/connectors/coraza-spoa/index.html +++ b/connectors/coraza-spoa/index.html @@ -1,4 +1,4 @@ -HAProxy Coraza SPOA - OWASP Coraza +HAProxy Coraza SPOA - OWASP Coraza
Top
\ No newline at end of file +Edit this page on
Caddy →
Top
\ No newline at end of file diff --git a/connectors/index.html b/connectors/index.html index 4dff430..d020d88 100644 --- a/connectors/index.html +++ b/connectors/index.html @@ -1,4 +1,4 @@ -Connectors - OWASP Coraza +Connectors - OWASP Coraza
Top
\ No newline at end of file +Compatibility:

Top
\ No newline at end of file diff --git a/contributors/felipe-zipitria/index.html b/contributors/felipe-zipitria/index.html index f7158c3..de8dc8c 100644 --- a/contributors/felipe-zipitria/index.html +++ b/contributors/felipe-zipitria/index.html @@ -1,5 +1,5 @@ -Felipe Zipitria - OWASP Coraza +Felipe Zipitria - OWASP Coraza

Felipe Zipitria

You can find me fzipi @ github!

Top
\ No newline at end of file +

Felipe Zipitria

You can find me fzipi @ github!

Top
\ No newline at end of file diff --git a/contributors/index.html b/contributors/index.html index 073af12..c02a193 100644 --- a/contributors/index.html +++ b/contributors/index.html @@ -1,5 +1,5 @@ -Contributors - OWASP Coraza +Contributors - OWASP Coraza
Top
\ No newline at end of file +
Top
\ No newline at end of file diff --git a/contributors/juan-pablo-tosso/index.html b/contributors/juan-pablo-tosso/index.html index 5d73cb4..ba9849f 100644 --- a/contributors/juan-pablo-tosso/index.html +++ b/contributors/juan-pablo-tosso/index.html @@ -1,7 +1,7 @@ -Juan Pablo Tosso - OWASP Coraza +Juan Pablo Tosso - OWASP Coraza

Juan Pablo Tosso

Hi, I'm Juan Pablo Tosso, OWASP #Coraza project co-leader - Research Engineer at @traceableai, Proud Father and Open-Source Developer.

Top
\ No newline at end of file +Juan Pablo Tosso twitter
Top
\ No newline at end of file diff --git a/docs/index.html b/docs/index.html index bbb5f22..0b9d708 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,5 +1,5 @@ -Use Cases - OWASP Coraza +Use Cases - OWASP Coraza
Top
\ No newline at end of file +
Top
\ No newline at end of file diff --git a/docs/reference/benchmarks/index.html b/docs/reference/benchmarks/index.html index 44b1d57..31f54a1 100644 --- a/docs/reference/benchmarks/index.html +++ b/docs/reference/benchmarks/index.html @@ -1,4 +1,4 @@ -Benchmarks - OWASP Coraza +Benchmarks - OWASP Coraza ExpandCollapse

Benchmarks

Tests description

  • Tests are performed using OWASP Core Ruleset v4 and go benchmarks.
  • The benchmark tool supports coraza v2, v3 and modsecurity.
  • Modsecurity is executed using CGO.
  • There are currently 4 test-cases and 7 variations:
    • JSON request: 1kb and 100kb payload
    • URLENCODED request: 1kb and 100kb payload
    • Multipart file upload: 1kb and 100kb payload
    • GET request: no body

Results

Machine specs: Apple M1 Pro (10 cores, 16 GB RAM)

Values are requests analyzed per second. The higher the value, the better results.

TestCoraza v2Coraza v3Modsecurity
Simple JSON Request6399031011
Giant JSON Request603908847
Multipart Request606817976
Giant Multipart Request573781958
Simple GET Request6549551135
Simple URLENCODED Request624892842
Giant URLENCODED Request632871840

Test Versions:

  • Coraza v3: v3.0.0-dev (no tag)
  • Coraza v2: v2.0.1
  • Modsecurity v3: v3.0.7

Run your own benchmarks

Using golang

# compile modsecurity: https://github.com/SpiderLabs/ModSecurity/wiki/Compilation-recipes-for-v3.x
+ExpandCollapse

Tests description

  • Tests are performed using OWASP Core Ruleset v4 and go benchmarks.
  • The benchmark tool supports coraza v2, v3 and modsecurity.
  • Modsecurity is executed using CGO.
  • There are currently 4 test-cases and 7 variations:
    • JSON request: 1kb and 100kb payload
    • URLENCODED request: 1kb and 100kb payload
    • Multipart file upload: 1kb and 100kb payload
    • GET request: no body

Results

Machine specs: Apple M1 Pro (10 cores, 16 GB RAM)

Values are requests analyzed per second. The higher the value, the better results.

TestCoraza v2Coraza v3Modsecurity
Simple JSON Request6399031011
Giant JSON Request603908847
Multipart Request606817976
Giant Multipart Request573781958
Simple GET Request6549551135
Simple URLENCODED Request624892842
Giant URLENCODED Request632871840

Test Versions:

  • Coraza v3: v3.0.0-dev (no tag)
  • Coraza v2: v2.0.1
  • Modsecurity v3: v3.0.7

Run your own benchmarks

Using golang

# compile modsecurity: https://github.com/SpiderLabs/ModSecurity/wiki/Compilation-recipes-for-v3.x
 git clone https://github.com/jptosso/coraza-benchmark
 cd coraza-benchmark
 go test -bench=. ./...
 

Using Docker

docker run jptosso/coraza-benchmark:latest
 
  • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
    \ No newline at end of file +Edit this page on
    • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
      \ No newline at end of file diff --git a/docs/reference/body-processing/index.html b/docs/reference/body-processing/index.html index 2560a35..1f4101a 100644 --- a/docs/reference/body-processing/index.html +++ b/docs/reference/body-processing/index.html @@ -1,4 +1,4 @@ -Body Processing - OWASP Coraza +Body Processing - OWASP Coraza ExpandCollapse

      Body Processing

      BodyBuffer

      BodyBuffer is used to effectively handle large bodies. Coraza has to buffer the body in order to make reliable blocking possible. Future versions might implement a more efficient solution.

      BodyBuffer.Reader is a io.Reader that reads from either a memory buffer or a file. Using files is disabled for tinygo.

      Important: Copying a Reader to BodyBuffer will most likely flush the original reader. In most cases you will have to keep two copies of the reader, one for coraza, and one for your application. You can simply replace your reader pointer with the BodyBuffer reader pointer.

      Body Processors

      Body processors are designed to handle requests and responses in the same context. Most processors can handle either a request or a response, but there are cases of body processors like JSON, that can handle request and response in different context. Request-Response correlation is the responsibility of the processor, and the current use-case is GraphQL.

      Body ProcessorRequestResponseCorrelationTinygo support
      URLEncodedYesNoNoYes
      XML (Partial Support)YesYesNoNo
      MultipartYesNoNoYes
      JSONYesYesNoYes
      GraphQLTBDTBDYesTBD
      • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
        \ No newline at end of file +ExpandCollapse

        BodyBuffer

        BodyBuffer is used to effectively handle large bodies. Coraza has to buffer the body in order to make reliable blocking possible. Future versions might implement a more efficient solution.

        BodyBuffer.Reader is a io.Reader that reads from either a memory buffer or a file. Using files is disabled for tinygo.

        Important: Copying a Reader to BodyBuffer will most likely flush the original reader. In most cases you will have to keep two copies of the reader, one for coraza, and one for your application. You can simply replace your reader pointer with the BodyBuffer reader pointer.

        Body Processors

        Body processors are designed to handle requests and responses in the same context. Most processors can handle either a request or a response, but there are cases of body processors like JSON, that can handle request and response in different context. Request-Response correlation is the responsibility of the processor, and the current use-case is GraphQL.

        Body ProcessorRequestResponseCorrelationTinygo support
        URLEncodedYesNoNoYes
        XML (Partial Support)YesYesNoNo
        MultipartYesNoNoYes
        JSONYesYesNoYes
        GraphQLTBDTBDYesTBD
        • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
          \ No newline at end of file diff --git a/docs/reference/extending/index.html b/docs/reference/extending/index.html index 4aaa5b6..ea6b5c0 100644 --- a/docs/reference/extending/index.html +++ b/docs/reference/extending/index.html @@ -1,4 +1,4 @@ -Extending - OWASP Coraza +Extending - OWASP Coraza
          • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
            \ No newline at end of file +Edit this page on
            • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
              \ No newline at end of file diff --git a/docs/reference/index.html b/docs/reference/index.html index d69724b..2b02bde 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -1,5 +1,5 @@ -Reference - OWASP Coraza +Reference - OWASP Coraza
              • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                \ No newline at end of file +
                • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                  \ No newline at end of file diff --git a/docs/reference/internals/index.html b/docs/reference/internals/index.html index a9d85c7..7bcbcc3 100644 --- a/docs/reference/internals/index.html +++ b/docs/reference/internals/index.html @@ -1,4 +1,4 @@ -Internals - OWASP Coraza +Internals - OWASP Coraza .

                  Variables are compiled in runtime in order to support Regex(precompiled) and XML, the function tx.GetField(variable). Using RuleVariable.Exceptions and []exceptions might seem redundant but both are different, the list of exception is complemented from the rule. In case of Regex, GetField will use RuleVariable.Regex to match data instead of RuleVariable.Key.

                  Note: Collections are not concurrent-safe, don’t share transactions between routines.

                  Phases

                  Phases are used by RuleGroup to filter between execution phases on HTTP/1.1 and HTTP/1.0.

                  Phase 1: Request Headers

                  This phase process theorically consists in three phases:

                  • Connection (tx.ProcessConnection()): Request address and port
                  • Request line (tx.ProcessURI()): Request URL, does not include GET arguments
                  • Request headers (tx.ProcessRequestHeaders()) Will evaluate phase 1

                  Phase 2: Request Body

                  This phase only runs when RequestBodyAcces is On, otherwise we will skip to phase 3. This phase will do one of the following:

                  • Reject transaction if the request body is too long and RequestBodyLimitAction is set to Reject
                  • If URLENCODED: set POST arguments and request_Body
                  • If MULTIPART: Parse files and set FILES variables
                  • If JSON: Not implemented yet
                  • If none of the above was met and ForceRequestBodyVariable is set to true, URLENCODED will be forced

                  See Body Handling for more info.

                  Phase 3: Response Headers

                  Phase 4: Response Body

                  Phase 5: Logging

                  This is a special phase, it will always run but it must be handled by the client. For example, if there is any error reported by Coraza, the client must at least implement a defer tx.ProcessLogging(). This phase will close handlers, save persistent collections and write audit loggers, in order to write the audit loggers the following conditions must be met:

                  • Transaction was marked with auditlog action
                  • There must be at least one audit logger (SecAuditLog)
                  • AuditEngine must be On or RelevantOnly
                  • If AuditEngine was set to RelevantOnly the response status must match AuditLogRelevantStatus

                  Body handling

                  BodyBuffer is a struct that will manage the request or response buffer and store the data to temprary files if required. BodyBuffer will apply a few rules to decide whether to buffer the data in memory or write a temporary file, it will also return a Reader to the memory buffer or the temporary file created. Temporary files must be deleted by tx.ProccessLoging.

                  Persistent Collections

                  Not working yet.

                  The tx.ProcessRequest(req) helper

                  • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                    \ No newline at end of file +Edit this page on
                    • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                      \ No newline at end of file diff --git a/docs/seclang/actions/index.html b/docs/seclang/actions/index.html index 36c9f0b..12c5b1c 100644 --- a/docs/seclang/actions/index.html +++ b/docs/seclang/actions/index.html @@ -1,4 +1,4 @@ -Actions - OWASP Coraza +Actions - OWASP Coraza
                      • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                        \ No newline at end of file +Edit this page on
                        • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                          \ No newline at end of file diff --git a/docs/seclang/directives/index.html b/docs/seclang/directives/index.html index 7d7283b..ae3f3e1 100644 --- a/docs/seclang/directives/index.html +++ b/docs/seclang/directives/index.html @@ -1,4 +1,4 @@ -Directives - OWASP Coraza +Directives - OWASP Coraza
                          • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                            \ No newline at end of file +Edit this page on
                            • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                              \ No newline at end of file diff --git a/docs/seclang/execution-flow/index.html b/docs/seclang/execution-flow/index.html index 0498e97..7e2f69c 100644 --- a/docs/seclang/execution-flow/index.html +++ b/docs/seclang/execution-flow/index.html @@ -1,4 +1,4 @@ -Execution flow - OWASP Coraza +Execution flow - OWASP Coraza
                              • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                \ No newline at end of file +Edit this page on
                                • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                  \ No newline at end of file diff --git a/docs/seclang/index.html b/docs/seclang/index.html index 943ab40..b07ccd3 100644 --- a/docs/seclang/index.html +++ b/docs/seclang/index.html @@ -1,5 +1,5 @@ -Seclang - OWASP Coraza +Seclang - OWASP Coraza
                                  • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                    \ No newline at end of file +
                                    • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                      \ No newline at end of file diff --git a/docs/seclang/operators/index.html b/docs/seclang/operators/index.html index 51230ff..c9c134c 100644 --- a/docs/seclang/operators/index.html +++ b/docs/seclang/operators/index.html @@ -1,4 +1,4 @@ -Operators - OWASP Coraza +Operators - OWASP Coraza
                                      • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                        \ No newline at end of file +Edit this page on
                                        • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                          \ No newline at end of file diff --git a/docs/seclang/syntax/index.html b/docs/seclang/syntax/index.html index 7882b81..3210536 100644 --- a/docs/seclang/syntax/index.html +++ b/docs/seclang/syntax/index.html @@ -1,4 +1,4 @@ -Syntax - OWASP Coraza +Syntax - OWASP Coraza
                                          • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                            \ No newline at end of file +Edit this page on
                                            • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                              \ No newline at end of file diff --git a/docs/seclang/transformations/index.html b/docs/seclang/transformations/index.html index e834af2..42aa9ef 100644 --- a/docs/seclang/transformations/index.html +++ b/docs/seclang/transformations/index.html @@ -1,4 +1,4 @@ -Transformations - OWASP Coraza +Transformations - OWASP Coraza
                                              • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                \ No newline at end of file +Edit this page on
                                                • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                  \ No newline at end of file diff --git a/docs/seclang/variables/index.html b/docs/seclang/variables/index.html index 06c8138..fab694f 100644 --- a/docs/seclang/variables/index.html +++ b/docs/seclang/variables/index.html @@ -1,4 +1,4 @@ -Variables - OWASP Coraza +Variables - OWASP Coraza
                                                  • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                    \ No newline at end of file +Edit this page on
                                                    • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                      \ No newline at end of file diff --git a/docs/tutorials/coreruleset/index.html b/docs/tutorials/coreruleset/index.html index 1bc0b76..c142334 100644 --- a/docs/tutorials/coreruleset/index.html +++ b/docs/tutorials/coreruleset/index.html @@ -1,4 +1,4 @@ -OWASP Core Ruleset - OWASP Coraza +OWASP Core Ruleset - OWASP Coraza
                                                      • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                        \ No newline at end of file +Edit this page on
                                                        • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                          \ No newline at end of file diff --git a/docs/tutorials/index.html b/docs/tutorials/index.html index 9babf4c..e90633a 100644 --- a/docs/tutorials/index.html +++ b/docs/tutorials/index.html @@ -1,5 +1,5 @@ -Tutorials - OWASP Coraza +Tutorials - OWASP Coraza
                                                          • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                            \ No newline at end of file +
                                                            • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                              \ No newline at end of file diff --git a/docs/tutorials/introduction/index.html b/docs/tutorials/introduction/index.html index fe368e3..c929d23 100644 --- a/docs/tutorials/introduction/index.html +++ b/docs/tutorials/introduction/index.html @@ -1,4 +1,4 @@ -Introduction - OWASP Coraza +Introduction - OWASP Coraza
                                                              • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                                \ No newline at end of file +Edit this page on
                                                                • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                                  \ No newline at end of file diff --git a/docs/tutorials/quick-start/index.html b/docs/tutorials/quick-start/index.html index 6c3e526..230409c 100644 --- a/docs/tutorials/quick-start/index.html +++ b/docs/tutorials/quick-start/index.html @@ -1,4 +1,4 @@ -Quick Start - OWASP Coraza +Quick Start - OWASP Coraza
                                                                  • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                                    \ No newline at end of file +Edit this page on
                                                                    • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                                      \ No newline at end of file diff --git a/docs/tutorials/upgrade/index.html b/docs/tutorials/upgrade/index.html index 59f13d4..5ffad82 100644 --- a/docs/tutorials/upgrade/index.html +++ b/docs/tutorials/upgrade/index.html @@ -1,4 +1,4 @@ -Upgrade to v3 🆕 - OWASP Coraza +Upgrade to v3 🆕 - OWASP Coraza
                                                                      • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                                        \ No newline at end of file +Edit this page on
                                                                        • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                                          \ No newline at end of file diff --git a/docs/tutorials/using-plugins/index.html b/docs/tutorials/using-plugins/index.html index 51f5c46..8188b5b 100644 --- a/docs/tutorials/using-plugins/index.html +++ b/docs/tutorials/using-plugins/index.html @@ -1,4 +1,4 @@ -Using Plugins - OWASP Coraza +Using Plugins - OWASP Coraza
                                                                          • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                                            \ No newline at end of file +Edit this page on
                                                                            • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                                              \ No newline at end of file diff --git a/index.html b/index.html index 6fb29e9..7e7dd5c 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ -OWASP Coraza - Enterprise-grade open source web application firewall library +OWASP Coraza - Enterprise-grade open source web application firewall library
                                                                              • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                                                \ No newline at end of file +source project.

                                                                                • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                                                  \ No newline at end of file diff --git a/js/highlight.min.3fad8f30a015b158548e09d8ef6b17060443eb3b52ca175cba7e316335b52541272a3857bf56cca828516a81699558a85ab2474b6ee4c1df2d2231efafe52aae.js b/js/highlight.min.3fad8f30a015b158548e09d8ef6b17060443eb3b52ca175cba7e316335b52541272a3857bf56cca828516a81699558a85ab2474b6ee4c1df2d2231efafe52aae.js new file mode 100644 index 0000000..f13c212 --- /dev/null +++ b/js/highlight.min.3fad8f30a015b158548e09d8ef6b17060443eb3b52ca175cba7e316335b52541272a3857bf56cca828516a81699558a85ab2474b6ee4c1df2d2231efafe52aae.js @@ -0,0 +1,2 @@ +(()=>{var f=Object.create,t=Object.defineProperty,x=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,v=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty,p=(e,t)=>function(){return t||(0,e[s(e)[0]])((t={exports:{}}).exports,t),t.exports},h=(e,n,o,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of s(n))!g.call(e,a)&&a!==o&&t(e,a,{get:()=>n[a],enumerable:!(i=x(n,a))||i.enumerable});return e},u=(e,n,s)=>(s=e!=null?f(v(e)):{},h(n||!e||!e.__esModule?t(s,"default",{value:e,enumerable:!0}):s,e)),j=p({"node_modules/highlight.js/lib/core.js"(e,t){function S(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{const n=e[t],s=typeof n;(s==="object"||s==="function")&&!Object.isFrozen(n)&&S(n)}),e}var a,c,l,d,v,y,X,Q,Z,ce,r,h,ie,ee,o,m,f,b,_,w,x,C,E,k,A,M,F,z,D,N,R,P,H,I,B,V,$,W,U,K,q,J,te,ne,se,n,p,g,G,T=class{constructor(e){e.data===void 0&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function Y(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function s(t,...n){const e=Object.create(null);for(const n in t)e[n]=t[n];return n.forEach(function(t){for(const n in t)e[n]=t[n]}),e}X="",y=e=>!!e.scope,Q=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((e,t)=>`${e}${"_".repeat(t+1)}`)].join(" ")}return`${t}${e}`},Z=class{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=Y(e)}openNode(e){if(!y(e))return;const t=Q(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){if(!y(e))return;this.buffer+=X}value(){return this.buffer}span(e){this.buffer+=``}},v=(e={})=>{const t={children:[]};return Object.assign(t,e),t},ce=class _TokenTree{constructor(){this.rootNode=v(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t=v({scope:e});this.add(t),this.stack.push(t)}closeNode(){return this.stack.length>1?this.stack.pop():void 0}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return typeof t=="string"?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(e){if(typeof e=="string")return;if(!e.children)return;e.children.every(e=>typeof e=="string")?e.children=[e.children.join("")]:e.children.forEach(e=>{_TokenTree._collapse(e)})}},K=class extends ce{constructor(e){super(),this.options=e}addText(e){if(e==="")return;this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){const n=e.root;t&&(n.scope=`language:${t}`),this.add(n)}toHTML(){const e=new Z(this,this.options);return e.value()}finalize(){return this.closeAllNodes(),!0}};function u(e){return e?typeof e=="string"?e:e.source:null}function le(e){return i("(?=",e,")")}function ue(e){return i("(?:",e,")*")}function he(e){return i("(?:",e,")?")}function i(...e){const t=e.map(e=>u(e)).join("");return t}function Ee(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function j(...e){const t=Ee(e),n="("+(t.capture?"":"?:")+e.map(e=>u(e)).join("|")+")";return n}function L(e){return new RegExp(e.toString()+"|").exec("").length-1}function ke(e,t){const n=e&&e.exec(t);return n&&n.index===0}k=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function O(e,{joinWith:t}){let n=0;return e.map(e=>{n+=1;const o=n;let t=u(e),s="";for(;t.length>0;){const e=k.exec(t);if(!e){s+=t;break}s+=t.substring(0,e.index),t=t.substring(e.index+e[0].length),e[0][0]==="\\"&&e[1]?s+="\\"+String(Number(e[1])+o):(s+=e[0],e[0]==="("&&n++)}return s}).map(e=>`(${e})`).join(t)}J=/\b\B/,C="[a-zA-Z]\\w*",h="[a-zA-Z_]\\w*",b="\\b\\d+(\\.\\d+)?",x="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",w="\\b(0b[01]+)",M="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",F=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=i(t,/.*\b/,e.binary,/\b.*/)),s({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{e.index!==0&&t.ignoreMatch()}},e)},r={begin:"\\\\[\\s\\S]",relevance:0},z={scope:"string",begin:"'",end:"'",illegal:`\\n`,contains:[r]},D={scope:"string",begin:'"',end:'"',illegal:`\\n`,contains:[r]},N={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},c=function(e,t,n={}){const o=s({scope:"comment",begin:e,end:t,contains:[]},n);o.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const a=j("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return o.contains.push({begin:i(/[ ]+/,"(",a,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),o},R=c("//","$"),P=c("/\\*","\\*/"),H=c("#","$"),I={scope:"number",begin:b,relevance:0},B={scope:"number",begin:x,relevance:0},V={scope:"number",begin:w,relevance:0},$={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[r,{begin:/\[/,end:/\]/,relevance:0,contains:[r]}]},W={scope:"title",begin:C,relevance:0},U={scope:"title",begin:h,relevance:0},A={begin:"\\.\\s*"+h,relevance:0},q=function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})},l=Object.freeze({__proto__:null,APOS_STRING_MODE:z,BACKSLASH_ESCAPE:r,BINARY_NUMBER_MODE:V,BINARY_NUMBER_RE:w,COMMENT:c,C_BLOCK_COMMENT_MODE:P,C_LINE_COMMENT_MODE:R,C_NUMBER_MODE:B,C_NUMBER_RE:x,END_SAME_AS_BEGIN:q,HASH_COMMENT_MODE:H,IDENT_RE:C,MATCH_NOTHING_RE:J,METHOD_GUARD:A,NUMBER_MODE:I,NUMBER_RE:b,PHRASAL_WORDS_MODE:N,QUOTE_STRING_MODE:D,REGEXP_MODE:$,RE_STARTERS_RE:M,SHEBANG:F,TITLE_MODE:W,UNDERSCORE_IDENT_RE:h,UNDERSCORE_TITLE_MODE:U});function Ce(e,t){const n=e.input[e.index-1];n==="."&&t.ignoreMatch()}function xe(e){e.className!==void 0&&(e.scope=e.className,delete e.className)}function Oe(e,t){if(!t)return;if(!e.beginKeywords)return;e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Ce,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0)}function we(e){if(!Array.isArray(e.illegal))return;e.illegal=j(...e.illegal)}function de(e){if(!e.match)return;if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}function _e(e){e.relevance===void 0&&(e.relevance=1)}te=(e)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=i(n.beforeMatch,le(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},ne=["of","and","for","in","not","or","if","then","parent","list","value"],se="keyword";function oe(e,t,n=se){const s=Object.create(null);return typeof e=="string"?o(n,e.split(" ")):Array.isArray(e)?o(n,e):Object.keys(e).forEach(function(n){Object.assign(s,oe(e[n],t,n))}),s;function o(e,n){t&&(n=n.map(e=>e.toLowerCase())),n.forEach(function(t){const n=t.split("|");s[n[0]]=[e,ye(n[0],n[1])]})}}function ye(e,t){return t?Number(t):be(e)?0:1}function be(e){return ne.includes(e.toLowerCase())}g={},n=e=>{console.error(e)},p=(e,...t)=>{console.log(`WARN: ${e}`,...t)},a=(e,t)=>{if(g[`${e}/${t}`])return;console.log(`Deprecated as of ${e}. ${t}`),g[`${e}/${t}`]=!0},d=new Error;function re(e,t,{key:n}){let s=0;const a=e[n],o={},i={};for(let e=1;e<=t.length;e++)i[e+s]=a[e],o[e+s]=!0,s+=L(t[e-1]);e[n]=i,e[n]._emit=o,e[n]._multi=!0}function me(e){if(!Array.isArray(e.begin))return;if(e.skip||e.excludeBegin||e.returnBegin)throw n("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),d;if(typeof e.beginScope!="object"||e.beginScope===null)throw n("beginScope must be object"),d;re(e,e.begin,{key:"beginScope"}),e.begin=O(e.begin,{joinWith:""})}function fe(e){if(!Array.isArray(e.end))return;if(e.skip||e.excludeEnd||e.returnEnd)throw n("skip, excludeEnd, returnEnd not compatible with endScope: {}"),d;if(typeof e.endScope!="object"||e.endScope===null)throw n("endScope must be object"),d;re(e,e.end,{key:"endScope"}),e.end=O(e.end,{joinWith:""})}function pe(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function ge(e){pe(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),me(e),fe(e)}function ve(e){function t(t,n){return new RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))}class o{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=L(e)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const e=this.regexes.map(e=>e[1]);this.matcherRe=t(O(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const n=t.findIndex((e,t)=>t>0&&e!==void 0),s=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,s)}}class i{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new o;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),t.type==="begin"&&this.count++}exec(e){const n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex;let t=n.exec(e);if(this.resumingScanAtSamePosition())if(t&&t.index===this.lastIndex);else{const n=this.getMatcher(0);n.lastIndex=this.lastIndex+1,t=n.exec(e)}return t&&(this.regexIndex+=t.position+1,this.regexIndex===this.count&&this.considerAll()),t}}function a(e){const t=new i;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:"begin"})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}function n(s,o){const i=s;if(s.isCompiled)return i;[xe,de,ge,te].forEach(e=>e(s,o)),e.compilerExtensions.forEach(e=>e(s,o)),s.__beforeBegin=null,[Oe,we,_e].forEach(e=>e(s,o)),s.isCompiled=!0;let r=null;return typeof s.keywords=="object"&&s.keywords.$pattern&&(s.keywords=Object.assign({},s.keywords),r=s.keywords.$pattern,delete s.keywords.$pattern),r=r||/\w+/,s.keywords&&(s.keywords=oe(s.keywords,e.case_insensitive)),i.keywordPatternRe=t(r,!0),o&&(s.begin||(s.begin=/\B|\b/),i.beginRe=t(i.begin),!s.end&&!s.endsWithParent&&(s.end=/\B|\b/),s.end&&(i.endRe=t(i.end)),i.terminatorEnd=u(i.end)||"",s.endsWithParent&&o.terminatorEnd&&(i.terminatorEnd+=(s.end?"|":"")+o.terminatorEnd)),s.illegal&&(i.illegalRe=t(s.illegal)),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map(function(e){return je(e==="self"?s:e)})),s.contains.forEach(function(e){n(e,i)}),s.starts&&n(s.starts,o),i.matcher=a(i),i}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=s(e.classNameAliases||{}),n(e)}function ae(e){return!!e&&(e.endsWithParent||ae(e.starts))}function je(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return s(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:ae(e)?s(e,{starts:e.starts?s(e.starts):null}):Object.isFrozen(e)?s(e):e}ie="11.10.0",ee=class extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}},m=Y,f=s,_=Symbol("nomatch"),G=7,E=function(e){const o=Object.create(null),r=Object.create(null),d=[];let c=!0;const k="Could not find the language '{}', did you forget to load/include a language module?",E={disableAutodetect:!0,name:"Plain text",contains:[]};let t={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:K};function w(e){return t.noHighlightRe.test(e)}function A(e){let o=e.className+" ";o+=e.parentNode?e.parentNode.className:"";const n=t.languageDetectRe.exec(o);if(n){const t=s(n[1]);return t||(p(k.replace("{}",n[1])),p("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return o.split(/\s+/).find(e=>w(e)||s(e))}function y(e,t,n){let o="",i="";typeof t=="object"?(o=e,n=t.ignoreIllegals,i=t.language):(a("10.7.0","highlight(lang, code, ...args) has been deprecated."),a("10.7.0",`Please use highlight(code, options) instead. +https://github.com/highlightjs/highlight.js/issues/2277`),i=e,o=t),n===void 0&&(n=!0);const s={code:o,language:i};h("before:highlight",s);const r=s.result?s.result:v(s.language,s.code,n);return r.code=s.code,h("after:highlight",r),r}function v(e,i,a,r){const w=Object.create(null);function I(e,t){return e.keywords[t]}function z(){if(!l.keywords){u.addText(d);return}let n=0;l.keywordPatternRe.lastIndex=0;let e=l.keywordPatternRe.exec(d),t="";for(;e;){t+=d.substring(n,e.index);const s=h.case_insensitive?e[0].toLowerCase():e[0],o=I(l,s);if(o){const[n,i]=o;if(u.addText(t),t="",w[s]=(w[s]||0)+1,w[s]<=G&&(j+=i),n.startsWith("_"))t+=e[0];else{const t=h.classNameAliases[n]||n;b(e[0],t)}}else t+=e[0];n=l.keywordPatternRe.lastIndex,e=l.keywordPatternRe.exec(d)}t+=d.substring(n),u.addText(t)}function H(){if(d==="")return;let e=null;if(typeof l.subLanguage=="string"){if(!o[l.subLanguage]){u.addText(d);return}e=v(l.subLanguage,d,!0,S[l.subLanguage]),S[l.subLanguage]=e._top}else e=g(d,l.subLanguage.length?l.subLanguage:null);l.relevance>0&&(j+=e.relevance),u.__addSublanguage(e._emitter,e.language)}function p(){l.subLanguage!=null?H():z(),d=""}function b(e,t){if(e==="")return;u.startScope(t),u.addText(e),u.endScope()}function E(e,t){let n=1;const s=t.length-1;for(;n<=s;){if(!e._emit[n]){n++;continue}const s=h.classNameAliases[e[n]]||e[n],o=t[n];s?b(o,s):(d=o,z(),d=""),n++}}function F(e,t){return e.scope&&typeof e.scope=="string"&&u.openNode(h.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(b(d,h.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),d=""):e.beginScope._multi&&(E(e.beginScope,t),d="")),l=Object.create(e,{parent:{value:l}}),l}function M(e,t,n){let s=ke(e.endRe,n);if(s){if(e["on:end"]){const n=new T(e);e["on:end"](t,n),n.isMatchIgnored&&(s=!1)}if(s){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return M(e.parent,t,n)}function P(e){return l.matcher.regexIndex===0?(d+=e[0],1):(C=!0,0)}function R(e){const n=e[0],t=e.rule,s=new T(t),o=[t.__beforeBegin,t["on:begin"]];for(const t of o){if(!t)continue;if(t(e,s),s.isMatchIgnored)return P(n)}return t.skip?d+=n:(t.excludeBegin&&(d+=n),p(),!t.returnBegin&&!t.excludeBegin&&(d=n)),F(t,e),t.returnBegin?0:n.length}function L(e){const t=e[0],o=i.substring(e.index),s=M(l,e,o);if(!s)return _;const n=l;l.endScope&&l.endScope._wrap?(p(),b(t,l.endScope._wrap)):l.endScope&&l.endScope._multi?(p(),E(l.endScope,e)):n.skip?d+=t:(n.returnEnd||n.excludeEnd||(d+=t),p(),n.excludeEnd&&(d=t));do l.scope&&u.closeNode(),!l.skip&&!l.subLanguage&&(j+=l.relevance),l=l.parent;while(l!==s.parent)return s.starts&&F(s.starts,e),n.returnEnd?0:t.length}function D(){const e=[];for(let t=l;t!==h;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach(e=>u.openNode(e))}let y={};function A(t,n){const s=n&&n[0];if(d+=t,s==null)return p(),0;if(y.type==="begin"&&n.type==="end"&&y.index===n.index&&s===""){if(d+=i.slice(n.index,n.index+1),!c){const t=new Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=y.rule,t}return 1}if(y=n,n.type==="begin")return R(n);if(n.type==="illegal"&&!a){const e=new Error('Illegal lexeme "'+s+'" for mode "'+(l.scope||"")+'"');throw e.mode=l,e}if(n.type==="end"){const e=L(n);if(e!==_)return e}if(n.type==="illegal"&&s==="")return 1;if(O>1e5&&O>n.index*3){const e=new Error("potential infinite loop, way more iterations than matches");throw e}return d+=s,s.length}const h=s(e);if(!h)throw n(k.replace("{}",e)),new Error('Unknown language: "'+e+'"');const N=ve(h);let x="",l=r||N;const S={},u=new t.__emitter(t);D();let d="",j=0,f=0,O=0,C=!1;try{if(h.__emitTokens)h.__emitTokens(i,u);else{for(l.matcher.considerAll();;){O++,C?C=!1:l.matcher.considerAll(),l.matcher.lastIndex=f;const e=l.matcher.exec(i);if(!e)break;const t=i.substring(f,e.index),n=A(t,e);f=e.index+n}A(i.substring(f))}return u.finalize(),x=u.toHTML(),{language:e,value:x,relevance:j,illegal:!1,_emitter:u,_top:l}}catch(t){if(t.message&&t.message.includes("Illegal"))return{language:e,value:m(i),illegal:!0,relevance:0,_illegalBy:{message:t.message,index:f,context:i.slice(f-100,f+100),mode:t.mode,resultSoFar:x},_emitter:u};if(c)return{language:e,value:m(i),illegal:!1,relevance:0,errorRaised:t,_emitter:u,_top:l};throw t}}function V(e){const n={value:m(e),illegal:!1,relevance:0,_top:E,_emitter:new t.__emitter(t)};return n._emitter.addText(e),n}function g(e,n){n=n||t.languages||Object.keys(o);const r=V(e),i=n.filter(s).filter(x).map(t=>v(t,e,!1));i.unshift(r);const c=i.sort((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(s(e.language).supersetOf===t.language)return 1;if(s(t.language).supersetOf===e.language)return-1}return 0}),[l,d]=c,a=l;return a.secondBest=d,a}function P(e,t,n){const s=t&&r[t]||n;e.classList.add("hljs"),e.classList.add(`language-${s}`)}function b(e){let i=null;const s=A(e);if(w(s))return;if(h("before:highlightElement",{el:e,language:s}),e.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e);return}if(e.children.length>0&&(t.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(e)),t.throwUnescapedHTML)){const t=new ee("One of your code blocks includes unescaped HTML.",e.innerHTML);throw t}i=e;const o=i.textContent,n=s?y(o,{language:s,ignoreIllegals:!0}):g(o);e.innerHTML=n.value,e.dataset.highlighted="yes",P(e,s,n.language),e.result={language:n.language,re:n.relevance,relevance:n.relevance},n.secondBest&&(e.secondBest={language:n.secondBest.language,relevance:n.secondBest.relevance}),h("after:highlightElement",{el:e,result:n,text:o})}function R(e){t=f(t,e)}const L=()=>{u(),a("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function M(){u(),a("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let O=!1;function u(){if(document.readyState==="loading"){O=!0;return}const e=document.querySelectorAll(t.cssSelector);e.forEach(b)}function F(){O&&u()}typeof window!="undefined"&&window.addEventListener&&window.addEventListener("DOMContentLoaded",F,!1);function z(t,s){let i=null;try{i=s(e)}catch(e){if(n("Language definition for '{}' could not be registered.".replace("{}",t)),!c)throw e;n(e),i=E}i.name||(i.name=t),o[t]=i,i.rawDefinition=s.bind(null,e),i.aliases&&C(i.aliases,{languageName:t})}function D(e){delete o[e];for(const t of Object.keys(r))r[t]===e&&delete r[t]}function N(){return Object.keys(o)}function s(e){return e=(e||"").toLowerCase(),o[e]||o[r[e]]}function C(e,{languageName:t}){typeof e=="string"&&(e=[e]),e.forEach(e=>{r[e.toLowerCase()]=t})}function x(e){const t=s(e);return t&&!t.disableAutodetect}function H(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))})}function I(e){H(e),d.push(e)}function B(e){const t=d.indexOf(e);t!==-1&&d.splice(t,1)}function h(e,t){const n=e;d.forEach(function(e){e[n]&&e[n](t)})}function $(e){return a("10.7.0","highlightBlock will be removed entirely in v12.0"),a("10.7.0","Please use highlightElement now."),b(e)}Object.assign(e,{highlight:y,highlightAuto:g,highlightAll:u,highlightElement:b,highlightBlock:$,configure:R,initHighlighting:L,initHighlightingOnLoad:M,registerLanguage:z,unregisterLanguage:D,listLanguages:N,getLanguage:s,registerAliases:C,autoDetection:x,inherit:f,addPlugin:I,removePlugin:B}),e.debugMode=function(){c=!1},e.safeMode=function(){c=!0},e.versionString=ie,e.regex={concat:i,lookahead:le,either:j,optional:he,anyNumberOfTimes:ue};for(const e in l)typeof l[e]=="object"&&S(l[e]);return Object.assign(e,l),e},o=E({}),o.newInstance=()=>E({}),t.exports=o,o.HighlightJS=o,o.default=o}}),d=u(j(),1),e=d.default,r="[A-Za-z$_][0-9A-Za-z$_]*",m=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],c=["true","false","null","undefined","NaN","Infinity"],a=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],i=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],o=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],b=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],l=[].concat(o,a,i);function y(e){const n=e.regex,I=(e,{after:t})=>{const n="",end:""},T=/<[A-Za-z0-9\\._:-]+\s*\/>/,h={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{const n=e[0].length+e.index,s=e.input[n];if(s==="<"||s===","){t.ignoreMatch();return}s===">"&&(I(e,{after:n})||t.ignoreMatch());let o;const i=e.input.substring(n);if(o=i.match(/^\s*=/)){t.ignoreMatch();return}if((o=i.match(/^\s+extends\s+/))&&o.index===0){t.ignoreMatch();return}}},s={$pattern:r,keyword:m,literal:c,built_in:l,"variable.language":b},y="[0-9](_?[0-9])*",f=`\\.(${y})`,j=`0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`,v={className:"number",variants:[{begin:`(\\b(${j})((${f})|\\.)?|(${f}))[eE][+-]?(${y})\\b`},{begin:`\\b(${j})\\b((${f})\\b|\\.)?|(${f})\\b`},{begin:`\\b(0|[1-9](_?[0-9])*)n\\b`},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},d={className:"subst",begin:"\\$\\{",end:"\\}",keywords:s,contains:[]},_={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,d],subLanguage:"xml"}},w={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,d],subLanguage:"css"}},O={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,d],subLanguage:"graphql"}},x={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,d]},M=e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:t+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),g={className:"comment",variants:[M,e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},k=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,_,w,O,x,{match:/\$\d+/},v];d.contains=k.concat({begin:/\{/,end:/\}/,keywords:s,contains:["self"].concat(k)});const A=[].concat(g,d.contains),p=A.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:["self"].concat(A)}]),u={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:p},F={variants:[{match:[/class/,/\s+/,t,/\s+/,/extends/,/\s+/,n.concat(t,"(",n.concat(/\./,t),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,t],scope:{1:"keyword",3:"title.class"}}]},C={relevance:0,match:n.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...a,...i]}},z={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},D={variants:[{match:[/function/,/\s+/,t,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[u],illegal:/%/},N={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function L(e){return n.concat("(?!",e.join("|"),")")}const R={match:n.concat(/\b/,L([...o,"super","import"].map(e=>`${e}\\s*\\(`)),t,n.lookahead(/\s*\(/)),className:"title.function",relevance:0},P={begin:n.concat(/\./,n.lookahead(n.concat(t,/(?![0-9A-Za-z$_(])/))),end:t,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},H={match:[/get|set/,/\s+/,t,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},u]},S="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",B={match:[/const|var|let/,/\s+/,t,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(S)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[u]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:s,exports:{PARAMS_CONTAINS:p,CLASS_REFERENCE:C},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),z,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,_,w,O,x,g,{match:/\$\d+/},v,C,{className:"attr",begin:t+n.lookahead(":"),relevance:0},B,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[g,e.REGEXP_MODE,{className:"function",begin:S,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:p}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:E.begin,end:E.end},{match:T},{begin:h.begin,"on:begin":h.isTrulyOpeningTag,end:h.end}],subLanguage:"xml",contains:[{begin:h.begin,end:h.end,skip:!0,contains:["self"]}]}]},D,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[u,e.inherit(e.TITLE_MODE,{begin:t,className:"title.function"})]},{match:/\.\.\./,relevance:0},P,{match:"\\$"+t,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[u]},R,N,F,H,{match:/\$[(.]/}]}}function _(e){const n={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},s={match:/[{}[\],:]/,className:"punctuation",relevance:0},t=["true","false","null"],o={scope:"literal",beginKeywords:t.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:t},contains:[n,s,e.QUOTE_STRING_MODE,o,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}function w(e){const u=e.regex,t={},r={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{className:"variable",variants:[{begin:u.concat(/\$[\w\d#@][\w\d_]*/,`(?![\\w\\d])(?![$])`)},r]});const n={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},m=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),a={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},s={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,n]};n.contains.push(s);const c={match:/\\"/},l={className:"string",begin:/'/,end:/'/},d={match:/\\'/},o={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]},h=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],i=e.SHEBANG({binary:`(${h.join("|")})`,relevance:10}),f={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},p=["if","then","else","elif","fi","for","while","until","in","do","done","case","esac","function","select"],g=["true","false"],v={match:/(\/[a-z._-]+)+/},b=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],j=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],y=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],_=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:p,literal:g,built_in:[...b,...j,"set","shopt",...y,..._]},contains:[i,e.SHEBANG(),f,o,m,a,v,s,c,l,d,t]}}function O(e){const t=e.regex,n=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),l=/[\p{L}0-9._:-]+/u,s={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},o={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},r=e.inherit(o,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{className:"string"}),i=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),a={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[o,i,c,r,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[o,r,i,c]}]}]},e.COMMENT(//,{relevance:10}),{begin://,relevance:10},s,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[i]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[a],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[a],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:t.concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:a}]},{className:"tag",begin:t.concat(/<\//,t.lookahead(t.concat(n,/>/))),contains:[{className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function n(e){const n=e.regex,s={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},t=e.COMMENT();t.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const o={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},i={className:"literal",begin:/\bon|off|true|false|yes|no\b/},a={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[t,i,o,a,s,"self"],relevance:0},l=/[A-Za-z0-9_-]+/,d=/"(\\"|[^"])*"/,u=/'[^']*'/,r=n.either(l,d,u),h=n.concat(r,"(\\s*\\.\\s*",r,")*",n.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[t,{className:"section",begin:/\[+/,end:/\]+/},{begin:h,className:"attr",starts:{end:/$/,contains:[t,c,i,o,a,s]}}]}}function C(e){const n="true false yes no null",t="[\\w#;/?:@&=+$,.~*'()[\\]]+",g={className:"attr",variants:[{begin:/\w[\w :()./-]*:(?=[ \t]|$)/},{begin:/"\w[\w :()./-]*":(?=[ \t]|$)/},{begin:/'\w[\w :()./-]*':(?=[ \t]|$)/}]},p={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},a={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,p]},h=e.inherit(a,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),l="[0-9]{4}(-[0-9][0-9]){0,2}",c="([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?",r="(\\.[0-9]*)?",d="([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?",u={className:"number",begin:"\\b"+l+c+r+d+"\\b"},o={end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},m={begin:/\{/,end:/\}/,contains:[o],illegal:`\\n`,relevance:0},f={begin:"\\[",end:"\\]",contains:[o],illegal:`\\n`,relevance:0},i=[g,{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+!"+t},{className:"type",begin:"!<"+t+">"},{className:"type",begin:"!"+t},{className:"type",begin:"!!"+t},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},u,{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},m,f,a],s=[...i];return s.pop(),s.push(h),o.contains=s,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:i}}function E(e){const m=e.regex,r={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},u={begin:"^[-\\*]{3,}",end:"$"},h={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:`(~{3,})[^~](.|\\n)*?\\1~*[ ]*`},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:`(\\n)$`}],relevance:0}]},c={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},l={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},d=/[A-Za-z][A-Za-z0-9+.-]*/,i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:m.concat(/\[.+?\]\(/,d,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},n={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},s={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},a=e.inherit(n,{contains:[]}),o=e.inherit(s,{contains:[]});n.contains.push(o),s.contains.push(a);let t=[r,i];[n,s,a,o].forEach(e=>{e.contains=e.contains.concat(t)}),t=t.concat(n,s);const f={className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{begin:`(?=^.+?\\n[=-]{2,}$)`,contains:[{begin:"^[=-]*$"},{begin:"^",end:`\\n`,contains:t}]}]},p={className:"quote",begin:"^>\\s+",contains:t,end:"$"},g={scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/};return{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[f,r,c,n,s,p,h,u,i,l,g]}}function k(e){const p=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,u=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],g=["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],f=["__debug__","Ellipsis","False","None","NotImplemented","True"],m=["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"],l={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:u,built_in:g,literal:f,type:m},t={className:"meta",begin:/^(>>>|\.\.\.) /},o={className:"subst",begin:/\{/,end:/\}/,keywords:l,illegal:/#/},i={begin:/\{\{/,relevance:0},c={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,t,i,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,t,i,o]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,i,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,i,o]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},s="[0-9](_?[0-9])*",d=`(\\b(${s}))?\\.(${s})|\\b(${s})\\.`,n=`\\b|${u.join("|")}`,r={className:"number",relevance:0,variants:[{begin:`(\\b(${s})|(${d}))[eE][+-]?(${s})[jJ]?(?=${n})`},{begin:`(${d})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${n})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${n})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${n})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${n})`},{begin:`\\b(${s})[jJ](?=${n})`}]},v={className:"comment",begin:p.lookahead(/# type:/),end:/$/,keywords:l,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},h={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:["self",t,r,c,e.HASH_COMMENT_MODE]}]};return o.contains=[c,r,t],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:l,illegal:/(<\/|\?)|=>/,contains:[t,r,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},c,v,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,a],scope:{1:"keyword",3:"title.function"},contains:[h]},{variants:[{match:[/\bclass/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/\bclass/,/\s+/,a]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[r,h,c]}]}}function A(e){const n=["true","false","iota","nil"],s=["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"],o=["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],i=["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],t={keyword:i,type:o,literal:n,built_in:s};return{name:"Go",aliases:["golang"],keywords:t,illegal:"{document.querySelectorAll("pre code:not(.language-mermaid)").forEach(t=>{e.highlightElement(t)})})})() \ No newline at end of file diff --git a/js/highlight.min.86beb544fe09c932e7d01490675d38341a1986f7782726a5edad74025e4a0f885c60e18ddaee0a483160d2b3af97274830f9fe127b750d503b7d16ecb34cab57.js b/js/highlight.min.86beb544fe09c932e7d01490675d38341a1986f7782726a5edad74025e4a0f885c60e18ddaee0a483160d2b3af97274830f9fe127b750d503b7d16ecb34cab57.js deleted file mode 100644 index 37727bf..0000000 --- a/js/highlight.min.86beb544fe09c932e7d01490675d38341a1986f7782726a5edad74025e4a0f885c60e18ddaee0a483160d2b3af97274830f9fe127b750d503b7d16ecb34cab57.js +++ /dev/null @@ -1,2 +0,0 @@ -(()=>{var f=Object.create,t=Object.defineProperty,x=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,v=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty,p=(e,t)=>function(){return t||(0,e[s(e)[0]])((t={exports:{}}).exports,t),t.exports},h=(e,n,o,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of s(n))!g.call(e,a)&&a!==o&&t(e,a,{get:()=>n[a],enumerable:!(i=x(n,a))||i.enumerable});return e},u=(e,n,s)=>(s=e!=null?f(v(e)):{},h(n||!e||!e.__esModule?t(s,"default",{value:e,enumerable:!0}):s,e)),j=p({"node_modules/highlight.js/lib/core.js"(e,t){function S(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{const n=e[t],s=typeof n;(s==="object"||s==="function")&&!Object.isFrozen(n)&&S(n)}),e}var a,c,l,d,v,y,X,Q,Z,ce,r,h,ie,ee,o,m,f,b,_,w,x,C,E,k,A,M,F,z,D,N,R,P,H,I,B,V,$,W,U,K,q,J,te,ne,se,n,p,g,G,T=class{constructor(e){e.data===void 0&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function Y(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function s(t,...n){const e=Object.create(null);for(const n in t)e[n]=t[n];return n.forEach(function(t){for(const n in t)e[n]=t[n]}),e}X="",y=e=>!!e.scope,Q=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((e,t)=>`${e}${"_".repeat(t+1)}`)].join(" ")}return`${t}${e}`},Z=class{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=Y(e)}openNode(e){if(!y(e))return;const t=Q(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){if(!y(e))return;this.buffer+=X}value(){return this.buffer}span(e){this.buffer+=``}},v=(e={})=>{const t={children:[]};return Object.assign(t,e),t},ce=class _TokenTree{constructor(){this.rootNode=v(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t=v({scope:e});this.add(t),this.stack.push(t)}closeNode(){return this.stack.length>1?this.stack.pop():void 0}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return typeof t=="string"?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(e){if(typeof e=="string")return;if(!e.children)return;e.children.every(e=>typeof e=="string")?e.children=[e.children.join("")]:e.children.forEach(e=>{_TokenTree._collapse(e)})}},K=class extends ce{constructor(e){super(),this.options=e}addText(e){if(e==="")return;this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){const n=e.root;t&&(n.scope=`language:${t}`),this.add(n)}toHTML(){const e=new Z(this,this.options);return e.value()}finalize(){return this.closeAllNodes(),!0}};function u(e){return e?typeof e=="string"?e:e.source:null}function le(e){return i("(?=",e,")")}function ue(e){return i("(?:",e,")*")}function he(e){return i("(?:",e,")?")}function i(...e){const t=e.map(e=>u(e)).join("");return t}function Ee(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function j(...e){const t=Ee(e),n="("+(t.capture?"":"?:")+e.map(e=>u(e)).join("|")+")";return n}function L(e){return new RegExp(e.toString()+"|").exec("").length-1}function ke(e,t){const n=e&&e.exec(t);return n&&n.index===0}k=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function O(e,{joinWith:t}){let n=0;return e.map(e=>{n+=1;const o=n;let t=u(e),s="";for(;t.length>0;){const e=k.exec(t);if(!e){s+=t;break}s+=t.substring(0,e.index),t=t.substring(e.index+e[0].length),e[0][0]==="\\"&&e[1]?s+="\\"+String(Number(e[1])+o):(s+=e[0],e[0]==="("&&n++)}return s}).map(e=>`(${e})`).join(t)}J=/\b\B/,C="[a-zA-Z]\\w*",h="[a-zA-Z_]\\w*",b="\\b\\d+(\\.\\d+)?",x="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",w="\\b(0b[01]+)",M="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",F=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=i(t,/.*\b/,e.binary,/\b.*/)),s({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{e.index!==0&&t.ignoreMatch()}},e)},r={begin:"\\\\[\\s\\S]",relevance:0},z={scope:"string",begin:"'",end:"'",illegal:`\\n`,contains:[r]},D={scope:"string",begin:'"',end:'"',illegal:`\\n`,contains:[r]},N={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},c=function(e,t,n={}){const o=s({scope:"comment",begin:e,end:t,contains:[]},n);o.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const a=j("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return o.contains.push({begin:i(/[ ]+/,"(",a,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),o},R=c("//","$"),P=c("/\\*","\\*/"),H=c("#","$"),I={scope:"number",begin:b,relevance:0},B={scope:"number",begin:x,relevance:0},V={scope:"number",begin:w,relevance:0},$={begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[r,{begin:/\[/,end:/\]/,relevance:0,contains:[r]}]}]},W={scope:"title",begin:C,relevance:0},U={scope:"title",begin:h,relevance:0},A={begin:"\\.\\s*"+h,relevance:0},q=function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})},l=Object.freeze({__proto__:null,MATCH_NOTHING_RE:J,IDENT_RE:C,UNDERSCORE_IDENT_RE:h,NUMBER_RE:b,C_NUMBER_RE:x,BINARY_NUMBER_RE:w,RE_STARTERS_RE:M,SHEBANG:F,BACKSLASH_ESCAPE:r,APOS_STRING_MODE:z,QUOTE_STRING_MODE:D,PHRASAL_WORDS_MODE:N,COMMENT:c,C_LINE_COMMENT_MODE:R,C_BLOCK_COMMENT_MODE:P,HASH_COMMENT_MODE:H,NUMBER_MODE:I,C_NUMBER_MODE:B,BINARY_NUMBER_MODE:V,REGEXP_MODE:$,TITLE_MODE:W,UNDERSCORE_TITLE_MODE:U,METHOD_GUARD:A,END_SAME_AS_BEGIN:q});function Ce(e,t){const n=e.input[e.index-1];n==="."&&t.ignoreMatch()}function xe(e){e.className!==void 0&&(e.scope=e.className,delete e.className)}function Oe(e,t){if(!t)return;if(!e.beginKeywords)return;e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Ce,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0)}function we(e){if(!Array.isArray(e.illegal))return;e.illegal=j(...e.illegal)}function de(e){if(!e.match)return;if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}function _e(e){e.relevance===void 0&&(e.relevance=1)}te=(e)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=i(n.beforeMatch,le(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},ne=["of","and","for","in","not","or","if","then","parent","list","value"],se="keyword";function oe(e,t,n=se){const s=Object.create(null);return typeof e=="string"?o(n,e.split(" ")):Array.isArray(e)?o(n,e):Object.keys(e).forEach(function(n){Object.assign(s,oe(e[n],t,n))}),s;function o(e,n){t&&(n=n.map(e=>e.toLowerCase())),n.forEach(function(t){const n=t.split("|");s[n[0]]=[e,ye(n[0],n[1])]})}}function ye(e,t){return t?Number(t):be(e)?0:1}function be(e){return ne.includes(e.toLowerCase())}g={},n=e=>{console.error(e)},p=(e,...t)=>{console.log(`WARN: ${e}`,...t)},a=(e,t)=>{if(g[`${e}/${t}`])return;console.log(`Deprecated as of ${e}. ${t}`),g[`${e}/${t}`]=!0},d=new Error;function re(e,t,{key:n}){let s=0;const a=e[n],o={},i={};for(let e=1;e<=t.length;e++)i[e+s]=a[e],o[e+s]=!0,s+=L(t[e-1]);e[n]=i,e[n]._emit=o,e[n]._multi=!0}function me(e){if(!Array.isArray(e.begin))return;if(e.skip||e.excludeBegin||e.returnBegin)throw n("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),d;if(typeof e.beginScope!="object"||e.beginScope===null)throw n("beginScope must be object"),d;re(e,e.begin,{key:"beginScope"}),e.begin=O(e.begin,{joinWith:""})}function fe(e){if(!Array.isArray(e.end))return;if(e.skip||e.excludeEnd||e.returnEnd)throw n("skip, excludeEnd, returnEnd not compatible with endScope: {}"),d;if(typeof e.endScope!="object"||e.endScope===null)throw n("endScope must be object"),d;re(e,e.end,{key:"endScope"}),e.end=O(e.end,{joinWith:""})}function pe(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function ge(e){pe(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),me(e),fe(e)}function ve(e){function t(t,n){return new RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))}class o{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=L(e)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const e=this.regexes.map(e=>e[1]);this.matcherRe=t(O(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const n=t.findIndex((e,t)=>t>0&&e!==void 0),s=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,s)}}class i{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new o;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),t.type==="begin"&&this.count++}exec(e){const n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex;let t=n.exec(e);if(this.resumingScanAtSamePosition())if(t&&t.index===this.lastIndex);else{const n=this.getMatcher(0);n.lastIndex=this.lastIndex+1,t=n.exec(e)}return t&&(this.regexIndex+=t.position+1,this.regexIndex===this.count&&this.considerAll()),t}}function a(e){const t=new i;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:"begin"})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}function n(s,o){const i=s;if(s.isCompiled)return i;[xe,de,ge,te].forEach(e=>e(s,o)),e.compilerExtensions.forEach(e=>e(s,o)),s.__beforeBegin=null,[Oe,we,_e].forEach(e=>e(s,o)),s.isCompiled=!0;let r=null;return typeof s.keywords=="object"&&s.keywords.$pattern&&(s.keywords=Object.assign({},s.keywords),r=s.keywords.$pattern,delete s.keywords.$pattern),r=r||/\w+/,s.keywords&&(s.keywords=oe(s.keywords,e.case_insensitive)),i.keywordPatternRe=t(r,!0),o&&(s.begin||(s.begin=/\B|\b/),i.beginRe=t(i.begin),!s.end&&!s.endsWithParent&&(s.end=/\B|\b/),s.end&&(i.endRe=t(i.end)),i.terminatorEnd=u(i.end)||"",s.endsWithParent&&o.terminatorEnd&&(i.terminatorEnd+=(s.end?"|":"")+o.terminatorEnd)),s.illegal&&(i.illegalRe=t(s.illegal)),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map(function(e){return je(e==="self"?s:e)})),s.contains.forEach(function(e){n(e,i)}),s.starts&&n(s.starts,o),i.matcher=a(i),i}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=s(e.classNameAliases||{}),n(e)}function ae(e){return!!e&&(e.endsWithParent||ae(e.starts))}function je(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return s(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:ae(e)?s(e,{starts:e.starts?s(e.starts):null}):Object.isFrozen(e)?s(e):e}ie="11.8.0",ee=class extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}},m=Y,f=s,_=Symbol("nomatch"),G=7,E=function(e){const o=Object.create(null),r=Object.create(null),d=[];let c=!0;const k="Could not find the language '{}', did you forget to load/include a language module?",E={disableAutodetect:!0,name:"Plain text",contains:[]};let t={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:K};function w(e){return t.noHighlightRe.test(e)}function A(e){let o=e.className+" ";o+=e.parentNode?e.parentNode.className:"";const n=t.languageDetectRe.exec(o);if(n){const t=s(n[1]);return t||(p(k.replace("{}",n[1])),p("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return o.split(/\s+/).find(e=>w(e)||s(e))}function y(e,t,n){let o="",i="";typeof t=="object"?(o=e,n=t.ignoreIllegals,i=t.language):(a("10.7.0","highlight(lang, code, ...args) has been deprecated."),a("10.7.0",`Please use highlight(code, options) instead. -https://github.com/highlightjs/highlight.js/issues/2277`),i=e,o=t),n===void 0&&(n=!0);const s={code:o,language:i};h("before:highlight",s);const r=s.result?s.result:v(s.language,s.code,n);return r.code=s.code,h("after:highlight",r),r}function v(e,i,a,r){const w=Object.create(null);function I(e,t){return e.keywords[t]}function z(){if(!l.keywords){u.addText(d);return}let n=0;l.keywordPatternRe.lastIndex=0;let e=l.keywordPatternRe.exec(d),t="";for(;e;){t+=d.substring(n,e.index);const s=h.case_insensitive?e[0].toLowerCase():e[0],o=I(l,s);if(o){const[n,i]=o;if(u.addText(t),t="",w[s]=(w[s]||0)+1,w[s]<=G&&(j+=i),n.startsWith("_"))t+=e[0];else{const t=h.classNameAliases[n]||n;b(e[0],t)}}else t+=e[0];n=l.keywordPatternRe.lastIndex,e=l.keywordPatternRe.exec(d)}t+=d.substring(n),u.addText(t)}function H(){if(d==="")return;let e=null;if(typeof l.subLanguage=="string"){if(!o[l.subLanguage]){u.addText(d);return}e=v(l.subLanguage,d,!0,S[l.subLanguage]),S[l.subLanguage]=e._top}else e=g(d,l.subLanguage.length?l.subLanguage:null);l.relevance>0&&(j+=e.relevance),u.__addSublanguage(e._emitter,e.language)}function p(){l.subLanguage!=null?H():z(),d=""}function b(e,t){if(e==="")return;u.startScope(t),u.addText(e),u.endScope()}function E(e,t){let n=1;const s=t.length-1;for(;n<=s;){if(!e._emit[n]){n++;continue}const s=h.classNameAliases[e[n]]||e[n],o=t[n];s?b(o,s):(d=o,z(),d=""),n++}}function F(e,t){return e.scope&&typeof e.scope=="string"&&u.openNode(h.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(b(d,h.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),d=""):e.beginScope._multi&&(E(e.beginScope,t),d="")),l=Object.create(e,{parent:{value:l}}),l}function M(e,t,n){let s=ke(e.endRe,n);if(s){if(e["on:end"]){const n=new T(e);e["on:end"](t,n),n.isMatchIgnored&&(s=!1)}if(s){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return M(e.parent,t,n)}function P(e){return l.matcher.regexIndex===0?(d+=e[0],1):(C=!0,0)}function R(e){const n=e[0],t=e.rule,s=new T(t),o=[t.__beforeBegin,t["on:begin"]];for(const t of o){if(!t)continue;if(t(e,s),s.isMatchIgnored)return P(n)}return t.skip?d+=n:(t.excludeBegin&&(d+=n),p(),!t.returnBegin&&!t.excludeBegin&&(d=n)),F(t,e),t.returnBegin?0:n.length}function L(e){const t=e[0],o=i.substring(e.index),s=M(l,e,o);if(!s)return _;const n=l;l.endScope&&l.endScope._wrap?(p(),b(t,l.endScope._wrap)):l.endScope&&l.endScope._multi?(p(),E(l.endScope,e)):n.skip?d+=t:(n.returnEnd||n.excludeEnd||(d+=t),p(),n.excludeEnd&&(d=t));do l.scope&&u.closeNode(),!l.skip&&!l.subLanguage&&(j+=l.relevance),l=l.parent;while(l!==s.parent)return s.starts&&F(s.starts,e),n.returnEnd?0:t.length}function D(){const e=[];for(let t=l;t!==h;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach(e=>u.openNode(e))}let y={};function A(t,n){const s=n&&n[0];if(d+=t,s==null)return p(),0;if(y.type==="begin"&&n.type==="end"&&y.index===n.index&&s===""){if(d+=i.slice(n.index,n.index+1),!c){const t=new Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=y.rule,t}return 1}if(y=n,n.type==="begin")return R(n);if(n.type==="illegal"&&!a){const e=new Error('Illegal lexeme "'+s+'" for mode "'+(l.scope||"")+'"');throw e.mode=l,e}if(n.type==="end"){const e=L(n);if(e!==_)return e}if(n.type==="illegal"&&s==="")return 1;if(O>1e5&&O>n.index*3){const e=new Error("potential infinite loop, way more iterations than matches");throw e}return d+=s,s.length}const h=s(e);if(!h)throw n(k.replace("{}",e)),new Error('Unknown language: "'+e+'"');const N=ve(h);let x="",l=r||N;const S={},u=new t.__emitter(t);D();let d="",j=0,f=0,O=0,C=!1;try{if(h.__emitTokens)h.__emitTokens(i,u);else{for(l.matcher.considerAll();;){O++,C?C=!1:l.matcher.considerAll(),l.matcher.lastIndex=f;const e=l.matcher.exec(i);if(!e)break;const t=i.substring(f,e.index),n=A(t,e);f=e.index+n}A(i.substring(f))}return u.finalize(),x=u.toHTML(),{language:e,value:x,relevance:j,illegal:!1,_emitter:u,_top:l}}catch(t){if(t.message&&t.message.includes("Illegal"))return{language:e,value:m(i),illegal:!0,relevance:0,_illegalBy:{message:t.message,index:f,context:i.slice(f-100,f+100),mode:t.mode,resultSoFar:x},_emitter:u};if(c)return{language:e,value:m(i),illegal:!1,relevance:0,errorRaised:t,_emitter:u,_top:l};throw t}}function V(e){const n={value:m(e),illegal:!1,relevance:0,_top:E,_emitter:new t.__emitter(t)};return n._emitter.addText(e),n}function g(e,n){n=n||t.languages||Object.keys(o);const r=V(e),i=n.filter(s).filter(x).map(t=>v(t,e,!1));i.unshift(r);const c=i.sort((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(s(e.language).supersetOf===t.language)return 1;if(s(t.language).supersetOf===e.language)return-1}return 0}),[l,d]=c,a=l;return a.secondBest=d,a}function P(e,t,n){const s=t&&r[t]||n;e.classList.add("hljs"),e.classList.add(`language-${s}`)}function b(e){let i=null;const s=A(e);if(w(s))return;if(h("before:highlightElement",{el:e,language:s}),e.children.length>0&&(t.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(e)),t.throwUnescapedHTML)){const t=new ee("One of your code blocks includes unescaped HTML.",e.innerHTML);throw t}i=e;const o=i.textContent,n=s?y(o,{language:s,ignoreIllegals:!0}):g(o);e.innerHTML=n.value,P(e,s,n.language),e.result={language:n.language,re:n.relevance,relevance:n.relevance},n.secondBest&&(e.secondBest={language:n.secondBest.language,relevance:n.secondBest.relevance}),h("after:highlightElement",{el:e,result:n,text:o})}function R(e){t=f(t,e)}const L=()=>{u(),a("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function M(){u(),a("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let O=!1;function u(){if(document.readyState==="loading"){O=!0;return}const e=document.querySelectorAll(t.cssSelector);e.forEach(b)}function F(){O&&u()}typeof window!="undefined"&&window.addEventListener&&window.addEventListener("DOMContentLoaded",F,!1);function z(t,s){let i=null;try{i=s(e)}catch(e){if(n("Language definition for '{}' could not be registered.".replace("{}",t)),!c)throw e;n(e),i=E}i.name||(i.name=t),o[t]=i,i.rawDefinition=s.bind(null,e),i.aliases&&C(i.aliases,{languageName:t})}function D(e){delete o[e];for(const t of Object.keys(r))r[t]===e&&delete r[t]}function N(){return Object.keys(o)}function s(e){return e=(e||"").toLowerCase(),o[e]||o[r[e]]}function C(e,{languageName:t}){typeof e=="string"&&(e=[e]),e.forEach(e=>{r[e.toLowerCase()]=t})}function x(e){const t=s(e);return t&&!t.disableAutodetect}function H(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))})}function I(e){H(e),d.push(e)}function B(e){const t=d.indexOf(e);t!==-1&&d.splice(t,1)}function h(e,t){const n=e;d.forEach(function(e){e[n]&&e[n](t)})}function $(e){return a("10.7.0","highlightBlock will be removed entirely in v12.0"),a("10.7.0","Please use highlightElement now."),b(e)}Object.assign(e,{highlight:y,highlightAuto:g,highlightAll:u,highlightElement:b,highlightBlock:$,configure:R,initHighlighting:L,initHighlightingOnLoad:M,registerLanguage:z,unregisterLanguage:D,listLanguages:N,getLanguage:s,registerAliases:C,autoDetection:x,inherit:f,addPlugin:I,removePlugin:B}),e.debugMode=function(){c=!1},e.safeMode=function(){c=!0},e.versionString=ie,e.regex={concat:i,lookahead:le,either:j,optional:he,anyNumberOfTimes:ue};for(const e in l)typeof l[e]=="object"&&S(l[e]);return Object.assign(e,l),e},o=E({}),o.newInstance=()=>E({}),t.exports=o,o.HighlightJS=o,o.default=o}}),d=u(j(),1),e=d.default,r="[A-Za-z$_][0-9A-Za-z$_]*",m=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],c=["true","false","null","undefined","NaN","Infinity"],a=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],i=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],o=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],b=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],l=[].concat(o,a,i);function y(e){const n=e.regex,I=(e,{after:t})=>{const n="",end:""},T=/<[A-Za-z0-9\\._:-]+\s*\/>/,h={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{const n=e[0].length+e.index,s=e.input[n];if(s==="<"||s===","){t.ignoreMatch();return}s===">"&&(I(e,{after:n})||t.ignoreMatch());let o;const i=e.input.substring(n);if(o=i.match(/^\s*=/)){t.ignoreMatch();return}if((o=i.match(/^\s+extends\s+/))&&o.index===0){t.ignoreMatch();return}}},s={$pattern:r,keyword:m,literal:c,built_in:l,"variable.language":b},y="[0-9](_?[0-9])*",f=`\\.(${y})`,j=`0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`,v={className:"number",variants:[{begin:`(\\b(${j})((${f})|\\.)?|(${f}))[eE][+-]?(${y})\\b`},{begin:`\\b(${j})\\b((${f})\\b|\\.)?|(${f})\\b`},{begin:`\\b(0|[1-9](_?[0-9])*)n\\b`},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},d={className:"subst",begin:"\\$\\{",end:"\\}",keywords:s,contains:[]},_={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,d],subLanguage:"xml"}},w={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,d],subLanguage:"css"}},O={begin:"gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,d],subLanguage:"graphql"}},x={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,d]},M=e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:t+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),g={className:"comment",variants:[M,e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},k=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,_,w,O,x,{match:/\$\d+/},v];d.contains=k.concat({begin:/\{/,end:/\}/,keywords:s,contains:["self"].concat(k)});const A=[].concat(g,d.contains),p=A.concat([{begin:/\(/,end:/\)/,keywords:s,contains:["self"].concat(A)}]),u={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:p},F={variants:[{match:[/class/,/\s+/,t,/\s+/,/extends/,/\s+/,n.concat(t,"(",n.concat(/\./,t),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,t],scope:{1:"keyword",3:"title.class"}}]},C={relevance:0,match:n.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...a,...i]}},z={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},D={variants:[{match:[/function/,/\s+/,t,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[u],illegal:/%/},N={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function L(e){return n.concat("(?!",e.join("|"),")")}const R={match:n.concat(/\b/,L([...o,"super","import"]),t,n.lookahead(/\(/)),className:"title.function",relevance:0},P={begin:n.concat(/\./,n.lookahead(n.concat(t,/(?![0-9A-Za-z$_(])/))),end:t,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},H={match:[/get|set/,/\s+/,t,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},u]},S="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",B={match:[/const|var|let/,/\s+/,t,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(S)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[u]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:s,exports:{PARAMS_CONTAINS:p,CLASS_REFERENCE:C},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),z,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,_,w,O,x,g,{match:/\$\d+/},v,C,{className:"attr",begin:t+n.lookahead(":"),relevance:0},B,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[g,e.REGEXP_MODE,{className:"function",begin:S,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:p}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:E.begin,end:E.end},{match:T},{begin:h.begin,"on:begin":h.isTrulyOpeningTag,end:h.end}],subLanguage:"xml",contains:[{begin:h.begin,end:h.end,skip:!0,contains:["self"]}]}]},D,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[u,e.inherit(e.TITLE_MODE,{begin:t,className:"title.function"})]},{match:/\.\.\./,relevance:0},P,{match:"\\$"+t,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[u]},R,N,F,H,{match:/\$[(.]/}]}}function _(e){const n={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},s={match:/[{}[\],:]/,className:"punctuation",relevance:0},t=["true","false","null"],o={scope:"literal",beginKeywords:t.join(" ")};return{name:"JSON",keywords:{literal:t},contains:[n,s,e.QUOTE_STRING_MODE,o,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}function w(e){const l=e.regex,t={},a={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{className:"variable",variants:[{begin:l.concat(/\$[\w\d#@][\w\d_]*/,`(?![\\w\\d])(?![$])`)},a]});const n={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},u={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},s={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,n]};n.contains.push(s);const r={className:"",begin:/\\"/},c={className:"string",begin:/'/,end:/'/},o={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]},d=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],i=e.SHEBANG({binary:`(${d.join("|")})`,relevance:10}),h={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},m=["if","then","else","elif","fi","for","while","until","in","do","done","case","esac","function","select"],f=["true","false"],p={match:/(\/[a-z._-]+)+/},g=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],v=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias"],b=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],j=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:m,literal:f,built_in:[...g,...v,"set","shopt",...b,...j]},contains:[i,e.SHEBANG(),h,o,e.HASH_COMMENT_MODE,u,p,s,r,c,t]}}function O(e){const t=e.regex,n=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),l=/[\p{L}0-9._:-]+/u,s={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},o={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},r=e.inherit(o,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{className:"string"}),i=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),a={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[o,i,c,r,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[o,r,i,c]}]}]},e.COMMENT(//,{relevance:10}),{begin://,relevance:10},s,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[i]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[a],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[a],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:t.concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:a}]},{className:"tag",begin:t.concat(/<\//,t.lookahead(t.concat(n,/>/))),contains:[{className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function n(e){const n=e.regex,s={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},t=e.COMMENT();t.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const o={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},i={className:"literal",begin:/\bon|off|true|false|yes|no\b/},a={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[t,i,o,a,s,"self"],relevance:0},l=/[A-Za-z0-9_-]+/,d=/"(\\"|[^"])*"/,u=/'[^']*'/,r=n.either(l,d,u),h=n.concat(r,"(\\s*\\.\\s*",r,")*",n.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[t,{className:"section",begin:/\[+/,end:/\]+/},{begin:h,className:"attr",starts:{end:/$/,contains:[t,c,i,o,a,s]}}]}}function C(e){const n="true false yes no null",t="[\\w#;/?:@&=+$,.~*'()[\\]]+",g={className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ ]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ ]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ ]|$)"}]},p={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},a={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,p]},h=e.inherit(a,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),l="[0-9]{4}(-[0-9][0-9]){0,2}",c="([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?",r="(\\.[0-9]*)?",d="([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?",u={className:"number",begin:"\\b"+l+c+r+d+"\\b"},o={end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},m={begin:/\{/,end:/\}/,contains:[o],illegal:`\\n`,relevance:0},f={begin:"\\[",end:"\\]",contains:[o],illegal:`\\n`,relevance:0},i=[g,{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+!"+t},{className:"type",begin:"!<"+t+">"},{className:"type",begin:"!"+t},{className:"type",begin:"!!"+t},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},u,{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},m,f,a],s=[...i];return s.pop(),s.push(h),o.contains=s,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:i}}function E(e){const h=e.regex,i={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},m={begin:"^[-\\*]{3,}",end:"$"},c={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:`(~{3,})[^~](.|\\n)*?\\1~*[ ]*`},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:`(\\n)$`}],relevance:0}]},u={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},d={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},l=/[A-Za-z][A-Za-z0-9+.-]*/,o={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:h.concat(/\[.+?\]\(/,l,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},n={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},r=e.inherit(s,{contains:[]}),a=e.inherit(n,{contains:[]});s.contains.push(a),n.contains.push(r);let t=[i,o];[s,n,r,a].forEach(e=>{e.contains=e.contains.concat(t)}),t=t.concat(s,n);const f={className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{begin:`(?=^.+?\\n[=-]{2,}$)`,contains:[{begin:"^[=-]*$"},{begin:"^",end:`\\n`,contains:t}]}]},p={className:"quote",begin:"^>\\s+",contains:t,end:"$"};return{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[f,i,u,s,n,p,c,m,o,d]}}function k(e){const p=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,u=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],g=["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],f=["__debug__","Ellipsis","False","None","NotImplemented","True"],m=["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"],l={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:u,built_in:g,literal:f,type:m},t={className:"meta",begin:/^(>>>|\.\.\.) /},o={className:"subst",begin:/\{/,end:/\}/,keywords:l,illegal:/#/},i={begin:/\{\{/,relevance:0},c={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,t,i,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,t,i,o]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,i,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,i,o]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},s="[0-9](_?[0-9])*",d=`(\\b(${s}))?\\.(${s})|\\b(${s})\\.`,n=`\\b|${u.join("|")}`,r={className:"number",relevance:0,variants:[{begin:`(\\b(${s})|(${d}))[eE][+-]?(${s})[jJ]?(?=${n})`},{begin:`(${d})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${n})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${n})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${n})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${n})`},{begin:`\\b(${s})[jJ](?=${n})`}]},v={className:"comment",begin:p.lookahead(/# type:/),end:/$/,keywords:l,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},h={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:["self",t,r,c,e.HASH_COMMENT_MODE]}]};return o.contains=[c,r,t],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:l,illegal:/(<\/|\?)|=>/,contains:[t,r,{begin:/\bself\b/},{beginKeywords:"if",relevance:0},c,v,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,a],scope:{1:"keyword",3:"title.function"},contains:[h]},{variants:[{match:[/\bclass/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/\bclass/,/\s+/,a]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[r,h,c]}]}}function A(e){const n=["true","false","iota","nil"],s=["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"],o=["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],i=["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],t={keyword:i,type:o,literal:n,built_in:s};return{name:"Go",aliases:["golang"],keywords:t,illegal:"{document.querySelectorAll("pre code:not(.language-mermaid)").forEach(t=>{e.highlightElement(t)})})})() \ No newline at end of file diff --git a/main.237e16aa52ac48f5215210c868c67e15f6d3ce87cc775393f94d3a66aa84482a3898f81451ae801fe74f36e4f3c3641e91241de87f47f1d51f8e6742e6861699.css b/main.0fbd12f474dcfc4d512bdfbe34bd926d1747470d2ab0c95508cf442d94d4670934ebc995fd719ce693b95483dc397d8d0197103c024ecadcb06fce9c0d351aaa.css similarity index 74% rename from main.237e16aa52ac48f5215210c868c67e15f6d3ce87cc775393f94d3a66aa84482a3898f81451ae801fe74f36e4f3c3641e91241de87f47f1d51f8e6742e6861699.css rename to main.0fbd12f474dcfc4d512bdfbe34bd926d1747470d2ab0c95508cf442d94d4670934ebc995fd719ce693b95483dc397d8d0197103c024ecadcb06fce9c0d351aaa.css index 40ae825..00fe293 100644 --- a/main.237e16aa52ac48f5215210c868c67e15f6d3ce87cc775393f94d3a66aa84482a3898f81451ae801fe74f36e4f3c3641e91241de87f47f1d51f8e6742e6861699.css +++ b/main.0fbd12f474dcfc4d512bdfbe34bd926d1747470d2ab0c95508cf442d94d4670934ebc995fd719ce693b95483dc397d8d0197103c024ecadcb06fce9c0d351aaa.css @@ -10,4 +10,4 @@ Updated: 2021-05-15 Colors taken from GitHub's CSS -*/.hljs{color:#adbac7;background:#22272e}.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-variable,.hljs-type{color:#f47067}.hljs-attribute,.hljs-meta,.hljs-variable{color:#6cb6ff}.hljs-meta .hljs-string,.hljs-string{color:#96d0ff}.hljs-symbol{color:#f69d50}.hljs-comment{color:#768390}.hljs-name,.hljs-quote,.hljs-selector-tag{color:#8ddb8c}.hljs-section{color:#316dca;font-weight:700}.hljs-bullet{color:#eac55f}.hljs-emphasis{color:#adbac7;font-style:italic}.hljs-strong{color:#adbac7;font-weight:700}.hljs-addition{color:#b4f1b4;background-color:#1b4721}.hljs-deletion{color:#ffd8d3;background-color:#78191b}@font-face{font-family:'KaTeX_AMS';src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Caligraphic';src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype");font-weight:bold;font-style:normal}@font-face{font-family:'KaTeX_Caligraphic';src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Fraktur';src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype");font-weight:bold;font-style:normal}@font-face{font-family:'KaTeX_Fraktur';src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Main';src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype");font-weight:bold;font-style:normal}@font-face{font-family:'KaTeX_Main';src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype");font-weight:bold;font-style:italic}@font-face{font-family:'KaTeX_Main';src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype");font-weight:normal;font-style:italic}@font-face{font-family:'KaTeX_Main';src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Math';src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype");font-weight:bold;font-style:italic}@font-face{font-family:'KaTeX_Math';src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype");font-weight:normal;font-style:italic}@font-face{font-family:'KaTeX_SansSerif';src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype");font-weight:bold;font-style:normal}@font-face{font-family:'KaTeX_SansSerif';src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype");font-weight:normal;font-style:italic}@font-face{font-family:'KaTeX_SansSerif';src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Script';src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Size1';src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Size2';src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Size3';src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Size4';src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Typewriter';src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}.katex{font:normal 1.21em KaTeX_Main, Times New Roman, serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none !important}.katex *{border-color:currentColor}.katex .katex-version::after{content:"0.16.10"}.katex .katex-mathml{position:absolute;clip:rect(1px, 1px, 1px, 1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .katex-html>.newline{display:block}.katex .base{position:relative;display:inline-block;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .strut{display:inline-block}.katex .textbf{font-weight:bold}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:bold}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:bold;font-style:italic}.katex .amsrm{font-family:KaTeX_AMS}.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:bold}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:bold}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed;border-collapse:collapse}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .vbox{display:inline-flex;flex-direction:column;align-items:baseline}.katex .hbox{display:inline-flex;flex-direction:row;width:100%}.katex .thinbox{display:inline-flex;flex-direction:row;width:0;max-width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .underline .underline-line,.katex .hline,.katex .hdashline,.katex .rule{min-height:1px}.katex .mspace{display:inline-block}.katex .llap,.katex .rlap,.katex .clap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner,.katex .clap>.inner{position:absolute}.katex .llap>.fix,.katex .rlap>.fix,.katex .clap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .rlap>.inner,.katex .clap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:solid 0;position:relative}.katex .overline .overline-line,.katex .underline .underline-line,.katex .hline{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:0.27777778em;margin-right:-0.55555556em}.katex .sizing.reset-size1.size1,.katex .fontsize-ensurer.reset-size1.size1{font-size:1em}.katex .sizing.reset-size1.size2,.katex .fontsize-ensurer.reset-size1.size2{font-size:1.2em}.katex .sizing.reset-size1.size3,.katex .fontsize-ensurer.reset-size1.size3{font-size:1.4em}.katex .sizing.reset-size1.size4,.katex .fontsize-ensurer.reset-size1.size4{font-size:1.6em}.katex .sizing.reset-size1.size5,.katex .fontsize-ensurer.reset-size1.size5{font-size:1.8em}.katex .sizing.reset-size1.size6,.katex .fontsize-ensurer.reset-size1.size6{font-size:2em}.katex .sizing.reset-size1.size7,.katex .fontsize-ensurer.reset-size1.size7{font-size:2.4em}.katex .sizing.reset-size1.size8,.katex .fontsize-ensurer.reset-size1.size8{font-size:2.88em}.katex .sizing.reset-size1.size9,.katex .fontsize-ensurer.reset-size1.size9{font-size:3.456em}.katex .sizing.reset-size1.size10,.katex .fontsize-ensurer.reset-size1.size10{font-size:4.148em}.katex .sizing.reset-size1.size11,.katex .fontsize-ensurer.reset-size1.size11{font-size:4.976em}.katex .sizing.reset-size2.size1,.katex .fontsize-ensurer.reset-size2.size1{font-size:0.83333333em}.katex .sizing.reset-size2.size2,.katex .fontsize-ensurer.reset-size2.size2{font-size:1em}.katex .sizing.reset-size2.size3,.katex .fontsize-ensurer.reset-size2.size3{font-size:1.16666667em}.katex .sizing.reset-size2.size4,.katex .fontsize-ensurer.reset-size2.size4{font-size:1.33333333em}.katex .sizing.reset-size2.size5,.katex .fontsize-ensurer.reset-size2.size5{font-size:1.5em}.katex .sizing.reset-size2.size6,.katex .fontsize-ensurer.reset-size2.size6{font-size:1.66666667em}.katex .sizing.reset-size2.size7,.katex .fontsize-ensurer.reset-size2.size7{font-size:2em}.katex .sizing.reset-size2.size8,.katex .fontsize-ensurer.reset-size2.size8{font-size:2.4em}.katex .sizing.reset-size2.size9,.katex .fontsize-ensurer.reset-size2.size9{font-size:2.88em}.katex .sizing.reset-size2.size10,.katex .fontsize-ensurer.reset-size2.size10{font-size:3.45666667em}.katex .sizing.reset-size2.size11,.katex .fontsize-ensurer.reset-size2.size11{font-size:4.14666667em}.katex .sizing.reset-size3.size1,.katex .fontsize-ensurer.reset-size3.size1{font-size:0.71428571em}.katex .sizing.reset-size3.size2,.katex .fontsize-ensurer.reset-size3.size2{font-size:0.85714286em}.katex .sizing.reset-size3.size3,.katex .fontsize-ensurer.reset-size3.size3{font-size:1em}.katex .sizing.reset-size3.size4,.katex .fontsize-ensurer.reset-size3.size4{font-size:1.14285714em}.katex .sizing.reset-size3.size5,.katex .fontsize-ensurer.reset-size3.size5{font-size:1.28571429em}.katex .sizing.reset-size3.size6,.katex .fontsize-ensurer.reset-size3.size6{font-size:1.42857143em}.katex .sizing.reset-size3.size7,.katex .fontsize-ensurer.reset-size3.size7{font-size:1.71428571em}.katex .sizing.reset-size3.size8,.katex .fontsize-ensurer.reset-size3.size8{font-size:2.05714286em}.katex .sizing.reset-size3.size9,.katex .fontsize-ensurer.reset-size3.size9{font-size:2.46857143em}.katex .sizing.reset-size3.size10,.katex .fontsize-ensurer.reset-size3.size10{font-size:2.96285714em}.katex .sizing.reset-size3.size11,.katex .fontsize-ensurer.reset-size3.size11{font-size:3.55428571em}.katex .sizing.reset-size4.size1,.katex .fontsize-ensurer.reset-size4.size1{font-size:0.625em}.katex .sizing.reset-size4.size2,.katex .fontsize-ensurer.reset-size4.size2{font-size:0.75em}.katex .sizing.reset-size4.size3,.katex .fontsize-ensurer.reset-size4.size3{font-size:0.875em}.katex .sizing.reset-size4.size4,.katex .fontsize-ensurer.reset-size4.size4{font-size:1em}.katex .sizing.reset-size4.size5,.katex .fontsize-ensurer.reset-size4.size5{font-size:1.125em}.katex .sizing.reset-size4.size6,.katex .fontsize-ensurer.reset-size4.size6{font-size:1.25em}.katex .sizing.reset-size4.size7,.katex .fontsize-ensurer.reset-size4.size7{font-size:1.5em}.katex .sizing.reset-size4.size8,.katex .fontsize-ensurer.reset-size4.size8{font-size:1.8em}.katex .sizing.reset-size4.size9,.katex .fontsize-ensurer.reset-size4.size9{font-size:2.16em}.katex .sizing.reset-size4.size10,.katex .fontsize-ensurer.reset-size4.size10{font-size:2.5925em}.katex .sizing.reset-size4.size11,.katex .fontsize-ensurer.reset-size4.size11{font-size:3.11em}.katex .sizing.reset-size5.size1,.katex .fontsize-ensurer.reset-size5.size1{font-size:0.55555556em}.katex .sizing.reset-size5.size2,.katex .fontsize-ensurer.reset-size5.size2{font-size:0.66666667em}.katex .sizing.reset-size5.size3,.katex .fontsize-ensurer.reset-size5.size3{font-size:0.77777778em}.katex .sizing.reset-size5.size4,.katex .fontsize-ensurer.reset-size5.size4{font-size:0.88888889em}.katex .sizing.reset-size5.size5,.katex .fontsize-ensurer.reset-size5.size5{font-size:1em}.katex .sizing.reset-size5.size6,.katex .fontsize-ensurer.reset-size5.size6{font-size:1.11111111em}.katex .sizing.reset-size5.size7,.katex .fontsize-ensurer.reset-size5.size7{font-size:1.33333333em}.katex .sizing.reset-size5.size8,.katex .fontsize-ensurer.reset-size5.size8{font-size:1.6em}.katex .sizing.reset-size5.size9,.katex .fontsize-ensurer.reset-size5.size9{font-size:1.92em}.katex .sizing.reset-size5.size10,.katex .fontsize-ensurer.reset-size5.size10{font-size:2.30444444em}.katex .sizing.reset-size5.size11,.katex .fontsize-ensurer.reset-size5.size11{font-size:2.76444444em}.katex .sizing.reset-size6.size1,.katex .fontsize-ensurer.reset-size6.size1{font-size:0.5em}.katex .sizing.reset-size6.size2,.katex .fontsize-ensurer.reset-size6.size2{font-size:0.6em}.katex .sizing.reset-size6.size3,.katex .fontsize-ensurer.reset-size6.size3{font-size:0.7em}.katex .sizing.reset-size6.size4,.katex .fontsize-ensurer.reset-size6.size4{font-size:0.8em}.katex .sizing.reset-size6.size5,.katex .fontsize-ensurer.reset-size6.size5{font-size:0.9em}.katex .sizing.reset-size6.size6,.katex .fontsize-ensurer.reset-size6.size6{font-size:1em}.katex .sizing.reset-size6.size7,.katex .fontsize-ensurer.reset-size6.size7{font-size:1.2em}.katex .sizing.reset-size6.size8,.katex .fontsize-ensurer.reset-size6.size8{font-size:1.44em}.katex .sizing.reset-size6.size9,.katex .fontsize-ensurer.reset-size6.size9{font-size:1.728em}.katex .sizing.reset-size6.size10,.katex .fontsize-ensurer.reset-size6.size10{font-size:2.074em}.katex .sizing.reset-size6.size11,.katex .fontsize-ensurer.reset-size6.size11{font-size:2.488em}.katex .sizing.reset-size7.size1,.katex .fontsize-ensurer.reset-size7.size1{font-size:0.41666667em}.katex .sizing.reset-size7.size2,.katex .fontsize-ensurer.reset-size7.size2{font-size:0.5em}.katex .sizing.reset-size7.size3,.katex .fontsize-ensurer.reset-size7.size3{font-size:0.58333333em}.katex .sizing.reset-size7.size4,.katex .fontsize-ensurer.reset-size7.size4{font-size:0.66666667em}.katex .sizing.reset-size7.size5,.katex .fontsize-ensurer.reset-size7.size5{font-size:0.75em}.katex .sizing.reset-size7.size6,.katex .fontsize-ensurer.reset-size7.size6{font-size:0.83333333em}.katex .sizing.reset-size7.size7,.katex .fontsize-ensurer.reset-size7.size7{font-size:1em}.katex .sizing.reset-size7.size8,.katex .fontsize-ensurer.reset-size7.size8{font-size:1.2em}.katex .sizing.reset-size7.size9,.katex .fontsize-ensurer.reset-size7.size9{font-size:1.44em}.katex .sizing.reset-size7.size10,.katex .fontsize-ensurer.reset-size7.size10{font-size:1.72833333em}.katex .sizing.reset-size7.size11,.katex .fontsize-ensurer.reset-size7.size11{font-size:2.07333333em}.katex .sizing.reset-size8.size1,.katex .fontsize-ensurer.reset-size8.size1{font-size:0.34722222em}.katex .sizing.reset-size8.size2,.katex .fontsize-ensurer.reset-size8.size2{font-size:0.41666667em}.katex .sizing.reset-size8.size3,.katex .fontsize-ensurer.reset-size8.size3{font-size:0.48611111em}.katex .sizing.reset-size8.size4,.katex .fontsize-ensurer.reset-size8.size4{font-size:0.55555556em}.katex .sizing.reset-size8.size5,.katex .fontsize-ensurer.reset-size8.size5{font-size:0.625em}.katex .sizing.reset-size8.size6,.katex .fontsize-ensurer.reset-size8.size6{font-size:0.69444444em}.katex .sizing.reset-size8.size7,.katex .fontsize-ensurer.reset-size8.size7{font-size:0.83333333em}.katex .sizing.reset-size8.size8,.katex .fontsize-ensurer.reset-size8.size8{font-size:1em}.katex .sizing.reset-size8.size9,.katex .fontsize-ensurer.reset-size8.size9{font-size:1.2em}.katex .sizing.reset-size8.size10,.katex .fontsize-ensurer.reset-size8.size10{font-size:1.44027778em}.katex .sizing.reset-size8.size11,.katex .fontsize-ensurer.reset-size8.size11{font-size:1.72777778em}.katex .sizing.reset-size9.size1,.katex .fontsize-ensurer.reset-size9.size1{font-size:0.28935185em}.katex .sizing.reset-size9.size2,.katex .fontsize-ensurer.reset-size9.size2{font-size:0.34722222em}.katex .sizing.reset-size9.size3,.katex .fontsize-ensurer.reset-size9.size3{font-size:0.40509259em}.katex .sizing.reset-size9.size4,.katex .fontsize-ensurer.reset-size9.size4{font-size:0.46296296em}.katex .sizing.reset-size9.size5,.katex .fontsize-ensurer.reset-size9.size5{font-size:0.52083333em}.katex .sizing.reset-size9.size6,.katex .fontsize-ensurer.reset-size9.size6{font-size:0.5787037em}.katex .sizing.reset-size9.size7,.katex .fontsize-ensurer.reset-size9.size7{font-size:0.69444444em}.katex .sizing.reset-size9.size8,.katex .fontsize-ensurer.reset-size9.size8{font-size:0.83333333em}.katex .sizing.reset-size9.size9,.katex .fontsize-ensurer.reset-size9.size9{font-size:1em}.katex .sizing.reset-size9.size10,.katex .fontsize-ensurer.reset-size9.size10{font-size:1.20023148em}.katex .sizing.reset-size9.size11,.katex .fontsize-ensurer.reset-size9.size11{font-size:1.43981481em}.katex .sizing.reset-size10.size1,.katex .fontsize-ensurer.reset-size10.size1{font-size:0.24108004em}.katex .sizing.reset-size10.size2,.katex .fontsize-ensurer.reset-size10.size2{font-size:0.28929605em}.katex .sizing.reset-size10.size3,.katex .fontsize-ensurer.reset-size10.size3{font-size:0.33751205em}.katex .sizing.reset-size10.size4,.katex .fontsize-ensurer.reset-size10.size4{font-size:0.38572806em}.katex .sizing.reset-size10.size5,.katex .fontsize-ensurer.reset-size10.size5{font-size:0.43394407em}.katex .sizing.reset-size10.size6,.katex .fontsize-ensurer.reset-size10.size6{font-size:0.48216008em}.katex .sizing.reset-size10.size7,.katex .fontsize-ensurer.reset-size10.size7{font-size:0.57859209em}.katex .sizing.reset-size10.size8,.katex .fontsize-ensurer.reset-size10.size8{font-size:0.69431051em}.katex .sizing.reset-size10.size9,.katex .fontsize-ensurer.reset-size10.size9{font-size:0.83317261em}.katex .sizing.reset-size10.size10,.katex .fontsize-ensurer.reset-size10.size10{font-size:1em}.katex .sizing.reset-size10.size11,.katex .fontsize-ensurer.reset-size10.size11{font-size:1.19961427em}.katex .sizing.reset-size11.size1,.katex .fontsize-ensurer.reset-size11.size1{font-size:0.20096463em}.katex .sizing.reset-size11.size2,.katex .fontsize-ensurer.reset-size11.size2{font-size:0.24115756em}.katex .sizing.reset-size11.size3,.katex .fontsize-ensurer.reset-size11.size3{font-size:0.28135048em}.katex .sizing.reset-size11.size4,.katex .fontsize-ensurer.reset-size11.size4{font-size:0.32154341em}.katex .sizing.reset-size11.size5,.katex .fontsize-ensurer.reset-size11.size5{font-size:0.36173633em}.katex .sizing.reset-size11.size6,.katex .fontsize-ensurer.reset-size11.size6{font-size:0.40192926em}.katex .sizing.reset-size11.size7,.katex .fontsize-ensurer.reset-size11.size7{font-size:0.48231511em}.katex .sizing.reset-size11.size8,.katex .fontsize-ensurer.reset-size11.size8{font-size:0.57877814em}.katex .sizing.reset-size11.size9,.katex .fontsize-ensurer.reset-size11.size9{font-size:0.69453376em}.katex .sizing.reset-size11.size10,.katex .fontsize-ensurer.reset-size11.size10{font-size:0.83360129em}.katex .sizing.reset-size11.size11,.katex .fontsize-ensurer.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:0.12em}.katex .delimcenter{position:relative}.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy::before,.katex .stretchy::after{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 0.5em}.katex .cd-arrow-pad{padding:0 0.55556em 0 0.27778em}.katex .x-arrow,.katex .mover,.katex .munder{text-align:center}.katex .boxpad{padding:0 0.3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:0.04em solid}.katex .cancel-pad{padding:0 0.2em}.katex .cancel-lap{margin-left:-0.2em;margin-right:-0.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:0.08em}.katex .angl{box-sizing:border-box;border-top:0.049em solid;border-right:0.049em solid;margin-right:0.03889em}.katex .anglpad{padding:0 0.03889em}.katex .eqn-num::before{counter-increment:katexEqnNo;content:"(" counter(katexEqnNo) ")"}.katex .mml-eqn-num::before{counter-increment:mmlEqnNo;content:"(" counter(mmlEqnNo) ")"}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + 0.3em);text-align:left}.katex .cd-label-right{display:inline-block;position:absolute;left:calc(50% + 0.3em);text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left;padding-left:2em}body{counter-reset:katexEqnNo mmlEqnNo}@font-face{font-family:Jost;font-style:normal;font-weight:400;font-display:swap;src:local("Jost Regular Regular"),local("Jost-Regular"),local("Jost* Book"),local("Jost-Book"),url("fonts/vendor/jost/jost-v4-latin-regular.woff2") format("woff2"),url("fonts/vendor/jost/jost-v4-latin-regular.woff") format("woff")}@font-face{font-family:Jost;font-style:normal;font-weight:500;font-display:swap;src:local("Jost Regular Medium"),local("JostRoman-Medium"),local("Jost* Medium"),local("Jost-Medium"),url("fonts/vendor/jost/jost-v4-latin-500.woff2") format("woff2"),url("fonts/vendor/jost/jost-v4-latin-500.woff") format("woff")}@font-face{font-family:Jost;font-style:normal;font-weight:700;font-display:swap;src:local("Jost Regular Bold"),local("JostRoman-Bold"),local("Jost* Bold"),local("Jost-Bold"),url("fonts/vendor/jost/jost-v4-latin-700.woff2") format("woff2"),url("fonts/vendor/jost/jost-v4-latin-700.woff") format("woff")}@font-face{font-family:Jost;font-style:italic;font-weight:400;font-display:swap;src:local("Jost Italic Italic"),local("Jost-Italic"),local("Jost* BookItalic"),local("Jost-BookItalic"),url("fonts/vendor/jost/jost-v4-latin-italic.woff2") format("woff2"),url("fonts/vendor/jost/jost-v4-latin-italic.woff") format("woff")}@font-face{font-family:Jost;font-style:italic;font-weight:500;font-display:swap;src:local("Jost Italic Medium Italic"),local("JostItalic-Medium"),local("Jost* Medium Italic"),local("Jost-MediumItalic"),url("fonts/vendor/jost/jost-v4-latin-500italic.woff2") format("woff2"),url("fonts/vendor/jost/jost-v4-latin-500italic.woff") format("woff")}@font-face{font-family:Jost;font-style:italic;font-weight:700;font-display:swap;src:local("Jost Italic Bold Italic"),local("JostItalic-Bold"),local("Jost* Bold Italic"),local("Jost-BoldItalic"),url("fonts/vendor/jost/jost-v4-latin-700italic.woff2") format("woff2"),url("fonts/vendor/jost/jost-v4-latin-700italic.woff") format("woff")}.contributors .content,.blog .content,.page .content,.error404 .content,.docs.list .content,.tutorial.list .content,.showcase.list .content,.categories.list .content,.tags.list .content{padding-top:1rem;padding-bottom:3rem}.content img{max-width:100%}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin:2rem 0 1rem}.offcanvas-header{border-bottom:1px solid #dee2e6;padding-top:1.0625rem;padding-bottom:0.8125rem}h5.offcanvas-title,.offcanvas-title.h5{margin:0}body.docs{padding-top:0 !important}@media (min-width: 768px){body{font-size:1.125rem}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:1.125rem}}.home h1,.home .h1{font-size:calc(1.875rem + 1.5vw)}a:hover,a:focus{text-decoration:underline}a.btn:hover,a.btn:focus{text-decoration:none}.section{padding-top:5rem;padding-bottom:5rem}.section-sm{padding-top:1rem;padding-bottom:1rem}.docs-sidebar{order:2}@media (min-width: 992px){.docs-sidebar{order:0;border-right:1px solid #e9ecef}@supports (position: sticky){.docs-sidebar{position:sticky;top:4rem;z-index:1000;height:calc(100vh - 4rem)}.docs-sidebar-top{top:0}}}@media (min-width: 1200px){.docs-sidebar{flex:0 1 240px}}.docs-links{padding-bottom:5rem}@media (min-width: 992px){@supports (position: sticky){.docs-links{max-height:calc(100vh - 4rem);overflow-y:scroll}}}@media (min-width: 992px){.docs-links{display:block;width:auto;margin-right:-1.5rem;padding-bottom:4rem}}.docs-toc{order:2}@supports (position: sticky){.docs-toc{position:sticky;top:4rem;height:calc(100vh - 4rem);overflow-y:auto}.docs-toc-top{top:0}}.docs-content{padding-bottom:3rem;order:1}.docs-navigation{border-top:1px solid #e9ecef;margin-top:2rem;margin-bottom:0;padding-top:2rem}.docs-navigation a{font-size:.9rem}@media (min-width: 992px){.docs-navigation{margin-bottom:-1rem}.docs-navigation a{font-size:1rem}}.navbar a:hover,.navbar a:focus{text-decoration:none}#TableOfContents ul,#toc ul{padding-left:0;list-style:none}#toc a.active{color:#5d2f86;font-weight:500}::-moz-selection{background:rgba(212,53,159,0.2)}::selection{background:rgba(212,53,159,0.2)}.bg-dots{background-image:radial-gradient(#dee2e6 15%, transparent 15%);background-position:0 0;background-size:1rem 1rem;-webkit-mask:linear-gradient(to top, #fff, transparent);mask:linear-gradient(to top, #fff, transparent);width:100%;height:9rem;margin-top:-10rem;z-index:-1}.katex{font-size:1.125rem}.modal-backdrop{background-color:#fff}.modal-backdrop.show{opacity:0.7}@media (min-width: 768px){.modal-backdrop.show{opacity:0}}[data-dark-mode] body{background:#212529;color:#dee2e6}[data-dark-mode] body a{color:#8ed6fb}[data-dark-mode] body a.text-body{color:#dee2e6 !important}[data-dark-mode] body .btn-primary{--bs-btn-color: #1d2d35;--bs-btn-bg: #8ed6fb;--bs-btn-border-color: #8ed6fb;--bs-btn-hover-color: #1d2d35;--bs-btn-hover-bg: #9fdcfc;--bs-btn-hover-border-color: #99dafb;--bs-btn-focus-shadow-rgb: 125,189,221;--bs-btn-active-color: #1d2d35;--bs-btn-active-bg: #a5defc;--bs-btn-active-border-color: #99dafb;--bs-btn-active-shadow: inset 0 3px 5px rgba(29,45,53,0.125);--bs-btn-disabled-color: #1d2d35;--bs-btn-disabled-bg: #8ed6fb;--bs-btn-disabled-border-color: #8ed6fb;color:#212529 !important}[data-dark-mode] body .btn-outline-primary{--bs-btn-color: #8ed6fb;--bs-btn-border-color: #8ed6fb;--bs-btn-hover-color: #8ed6fb;--bs-btn-hover-bg: #8ed6fb;--bs-btn-hover-border-color: #8ed6fb;--bs-btn-focus-shadow-rgb: 142,214,251;--bs-btn-active-color: #1d2d35;--bs-btn-active-bg: #8ed6fb;--bs-btn-active-border-color: #8ed6fb;--bs-btn-active-shadow: inset 0 3px 5px rgba(29,45,53,0.125);--bs-btn-disabled-color: #8ed6fb;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #8ed6fb;--bs-gradient: none;color:#8ed6fb}[data-dark-mode] body .btn-outline-primary:hover{color:#212529}[data-dark-mode] body .btn-doks-light{color:#dee2e6}[data-dark-mode] body .show>.btn-doks-light,[data-dark-mode] body .btn-doks-light:hover,[data-dark-mode] body .btn-doks-light:active{color:#8ed6fb}[data-dark-mode] body .btn-menu svg{color:#dee2e6}[data-dark-mode] body .doks-sidebar-toggle{color:#dee2e6}[data-dark-mode] body .btn-menu:hover,[data-dark-mode] body .btn-doks-light:hover,[data-dark-mode] body .doks-sidebar-toggle:hover{background:#1b1f22}[data-dark-mode] body .navbar,[data-dark-mode] body .doks-subnavbar{background-color:rgba(33,37,41,0.95);border-bottom:1px solid #343a40}[data-dark-mode] body.home .navbar{border-bottom:0}[data-dark-mode] body .offcanvas-header{border-bottom:1px solid #343a40}[data-dark-mode] body .offcanvas .nav-link{color:#dee2e6}[data-dark-mode] body .offcanvas .nav-link:hover,[data-dark-mode] body .offcanvas .nav-link:focus{color:#8ed6fb}[data-dark-mode] body .offcanvas .nav-link.active{color:#8ed6fb}[data-dark-mode] body .navbar-light .navbar-brand{color:#dee2e6 !important}[data-dark-mode] body .navbar-light .navbar-nav .nav-link{color:#dee2e6}[data-dark-mode] body .navbar-light .navbar-nav .nav-link:hover,[data-dark-mode] body .navbar-light .navbar-nav .nav-link:focus{color:#8ed6fb}[data-dark-mode] body .navbar-light .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}[data-dark-mode] body .navbar-light .navbar-nav .show>.nav-link,[data-dark-mode] body .navbar-light .navbar-nav .active>.nav-link,[data-dark-mode] body .navbar-light .navbar-nav .nav-link.show,[data-dark-mode] body .navbar-light .navbar-nav .nav-link.active{color:#8ed6fb}[data-dark-mode] body .navbar-light .navbar-text{color:#dee2e6}[data-dark-mode] body .alert-primary a{color:#212529}[data-dark-mode] body .alert-doks{background:#1b1f22;color:#dee2e6}[data-dark-mode] body .alert-doks a{color:#8ed6fb}[data-dark-mode] body .page-links a{color:#dee2e6}[data-dark-mode] body .btn-toggle-nav a{color:#dee2e6}[data-dark-mode] body .showcase-meta a{color:#dee2e6}[data-dark-mode] body .showcase-meta a:hover,[data-dark-mode] body .showcase-meta a:focus{color:#8ed6fb}[data-dark-mode] body .docs-link:hover,[data-dark-mode] body .docs-link.active,[data-dark-mode] body .page-links a:hover{text-decoration:none;color:#8ed6fb}[data-dark-mode] body .btn-toggle{color:#dee2e6;background-color:transparent;border:0}[data-dark-mode] body .btn-toggle:hover,[data-dark-mode] body .btn-toggle:focus{color:#dee2e6}[data-dark-mode] body .btn-toggle::before{width:1.25em;line-height:0;content:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28222, 226, 230, 0.75%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e");transition:transform 0.35s ease;transform-origin:0.5em 50%;margin-bottom:0.125rem}[data-dark-mode] body .btn-toggle[aria-expanded="true"]{color:#dee2e6}[data-dark-mode] body .btn-toggle[aria-expanded="true"]::before{transform:rotate(90deg)}[data-dark-mode] body .btn-toggle-nav a:hover,[data-dark-mode] body .btn-toggle-nav a:focus{color:#8ed6fb}[data-dark-mode] body .btn-toggle-nav a.active{color:#8ed6fb}[data-dark-mode] body .navbar-light .navbar-text a{color:#8ed6fb}[data-dark-mode] body .docs-links h3.sidebar-link a,[data-dark-mode] body .docs-links .sidebar-link.h3 a,[data-dark-mode] body .page-links h3.sidebar-link a,[data-dark-mode] body .page-links .sidebar-link.h3 a{color:#dee2e6}[data-dark-mode] body .navbar-light .navbar-text a:hover,[data-dark-mode] body .navbar-light .navbar-text a:focus{color:#8ed6fb}[data-dark-mode] body .navbar .btn-link{color:#dee2e6}[data-dark-mode] body .content .btn-link{color:#8ed6fb}[data-dark-mode] body .content .btn-link:hover{color:#8ed6fb}[data-dark-mode] body .content img[src^="https://latex.codecogs.com/svg.latex"]{filter:invert(1)}[data-dark-mode] body .navbar .btn-link:hover{color:#8ed6fb}[data-dark-mode] body .navbar .btn-link:active{color:#8ed6fb}[data-dark-mode] body .form-control.is-search{background:#1b1f22;border:1px solid transparent;color:#dee2e6}[data-dark-mode] body .form-control.is-search:focus{border:1px solid #8ed6fb}[data-dark-mode] body .doks-search::after{color:#dee2e6;border:1px solid #495057}[data-dark-mode] body .text-dark{color:#dee2e6 !important}[data-dark-mode] body .form-control{color:#dee2e6}[data-dark-mode] body .form-control::-moz-placeholder{color:#ced4da;opacity:1}[data-dark-mode] body .form-control::placeholder{color:#ced4da;opacity:1}[data-dark-mode] body .border-top{border-top:1px solid #343a40 !important}@media (min-width: 992px){[data-dark-mode] body .docs-sidebar{order:0;border-right:1px solid #343a40}}[data-dark-mode] body .docs-navigation{border-top:1px solid #343a40}[data-dark-mode] body pre code::-webkit-scrollbar-thumb{background:#ced4da}[data-dark-mode] body code:not(.hljs){background:#1b1f22;color:#dee2e6}[data-dark-mode] body pre code:hover{scrollbar-width:thin;scrollbar-color:#343a40 transparent}[data-dark-mode] body pre code::-webkit-scrollbar-thumb:hover{background:#adb5bd}[data-dark-mode] body blockquote{border-left:3px solid #343a40}[data-dark-mode] body .footer{border-top:1px solid #343a40}[data-dark-mode] body .docs-links,[data-dark-mode] body .docs-toc{scrollbar-width:thin;scrollbar-color:#212529 #212529}[data-dark-mode] body .docs-links::-webkit-scrollbar,[data-dark-mode] body .docs-toc::-webkit-scrollbar{width:5px}[data-dark-mode] body .docs-links::-webkit-scrollbar-track,[data-dark-mode] body .docs-toc::-webkit-scrollbar-track{background:#212529}[data-dark-mode] body .docs-links::-webkit-scrollbar-thumb,[data-dark-mode] body .docs-toc::-webkit-scrollbar-thumb{background:#212529}[data-dark-mode] body .docs-links:hover,[data-dark-mode] body .docs-toc:hover{scrollbar-width:thin;scrollbar-color:#343a40 #212529}[data-dark-mode] body .docs-links:hover::-webkit-scrollbar-thumb,[data-dark-mode] body .docs-toc:hover::-webkit-scrollbar-thumb{background:#343a40}[data-dark-mode] body .docs-links::-webkit-scrollbar-thumb:hover,[data-dark-mode] body .docs-toc::-webkit-scrollbar-thumb:hover{background:#343a40}[data-dark-mode] body .docs-links h3:not(:first-child),[data-dark-mode] body .docs-links .h3:not(:first-child){border-top:1px solid #343a40}[data-dark-mode] body a.docs-link{color:#dee2e6}[data-dark-mode] body .page-links li:not(:first-child){border-top:1px dashed #343a40}[data-dark-mode] body .card{background:#212529;border:1px solid #343a40}[data-dark-mode] body .card.bg-light{background:#1b1f22 !important}[data-dark-mode] body .navbar .menu-icon .navicon{background:#dee2e6}[data-dark-mode] body .navbar .menu-icon .navicon::before,[data-dark-mode] body .navbar .menu-icon .navicon::after{background:#dee2e6}[data-dark-mode] body .logo-light{display:none !important}[data-dark-mode] body .logo-dark{display:inline-block !important}[data-dark-mode] body .bg-light{background:#1e2125 !important}[data-dark-mode] body .bg-dots{background-image:radial-gradient(#556370 15%, transparent 15%)}[data-dark-mode] body .text-muted{color:#c8cfd6 !important}[data-dark-mode] body .alert-primary{background:#8ed6fb;color:#212529}[data-dark-mode] body .figure-caption{color:#dee2e6}[data-dark-mode] body .copy-status::after{content:"Copy";display:block;color:#dee2e6}[data-dark-mode] body .copy-status:hover::after{content:"Copy";display:block;color:#8ed6fb}[data-dark-mode] body .copy-status:focus::after,[data-dark-mode] body .copy-status:active::after{content:"Copied";display:block;color:#8ed6fb}[data-dark-mode] body .offcanvas{background-color:#212529}[data-dark-mode] body .btn-close{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNkZWUyZTYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXgiPjxsaW5lIHgxPSIxOCIgeTE9IjYiIHgyPSI2IiB5Mj0iMTgiPjwvbGluZT48bGluZSB4MT0iNiIgeTE9IjYiIHgyPSIxOCIgeTI9IjE4Ij48L2xpbmU+PC9zdmc+");background-size:1.5rem}@media (min-width: 768px){[data-dark-mode] body .alert-dismissible .btn-close{background-size:1.25rem}}[data-dark-mode] .dropdown-item{color:#212529}[data-dark-mode] body hr.text-black-50{color:#6c757d !important}[data-dark-mode] body .email-form .form-control{background:#1b1f22;border:1px solid transparent}[data-dark-mode] body .email-form .form-control:focus{border:1px solid #8ed6fb}[data-dark-mode] .page-link{color:#8ed6fb;background-color:transparent;border:var(--bs-border-width) solid #343a40}[data-dark-mode] .page-link:hover{color:#212529;background-color:#dee2e6;border-color:#dee2e6}[data-dark-mode] .page-link:focus{color:#212529;background-color:#dee2e6}[data-dark-mode] .page-item.active .page-link{color:#212529;background-color:#8ed6fb;border-color:#8ed6fb}[data-dark-mode] .page-item.disabled .page-link{color:var(--bs-secondary-color);background-color:#1b1f22;border-color:#343a40}[data-dark-mode] .dropdown-menu{background:#1b1f22}[data-dark-mode] .dropdown-menu .dropdown-item{color:#dee2e6}[data-dark-mode] .dropdown-menu .dropdown-item:hover{color:#8ed6fb;background:#212529}[data-dark-mode] .dropdown-menu .dropdown-item.active,[data-dark-mode] .dropdown-menu .dropdown-item:focus{color:#8ed6fb;background:#212529}[data-dark-mode] .doks-navbar .dropdown-item.current,[data-dark-mode] .doks-subnavbar .dropdown-item.current{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23dee2e6' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 1rem top 0.6rem;background-size:0.75rem 0.75rem}[data-dark-mode] details{border:1px solid #343a40}[data-dark-mode] summary:hover{background:#1b1f22}[data-dark-mode] details[open]>summary{border-bottom:1px solid #343a40}[data-dark-mode] details summary::before{content:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28222, 226, 230, 0.75%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e")}[data-dark-mode] #toc a.active{color:#8ed6fb}[data-dark-mode] .btn-light{color:#8ed6fb;background:#1b1f22;border:1px solid #1b1f22}.alert{font-family:sfmono-regular,menlo,monaco,consolas,"Liberation Mono","Courier New",monospace;font-size:.875rem}.alert-icon{margin-right:0.75rem}.docs main .alert{margin:2rem -1.5rem}.alert .alert-link{text-decoration:underline}.alert-doks{background:#fbf7f0;color:#1d2d35}.alert-primary{color:#fff;background-color:#5d2f86}.alert a{text-decoration:underline}.alert-primary .alert-link{color:#fff}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}.alert .alert-link:hover,.alert .alert-link:focus{text-decoration:none}.alert-dismissible .btn-close{position:absolute;top:50%;transform:translateY(-50%);right:1rem;z-index:2;padding:0.5rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-x'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");background-size:1.5rem;filter:invert(1) grayscale(100%) brightness(200%)}@media (min-width: 768px){.alert-dismissible .btn-close{background-size:1.25rem}}.alert code{background:#f6ecdc;color:#1d2d35;padding:0.25rem 0.5rem}.navbar .btn-link{color:#1d2d35;padding:0.4375rem 0}#mode{padding:0.5rem}.btn-link:focus{outline:0;box-shadow:none}#navigation{margin-left:1.25rem}@media (min-width: 992px){#mode{margin-left:0.5rem;margin-right:0.25rem}.navbar .btn-link{padding:0.5625em 0.25rem 0.5rem 0.125rem}}.navbar .btn-link:hover{color:#5d2f86}.navbar .btn-link:active{color:#5d2f86}body .toggle-dark{display:block}body .toggle-light{display:none}[data-dark-mode] body .toggle-light{display:block}[data-dark-mode] body .toggle-dark{display:none}pre{position:relative}@media (max-width: 767.98px){.btn-copy{display:none}}.btn-copy{transition:opacity 0.3s ease-in-out;visibility:hidden !important;position:absolute;right:0.25rem;top:0.25rem;z-index:10;font-family:"Jost",-apple-system,blinkmacsystemfont,"Segoe UI",roboto,"Helvetica Neue",arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:.875rem;padding:0.25rem 0.5rem;color:#fff;background-color:#d32e9d;border-color:#bf288e}.btn-copy:hover{color:#fff;background-color:#d743a7;border-color:#dc58b1}.btn-copy:focus{color:#fff;background-color:#d32e9d;border-color:#dc58b1;box-shadow:none}.btn-copy:active,.btn-copy.active{color:#fff;background-color:#d32e9d;border-color:#dc58b1}.btn-copy:active:focus,.btn-copy.active:focus{box-shadow:none}@media (min-width: 768px){pre:hover .btn-copy{visibility:visible !important}}.btn-copy::after{content:"Copy";display:block;color:#fff}.btn-copy:hover::after{content:"Copy";display:block;color:#fff}.btn-copy:focus::after,.btn-copy:active::after{content:"Copied";display:block;color:#fff}.collapsible-sidebar{margin:2.125rem 0}.btn-toggle{display:inline-flex;align-items:center;padding:0.25rem 0.5rem 0.25rem 0;font-weight:700;font-size:1rem;text-transform:uppercase;color:#1d2d35;background-color:transparent;border:0}.btn-toggle:hover,.btn-toggle:focus{color:#1d2d35;background-color:transparent;outline:0;box-shadow:none}.btn-toggle::before{width:1.25em;line-height:0;content:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%2829, 45, 53, 0.75%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e");transition:transform 0.35s ease;transform-origin:0.5em 50%;margin-bottom:0.125rem}.btn-toggle[aria-expanded="true"]{color:#1d2d35}.btn-toggle[aria-expanded="true"]::before{transform:rotate(90deg)}.btn-toggle-nav a{display:inline-flex;padding:0.1875rem 0.5rem;margin-top:0.125rem;margin-left:1.25rem;text-decoration:none}.btn-toggle-nav a:hover,.btn-toggle-nav a:focus{background-color:transparent;color:#5d2f86}.btn-toggle-nav a.active{color:#5d2f86}.dropdown-menu{width:auto}@media (min-width: 992px){.dropdown-menu{width:auto}}.doks-navbar .dropdown-menu,.doks-subnavbar .dropdown-menu{font-size:0.875rem}.doks-navbar .dropdown-item.current,.doks-subnavbar .dropdown-item.current{font-weight:600;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23292b2c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 1rem top 0.6rem;background-size:0.75rem 0.75rem}.btn-close{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-x'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");background-size:1.5rem}.offcanvas-header .btn-close{margin-right:0 !important}.dropdown-toggle::after{display:none}.dropdown-caret{margin-left:-0.1875rem;margin-right:-0.3125rem}.dropdown-menu-main .dropdown-item{color:inherit;font-size:1rem;font-weight:400;text-decoration:none}.dropdown-menu-main .dropdown-item:hover{background-color:transparent;color:#5d2f86}.dropdown-menu-main .dropdown-item.active{color:#5d2f86;font-weight:400;text-decoration:none;background-color:inherit}.dropdown-menu-main .dropdown-item.active:hover{background-color:transparent}pre,code,kbd,samp{font-family:sfmono-regular,menlo,monaco,consolas,"Liberation Mono","Courier New",monospace;font-size:.875rem;border-radius:.375rem}code{background:#fbf7f0;color:#1d2d35;padding:0.25rem 0.5rem}pre{margin:2rem 0}pre code{display:block;overflow-x:auto;line-height:1.5;padding:1.25rem 1.5rem;-moz-tab-size:4;-o-tab-size:4;tab-size:4;scrollbar-width:thin;scrollbar-color:transparent transparent}.hljs{padding:1.5rem !important}@media (max-width: 575.98px){pre,code,kbd,samp{border-radius:0}pre{margin:2rem -1.5rem}}pre code::-webkit-scrollbar{height:5px}pre code::-webkit-scrollbar-thumb{background:#ced4da}pre code:hover{scrollbar-width:thin;scrollbar-color:#adb5bd transparent}pre code::-webkit-scrollbar-thumb:hover{background:#adb5bd}code.language-mermaid{background:none}details{display:block;border:1px solid #e9ecef;border-radius:0.25rem;padding:0.5rem 1rem 0;margin:0.5rem 0}summary{list-style:none;display:inline-block;width:calc(100% + 2rem);margin:-0.5rem -1rem 0;padding:0.5rem 0.75rem}summary::-webkit-details-marker{display:none}summary:hover{background:#f8f9fa}details summary::before{display:inline-block;content:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%2829, 45, 53, 0.75%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e");transition:transform 0.35s ease;transform-origin:center center;margin-right:0.375rem}details[open]>summary::before{transform:rotate(90deg)}details[open]{padding:0.5rem 1rem}details[open]>summary{border-bottom:1px solid #dee2e6;margin-bottom:0.5rem}details h2,details .h2,details h3,details .h3,details h4,details .h4{margin:1rem 0 0.5rem}details p:last-child{margin-bottom:0}details ul,details ol{margin-bottom:0}details pre{margin:0 0 1rem}.hljs{display:block;overflow-x:auto;padding:1.25rem 1.5rem;background:#fbf7f0;color:#1d2d35}.hljs-string,.hljs-variable,.hljs-template-variable,.hljs-symbol,.hljs-bullet,.hljs-section,.hljs-addition,.hljs-attribute,.hljs-link{color:#d32e9d}.hljs-comment,.hljs-quote,.hljs-meta,.hljs-deletion{color:#888}.hljs-keyword,.hljs-selector-tag,.hljs-section,.hljs-name,.hljs-type,.hljs-strong{font-weight:bold}.hljs-emphasis{font-style:italic}[data-dark-mode] body .hljs{background:#1b1f22;color:#dee2e6}[data-dark-mode] body .hljs-string,[data-dark-mode] body .hljs-variable,[data-dark-mode] body .hljs-template-variable,[data-dark-mode] body .hljs-symbol,[data-dark-mode] body .hljs-bullet,[data-dark-mode] body .hljs-section,[data-dark-mode] body .hljs-addition,[data-dark-mode] body .hljs-attribute,[data-dark-mode] body .hljs-link{color:#8ed6fb}blockquote{margin-bottom:1rem;font-size:1.25rem;border-left:3px solid #dee2e6;padding-left:1rem}figure{margin:0 0 1rem;display:inline-block}figure img{margin-bottom:0.5rem;line-height:1;max-width:100%;height:auto}figure figcaption{margin:0.25rem 0 0.75rem;font-size:0.875em;color:#6c757d}.figure-caption{margin:0.25rem 0 0.75rem}figure.wide{margin:2rem -1.5rem}figure.wide .figure-caption{margin:0.25rem 1.5rem 0.75rem}@media (min-width: 768px){figure.wide{margin:2rem -2.5rem}figure.wide .figure-caption{margin:0.25rem 2.5rem 0.75rem}}@media (min-width: 992px){figure.wide{margin:2rem -5rem}figure.wide .figure-caption{margin:0.25rem 5rem 0.75rem}}.blur-up{filter:blur(5px)}.blur-up.lazyloaded{filter:unset}.img-simple{margin-top:0.375rem;margin-bottom:1.25rem}.mermaid{margin:1.5rem 0;padding:1.5rem}.mermaid svg{height:auto}.navbar-form{position:relative}#suggestions{position:absolute;right:0;margin-top:0.5rem;width:calc(100vw - 3rem);max-width:calc(400px - 3rem);z-index:1000}@media (min-width: 768px){#suggestions{right:-2rem}}@media (min-width: 992px){#suggestions{right:0}}#suggestions a,.suggestion__no-results{padding:0.75rem;margin:0 0.5rem}#suggestions a{display:block;text-decoration:none}#suggestions a:focus{background:#f8f9fa;outline:0}#suggestions div:not(:first-child){border-top:1px dashed #e9ecef}#suggestions div:first-child{margin-top:0.5rem}#suggestions div:last-child{margin-bottom:0.5rem}#suggestions a:hover{background:#f8f9fa}#suggestions span{display:flex;font-size:1rem}.suggestion__title{font-weight:700;color:#1d2d35}.suggestion__description,.suggestion__no-results{color:#495057}@media (min-width: 992px){#suggestions{width:31.125rem;max-width:31.125rem}#suggestions a{display:flex}.suggestion__title{width:9rem;padding-right:1rem;border-right:1px solid #e9ecef;display:inline-block;text-align:right}.suggestion__description{width:19rem;padding-left:1rem}}table{margin:3rem 0}.footer{border-top:1px solid #e9ecef;padding-top:1.125rem;padding-bottom:1.125rem}.footer ul{margin-bottom:0}.footer li{font-size:.875rem;margin-bottom:0}@media (min-width: 768px){.footer li{font-size:1rem}}.navbar-text{margin-left:1rem}.navbar-brand{font-weight:700}.navbar{z-index:1000;background-color:rgba(255,255,255,0.95);border-bottom:1px solid #e9ecef}@media (min-width: 992px){.navbar{z-index:1025;padding-top:0.25rem;padding-bottom:0.25rem}}@media (min-width: 768px){.navbar-brand{font-size:1.375rem}.navbar-text{margin-left:1.25rem}}.navbar-nav{flex-direction:row}.nav-item{margin-left:0}@media (min-width: 768px){.nav-item{margin-left:0.5rem}}@media (max-width: 767.98px){.navbar .container{padding-left:1.5rem;padding-right:1.5rem}}button#doks-languages{margin:0.25rem 0 0}@media (min-width: 992px){button#doks-languages{margin:0.25rem 0.5rem 0 0.25rem}}button#doks-versions{margin:0.25rem 0 0}@media (min-width: 992px){button#doks-versions{margin:0.25rem 0.5rem 0 0.25rem}}.offcanvas .nav-link{color:#1d2d35}.doks-subnavbar{background-color:rgba(255,255,255,0.95);border-bottom:1px solid #e9ecef}.doks-subnavbar .nav-link{padding:0.5rem 1.5rem 0.5rem 0}.doks-subnavbar .nav-link:first-child{padding:0.5rem 1.5rem 0.5rem 0}.offcanvas .nav-link:hover,.offcanvas .nav-link:focus{color:#5d2f86}.offcanvas .nav-link.active{color:#5d2f86}.header-bar{border-top:4px solid;border-image-source:linear-gradient(90deg, #5d2f86, #8ed6fb 50%, #d32e9d);border-image-slice:1}.offcanvas .header-bar{margin-bottom:-4px}.home .navbar{border-bottom:0}@media (min-width: 768px){.navbar-brand{margin-right:0.75rem !important}.doks-search{max-width:20rem;margin-top:0.125rem;margin-bottom:0.125rem}}.form-control.is-search{padding-right:4rem;border:1px solid transparent;background:#f8f9fa}@media (min-width: 768px){.form-control.is-search{width:calc(100% + 2rem)}}@media (min-width: 992px){.form-control.is-search{width:100%}}.form-control.is-search:focus{border:1px solid #5d2f86}.doks-search::after{position:absolute;top:0.4625rem;right:0.5375rem;display:flex;align-items:center;justify-content:center;height:1.5rem;padding-right:0.3125rem;padding-left:0.3125rem;font-size:.75rem;color:#495057;content:"Ctrl + /";border:1px solid #dee2e6;border-radius:0.25rem}@media (min-width: 768px){.doks-search::after{right:-1.4625rem}}@media (min-width: 992px){.doks-search::after{right:0.3125rem}}.algolia-autocomplete{display:flex !important}.algolia-autocomplete .ds-dropdown-menu{box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15) !important}@media (max-width: 575.98px){.algolia-autocomplete .ds-dropdown-menu{max-width:512px !important;min-width:312px !important;width:auto !important}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{font-weight:normal}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column::after{content:"/";margin-right:0.25rem}}.algolia-autocomplete .algolia-docsearch-suggestion--category-header{color:#1d2d35}.algolia-autocomplete .algolia-docsearch-suggestion--title{margin-bottom:0}.algolia-autocomplete .algolia-docsearch-suggestion--highlight{padding:0 0.05em}.algolia-autocomplete .algolia-docsearch-footer{margin-top:1rem;margin-right:0.5rem;margin-bottom:0.5rem}.navbar .menu-icon{cursor:pointer;padding:1.125rem 0.625rem;margin:0 0 0 -0.625rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.navbar .menu-icon .navicon{background:#1d2d35;display:block;height:2px;position:relative;transition:background 0.2s ease-out;width:18px}.navbar .menu-icon .navicon::before,.navbar .menu-icon .navicon::after{background:#1d2d35;content:"";display:block;height:100%;position:absolute;transition:all 0.2s ease-out;width:100%}.navbar .menu-icon .navicon::before{top:5px}.navbar .menu-icon .navicon::after{top:-5px}.btn-menu{margin-left:1rem;border:transparent}.btn-doks-light{border:transparent}.btn-menu,.doks-sidebar-toggle{padding-right:0.25rem;padding-left:0.25rem;margin-right:-0.5rem}.btn-menu:hover,.btn-doks-light:hover,.doks-sidebar-toggle:hover{background:#fcfaff;border:transparent}.btn-menu:focus,.btn-doks-light:focus,.doks-sidebar-toggle:focus{outline:0;border:transparent}.doks-sidebar-toggle .doks-collapse,.doks-toc-toggle .doks-collapse{display:none}.doks-sidebar-toggle:not(.collapsed) .doks-expand,.doks-toc-toggle:not(.collapsed) .doks-expand{display:none}.doks-sidebar-toggle:not(.collapsed) .doks-collapse,.doks-toc-toggle:not(.collapsed) .doks-collapse{display:inline-block}.navbar-light .navbar-brand,.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:active{color:#1d2d35}.navbar-light .navbar-nav .active .nav-link{color:#5d2f86}.dropdown-divider{border-top:1px dashed #e9ecef}.dropdown-item:hover{background:#f8f9fa}.dropdown-item:active{color:inherit}.social-link{padding-left:0.5rem}@media (min-width: 768px){.social-link{padding-left:0}}@media (min-width: 992px){.social-link{padding-right:0.5rem;padding-left:0.5rem}}.docs-content>h2[id]::before,.docs-content>[id].h2::before,.docs-content>h3[id]::before,.docs-content>[id].h3::before,.docs-content>h4[id]::before,.docs-content>[id].h4::before{display:block;height:6rem;margin-top:-6rem;content:""}.anchor{visibility:hidden}h1:hover a,.h1:hover a,h2:hover a,.h2:hover a,h3:hover a,.h3:hover a,h4:hover a,.h4:hover a{visibility:visible;text-decoration:none}.card-list{margin-top:2.25rem}.page-footer-meta{margin-top:3rem}.edit-page,.last-modified{font-size:.875rem;margin-top:0.25rem;margin-bottom:0.25rem}@media (min-width: 768px){.edit-page,.last-modified{font-size:1rem;margin-top:0.75rem;margin-bottom:0.25rem}}.edit-page svg,.last-modified svg{margin-right:0.25rem;margin-bottom:0.25rem}p.meta{margin-top:0.5rem;font-size:1rem}.breadcrumb{margin-top:2.25rem;font-size:1rem}.page-link:hover{text-decoration:none}.home .card,.contributors.list .card,.blog.list .card,.blog.single .card,.categories.list .card,.tags.list .card{margin-top:2rem;margin-bottom:2rem;transition:transform 0.3s}.home .card:hover,.contributors.list .card:hover,.blog.list .card:hover,.blog.single .card:hover,.categories.list .card:hover,.tags.list .card:hover{transform:scale(1.025)}.contributors.list .card.card-terms:hover,.categories.list .card.card-terms:hover,.tags.list .card.card-terms:hover{transform:none}.home .card-body,.contributors.list .card-body,.blog.list .card-body,.blog.single .card-body,.categories.list .card-body,.tags.list .card-body{padding:0 2rem 1rem}.contributors.list .card-terms .card-body,.categories.list .card-terms .card-body,.tags.list .card-terms .card-body{padding:1rem}.blog-header{text-align:center;margin-bottom:2rem}.related-posts{margin-top:4rem}h2.section-title,.section-title.h2{margin-bottom:1.25rem}.docs-links,.docs-toc{scrollbar-width:thin;scrollbar-color:#fff #fff}.docs-links::-webkit-scrollbar,.docs-toc::-webkit-scrollbar{width:5px}.docs-links::-webkit-scrollbar-track,.docs-toc::-webkit-scrollbar-track{background:#fff}.docs-links::-webkit-scrollbar-thumb,.docs-toc::-webkit-scrollbar-thumb{background:#fff}.docs-links:hover,.docs-toc:hover{scrollbar-width:thin;scrollbar-color:#e9ecef #fff}.docs-links:hover::-webkit-scrollbar-thumb,.docs-toc:hover::-webkit-scrollbar-thumb{background:#e9ecef}.docs-links::-webkit-scrollbar-thumb:hover,.docs-toc::-webkit-scrollbar-thumb:hover{background:#e9ecef}.docs-links h3,.docs-links .h3,.page-links h3,.page-links .h3{text-transform:uppercase;font-size:1rem;margin:1.25rem 0 0.5rem;padding:1.5rem 0 0}@media (min-width: 992px){.docs-links h3,.docs-links .h3,.page-links h3,.page-links .h3{margin:1.125rem 1.5rem 0.75rem 0;padding:1.375rem 0 0}}.docs-links h3:not(:first-child),.docs-links .h3:not(:first-child){border-top:1px solid #e9ecef}a.docs-link{color:#1d2d35;display:block;padding:0.125rem 0;font-size:1rem}.page-links li{margin-top:0.375rem;padding-top:0.375rem}.page-links li ul li{border-top:none;padding-left:1rem;margin-top:0.125rem;padding-top:0.125rem}.page-links li:not(:first-child){border-top:1px dashed #e9ecef}.page-links a{color:#1d2d35;display:block;padding:0.125rem 0;font-size:.9375rem}.docs-link:hover,.docs-link.active,.page-links a:hover{text-decoration:none;color:#5d2f86}.nav-link.active,.dropdown-menu-main .dropdown-item.active,.docs-link.active{font-weight:500}.docs-links h3.sidebar-link,.docs-links .sidebar-link.h3,.page-links h3.sidebar-link,.page-links .sidebar-link.h3{text-transform:none;font-size:1.125rem;font-weight:normal}.docs-links h3.sidebar-link a,.docs-links .sidebar-link.h3 a,.page-links h3.sidebar-link a,.page-links .sidebar-link.h3 a{color:#1d2d35}.docs-links h3.sidebar-link a:hover,.docs-links .sidebar-link.h3 a:hover,.page-links h3.sidebar-link a:hover,.page-links .sidebar-link.h3 a:hover{text-decoration:underline} +*/.hljs{color:#adbac7;background:#22272e}.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-variable,.hljs-type{color:#f47067}.hljs-attribute,.hljs-meta,.hljs-variable{color:#6cb6ff}.hljs-string,.hljs-meta .hljs-string{color:#96d0ff}.hljs-symbol{color:#f69d50}.hljs-comment{color:#768390}.hljs-name,.hljs-quote,.hljs-selector-tag{color:#8ddb8c}.hljs-section{color:#316dca;font-weight:bold}.hljs-bullet{color:#eac55f}.hljs-emphasis{color:#adbac7;font-style:italic}.hljs-strong{color:#adbac7;font-weight:bold}.hljs-addition{color:#b4f1b4;background-color:#1b4721}.hljs-deletion{color:#ffd8d3;background-color:#78191b}@font-face{font-family:"KaTeX_AMS";src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:"KaTeX_Caligraphic";src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype");font-weight:bold;font-style:normal}@font-face{font-family:"KaTeX_Caligraphic";src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:"KaTeX_Fraktur";src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype");font-weight:bold;font-style:normal}@font-face{font-family:"KaTeX_Fraktur";src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:"KaTeX_Main";src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype");font-weight:bold;font-style:normal}@font-face{font-family:"KaTeX_Main";src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype");font-weight:bold;font-style:italic}@font-face{font-family:"KaTeX_Main";src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype");font-weight:normal;font-style:italic}@font-face{font-family:"KaTeX_Main";src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:"KaTeX_Math";src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype");font-weight:bold;font-style:italic}@font-face{font-family:"KaTeX_Math";src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype");font-weight:normal;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype");font-weight:bold;font-style:normal}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype");font-weight:normal;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:"KaTeX_Script";src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:"KaTeX_Size1";src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:"KaTeX_Size2";src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:"KaTeX_Size3";src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:"KaTeX_Size4";src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:"KaTeX_Typewriter";src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}.katex{font:normal 1.21em KaTeX_Main, Times New Roman, serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none !important}.katex *{border-color:currentColor}.katex .katex-version::after{content:"0.16.11"}.katex .katex-mathml{position:absolute;clip:rect(1px, 1px, 1px, 1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .katex-html>.newline{display:block}.katex .base{position:relative;display:inline-block;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .strut{display:inline-block}.katex .textbf{font-weight:bold}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:bold}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:bold;font-style:italic}.katex .amsrm{font-family:KaTeX_AMS}.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:bold}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:bold}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed;border-collapse:collapse}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .vbox{display:inline-flex;flex-direction:column;align-items:baseline}.katex .hbox{display:inline-flex;flex-direction:row;width:100%}.katex .thinbox{display:inline-flex;flex-direction:row;width:0;max-width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .underline .underline-line,.katex .hline,.katex .hdashline,.katex .rule{min-height:1px}.katex .mspace{display:inline-block}.katex .llap,.katex .rlap,.katex .clap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner,.katex .clap>.inner{position:absolute}.katex .llap>.fix,.katex .rlap>.fix,.katex .clap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .rlap>.inner,.katex .clap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:solid 0;position:relative}.katex .overline .overline-line,.katex .underline .underline-line,.katex .hline{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:0.2777777778em;margin-right:-0.5555555556em}.katex .sizing.reset-size1.size1,.katex .fontsize-ensurer.reset-size1.size1{font-size:1em}.katex .sizing.reset-size1.size2,.katex .fontsize-ensurer.reset-size1.size2{font-size:1.2em}.katex .sizing.reset-size1.size3,.katex .fontsize-ensurer.reset-size1.size3{font-size:1.4em}.katex .sizing.reset-size1.size4,.katex .fontsize-ensurer.reset-size1.size4{font-size:1.6em}.katex .sizing.reset-size1.size5,.katex .fontsize-ensurer.reset-size1.size5{font-size:1.8em}.katex .sizing.reset-size1.size6,.katex .fontsize-ensurer.reset-size1.size6{font-size:2em}.katex .sizing.reset-size1.size7,.katex .fontsize-ensurer.reset-size1.size7{font-size:2.4em}.katex .sizing.reset-size1.size8,.katex .fontsize-ensurer.reset-size1.size8{font-size:2.88em}.katex .sizing.reset-size1.size9,.katex .fontsize-ensurer.reset-size1.size9{font-size:3.456em}.katex .sizing.reset-size1.size10,.katex .fontsize-ensurer.reset-size1.size10{font-size:4.148em}.katex .sizing.reset-size1.size11,.katex .fontsize-ensurer.reset-size1.size11{font-size:4.976em}.katex .sizing.reset-size2.size1,.katex .fontsize-ensurer.reset-size2.size1{font-size:0.8333333333em}.katex .sizing.reset-size2.size2,.katex .fontsize-ensurer.reset-size2.size2{font-size:1em}.katex .sizing.reset-size2.size3,.katex .fontsize-ensurer.reset-size2.size3{font-size:1.1666666667em}.katex .sizing.reset-size2.size4,.katex .fontsize-ensurer.reset-size2.size4{font-size:1.3333333333em}.katex .sizing.reset-size2.size5,.katex .fontsize-ensurer.reset-size2.size5{font-size:1.5em}.katex .sizing.reset-size2.size6,.katex .fontsize-ensurer.reset-size2.size6{font-size:1.6666666667em}.katex .sizing.reset-size2.size7,.katex .fontsize-ensurer.reset-size2.size7{font-size:2em}.katex .sizing.reset-size2.size8,.katex .fontsize-ensurer.reset-size2.size8{font-size:2.4em}.katex .sizing.reset-size2.size9,.katex .fontsize-ensurer.reset-size2.size9{font-size:2.88em}.katex .sizing.reset-size2.size10,.katex .fontsize-ensurer.reset-size2.size10{font-size:3.4566666667em}.katex .sizing.reset-size2.size11,.katex .fontsize-ensurer.reset-size2.size11{font-size:4.1466666667em}.katex .sizing.reset-size3.size1,.katex .fontsize-ensurer.reset-size3.size1{font-size:0.7142857143em}.katex .sizing.reset-size3.size2,.katex .fontsize-ensurer.reset-size3.size2{font-size:0.8571428571em}.katex .sizing.reset-size3.size3,.katex .fontsize-ensurer.reset-size3.size3{font-size:1em}.katex .sizing.reset-size3.size4,.katex .fontsize-ensurer.reset-size3.size4{font-size:1.1428571429em}.katex .sizing.reset-size3.size5,.katex .fontsize-ensurer.reset-size3.size5{font-size:1.2857142857em}.katex .sizing.reset-size3.size6,.katex .fontsize-ensurer.reset-size3.size6{font-size:1.4285714286em}.katex .sizing.reset-size3.size7,.katex .fontsize-ensurer.reset-size3.size7{font-size:1.7142857143em}.katex .sizing.reset-size3.size8,.katex .fontsize-ensurer.reset-size3.size8{font-size:2.0571428571em}.katex .sizing.reset-size3.size9,.katex .fontsize-ensurer.reset-size3.size9{font-size:2.4685714286em}.katex .sizing.reset-size3.size10,.katex .fontsize-ensurer.reset-size3.size10{font-size:2.9628571429em}.katex .sizing.reset-size3.size11,.katex .fontsize-ensurer.reset-size3.size11{font-size:3.5542857143em}.katex .sizing.reset-size4.size1,.katex .fontsize-ensurer.reset-size4.size1{font-size:0.625em}.katex .sizing.reset-size4.size2,.katex .fontsize-ensurer.reset-size4.size2{font-size:0.75em}.katex .sizing.reset-size4.size3,.katex .fontsize-ensurer.reset-size4.size3{font-size:0.875em}.katex .sizing.reset-size4.size4,.katex .fontsize-ensurer.reset-size4.size4{font-size:1em}.katex .sizing.reset-size4.size5,.katex .fontsize-ensurer.reset-size4.size5{font-size:1.125em}.katex .sizing.reset-size4.size6,.katex .fontsize-ensurer.reset-size4.size6{font-size:1.25em}.katex .sizing.reset-size4.size7,.katex .fontsize-ensurer.reset-size4.size7{font-size:1.5em}.katex .sizing.reset-size4.size8,.katex .fontsize-ensurer.reset-size4.size8{font-size:1.8em}.katex .sizing.reset-size4.size9,.katex .fontsize-ensurer.reset-size4.size9{font-size:2.16em}.katex .sizing.reset-size4.size10,.katex .fontsize-ensurer.reset-size4.size10{font-size:2.5925em}.katex .sizing.reset-size4.size11,.katex .fontsize-ensurer.reset-size4.size11{font-size:3.11em}.katex .sizing.reset-size5.size1,.katex .fontsize-ensurer.reset-size5.size1{font-size:0.5555555556em}.katex .sizing.reset-size5.size2,.katex .fontsize-ensurer.reset-size5.size2{font-size:0.6666666667em}.katex .sizing.reset-size5.size3,.katex .fontsize-ensurer.reset-size5.size3{font-size:0.7777777778em}.katex .sizing.reset-size5.size4,.katex .fontsize-ensurer.reset-size5.size4{font-size:0.8888888889em}.katex .sizing.reset-size5.size5,.katex .fontsize-ensurer.reset-size5.size5{font-size:1em}.katex .sizing.reset-size5.size6,.katex .fontsize-ensurer.reset-size5.size6{font-size:1.1111111111em}.katex .sizing.reset-size5.size7,.katex .fontsize-ensurer.reset-size5.size7{font-size:1.3333333333em}.katex .sizing.reset-size5.size8,.katex .fontsize-ensurer.reset-size5.size8{font-size:1.6em}.katex .sizing.reset-size5.size9,.katex .fontsize-ensurer.reset-size5.size9{font-size:1.92em}.katex .sizing.reset-size5.size10,.katex .fontsize-ensurer.reset-size5.size10{font-size:2.3044444444em}.katex .sizing.reset-size5.size11,.katex .fontsize-ensurer.reset-size5.size11{font-size:2.7644444444em}.katex .sizing.reset-size6.size1,.katex .fontsize-ensurer.reset-size6.size1{font-size:0.5em}.katex .sizing.reset-size6.size2,.katex .fontsize-ensurer.reset-size6.size2{font-size:0.6em}.katex .sizing.reset-size6.size3,.katex .fontsize-ensurer.reset-size6.size3{font-size:0.7em}.katex .sizing.reset-size6.size4,.katex .fontsize-ensurer.reset-size6.size4{font-size:0.8em}.katex .sizing.reset-size6.size5,.katex .fontsize-ensurer.reset-size6.size5{font-size:0.9em}.katex .sizing.reset-size6.size6,.katex .fontsize-ensurer.reset-size6.size6{font-size:1em}.katex .sizing.reset-size6.size7,.katex .fontsize-ensurer.reset-size6.size7{font-size:1.2em}.katex .sizing.reset-size6.size8,.katex .fontsize-ensurer.reset-size6.size8{font-size:1.44em}.katex .sizing.reset-size6.size9,.katex .fontsize-ensurer.reset-size6.size9{font-size:1.728em}.katex .sizing.reset-size6.size10,.katex .fontsize-ensurer.reset-size6.size10{font-size:2.074em}.katex .sizing.reset-size6.size11,.katex .fontsize-ensurer.reset-size6.size11{font-size:2.488em}.katex .sizing.reset-size7.size1,.katex .fontsize-ensurer.reset-size7.size1{font-size:0.4166666667em}.katex .sizing.reset-size7.size2,.katex .fontsize-ensurer.reset-size7.size2{font-size:0.5em}.katex .sizing.reset-size7.size3,.katex .fontsize-ensurer.reset-size7.size3{font-size:0.5833333333em}.katex .sizing.reset-size7.size4,.katex .fontsize-ensurer.reset-size7.size4{font-size:0.6666666667em}.katex .sizing.reset-size7.size5,.katex .fontsize-ensurer.reset-size7.size5{font-size:0.75em}.katex .sizing.reset-size7.size6,.katex .fontsize-ensurer.reset-size7.size6{font-size:0.8333333333em}.katex .sizing.reset-size7.size7,.katex .fontsize-ensurer.reset-size7.size7{font-size:1em}.katex .sizing.reset-size7.size8,.katex .fontsize-ensurer.reset-size7.size8{font-size:1.2em}.katex .sizing.reset-size7.size9,.katex .fontsize-ensurer.reset-size7.size9{font-size:1.44em}.katex .sizing.reset-size7.size10,.katex .fontsize-ensurer.reset-size7.size10{font-size:1.7283333333em}.katex .sizing.reset-size7.size11,.katex .fontsize-ensurer.reset-size7.size11{font-size:2.0733333333em}.katex .sizing.reset-size8.size1,.katex .fontsize-ensurer.reset-size8.size1{font-size:0.3472222222em}.katex .sizing.reset-size8.size2,.katex .fontsize-ensurer.reset-size8.size2{font-size:0.4166666667em}.katex .sizing.reset-size8.size3,.katex .fontsize-ensurer.reset-size8.size3{font-size:0.4861111111em}.katex .sizing.reset-size8.size4,.katex .fontsize-ensurer.reset-size8.size4{font-size:0.5555555556em}.katex .sizing.reset-size8.size5,.katex .fontsize-ensurer.reset-size8.size5{font-size:0.625em}.katex .sizing.reset-size8.size6,.katex .fontsize-ensurer.reset-size8.size6{font-size:0.6944444444em}.katex .sizing.reset-size8.size7,.katex .fontsize-ensurer.reset-size8.size7{font-size:0.8333333333em}.katex .sizing.reset-size8.size8,.katex .fontsize-ensurer.reset-size8.size8{font-size:1em}.katex .sizing.reset-size8.size9,.katex .fontsize-ensurer.reset-size8.size9{font-size:1.2em}.katex .sizing.reset-size8.size10,.katex .fontsize-ensurer.reset-size8.size10{font-size:1.4402777778em}.katex .sizing.reset-size8.size11,.katex .fontsize-ensurer.reset-size8.size11{font-size:1.7277777778em}.katex .sizing.reset-size9.size1,.katex .fontsize-ensurer.reset-size9.size1{font-size:0.2893518519em}.katex .sizing.reset-size9.size2,.katex .fontsize-ensurer.reset-size9.size2{font-size:0.3472222222em}.katex .sizing.reset-size9.size3,.katex .fontsize-ensurer.reset-size9.size3{font-size:0.4050925926em}.katex .sizing.reset-size9.size4,.katex .fontsize-ensurer.reset-size9.size4{font-size:0.462962963em}.katex .sizing.reset-size9.size5,.katex .fontsize-ensurer.reset-size9.size5{font-size:0.5208333333em}.katex .sizing.reset-size9.size6,.katex .fontsize-ensurer.reset-size9.size6{font-size:0.5787037037em}.katex .sizing.reset-size9.size7,.katex .fontsize-ensurer.reset-size9.size7{font-size:0.6944444444em}.katex .sizing.reset-size9.size8,.katex .fontsize-ensurer.reset-size9.size8{font-size:0.8333333333em}.katex .sizing.reset-size9.size9,.katex .fontsize-ensurer.reset-size9.size9{font-size:1em}.katex .sizing.reset-size9.size10,.katex .fontsize-ensurer.reset-size9.size10{font-size:1.2002314815em}.katex .sizing.reset-size9.size11,.katex .fontsize-ensurer.reset-size9.size11{font-size:1.4398148148em}.katex .sizing.reset-size10.size1,.katex .fontsize-ensurer.reset-size10.size1{font-size:0.2410800386em}.katex .sizing.reset-size10.size2,.katex .fontsize-ensurer.reset-size10.size2{font-size:0.2892960463em}.katex .sizing.reset-size10.size3,.katex .fontsize-ensurer.reset-size10.size3{font-size:0.337512054em}.katex .sizing.reset-size10.size4,.katex .fontsize-ensurer.reset-size10.size4{font-size:0.3857280617em}.katex .sizing.reset-size10.size5,.katex .fontsize-ensurer.reset-size10.size5{font-size:0.4339440694em}.katex .sizing.reset-size10.size6,.katex .fontsize-ensurer.reset-size10.size6{font-size:0.4821600771em}.katex .sizing.reset-size10.size7,.katex .fontsize-ensurer.reset-size10.size7{font-size:0.5785920926em}.katex .sizing.reset-size10.size8,.katex .fontsize-ensurer.reset-size10.size8{font-size:0.6943105111em}.katex .sizing.reset-size10.size9,.katex .fontsize-ensurer.reset-size10.size9{font-size:0.8331726133em}.katex .sizing.reset-size10.size10,.katex .fontsize-ensurer.reset-size10.size10{font-size:1em}.katex .sizing.reset-size10.size11,.katex .fontsize-ensurer.reset-size10.size11{font-size:1.1996142719em}.katex .sizing.reset-size11.size1,.katex .fontsize-ensurer.reset-size11.size1{font-size:0.2009646302em}.katex .sizing.reset-size11.size2,.katex .fontsize-ensurer.reset-size11.size2{font-size:0.2411575563em}.katex .sizing.reset-size11.size3,.katex .fontsize-ensurer.reset-size11.size3{font-size:0.2813504823em}.katex .sizing.reset-size11.size4,.katex .fontsize-ensurer.reset-size11.size4{font-size:0.3215434084em}.katex .sizing.reset-size11.size5,.katex .fontsize-ensurer.reset-size11.size5{font-size:0.3617363344em}.katex .sizing.reset-size11.size6,.katex .fontsize-ensurer.reset-size11.size6{font-size:0.4019292605em}.katex .sizing.reset-size11.size7,.katex .fontsize-ensurer.reset-size11.size7{font-size:0.4823151125em}.katex .sizing.reset-size11.size8,.katex .fontsize-ensurer.reset-size11.size8{font-size:0.578778135em}.katex .sizing.reset-size11.size9,.katex .fontsize-ensurer.reset-size11.size9{font-size:0.6945337621em}.katex .sizing.reset-size11.size10,.katex .fontsize-ensurer.reset-size11.size10{font-size:0.8336012862em}.katex .sizing.reset-size11.size11,.katex .fontsize-ensurer.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:0.12em}.katex .delimcenter{position:relative}.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy::before,.katex .stretchy::after{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 0.5em}.katex .cd-arrow-pad{padding:0 0.55556em 0 0.27778em}.katex .x-arrow,.katex .mover,.katex .munder{text-align:center}.katex .boxpad{padding:0 0.3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:0.04em solid}.katex .cancel-pad{padding:0 0.2em}.katex .cancel-lap{margin-left:-0.2em;margin-right:-0.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:0.08em}.katex .angl{box-sizing:border-box;border-top:0.049em solid;border-right:0.049em solid;margin-right:0.03889em}.katex .anglpad{padding:0 0.03889em}.katex .eqn-num::before{counter-increment:katexEqnNo;content:"(" counter(katexEqnNo) ")"}.katex .mml-eqn-num::before{counter-increment:mmlEqnNo;content:"(" counter(mmlEqnNo) ")"}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + 0.3em);text-align:left}.katex .cd-label-right{display:inline-block;position:absolute;left:calc(50% + 0.3em);text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left;padding-left:2em}body{counter-reset:katexEqnNo mmlEqnNo}@font-face{font-family:Jost;font-style:normal;font-weight:400;font-display:swap;src:local("Jost Regular Regular"),local("Jost-Regular"),local("Jost* Book"),local("Jost-Book"),url("fonts/vendor/jost/jost-v4-latin-regular.woff2") format("woff2"),url("fonts/vendor/jost/jost-v4-latin-regular.woff") format("woff")}@font-face{font-family:Jost;font-style:normal;font-weight:500;font-display:swap;src:local("Jost Regular Medium"),local("JostRoman-Medium"),local("Jost* Medium"),local("Jost-Medium"),url("fonts/vendor/jost/jost-v4-latin-500.woff2") format("woff2"),url("fonts/vendor/jost/jost-v4-latin-500.woff") format("woff")}@font-face{font-family:Jost;font-style:normal;font-weight:700;font-display:swap;src:local("Jost Regular Bold"),local("JostRoman-Bold"),local("Jost* Bold"),local("Jost-Bold"),url("fonts/vendor/jost/jost-v4-latin-700.woff2") format("woff2"),url("fonts/vendor/jost/jost-v4-latin-700.woff") format("woff")}@font-face{font-family:Jost;font-style:italic;font-weight:400;font-display:swap;src:local("Jost Italic Italic"),local("Jost-Italic"),local("Jost* BookItalic"),local("Jost-BookItalic"),url("fonts/vendor/jost/jost-v4-latin-italic.woff2") format("woff2"),url("fonts/vendor/jost/jost-v4-latin-italic.woff") format("woff")}@font-face{font-family:Jost;font-style:italic;font-weight:500;font-display:swap;src:local("Jost Italic Medium Italic"),local("JostItalic-Medium"),local("Jost* Medium Italic"),local("Jost-MediumItalic"),url("fonts/vendor/jost/jost-v4-latin-500italic.woff2") format("woff2"),url("fonts/vendor/jost/jost-v4-latin-500italic.woff") format("woff")}@font-face{font-family:Jost;font-style:italic;font-weight:700;font-display:swap;src:local("Jost Italic Bold Italic"),local("JostItalic-Bold"),local("Jost* Bold Italic"),local("Jost-BoldItalic"),url("fonts/vendor/jost/jost-v4-latin-700italic.woff2") format("woff2"),url("fonts/vendor/jost/jost-v4-latin-700italic.woff") format("woff")}.contributors .content,.blog .content,.page .content,.error404 .content,.docs.list .content,.tutorial.list .content,.showcase.list .content,.categories.list .content,.tags.list .content{padding-top:1rem;padding-bottom:3rem}.content img{max-width:100%}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin:2rem 0 1rem}.offcanvas-header{border-bottom:1px solid #dee2e6;padding-top:1.0625rem;padding-bottom:0.8125rem}h5.offcanvas-title,.offcanvas-title.h5{margin:0}body.docs{padding-top:0 !important}@media (min-width: 768px){body{font-size:1.125rem}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:1.125rem}}.home h1,.home .h1{font-size:calc(1.875rem + 1.5vw)}a:hover,a:focus{text-decoration:underline}a.btn:hover,a.btn:focus{text-decoration:none}.section{padding-top:5rem;padding-bottom:5rem}.section-sm{padding-top:1rem;padding-bottom:1rem}.docs-sidebar{order:2}@media (min-width: 992px){.docs-sidebar{order:0;border-right:1px solid #e9ecef}@supports (position: sticky){.docs-sidebar{position:sticky;top:4rem;z-index:1000;height:calc(100vh - 4rem)}.docs-sidebar-top{top:0}}}@media (min-width: 1200px){.docs-sidebar{flex:0 1 240px}}.docs-links{padding-bottom:5rem}@media (min-width: 992px){@supports (position: sticky){.docs-links{max-height:calc(100vh - 4rem);overflow-y:scroll}}}@media (min-width: 992px){.docs-links{display:block;width:auto;margin-right:-1.5rem;padding-bottom:4rem}}.docs-toc{order:2}@supports (position: sticky){.docs-toc{position:sticky;top:4rem;height:calc(100vh - 4rem);overflow-y:auto}.docs-toc-top{top:0}}.docs-content{padding-bottom:3rem;order:1}.docs-navigation{border-top:1px solid #e9ecef;margin-top:2rem;margin-bottom:0;padding-top:2rem}.docs-navigation a{font-size:.9rem}@media (min-width: 992px){.docs-navigation{margin-bottom:-1rem}.docs-navigation a{font-size:1rem}}.navbar a:hover,.navbar a:focus{text-decoration:none}#TableOfContents ul,#toc ul{padding-left:0;list-style:none}#toc a.active{color:#5d2f86;font-weight:500}::-moz-selection{background:rgba(212,53,159,0.2)}::selection{background:rgba(212,53,159,0.2)}.bg-dots{background-image:radial-gradient(#dee2e6 15%, transparent 15%);background-position:0 0;background-size:1rem 1rem;-webkit-mask:linear-gradient(to top, #fff, transparent);mask:linear-gradient(to top, #fff, transparent);width:100%;height:9rem;margin-top:-10rem;z-index:-1}.katex{font-size:1.125rem}.modal-backdrop{background-color:#fff}.modal-backdrop.show{opacity:0.7}@media (min-width: 768px){.modal-backdrop.show{opacity:0}}[data-dark-mode] body{background:#212529;color:#dee2e6}[data-dark-mode] body a{color:#8ed6fb}[data-dark-mode] body a.text-body{color:#dee2e6 !important}[data-dark-mode] body .btn-primary{--bs-btn-color: #1d2d35;--bs-btn-bg: #8ed6fb;--bs-btn-border-color: #8ed6fb;--bs-btn-hover-color: #1d2d35;--bs-btn-hover-bg: #9fdcfc;--bs-btn-hover-border-color: #99dafb;--bs-btn-focus-shadow-rgb: 125,189,221;--bs-btn-active-color: #1d2d35;--bs-btn-active-bg: #a5defc;--bs-btn-active-border-color: #99dafb;--bs-btn-active-shadow: inset 0 3px 5px rgba(29,45,53,0.125);--bs-btn-disabled-color: #1d2d35;--bs-btn-disabled-bg: #8ed6fb;--bs-btn-disabled-border-color: #8ed6fb;color:#212529 !important}[data-dark-mode] body .btn-outline-primary{--bs-btn-color: #8ed6fb;--bs-btn-border-color: #8ed6fb;--bs-btn-hover-color: #8ed6fb;--bs-btn-hover-bg: #8ed6fb;--bs-btn-hover-border-color: #8ed6fb;--bs-btn-focus-shadow-rgb: 142,214,251;--bs-btn-active-color: #1d2d35;--bs-btn-active-bg: #8ed6fb;--bs-btn-active-border-color: #8ed6fb;--bs-btn-active-shadow: inset 0 3px 5px rgba(29,45,53,0.125);--bs-btn-disabled-color: #8ed6fb;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #8ed6fb;--bs-gradient: none;color:#8ed6fb}[data-dark-mode] body .btn-outline-primary:hover{color:#212529}[data-dark-mode] body .btn-doks-light{color:#dee2e6}[data-dark-mode] body .show>.btn-doks-light,[data-dark-mode] body .btn-doks-light:hover,[data-dark-mode] body .btn-doks-light:active{color:#8ed6fb}[data-dark-mode] body .btn-menu svg{color:#dee2e6}[data-dark-mode] body .doks-sidebar-toggle{color:#dee2e6}[data-dark-mode] body .btn-menu:hover,[data-dark-mode] body .btn-doks-light:hover,[data-dark-mode] body .doks-sidebar-toggle:hover{background:#1b1f22}[data-dark-mode] body .navbar,[data-dark-mode] body .doks-subnavbar{background-color:rgba(33,37,41,0.95);border-bottom:1px solid #343a40}[data-dark-mode] body.home .navbar{border-bottom:0}[data-dark-mode] body .offcanvas-header{border-bottom:1px solid #343a40}[data-dark-mode] body .offcanvas .nav-link{color:#dee2e6}[data-dark-mode] body .offcanvas .nav-link:hover,[data-dark-mode] body .offcanvas .nav-link:focus{color:#8ed6fb}[data-dark-mode] body .offcanvas .nav-link.active{color:#8ed6fb}[data-dark-mode] body .navbar-light .navbar-brand{color:#dee2e6 !important}[data-dark-mode] body .navbar-light .navbar-nav .nav-link{color:#dee2e6}[data-dark-mode] body .navbar-light .navbar-nav .nav-link:hover,[data-dark-mode] body .navbar-light .navbar-nav .nav-link:focus{color:#8ed6fb}[data-dark-mode] body .navbar-light .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}[data-dark-mode] body .navbar-light .navbar-nav .show>.nav-link,[data-dark-mode] body .navbar-light .navbar-nav .active>.nav-link,[data-dark-mode] body .navbar-light .navbar-nav .nav-link.show,[data-dark-mode] body .navbar-light .navbar-nav .nav-link.active{color:#8ed6fb}[data-dark-mode] body .navbar-light .navbar-text{color:#dee2e6}[data-dark-mode] body .alert-primary a{color:#212529}[data-dark-mode] body .alert-doks{background:#1b1f22;color:#dee2e6}[data-dark-mode] body .alert-doks a{color:#8ed6fb}[data-dark-mode] body .page-links a{color:#dee2e6}[data-dark-mode] body .btn-toggle-nav a{color:#dee2e6}[data-dark-mode] body .showcase-meta a{color:#dee2e6}[data-dark-mode] body .showcase-meta a:hover,[data-dark-mode] body .showcase-meta a:focus{color:#8ed6fb}[data-dark-mode] body .docs-link:hover,[data-dark-mode] body .docs-link.active,[data-dark-mode] body .page-links a:hover{text-decoration:none;color:#8ed6fb}[data-dark-mode] body .btn-toggle{color:#dee2e6;background-color:transparent;border:0}[data-dark-mode] body .btn-toggle:hover,[data-dark-mode] body .btn-toggle:focus{color:#dee2e6}[data-dark-mode] body .btn-toggle::before{width:1.25em;line-height:0;content:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28222, 226, 230, 0.75%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e");transition:transform 0.35s ease;transform-origin:0.5em 50%;margin-bottom:0.125rem}[data-dark-mode] body .btn-toggle[aria-expanded="true"]{color:#dee2e6}[data-dark-mode] body .btn-toggle[aria-expanded="true"]::before{transform:rotate(90deg)}[data-dark-mode] body .btn-toggle-nav a:hover,[data-dark-mode] body .btn-toggle-nav a:focus{color:#8ed6fb}[data-dark-mode] body .btn-toggle-nav a.active{color:#8ed6fb}[data-dark-mode] body .navbar-light .navbar-text a{color:#8ed6fb}[data-dark-mode] body .docs-links h3.sidebar-link a,[data-dark-mode] body .docs-links .sidebar-link.h3 a,[data-dark-mode] body .page-links h3.sidebar-link a,[data-dark-mode] body .page-links .sidebar-link.h3 a{color:#dee2e6}[data-dark-mode] body .navbar-light .navbar-text a:hover,[data-dark-mode] body .navbar-light .navbar-text a:focus{color:#8ed6fb}[data-dark-mode] body .navbar .btn-link{color:#dee2e6}[data-dark-mode] body .content .btn-link{color:#8ed6fb}[data-dark-mode] body .content .btn-link:hover{color:#8ed6fb}[data-dark-mode] body .content img[src^="https://latex.codecogs.com/svg.latex"]{filter:invert(1)}[data-dark-mode] body .navbar .btn-link:hover{color:#8ed6fb}[data-dark-mode] body .navbar .btn-link:active{color:#8ed6fb}[data-dark-mode] body .form-control.is-search{background:#1b1f22;border:1px solid transparent;color:#dee2e6}[data-dark-mode] body .form-control.is-search:focus{border:1px solid #8ed6fb}[data-dark-mode] body .doks-search::after{color:#dee2e6;border:1px solid #495057}[data-dark-mode] body .text-dark{color:#dee2e6 !important}[data-dark-mode] body .form-control{color:#dee2e6}[data-dark-mode] body .form-control::-moz-placeholder{color:#ced4da;opacity:1}[data-dark-mode] body .form-control::placeholder{color:#ced4da;opacity:1}[data-dark-mode] body .border-top{border-top:1px solid #343a40 !important}@media (min-width: 992px){[data-dark-mode] body .docs-sidebar{order:0;border-right:1px solid #343a40}}[data-dark-mode] body .docs-navigation{border-top:1px solid #343a40}[data-dark-mode] body pre code::-webkit-scrollbar-thumb{background:#ced4da}[data-dark-mode] body code:not(.hljs){background:#1b1f22;color:#dee2e6}[data-dark-mode] body pre code:hover{scrollbar-width:thin;scrollbar-color:#343a40 transparent}[data-dark-mode] body pre code::-webkit-scrollbar-thumb:hover{background:#adb5bd}[data-dark-mode] body blockquote{border-left:3px solid #343a40}[data-dark-mode] body .footer{border-top:1px solid #343a40}[data-dark-mode] body .docs-links,[data-dark-mode] body .docs-toc{scrollbar-width:thin;scrollbar-color:#212529 #212529}[data-dark-mode] body .docs-links::-webkit-scrollbar,[data-dark-mode] body .docs-toc::-webkit-scrollbar{width:5px}[data-dark-mode] body .docs-links::-webkit-scrollbar-track,[data-dark-mode] body .docs-toc::-webkit-scrollbar-track{background:#212529}[data-dark-mode] body .docs-links::-webkit-scrollbar-thumb,[data-dark-mode] body .docs-toc::-webkit-scrollbar-thumb{background:#212529}[data-dark-mode] body .docs-links:hover,[data-dark-mode] body .docs-toc:hover{scrollbar-width:thin;scrollbar-color:#343a40 #212529}[data-dark-mode] body .docs-links:hover::-webkit-scrollbar-thumb,[data-dark-mode] body .docs-toc:hover::-webkit-scrollbar-thumb{background:#343a40}[data-dark-mode] body .docs-links::-webkit-scrollbar-thumb:hover,[data-dark-mode] body .docs-toc::-webkit-scrollbar-thumb:hover{background:#343a40}[data-dark-mode] body .docs-links h3:not(:first-child),[data-dark-mode] body .docs-links .h3:not(:first-child){border-top:1px solid #343a40}[data-dark-mode] body a.docs-link{color:#dee2e6}[data-dark-mode] body .page-links li:not(:first-child){border-top:1px dashed #343a40}[data-dark-mode] body .card{background:#212529;border:1px solid #343a40}[data-dark-mode] body .card.bg-light{background:#1b1f22 !important}[data-dark-mode] body .navbar .menu-icon .navicon{background:#dee2e6}[data-dark-mode] body .navbar .menu-icon .navicon::before,[data-dark-mode] body .navbar .menu-icon .navicon::after{background:#dee2e6}[data-dark-mode] body .logo-light{display:none !important}[data-dark-mode] body .logo-dark{display:inline-block !important}[data-dark-mode] body .bg-light{background:#1e2125 !important}[data-dark-mode] body .bg-dots{background-image:radial-gradient(#556370 15%, transparent 15%)}[data-dark-mode] body .text-muted{color:#c8cfd6 !important}[data-dark-mode] body .alert-primary{background:#8ed6fb;color:#212529}[data-dark-mode] body .figure-caption{color:#dee2e6}[data-dark-mode] body .copy-status::after{content:"Copy";display:block;color:#dee2e6}[data-dark-mode] body .copy-status:hover::after{content:"Copy";display:block;color:#8ed6fb}[data-dark-mode] body .copy-status:focus::after,[data-dark-mode] body .copy-status:active::after{content:"Copied";display:block;color:#8ed6fb}[data-dark-mode] body .offcanvas{background-color:#212529}[data-dark-mode] body .btn-close{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNkZWUyZTYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXgiPjxsaW5lIHgxPSIxOCIgeTE9IjYiIHgyPSI2IiB5Mj0iMTgiPjwvbGluZT48bGluZSB4MT0iNiIgeTE9IjYiIHgyPSIxOCIgeTI9IjE4Ij48L2xpbmU+PC9zdmc+");background-size:1.5rem}@media (min-width: 768px){[data-dark-mode] body .alert-dismissible .btn-close{background-size:1.25rem}}[data-dark-mode] .dropdown-item{color:#212529}[data-dark-mode] body hr.text-black-50{color:#6c757d !important}[data-dark-mode] body .email-form .form-control{background:#1b1f22;border:1px solid transparent}[data-dark-mode] body .email-form .form-control:focus{border:1px solid #8ed6fb}[data-dark-mode] .page-link{color:#8ed6fb;background-color:transparent;border:var(--bs-border-width) solid #343a40}[data-dark-mode] .page-link:hover{color:#212529;background-color:#dee2e6;border-color:#dee2e6}[data-dark-mode] .page-link:focus{color:#212529;background-color:#dee2e6}[data-dark-mode] .page-item.active .page-link{color:#212529;background-color:#8ed6fb;border-color:#8ed6fb}[data-dark-mode] .page-item.disabled .page-link{color:var(--bs-secondary-color);background-color:#1b1f22;border-color:#343a40}[data-dark-mode] .dropdown-menu{background:#1b1f22}[data-dark-mode] .dropdown-menu .dropdown-item{color:#dee2e6}[data-dark-mode] .dropdown-menu .dropdown-item:hover{color:#8ed6fb;background:#212529}[data-dark-mode] .dropdown-menu .dropdown-item.active,[data-dark-mode] .dropdown-menu .dropdown-item:focus{color:#8ed6fb;background:#212529}[data-dark-mode] .doks-navbar .dropdown-item.current,[data-dark-mode] .doks-subnavbar .dropdown-item.current{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23dee2e6' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 1rem top 0.6rem;background-size:0.75rem 0.75rem}[data-dark-mode] details{border:1px solid #343a40}[data-dark-mode] summary:hover{background:#1b1f22}[data-dark-mode] details[open]>summary{border-bottom:1px solid #343a40}[data-dark-mode] details summary::before{content:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28222, 226, 230, 0.75%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e")}[data-dark-mode] #toc a.active{color:#8ed6fb}[data-dark-mode] .btn-light{color:#8ed6fb;background:#1b1f22;border:1px solid #1b1f22}.alert{font-family:sfmono-regular,menlo,monaco,consolas,"Liberation Mono","Courier New",monospace;font-size:.875rem}.alert-icon{margin-right:0.75rem}.docs main .alert{margin:2rem -1.5rem}.alert .alert-link{text-decoration:underline}.alert-doks{background:#fbf7f0;color:#1d2d35}.alert-primary{color:#fff;background-color:#5d2f86}.alert a{text-decoration:underline}.alert-primary .alert-link{color:#fff}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}.alert .alert-link:hover,.alert .alert-link:focus{text-decoration:none}.alert-dismissible .btn-close{position:absolute;top:50%;transform:translateY(-50%);right:1rem;z-index:2;padding:0.5rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-x'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");background-size:1.5rem;filter:invert(1) grayscale(100%) brightness(200%)}@media (min-width: 768px){.alert-dismissible .btn-close{background-size:1.25rem}}.alert code{background:#f6ecdc;color:#1d2d35;padding:0.25rem 0.5rem}.navbar .btn-link{color:#1d2d35;padding:0.4375rem 0}#mode{padding:0.5rem}.btn-link:focus{outline:0;box-shadow:none}#navigation{margin-left:1.25rem}@media (min-width: 992px){#mode{margin-left:0.5rem;margin-right:0.25rem}.navbar .btn-link{padding:0.5625em 0.25rem 0.5rem 0.125rem}}.navbar .btn-link:hover{color:#5d2f86}.navbar .btn-link:active{color:#5d2f86}body .toggle-dark{display:block}body .toggle-light{display:none}[data-dark-mode] body .toggle-light{display:block}[data-dark-mode] body .toggle-dark{display:none}pre{position:relative}@media (max-width: 767.98px){.btn-copy{display:none}}.btn-copy{transition:opacity 0.3s ease-in-out;visibility:hidden !important;position:absolute;right:0.25rem;top:0.25rem;z-index:10;font-family:"Jost",-apple-system,blinkmacsystemfont,"Segoe UI",roboto,"Helvetica Neue",arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:.875rem;padding:0.25rem 0.5rem;color:#fff;background-color:#d32e9d;border-color:#bf288e}.btn-copy:hover{color:#fff;background-color:#d743a7;border-color:#dc58b1}.btn-copy:focus{color:#fff;background-color:#d32e9d;border-color:#dc58b1;box-shadow:none}.btn-copy:active,.btn-copy.active{color:#fff;background-color:#d32e9d;border-color:#dc58b1}.btn-copy:active:focus,.btn-copy.active:focus{box-shadow:none}@media (min-width: 768px){pre:hover .btn-copy{visibility:visible !important}}.btn-copy::after{content:"Copy";display:block;color:#fff}.btn-copy:hover::after{content:"Copy";display:block;color:#fff}.btn-copy:focus::after,.btn-copy:active::after{content:"Copied";display:block;color:#fff}.collapsible-sidebar{margin:2.125rem 0}.btn-toggle{display:inline-flex;align-items:center;padding:0.25rem 0.5rem 0.25rem 0;font-weight:700;font-size:1rem;text-transform:uppercase;color:#1d2d35;background-color:transparent;border:0}.btn-toggle:hover,.btn-toggle:focus{color:#1d2d35;background-color:transparent;outline:0;box-shadow:none}.btn-toggle::before{width:1.25em;line-height:0;content:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%2829, 45, 53, 0.75%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e");transition:transform 0.35s ease;transform-origin:0.5em 50%;margin-bottom:0.125rem}.btn-toggle[aria-expanded="true"]{color:#1d2d35}.btn-toggle[aria-expanded="true"]::before{transform:rotate(90deg)}.btn-toggle-nav a{display:inline-flex;padding:0.1875rem 0.5rem;margin-top:0.125rem;margin-left:1.25rem;text-decoration:none}.btn-toggle-nav a:hover,.btn-toggle-nav a:focus{background-color:transparent;color:#5d2f86}.btn-toggle-nav a.active{color:#5d2f86}.dropdown-menu{width:auto}@media (min-width: 992px){.dropdown-menu{width:auto}}.doks-navbar .dropdown-menu,.doks-subnavbar .dropdown-menu{font-size:0.875rem}.doks-navbar .dropdown-item.current,.doks-subnavbar .dropdown-item.current{font-weight:600;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23292b2c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 1rem top 0.6rem;background-size:0.75rem 0.75rem}.btn-close{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-x'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");background-size:1.5rem}.offcanvas-header .btn-close{margin-right:0 !important}.dropdown-toggle::after{display:none}.dropdown-caret{margin-left:-0.1875rem;margin-right:-0.3125rem}.dropdown-menu-main .dropdown-item{color:inherit;font-size:1rem;font-weight:400;text-decoration:none}.dropdown-menu-main .dropdown-item:hover{background-color:transparent;color:#5d2f86}.dropdown-menu-main .dropdown-item.active{color:#5d2f86;font-weight:400;text-decoration:none;background-color:inherit}.dropdown-menu-main .dropdown-item.active:hover{background-color:transparent}pre,code,kbd,samp{font-family:sfmono-regular,menlo,monaco,consolas,"Liberation Mono","Courier New",monospace;font-size:.875rem;border-radius:.375rem}code{background:#fbf7f0;color:#1d2d35;padding:0.25rem 0.5rem}pre{margin:2rem 0}pre code{display:block;overflow-x:auto;line-height:1.5;padding:1.25rem 1.5rem;-moz-tab-size:4;-o-tab-size:4;tab-size:4;scrollbar-width:thin;scrollbar-color:transparent transparent}.hljs{padding:1.5rem !important}@media (max-width: 575.98px){pre,code,kbd,samp{border-radius:0}pre{margin:2rem -1.5rem}}pre code::-webkit-scrollbar{height:5px}pre code::-webkit-scrollbar-thumb{background:#ced4da}pre code:hover{scrollbar-width:thin;scrollbar-color:#adb5bd transparent}pre code::-webkit-scrollbar-thumb:hover{background:#adb5bd}code.language-mermaid{background:none}details{display:block;border:1px solid #e9ecef;border-radius:0.25rem;padding:0.5rem 1rem 0;margin:0.5rem 0}summary{list-style:none;display:inline-block;width:calc(100% + 2rem);margin:-0.5rem -1rem 0;padding:0.5rem 0.75rem}summary::-webkit-details-marker{display:none}summary:hover{background:#f8f9fa}details summary::before{display:inline-block;content:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%2829, 45, 53, 0.75%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e");transition:transform 0.35s ease;transform-origin:center center;margin-right:0.375rem}details[open]>summary::before{transform:rotate(90deg)}details[open]{padding:0.5rem 1rem}details[open]>summary{border-bottom:1px solid #dee2e6;margin-bottom:0.5rem}details h2,details .h2,details h3,details .h3,details h4,details .h4{margin:1rem 0 0.5rem}details p:last-child{margin-bottom:0}details ul,details ol{margin-bottom:0}details pre{margin:0 0 1rem}.hljs{display:block;overflow-x:auto;padding:1.25rem 1.5rem;background:#fbf7f0;color:#1d2d35}.hljs-string,.hljs-variable,.hljs-template-variable,.hljs-symbol,.hljs-bullet,.hljs-section,.hljs-addition,.hljs-attribute,.hljs-link{color:#d32e9d}.hljs-comment,.hljs-quote,.hljs-meta,.hljs-deletion{color:#888}.hljs-keyword,.hljs-selector-tag,.hljs-section,.hljs-name,.hljs-type,.hljs-strong{font-weight:bold}.hljs-emphasis{font-style:italic}[data-dark-mode] body .hljs{background:#1b1f22;color:#dee2e6}[data-dark-mode] body .hljs-string,[data-dark-mode] body .hljs-variable,[data-dark-mode] body .hljs-template-variable,[data-dark-mode] body .hljs-symbol,[data-dark-mode] body .hljs-bullet,[data-dark-mode] body .hljs-section,[data-dark-mode] body .hljs-addition,[data-dark-mode] body .hljs-attribute,[data-dark-mode] body .hljs-link{color:#8ed6fb}blockquote{margin-bottom:1rem;font-size:1.25rem;border-left:3px solid #dee2e6;padding-left:1rem}figure{margin:0 0 1rem;display:inline-block}figure img{margin-bottom:0.5rem;line-height:1;max-width:100%;height:auto}figure figcaption{margin:0.25rem 0 0.75rem;font-size:0.875em;color:#6c757d}.figure-caption{margin:0.25rem 0 0.75rem}figure.wide{margin:2rem -1.5rem}figure.wide .figure-caption{margin:0.25rem 1.5rem 0.75rem}@media (min-width: 768px){figure.wide{margin:2rem -2.5rem}figure.wide .figure-caption{margin:0.25rem 2.5rem 0.75rem}}@media (min-width: 992px){figure.wide{margin:2rem -5rem}figure.wide .figure-caption{margin:0.25rem 5rem 0.75rem}}.blur-up{filter:blur(5px)}.blur-up.lazyloaded{filter:unset}.img-simple{margin-top:0.375rem;margin-bottom:1.25rem}.mermaid{margin:1.5rem 0;padding:1.5rem}.mermaid svg{height:auto}.navbar-form{position:relative}#suggestions{position:absolute;right:0;margin-top:0.5rem;width:calc(100vw - 3rem);max-width:calc(400px - 3rem);z-index:1000}@media (min-width: 768px){#suggestions{right:-2rem}}@media (min-width: 992px){#suggestions{right:0}}#suggestions a,.suggestion__no-results{padding:0.75rem;margin:0 0.5rem}#suggestions a{display:block;text-decoration:none}#suggestions a:focus{background:#f8f9fa;outline:0}#suggestions div:not(:first-child){border-top:1px dashed #e9ecef}#suggestions div:first-child{margin-top:0.5rem}#suggestions div:last-child{margin-bottom:0.5rem}#suggestions a:hover{background:#f8f9fa}#suggestions span{display:flex;font-size:1rem}.suggestion__title{font-weight:700;color:#1d2d35}.suggestion__description,.suggestion__no-results{color:#495057}@media (min-width: 992px){#suggestions{width:31.125rem;max-width:31.125rem}#suggestions a{display:flex}.suggestion__title{width:9rem;padding-right:1rem;border-right:1px solid #e9ecef;display:inline-block;text-align:right}.suggestion__description{width:19rem;padding-left:1rem}}table{margin:3rem 0}.footer{border-top:1px solid #e9ecef;padding-top:1.125rem;padding-bottom:1.125rem}.footer ul{margin-bottom:0}.footer li{font-size:.875rem;margin-bottom:0}@media (min-width: 768px){.footer li{font-size:1rem}}.navbar-text{margin-left:1rem}.navbar-brand{font-weight:700}.navbar{z-index:1000;background-color:rgba(255,255,255,0.95);border-bottom:1px solid #e9ecef}@media (min-width: 992px){.navbar{z-index:1025;padding-top:0.25rem;padding-bottom:0.25rem}}@media (min-width: 768px){.navbar-brand{font-size:1.375rem}.navbar-text{margin-left:1.25rem}}.navbar-nav{flex-direction:row}.nav-item{margin-left:0}@media (min-width: 768px){.nav-item{margin-left:0.5rem}}@media (max-width: 767.98px){.navbar .container{padding-left:1.5rem;padding-right:1.5rem}}button#doks-languages{margin:0.25rem 0 0}@media (min-width: 992px){button#doks-languages{margin:0.25rem 0.5rem 0 0.25rem}}button#doks-versions{margin:0.25rem 0 0}@media (min-width: 992px){button#doks-versions{margin:0.25rem 0.5rem 0 0.25rem}}.offcanvas .nav-link{color:#1d2d35}.doks-subnavbar{background-color:rgba(255,255,255,0.95);border-bottom:1px solid #e9ecef}.doks-subnavbar .nav-link{padding:0.5rem 1.5rem 0.5rem 0}.doks-subnavbar .nav-link:first-child{padding:0.5rem 1.5rem 0.5rem 0}.offcanvas .nav-link:hover,.offcanvas .nav-link:focus{color:#5d2f86}.offcanvas .nav-link.active{color:#5d2f86}.header-bar{border-top:4px solid;border-image-source:linear-gradient(90deg, #5d2f86, #8ed6fb 50%, #d32e9d);border-image-slice:1}.offcanvas .header-bar{margin-bottom:-4px}.home .navbar{border-bottom:0}@media (min-width: 768px){.navbar-brand{margin-right:0.75rem !important}.doks-search{max-width:20rem;margin-top:0.125rem;margin-bottom:0.125rem}}.form-control.is-search{padding-right:4rem;border:1px solid transparent;background:#f8f9fa}@media (min-width: 768px){.form-control.is-search{width:calc(100% + 2rem)}}@media (min-width: 992px){.form-control.is-search{width:100%}}.form-control.is-search:focus{border:1px solid #5d2f86}.doks-search::after{position:absolute;top:0.4625rem;right:0.5375rem;display:flex;align-items:center;justify-content:center;height:1.5rem;padding-right:0.3125rem;padding-left:0.3125rem;font-size:.75rem;color:#495057;content:"Ctrl + /";border:1px solid #dee2e6;border-radius:0.25rem}@media (min-width: 768px){.doks-search::after{right:-1.4625rem}}@media (min-width: 992px){.doks-search::after{right:0.3125rem}}.algolia-autocomplete{display:flex !important}.algolia-autocomplete .ds-dropdown-menu{box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15) !important}@media (max-width: 575.98px){.algolia-autocomplete .ds-dropdown-menu{max-width:512px !important;min-width:312px !important;width:auto !important}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{font-weight:normal}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column::after{content:"/";margin-right:0.25rem}}.algolia-autocomplete .algolia-docsearch-suggestion--category-header{color:#1d2d35}.algolia-autocomplete .algolia-docsearch-suggestion--title{margin-bottom:0}.algolia-autocomplete .algolia-docsearch-suggestion--highlight{padding:0 0.05em}.algolia-autocomplete .algolia-docsearch-footer{margin-top:1rem;margin-right:0.5rem;margin-bottom:0.5rem}.navbar .menu-icon{cursor:pointer;padding:1.125rem 0.625rem;margin:0 0 0 -0.625rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.navbar .menu-icon .navicon{background:#1d2d35;display:block;height:2px;position:relative;transition:background 0.2s ease-out;width:18px}.navbar .menu-icon .navicon::before,.navbar .menu-icon .navicon::after{background:#1d2d35;content:"";display:block;height:100%;position:absolute;transition:all 0.2s ease-out;width:100%}.navbar .menu-icon .navicon::before{top:5px}.navbar .menu-icon .navicon::after{top:-5px}.btn-menu{margin-left:1rem;border:transparent}.btn-doks-light{border:transparent}.btn-menu,.doks-sidebar-toggle{padding-right:0.25rem;padding-left:0.25rem;margin-right:-0.5rem}.btn-menu:hover,.btn-doks-light:hover,.doks-sidebar-toggle:hover{background:#fcfaff;border:transparent}.btn-menu:focus,.btn-doks-light:focus,.doks-sidebar-toggle:focus{outline:0;border:transparent}.doks-sidebar-toggle .doks-collapse,.doks-toc-toggle .doks-collapse{display:none}.doks-sidebar-toggle:not(.collapsed) .doks-expand,.doks-toc-toggle:not(.collapsed) .doks-expand{display:none}.doks-sidebar-toggle:not(.collapsed) .doks-collapse,.doks-toc-toggle:not(.collapsed) .doks-collapse{display:inline-block}.navbar-light .navbar-brand,.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:active{color:#1d2d35}.navbar-light .navbar-nav .active .nav-link{color:#5d2f86}.dropdown-divider{border-top:1px dashed #e9ecef}.dropdown-item:hover{background:#f8f9fa}.dropdown-item:active{color:inherit}.social-link{padding-left:0.5rem}@media (min-width: 768px){.social-link{padding-left:0}}@media (min-width: 992px){.social-link{padding-right:0.5rem;padding-left:0.5rem}}.docs-content>h2[id]::before,.docs-content>[id].h2::before,.docs-content>h3[id]::before,.docs-content>[id].h3::before,.docs-content>h4[id]::before,.docs-content>[id].h4::before{display:block;height:6rem;margin-top:-6rem;content:""}.anchor{visibility:hidden}h1:hover a,.h1:hover a,h2:hover a,.h2:hover a,h3:hover a,.h3:hover a,h4:hover a,.h4:hover a{visibility:visible;text-decoration:none}.card-list{margin-top:2.25rem}.page-footer-meta{margin-top:3rem}.edit-page,.last-modified{font-size:.875rem;margin-top:0.25rem;margin-bottom:0.25rem}@media (min-width: 768px){.edit-page,.last-modified{font-size:1rem;margin-top:0.75rem;margin-bottom:0.25rem}}.edit-page svg,.last-modified svg{margin-right:0.25rem;margin-bottom:0.25rem}p.meta{margin-top:0.5rem;font-size:1rem}.breadcrumb{margin-top:2.25rem;font-size:1rem}.page-link:hover{text-decoration:none}.home .card,.contributors.list .card,.blog.list .card,.blog.single .card,.categories.list .card,.tags.list .card{margin-top:2rem;margin-bottom:2rem;transition:transform 0.3s}.home .card:hover,.contributors.list .card:hover,.blog.list .card:hover,.blog.single .card:hover,.categories.list .card:hover,.tags.list .card:hover{transform:scale(1.025)}.contributors.list .card.card-terms:hover,.categories.list .card.card-terms:hover,.tags.list .card.card-terms:hover{transform:none}.home .card-body,.contributors.list .card-body,.blog.list .card-body,.blog.single .card-body,.categories.list .card-body,.tags.list .card-body{padding:0 2rem 1rem}.contributors.list .card-terms .card-body,.categories.list .card-terms .card-body,.tags.list .card-terms .card-body{padding:1rem}.blog-header{text-align:center;margin-bottom:2rem}.related-posts{margin-top:4rem}h2.section-title,.section-title.h2{margin-bottom:1.25rem}.docs-links,.docs-toc{scrollbar-width:thin;scrollbar-color:#fff #fff}.docs-links::-webkit-scrollbar,.docs-toc::-webkit-scrollbar{width:5px}.docs-links::-webkit-scrollbar-track,.docs-toc::-webkit-scrollbar-track{background:#fff}.docs-links::-webkit-scrollbar-thumb,.docs-toc::-webkit-scrollbar-thumb{background:#fff}.docs-links:hover,.docs-toc:hover{scrollbar-width:thin;scrollbar-color:#e9ecef #fff}.docs-links:hover::-webkit-scrollbar-thumb,.docs-toc:hover::-webkit-scrollbar-thumb{background:#e9ecef}.docs-links::-webkit-scrollbar-thumb:hover,.docs-toc::-webkit-scrollbar-thumb:hover{background:#e9ecef}.docs-links h3,.docs-links .h3,.page-links h3,.page-links .h3{text-transform:uppercase;font-size:1rem;margin:1.25rem 0 0.5rem;padding:1.5rem 0 0}@media (min-width: 992px){.docs-links h3,.docs-links .h3,.page-links h3,.page-links .h3{margin:1.125rem 1.5rem 0.75rem 0;padding:1.375rem 0 0}}.docs-links h3:not(:first-child),.docs-links .h3:not(:first-child){border-top:1px solid #e9ecef}a.docs-link{color:#1d2d35;display:block;padding:0.125rem 0;font-size:1rem}.page-links li{margin-top:0.375rem;padding-top:0.375rem}.page-links li ul li{border-top:none;padding-left:1rem;margin-top:0.125rem;padding-top:0.125rem}.page-links li:not(:first-child){border-top:1px dashed #e9ecef}.page-links a{color:#1d2d35;display:block;padding:0.125rem 0;font-size:.9375rem}.docs-link:hover,.docs-link.active,.page-links a:hover{text-decoration:none;color:#5d2f86}.nav-link.active,.dropdown-menu-main .dropdown-item.active,.docs-link.active{font-weight:500}.docs-links h3.sidebar-link,.docs-links .sidebar-link.h3,.page-links h3.sidebar-link,.page-links .sidebar-link.h3{text-transform:none;font-size:1.125rem;font-weight:normal}.docs-links h3.sidebar-link a,.docs-links .sidebar-link.h3 a,.page-links h3.sidebar-link a,.page-links .sidebar-link.h3 a{color:#1d2d35}.docs-links h3.sidebar-link a:hover,.docs-links .sidebar-link.h3 a:hover,.page-links h3.sidebar-link a:hover,.page-links .sidebar-link.h3 a:hover{text-decoration:underline} diff --git a/main.min.bfa65cedd6250da819d42442541d2515f4bc08872cc860fbda3fd95f9183125b3418e48c5ebfee53f1ec729b29ddd1ec7be9990ad33785624c81b9268ea2fe6b.js b/main.min.c4966a03e9ec0dcecee7eaa7d77d4fc0ee1a46b1ddf1d8b2bf83b8ff62213b9e1110153a8cc1526898ffc681cea3fa3d6be62dfd46c097dac1a4c238dd055e73.js similarity index 56% rename from main.min.bfa65cedd6250da819d42442541d2515f4bc08872cc860fbda3fd95f9183125b3418e48c5ebfee53f1ec729b29ddd1ec7be9990ad33785624c81b9268ea2fe6b.js rename to main.min.c4966a03e9ec0dcecee7eaa7d77d4fc0ee1a46b1ddf1d8b2bf83b8ff62213b9e1110153a8cc1526898ffc681cea3fa3d6be62dfd46c097dac1a4c238dd055e73.js index 027d2fb..ca3280d 100644 --- a/main.min.bfa65cedd6250da819d42442541d2515f4bc08872cc860fbda3fd95f9183125b3418e48c5ebfee53f1ec729b29ddd1ec7be9990ad33785624c81b9268ea2fe6b.js +++ b/main.min.c4966a03e9ec0dcecee7eaa7d77d4fc0ee1a46b1ddf1d8b2bf83b8ff62213b9e1110153a8cc1526898ffc681cea3fa3d6be62dfd46c097dac1a4c238dd055e73.js @@ -11,4 +11,4 @@ clipboard/dist/clipboard.js: instant.page/instantpage.js: (*! instant.page v5.2.0 - (C) 2019-2023 Alexandre Dieulot - https://instant.page/license *) -*/(()=>{var n=Object.create,e=Object.defineProperty,s=Object.getOwnPropertyDescriptor,t=Object.getOwnPropertyNames,o=Object.getPrototypeOf,i=Object.prototype.hasOwnProperty,a=(e,n)=>function(){return n||(0,e[t(e)[0]])((n={exports:{}}).exports,n),n.exports},r=(n,o,a,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let c of t(o))!i.call(n,c)&&c!==a&&e(n,c,{get:()=>o[c],enumerable:!(r=s(o,c))||r.enumerable});return n},c=(t,s,i)=>(i=t!=null?n(o(t)):{},r(s||!t||!t.__esModule?e(i,"default",{value:t,enumerable:!0}):i,t)),l=a({"node_modules/lazysizes/lazysizes.js"(e,t){(function(e,n){var s=n(e,e.document,Date);e.lazySizes=s,typeof t=="object"&&t.exports&&(t.exports=s)})(typeof window!="undefined"?window:{},function(t,n,s){"use strict";if(function(){var e,n={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",fastLoadedClass:"ls-is-cached",iframeLoadMode:0,srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:!0,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:!0,ricTimeout:0,throttleDelay:125};o=t.lazySizesConfig||t.lazysizesConfig||{};for(e in n)e in o||(o[e]=n[e])}(),!n||!n.getElementsByClassName)return{init:function(){},cfg:o,noSupport:!0};var o,r,l=n.documentElement,T=t.HTMLPictureElement,d="addEventListener",i="getAttribute",c=t[d].bind(t),a=t.setTimeout,E=t.requestAnimationFrame||a,j=t.requestIdleCallback,C=/^picture$/i,F=["load","error","lazyincluded","_lazyloaded"],b={},S=Array.prototype.forEach,u=function(e,t){return b[t]||(b[t]=new RegExp("(\\s|^)"+t+"(\\s|$)")),b[t].test(e[i]("class")||"")&&b[t]},h=function(e,t){u(e,t)||e.setAttribute("class",(e[i]("class")||"").trim()+" "+t)},y=function(e,t){var n;(n=u(e,t))&&e.setAttribute("class",(e[i]("class")||"").replace(n," "))},_=function(e,t,n){var s=n?d:"removeEventListener";n&&_(e,t),F.forEach(function(n){e[s](n,t)})},p=function(e,t,s,o,i){var a=n.createEvent("Event");return s||(s={}),s.instance=r,a.initEvent(t,!o,!i),a.detail=s,e.dispatchEvent(a),a},O=function(e,n){var s;!T&&(s=t.picturefill||o.pf)?(n&&n.src&&!e[i]("srcset")&&e.setAttribute("srcset",n.src),s({reevaluate:!0,elements:[e]})):n&&n.src&&(e.src=n.src)},f=function(e,t){return(getComputedStyle(e,null)||{})[t]},x=function(e,t,n){for(n=n||e.offsetWidth;n49?function(){j(r,{timeout:t}),t!==o.ricTimeout&&(t=o.ricTimeout)}:g(function(){a(r)},!0);return function(e){var o;if((e=e===!0)&&(t=33),n)return;n=!0,o=l-(s.now()-i),o<0&&(o=0),e||o<9?c():a(c,o)}},k=function(e){var t,o,n=99,i=function(){t=null,e()},r=function(){var e=s.now()-o;e0,i&&f(s,"overflow")!="visible"&&(o=s.getBoundingClientRect(),i=D>o.left&&zo.top-1&&T500&&l.clientWidth>500?500:370:o.expand,r._defEx=c,f=c*o.expFactor,p=o.hFac,P=null,j2&&A>2&&!n.hidden?(j=f,b=0):A>1&&b>1&&v<6?j=c:j=Q),g!==s&&(V=innerWidth+s*p,q=innerHeight+s,h=s*-1,g=s),a=t[e].getBoundingClientRect(),(N=a.bottom)>=h&&(T=a.top)<=q&&(D=a.right)>=h*p&&(z=a.left)<=V&&(N||D||z||T)&&(o.loadHidden||U(t[e]))&&(x&&v<3&&!u&&(A<3||b<4)||se(t[e],s))){if(F(t[e]),m=!0,v>9)break}else!m&&x&&!d&&v<4&&b<4&&A>2&&(R[0]||o.preloadAfterLoad)&&(R[0]||!u&&(N||D||z||T||t[e][i](o.sizesAttr)!="auto"))&&(d=R[0]||t[e])}d&&!m&&F(d)}},e=M(H),I=function(e){var t=e.target;if(t._lazyCache){delete t._lazyCache;return}$(e),h(t,o.loadedClass),y(t,o.loadingClass),_(t,Y),p(t,"lazyloaded")},X=g(I),Y=function(e){X({target:e.target})},Z=function(e,t){var n=e.getAttribute("data-load-mode")||o.iframeLoadMode;n==0?e.contentWindow.location.replace(t):n==1&&(e.src=t)},J=function(e){var t,n=e[i](o.srcsetAttr);(t=o.customMedia[e[i]("data-media")||e[i]("media")])&&e.setAttribute("media",t),n&&e.setAttribute("srcset",n)},ee=g(function(e,t,n,s,r){var c,l,d,u,f,g;(f=p(e,"lazybeforeunveil",t)).defaultPrevented||(s&&(n?h(e,o.autosizesClass):e.setAttribute("sizes",s)),l=e[i](o.srcsetAttr),c=e[i](o.srcAttr),r&&(u=e.parentNode,d=u&&C.test(u.nodeName||"")),g=t.firesLoad||"src"in e&&(l||c||d),f={target:e},h(e,o.loadingClass),g&&(clearTimeout(B),B=a($,2500),_(e,Y,!0)),d&&S.call(u.getElementsByTagName("source"),J),l?e.setAttribute("srcset",l):c&&!d&&(G.test(e.nodeName)?Z(e,c):e.src=c),r&&(l||d)&&O(e,{src:c})),e._lazyRace&&delete e._lazyRace,y(e,o.lazyClass),m(function(){var t=e.complete&&e.naturalWidth>1;(!g||t)&&(t&&h(e,o.fastLoadedClass),I(f),e._lazyCache=!0,a(function(){"_lazyCache"in e&&delete e._lazyCache},9)),e.loading=="lazy"&&v--},!0)}),F=function(e){if(e._lazyRace)return;var s,t=te.test(e.nodeName),a=t&&(e[i](o.sizesAttr)||e[i]("sizes")),n=a=="auto";if((n||!x)&&t&&(e[i]("src")||e.srcset)&&!e.complete&&!u(e,o.errorClass)&&u(e,o.lazyClass))return;s=p(e,"lazyunveilread").detail,n&&w.updateElem(e,!0,e.offsetWidth),e._lazyRace=!0,v++,ee(e,s,n,a,t)},ne=k(function(){o.loadMode=3,e()}),K=function(){o.loadMode==3&&(o.loadMode=2),ne()},L=function(){if(x)return;if(s.now()-W<999){a(L,999);return}x=!0,o.loadMode=3,e(),c("scroll",K,!0)};return{_:function(){W=s.now(),r.elements=n.getElementsByClassName(o.lazyClass),R=n.getElementsByClassName(o.lazyClass+" "+o.preloadClass),c("scroll",e,!0),c("resize",e,!0),c("pageshow",function(e){if(e.persisted){var t=n.querySelectorAll("."+o.loadingClass);t.length&&t.forEach&&E(function(){t.forEach(function(e){e.complete&&F(e)})})}}),t.MutationObserver?new MutationObserver(e).observe(l,{childList:!0,subtree:!0,attributes:!0}):(l[d]("DOMNodeInserted",e,!0),l[d]("DOMAttrModified",e,!0),setInterval(e,999)),c("hashchange",e,!0),["focus","mouseover","click","load","transitionend","animationend"].forEach(function(t){n[d](t,e,!0)}),/d$|^c/.test(n.readyState)?L():(c("load",L),n[d]("DOMContentLoaded",e),a(L,2e4)),r.elements.length?(H(),m._lsFlush()):e()},checkElems:e,unveil:F,_aLSL:K}}(),w=function(){var e,i=g(function(e,t,n,s){var o,i,a;if(e._lazysizesWidth=s,s+="px",e.setAttribute("sizes",s),C.test(t.nodeName||"")){i=t.getElementsByTagName("source");for(o=0,a=i.length;o{var e,t,n,a,f=Object.create,o=Object.defineProperty,p=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,r=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty,h=(e,t)=>function(){return t||(0,e[i(e)[0]])((t={exports:{}}).exports,t),t.exports},u=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of i(t))!m.call(e,a)&&a!==n&&o(e,a,{get:()=>t[a],enumerable:!(s=p(t,a))||s.enumerable});return e},c=(e,t,n)=>(n=e!=null?f(r(e)):{},u(t||!e||!e.__esModule?o(n,"default",{value:e,enumerable:!0}):n,e)),l=h({"node_modules/clipboard/dist/clipboard.js"(e,t){(function(s,o){typeof e=="object"&&typeof t=="object"?t.exports=o():typeof define=="function"&&define.amd?define([],o):typeof e=="object"?e.ClipboardJS=o():s.ClipboardJS=o()})(e,function(){return function(){var n={686:function(e,t,n){"use strict";n.d(t,{default:function(){return p}});var a,r,h,m,p,g,v,b,j,F=n(279),M=n.n(F),S=n(370),x=n.n(S),w=n(817),d=n.n(w);function u(e){try{return document.execCommand(e)}catch{return!1}}m=function(t){var n=d()(t);return u("cut"),n},h=m;function T(e){var n,s=document.documentElement.getAttribute("dir")==="rtl",t=document.createElement("textarea");return t.style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[s?"right":"left"]="-9999px",n=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(n,"px"),t.setAttribute("readonly",""),t.value=e,t}r=function(t,n){var o,s=T(t);return n.container.appendChild(s),o=d()(s),u("copy"),s.remove(),o},j=function(t){var s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},n="";return typeof t=="string"?n=r(t,s):t instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(t?.type)?n=r(t.value,s):(n=d()(t),u("copy")),n},a=j;function i(e){return"@babel/helpers - typeof",typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?i=function(t){return typeof t}:i=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(e)}v=function(){var s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},o=s.action,n=o===void 0?"copy":o,r=s.container,t=s.target,c=s.text;if(n!=="copy"&&n!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(t!==void 0)if(t&&i(t)==="object"&&t.nodeType===1){{if(n==="copy"&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(n==="cut"&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}}else throw new Error('Invalid "target" value, use a valid Element');if(c)return a(c,{container:r});if(t)return n==="cut"?h(t):a(t,{container:r})},b=v;function s(e){return"@babel/helpers - typeof",typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?s=function(t){return typeof t}:s=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(e)}function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(e,t){for(var n,s=0;s0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof t.action=="function"?t.action:this.defaultAction,this.target=typeof t.target=="function"?t.target:this.defaultTarget,this.text=typeof t.text=="function"?t.text:this.defaultText,this.container=s(t.container)==="object"?t.container:document.body}},{key:"listenClick",value:function(t){var n=this;this.listener=x()(t,"click",function(e){return n.onClick(e)})}},{key:"onClick",value:function(t){var n=t.delegateTarget||t.currentTarget,s=this.action(n)||"copy",o=b({action:s,container:this.container,target:this.target(n),text:this.text(n)});this.emit(o?"success":"error",{action:s,text:o,trigger:n,clearSelection:function(){n&&n.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(t){return c("action",t)}},{key:"defaultTarget",value:function(t){var n=c("target",t);if(n)return document.querySelector(n)}},{key:"defaultText",value:function(t){return c("text",t)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return a(t,n)}},{key:"cut",value:function(t){return h(t)}},{key:"isSupported",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],s=typeof t=="string"?[t]:t,n=!!document.queryCommandSupported;return s.forEach(function(e){n=n&&!!document.queryCommandSupported(e)}),n}}]),t}(M()),p=g},828:function(e){var t,n=9;typeof Element!="undefined"&&!Element.prototype.matches&&(t=Element.prototype,t.matches=t.matchesSelector||t.mozMatchesSelector||t.msMatchesSelector||t.oMatchesSelector||t.webkitMatchesSelector);function s(e,t){for(;e&&e.nodeType!==n;){if(typeof e.matches=="function"&&e.matches(t))return e;e=e.parentNode}}e.exports=s},438:function(e,t,n){var o=n(828);function s(e,t,n,s,o){var i=a.apply(this,arguments);return e.addEventListener(n,i,o),{destroy:function(){e.removeEventListener(n,i,o)}}}function i(e,t,n,o,i){return typeof e.addEventListener=="function"?s.apply(null,arguments):typeof n=="function"?s.bind(null,document).apply(null,arguments):(typeof e=="string"&&(e=document.querySelectorAll(e)),Array.prototype.map.call(e,function(e){return s(e,t,n,o,i)}))}function a(e,t,n,s){return function(n){n.delegateTarget=o(n.target,t),n.delegateTarget&&s.call(e,n)}}e.exports=i},879:function(e,t){t.node=function(e){return e!==void 0&&e instanceof HTMLElement&&e.nodeType===1},t.nodeList=function(e){var n=Object.prototype.toString.call(e);return e!==void 0&&(n==="[object NodeList]"||n==="[object HTMLCollection]")&&"length"in e&&(e.length===0||t.node(e[0]))},t.string=function(e){return typeof e=="string"||e instanceof String},t.fn=function(e){var t=Object.prototype.toString.call(e);return t==="[object Function]"}},370:function(e,t,n){var s=n(879),o=n(438);function i(e,t,n){if(!e&&!t&&!n)throw new Error("Missing required arguments");if(!s.string(t))throw new TypeError("Second argument must be a String");if(!s.fn(n))throw new TypeError("Third argument must be a Function");if(s.node(e))return a(e,t,n);if(s.nodeList(e))return r(e,t,n);if(s.string(e))return c(e,t,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function a(e,t,n){return e.addEventListener(t,n),{destroy:function(){e.removeEventListener(t,n)}}}function r(e,t,n){return Array.prototype.forEach.call(e,function(e){e.addEventListener(t,n)}),{destroy:function(){Array.prototype.forEach.call(e,function(e){e.removeEventListener(t,n)})}}}function c(e,t,n){return o(document.body,e,t,n)}e.exports=i},817:function(e){function t(e){if(e.nodeName==="SELECT")e.focus(),t=e.value;else if(e.nodeName==="INPUT"||e.nodeName==="TEXTAREA"){var t,n,s,o=e.hasAttribute("readonly");o||e.setAttribute("readonly",""),e.select(),e.setSelectionRange(0,e.value.length),o||e.removeAttribute("readonly"),t=e.value}else e.hasAttribute("contenteditable")&&e.focus(),n=window.getSelection(),s=document.createRange(),s.selectNodeContents(e),n.removeAllRanges(),n.addRange(s),t=n.toString();return t}e.exports=t},279:function(e){function t(){}t.prototype={on:function(e,t,n){var s=this.e||(this.e={});return(s[e]||(s[e]=[])).push({fn:t,ctx:n}),this},once:function(e,t,n){var o=this;function s(){o.off(e,s),t.apply(n,arguments)}return s._=t,this.on(e,s,n)},emit:function(e){var s=[].slice.call(arguments,1),n=((this.e||(this.e={}))[e]||[]).slice(),t=0,o=n.length;for(t;t');t=new d.default(".btn-copy",{target:function(e){return e.nextElementSibling}}),t.on("success",function(e){e.clearSelection()}),t.on("error",function(e){console.error("Action:",e.action),console.error("Trigger:",e.trigger)})})(),(()=>{var e,o,c,l,d,s=null,a=65,r=new Set,i=1111;u();function u(){const v=document.createElement("link").relList.supports("prefetch");if(!v)return;const b="instantVaryAccept"in document.body.dataset||"Shopify"in window,i=navigator.userAgent.indexOf("Chrome/");if(i>-1&&(s=parseInt(navigator.userAgent.substring(i+"Chrome/".length))),b&&s&&s<110)return;const r="instantMousedownShortcut"in document.body.dataset;d="instantAllowQueryString"in document.body.dataset,l="instantAllowExternalLinks"in document.body.dataset,c="instantWhitelist"in document.body.dataset;const e={capture:!0,passive:!0};let u=!1,p=!1,o=!1;if("instantIntensity"in document.body.dataset){const e=document.body.dataset.instantIntensity;if(e.startsWith("mousedown"))u=!0,e=="mousedown-only"&&(p=!0);else if(e.startsWith("viewport")){const t=navigator.connection&&navigator.connection.saveData,n=navigator.connection&&navigator.connection.effectiveType&&navigator.connection.effectiveType.includes("2g");!t&&!n&&(e=="viewport"?document.documentElement.clientWidth*document.documentElement.clientHeight<45e4&&(o=!0):e=="viewport-all"&&(o=!0))}else{const t=parseInt(e);isNaN(t)||(a=t)}}if(p||document.addEventListener("touchstart",h,e),u?r||document.addEventListener("mousedown",f,e):document.addEventListener("mouseover",m,e),r&&document.addEventListener("mousedown",g,e),o){let e=window.requestIdleCallback;e||(e=e=>{e()}),e(function(){const s=new IntersectionObserver(e=>{e.forEach(e=>{if(e.isIntersecting){const n=e.target;s.unobserve(n),t(n.href)}})});document.querySelectorAll("a").forEach(e=>{n(e)&&s.observe(e)})},{timeout:1500})}}function h(e){o=performance.now();const s=e.target.closest("a");if(!n(s))return;t(s.href,"high")}function m(s){if(performance.now()-o{t(r.href,"high"),e=void 0},a)}function f(e){const s=e.target.closest("a");if(!n(s))return;t(s.href,"high")}function p(t){if(t.relatedTarget&&t.target.closest("a")==t.relatedTarget.closest("a"))return;e&&(clearTimeout(e),e=void 0)}function g(e){if(performance.now()-o1||e.metaKey||e.ctrlKey)return;if(!t)return;t.addEventListener("click",function(e){if(e.detail==1337)return;e.preventDefault()},{capture:!0,passive:!1,once:!0});const n=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1,detail:1337});t.dispatchEvent(n)}function n(e){if(!e||!e.href)return;if(c&&!("instant"in e.dataset))return;if(e.origin!=location.origin){let t=l||"instant"in e.dataset;if(!t||!s)return}if(!["http:","https:"].includes(e.protocol))return;if(e.protocol=="http:"&&location.protocol=="https:")return;if(!d&&e.search&&!("instant"in e.dataset))return;if(e.hash&&e.pathname+e.search==location.pathname+location.search)return;if("noInstant"in e.dataset)return;return!0}function t(e,t="auto"){if(r.has(e))return;const n=document.createElement("link");n.rel="prefetch",n.href=e,n.fetchPriority=t,n.as="document",document.head.appendChild(n),r.add(e)}})(),function e(t){"use strict";try{module&&(t=module)}catch{}t._factory=e;function b(e){return"undefined"==typeof e||e}function S(e){const t=Array(e);for(let s=0;s=this.B&&(m||!d[p])){var i,r,l,a=y(h,o,g),c="";switch(this.G){case"full":if(2a;i--)i-a>=this.B&&(l=y(h,o,g,r,a),c=p.substring(a,i),u(this,d,c,l,e,s));break}case"reverse":if(1=this.B&&u(this,d,c,y(h,o,g,r,i),e,s);c=""}case"forward":if(1=this.B&&u(this,d,c,a,e,s);break}default:if(this.C&&(a=Math.min(a/this.C(t,p,g)|0,h-1)),u(this,d,p,a,e,s),m&&1=this.B&&!r[p]){r[p]=1;const t=this.l&&p>a;u(this,f,t?a:p,y(c+(o/2>c?0:1),o,g,i-1,l-1),e,s,t?p:a)}}}}this.m||(this.register[e]=1)}}return this};function y(e,t,n,s,o){return n&&1=this.B&&!s[t])if(this.s||r||this.map[t])l[a++]=t,s[t]=1;else return i;e=l,o=e.length}if(!o)return i;t||(t=100),c=this.depth&&1=s))))break;if(n){if(i)return z(l,s,0);t[t.length]=l;return}}return!n&&l}function z(e,t,n){return e=1===e.length?e[0]:[].concat.apply([],e),n||e.length>t?e.slice(n,n+t):e}function D(e,t,n,s){return n?(s=s&&t>n,e=(e=e[s?t:n])&&e[s?n:t]):e=e[t],e}s.contain=function(e){return!!this.register[e]},s.update=function(e,t){return this.remove(e).add(e,t)},s.remove=function(e,t){const n=this.register[e];if(n){if(this.m)for(let t=0,s;tt||n)&&(o=o.slice(n,n+t)),s&&(o=q.call(this,o)),{tag:e,result:o}}function q(e){const t=Array(e.length);for(let n=0,s;n{var e=document.getElementById("mode");e!==null&&(window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{e.matches?(localStorage.setItem("theme","dark"),document.documentElement.setAttribute("data-dark-mode","")):(localStorage.setItem("theme","light"),document.documentElement.removeAttribute("data-dark-mode"))}),e.addEventListener("click",()=>{document.documentElement.toggleAttribute("data-dark-mode"),localStorage.setItem("theme",document.documentElement.hasAttribute("data-dark-mode")?"dark":"light")}),localStorage.getItem("theme")==="dark"?document.documentElement.setAttribute("data-dark-mode",""):document.documentElement.removeAttribute("data-dark-mode"))})(),(()=>{if(document.querySelector("#sidebar-default")!==null){let e=document.getElementById("sidebar-default"),t=sessionStorage.getItem("sidebar-scroll");t!==null&&(e.scrollTop=parseInt(t,10)),window.addEventListener("beforeunload",()=>{sessionStorage.setItem("sidebar-scroll",e.scrollTop)})}})(),(()=>{var e=document.getElementById("toTop");e!==null&&(e.style.display="none",window.onscroll=function(){t()});function t(){document.body.scrollTop>40||document.documentElement.scrollTop>40?e.style.display="block":e.style.display="none"}})() \ No newline at end of file +*/(()=>{var n=Object.create,e=Object.defineProperty,s=Object.getOwnPropertyDescriptor,t=Object.getOwnPropertyNames,o=Object.getPrototypeOf,i=Object.prototype.hasOwnProperty,a=(e,n)=>function(){return n||(0,e[t(e)[0]])((n={exports:{}}).exports,n),n.exports},r=(n,o,a,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let c of t(o))!i.call(n,c)&&c!==a&&e(n,c,{get:()=>o[c],enumerable:!(r=s(o,c))||r.enumerable});return n},c=(t,s,i)=>(i=t!=null?n(o(t)):{},r(s||!t||!t.__esModule?e(i,"default",{value:t,enumerable:!0}):i,t)),l=a({"node_modules/lazysizes/lazysizes.js"(e,t){(function(e,n){var s=n(e,e.document,Date);e.lazySizes=s,typeof t=="object"&&t.exports&&(t.exports=s)})(typeof window!="undefined"?window:{},function(t,n,s){"use strict";if(function(){var e,n={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",fastLoadedClass:"ls-is-cached",iframeLoadMode:0,srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:!0,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:!0,ricTimeout:0,throttleDelay:125};o=t.lazySizesConfig||t.lazysizesConfig||{};for(e in n)e in o||(o[e]=n[e])}(),!n||!n.getElementsByClassName)return{init:function(){},cfg:o,noSupport:!0};var o,r,l=n.documentElement,T=t.HTMLPictureElement,d="addEventListener",i="getAttribute",c=t[d].bind(t),a=t.setTimeout,E=t.requestAnimationFrame||a,j=t.requestIdleCallback,C=/^picture$/i,F=["load","error","lazyincluded","_lazyloaded"],b={},S=Array.prototype.forEach,u=function(e,t){return b[t]||(b[t]=new RegExp("(\\s|^)"+t+"(\\s|$)")),b[t].test(e[i]("class")||"")&&b[t]},h=function(e,t){u(e,t)||e.setAttribute("class",(e[i]("class")||"").trim()+" "+t)},y=function(e,t){var n;(n=u(e,t))&&e.setAttribute("class",(e[i]("class")||"").replace(n," "))},_=function(e,t,n){var s=n?d:"removeEventListener";n&&_(e,t),F.forEach(function(n){e[s](n,t)})},p=function(e,t,s,o,i){var a=n.createEvent("Event");return s||(s={}),s.instance=r,a.initEvent(t,!o,!i),a.detail=s,e.dispatchEvent(a),a},O=function(e,n){var s;!T&&(s=t.picturefill||o.pf)?(n&&n.src&&!e[i]("srcset")&&e.setAttribute("srcset",n.src),s({reevaluate:!0,elements:[e]})):n&&n.src&&(e.src=n.src)},f=function(e,t){return(getComputedStyle(e,null)||{})[t]},x=function(e,t,n){for(n=n||e.offsetWidth;n49?function(){j(r,{timeout:t}),t!==o.ricTimeout&&(t=o.ricTimeout)}:g(function(){a(r)},!0);return function(e){var o;if((e=e===!0)&&(t=33),n)return;n=!0,o=l-(s.now()-i),o<0&&(o=0),e||o<9?c():a(c,o)}},k=function(e){var t,o,n=99,i=function(){t=null,e()},r=function(){var e=s.now()-o;e0,i&&f(s,"overflow")!="visible"&&(o=s.getBoundingClientRect(),i=D>o.left&&zo.top-1&&T500&&l.clientWidth>500?500:370:o.expand,r._defEx=c,f=c*o.expFactor,p=o.hFac,P=null,j2&&A>2&&!n.hidden?(j=f,b=0):A>1&&b>1&&v<6?j=c:j=Q),g!==s&&(V=innerWidth+s*p,q=innerHeight+s,h=s*-1,g=s),a=t[e].getBoundingClientRect(),(N=a.bottom)>=h&&(T=a.top)<=q&&(D=a.right)>=h*p&&(z=a.left)<=V&&(N||D||z||T)&&(o.loadHidden||U(t[e]))&&(x&&v<3&&!u&&(A<3||b<4)||se(t[e],s))){if(F(t[e]),m=!0,v>9)break}else!m&&x&&!d&&v<4&&b<4&&A>2&&(R[0]||o.preloadAfterLoad)&&(R[0]||!u&&(N||D||z||T||t[e][i](o.sizesAttr)!="auto"))&&(d=R[0]||t[e])}d&&!m&&F(d)}},e=M(H),I=function(e){var t=e.target;if(t._lazyCache){delete t._lazyCache;return}$(e),h(t,o.loadedClass),y(t,o.loadingClass),_(t,Y),p(t,"lazyloaded")},X=g(I),Y=function(e){X({target:e.target})},Z=function(e,t){var n=e.getAttribute("data-load-mode")||o.iframeLoadMode;n==0?e.contentWindow.location.replace(t):n==1&&(e.src=t)},J=function(e){var t,n=e[i](o.srcsetAttr);(t=o.customMedia[e[i]("data-media")||e[i]("media")])&&e.setAttribute("media",t),n&&e.setAttribute("srcset",n)},ee=g(function(e,t,n,s,r){var c,l,d,u,f,g;(f=p(e,"lazybeforeunveil",t)).defaultPrevented||(s&&(n?h(e,o.autosizesClass):e.setAttribute("sizes",s)),l=e[i](o.srcsetAttr),c=e[i](o.srcAttr),r&&(u=e.parentNode,d=u&&C.test(u.nodeName||"")),g=t.firesLoad||"src"in e&&(l||c||d),f={target:e},h(e,o.loadingClass),g&&(clearTimeout(B),B=a($,2500),_(e,Y,!0)),d&&S.call(u.getElementsByTagName("source"),J),l?e.setAttribute("srcset",l):c&&!d&&(G.test(e.nodeName)?Z(e,c):e.src=c),r&&(l||d)&&O(e,{src:c})),e._lazyRace&&delete e._lazyRace,y(e,o.lazyClass),m(function(){var t=e.complete&&e.naturalWidth>1;(!g||t)&&(t&&h(e,o.fastLoadedClass),I(f),e._lazyCache=!0,a(function(){"_lazyCache"in e&&delete e._lazyCache},9)),e.loading=="lazy"&&v--},!0)}),F=function(e){if(e._lazyRace)return;var s,t=te.test(e.nodeName),a=t&&(e[i](o.sizesAttr)||e[i]("sizes")),n=a=="auto";if((n||!x)&&t&&(e[i]("src")||e.srcset)&&!e.complete&&!u(e,o.errorClass)&&u(e,o.lazyClass))return;s=p(e,"lazyunveilread").detail,n&&w.updateElem(e,!0,e.offsetWidth),e._lazyRace=!0,v++,ee(e,s,n,a,t)},ne=k(function(){o.loadMode=3,e()}),K=function(){o.loadMode==3&&(o.loadMode=2),ne()},L=function(){if(x)return;if(s.now()-W<999){a(L,999);return}x=!0,o.loadMode=3,e(),c("scroll",K,!0)};return{_:function(){W=s.now(),r.elements=n.getElementsByClassName(o.lazyClass),R=n.getElementsByClassName(o.lazyClass+" "+o.preloadClass),c("scroll",e,!0),c("resize",e,!0),c("pageshow",function(e){if(e.persisted){var t=n.querySelectorAll("."+o.loadingClass);t.length&&t.forEach&&E(function(){t.forEach(function(e){e.complete&&F(e)})})}}),t.MutationObserver?new MutationObserver(e).observe(l,{childList:!0,subtree:!0,attributes:!0}):(l[d]("DOMNodeInserted",e,!0),l[d]("DOMAttrModified",e,!0),setInterval(e,999)),c("hashchange",e,!0),["focus","mouseover","click","load","transitionend","animationend"].forEach(function(t){n[d](t,e,!0)}),/d$|^c/.test(n.readyState)?L():(c("load",L),n[d]("DOMContentLoaded",e),a(L,2e4)),r.elements.length?(H(),m._lsFlush()):e()},checkElems:e,unveil:F,_aLSL:K}}(),w=function(){var e,i=g(function(e,t,n,s){var o,i,a;if(e._lazysizesWidth=s,s+="px",e.setAttribute("sizes",s),C.test(t.nodeName||"")){i=t.getElementsByTagName("source");for(o=0,a=i.length;o{var e,t,n,a,f=Object.create,o=Object.defineProperty,p=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,r=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty,h=(e,t)=>function(){return t||(0,e[i(e)[0]])((t={exports:{}}).exports,t),t.exports},u=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of i(t))!m.call(e,a)&&a!==n&&o(e,a,{get:()=>t[a],enumerable:!(s=p(t,a))||s.enumerable});return e},c=(e,t,n)=>(n=e!=null?f(r(e)):{},u(t||!e||!e.__esModule?o(n,"default",{value:e,enumerable:!0}):n,e)),l=h({"node_modules/clipboard/dist/clipboard.js"(e,t){(function(s,o){typeof e=="object"&&typeof t=="object"?t.exports=o():typeof define=="function"&&define.amd?define([],o):typeof e=="object"?e.ClipboardJS=o():s.ClipboardJS=o()})(e,function(){return function(){var n={686:function(e,t,n){"use strict";n.d(t,{default:function(){return p}});var a,r,h,m,p,g,v,b,j,F=n(279),M=n.n(F),S=n(370),x=n.n(S),w=n(817),d=n.n(w);function u(e){try{return document.execCommand(e)}catch{return!1}}m=function(t){var n=d()(t);return u("cut"),n},h=m;function T(e){var n,s=document.documentElement.getAttribute("dir")==="rtl",t=document.createElement("textarea");return t.style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[s?"right":"left"]="-9999px",n=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(n,"px"),t.setAttribute("readonly",""),t.value=e,t}r=function(t,n){var o,s=T(t);return n.container.appendChild(s),o=d()(s),u("copy"),s.remove(),o},j=function(t){var s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},n="";return typeof t=="string"?n=r(t,s):t instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(t?.type)?n=r(t.value,s):(n=d()(t),u("copy")),n},a=j;function i(e){return"@babel/helpers - typeof",typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?i=function(t){return typeof t}:i=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(e)}v=function(){var s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},o=s.action,n=o===void 0?"copy":o,r=s.container,t=s.target,c=s.text;if(n!=="copy"&&n!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(t!==void 0)if(t&&i(t)==="object"&&t.nodeType===1){{if(n==="copy"&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(n==="cut"&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}}else throw new Error('Invalid "target" value, use a valid Element');if(c)return a(c,{container:r});if(t)return n==="cut"?h(t):a(t,{container:r})},b=v;function s(e){return"@babel/helpers - typeof",typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?s=function(t){return typeof t}:s=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(e)}function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(e,t){for(var n,s=0;s0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof t.action=="function"?t.action:this.defaultAction,this.target=typeof t.target=="function"?t.target:this.defaultTarget,this.text=typeof t.text=="function"?t.text:this.defaultText,this.container=s(t.container)==="object"?t.container:document.body}},{key:"listenClick",value:function(t){var n=this;this.listener=x()(t,"click",function(e){return n.onClick(e)})}},{key:"onClick",value:function(t){var n=t.delegateTarget||t.currentTarget,s=this.action(n)||"copy",o=b({action:s,container:this.container,target:this.target(n),text:this.text(n)});this.emit(o?"success":"error",{action:s,text:o,trigger:n,clearSelection:function(){n&&n.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(t){return c("action",t)}},{key:"defaultTarget",value:function(t){var n=c("target",t);if(n)return document.querySelector(n)}},{key:"defaultText",value:function(t){return c("text",t)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return a(t,n)}},{key:"cut",value:function(t){return h(t)}},{key:"isSupported",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],s=typeof t=="string"?[t]:t,n=!!document.queryCommandSupported;return s.forEach(function(e){n=n&&!!document.queryCommandSupported(e)}),n}}]),t}(M()),p=g},828:function(e){var t,n=9;typeof Element!="undefined"&&!Element.prototype.matches&&(t=Element.prototype,t.matches=t.matchesSelector||t.mozMatchesSelector||t.msMatchesSelector||t.oMatchesSelector||t.webkitMatchesSelector);function s(e,t){for(;e&&e.nodeType!==n;){if(typeof e.matches=="function"&&e.matches(t))return e;e=e.parentNode}}e.exports=s},438:function(e,t,n){var o=n(828);function s(e,t,n,s,o){var i=a.apply(this,arguments);return e.addEventListener(n,i,o),{destroy:function(){e.removeEventListener(n,i,o)}}}function i(e,t,n,o,i){return typeof e.addEventListener=="function"?s.apply(null,arguments):typeof n=="function"?s.bind(null,document).apply(null,arguments):(typeof e=="string"&&(e=document.querySelectorAll(e)),Array.prototype.map.call(e,function(e){return s(e,t,n,o,i)}))}function a(e,t,n,s){return function(n){n.delegateTarget=o(n.target,t),n.delegateTarget&&s.call(e,n)}}e.exports=i},879:function(e,t){t.node=function(e){return e!==void 0&&e instanceof HTMLElement&&e.nodeType===1},t.nodeList=function(e){var n=Object.prototype.toString.call(e);return e!==void 0&&(n==="[object NodeList]"||n==="[object HTMLCollection]")&&"length"in e&&(e.length===0||t.node(e[0]))},t.string=function(e){return typeof e=="string"||e instanceof String},t.fn=function(e){var t=Object.prototype.toString.call(e);return t==="[object Function]"}},370:function(e,t,n){var s=n(879),o=n(438);function i(e,t,n){if(!e&&!t&&!n)throw new Error("Missing required arguments");if(!s.string(t))throw new TypeError("Second argument must be a String");if(!s.fn(n))throw new TypeError("Third argument must be a Function");if(s.node(e))return a(e,t,n);if(s.nodeList(e))return r(e,t,n);if(s.string(e))return c(e,t,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function a(e,t,n){return e.addEventListener(t,n),{destroy:function(){e.removeEventListener(t,n)}}}function r(e,t,n){return Array.prototype.forEach.call(e,function(e){e.addEventListener(t,n)}),{destroy:function(){Array.prototype.forEach.call(e,function(e){e.removeEventListener(t,n)})}}}function c(e,t,n){return o(document.body,e,t,n)}e.exports=i},817:function(e){function t(e){if(e.nodeName==="SELECT")e.focus(),t=e.value;else if(e.nodeName==="INPUT"||e.nodeName==="TEXTAREA"){var t,n,s,o=e.hasAttribute("readonly");o||e.setAttribute("readonly",""),e.select(),e.setSelectionRange(0,e.value.length),o||e.removeAttribute("readonly"),t=e.value}else e.hasAttribute("contenteditable")&&e.focus(),n=window.getSelection(),s=document.createRange(),s.selectNodeContents(e),n.removeAllRanges(),n.addRange(s),t=n.toString();return t}e.exports=t},279:function(e){function t(){}t.prototype={on:function(e,t,n){var s=this.e||(this.e={});return(s[e]||(s[e]=[])).push({fn:t,ctx:n}),this},once:function(e,t,n){var o=this;function s(){o.off(e,s),t.apply(n,arguments)}return s._=t,this.on(e,s,n)},emit:function(e){var s=[].slice.call(arguments,1),n=((this.e||(this.e={}))[e]||[]).slice(),t=0,o=n.length;for(t;t');t=new d.default(".btn-copy",{target:function(e){return e.nextElementSibling}}),t.on("success",function(e){e.clearSelection()}),t.on("error",function(e){console.error("Action:",e.action),console.error("Trigger:",e.trigger)})})(),(()=>{var e,o,c,l,d,s=null,a=65,r=new Set,i=1111;u();function u(){const v=document.createElement("link").relList.supports("prefetch");if(!v)return;const b="instantVaryAccept"in document.body.dataset||"Shopify"in window,i=navigator.userAgent.indexOf("Chrome/");if(i>-1&&(s=parseInt(navigator.userAgent.substring(i+"Chrome/".length))),b&&s&&s<110)return;const r="instantMousedownShortcut"in document.body.dataset;d="instantAllowQueryString"in document.body.dataset,l="instantAllowExternalLinks"in document.body.dataset,c="instantWhitelist"in document.body.dataset;const e={capture:!0,passive:!0};let u=!1,p=!1,o=!1;if("instantIntensity"in document.body.dataset){const e=document.body.dataset.instantIntensity;if(e.startsWith("mousedown"))u=!0,e=="mousedown-only"&&(p=!0);else if(e.startsWith("viewport")){const t=navigator.connection&&navigator.connection.saveData,n=navigator.connection&&navigator.connection.effectiveType&&navigator.connection.effectiveType.includes("2g");!t&&!n&&(e=="viewport"?document.documentElement.clientWidth*document.documentElement.clientHeight<45e4&&(o=!0):e=="viewport-all"&&(o=!0))}else{const t=parseInt(e);isNaN(t)||(a=t)}}if(p||document.addEventListener("touchstart",h,e),u?r||document.addEventListener("mousedown",f,e):document.addEventListener("mouseover",m,e),r&&document.addEventListener("mousedown",g,e),o){let e=window.requestIdleCallback;e||(e=e=>{e()}),e(function(){const s=new IntersectionObserver(e=>{e.forEach(e=>{if(e.isIntersecting){const n=e.target;s.unobserve(n),t(n.href)}})});document.querySelectorAll("a").forEach(e=>{n(e)&&s.observe(e)})},{timeout:1500})}}function h(e){o=performance.now();const s=e.target.closest("a");if(!n(s))return;t(s.href,"high")}function m(s){if(performance.now()-o{t(r.href,"high"),e=void 0},a)}function f(e){const s=e.target.closest("a");if(!n(s))return;t(s.href,"high")}function p(t){if(t.relatedTarget&&t.target.closest("a")==t.relatedTarget.closest("a"))return;e&&(clearTimeout(e),e=void 0)}function g(e){if(performance.now()-o1||e.metaKey||e.ctrlKey)return;if(!t)return;t.addEventListener("click",function(e){if(e.detail==1337)return;e.preventDefault()},{capture:!0,passive:!1,once:!0});const n=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1,detail:1337});t.dispatchEvent(n)}function n(e){if(!e||!e.href)return;if(c&&!("instant"in e.dataset))return;if(e.origin!=location.origin){let t=l||"instant"in e.dataset;if(!t||!s)return}if(!["http:","https:"].includes(e.protocol))return;if(e.protocol=="http:"&&location.protocol=="https:")return;if(!d&&e.search&&!("instant"in e.dataset))return;if(e.hash&&e.pathname+e.search==location.pathname+location.search)return;if("noInstant"in e.dataset)return;return!0}function t(e,t="auto"){if(r.has(e))return;const n=document.createElement("link");n.rel="prefetch",n.href=e,n.fetchPriority=t,n.as="document",document.head.appendChild(n),r.add(e)}})(),function e(t){"use strict";try{module&&(t=module)}catch{}t._factory=e;function g(e){return"undefined"==typeof e||e}function M(e){const t=Array(e);for(let s=0;s=this.B&&(m||!d[p])){var i,r,l,a=b(u,o,g),c="";switch(this.G){case"full":if(2a;i--)i-a>=this.B&&(l=b(u,o,g,r,a),c=p.substring(a,i),h(this,d,c,l,e,s));break}case"reverse":if(1=this.B&&h(this,d,c,b(u,o,g,r,i),e,s);c=""}case"forward":if(1=this.B&&h(this,d,c,a,e,s);break}default:if(this.C&&(a=Math.min(a/this.C(t,p,g)|0,u-1)),h(this,d,p,a,e,s),m&&1=this.B&&!r[p]){r[p]=1;const t=this.l&&p>a;h(this,f,t?a:p,b(c+(o/2>c?0:1),o,g,i-1,l-1),e,s,t?p:a)}}}}this.m||(this.register[e]=1)}}return this};function b(e,t,n,s,o){return n&&1=this.B&&!s[t])if(this.s||r||this.map[t])l[a++]=t,s[t]=1;else return i;e=l,o=e.length}if(!o)return i;t||(t=100),c=this.depth&&1=s))))break;if(n){if(i)return z(l,s,0);t[t.length]=l;return}}return!n&&l}function z(e,t,n){return e=1===e.length?e[0]:[].concat.apply([],e),n||e.length>t?e.slice(n,n+t):e}function D(e,t,n,s){return n?(s=s&&t>n,e=(e=e[s?t:n])&&e[s?n:t]):e=e[t],e}s.contain=function(e){return!!this.register[e]},s.update=function(e,t){return this.remove(e).add(e,t)},s.remove=function(e,t){const n=this.register[e];if(n){if(this.m)for(let t=0,s;t{a=e}));let c,r;switch(i||(i=0)){case 0:if(c="reg",this.m){r=n();for(let e in this.register)r[e]=1}else r=this.register;break;case 1:c="cfg",r={doc:0,opt:this.s?1:0};break;case 2:c="map",r=this.map;break;case 3:c="ctx",r=this.h;break;default:"undefined"==typeof s&&a&&a();return}return A(e,t||this,s,c,o,i,r,a),l},s.import=function(e,t){if(t)switch(i(t)&&(t=JSON.parse(t)),e){case"cfg":this.s=!!t.opt;break;case"reg":this.m=!1,this.register=t;break;case"map":this.map=t;break;case"ctx":this.h=t}},T(c.prototype);function oe(e){e=e.data;var n,s=t._index;const o=e.args;switch(n=e.task,n){case"init":n=e.options||{},e=e.factory,s=n.encode,n.cache=!1,s&&0===s.indexOf("function")&&(n.encode=Function("return "+s)()),e?(Function("return "+e)()(t),t._index=new t.FlexSearch.Index(n),delete t.FlexSearch):t._index=new c(n);break;default:e=e.id,s=s[n].apply(s,o),postMessage("search"===n?{id:e,msg:s}:{id:e})}}let R=0;function l(e){if(!(this instanceof l))return new l(e);var s;e?x(s=e.encode)&&(e.encode=s.toString()):e={},(s=(t||window)._factory)&&(s=s.toString());const i="undefined"==typeof window&&t.exports,o=this;this.o=G(s,i,e.worker),this.h=n(),this.o&&(i?this.o.on("message",function(e){o.h[e.id](e.msg),delete o.h[e.id]}):this.o.onmessage=function(e){e=e.data,o.h[e.id](e.msg),delete o.h[e.id]},this.o.postMessage({task:"init",factory:s,options:e}))}u("add"),u("append"),u("search"),u("update"),u("remove");function u(e){l.prototype[e]=l.prototype[e+"Async"]=function(){const o=this,t=[].slice.call(arguments);var n=t[t.length-1];let s;return x(n)&&(s=n,t.splice(t.length-1,1)),n=new Promise(function(n){setTimeout(function(){o.h[++R]=n,o.o.postMessage({task:e,id:R,args:t})})}),s?(n.then(s),this):n}}function G(e,t,n){let s;try{s=t?new(require("worker_threads").Worker)(__dirname+"/node/node.js"):e?new Worker(URL.createObjectURL(new Blob(["onmessage="+oe.toString()],{type:"text/javascript"}))):new Worker(i(n)?n:"worker/worker.js",{type:"module"})}catch{}return s}function d(e){if(!(this instanceof d))return new d(e);var t,s=e.document||e.doc||e;this.K=[],this.h=[],this.A=[],this.register=n(),this.key=(t=s.key||s.id)&&v(t,this.A)||"id",this.m=g(e.fastupdate),this.C=(t=s.store)&&!0!==t&&[],this.store=t&&n(),this.I=(t=s.tag)&&v(t,this.A),this.l=t&&n(),this.cache=(t=e.cache)&&new j(t),e.cache=!1,this.o=e.worker,this.async=!1,t=n();let o=s.index||s.field||s;i(o)&&(o=[o]);for(let r=0,n,s;rt||n)&&(o=o.slice(n,n+t)),s&&(o=q.call(this,o)),{tag:e,result:o}}function q(e){const t=Array(e.length);for(let n=0,s;n{i=e})),o||(o=0),s||(s=0),s{var e=document.getElementById("mode");e!==null&&(window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{e.matches?(localStorage.setItem("theme","dark"),document.documentElement.setAttribute("data-dark-mode","")):(localStorage.setItem("theme","light"),document.documentElement.removeAttribute("data-dark-mode"))}),e.addEventListener("click",()=>{document.documentElement.toggleAttribute("data-dark-mode"),localStorage.setItem("theme",document.documentElement.hasAttribute("data-dark-mode")?"dark":"light")}),localStorage.getItem("theme")==="dark"?document.documentElement.setAttribute("data-dark-mode",""):document.documentElement.removeAttribute("data-dark-mode"))})(),(()=>{if(document.querySelector("#sidebar-default")!==null){let e=document.getElementById("sidebar-default"),t=sessionStorage.getItem("sidebar-scroll");t!==null&&(e.scrollTop=parseInt(t,10)),window.addEventListener("beforeunload",()=>{sessionStorage.setItem("sidebar-scroll",e.scrollTop)})}})(),(()=>{var e=document.getElementById("toTop");e!==null&&(e.style.display="none",window.onscroll=function(){t()});function t(){document.body.scrollTop>40||document.documentElement.scrollTop>40?e.style.display="block":e.style.display="none"}})() \ No newline at end of file diff --git a/plugins/geoip/index.html b/plugins/geoip/index.html index d904755..b1204f8 100644 --- a/plugins/geoip/index.html +++ b/plugins/geoip/index.html @@ -1,5 +1,5 @@ -GeoIP - OWASP Coraza +GeoIP - OWASP Coraza

                                                                                  GeoIP

                                                                                  • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                                                    \ No newline at end of file +

                                                                                    GeoIP

                                                                                    • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                                                      \ No newline at end of file diff --git a/plugins/index.html b/plugins/index.html index 1577f04..09c149b 100644 --- a/plugins/index.html +++ b/plugins/index.html @@ -1,8 +1,8 @@ -Plugins - OWASP Coraza +Plugins - OWASP Coraza

                                                                                      Add plugin on GitHub

                                                                                      • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                                                        \ No newline at end of file +Compatibility: v2.x

                                                                                        Adds geoip Maxmind GeoIP2 database support to Coraza

                                                                                        Add plugin on GitHub

                                                                                        • Powered by a lot of love ❤️ (and code) - By Juan Pablo Tosso and Coraza Contributors
                                                                                          \ No newline at end of file