block that contains mixed results
+ self.files = {}
+ javadoc_pre = (
+ "/**\n"
+ " * Example javadoc\n"
+ " * \n"
+ " * Benchmark Mode Cnt Score Error Units\n"
+ " * CounterBenchmark.codahaleIncNoLabels thrpt 57881.585 ops/s\n"
+ " * HistogramBenchmark.prometheusNative thrpt 2385.134 ops/s\n"
+ " * TextFormatUtilBenchmark.prometheusWriteToNull thrpt 885331.328 ops/s\n"
+ " * CounterBenchmark.prometheusInc thrpt 54090.469 ops/s\n"
+ " *
\n"
+ " */\n"
+ )
+
+ for cls in (
+ "CounterBenchmark",
+ "HistogramBenchmark",
+ "TextFormatUtilBenchmark",
+ ):
+ fname = os.path.join(self.module_path, f"{cls}.java")
+ with open(fname, "w", encoding="utf-8") as f:
+ f.write(javadoc_pre)
+ f.write(f"public class {cls} {{}}\n")
+ self.files[cls] = fname
+
+ def tearDown(self):
+ self.tmpdir.cleanup()
+
+ def _read_pre_contents(self, path):
+ with open(path, "r", encoding="utf-8") as f:
+ content = f.read()
+ m = re.search(r"\n([\s\S]*?)
", content)
+ return m.group(1) if m else ""
+
+ def test_update_only_inserts_matching_class_lines(self):
+ updated = update_pre_blocks_under_module(self.module_path, self.table)
+ # All three files should be updated
+ self.assertEqual(
+ set(os.path.basename(p) for p in updated),
+ {
+ os.path.basename(self.files["CounterBenchmark"]),
+ os.path.basename(self.files["HistogramBenchmark"]),
+ os.path.basename(self.files["TextFormatUtilBenchmark"]),
+ },
+ )
+
+ # Verify CounterBenchmark file contains only CounterBenchmark lines
+ cb_pre = self._read_pre_contents(self.files["CounterBenchmark"])
+ self.assertIn("CounterBenchmark.codahaleIncNoLabels", cb_pre)
+ self.assertIn("CounterBenchmark.prometheusInc", cb_pre)
+ self.assertNotIn("HistogramBenchmark.prometheusNative", cb_pre)
+ self.assertNotIn("TextFormatUtilBenchmark.prometheusWriteToNull", cb_pre)
+
+ # Verify HistogramBenchmark contains only its line
+ hb_pre = self._read_pre_contents(self.files["HistogramBenchmark"])
+ self.assertIn("HistogramBenchmark.prometheusNative", hb_pre)
+ self.assertNotIn("CounterBenchmark.codahaleIncNoLabels", hb_pre)
+ self.assertNotIn("TextFormatUtilBenchmark.prometheusWriteToNull", hb_pre)
+
+ # Verify TextFormatUtilBenchmark contains only its line
+ tf_pre = self._read_pre_contents(self.files["TextFormatUtilBenchmark"])
+ self.assertIn("TextFormatUtilBenchmark.prometheusWriteToNull", tf_pre)
+ self.assertNotIn("CounterBenchmark.prometheusInc", tf_pre)
+ self.assertNotIn("HistogramBenchmark.prometheusNative", tf_pre)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/.mise/tasks/update_benchmarks.py b/.mise/tasks/update_benchmarks.py
new file mode 100755
index 000000000..3cb550877
--- /dev/null
+++ b/.mise/tasks/update_benchmarks.py
@@ -0,0 +1,249 @@
+#!/usr/bin/env python3
+
+# [MISE] description="Run and update JMH benchmark outputs in the benchmarks module"
+# [MISE] alias="update-benchmarks"
+
+"""
+Run benchmarks for the `benchmarks` module, capture JMH text output, and update
+any ...
blocks containing "thrpt" under the `benchmarks/` module
+(files such as Java sources with embedded example output in javadocs).
+
+Usage: ./.mise/tasks/update_benchmarks.py [--mvnw ./mvnw] [--module benchmarks] [--java java]
+ [--jmh-args "-f 1 -wi 0 -i 1"]
+
+By default this will:
+ - run the maven wrapper to package the benchmarks: `./mvnw -pl benchmarks -am -DskipTests package`
+ - locate the shaded jar under `benchmarks/target/` (named containing "benchmarks")
+ - run `java -jar -rf text` (add extra JMH args with --jmh-args)
+ - parse the first JMH table (the block starting with the "Benchmark Mode" header)
+ - update all files under the `benchmarks/` directory which contain a `` block with the substring "thrpt"
+
+This script is careful to preserve Javadoc comment prefixes like " * " when replacing the
+contents of the block.
+"""
+
+import argparse
+import glob
+import os
+import re
+import shlex
+import subprocess
+import sys
+from typing import List, Optional
+
+
+def run_cmd(cmd: List[str], cwd: Optional[str] = None) -> str:
+ """Run a command, stream stdout/stderr to the console for progress, and return the full output.
+
+ This replaces the previous blocking subprocess.run approach so users can see build / JMH
+ progress in real time while the command runs.
+ """
+ try:
+ proc = subprocess.Popen(
+ cmd, cwd=cwd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True
+ )
+ except FileNotFoundError:
+ # Helpful message if the executable is not found
+ print(f"Command not found: {cmd[0]}")
+ raise
+
+ output_lines: List[str] = []
+ try:
+ assert proc.stdout is not None
+ # Stream lines as they appear and capture them for returning
+ for line in proc.stdout:
+ # Print immediately so callers (and CI) can observe progress
+ print(line, end="")
+ output_lines.append(line)
+ proc.wait()
+ except KeyboardInterrupt:
+ # If the user interrupts, ensure the child process is terminated
+ proc.kill()
+ proc.wait()
+ print("\nCommand interrupted by user.")
+ raise
+
+ output = "".join(output_lines)
+ if proc.returncode != 0:
+ print(
+ f"Command failed: {' '.join(cmd)}\nExit: {proc.returncode}\nOutput:\n{output}"
+ )
+ raise SystemExit(proc.returncode)
+ return output
+
+
+def build_benchmarks(mvnw: str, module: str) -> None:
+ print(f"Building Maven module '{module}' using {mvnw} (this may take a while)...")
+ cmd = [mvnw, "-pl", module, "-am", "-DskipTests", "clean", "package"]
+ run_cmd(cmd)
+ print("Build completed.")
+
+
+def find_benchmarks_jar(module: str) -> str:
+ pattern = os.path.join(module, "target", "*.jar")
+ jars = [p for p in glob.glob(pattern) if "original" not in p and p.endswith(".jar")]
+ # prefer jar whose basename contains module name
+ jars_pref = [j for j in jars if module in os.path.basename(j)]
+ chosen = (jars_pref or jars)[:1]
+ if not chosen:
+ raise FileNotFoundError(
+ f"No jar found in {os.path.join(module, 'target')} (tried: {pattern})"
+ )
+ jar = chosen[0]
+ print(f"Using jar: {jar}")
+ return jar
+
+
+def run_jmh(jar: str, java_cmd: str, extra_args: Optional[str]) -> str:
+ args = [java_cmd, "-jar", jar, "-rf", "text"]
+ if extra_args:
+ args += shlex.split(extra_args)
+ print(f"Running JMH: {' '.join(args)}")
+ output = run_cmd(args)
+ print("JMH run completed.")
+ return output
+
+
+def extract_first_table(jmh_output: str) -> str:
+ # Try to extract the first table that starts with "Benchmark" header and continues until a blank line
+ m = re.search(r"(\nBenchmark\s+Mode[\s\S]*?)(?:\n\s*\n|\Z)", jmh_output)
+ if not m:
+ # fallback: collect all lines that contain 'thrpt' plus a header if present
+ lines = [line for line in jmh_output.splitlines() if "thrpt" in line]
+ if not lines:
+ raise ValueError('Could not find any "thrpt" lines in JMH output')
+ # try to find header
+ header = next(
+ (
+ line
+ for line in jmh_output.splitlines()
+ if line.startswith("Benchmark") and "Mode" in line
+ ),
+ "Benchmark Mode Cnt Score Error Units",
+ )
+ return header + "\n" + "\n".join(lines)
+ table = m.group(1).strip("\n")
+ # Ensure we return only the table lines (remove any leading iteration info lines that JMH sometimes prints)
+ # Normalize spaces: keep as-is
+ return table
+
+
+def filter_table_for_class(table: str, class_name: str) -> Optional[str]:
+ """
+ Return a table string that contains only the header and the lines belonging to `class_name`.
+ If no matching lines are found, return None.
+ """
+ lines = table.splitlines()
+ # find header line index (starts with 'Benchmark' and contains 'Mode')
+ header_idx = None
+ for i, ln in enumerate(lines):
+ if ln.strip().startswith("Benchmark") and "Mode" in ln:
+ header_idx = i
+ break
+ header = (
+ lines[header_idx]
+ if header_idx is not None
+ else "Benchmark Mode Cnt Score Error Units"
+ )
+
+ matched = []
+ pattern = re.compile(r"^\s*" + re.escape(class_name) + r"\.")
+ for ln in lines[header_idx + 1 if header_idx is not None else 0 :]:
+ if "thrpt" in ln and pattern.search(ln):
+ matched.append(ln)
+
+ if not matched:
+ return None
+ return header + "\n" + "\n".join(matched)
+
+
+def update_pre_blocks_under_module(module: str, table: str) -> List[str]:
+ # Find files under module and update any ...
block that contains 'thrpt'
+ updated_files = []
+ for path in glob.glob(os.path.join(module, "**"), recursive=True):
+ if os.path.isdir(path):
+ continue
+ try:
+ with open(path, "r", encoding="utf-8") as f:
+ content = f.read()
+ except Exception:
+ continue
+ # quick filter
+ if "" not in content or "thrpt" not in content:
+ continue
+
+ original = content
+
+ # Determine the class name from the filename (e.g. TextFormatUtilBenchmark.java -> TextFormatUtilBenchmark)
+ base = os.path.basename(path)
+ class_name = os.path.splitext(base)[0]
+
+ # Build a filtered table for this class; if no matching lines, skip updating this file
+ filtered_table = filter_table_for_class(table, class_name)
+ if filtered_table is None:
+ # nothing to update for this class
+ continue
+
+ # Regex to find any line-starting Javadoc prefix like " * " before
+ # This will match patterns like: " * ...
" and capture the prefix (e.g. " * ")
+ pattern = re.compile(r"(?m)^(?P[ \t]*\*[ \t]*)[\s\S]*?
")
+
+ def repl(m: re.Match) -> str:
+ prefix = m.group("prefix")
+ # Build the new block with the same prefix on each line
+ lines = filtered_table.splitlines()
+ replaced = prefix + "\n"
+ for ln in lines:
+ replaced += prefix + ln.rstrip() + "\n"
+ replaced += prefix + "
"
+ return replaced
+
+ new_content, nsubs = pattern.subn(repl, content)
+ if nsubs > 0 and new_content != original:
+ with open(path, "w", encoding="utf-8") as f:
+ f.write(new_content)
+ updated_files.append(path)
+ print(f"Updated {path}: replaced {nsubs} block(s)")
+ return updated_files
+
+
+def main(argv: List[str]):
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--mvnw", default="./mvnw", help="Path to maven wrapper")
+ parser.add_argument(
+ "--module", default="benchmarks", help="Module directory to build/run"
+ )
+ parser.add_argument("--java", default="java", help="Java command")
+ parser.add_argument(
+ "--jmh-args",
+ default="",
+ help='Extra arguments to pass to the JMH main (e.g. "-f 1 -wi 0 -i 1")',
+ )
+ args = parser.parse_args(argv)
+
+ build_benchmarks(args.mvnw, args.module)
+ jar = find_benchmarks_jar(args.module)
+ output = run_jmh(jar, args.java, args.jmh_args)
+
+ # Print a short preview of the JMH output
+ preview = "\n".join(output.splitlines()[:120])
+ print("\n--- JMH output preview ---")
+ print(preview)
+ print("--- end preview ---\n")
+
+ table = extract_first_table(output)
+
+ updated = update_pre_blocks_under_module(args.module, table)
+
+ if not updated:
+ print(
+ 'No files were updated (no blocks with "thrpt" found under the module).'
+ )
+ else:
+ print("\nUpdated files:")
+ for p in updated:
+ print(" -", p)
+
+
+if __name__ == "__main__":
+ main(sys.argv[1:])
diff --git a/.mvn/jvm.config b/.mvn/jvm.config
new file mode 100644
index 000000000..32599cefe
--- /dev/null
+++ b/.mvn/jvm.config
@@ -0,0 +1,10 @@
+--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
+--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
+--add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
+--add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
+--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
+--add-exports jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
+--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
+--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
+--add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
+--add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 000000000..1027a01fe
--- /dev/null
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,2 @@
+distributionType=only-script
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.13/apache-maven-3.9.13-bin.zip
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 294da3583..000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: java
-
-script:
-- mvn test
-- mvn javadoc:aggregate
diff --git a/.yaml-lint.yml b/.yaml-lint.yml
new file mode 100644
index 000000000..a06ffeed5
--- /dev/null
+++ b/.yaml-lint.yml
@@ -0,0 +1,5 @@
+extends: relaxed
+
+rules:
+ line-length:
+ max: 120
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 000000000..ba4cab7a9
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,179 @@
+# AGENTS.md
+
+This file provides guidance to AI coding agents when working
+with code in this repository.
+
+## Build Commands
+
+This project uses Maven with mise for task automation.
+The Maven wrapper (`./mvnw`) is used for all builds.
+
+```bash
+# Full CI build (clean + install + all checks)
+mise run ci
+
+# Quick compile without tests or checks (fastest)
+mise run compile
+
+# Run unit tests only (skips formatting/coverage/checkstyle)
+mise run test
+
+# Run all tests including integration tests
+mise run test-all
+
+# Format code with Google Java Format
+mise run format
+
+# Run a single test class
+./mvnw test -Dtest=CounterTest \
+ -Dspotless.check.skip=true \
+ -Dcoverage.skip=true -Dcheckstyle.skip=true
+
+# Run a single test method
+./mvnw test -Dtest=CounterTest#testIncrement \
+ -Dspotless.check.skip=true \
+ -Dcoverage.skip=true -Dcheckstyle.skip=true
+
+# Run tests in a specific module
+./mvnw test -pl prometheus-metrics-core \
+ -Dspotless.check.skip=true \
+ -Dcoverage.skip=true -Dcheckstyle.skip=true
+
+# Regenerate protobuf classes (after protobuf dep update)
+mise run generate
+```
+
+## Architecture
+
+The library follows a layered architecture where metrics
+flow from core types through a registry to exporters:
+
+```text
+prometheus-metrics-core (user-facing API)
+ │
+ ▼ collect()
+prometheus-metrics-model (immutable snapshots)
+ │
+ ▼
+prometheus-metrics-exposition-formats
+ │
+ ▼
+Exporters (httpserver, servlet, pushgateway, otel)
+```
+
+### Key Modules
+
+- **prometheus-metrics-core**: User-facing metric types
+ (Counter, Gauge, Histogram, Summary, Info, StateSet).
+ All metrics implement `Collector` with `collect()`.
+- **prometheus-metrics-model**: Internal read-only immutable
+ snapshot types returned by `collect()`.
+ Contains `PrometheusRegistry` for metric registration.
+- **prometheus-metrics-config**: Runtime configuration via
+ properties files or system properties.
+- **prometheus-metrics-exposition-formats**: Converts
+ snapshots to Prometheus exposition formats.
+- **prometheus-metrics-tracer**: Exemplar support with
+ OpenTelemetry tracing integration.
+- **prometheus-metrics-simpleclient-bridge**: Allows legacy
+ simpleclient 0.16.0 metrics to work with the new registry.
+
+### Instrumentation Modules
+
+Pre-built instrumentations:
+`prometheus-metrics-instrumentation-jvm`, `-caffeine`,
+`-guava`, `-dropwizard`, `-dropwizard5`.
+
+## Code Style
+
+- **Formatter**: Google Java Format (enforced via Spotless)
+- **Line length**: 100 characters
+ (enforced for ALL files including Markdown, Java, YAML)
+- **Indentation**: 2 spaces
+- **Static analysis**: `Error Prone` with NullAway
+ (`io.prometheus.metrics` package)
+- **Logger naming**: Logger fields must be named `logger`
+ (not `log`, `LOG`, or `LOGGER`)
+- **Assertions in tests**: Use static imports from AssertJ
+ (`import static ...Assertions.assertThat`)
+- **Empty catch blocks**: Use `ignored` as the variable name
+- **Markdown code blocks**: Always specify language
+ (e.g., ` ```java`, ` ```bash`, ` ```text`)
+
+## Linting and Validation
+
+**CRITICAL**: These checks MUST be run before creating any
+commits. CI will fail if these checks fail.
+
+### Java Files
+
+- **ALWAYS** run `mise run build` after modifying Java files
+ to ensure:
+ - Code formatting (Spotless with Google Java Format)
+ - Static analysis (`Error Prone` with NullAway)
+ - Checkstyle validation
+ - Build succeeds (tests are skipped;
+ run `mise run test` or `mise run test-all` for tests)
+
+### Non-Java Files (Markdown, YAML, JSON, shell scripts)
+
+- **ALWAYS** run `mise run lint` after modifying non-Java
+ files (runs super-linter + link checking + BOM check)
+- `mise run fix` autofixes linting issues
+- Super-linter will **autofix** many issues
+ (formatting, trailing whitespace, etc.)
+- It only reports ERROR-level issues
+ (configured via `LOG_LEVEL=ERROR` in
+ `.github/super-linter.env`)
+- Common issues caught:
+ - Lines exceeding 100 characters in Markdown files
+ - Missing language tags in fenced code blocks
+ - Table formatting issues
+ - YAML/JSON syntax errors
+
+### Running Linters
+
+```bash
+# After modifying Java files (run BEFORE committing)
+mise run build
+
+# After modifying non-Java files (run BEFORE committing)
+mise run lint
+# or to autofix: mise run fix
+```
+
+### Before Pushing
+
+**ALWAYS** run `mise run lint` before pushing to verify
+all lints pass. CI runs the same checks and will fail
+if any lint is violated.
+
+## Testing
+
+- JUnit 5 (Jupiter) with `@Test` annotations
+- AssertJ for fluent assertions
+- Mockito for mocking
+- **Test visibility**: Test classes and test methods must be
+ package-protected (no `public` modifier)
+- Integration tests are in `integration-tests/` and run
+ during `verify` phase
+- Acceptance tests use OATs framework:
+ `mise run acceptance-test`
+
+## Documentation
+
+- Docs live under `docs/content/` and use `$version` as a
+ placeholder for the library version
+- When publishing GitHub Pages,
+ `mise run set-release-version-github-pages` replaces
+ `$version` with the latest Git tag across all
+ `docs/content/**/*.md` files
+ (the published site is not versioned)
+- Use `$version` for the Prometheus client version and
+ `$otelVersion-alpha` for the OTel instrumentation
+ version — never hardcode them
+
+## Java Version
+
+Source compatibility: Java 8. Tests run on Java 25
+(configured in `mise.toml`).
diff --git a/AUTHORS.md b/AUTHORS.md
deleted file mode 100644
index d980e1cff..000000000
--- a/AUTHORS.md
+++ /dev/null
@@ -1,18 +0,0 @@
-The Prometheus project was started by Matt T. Proud (emeritus) and
-Julius Volz in 2012.
-
-Maintainers of this repository:
-
-* Björn Rabenstein
-* Brian Brazil
-
-The following individuals have contributed code to this repository
-(listed in alphabetical order):
-
-* Björn Rabenstein
-* Brian Brazil
-* Flavio W. Brasil
-* Julius Volz
-* Matt T. Proud
-* Michal Witkowski
-* Ursula Kallio
diff --git a/CLAUDE.md b/CLAUDE.md
new file mode 100644
index 000000000..6b5e23414
--- /dev/null
+++ b/CLAUDE.md
@@ -0,0 +1,3 @@
+
+
+@AGENTS.md
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 000000000..d325872bd
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,3 @@
+# Prometheus Community Code of Conduct
+
+Prometheus follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md).
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 5c8ea596a..1e478f0dc 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -2,11 +2,121 @@
Prometheus uses GitHub to manage reviews of pull requests.
-* If you have a trivial fix or improvement, go ahead and create a pull
- request, addressing (with `@...`) one or more of the maintainers
- (see [AUTHORS.md](AUTHORS.md)) in the description of the pull request.
+- If you have a trivial fix or improvement, go ahead and create a pull request,
+ addressing (with `@...`) the maintainer of this repository (see
+ [MAINTAINERS.md](MAINTAINERS.md)) in the
+ description of the pull request.
-* If you plan to do something more involved, first discuss your ideas
+- If you plan to do something more involved, first discuss your ideas
on our [mailing list](https://groups.google.com/forum/?fromgroups#!forum/prometheus-developers).
This will avoid unnecessary work and surely give you and us a good deal
of inspiration.
+
+## Signing Off Commits
+
+Every commit must include a `Signed-off-by` line, as required by the
+[Developer Certificate of Origin (DCO)](https://developercertificate.org/).
+
+Sign off each commit by passing `--signoff` (or `-s`) to `git commit`:
+
+```bash
+git commit --signoff -m "Your commit message"
+```
+
+To sign off only the most recent commit, use `--amend`:
+
+```bash
+git commit --amend --signoff --no-edit
+```
+
+To sign off multiple commits, rebase (replace `N` with the number of commits):
+
+```bash
+git rebase --signoff HEAD~N
+```
+
+Then force-push the branch:
+
+```bash
+git push --force-with-lease
+```
+
+## Formatting
+
+This repository uses [Google Java Format](https://github.com/google/google-java-format) to format
+the code.
+
+Run `./mvnw spotless:apply` to format the code (only changed files) before committing.
+
+Or run all the linters:
+
+`mise run lint`
+
+To autofix linting issues:
+
+`mise run fix`
+
+## Running Tests
+
+If you're getting errors when running tests:
+
+- Make sure that the IDE uses only the "Maven Shade" dependency of "
+ prometheus-metrics-exposition-formats" and the "prometheus-metrics-tracer\*" dependencies.
+
+### Running native tests
+
+```shell
+mise --cd .mise/envs/native run native-test
+```
+
+### Avoid failures while running tests
+
+- Use `-Dspotless.check.skip=true` to skip the formatting check during development.
+- Use `-Dcoverage.skip=true` to skip the coverage check during development.
+- Use `-Dcheckstyle.skip=true` to skip the checkstyle check during development.
+- Use `-Dwarnings=-nowarn` to skip the warnings during development.
+
+Combine all with
+
+```shell
+./mvnw install -DskipTests -Dspotless.check.skip=true -Dcoverage.skip=true \
+ -Dcheckstyle.skip=true -Dwarnings=-nowarn
+```
+
+or simply
+
+```shell
+mise run compile
+```
+
+## Version Numbers in Examples
+
+Example `pom.xml` files (under `examples/`) should reference the latest
+**released** version, not a SNAPSHOT. After each release, Renovate
+updates these versions automatically.
+
+Only use a SNAPSHOT version in an example when it demonstrates a new
+feature that has not been released yet.
+
+## Updating the Protobuf Java Classes
+
+The generated protobuf `Metrics.java` lives in a versioned package
+(e.g., `...generated.com_google_protobuf_4_33_5`) that changes with each
+protobuf release. A stable extending class at
+`...generated/Metrics.java` reexports all types so that consumer code
+only imports from the version-free package. On protobuf upgrades only
+the `extends` clause in the stable class changes.
+
+In the failing PR from renovate, run:
+
+```shell
+mise run generate
+```
+
+The script will:
+
+1. Re-generate the protobuf sources with the new version.
+2. Update the versioned package name in all Java files
+ (including the stable `Metrics.java` extends clause).
+
+Add the updated files to Git and commit them.
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 000000000..cf0a885eb
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,6 @@
+# Maintainers
+
+- Fabian Stäber @fstab
+- Doug Hoard @dhoard
+- Tom Wilkie @tomwilkie
+- Gregor Zeitlinger @zeitlinger
diff --git a/NOTICE b/NOTICE
index b5846b48e..c920ec3fe 100644
--- a/NOTICE
+++ b/NOTICE
@@ -6,3 +6,6 @@ Boxever Ltd. (http://www.boxever.com/).
This product includes software developed at
SoundCloud Ltd. (http://soundcloud.com/).
+
+This product includes software developed as part of the
+Ocelli project by Netflix Inc. (https://github.com/Netflix/ocelli/).
diff --git a/README.md b/README.md
index ad011fe0c..a6b611db2 100644
--- a/README.md
+++ b/README.md
@@ -1,143 +1,26 @@
-# Prometheus JVM Client
-It supports Java, Clojure, Scala, JRuby, and anything else that runs on the JVM.
+# Prometheus Java Metrics Library
-## Using
-### Assets
-If you use Maven, you can simply reference the assets below. The latest
-version can be found on in the maven repository for
-[io.prometheus](http://mvnrepository.com/artifact/io.prometheus).
-
-```xml
-
-
- io.prometheus
- simpleclient
- 0.0.13
-
-
-
- io.prometheus
- simpleclient_hotspot
- 0.0.13
-
-
-
- io.prometheus
- simpleclient_servlet
- 0.0.13
-
-
-
- io.prometheus
- simpleclient_pushgateway
- 0.0.13
-
-```
-
-### Getting Started
-There are canonical examples defined in the class definition Javadoc of the client packages.
+[](https://github.com/prometheus/client_java/actions/workflows/build.yml)
# editorconfig-checker-disable-line
## Documentation
-The client is canonically documented with Javadoc. Running the following will produce local documentation
-in _apidocs_ directories for you to read.
-
- $ mvn package
-
-If you use the Mavenized version of the Prometheus client, you can also instruct Maven to download the Javadoc and
-source artifacts.
-
-Alternatively, you can also look at the generated [Java Client
-Github Project Page](http://prometheus.github.io/client_java), but the raw
-Javadoc in Java source in version control should be treated as the canonical
-form of documentation.
-
-## Maintenance of this Library
-This suite is built and managed by [Maven](http://maven.apache.org), and the
-artifacts are hosted on the [Sonatype OSS Asset Repository](https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide).
-
-All contributions to this library must follow, as far as practical, the
-prevalent patterns in the library for consistency and the following style
-guide: [Google Java Style](http://goo.gl/FfwVsc). Depending upon your
-development environment, you may be able to find an automatic formatter
-and adherence checker that follows these rules.
-
-### Building
-
- $ mvn compile
-
-### Testing
-
- $ mvn test
-
-Please note that tests on Travis may be unreliable due to the absence of
-installed Maven artifacts. Ensure that the current snapshot version is
-deployed to Sonatype OSS Repository.
-
-### Deployment
-These steps below are only useful if you are in a release engineering capacity
-and want to publicize these changes for external users. You will also need to
-have your local Maven setup correctly along with valid and public GPG key and
-adequate authorization on the Sonatype OSS Repository to submit new artifacts,
-be they _staging_ or _release_ ones.
-
-You should read the [Sonatype OSS Apache Maven
-Guide](http://central.sonatype.org/pages/apache-maven.html) before performing any of the following:
-
-### Snapshot Deployment
- $ mvn clean deploy
-
-#### Staging
- $ mvn release:clean release:prepare -Prelease
- $ mvn release:perform -Prelease
-
-Sonatype creates a staging repository per IP address, so turn off any loadbalancing over IP addresses before running these commands.
-
-#### Release
-
-Go to https://oss.sonatype.org/#stagingRepositories and Close the `ioprometheus-XXX` release.
-Once it's closed, Release it. Wait for the new version to appear in
-[The Central Repository](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22io.prometheus%22).
-
-Send an email to the developer's mailing list announcing the release.
-
-
-#### Documentation
-Documentation can also be released to the public via the Github Pages subproduct
-through the magic _gh-pages_ branch for a Github project. Documentation is
-generated via the following command:
-
- $ mvn javadoc:aggregate
-
-It will need to be automatically merged into the _gh-pages_ branch, but that is
-as simple as this:
- git checkout master
- mvn javadoc:aggregate
- git checkout gh-pages
- rm -r io src-html
- mv target/site/apidocs/* .
- git status
- # Amend the branch as necessary.
- git commit
- git push
+[https://prometheus.github.io/client_java](https://prometheus.github.io/client_java)
-There is a Maven plugin to perform this work, but it is broken. The
-javadoc:aggregate step will emit documentation into
-_target/site/apidocs_. The reason that we use this aggregate step instead
-of bare javadoc is that we want one comprehensive Javadoc emission that includes
-all Maven submodules versus trying to manually concatenate this together.
+## Contributing and community
-Output documentation lives in the [Java Client Github Project
-Page](http://prometheus.github.io/client_java).
+See [CONTRIBUTING.md](CONTRIBUTING.md) and
+the [community section](http://prometheus.io/community/)
+of the Prometheus homepage.
-## Historical Note
-The version of the Java client in this repository is the "Simpleclient". The
-previous "Original client" is deprecated, and can be found in [the
-junkyard](https://github.com/prometheus-junkyard/client_java_original).
+The Prometheus Java community is present on the [CNCF Slack](https://cloud-native.slack.com) on
+`#prometheus-java`, and we have a fortnightly community call in
+the [Prometheus public calendar](https://prometheus.io/community/).
+## Previous Releases
-## Contact
-All of the core developers are accessible via the [Prometheus Developers Mailinglist](https://groups.google.com/forum/?fromgroups#!forum/prometheus-developers).
+The source code for 0.16.0 and older is on
+the [simpleclient](https://github.com/prometheus/client_java/tree/simpleclient) branch.
+## License
-[](https://travis-ci.org/prometheus/client_java)
+Apache License 2.0, see [LICENSE](LICENSE).
diff --git a/RELEASING.md b/RELEASING.md
new file mode 100644
index 000000000..25f2d59a5
--- /dev/null
+++ b/RELEASING.md
@@ -0,0 +1,58 @@
+# Releasing Instructions for Prometheus Java Client
+
+Releases are automated via
+[release-please](https://github.com/googleapis/release-please).
+
+## How It Works
+
+1. Commits to `main` using
+ [Conventional Commits](https://www.conventionalcommits.org/) are
+ tracked by release-please.
+2. Release-please maintains a release PR that accumulates changes and
+ updates the changelog.
+3. When the release PR is merged, release-please creates a GitHub
+ release and a `vX.Y.Z` tag.
+4. The tag triggers the existing `release.yml` workflow, which deploys
+ to Maven Central.
+5. After tagging, release-please opens a follow-up PR to bump the
+ SNAPSHOT version in all `pom.xml` files.
+
+## Patch Release (default)
+
+Simply merge the release PR — release-please bumps the patch version
+by default (e.g. `1.5.0` -> `1.5.1`).
+
+## Minor or Major Release
+
+Add a `release-as: X.Y.0` footer to any commit on `main`:
+
+```text
+feat: add new feature
+
+release-as: 1.6.0
+```
+
+Alternatively, edit the release PR title to
+`chore(main): release 1.6.0`.
+
+## Before the Release
+
+If there have been significant changes since the last release, update
+the benchmarks before merging the release PR:
+
+```shell
+mise run update-benchmarks
+```
+
+## If the GPG Key Expired
+
+1. Generate a new key:
+
+2. Distribute the key:
+
+3. Use `gpg --armor --export-secret-keys YOUR_ID` to export
+ ([docs](https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#gpg))
+4. Update the passphrase:
+
+5. Update the GPG key:
+
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 000000000..fed02d85c
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,6 @@
+# Reporting a security issue
+
+The Prometheus security policy, including how to report vulnerabilities, can be
+found here:
+
+
diff --git a/benchmark/README.md b/benchmark/README.md
deleted file mode 100644
index 628a4d444..000000000
--- a/benchmark/README.md
+++ /dev/null
@@ -1,161 +0,0 @@
-# Client Benchmarks
-
-This module contains microbenchmarks for client instrumentation operations.
-
-## Result Overview
-
-The main outcomes of the benchmarks:
-* Simpleclient Counters/Gauges have similar performance to Codahale Counters.
-* The original client is much slower than the Simpleclient or Codahale, especially when used concurrently.
-* Codahale Meters are slower than Codahale/Simpleclient Counters
-* Codahale and original client Summaries are 10x slower than other metrics.
-* Simpleclient Histograms are 10-100X faster than Codahale and original client Summaries.
-* Simpleclient `Gauge.Child.set` is relatively slow, especially when done concurrently.
-* Label lookups in both Prometheus clients are relatively slow.
-
-Accordingly, in terms of client instrumentation performance I suggest the following:
-* It's cheap to extensively instrument your code with Simpleclient Counters/Gauges/Summaries without labels, or Codahale Counters.
-* Avoid Codahale Meters, in favour of Codahale/Simpleclient Counters and calculating the rate in your monitoring system (e.g. the `rate()` function in Prometheus).
-* Use Simpleclient Histograms rather than original client Summaries and Codahale Histograms/Timers.
-* Avoid the original client.
-* For high update rate (>1000 per second) prometheus metrics using labels, you should cache the Child. Java 8 may make this better due to an improved ConcurrentHashMap implementation.
-* If a use case appears for high update rate use of SimpleClient's `Gauge.Child.set`, we should alter `DoubleAdder` to more efficiently handle this use case.
-
-## Benchmark Results
-
-These benchmarks were run using JMH on a 2-core MacBook Pro with a 2.5GHz i5 processor,
-with Oracle Java 64 1.7.0\_51.
-
-### Counters
- java -jar target/benchmarks.jar CounterBenchmark -wi 5 -i 5 -f 1 -t 1
- i.p.b.CounterBenchmark.codahaleCounterIncBenchmark avgt 5 11.554 ± 0.251 ns/op
- i.p.b.CounterBenchmark.codahaleMeterMarkBenchmark avgt 5 75.305 ± 7.147 ns/op
- i.p.b.CounterBenchmark.prometheusCounterChildIncBenchmark avgt 5 13.249 ± 0.029 ns/op
- i.p.b.CounterBenchmark.prometheusCounterIncBenchmark avgt 5 127.397 ± 4.072 ns/op
- i.p.b.CounterBenchmark.prometheusSimpleCounterChildIncBenchmark avgt 5 12.989 ± 0.285 ns/op
- i.p.b.CounterBenchmark.prometheusSimpleCounterIncBenchmark avgt 5 54.822 ± 7.994 ns/op
- i.p.b.CounterBenchmark.prometheusSimpleCounterNoLabelsIncBenchmark avgt 5 13.131 ± 1.661 ns/op
-
- java -jar target/benchmarks.jar CounterBenchmark -wi 5 -i 5 -f 1 -t 2
- i.p.b.CounterBenchmark.codahaleCounterIncBenchmark avgt 5 16.707 ± 2.116 ns/op
- i.p.b.CounterBenchmark.codahaleMeterMarkBenchmark avgt 5 107.346 ± 23.127 ns/op
- i.p.b.CounterBenchmark.prometheusCounterChildIncBenchmark avgt 5 41.912 ± 18.167 ns/op
- i.p.b.CounterBenchmark.prometheusCounterIncBenchmark avgt 5 170.860 ± 5.110 ns/op
- i.p.b.CounterBenchmark.prometheusSimpleCounterChildIncBenchmark avgt 5 17.782 ± 2.764 ns/op
- i.p.b.CounterBenchmark.prometheusSimpleCounterIncBenchmark avgt 5 89.656 ± 4.577 ns/op
- i.p.b.CounterBenchmark.prometheusSimpleCounterNoLabelsIncBenchmark avgt 5 16.109 ± 1.723 ns/op
-
- java -jar target/benchmarks.jar CounterBenchmark -wi 5 -i 5 -f 1 -t 4
- i.p.b.CounterBenchmark.codahaleCounterIncBenchmark avgt 5 17.628 ± 0.501 ns/op
- i.p.b.CounterBenchmark.codahaleMeterMarkBenchmark avgt 5 121.836 ± 15.888 ns/op
- i.p.b.CounterBenchmark.prometheusCounterChildIncBenchmark avgt 5 377.916 ± 7.965 ns/op
- i.p.b.CounterBenchmark.prometheusCounterIncBenchmark avgt 5 250.919 ± 2.728 ns/op
- i.p.b.CounterBenchmark.prometheusSimpleCounterChildIncBenchmark avgt 5 18.055 ± 1.391 ns/op
- i.p.b.CounterBenchmark.prometheusSimpleCounterIncBenchmark avgt 5 120.543 ± 1.770 ns/op
- i.p.b.CounterBenchmark.prometheusSimpleCounterNoLabelsIncBenchmark avgt 5 19.334 ± 1.471 ns/op
-
-### Gauges
-
-Codahale lacks a metric with a `set` method, so we'll compare to `Counter` which has `inc` and `dec`.
-
- java -jar target/benchmarks.jar GaugeBenchmark -wi 5 -i 5 -f 1 -t 1
- i.p.b.GaugeBenchmark.codahaleCounterDecBenchmark avgt 5 11.620 ± 0.288 ns/op
- i.p.b.GaugeBenchmark.codahaleCounterIncBenchmark avgt 5 11.718 ± 0.333 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeChildDecBenchmark avgt 5 13.358 ± 0.554 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeChildIncBenchmark avgt 5 13.268 ± 0.276 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeChildSetBenchmark avgt 5 11.624 ± 0.210 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeDecBenchmark avgt 5 125.058 ± 2.764 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeIncBenchmark avgt 5 127.814 ± 7.741 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeSetBenchmark avgt 5 127.899 ± 6.690 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeChildDecBenchmark avgt 5 12.961 ± 0.393 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeChildIncBenchmark avgt 5 12.932 ± 0.212 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeChildSetBenchmark avgt 5 36.672 ± 1.112 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeDecBenchmark avgt 5 54.677 ± 3.704 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeIncBenchmark avgt 5 53.278 ± 1.104 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeSetBenchmark avgt 5 79.724 ± 2.723 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeNoLabelsDecBenchmark avgt 5 12.957 ± 0.437 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeNoLabelsIncBenchmark avgt 5 12.932 ± 0.284 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeNoLabelsSetBenchmark avgt 5 40.235 ± 1.735 ns/op
-
- java -jar target/benchmarks.jar GaugeBenchmark -wi 5 -i 5 -f 1 -t 2
- i.p.b.GaugeBenchmark.codahaleCounterDecBenchmark avgt 5 17.443 ± 4.819 ns/op
- i.p.b.GaugeBenchmark.codahaleCounterIncBenchmark avgt 5 14.882 ± 2.875 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeChildDecBenchmark avgt 5 45.206 ± 29.575 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeChildIncBenchmark avgt 5 46.657 ± 33.518 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeChildSetBenchmark avgt 5 21.810 ± 9.370 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeDecBenchmark avgt 5 177.370 ± 2.477 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeIncBenchmark avgt 5 172.136 ± 3.056 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeSetBenchmark avgt 5 186.791 ± 7.996 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeChildDecBenchmark avgt 5 15.978 ± 2.762 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeChildIncBenchmark avgt 5 15.457 ± 1.052 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeChildSetBenchmark avgt 5 156.604 ± 10.953 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeDecBenchmark avgt 5 107.134 ± 33.620 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeIncBenchmark avgt 5 89.362 ± 16.608 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeSetBenchmark avgt 5 163.823 ± 25.270 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeNoLabelsDecBenchmark avgt 5 16.380 ± 1.915 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeNoLabelsIncBenchmark avgt 5 17.042 ± 1.113 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeNoLabelsSetBenchmark avgt 5 164.930 ± 2.565 ns/op
-
- java -jar target/benchmarks.jar GaugeBenchmark -wi 5 -i 5 -f 1 -t 4
- i.p.b.GaugeBenchmark.codahaleCounterDecBenchmark avgt 5 17.291 ± 1.769 ns/op
- i.p.b.GaugeBenchmark.codahaleCounterIncBenchmark avgt 5 17.445 ± 0.709 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeChildDecBenchmark avgt 5 389.411 ± 13.078 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeChildIncBenchmark avgt 5 399.549 ± 29.274 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeChildSetBenchmark avgt 5 123.700 ± 3.894 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeDecBenchmark avgt 5 244.741 ± 22.477 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeIncBenchmark avgt 5 243.525 ± 6.332 ns/op
- i.p.b.GaugeBenchmark.prometheusGaugeSetBenchmark avgt 5 252.363 ± 2.664 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeChildDecBenchmark avgt 5 18.330 ± 2.673 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeChildIncBenchmark avgt 5 20.633 ± 1.219 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeChildSetBenchmark avgt 5 335.455 ± 4.562 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeDecBenchmark avgt 5 116.432 ± 4.793 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeIncBenchmark avgt 5 129.390 ± 2.360 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeSetBenchmark avgt 5 613.186 ± 20.548 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeNoLabelsDecBenchmark avgt 5 19.765 ± 3.189 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeNoLabelsIncBenchmark avgt 5 19.589 ± 1.634 ns/op
- i.p.b.GaugeBenchmark.prometheusSimpleGaugeNoLabelsSetBenchmark avgt 5 307.238 ± 1.918 ns/op
-
-### Summaries
-
-The simpleclient `Summary` doesn't have percentiles, simpleclient's `Histogram`
-offers a way to calculate percentiles on the server side that works with aggregation.
-The closest to the original client's `Summary` is Codahale's
-`Timer`, but that includes timing calls so we compare with `Histogram` instead.
-
- java -jar target/benchmarks.jar SummaryBenchmark -wi 5 -i 5 -f 1 -t 1
- i.p.b.SummaryBenchmark.codahaleHistogramBenchmark avgt 5 186.306 ± 4.958 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleHistogramBenchmark avgt 5 81.595 ± 4.491 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleHistogramChildBenchmark avgt 5 22.143 ± 1.713 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleHistogramNoLabelsBenchmark avgt 5 22.066 ± 0.812 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleSummaryBenchmark avgt 5 59.588 ± 2.087 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleSummaryChildBenchmark avgt 5 15.300 ± 0.659 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleSummaryNoLabelsBenchmark avgt 5 15.608 ± 0.271 ns/op
- i.p.b.SummaryBenchmark.prometheusSummaryBenchmark avgt 5 981.640 ± 315.146 ns/op
- i.p.b.SummaryBenchmark.prometheusSummaryChildBenchmark avgt 5 1155.179 ± 850.237 ns/op
-
- java -jar target/benchmarks.jar SummaryBenchmark -wi 5 -i 5 -f 1 -t 2
- i.p.b.SummaryBenchmark.codahaleHistogramBenchmark avgt 5 289.245 ± 39.721 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleHistogramBenchmark avgt 5 127.014 ± 19.285 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleHistogramChildBenchmark avgt 5 52.597 ± 10.781 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleHistogramNoLabelsBenchmark avgt 5 53.295 ± 9.891 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleSummaryBenchmark avgt 5 117.810 ± 11.694 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleSummaryChildBenchmark avgt 5 31.933 ± 3.439 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleSummaryNoLabelsBenchmark avgt 5 33.918 ± 5.571 ns/op
- i.p.b.SummaryBenchmark.prometheusSummaryBenchmark avgt 5 2059.498 ± 616.954 ns/op
- i.p.b.SummaryBenchmark.prometheusSummaryChildBenchmark avgt 5 2346.163 ± 1503.034 ns/op
-
- java -jar target/benchmarks.jar SummaryBenchmark -wi 5 -i 5 -f 1 -t 4
- i.p.b.SummaryBenchmark.codahaleHistogramBenchmark avgt 5 587.956 ± 2.788 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleHistogramBenchmark avgt 5 163.313 ± 5.163 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleHistogramChildBenchmark avgt 5 66.957 ± 1.746 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleHistogramNoLabelsBenchmark avgt 5 67.064 ± 1.681 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleSummaryBenchmark avgt 5 140.166 ± 4.263 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleSummaryChildBenchmark avgt 5 40.065 ± 0.138 ns/op
- i.p.b.SummaryBenchmark.prometheusSimpleSummaryNoLabelsBenchmark avgt 5 41.331 ± 1.899 ns/op
- i.p.b.SummaryBenchmark.prometheusSummaryBenchmark avgt 5 3950.152 ± 1214.866 ns/op
- i.p.b.SummaryBenchmark.prometheusSummaryChildBenchmark avgt 5 4676.946 ± 3625.977 ns/op
-
-Note the high error bars for the original client, it got slower with each iteration
-so I suspect a flaw in the test setup.
-
-
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
deleted file mode 100644
index 3128dd374..000000000
--- a/benchmark/pom.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
- 4.0.0
-
-
- io.prometheus
- parent
- 0.0.14-SNAPSHOT
-
-
- io.prometheus
- benchmarks
-
- Prometheus Java Client Benchmarks
-
- Benchmarks of client performance, and comparison to other systems.
-
-
-
-
- The Apache Software License, Version 2.0
- http://www.apache.org/licenses/LICENSE-2.0.txt
- repo
-
-
-
-
-
- org.openjdk.jmh
- jmh-core
- 1.3.2
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- 1.3.2
-
-
-
- io.prometheus
- client
- 0.0.10
-
-
- io.prometheus
- simpleclient
- 0.0.14-SNAPSHOT
-
-
- com.codahale.metrics
- metrics-core
- 3.0.2
-
-
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
- 2.2
-
-
- package
-
- shade
-
-
- benchmarks
-
-
- org.openjdk.jmh.Main
-
-
-
-
-
- *:*
-
- META-INF/*.SF
- META-INF/*.DSA
- META-INF/*.RSA
-
-
-
-
-
-
-
-
-
-
diff --git a/benchmarks/README.md b/benchmarks/README.md
new file mode 100644
index 000000000..b4c824d85
--- /dev/null
+++ b/benchmarks/README.md
@@ -0,0 +1,87 @@
+# Benchmarks
+
+## How to Run
+
+### Running benchmarks
+
+Run benchmarks and update the results in the Javadoc of the benchmark classes:
+
+```shell
+mise run update-benchmarks
+```
+
+### Different benchmark configurations
+
+The full benchmark suite takes approximately 2 hours with JMH defaults.
+For faster iterations, use these preset configurations:
+
+| Command | Duration | Use Case |
+| ----------------------------- | -------- | ---------------------------------------- |
+| `mise run benchmark:quick` | ~10 min | Quick smoke test during development |
+| `mise run benchmark:standard` | ~60 min | CI/nightly runs with good accuracy |
+| `mise run benchmark:full` | ~2 hours | Full JMH defaults for release validation |
+
+### Running benchmarks manually
+
+```shell
+java -jar ./benchmarks/target/benchmarks.jar
+```
+
+Run only one specific benchmark:
+
+```shell
+java -jar ./benchmarks/target/benchmarks.jar CounterBenchmark
+```
+
+### Custom JMH arguments
+
+You can pass custom JMH arguments:
+
+```shell
+# Quick run: 1 fork, 1 warmup iteration, 3 measurement iterations
+mise run update-benchmarks -- --jmh-args "-f 1 -wi 1 -i 3"
+
+# Standard CI: 3 forks, 3 warmup iterations, 5 measurement iterations
+mise run update-benchmarks -- --jmh-args "-f 3 -wi 3 -i 5"
+```
+
+JMH parameter reference:
+
+- `-f N`: Number of forks (JVM restarts)
+- `-wi N`: Number of warmup iterations
+- `-i N`: Number of measurement iterations
+- `-w Ns`: Warmup iteration time (default: 10s)
+- `-r Ns`: Measurement iteration time (default: 10s)
+
+## Results
+
+See Javadoc of the benchmark classes:
+
+- [CounterBenchmark](https://github.com/prometheus/client_java/blob/main/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/CounterBenchmark.java)
+- [HistogramBenchmark](https://github.com/prometheus/client_java/blob/main/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/HistogramBenchmark.java)
+- [TextFormatUtilBenchmark](https://github.com/prometheus/client_java/blob/main/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/TextFormatUtilBenchmark.java)
+
+## What Prometheus Java client optimizes for
+
+concurrent updates of metrics in multi-threaded applications.
+If your application is single-threaded and uses only one processor core, your application isn't
+performance critical anyway.
+If your application is designed to use all available processor cores for maximum performance, then
+you want a metric library that doesn't slow your
+application down.
+Prometheus client Java metrics support concurrent updates and scrapes. This shows in benchmarks with
+multiple threads recording data in shared
+metrics.
+
+## Test the benchmark creation script
+
+To test the benchmark creation script, run:
+
+```shell
+python ./.mise/tasks/test_update-benchmarks.py
+```
+
+## Archive
+
+The `src/main/archive/` directory contains the old benchmarks from 0.16.0 and earlier. It will be
+removed as soon as all benchmarks are ported to the 1.0.0 release.
diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml
new file mode 100644
index 000000000..7c211006b
--- /dev/null
+++ b/benchmarks/pom.xml
@@ -0,0 +1,126 @@
+
+
+ 4.0.0
+
+
+ io.prometheus
+ client_java
+ 1.6.0-SNAPSHOT
+
+
+ benchmarks
+
+ Prometheus Java Client Benchmarks
+
+ Benchmarks of client performance, and comparison to other systems.
+
+
+
+ 1.37
+ 0.16.0
+ 3.0.2
+ true
+ true
+
+
+
+
+
+ io.opentelemetry.instrumentation
+ opentelemetry-instrumentation-bom-alpha
+ ${otel.instrumentation.version}
+ pom
+ import
+
+
+
+
+
+
+ org.openjdk.jmh
+ jmh-core
+ ${jmh.version}
+
+
+ io.prometheus
+ prometheus-metrics-core
+ ${project.version}
+
+
+ io.prometheus
+ prometheus-metrics-exposition-textformats
+ ${project.version}
+
+
+ io.prometheus
+ simpleclient
+ ${simpleclient.version}
+
+
+ com.codahale.metrics
+ metrics-core
+ ${codahale.version}
+
+
+ io.opentelemetry
+ opentelemetry-api
+
+
+ io.opentelemetry
+ opentelemetry-sdk
+
+
+ io.opentelemetry
+ opentelemetry-sdk-testing
+
+
+
+ ${project.artifactId}
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.8
+ 1.8
+
+
+ -parameters
+
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh.version}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+
+ package
+
+ shade
+
+
+ benchmarks
+
+
+ io.prometheus.metrics.benchmarks.BenchmarkRunner
+
+
+
+
+
+
+
+
+
+
diff --git a/benchmarks/src/archive/java/io/prometheus/client/CKMSQuantileBenchmark.java b/benchmarks/src/archive/java/io/prometheus/client/CKMSQuantileBenchmark.java
new file mode 100644
index 000000000..ab383d327
--- /dev/null
+++ b/benchmarks/src/archive/java/io/prometheus/client/CKMSQuantileBenchmark.java
@@ -0,0 +1,132 @@
+package io.prometheus.client;
+
+import io.prometheus.client.CKMSQuantiles.Quantile;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.TimeUnit;
+import org.openjdk.jmh.annotations.*;
+import org.openjdk.jmh.infra.Blackhole;
+import org.openjdk.jmh.runner.Runner;
+import org.openjdk.jmh.runner.RunnerException;
+import org.openjdk.jmh.runner.options.Options;
+import org.openjdk.jmh.runner.options.OptionsBuilder;
+
+public class CKMSQuantileBenchmark {
+
+ @State(Scope.Benchmark)
+ public static class EmptyBenchmarkState {
+ @Param({"10000", "100000", "1000000"})
+ public int value;
+
+ List quantiles;
+ Random rand = new Random(0);
+
+ List shuffle;
+
+ Quantile mean = new Quantile(0.50, 0.050);
+ Quantile q90 = new Quantile(0.90, 0.010);
+ Quantile q95 = new Quantile(0.95, 0.005);
+ Quantile q99 = new Quantile(0.99, 0.001);
+
+ @Setup(Level.Trial)
+ public void setup() {
+ quantiles = new ArrayList();
+ quantiles.add(mean);
+ quantiles.add(q90);
+ quantiles.add(q95);
+ quantiles.add(q99);
+
+ shuffle = new ArrayList(value);
+ for (int i = 0; i < value; i++) {
+ shuffle.add((double) i);
+ }
+ Collections.shuffle(shuffle, rand);
+ }
+ }
+
+ @Benchmark
+ @BenchmarkMode({Mode.AverageTime})
+ @OutputTimeUnit(TimeUnit.MILLISECONDS)
+ public void ckmsQuantileInsertBenchmark(EmptyBenchmarkState state) {
+ CKMSQuantiles q = new CKMSQuantiles(state.quantiles.toArray(new Quantile[] {}));
+ for (Double l : state.shuffle) {
+ q.insert(l);
+ }
+ }
+
+ /** prefilled benchmark, means that we already have a filled and compressed samples available */
+ @State(Scope.Benchmark)
+ public static class PrefilledBenchmarkState {
+ @Param({"10000", "100000", "1000000"})
+ public int value;
+
+ CKMSQuantiles ckmsQuantiles;
+
+ List quantiles;
+ Random rand = new Random(0);
+
+ Quantile mean = new Quantile(0.50, 0.050);
+ Quantile q90 = new Quantile(0.90, 0.010);
+ Quantile q95 = new Quantile(0.95, 0.005);
+ Quantile q99 = new Quantile(0.99, 0.001);
+ List shuffle;
+
+ int rank = (int) (value * q95.quantile);
+
+ @Setup(Level.Trial)
+ public void setup() {
+ quantiles = new ArrayList();
+ quantiles.add(mean);
+ quantiles.add(q90);
+ quantiles.add(q95);
+ quantiles.add(q99);
+
+ shuffle = new ArrayList(value);
+ for (int i = 0; i < value; i++) {
+ shuffle.add((double) i);
+ }
+ Collections.shuffle(shuffle, rand);
+
+ ckmsQuantiles = new CKMSQuantiles(quantiles.toArray(new Quantile[] {}));
+ for (Double l : shuffle) {
+ ckmsQuantiles.insert(l);
+ }
+ // make sure we inserted all 'hanging' samples (count % 128)
+ ckmsQuantiles.get(0);
+ // compress everything so we have a similar samples size regardless of n.
+ ckmsQuantiles.compress();
+ System.out.println("Sample size is: " + ckmsQuantiles.samples.size());
+ }
+ }
+
+ @Benchmark
+ @BenchmarkMode({Mode.AverageTime})
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ public void ckmsQuantileGetBenchmark(Blackhole blackhole, PrefilledBenchmarkState state) {
+ blackhole.consume(state.ckmsQuantiles.get(state.q90.quantile));
+ }
+
+ /** benchmark for the f method. */
+ @Benchmark
+ @BenchmarkMode({Mode.AverageTime})
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ public void ckmsQuantileF(Blackhole blackhole, PrefilledBenchmarkState state) {
+ blackhole.consume(state.ckmsQuantiles.f(state.rank));
+ }
+
+ public static void main(String[] args) throws RunnerException {
+
+ Options opt =
+ new OptionsBuilder()
+ .include(CKMSQuantileBenchmark.class.getSimpleName())
+ .warmupIterations(5)
+ .measurementIterations(4)
+ .threads(1)
+ .forks(1)
+ .build();
+
+ new Runner(opt).run();
+ }
+}
diff --git a/benchmark/src/main/java/io/prometheus/benchmark/CounterBenchmark.java b/benchmarks/src/archive/java/io/prometheus/client/benchmark/CounterBenchmark.java
similarity index 59%
rename from benchmark/src/main/java/io/prometheus/benchmark/CounterBenchmark.java
rename to benchmarks/src/archive/java/io/prometheus/client/benchmark/CounterBenchmark.java
index ca644070c..c37076156 100644
--- a/benchmark/src/main/java/io/prometheus/benchmark/CounterBenchmark.java
+++ b/benchmarks/src/archive/java/io/prometheus/client/benchmark/CounterBenchmark.java
@@ -1,11 +1,10 @@
-package io.prometheus.benchmark;
+package io.prometheus.client.benchmark;
import com.codahale.metrics.MetricRegistry;
-
import java.util.concurrent.TimeUnit;
+import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
-import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
@@ -22,69 +21,47 @@ public class CounterBenchmark {
com.codahale.metrics.Counter codahaleCounter;
com.codahale.metrics.Meter codahaleMeter;
- io.prometheus.client.metrics.Counter prometheusCounter;
- io.prometheus.client.metrics.Counter.Child prometheusCounterChild;
io.prometheus.client.Counter prometheusSimpleCounter;
io.prometheus.client.Counter.Child prometheusSimpleCounterChild;
io.prometheus.client.Counter prometheusSimpleCounterNoLabels;
@Setup
public void setup() {
- prometheusCounter = io.prometheus.client.metrics.Counter.newBuilder()
- .name("name")
- .documentation("some description..")
- .build();
- prometheusCounterChild = prometheusCounter.newPartial().apply();
-
- prometheusSimpleCounter = io.prometheus.client.Counter.build()
- .name("name")
- .help("some description..")
- .labelNames("some", "group").create();
+ prometheusSimpleCounter =
+ io.prometheus.client.Counter.build()
+ .name("name")
+ .help("some description..")
+ .labelNames("some", "group")
+ .create();
prometheusSimpleCounterChild = prometheusSimpleCounter.labels("test", "group");
- prometheusSimpleCounterNoLabels = io.prometheus.client.Counter.build()
- .name("name")
- .help("some description..")
- .create();
+ prometheusSimpleCounterNoLabels =
+ io.prometheus.client.Counter.build().name("name").help("some description..").create();
registry = new MetricRegistry();
codahaleCounter = registry.counter("counter");
codahaleMeter = registry.meter("meter");
}
- @Benchmark
- @BenchmarkMode({Mode.AverageTime})
- @OutputTimeUnit(TimeUnit.NANOSECONDS)
- public void prometheusCounterIncBenchmark() {
- prometheusCounter.newPartial().apply().increment();
- }
-
- @Benchmark
- @BenchmarkMode({Mode.AverageTime})
- @OutputTimeUnit(TimeUnit.NANOSECONDS)
- public void prometheusCounterChildIncBenchmark() {
- prometheusCounterChild.increment();
- }
-
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleCounterIncBenchmark() {
- prometheusSimpleCounter.labels("test", "group").inc();
+ prometheusSimpleCounter.labels("test", "group").inc();
}
-
+
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleCounterChildIncBenchmark() {
- prometheusSimpleCounterChild.inc();
+ prometheusSimpleCounterChild.inc();
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleCounterNoLabelsIncBenchmark() {
- prometheusSimpleCounterNoLabels.inc();
+ prometheusSimpleCounterNoLabels.inc();
}
@Benchmark
@@ -103,13 +80,14 @@ public void codahaleMeterMarkBenchmark() {
public static void main(String[] args) throws RunnerException {
- Options opt = new OptionsBuilder()
- .include(CounterBenchmark.class.getSimpleName())
- .warmupIterations(5)
- .measurementIterations(4)
- .threads(4)
- .forks(1)
- .build();
+ Options opt =
+ new OptionsBuilder()
+ .include(CounterBenchmark.class.getSimpleName())
+ .warmupIterations(5)
+ .measurementIterations(4)
+ .threads(4)
+ .forks(1)
+ .build();
new Runner(opt).run();
}
diff --git a/benchmarks/src/archive/java/io/prometheus/client/benchmark/ExemplarsBenchmark.java b/benchmarks/src/archive/java/io/prometheus/client/benchmark/ExemplarsBenchmark.java
new file mode 100644
index 000000000..a3fa45ae1
--- /dev/null
+++ b/benchmarks/src/archive/java/io/prometheus/client/benchmark/ExemplarsBenchmark.java
@@ -0,0 +1,87 @@
+package io.prometheus.client.benchmark;
+
+import io.prometheus.client.Counter;
+import io.prometheus.client.exemplars.DefaultExemplarSampler;
+import io.prometheus.client.exemplars.tracer.common.SpanContextSupplier;
+import java.util.concurrent.TimeUnit;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.annotations.OutputTimeUnit;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+
+@State(Scope.Benchmark)
+public class ExemplarsBenchmark {
+
+ private Counter counter;
+ private Counter counterWithExemplars;
+ private Counter counterWithoutExemplars;
+
+ @Setup
+ public void setup() {
+
+ counter =
+ Counter.build()
+ .name("counter_total")
+ .help("Total number of requests.")
+ .labelNames("path")
+ .create();
+
+ counterWithExemplars =
+ Counter.build()
+ .name("counter_with_exemplars_total")
+ .help("Total number of requests.")
+ .labelNames("path")
+ .withExemplarSampler(new DefaultExemplarSampler(new MockSpanContextSupplier()))
+ .create();
+
+ counterWithoutExemplars =
+ Counter.build()
+ .name("counter_without_exemplars_total")
+ .help("Total number of requests.")
+ .labelNames("path")
+ .withoutExemplars()
+ .create();
+ }
+
+ @Benchmark
+ @BenchmarkMode({Mode.AverageTime})
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ public void testCounter() {
+ counter.labels("test").inc();
+ }
+
+ @Benchmark
+ @BenchmarkMode({Mode.AverageTime})
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ public void testCounterWithExemplars() {
+ counterWithExemplars.labels("test").inc();
+ }
+
+ @Benchmark
+ @BenchmarkMode({Mode.AverageTime})
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ public void testCounterWithoutExemplars() {
+ counterWithoutExemplars.labels("test").inc();
+ }
+
+ private static class MockSpanContextSupplier implements SpanContextSupplier {
+
+ @Override
+ public String getTraceId() {
+ return "trace-id";
+ }
+
+ @Override
+ public String getSpanId() {
+ return "span-id";
+ }
+
+ @Override
+ public boolean isSampled() {
+ return true;
+ }
+ }
+}
diff --git a/benchmark/src/main/java/io/prometheus/benchmark/GaugeBenchmark.java b/benchmarks/src/archive/java/io/prometheus/client/benchmark/GaugeBenchmark.java
similarity index 55%
rename from benchmark/src/main/java/io/prometheus/benchmark/GaugeBenchmark.java
rename to benchmarks/src/archive/java/io/prometheus/client/benchmark/GaugeBenchmark.java
index d8037723f..a8eb03c83 100644
--- a/benchmark/src/main/java/io/prometheus/benchmark/GaugeBenchmark.java
+++ b/benchmarks/src/archive/java/io/prometheus/client/benchmark/GaugeBenchmark.java
@@ -1,11 +1,10 @@
-package io.prometheus.benchmark;
+package io.prometheus.client.benchmark;
import com.codahale.metrics.MetricRegistry;
-
import java.util.concurrent.TimeUnit;
+import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
-import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
@@ -21,69 +20,47 @@ public class GaugeBenchmark {
MetricRegistry registry;
com.codahale.metrics.Counter codahaleCounter;
- io.prometheus.client.metrics.Gauge prometheusGauge;
- io.prometheus.client.metrics.Gauge.Child prometheusGaugeChild;
io.prometheus.client.Gauge prometheusSimpleGauge;
io.prometheus.client.Gauge.Child prometheusSimpleGaugeChild;
io.prometheus.client.Gauge prometheusSimpleGaugeNoLabels;
@Setup
public void setup() {
- prometheusGauge = io.prometheus.client.metrics.Gauge.newBuilder()
- .name("name")
- .documentation("some description..")
- .build();
- prometheusGaugeChild = prometheusGauge.newPartial().apply();
-
- prometheusSimpleGauge = io.prometheus.client.Gauge.build()
- .name("name")
- .help("some description..")
- .labelNames("some", "group").create();
+ prometheusSimpleGauge =
+ io.prometheus.client.Gauge.build()
+ .name("name")
+ .help("some description..")
+ .labelNames("some", "group")
+ .create();
prometheusSimpleGaugeChild = prometheusSimpleGauge.labels("test", "group");
- prometheusSimpleGaugeNoLabels = io.prometheus.client.Gauge.build()
- .name("name")
- .help("some description..")
- .create();
+ prometheusSimpleGaugeNoLabels =
+ io.prometheus.client.Gauge.build().name("name").help("some description..").create();
registry = new MetricRegistry();
codahaleCounter = registry.counter("name");
}
// Increment.
- @Benchmark
- @BenchmarkMode({Mode.AverageTime})
- @OutputTimeUnit(TimeUnit.NANOSECONDS)
- public void prometheusGaugeIncBenchmark() {
- prometheusGauge.newPartial().apply().increment();
- }
-
- @Benchmark
- @BenchmarkMode({Mode.AverageTime})
- @OutputTimeUnit(TimeUnit.NANOSECONDS)
- public void prometheusGaugeChildIncBenchmark() {
- prometheusGaugeChild.increment();
- }
-
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleGaugeIncBenchmark() {
- prometheusSimpleGauge.labels("test", "group").inc();
+ prometheusSimpleGauge.labels("test", "group").inc();
}
-
+
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleGaugeChildIncBenchmark() {
- prometheusSimpleGaugeChild.inc();
+ prometheusSimpleGaugeChild.inc();
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleGaugeNoLabelsIncBenchmark() {
- prometheusSimpleGaugeNoLabels.inc();
+ prometheusSimpleGaugeNoLabels.inc();
}
@Benchmark
@@ -93,41 +70,26 @@ public void codahaleCounterIncBenchmark() {
codahaleCounter.inc();
}
-
// Decrement.
- @Benchmark
- @BenchmarkMode({Mode.AverageTime})
- @OutputTimeUnit(TimeUnit.NANOSECONDS)
- public void prometheusGaugeDecBenchmark() {
- prometheusGauge.newPartial().apply().decrement();
- }
-
- @Benchmark
- @BenchmarkMode({Mode.AverageTime})
- @OutputTimeUnit(TimeUnit.NANOSECONDS)
- public void prometheusGaugeChildDecBenchmark() {
- prometheusGaugeChild.decrement();
- }
-
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleGaugeDecBenchmark() {
- prometheusSimpleGauge.labels("test", "group").dec();
+ prometheusSimpleGauge.labels("test", "group").dec();
}
-
+
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleGaugeChildDecBenchmark() {
- prometheusSimpleGaugeChild.dec();
+ prometheusSimpleGaugeChild.dec();
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleGaugeNoLabelsDecBenchmark() {
- prometheusSimpleGaugeNoLabels.dec();
+ prometheusSimpleGaugeNoLabels.dec();
}
@Benchmark
@@ -138,27 +100,13 @@ public void codahaleCounterDecBenchmark() {
}
// Set.
- @Benchmark
- @BenchmarkMode({Mode.AverageTime})
- @OutputTimeUnit(TimeUnit.NANOSECONDS)
- public void prometheusGaugeSetBenchmark() {
- prometheusGauge.newPartial().apply().set(42);
- }
-
- @Benchmark
- @BenchmarkMode({Mode.AverageTime})
- @OutputTimeUnit(TimeUnit.NANOSECONDS)
- public void prometheusGaugeChildSetBenchmark() {
- prometheusGaugeChild.set(42);
- }
-
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleGaugeSetBenchmark() {
- prometheusSimpleGauge.labels("test", "group").set(42);
+ prometheusSimpleGauge.labels("test", "group").set(42);
}
-
+
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@@ -170,18 +118,19 @@ public void prometheusSimpleGaugeChildSetBenchmark() {
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleGaugeNoLabelsSetBenchmark() {
- prometheusSimpleGaugeNoLabels.set(42);
+ prometheusSimpleGaugeNoLabels.set(42);
}
public static void main(String[] args) throws RunnerException {
- Options opt = new OptionsBuilder()
- .include(GaugeBenchmark.class.getSimpleName())
- .warmupIterations(5)
- .measurementIterations(4)
- .threads(4)
- .forks(1)
- .build();
+ Options opt =
+ new OptionsBuilder()
+ .include(GaugeBenchmark.class.getSimpleName())
+ .warmupIterations(5)
+ .measurementIterations(4)
+ .threads(4)
+ .forks(1)
+ .build();
new Runner(opt).run();
}
diff --git a/benchmarks/src/archive/java/io/prometheus/client/benchmark/SanitizeMetricNameBenchmark.java b/benchmarks/src/archive/java/io/prometheus/client/benchmark/SanitizeMetricNameBenchmark.java
new file mode 100644
index 000000000..cb5f300ce
--- /dev/null
+++ b/benchmarks/src/archive/java/io/prometheus/client/benchmark/SanitizeMetricNameBenchmark.java
@@ -0,0 +1,49 @@
+package io.prometheus.client.benchmark;
+
+import io.prometheus.client.Collector;
+import java.util.concurrent.TimeUnit;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.annotations.OutputTimeUnit;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.runner.Runner;
+import org.openjdk.jmh.runner.RunnerException;
+import org.openjdk.jmh.runner.options.Options;
+import org.openjdk.jmh.runner.options.OptionsBuilder;
+import org.openjdk.jmh.runner.options.TimeValue;
+
+@State(Scope.Benchmark)
+public class SanitizeMetricNameBenchmark {
+
+ @Benchmark
+ @BenchmarkMode({Mode.AverageTime})
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ public void sanitizeSanitizedName() {
+ Collector.sanitizeMetricName("good_name");
+ }
+
+ @Benchmark
+ @BenchmarkMode({Mode.AverageTime})
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ public void sanitizeNonSanitizedName() {
+ Collector.sanitizeMetricName("9not_good_name!");
+ }
+
+ public static void main(String[] args) throws RunnerException {
+
+ Options opt =
+ new OptionsBuilder()
+ .include(SanitizeMetricNameBenchmark.class.getSimpleName())
+ .warmupIterations(5)
+ .measurementIterations(4)
+ .measurementTime(TimeValue.seconds(1))
+ .warmupTime(TimeValue.seconds(1))
+ .threads(4)
+ .forks(1)
+ .build();
+
+ new Runner(opt).run();
+ }
+}
diff --git a/benchmark/src/main/java/io/prometheus/benchmark/SummaryBenchmark.java b/benchmarks/src/archive/java/io/prometheus/client/benchmark/SummaryBenchmark.java
similarity index 60%
rename from benchmark/src/main/java/io/prometheus/benchmark/SummaryBenchmark.java
rename to benchmarks/src/archive/java/io/prometheus/client/benchmark/SummaryBenchmark.java
index 3a77dc5ec..2964b8ea8 100644
--- a/benchmark/src/main/java/io/prometheus/benchmark/SummaryBenchmark.java
+++ b/benchmarks/src/archive/java/io/prometheus/client/benchmark/SummaryBenchmark.java
@@ -1,11 +1,10 @@
-package io.prometheus.benchmark;
+package io.prometheus.client.benchmark;
import com.codahale.metrics.MetricRegistry;
-
import java.util.concurrent.TimeUnit;
+import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
-import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
@@ -21,8 +20,6 @@ public class SummaryBenchmark {
MetricRegistry registry;
com.codahale.metrics.Histogram codahaleHistogram;
- io.prometheus.client.metrics.Summary prometheusSummary;
- io.prometheus.client.metrics.Summary.Child prometheusSummaryChild;
io.prometheus.client.Summary prometheusSimpleSummary;
io.prometheus.client.Summary.Child prometheusSimpleSummaryChild;
io.prometheus.client.Summary prometheusSimpleSummaryNoLabels;
@@ -32,78 +29,58 @@ public class SummaryBenchmark {
@Setup
public void setup() {
- prometheusSummary = io.prometheus.client.metrics.Summary.newBuilder()
- .name("name")
- .documentation("some description..")
- .build();
- prometheusSummaryChild = prometheusSummary.newPartial().apply();
-
- prometheusSimpleSummary = io.prometheus.client.Summary.build()
- .name("name")
- .help("some description..")
- .labelNames("some", "group").create();
+ prometheusSimpleSummary =
+ io.prometheus.client.Summary.build()
+ .name("name")
+ .help("some description..")
+ .labelNames("some", "group")
+ .create();
prometheusSimpleSummaryChild = prometheusSimpleSummary.labels("test", "group");
- prometheusSimpleSummaryNoLabels = io.prometheus.client.Summary.build()
- .name("name")
- .help("some description..")
- .create();
+ prometheusSimpleSummaryNoLabels =
+ io.prometheus.client.Summary.build().name("name").help("some description..").create();
- prometheusSimpleHistogram = io.prometheus.client.Histogram.build()
- .name("name")
- .help("some description..")
- .labelNames("some", "group").create();
+ prometheusSimpleHistogram =
+ io.prometheus.client.Histogram.build()
+ .name("name")
+ .help("some description..")
+ .labelNames("some", "group")
+ .create();
prometheusSimpleHistogramChild = prometheusSimpleHistogram.labels("test", "group");
- prometheusSimpleHistogramNoLabels = io.prometheus.client.Histogram.build()
- .name("name")
- .help("some description..")
- .create();
+ prometheusSimpleHistogramNoLabels =
+ io.prometheus.client.Histogram.build().name("name").help("some description..").create();
registry = new MetricRegistry();
codahaleHistogram = registry.histogram("name");
}
- @Benchmark
- @BenchmarkMode({Mode.AverageTime})
- @OutputTimeUnit(TimeUnit.NANOSECONDS)
- public void prometheusSummaryBenchmark() {
- prometheusSummary.newPartial().apply().observe(1.0);
- }
-
- @Benchmark
- @BenchmarkMode({Mode.AverageTime})
- @OutputTimeUnit(TimeUnit.NANOSECONDS)
- public void prometheusSummaryChildBenchmark() {
- prometheusSummaryChild.observe(1.0);
- }
-
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleSummaryBenchmark() {
- prometheusSimpleSummary.labels("test", "group").observe(1) ;
+ prometheusSimpleSummary.labels("test", "group").observe(1);
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleSummaryChildBenchmark() {
- prometheusSimpleSummaryChild.observe(1);
+ prometheusSimpleSummaryChild.observe(1);
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleSummaryNoLabelsBenchmark() {
- prometheusSimpleSummaryNoLabels.observe(1);
+ prometheusSimpleSummaryNoLabels.observe(1);
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleHistogramBenchmark() {
- prometheusSimpleHistogram.labels("test", "group").observe(1) ;
+ prometheusSimpleHistogram.labels("test", "group").observe(1);
}
@Benchmark
@@ -129,13 +106,14 @@ public void codahaleHistogramBenchmark() {
public static void main(String[] args) throws RunnerException {
- Options opt = new OptionsBuilder()
- .include(SummaryBenchmark.class.getSimpleName())
- .warmupIterations(5)
- .measurementIterations(4)
- .threads(4)
- .forks(1)
- .build();
+ Options opt =
+ new OptionsBuilder()
+ .include(SummaryBenchmark.class.getSimpleName())
+ .warmupIterations(5)
+ .measurementIterations(4)
+ .threads(4)
+ .forks(1)
+ .build();
new Runner(opt).run();
}
diff --git a/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/BenchmarkRunner.java b/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/BenchmarkRunner.java
new file mode 100644
index 000000000..9d5d242ae
--- /dev/null
+++ b/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/BenchmarkRunner.java
@@ -0,0 +1,7 @@
+package io.prometheus.metrics.benchmarks;
+
+public class BenchmarkRunner {
+ public static void main(String[] args) throws Exception {
+ org.openjdk.jmh.Main.main(args);
+ }
+}
diff --git a/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/CounterBenchmark.java b/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/CounterBenchmark.java
new file mode 100644
index 000000000..f5d0a1a0f
--- /dev/null
+++ b/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/CounterBenchmark.java
@@ -0,0 +1,206 @@
+package io.prometheus.metrics.benchmarks;
+
+import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.common.AttributeKey;
+import io.opentelemetry.api.common.Attributes;
+import io.opentelemetry.api.metrics.DoubleCounter;
+import io.opentelemetry.api.metrics.LongCounter;
+import io.opentelemetry.api.metrics.Meter;
+import io.opentelemetry.sdk.OpenTelemetrySdk;
+import io.opentelemetry.sdk.metrics.SdkMeterProvider;
+import io.opentelemetry.sdk.resources.Resource;
+import io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader;
+import io.prometheus.metrics.core.datapoints.CounterDataPoint;
+import io.prometheus.metrics.core.metrics.Counter;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+
+/**
+ * Results on a machine with dedicated Ubuntu 24.04 LTS, AMD Ryzen™ 9 7900 × 24, 96.0 GiB RAM:
+ *
+ *
+ * Benchmark Mode Cnt Score Error Units
+ * CounterBenchmark.codahaleIncNoLabels thrpt 25 144632.191 ± 2778.333 ops/s
+ * CounterBenchmark.openTelemetryAdd thrpt 25 2165.775 ± 168.554 ops/s
+ * CounterBenchmark.openTelemetryInc thrpt 25 1940.143 ± 86.223 ops/s
+ * CounterBenchmark.openTelemetryIncNoLabels thrpt 25 1880.089 ± 192.395 ops/s
+ * CounterBenchmark.prometheusAdd thrpt 25 122427.789 ± 1377.485 ops/s
+ * CounterBenchmark.prometheusInc thrpt 25 183603.131 ± 2812.874 ops/s
+ * CounterBenchmark.prometheusNoLabelsInc thrpt 25 169733.499 ± 670.495 ops/s
+ * CounterBenchmark.simpleclientAdd thrpt 25 13771.151 ± 77.473 ops/s
+ * CounterBenchmark.simpleclientInc thrpt 25 14255.342 ± 117.339 ops/s
+ * CounterBenchmark.simpleclientNoLabelsInc thrpt 25 14175.465 ± 56.575 ops/s
+ *
+ *
+ * Prometheus counters are faster than counters of other libraries. For example, incrementing a
+ * single counter without labels is more than 2 times faster (34752 ops / second) than doing the
+ * same with an OpenTelemetry counter (16634 ops / sec).
+ */
+public class CounterBenchmark {
+
+ @State(Scope.Benchmark)
+ public static class PrometheusCounter {
+
+ final Counter noLabels;
+ final CounterDataPoint dataPoint;
+
+ public PrometheusCounter() {
+ noLabels = Counter.builder().name("test").help("help").build();
+
+ Counter labels =
+ Counter.builder().name("test").help("help").labelNames("path", "status").build();
+ this.dataPoint = labels.labelValues("/", "200");
+ }
+ }
+
+ @State(Scope.Benchmark)
+ public static class SimpleclientCounter {
+
+ final io.prometheus.client.Counter noLabels;
+ final io.prometheus.client.Counter.Child dataPoint;
+
+ public SimpleclientCounter() {
+ noLabels = io.prometheus.client.Counter.build().name("name").help("help").create();
+
+ io.prometheus.client.Counter counter =
+ io.prometheus.client.Counter.build()
+ .name("name")
+ .help("help")
+ .labelNames("path", "status")
+ .create();
+
+ this.dataPoint = counter.labels("/", "200");
+ }
+ }
+
+ @State(Scope.Benchmark)
+ public static class CodahaleCounterNoLabels {
+ final com.codahale.metrics.Counter counter =
+ new com.codahale.metrics.MetricRegistry().counter("test");
+ }
+
+ @State(Scope.Benchmark)
+ public static class OpenTelemetryCounter {
+
+ final LongCounter longCounter;
+ final DoubleCounter doubleCounter;
+ final Attributes attributes;
+
+ public OpenTelemetryCounter() {
+
+ SdkMeterProvider sdkMeterProvider =
+ SdkMeterProvider.builder()
+ .registerMetricReader(InMemoryMetricReader.create())
+ .setResource(Resource.getDefault())
+ .build();
+ OpenTelemetry openTelemetry =
+ OpenTelemetrySdk.builder().setMeterProvider(sdkMeterProvider).build();
+ Meter meter =
+ openTelemetry
+ .meterBuilder("instrumentation-library-name")
+ .setInstrumentationVersion("1.0.0")
+ .build();
+ this.longCounter = meter.counterBuilder("test1").setDescription("test").build();
+ this.doubleCounter = meter.counterBuilder("test2").ofDoubles().setDescription("test").build();
+ this.attributes =
+ Attributes.of(
+ AttributeKey.stringKey("path"), "/",
+ AttributeKey.stringKey("status"), "200");
+ }
+ }
+
+ @Benchmark
+ @Threads(4)
+ public CounterDataPoint prometheusAdd(RandomNumbers randomNumbers, PrometheusCounter counter) {
+ for (int i = 0; i < randomNumbers.randomNumbers.length; i++) {
+ counter.dataPoint.inc(randomNumbers.randomNumbers[i]);
+ }
+ return counter.dataPoint;
+ }
+
+ @Benchmark
+ @Threads(4)
+ public CounterDataPoint prometheusInc(PrometheusCounter counter) {
+ for (int i = 0; i < 10 * 1024; i++) {
+ counter.dataPoint.inc();
+ }
+ return counter.dataPoint;
+ }
+
+ @Benchmark
+ @Threads(4)
+ public DoubleCounter openTelemetryAdd(RandomNumbers randomNumbers, OpenTelemetryCounter counter) {
+ for (int i = 0; i < randomNumbers.randomNumbers.length; i++) {
+ counter.doubleCounter.add(randomNumbers.randomNumbers[i], counter.attributes);
+ }
+ return counter.doubleCounter;
+ }
+
+ @Benchmark
+ @Threads(4)
+ public LongCounter openTelemetryInc(OpenTelemetryCounter counter) {
+ for (int i = 0; i < 10 * 1024; i++) {
+ counter.longCounter.add(1, counter.attributes);
+ }
+ return counter.longCounter;
+ }
+
+ @Benchmark
+ @Threads(4)
+ public LongCounter openTelemetryIncNoLabels(OpenTelemetryCounter counter) {
+ for (int i = 0; i < 10 * 1024; i++) {
+ counter.longCounter.add(1);
+ }
+ return counter.longCounter;
+ }
+
+ @Benchmark
+ @Threads(4)
+ public io.prometheus.client.Counter.Child simpleclientAdd(
+ RandomNumbers randomNumbers, SimpleclientCounter counter) {
+ for (int i = 0; i < randomNumbers.randomNumbers.length; i++) {
+ counter.dataPoint.inc(randomNumbers.randomNumbers[i]);
+ }
+ return counter.dataPoint;
+ }
+
+ @Benchmark
+ @Threads(4)
+ public io.prometheus.client.Counter.Child simpleclientInc(SimpleclientCounter counter) {
+ for (int i = 0; i < 10 * 1024; i++) {
+ counter.dataPoint.inc();
+ }
+ return counter.dataPoint;
+ }
+
+ @Benchmark
+ @Threads(4)
+ public com.codahale.metrics.Counter codahaleIncNoLabels(
+ RandomNumbers randomNumbers, CodahaleCounterNoLabels counter) {
+ for (int i = 0; i < 10 * 1024; i++) {
+ counter.counter.inc();
+ }
+ return counter.counter;
+ }
+
+ @Benchmark
+ @Threads(4)
+ public io.prometheus.metrics.core.metrics.Counter prometheusNoLabelsInc(
+ PrometheusCounter counter) {
+ for (int i = 0; i < 10 * 1024; i++) {
+ counter.noLabels.inc();
+ }
+ return counter.noLabels;
+ }
+
+ @Benchmark
+ @Threads(4)
+ public io.prometheus.client.Counter simpleclientNoLabelsInc(SimpleclientCounter counter) {
+ for (int i = 0; i < 10 * 1024; i++) {
+ counter.noLabels.inc();
+ }
+ return counter.noLabels;
+ }
+}
diff --git a/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/HistogramBenchmark.java b/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/HistogramBenchmark.java
new file mode 100644
index 000000000..9ada40f35
--- /dev/null
+++ b/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/HistogramBenchmark.java
@@ -0,0 +1,185 @@
+package io.prometheus.metrics.benchmarks;
+
+import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.metrics.Meter;
+import io.opentelemetry.sdk.OpenTelemetrySdk;
+import io.opentelemetry.sdk.metrics.Aggregation;
+import io.opentelemetry.sdk.metrics.InstrumentSelector;
+import io.opentelemetry.sdk.metrics.SdkMeterProvider;
+import io.opentelemetry.sdk.metrics.View;
+import io.opentelemetry.sdk.resources.Resource;
+import io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader;
+import io.prometheus.metrics.core.metrics.Histogram;
+import java.util.Arrays;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+
+/**
+ * Results on a machine with dedicated Ubuntu 24.04 LTS, AMD Ryzen™ 9 7900 × 24, 96.0 GiB RAM:
+ *
+ *
+ * Benchmark Mode Cnt Score Error Units
+ * HistogramBenchmark.openTelemetryClassic thrpt 25 968.178 ± 28.582 ops/s
+ * HistogramBenchmark.openTelemetryExponential thrpt 25 836.000 ± 17.709 ops/s
+ * HistogramBenchmark.prometheusClassic thrpt 25 7010.393 ± 683.782 ops/s
+ * HistogramBenchmark.prometheusNative thrpt 25 5040.572 ± 284.433 ops/s
+ * HistogramBenchmark.simpleclient thrpt 25 10485.462 ± 41.265 ops/s
+ *
+ *
+ * The simpleclient (i.e. client_java version 0.16.0 and older) histograms perform about the same as
+ * the classic histogram of the current 1.0.0 version.
+ *
+ * Compared to OpenTelemetry histograms the Prometheus Java client histograms perform more than 3
+ * times better (OpenTelemetry has 1908 ops / sec for classic histograms, while Prometheus has 6451
+ * ops / sec).
+ */
+public class HistogramBenchmark {
+
+ @State(Scope.Benchmark)
+ public static class PrometheusClassicHistogram {
+
+ final Histogram noLabels;
+
+ public PrometheusClassicHistogram() {
+ noLabels = Histogram.builder().name("test").help("help").classicOnly().build();
+ }
+ }
+
+ @State(Scope.Benchmark)
+ public static class PrometheusNativeHistogram {
+
+ final Histogram noLabels;
+
+ public PrometheusNativeHistogram() {
+ noLabels =
+ Histogram.builder()
+ .name("test")
+ .help("help")
+ .nativeOnly()
+ .nativeInitialSchema(5)
+ .nativeMaxNumberOfBuckets(0)
+ .build();
+ }
+ }
+
+ @State(Scope.Benchmark)
+ public static class SimpleclientHistogram {
+
+ final io.prometheus.client.Histogram noLabels;
+
+ public SimpleclientHistogram() {
+ noLabels = io.prometheus.client.Histogram.build().name("name").help("help").create();
+ }
+ }
+
+ @State(Scope.Benchmark)
+ public static class OpenTelemetryClassicHistogram {
+
+ final io.opentelemetry.api.metrics.DoubleHistogram histogram;
+
+ public OpenTelemetryClassicHistogram() {
+
+ SdkMeterProvider sdkMeterProvider =
+ SdkMeterProvider.builder()
+ .registerMetricReader(InMemoryMetricReader.create())
+ .setResource(Resource.getDefault())
+ .registerView(
+ InstrumentSelector.builder().setName("test").build(),
+ View.builder()
+ .setAggregation(
+ Aggregation.explicitBucketHistogram(
+ Arrays.asList(
+ .005, .01, .025, .05, .1, .25, .5, 1.0, 2.5, 5.0, 10.0)))
+ .build())
+ .build();
+ OpenTelemetry openTelemetry =
+ OpenTelemetrySdk.builder().setMeterProvider(sdkMeterProvider).build();
+ Meter meter =
+ openTelemetry
+ .meterBuilder("instrumentation-library-name")
+ .setInstrumentationVersion("1.0.0")
+ .build();
+ this.histogram = meter.histogramBuilder("test").setDescription("test").build();
+ }
+ }
+
+ @State(Scope.Benchmark)
+ public static class OpenTelemetryExponentialHistogram {
+
+ final io.opentelemetry.api.metrics.DoubleHistogram histogram;
+
+ public OpenTelemetryExponentialHistogram() {
+
+ SdkMeterProvider sdkMeterProvider =
+ SdkMeterProvider.builder()
+ .registerMetricReader(InMemoryMetricReader.create())
+ .setResource(Resource.getDefault())
+ .registerView(
+ InstrumentSelector.builder().setName("test").build(),
+ View.builder()
+ .setAggregation(Aggregation.base2ExponentialBucketHistogram(10_000, 5))
+ .build())
+ .build();
+ OpenTelemetry openTelemetry =
+ OpenTelemetrySdk.builder().setMeterProvider(sdkMeterProvider).build();
+ Meter meter =
+ openTelemetry
+ .meterBuilder("instrumentation-library-name")
+ .setInstrumentationVersion("1.0.0")
+ .build();
+ this.histogram = meter.histogramBuilder("test").setDescription("test").build();
+ }
+ }
+
+ @Benchmark
+ @Threads(4)
+ public Histogram prometheusClassic(
+ RandomNumbers randomNumbers, PrometheusClassicHistogram histogram) {
+ for (int i = 0; i < randomNumbers.randomNumbers.length; i++) {
+ histogram.noLabels.observe(randomNumbers.randomNumbers[i]);
+ }
+ return histogram.noLabels;
+ }
+
+ @Benchmark
+ @Threads(4)
+ public Histogram prometheusNative(
+ RandomNumbers randomNumbers, PrometheusNativeHistogram histogram) {
+ for (int i = 0; i < randomNumbers.randomNumbers.length; i++) {
+ histogram.noLabels.observe(randomNumbers.randomNumbers[i]);
+ }
+ return histogram.noLabels;
+ }
+
+ @Benchmark
+ @Threads(4)
+ public io.prometheus.client.Histogram simpleclient(
+ RandomNumbers randomNumbers, SimpleclientHistogram histogram) {
+ for (int i = 0; i < randomNumbers.randomNumbers.length; i++) {
+ histogram.noLabels.observe(randomNumbers.randomNumbers[i]);
+ }
+ return histogram.noLabels;
+ }
+
+ @Benchmark
+ @Threads(4)
+ public io.opentelemetry.api.metrics.DoubleHistogram openTelemetryClassic(
+ RandomNumbers randomNumbers, OpenTelemetryClassicHistogram histogram) {
+ for (int i = 0; i < randomNumbers.randomNumbers.length; i++) {
+ histogram.histogram.record(randomNumbers.randomNumbers[i]);
+ }
+ return histogram.histogram;
+ }
+
+ @Benchmark
+ @Threads(4)
+ public io.opentelemetry.api.metrics.DoubleHistogram openTelemetryExponential(
+ RandomNumbers randomNumbers, OpenTelemetryExponentialHistogram histogram) {
+ for (int i = 0; i < randomNumbers.randomNumbers.length; i++) {
+ histogram.histogram.record(randomNumbers.randomNumbers[i]);
+ }
+ return histogram.histogram;
+ }
+}
diff --git a/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/RandomNumbers.java b/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/RandomNumbers.java
new file mode 100644
index 000000000..6778c4ea1
--- /dev/null
+++ b/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/RandomNumbers.java
@@ -0,0 +1,18 @@
+package io.prometheus.metrics.benchmarks;
+
+import java.util.Random;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+
+@State(Scope.Thread)
+public class RandomNumbers {
+
+ final double[] randomNumbers = new double[10 * 1024];
+
+ public RandomNumbers() {
+ Random rand = new Random(0);
+ for (int i = 0; i < randomNumbers.length; i++) {
+ randomNumbers[i] = Math.abs(rand.nextGaussian());
+ }
+ }
+}
diff --git a/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/TextFormatUtilBenchmark.java b/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/TextFormatUtilBenchmark.java
new file mode 100644
index 000000000..ed3ef4246
--- /dev/null
+++ b/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/TextFormatUtilBenchmark.java
@@ -0,0 +1,136 @@
+package io.prometheus.metrics.benchmarks;
+
+import io.prometheus.metrics.config.EscapingScheme;
+import io.prometheus.metrics.expositionformats.ExpositionFormatWriter;
+import io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter;
+import io.prometheus.metrics.expositionformats.PrometheusTextFormatWriter;
+import io.prometheus.metrics.model.snapshots.GaugeSnapshot;
+import io.prometheus.metrics.model.snapshots.GaugeSnapshot.GaugeDataPointSnapshot;
+import io.prometheus.metrics.model.snapshots.Labels;
+import io.prometheus.metrics.model.snapshots.MetricSnapshot;
+import io.prometheus.metrics.model.snapshots.MetricSnapshots;
+import io.prometheus.metrics.model.snapshots.SummarySnapshot;
+import io.prometheus.metrics.model.snapshots.SummarySnapshot.SummaryDataPointSnapshot;
+import io.prometheus.metrics.model.snapshots.Unit;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+
+/**
+ * Results on a machine with dedicated Ubuntu 24.04 LTS, AMD Ryzen™ 9 7900 × 24, 96.0 GiB RAM:
+ *
+ *
+ * Benchmark Mode Cnt Score Error Units
+ * TextFormatUtilBenchmark.openMetricsWriteToByteArray thrpt 25 826847.708 ± 10941.611 ops/s
+ * TextFormatUtilBenchmark.openMetricsWriteToNull thrpt 25 847756.101 ± 5299.128 ops/s
+ * TextFormatUtilBenchmark.prometheusWriteToByteArray thrpt 25 874804.601 ± 9730.060 ops/s
+ * TextFormatUtilBenchmark.prometheusWriteToNull thrpt 25 910782.719 ± 17617.167 ops/s
+ *
+ */
+public class TextFormatUtilBenchmark {
+
+ private static final MetricSnapshots SNAPSHOTS;
+
+ static {
+ MetricSnapshot gaugeSnapshot =
+ GaugeSnapshot.builder()
+ .name("gauge_snapshot_name")
+ .dataPoint(
+ GaugeDataPointSnapshot.builder()
+ .labels(Labels.of("name", "value"))
+ .scrapeTimestampMillis(1000L)
+ .value(123.45d)
+ .build())
+ .build();
+
+ MetricSnapshot summaryDataPointSnapshot =
+ SummarySnapshot.builder()
+ .name("summary_snapshot_name_bytes")
+ .dataPoint(
+ SummaryDataPointSnapshot.builder()
+ .count(5)
+ .labels(Labels.of("name", "value"))
+ .sum(123456d)
+ .build())
+ .unit(Unit.BYTES)
+ .build();
+
+ SNAPSHOTS = MetricSnapshots.of(gaugeSnapshot, summaryDataPointSnapshot);
+ }
+
+ private static final ExpositionFormatWriter OPEN_METRICS_TEXT_FORMAT_WRITER =
+ OpenMetricsTextFormatWriter.create();
+ private static final ExpositionFormatWriter PROMETHEUS_TEXT_FORMAT_WRITER =
+ PrometheusTextFormatWriter.create();
+
+ @State(Scope.Benchmark)
+ public static class WriterState {
+
+ final ByteArrayOutputStream byteArrayOutputStream;
+
+ public WriterState() {
+ this.byteArrayOutputStream = new ByteArrayOutputStream();
+ }
+ }
+
+ @Benchmark
+ public OutputStream openMetricsWriteToByteArray(WriterState writerState) throws IOException {
+ // avoid growing the array
+ ByteArrayOutputStream byteArrayOutputStream = writerState.byteArrayOutputStream;
+ byteArrayOutputStream.reset();
+ OPEN_METRICS_TEXT_FORMAT_WRITER.write(
+ byteArrayOutputStream, SNAPSHOTS, EscapingScheme.ALLOW_UTF8);
+ return byteArrayOutputStream;
+ }
+
+ @Benchmark
+ public OutputStream openMetricsWriteToNull() throws IOException {
+ OutputStream nullOutputStream = NullOutputStream.INSTANCE;
+ OPEN_METRICS_TEXT_FORMAT_WRITER.write(nullOutputStream, SNAPSHOTS, EscapingScheme.ALLOW_UTF8);
+ return nullOutputStream;
+ }
+
+ @Benchmark
+ public OutputStream prometheusWriteToByteArray(WriterState writerState) throws IOException {
+ // avoid growing the array
+ ByteArrayOutputStream byteArrayOutputStream = writerState.byteArrayOutputStream;
+ byteArrayOutputStream.reset();
+ PROMETHEUS_TEXT_FORMAT_WRITER.write(
+ byteArrayOutputStream, SNAPSHOTS, EscapingScheme.ALLOW_UTF8);
+ return byteArrayOutputStream;
+ }
+
+ @Benchmark
+ public OutputStream prometheusWriteToNull() throws IOException {
+ OutputStream nullOutputStream = NullOutputStream.INSTANCE;
+ PROMETHEUS_TEXT_FORMAT_WRITER.write(nullOutputStream, SNAPSHOTS, EscapingScheme.ALLOW_UTF8);
+ return nullOutputStream;
+ }
+
+ static final class NullOutputStream extends OutputStream {
+
+ static final OutputStream INSTANCE = new NullOutputStream();
+
+ private NullOutputStream() {
+ super();
+ }
+
+ @Override
+ public void write(int b) {}
+
+ @Override
+ public void write(byte[] b) {}
+
+ @Override
+ public void write(byte[] b, int off, int len) {}
+
+ @Override
+ public void flush() {}
+
+ @Override
+ public void close() {}
+ }
+}
diff --git a/benchmarks/version-rules.xml b/benchmarks/version-rules.xml
new file mode 100644
index 000000000..76f8da4fd
--- /dev/null
+++ b/benchmarks/version-rules.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/checkstyle-suppressions.xml b/checkstyle-suppressions.xml
new file mode 100644
index 000000000..82e964658
--- /dev/null
+++ b/checkstyle-suppressions.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/checkstyle.xml b/checkstyle.xml
new file mode 100644
index 000000000..cac6be8d3
--- /dev/null
+++ b/checkstyle.xml
@@ -0,0 +1,374 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644
index 000000000..2a8645fe5
--- /dev/null
+++ b/docs/.gitignore
@@ -0,0 +1 @@
+.hugo_build.lock
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 000000000..8ca147236
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,60 @@
+# Docs
+
+This directory contains [hugo](https://gohugo.io) documentation to be published in GitHub pages.
+
+## Run Locally
+
+```shell
+hugo server -D
+```
+
+This will serve the docs on [http://localhost:1313](http://localhost:1313).
+
+## Deploy to GitHub Pages
+
+Changes to the `main` branch will be deployed automatically with GitHub Actions.
+
+## Update Javadoc
+
+Javadoc are not checked-in to the GitHub repository.
+They are generated on the fly by GitHub Actions when the docs are updated.
+To view locally, run the following:
+
+```shell
+# note that the 'compile' in the following command is necessary for
+# Javadoc to detect the module structure
+./mvnw clean compile javadoc:javadoc javadoc:aggregate
+rm -r ./docs/static/api
+mv ./target/site/apidocs ./docs/static/api
+```
+
+GitHub pages are in the `/client_java/` folder, so we link to `/client_java/api` rather than `/api`.
+To make JavaDoc work locally, create a link:
+
+```shell
+mkdir ./docs/static/client_java
+ln -s ../api ./docs/static/client_java/api
+```
+
+## Update Geekdocs
+
+The docs use the [Geekdocs](https://geekdocs.de/) theme. The theme is checked in to GitHub in the
+`./docs/themes/hugo-geekdoc/` folder. To update [Geekdocs](https://geekdocs.de/), remove the current
+folder and create a new one with the
+latest [release](https://github.com/thegeeklab/hugo-geekdoc/releases). There are no local
+modifications in `./docs/themes/hugo-geekdoc/`.
+
+## Notes
+
+Here's how the initial `docs/` folder was set up:
+
+```shell
+hugo new site docs
+cd docs/
+mkdir -p themes/hugo-geekdoc/
+curl -L https://github.com/thegeeklab/hugo-geekdoc/releases/download/v0.41.1/hugo-geekdoc.tar.gz \
+ | tar -xz -C themes/hugo-geekdoc/ --strip-components=1
+```
+
+Create the initial `hugo.toml` file as described
+in [https://geekdocs.de/usage/getting-started/](https://geekdocs.de/usage/getting-started/).
diff --git a/docs/archetypes/default.md b/docs/archetypes/default.md
new file mode 100644
index 000000000..c6f3fcef6
--- /dev/null
+++ b/docs/archetypes/default.md
@@ -0,0 +1,5 @@
++++
+title = '{{ replace .File.ContentBaseName "-" " " | title }}'
+date = {{ .Date }}
+draft = true
++++
diff --git a/docs/content/_index.md b/docs/content/_index.md
new file mode 100644
index 000000000..28e5165cd
--- /dev/null
+++ b/docs/content/_index.md
@@ -0,0 +1,55 @@
+---
+title: "client_java"
+---
+
+This is the documentation for the
+[Prometheus Java client library](https://github.com/prometheus/client_java)
+version 1.0.0 and higher.
+
+The main new features of the 1.0.0 release are:
+
+- **Prometheus native histograms:** Support for the new Prometheus histogram type.
+- **OpenTelemetry Exporter:** Push metrics in OTLP format to an OpenTelemetry endpoint.
+- **Runtime configuration:** Configure metrics, exporters, and more at runtime using a properties
+ file or system properties.
+
+**Documentation and Examples**
+
+In addition to this documentation page we created an
+[examples/](https://github.com/prometheus/client_java/tree/main/examples) directory with end-to-end
+scenarios (Docker compose) illustrating new features.
+
+**Performance Benchmarks**
+
+Initial performance benchmarks are looking great: All core metric types (including native
+histograms) allow concurrent updates, so if you instrument a performance critical Web service
+that utilizes all processor cores in parallel the metrics library will not introduce additional
+synchronization. See Javadoc comments in
+[benchmarks/](https://github.com/prometheus/client_java/tree/main/benchmarks) for benchmark results.
+
+**More Info**
+
+The Grafana Labs Blog has a post
+[Introducing the Prometheus Java Client 1.0.0](https://grafana.com/blog/2023/09/27/introducing-the-prometheus-java-client-1-0-0/)
+with a good overview of the release.
+
+There will also be a presentation at the [PromCon](https://promcon.io) conference on 29 Sep 2023.
+Tune in to the live stream on [https://promcon.io](https://promcon.io)
+or watch the recording on YouTube.
+
+**For users of the 0.16.0 version and older**
+
+Updating to the 1.0.0 version is a breaking change. However, there's a
+`prometheus-metrics-simpleclient-bridge` module available that allows you to use your existing
+simpleclient 0.16.0 metrics with the new 1.0.0 `PrometheusRegistry`.
+So you don't need to upgrade your instrumentation code, you can keep using your existing metrics.
+See the
+[compatibility > simpleclient](https://prometheus.github.io/client_java/migration/simpleclient/)
+in the menu on the left.
+
+The pre 1.0.0 code is now maintained on the
+[simpleclient](https://github.com/prometheus/client_java/tree/simpleclient) feature branch.
+
+Not all `simpleclient` modules from 0.16.0 are included in the initial 1.0.0 release.
+Over the next couple of weeks we will work on porting the remaining modules,
+starting with `pushgateway` and the Servlet filter.
diff --git a/docs/content/config/_index.md b/docs/content/config/_index.md
new file mode 100644
index 000000000..dc32223b0
--- /dev/null
+++ b/docs/content/config/_index.md
@@ -0,0 +1,4 @@
+---
+title: Config
+weight: 5
+---
diff --git a/docs/content/config/config.md b/docs/content/config/config.md
new file mode 100644
index 000000000..cd7f7af7b
--- /dev/null
+++ b/docs/content/config/config.md
@@ -0,0 +1,220 @@
+---
+title: Config
+weight: 1
+---
+
+{{< toc >}}
+
+The Prometheus metrics library provides multiple options how to override configuration at runtime:
+
+- Properties file
+- System properties
+- Environment variables
+
+Example:
+
+```properties
+io.prometheus.exporter.http_server.port=9401
+```
+
+The property above changes the port for the
+[HTTPServer exporter]({{< relref "/exporters/httpserver.md" >}}) to _9401_.
+
+- **Properties file**: Add the line above to the properties file.
+- **System properties**: Use the command line parameter
+ `-Dio.prometheus.exporter.http_server.port=9401` when starting your application.
+- **Environment variables**: Set `IO_PROMETHEUS_EXPORTER_HTTP_SERVER_PORT=9401`
+
+## Location of the Properties File
+
+The properties file is searched in the following locations:
+
+- `/prometheus.properties` in the classpath. This is for bundling a properties file
+ with your application.
+- System property `-Dprometheus.config=/path/to/prometheus.properties`.
+- Environment variable `PROMETHEUS_CONFIG=/path/to/prometheus.properties`.
+
+## Property Naming Conventions
+
+Properties use **snake_case** format with underscores separating words
+(e.g., `http_server`, `exemplars_enabled`).
+
+For backward compatibility, camelCase property names are also supported in
+properties files and system properties, but snake_case is the preferred format.
+
+### Environment Variables
+
+Environment variables follow standard conventions:
+
+- All uppercase letters: `IO_PROMETHEUS_EXPORTER_HTTP_SERVER_PORT`
+- Underscores for all separators (both package and word boundaries)
+- Prefix must be `IO_PROMETHEUS`
+
+The library automatically converts environment variables to the correct property format.
+
+**Examples:**
+
+| Environment Variable | Property Equivalent |
+| --------------------------------------------- | --------------------------------------------- |
+| `IO_PROMETHEUS_METRICS_EXEMPLARS_ENABLED` | `io.prometheus.metrics.exemplars_enabled` |
+| `IO_PROMETHEUS_EXPORTER_HTTP_SERVER_PORT` | `io.prometheus.exporter.http_server.port` |
+| `IO_PROMETHEUS_METRICS_HISTOGRAM_NATIVE_ONLY` | `io.prometheus.metrics.histogram_native_only` |
+
+### Property Precedence
+
+When the same property is defined in multiple sources, the following precedence order applies
+(highest to lowest):
+
+1. **External properties** (passed explicitly via API)
+2. **Environment variables**
+3. **System properties** (command line `-D` flags)
+4. **Properties file** (from file or classpath)
+
+## Metrics Properties
+
+
+
+| Name | Javadoc | Note |
+| ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
+| io.prometheus.metrics.exemplars_enabled | [Counter.Builder.withExemplars()]() | (1) (2) |
+| io.prometheus.metrics.histogram_native_only | [Histogram.Builder.nativeOnly()]() | (2) |
+| io.prometheus.metrics.histogram_classic_only | [Histogram.Builder.classicOnly()]() | (2) |
+| io.prometheus.metrics.histogram_classic_upper_bounds | [Histogram.Builder.classicUpperBounds()]() | (3) |
+| io.prometheus.metrics.histogram_native_initial_schema | [Histogram.Builder.nativeInitialSchema()]() | |
+| io.prometheus.metrics.histogram_native_min_zero_threshold | [Histogram.Builder.nativeMinZeroThreshold()]() | |
+| io.prometheus.metrics.histogram_native_max_zero_threshold | [Histogram.Builder.nativeMaxZeroThreshold()]() | |
+| io.prometheus.metrics.histogram_native_max_number_of_buckets | [Histogram.Builder.nativeMaxNumberOfBuckets()]() | |
+| io.prometheus.metrics.histogram_native_reset_duration_seconds | [Histogram.Builder.nativeResetDuration()]() | |
+| io.prometheus.metrics.summary_quantiles | [Summary.Builder.quantile(double)]() | (4) |
+| io.prometheus.metrics.summary_quantile_errors | [Summary.Builder.quantile(double, double)]() | (5) |
+| io.prometheus.metrics.summary_max_age_seconds | [Summary.Builder.maxAgeSeconds()]() | |
+| io.prometheus.metrics.summary_number_of_age_buckets | [Summary.Builder.numberOfAgeBuckets()]() | |
+
+
+
+**Notes**
+
+(1) _withExemplars()_ and _withoutExemplars()_ are available for all metric types,
+not just for counters
+(2) Boolean value. Format: `property=true` or `property=false`.
+(3) Comma-separated list. Example: `.005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10`.
+(4) Comma-separated list. Example: `0.5, 0.95, 0.99`.
+(5) Comma-separated list. If specified, the list must have the same length as
+`io.prometheus.metrics.summary_quantiles`. Example: `0.01, 0.005, 0.005`.
+
+There's one special feature about metric properties: You can set a property for one specific
+metric only by specifying the metric name. Example:
+Let's say you have a histogram named `latency_seconds`.
+
+```properties
+io.prometheus.metrics.histogram_classic_upper_bounds=0.2, 0.4, 0.8, 1.0
+```
+
+The line above sets histogram buckets for all histograms. However:
+
+```properties
+io.prometheus.metrics.latency_seconds.histogram_classic_upper_bounds=0.2, 0.4, 0.8, 1.0
+```
+
+The line above sets histogram buckets only for the histogram named `latency_seconds`.
+
+This works for all Metrics properties.
+
+## Exemplar Properties
+
+
+
+| Name | Javadoc | Note |
+| ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- |
+| io.prometheus.exemplars.min_retention_period_seconds | [ExemplarsProperties.getMinRetentionPeriodSeconds()]() | |
+| io.prometheus.exemplars.max_retention_period_seconds | [ExemplarsProperties.getMaxRetentionPeriodSeconds()]() | |
+| io.prometheus.exemplars.sample_interval_milliseconds | [ExemplarsProperties.getSampleIntervalMilliseconds()]() | |
+
+
+
+## Exporter Properties
+
+
+
+| Name | Javadoc | Note |
+| ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- |
+| io.prometheus.exporter.include_created_timestamps | [ExporterProperties.getIncludeCreatedTimestamps()]() | (1) |
+| io.prometheus.exporter.exemplars_on_all_metric_types | [ExporterProperties.getExemplarsOnAllMetricTypes()]() | (1) |
+
+
+
+(1) Boolean value, `true` or `false`. Default see Javadoc.
+
+## Exporter Filter Properties
+
+
+
+| Name | Javadoc | Note |
+| -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- |
+| io.prometheus.exporter.filter.metric_name_must_be_equal_to | [ExporterFilterProperties.getAllowedMetricNames()]() | (1) |
+| io.prometheus.exporter.filter.metric_name_must_not_be_equal_to | [ExporterFilterProperties.getExcludedMetricNames()]() | (2) |
+| io.prometheus.exporter.filter.metric_name_must_start_with | [ExporterFilterProperties.getAllowedMetricNamePrefixes()]() | (3) |
+| io.prometheus.exporter.filter.metric_name_must_not_start_with | [ExporterFilterProperties.getExcludedMetricNamePrefixes()]() | (4) |
+
+
+
+(1) Comma separated list of allowed metric names. Only these metrics will be exposed.
+(2) Comma separated list of excluded metric names. These metrics will not be exposed.
+(3) Comma separated list of prefixes.
+Only metrics starting with these prefixes will be exposed.
+(4) Comma separated list of prefixes. Metrics starting with these prefixes will not be exposed.
+
+## Exporter HTTPServer Properties
+
+
+
+| Name | Javadoc | Note |
+| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ---- |
+| io.prometheus.exporter.http_server.port | [HTTPServer.Builder.port()]() | |
+
+
+
+## Exporter OpenTelemetry Properties
+
+
+
+| Name | Javadoc | Note |
+| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- |
+| io.prometheus.exporter.opentelemetry.protocol | [OpenTelemetryExporter.Builder.protocol()]() | (1) |
+| io.prometheus.exporter.opentelemetry.endpoint | [OpenTelemetryExporter.Builder.endpoint()]() | |
+| io.prometheus.exporter.opentelemetry.headers | [OpenTelemetryExporter.Builder.headers()]() | (2) |
+| io.prometheus.exporter.opentelemetry.interval_seconds | [OpenTelemetryExporter.Builder.intervalSeconds()]() | |
+| io.prometheus.exporter.opentelemetry.timeout_seconds | [OpenTelemetryExporter.Builder.timeoutSeconds()]() | |
+| io.prometheus.exporter.opentelemetry.service_name | [OpenTelemetryExporter.Builder.serviceName()]() | |
+| io.prometheus.exporter.opentelemetry.service_namespace | [OpenTelemetryExporter.Builder.serviceNamespace()]() | |
+| io.prometheus.exporter.opentelemetry.service_instance_id | [OpenTelemetryExporter.Builder.serviceInstanceId()]() | |
+| io.prometheus.exporter.opentelemetry.service_version | [OpenTelemetryExporter.Builder.serviceVersion()]() | |
+| io.prometheus.exporter.opentelemetry.resource_attributes | [OpenTelemetryExporter.Builder.resourceAttributes()]() | (3) |
+
+
+
+(1) Protocol can be `grpc` or `http/protobuf`.
+(2) Format: `key1=value1,key2=value2`
+(3) Format: `key1=value1,key2=value2`
+
+Many of these attributes can alternatively be configured via OpenTelemetry environment variables,
+like `OTEL_EXPORTER_OTLP_ENDPOINT`.
+The Prometheus metrics library has support for OpenTelemetry environment variables.
+See Javadoc for details.
+
+## Exporter PushGateway Properties
+
+
+
+| Name | Javadoc | Note |
+| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---- |
+| io.prometheus.exporter.pushgateway.address | [PushGateway.Builder.address()]() | |
+| io.prometheus.exporter.pushgateway.scheme | [PushGateway.Builder.scheme()]() | |
+| io.prometheus.exporter.pushgateway.job | [PushGateway.Builder.job()]() | |
+| io.prometheus.exporter.pushgateway.escaping_scheme | [PushGateway.Builder.escapingScheme()]() | (1) |
+
+
+
+(1) Escaping scheme can be `allow-utf-8`, `underscores`, `dots`, or `values` as described in
+[escaping schemes](https://github.com/prometheus/docs/blob/main/docs/instrumenting/escaping_schemes.md#escaping-schemes)
+and in the [Unicode documentation]({{< relref "../exporters/unicode.md" >}}).
diff --git a/docs/content/exporters/_index.md b/docs/content/exporters/_index.md
new file mode 100644
index 000000000..796db3ff3
--- /dev/null
+++ b/docs/content/exporters/_index.md
@@ -0,0 +1,4 @@
+---
+title: Exporters
+weight: 2
+---
diff --git a/docs/content/exporters/filter.md b/docs/content/exporters/filter.md
new file mode 100644
index 000000000..ae7ad9564
--- /dev/null
+++ b/docs/content/exporters/filter.md
@@ -0,0 +1,20 @@
+---
+title: Filter
+weight: 3
+---
+
+All exporters support a `name[]` URL parameter for querying only specific metric names. Examples:
+
+- `/metrics?name[]=jvm_threads_current` will query the metric named `jvm_threads_current`.
+- `/metrics?name[]=jvm_threads_current&name[]=jvm_threads_daemon` will query two metrics,
+ `jvm_threads_current` and `jvm_threads_daemon`.
+
+Add the following to the scape job configuration in `prometheus.yml`
+to make the Prometheus server send the `name[]` parameter:
+
+```yaml
+params:
+ name[]:
+ - jvm_threads_current
+ - jvm_threads_daemon
+```
diff --git a/docs/content/exporters/formats.md b/docs/content/exporters/formats.md
new file mode 100644
index 000000000..a6485c84c
--- /dev/null
+++ b/docs/content/exporters/formats.md
@@ -0,0 +1,110 @@
+---
+title: Formats
+weight: 1
+---
+
+All exporters the following exposition formats:
+
+- OpenMetrics text format
+- Prometheus text format
+- Prometheus protobuf format
+
+Moreover, gzip encoding is supported for each of these formats.
+
+## Scraping with a Prometheus server
+
+The Prometheus server sends an `Accept` header to specify which format is requested. By default, the
+Prometheus server will scrape OpenMetrics text format with gzip encoding. If the Prometheus server
+is started with `--enable-feature=native-histograms`, it will scrape Prometheus protobuf format
+instead.
+
+## Viewing with a Web Browser
+
+If you view the `/metrics` endpoint with your Web browser you will see Prometheus text format. For
+quick debugging of the other formats, exporters provide a `debug` URL parameter:
+
+- `/metrics?debug=openmetrics`: View OpenMetrics text format.
+- `/metrics?debug=text`: View Prometheus text format.
+- `/metrics?debug=prometheus-protobuf`: View a text representation of the Prometheus protobuf
+ format.
+
+## Exclude protobuf exposition format
+
+You can exclude the protobuf exposition format by including the
+`prometheus-metrics-exposition-textformats` module and excluding the
+`prometheus-metrics-exposition-formats` module in your build file.
+
+For example, in Maven:
+
+```xml
+
+
+ io.prometheus
+ prometheus-metrics-exporter-httpserver
+
+
+ io.prometheus
+ prometheus-metrics-exposition-formats
+
+
+
+
+ io.prometheus
+ prometheus-metrics-exposition-textformats
+
+
+```
+
+## Exclude the shaded protobuf classes
+
+You can exclude the shaded protobuf classes including the
+`prometheus-metrics-exposition-formats-no-protobuf` module and excluding the
+`prometheus-metrics-exposition-formats` module in your build file.
+
+For example, in Maven:
+
+```xml
+
+
+ io.prometheus
+ prometheus-metrics-exporter-httpserver
+
+
+ io.prometheus
+ prometheus-metrics-exposition-formats
+
+
+
+
+ io.prometheus
+ prometheus-metrics-exposition-formats-no-protobuf
+
+
+```
+
+## Exclude the shaded otel classes
+
+You can exclude the shaded otel classes including the
+`prometheus-metrics-exporter-opentelemetry-no-otel` module and excluding the
+`prometheus-metrics-exporter-opentelemetry` module in your build file.
+
+For example, in Maven:
+
+```xml
+
+
+ io.prometheus
+ prometheus-metrics-exporter-opentelemetry
+
+
+ io.prometheus
+ prometheus-metrics-exporter-opentelemetry
+
+
+
+
+ io.prometheus
+ prometheus-metrics-exporter-opentelemetry-no-otel
+
+
+```
diff --git a/docs/content/exporters/httpserver.md b/docs/content/exporters/httpserver.md
new file mode 100644
index 000000000..a9017b0de
--- /dev/null
+++ b/docs/content/exporters/httpserver.md
@@ -0,0 +1,43 @@
+---
+title: HTTPServer
+weight: 4
+---
+
+The `HTTPServer` is a standalone server for exposing a metric endpoint. A minimal example
+application for `HTTPServer` can be found in
+the [examples](https://github.com/prometheus/client_java/tree/1.0.x/examples) directory.
+
+```java
+HTTPServer server = HTTPServer.builder()
+ .port(9400)
+ .buildAndStart();
+```
+
+By default, `HTTPServer` binds to any IP address, you can change this with
+[hostname()]()
+or [inetAddress()]().
+
+`HTTPServer` is configured with three endpoints:
+
+- `/metrics` for Prometheus scraping.
+- `/-/healthy` for simple health checks.
+- `/` the default handler is a static HTML page.
+
+The default handler can be changed
+with [defaultHandler()]().
+
+## Authentication and HTTPS
+
+- [authenticator()]()
+ is for configuring authentication.
+- [httpsConfigurator()]()
+ is for configuring HTTPS.
+
+You can find an example of authentication and SSL in the
+[jmx_exporter](https://github.com/prometheus/jmx_exporter).
+
+## Properties
+
+See _config_ section (_todo_) on runtime configuration options.
+
+- `io.prometheus.exporter.http_server.port`: The port to bind to.
diff --git a/docs/content/exporters/pushgateway.md b/docs/content/exporters/pushgateway.md
new file mode 100644
index 000000000..497aa9b57
--- /dev/null
+++ b/docs/content/exporters/pushgateway.md
@@ -0,0 +1,125 @@
+---
+title: Pushgateway
+weight: 6
+---
+
+The [Prometheus Pushgateway](https://github.com/prometheus/pushgateway) exists to allow ephemeral
+and batch jobs to expose their metrics to Prometheus.
+Since these kinds of jobs may not exist long enough to be scraped, they can instead push their
+metrics to a Pushgateway.
+The Pushgateway then exposes these metrics to Prometheus.
+
+The [PushGateway](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.html) Java
+class allows you to push metrics to a Prometheus Pushgateway.
+
+## Example
+
+{{< tabs "uniqueid" >}}
+{{< tab "Gradle" >}}
+
+```groovy
+implementation 'io.prometheus:prometheus-metrics-core:1.3.0'
+implementation 'io.prometheus:prometheus-metrics-exporter-pushgateway:1.3.0'
+```
+
+{{< /tab >}}
+{{< tab "Maven" >}}
+
+```xml
+
+ io.prometheus
+ prometheus-metrics-core
+ 1.3.0
+
+
+ io.prometheus
+ prometheus-metrics-exporter-pushgateway
+ 1.3.0
+
+```
+
+{{< /tab >}}
+{{< /tabs >}}
+
+```java
+public class ExampleBatchJob {
+
+ private static PushGateway pushGateway = PushGateway.builder()
+ .address("localhost:9091") // not needed as localhost:9091 is the default
+ .job("example")
+ .build();
+
+ private static Gauge dataProcessedInBytes = Gauge.builder()
+ .name("data_processed")
+ .help("data processed in the last batch job run")
+ .unit(Unit.BYTES)
+ .register();
+
+ public static void main(String[] args) throws Exception {
+ try {
+ long bytesProcessed = processData();
+ dataProcessedInBytes.set(bytesProcessed);
+ } finally {
+ pushGateway.push();
+ }
+ }
+
+ public static long processData() {
+ // Imagine a batch job here that processes data
+ // and returns the number of Bytes processed.
+ return 42;
+ }
+}
+```
+
+## Basic Auth
+
+The [PushGateway](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.html)
+supports basic authentication.
+
+```java
+PushGateway pushGateway = PushGateway.builder()
+ .job("example")
+ .basicAuth("my_user", "my_password")
+ .build();
+```
+
+The `PushGatewayTestApp` in `integration-tests/it-pushgateway` has a complete example of this.
+
+## Bearer token
+
+The [PushGateway](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.html)
+supports Bearer token authentication.
+
+```java
+PushGateway pushGateway = PushGateway.builder()
+ .job("example")
+ .bearerToken("my_token")
+ .build();
+```
+
+The `PushGatewayTestApp` in `integration-tests/it-pushgateway` has a complete example of this.
+
+## SSL
+
+The [PushGateway](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.html)
+supports SSL.
+
+```java
+PushGateway pushGateway = PushGateway.builder()
+ .job("example")
+ .scheme(Scheme.HTTPS)
+ .build();
+```
+
+However, this requires that the JVM can validate the server certificate.
+
+If you want to skip certificate verification, you need to provide your own
+[HttpConnectionFactory](/client_java/api/io/prometheus/metrics/exporter/pushgateway/HttpConnectionFactory.html).
+The `PushGatewayTestApp` in `integration-tests/it-pushgateway` has a complete example of this.
+
+## Configuration Properties
+
+The [PushGateway](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.html)
+supports a couple of properties that can be configured at runtime.
+See [config]({{< relref "../config/config.md" >}}).
diff --git a/docs/content/exporters/servlet.md b/docs/content/exporters/servlet.md
new file mode 100644
index 000000000..2b0873b70
--- /dev/null
+++ b/docs/content/exporters/servlet.md
@@ -0,0 +1,51 @@
+---
+title: Servlet
+weight: 5
+---
+
+The
+[PrometheusMetricsServlet](/client_java/api/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.html)
+is a [Jakarta Servlet](https://jakarta.ee/specifications/servlet/) for exposing a metric endpoint.
+
+## web.xml
+
+The old-school way of configuring a servlet is in a `web.xml` file:
+
+
+
+```xml
+
+
+
+ prometheus-metrics
+ io.prometheus.metrics.exporter.servlet.jakarta.PrometheusMetricsServlet
+
+
+ prometheus-metrics
+ /metrics
+
+
+```
+
+
+
+## Programmatic
+
+Today, most Servlet applications use an embedded Servlet container and configure Servlets
+programmatically rather than via `web.xml`.
+The API for that depends on the Servlet container.
+The [examples](https://github.com/prometheus/client_java/tree/1.0.x/examples) directory has an
+example of an embedded
+[Tomcat](https://tomcat.apache.org/) container with the
+[PrometheusMetricsServlet](/client_java/api/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.html)
+configured.
+
+## Spring
+
+You can use
+the [PrometheusMetricsServlet](/client_java/api/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.html)
+in Spring applications.
+See [our Spring doc]({{< relref "spring.md" >}}).
diff --git a/docs/content/exporters/spring.md b/docs/content/exporters/spring.md
new file mode 100644
index 000000000..45df21431
--- /dev/null
+++ b/docs/content/exporters/spring.md
@@ -0,0 +1,92 @@
+---
+title: Spring
+weight: 7
+---
+
+## Alternative: Use Spring's Built-in Metrics Library
+
+[Spring Boot](https://spring.io/projects/spring-boot) has a built-in metric library named
+[Micrometer](https://micrometer.io/), which supports Prometheus
+exposition format and can be set up in three simple steps:
+
+1. Add the `org.springframework.boot:spring-boot-starter-actuator` dependency.
+2. Add the `io.micrometer:micrometer-registry-prometheus` as a _runtime_ dependency.
+3. Enable the Prometheus endpoint by adding the line
+ `management.endpoints.web.exposure.include=prometheus` to `application.properties`.
+
+Note that Spring's default Prometheus endpoint is `/actuator/prometheus`, not `/metrics`.
+
+In most cases the built-in Spring metrics library will work for you and you don't need the
+Prometheus Java library in Spring applications.
+
+## Use the Prometheus Metrics Library in Spring
+
+However, you may have your reasons why you want to use the Prometheus metrics library in
+Spring anyway. Maybe you want full support for all Prometheus metric types,
+or you want to use the new Prometheus native histograms.
+
+The easiest way to use the Prometheus metrics library in Spring is to configure the
+[PrometheusMetricsServlet](/client_java/api/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.html)
+to expose metrics.
+
+Dependencies:
+
+- `prometheus-metrics-core`: The core metrics library.
+- `prometheus-metrics-exporter-servlet-jakarta`: For providing the `/metrics` endpoint.
+- `prometheus-metrics-instrumentation-jvm`: Optional - JVM metrics
+
+The following is the complete source code of a Spring Boot REST service using
+the Prometheus metrics library:
+
+```java
+import io.prometheus.metrics.core.metrics.Counter;
+import io.prometheus.metrics.exporter.servlet.jakarta.PrometheusMetricsServlet;
+import io.prometheus.metrics.instrumentation.jvm.JvmMetrics;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@SpringBootApplication
+@RestController
+public class DemoApplication {
+
+ private static final Counter requestCount = Counter.builder()
+ .name("requests_total")
+ .register();
+
+ public static void main(String[] args) {
+ SpringApplication.run(DemoApplication.class, args);
+ JvmMetrics.builder().register();
+ }
+
+ @GetMapping("/")
+ public String sayHello() throws InterruptedException {
+ requestCount.inc();
+ return "Hello, World!\n";
+ }
+
+ @Bean
+ public ServletRegistrationBean createPrometheusMetricsEndpoint() {
+ return new ServletRegistrationBean<>(new PrometheusMetricsServlet(), "/metrics/*");
+ }
+}
+```
+
+The important part are the last three lines: They configure the
+[PrometheusMetricsServlet](/client_java/api/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.html)
+to expose metrics on `/metrics`:
+
+```java
+
+@Bean
+public ServletRegistrationBean createPrometheusMetricsEndpoint() {
+ return new ServletRegistrationBean<>(new PrometheusMetricsServlet(), "/metrics/*");
+}
+```
+
+The example provides a _Hello, world!_ endpoint on
+[http://localhost:8080](http://localhost:8080), and Prometheus metrics on
+[http://localhost:8080/metrics](http://localhost:8080/metrics).
diff --git a/docs/content/exporters/unicode.md b/docs/content/exporters/unicode.md
new file mode 100644
index 000000000..2a34e0400
--- /dev/null
+++ b/docs/content/exporters/unicode.md
@@ -0,0 +1,34 @@
+---
+title: Unicode
+weight: 2
+---
+
+{{< hint type=warning >}}
+Unicode support is experimental, because [OpenMetrics specification](https://openmetrics.io/) is not
+updated yet to support Unicode characters in metric and label names.
+{{< /hint >}}
+
+The Prometheus Java client library allows all Unicode characters, that can be encoded as UTF-8.
+
+At scrape time, some characters are replaced based on the `encoding` header according
+to
+the [Escaping scheme](https://github.com/prometheus/docs/blob/main/docs/instrumenting/escaping_schemes.md).
+
+For example, if you use the `underscores` escaping scheme, dots in metric and label names are
+replaced with underscores, so that the metric name `http.server.duration` becomes
+`http_server_duration`.
+
+Prometheus servers that do not support Unicode at all will not pass the `encoding` header, and the
+Prometheus Java client library will replace dots, as well as any character that is not in the legacy
+character set (`a-zA-Z0-9_:`), with underscores by default.
+
+When `escaping=allow-utf-8` is passed, add valid UTF-8 characters to the metric and label names
+without replacing them. This allows you to use dots in metric and label names, as well as
+other UTF-8 characters, without any replacements.
+
+## PushGateway
+
+When using the [Pushgateway]({{< relref "pushgateway.md" >}}), Unicode support has to be enabled
+explicitly by setting `io.prometheus.exporter.pushgateway.escapingScheme` to `allow-utf-8` in the
+Pushgateway configuration file - see
+[Pushgateway configuration]({{< relref "/config/config.md#exporter-pushgateway-properties" >}})
diff --git a/docs/content/getting-started/_index.md b/docs/content/getting-started/_index.md
new file mode 100644
index 000000000..427269117
--- /dev/null
+++ b/docs/content/getting-started/_index.md
@@ -0,0 +1,4 @@
+---
+title: Getting Started
+weight: 1
+---
diff --git a/docs/content/getting-started/callbacks.md b/docs/content/getting-started/callbacks.md
new file mode 100644
index 000000000..514d74c2a
--- /dev/null
+++ b/docs/content/getting-started/callbacks.md
@@ -0,0 +1,62 @@
+---
+title: Callbacks
+weight: 5
+---
+
+The section on [metric types]({{< relref "metric-types.md" >}})
+showed how to use metrics that actively maintain their state.
+
+This section shows how to create callback-based metrics, i.e. metrics that invoke a callback
+at scrape time to get the current values.
+
+For example, let's assume we have two instances of a `Cache`, a `coldCache` and a `hotCache`.
+The following implements a callback-based `cache_size_bytes` metric:
+
+```java
+Cache coldCache = new Cache();
+Cache hotCache = new Cache();
+
+GaugeWithCallback.builder()
+ .name("cache_size_bytes")
+ .help("Size of the cache in Bytes.")
+ .unit(Unit.BYTES)
+ .labelNames("state")
+ .callback(callback -> {
+ callback.call(coldCache.sizeInBytes(), "cold");
+ callback.call(hotCache.sizeInBytes(), "hot");
+ })
+ .register();
+```
+
+The resulting text format looks like this:
+
+```text
+# TYPE cache_size_bytes gauge
+# UNIT cache_size_bytes bytes
+# HELP cache_size_bytes Size of the cache in Bytes.
+cache_size_bytes{state="cold"} 78.0
+cache_size_bytes{state="hot"} 83.0
+```
+
+Better examples of callback metrics can be found in the `prometheus-metrics-instrumentation-jvm`
+module.
+
+The available callback metric types are:
+
+- `GaugeWithCallback` for gauges.
+- `CounterWithCallback` for counters.
+- `SummaryWithCallback` for summaries.
+
+The API for gauges and counters is very similar. For summaries the callback has a few more
+parameters, because it accepts a count, a sum, and quantiles:
+
+```java
+SummaryWithCallback.builder()
+ .name("example_callback_summary")
+ .help("help message.")
+ .labelNames("status")
+ .callback(callback -> {
+ callback.call(cache.getCount(), cache.getSum(), Quantiles.EMPTY, "ok");
+ })
+ .register();
+```
diff --git a/docs/content/getting-started/labels.md b/docs/content/getting-started/labels.md
new file mode 100644
index 000000000..d056a6ce6
--- /dev/null
+++ b/docs/content/getting-started/labels.md
@@ -0,0 +1,153 @@
+---
+title: Labels
+weight: 3
+---
+
+The following shows an example of a Prometheus metric in text format:
+
+```text
+# HELP payments_total total number of payments
+# TYPE payments_total counter
+payments_total{status="error",type="paypal"} 1.0
+payments_total{status="success",type="credit card"} 3.0
+payments_total{status="success",type="paypal"} 2.0
+```
+
+The example shows a counter metric named `payments_total` with two labels: `status` and `type`.
+Each individual data point (each line in text format) is identified by the unique combination of
+its metric name and its label name/value pairs.
+
+## Creating a Metric with Labels
+
+Labels are supported for all metric types. We are using counters in this example, however the
+`labelNames()` and `labelValues()` methods are the same for other metric types.
+
+The following code creates the counter above.
+
+```java
+Counter counter = Counter.builder()
+ .name("payments_total")
+ .help("total number of payments")
+ .labelNames("type", "status")
+ .register();
+
+counter.labelValues("credit card", "success").inc(3.0);
+counter.labelValues("paypal", "success").inc(2.0);
+counter.labelValues("paypal", "error").inc(1.0);
+```
+
+The label names have to be specified when the metric is created and cannot change. The label values
+are created on demand when values are observed.
+
+## Creating a Metric without Labels
+
+Labels are optional. The following example shows a metric without labels:
+
+```java
+Counter counter = Counter.builder()
+ .name("payments_total")
+ .help("total number of payments")
+ .register();
+
+counter.inc(3.0);
+```
+
+## Cardinality Explosion
+
+Each combination of label names and values will result in a new data point, i.e. a new line in text
+format.
+Therefore, a good label should have only a small number of possible values.
+If you select labels with many possible values, like unique IDs or timestamps,
+you may end up with an enormous number of data points.
+This is called cardinality explosion.
+
+Here's a bad example, don't do this:
+
+```java
+Counter loginCount = Counter.builder()
+ .name("logins_total")
+ .help("total number of logins")
+ .labelNames("user_id", "timestamp") // not a good idea, this will result in too many data points
+ .register();
+
+String userId = UUID.randomUUID().toString();
+String timestamp = Long.toString(System.currentTimeMillis());
+
+loginCount.labelValues(userId, timestamp).inc();
+```
+
+## Initializing Label Values
+
+If you register a metric without labels, it will show up immediately with initial value of zero.
+
+However, metrics with labels only show up after the label values are first used. In the example
+above
+
+```java
+counter.labelValues("paypal", "error").inc();
+```
+
+The data point
+
+```text
+payments_total{status="error",type="paypal"} 1.0
+```
+
+will jump from non-existent to value 1.0. You will never see it with value 0.0.
+
+This is usually not an issue. However, if you find this annoying and want to see all possible label
+values from the start, you can initialize label values with `initLabelValues()` like this:
+
+```java
+Counter counter = Counter.builder()
+ .name("payments_total")
+ .help("total number of payments")
+ .labelNames("type", "status")
+ .register();
+
+counter.initLabelValues("credit card", "success");
+counter.initLabelValues("credit card", "error");
+counter.initLabelValues("paypal", "success");
+counter.initLabelValues("paypal", "error");
+```
+
+Now the four combinations will be visible from the start with initial value zero.
+
+```text
+# HELP payments_total total number of payments
+# TYPE payments_total counter
+payments_total{status="error",type="credit card"} 0.0
+payments_total{status="error",type="paypal"} 0.0
+payments_total{status="success",type="credit card"} 0.0
+payments_total{status="success",type="paypal"} 0.0
+```
+
+## Expiring Unused Label Values
+
+There is no automatic expiry of unused label values (yet). Once a set of label values is used, it
+will remain there forever.
+
+However, you can programmatically remove label values like this:
+
+```java
+counter.remove("paypal", "error");
+counter.remove("paypal", "success");
+```
+
+## Const Labels
+
+If you have labels values that never change, you can specify them in the builder as `constLabels()`:
+
+```java
+Counter counter = Counter.builder()
+ .name("payments_total")
+ .help("total number of payments")
+ .constLabels(Labels.of("env", "dev"))
+ .labelNames("type", "status")
+ .register();
+```
+
+However, most use cases for `constLabels()` are better covered by target labels set by the scraping
+Prometheus server,
+or by one specific metric (e.g. a `build_info` or a `machine_role` metric). See also
+[target labels, not static scraped labels](https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels-not-static-scraped-labels).
diff --git a/docs/content/getting-started/metric-types.md b/docs/content/getting-started/metric-types.md
new file mode 100644
index 000000000..97424ef5c
--- /dev/null
+++ b/docs/content/getting-started/metric-types.md
@@ -0,0 +1,369 @@
+---
+title: "Metric Types"
+weight: 4
+---
+
+The Prometheus Java metrics library implements the metric types defined in
+the [OpenMetrics](https://openmetrics.io) standard:
+
+{{< toc >}}
+
+## Counter
+
+Counter is the most common and useful metric type. Counters can only increase, but never decrease.
+In the Prometheus query language,
+the [rate()](https://prometheus.io/docs/prometheus/latest/querying/functions/#rate) function is
+often used for counters to calculate the average increase per second.
+
+{{< hint type=note >}}
+Counter values do not need to be integers. In many cases counters represent a number of events (like
+the number of requests), and in that case the counter value is an integer. However, counters can
+also be used for something like "total time spent doing something" in which case the counter value
+is a floating point number.
+{{< /hint >}}
+
+Here's an example of a counter:
+
+```java
+Counter serviceTimeSeconds = Counter.builder()
+ .name("service_time_seconds_total")
+ .help("total time spent serving requests")
+ .unit(Unit.SECONDS)
+ .register();
+
+serviceTimeSeconds.inc(Unit.millisToSeconds(200));
+```
+
+The resulting counter has the value `0.2`. As `SECONDS` is the standard time unit in Prometheus, the
+`Unit` utility class has methods to convert other time units to seconds.
+
+As defined in [OpenMetrics](https://openmetrics.io/), counter metric names must have the `_total`
+suffix. If you create a counter without the `_total` suffix the suffix will be appended
+automatically.
+
+## Gauge
+
+Gauges are current measurements, such as the current temperature in Celsius.
+
+```java
+Gauge temperature = Gauge.builder()
+ .name("temperature_celsius")
+ .help("current temperature")
+ .labelNames("location")
+ .unit(Unit.CELSIUS)
+ .register();
+
+temperature.labelValues("Berlin").set(22.3);
+```
+
+## Histogram
+
+Histograms are for observing distributions, like latency distributions for HTTP services or the
+distribution of request sizes.
+Unlike with counters and gauges, each histogram data point has a complex data structure representing
+different aspects of the distribution:
+
+- Count: The total number of observations.
+- Sum: The sum of all observed values, e.g. the total time spent serving requests.
+- Buckets: The histogram buckets representing the distribution.
+
+Prometheus supports two flavors of histograms:
+
+- Classic histograms: Bucket boundaries are explicitly defined when the histogram is created.
+- Native histograms (exponential histograms): Infinitely many virtual buckets.
+
+By default, histograms maintain both flavors. Which one is used depends on the scrape request from
+the Prometheus server.
+
+- By default, the Prometheus server will scrape metrics in OpenMetrics format and get the classic
+ histogram flavor.
+- If the Prometheus server is started with `--enable-feature=native-histograms`, it will request
+ metrics in Prometheus protobuf format and ingest the native histogram.
+- If the Prometheus server is started with `--enable-feature=native-histogram` and the scrape config
+ has the option `scrape_classic_histograms: true`, it will request metrics in Prometheus protobuf
+ format and ingest both, the classic and the native flavor. This is great for migrating from
+ classic histograms to native histograms.
+
+See [examples/example-native-histogram](https://github.com/prometheus/client_java/tree/1.0.x/examples/example-native-histogram)
+for an example.
+
+```java
+Histogram duration = Histogram.builder()
+ .name("http_request_duration_seconds")
+ .help("HTTP request service time in seconds")
+ .unit(Unit.SECONDS)
+ .labelNames("method", "path", "status_code")
+ .register();
+
+long start = System.nanoTime();
+// do something
+duration.labelValues("GET", "/", "200").observe(Unit.nanosToSeconds(System.nanoTime() - start));
+```
+
+Histograms implement
+the [TimerApi](/client_java/api/io/prometheus/metrics/core/datapoints/TimerApi.html) interface,
+which provides convenience methods for measuring durations.
+
+The histogram builder provides a lot of configuration for fine-tuning the histogram behavior. In
+most cases you don't need them, defaults are good. The following is an incomplete list showing the
+most important options:
+
+- `nativeOnly()` / `classicOnly()`: Create a histogram with one representation only.
+- `classicUpperBounds(...)`: Set the classic bucket upper boundaries. Default bucket upper
+ boundaries are `.005`, `.01`, `.025`, `.05`, `.1`, `.25`, `.5`, `1`, `2.5`, `5`, `and 10`. The
+ default bucket boundaries are designed for measuring request durations in seconds.
+- `nativeMaxNumberOfBuckets()`: Upper limit for the number of native histogram buckets.
+ Default is 160. When the maximum is reached, the native histogram automatically
+ reduces resolution to stay below the limit.
+
+See Javadoc
+for [Histogram.Builder](/client_java/api/io/prometheus/metrics/core/metrics/Histogram.Builder.html)
+for a complete list of options. Some options can be configured at runtime,
+see [config]({{< relref "../config/config.md" >}}).
+
+### Custom Bucket Boundaries
+
+The default bucket boundaries are designed for measuring request durations in seconds. For other
+use cases, you may want to define custom bucket boundaries. The histogram builder provides three
+methods for this:
+
+**1. Arbitrary Custom Boundaries**
+
+Use `classicUpperBounds(...)` to specify arbitrary bucket boundaries:
+
+```java
+Histogram responseSize = Histogram.builder()
+ .name("http_response_size_bytes")
+ .help("HTTP response size in bytes")
+ .classicUpperBounds(100, 1000, 10000, 100000, 1000000) // bytes
+ .register();
+```
+
+**2. Linear Boundaries**
+
+Use `classicLinearUpperBounds(start, width, count)` for equal-width buckets:
+
+```java
+Histogram queueSize = Histogram.builder()
+ .name("queue_size")
+ .help("Number of items in queue")
+ .classicLinearUpperBounds(10, 10, 10) // 10, 20, 30, ..., 100
+ .register();
+```
+
+**3. Exponential Boundaries**
+
+Use `classicExponentialUpperBounds(start, factor, count)` for exponential growth:
+
+```java
+Histogram dataSize = Histogram.builder()
+ .name("data_size_bytes")
+ .help("Data size in bytes")
+ .classicExponentialUpperBounds(100, 10, 5) // 100, 1k, 10k, 100k, 1M
+ .register();
+```
+
+### Native Histograms with Custom Buckets (NHCB)
+
+Prometheus supports a special mode called Native Histograms with Custom Buckets (NHCB) that uses
+schema -53. In this mode, custom bucket boundaries from classic histograms are preserved when
+converting to native histograms.
+
+The Java client library automatically supports NHCB:
+
+1. By default, histograms maintain both classic (with custom buckets) and native representations
+2. The classic representation with custom buckets is exposed to Prometheus
+3. Prometheus servers can convert these to NHCB upon ingestion when configured with the
+ `convert_classic_histograms_to_nhcb` scrape option
+
+Example:
+
+```java
+// This histogram will work seamlessly with NHCB
+Histogram apiLatency = Histogram.builder()
+ .name("api_request_duration_seconds")
+ .help("API request duration")
+ .classicUpperBounds(0.01, 0.05, 0.1, 0.5, 1.0, 5.0, 10.0) // custom boundaries
+ .register();
+```
+
+On the Prometheus side, configure the scrape job:
+
+```yaml
+scrape_configs:
+ - job_name: "my-app"
+ scrape_protocols: ["PrometheusProto"]
+ convert_classic_histograms_to_nhcb: true
+ static_configs:
+ - targets: ["localhost:9400"]
+```
+
+{{< hint type=note >}}
+NHCB is useful when:
+
+- You need precise bucket boundaries for your specific use case
+- You're migrating from classic histograms and want to preserve bucket boundaries
+- Exponential bucketing from standard native histograms isn't a good fit for your distribution
+ {{< /hint >}}
+
+See [examples/example-custom-buckets](https://github.com/prometheus/client_java/tree/main/examples/example-custom-buckets)
+for a complete example with Prometheus and Grafana.
+
+Histograms and summaries are both used for observing distributions. Therefore, the both implement
+the `DistributionDataPoint` interface. Using the `DistributionDataPoint` interface directly gives
+you the option to switch between histograms and summaries later with minimal code changes.
+
+Example of using the `DistributionDataPoint` interface for a histogram without labels:
+
+```java
+DistributionDataPoint eventDuration = Histogram.builder()
+ .name("event_duration_seconds")
+ .help("event duration in seconds")
+ .unit(Unit.SECONDS)
+ .register();
+
+// The following still works perfectly fine if eventDuration
+// is backed by a summary rather than a histogram.
+eventDuration.observe(0.2);
+```
+
+Example of using the `DistributionDataPoint` interface for a histogram with labels:
+
+```java
+Histogram eventDuration = Histogram.builder()
+ .name("event_duration_seconds")
+ .help("event duration in seconds")
+ .labelNames("status")
+ .unit(Unit.SECONDS)
+ .register();
+
+DistributionDataPoint successfulEvents = eventDuration.labelValues("ok");
+DistributionDataPoint erroneousEvents = eventDuration.labelValues("error");
+
+// Like in the example above, the following still works perfectly fine
+// if the successfulEvents and erroneousEvents are backed by a summary rather than a histogram.
+successfulEvents.observe(0.7);
+erroneousEvents.observe(0.2);
+```
+
+## Summary
+
+Like histograms, summaries are for observing distributions. Each summary data point has a count and
+a sum like a histogram data point.
+However, rather than histogram buckets summaries maintain quantiles.
+
+```java
+Summary requestLatency = Summary.builder()
+ .name("request_latency_seconds")
+ .help("Request latency in seconds.")
+ .unit(Unit.SECONDS)
+ .quantile(0.5, 0.01)
+ .quantile(0.95, 0.005)
+ .quantile(0.99, 0.005)
+ .labelNames("status")
+ .register();
+
+requestLatency.labelValues("ok").observe(2.7);
+```
+
+The example above creates a summary with the 50th percentile (median), the 95th percentile, and the
+99th percentile. Quantiles are optional, you can create a summary without quantiles if all you need
+is the count and the sum.
+
+{{< hint type=note >}}
+The terms "percentile" and "quantile" mean the same thing. We use percentile when we express it as a
+number in [0, 100], and we use quantile when we express it as a number in [0.0, 1.0].
+{{< /hint >}}
+
+The second parameter to `quantile()` is the maximum acceptable error. The call
+`.quantile(0.5, 0.01)` means that the actual quantile is somewhere in [0.49, 0.51]. Higher precision
+means higher memory usage.
+
+The 0.0 quantile (min value) and the 1.0 quantile (max value) are special cases because you can get
+the precise values (error 0.0) with almost no memory overhead.
+
+Quantile values are calculated based on a 5 minutes moving time window. The default time window can
+be changed with `maxAgeSeconds()` and `numberOfAgeBuckets()`.
+
+Some options can be configured at runtime, see [config]({{< relref "../config/config.md" >}}).
+
+In general you should prefer histograms over summaries. The Prometheus query language has a
+function [histogram_quantile()](https://prometheus.io/docs/prometheus/latest/querying/functions/#histogram_quantile)
+for calculating quantiles from histograms. The advantage of query-time quantile calculation is that
+you can aggregate histograms before calculating the quantile. With summaries you must use the
+quantile with all its labels as it is.
+
+## Info
+
+Info metrics are used to expose textual information which should not change during process lifetime.
+The value of an Info metric is always `1`.
+
+```java
+Info info = Info.builder()
+ .name("jvm_runtime_info")
+ .help("JVM runtime info")
+ .labelNames("version", "vendor", "runtime")
+ .register();
+
+String version = System.getProperty("java.runtime.version", "unknown");
+String vendor = System.getProperty("java.vm.vendor", "unknown");
+String runtime = System.getProperty("java.runtime.name", "unknown");
+
+info.setLabelValues(version, vendor, runtime);
+```
+
+The info above looks as follows in OpenMetrics text format:
+
+
+
+```text
+# TYPE jvm_runtime info
+# HELP jvm_runtime JVM runtime info
+jvm_runtime_info{runtime="OpenJDK Runtime Environment",vendor="Oracle Corporation",version="1.8.0_382-b05"} 1
+```
+
+
+
+The example is taken from the `prometheus-metrics-instrumentation-jvm` module, so if you have
+`JvmMetrics` registered you should have a `jvm_runtime_info` metric out-of-the-box.
+
+As defined in [OpenMetrics](https://openmetrics.io/), info metric names must have the `_info`
+suffix. If you create a counter without the `_info` suffix the suffix will be appended
+automatically.
+
+## StateSet
+
+StateSet are a niche metric type in the OpenMetrics standard that is rarely used. The main use case
+is to signal which feature flags are enabled.
+
+```java
+StateSet stateSet = StateSet.builder()
+ .name("feature_flags")
+ .help("Feature flags")
+ .labelNames("env")
+ .states("feature1", "feature2")
+ .register();
+
+stateSet.labelValues("dev").setFalse("feature1");
+stateSet.labelValues("dev").setTrue("feature2");
+```
+
+The OpenMetrics text format looks like this:
+
+```text
+# TYPE feature_flags stateset
+# HELP feature_flags Feature flags
+feature_flags{env="dev",feature_flags="feature1"} 0
+feature_flags{env="dev",feature_flags="feature2"} 1
+```
+
+## GaugeHistogram and Unknown
+
+These types are defined in the [OpenMetrics](https://openmetrics.io/) standard but not implemented
+in the `prometheus-metrics-core` API.
+However, `prometheus-metrics-model` implements the underlying data model for these types.
+To use these types, you need to implement your own `Collector` where the `collect()` method returns
+an `UnknownSnapshot` or a `HistogramSnapshot` with `.gaugeHistogram(true)`.
+If your custom collector does not implement `getMetricType()` and `getLabelNames()`, ensure it does
+not produce the same metric name and label set as another collector, or the exposition may contain
+duplicate time series.
diff --git a/docs/content/getting-started/multi-target.md b/docs/content/getting-started/multi-target.md
new file mode 100644
index 000000000..16f85ac40
--- /dev/null
+++ b/docs/content/getting-started/multi-target.md
@@ -0,0 +1,124 @@
+---
+title: Multi-Target Pattern
+weight: 7
+---
+
+{{< hint type=note >}}
+This is for the upcoming release 1.1.0.
+{{< /hint >}}
+
+To support multi-target pattern you can create a custom collector overriding the purposed internal
+method in ExtendedMultiCollector
+see SampleExtendedMultiCollector in io.prometheus.metrics.examples.httpserver
+
+
+
+```java
+public class SampleExtendedMultiCollector extends ExtendedMultiCollector {
+
+ public SampleExtendedMultiCollector() {
+ super();
+ }
+
+ @Override
+ protected MetricSnapshots collectMetricSnapshots(PrometheusScrapeRequest scrapeRequest) {
+
+ GaugeSnapshot.Builder gaugeBuilder = GaugeSnapshot.builder();
+ gaugeBuilder.name("x_load").help("process load");
+
+ CounterSnapshot.Builder counterBuilder = CounterSnapshot.builder();
+ counterBuilder.name(PrometheusNaming.sanitizeMetricName("x_calls_total")).help("invocations");
+
+ String[] targetNames = scrapeRequest.getParameterValues("target");
+ String targetName;
+ String[] procs = scrapeRequest.getParameterValues("proc");
+ if (targetNames == null || targetNames.length == 0) {
+ targetName = "defaultTarget";
+ procs = null; //ignore procs param
+ } else {
+ targetName = targetNames[0];
+ }
+ Builder counterDataPointBuilder = CounterSnapshot.CounterDataPointSnapshot.builder();
+ io.prometheus.metrics.model.snapshots.GaugeSnapshot.GaugeDataPointSnapshot.Builder gaugeDataPointBuilder = GaugeSnapshot.GaugeDataPointSnapshot.builder();
+ Labels lbls = Labels.of("target", targetName);
+
+ if (procs == null || procs.length == 0) {
+ counterDataPointBuilder.labels(lbls.merge(Labels.of("proc", "defaultProc")));
+ gaugeDataPointBuilder.labels(lbls.merge(Labels.of("proc", "defaultProc")));
+ counterDataPointBuilder.value(70);
+ gaugeDataPointBuilder.value(Math.random());
+
+ counterBuilder.dataPoint(counterDataPointBuilder.build());
+ gaugeBuilder.dataPoint(gaugeDataPointBuilder.build());
+
+ } else {
+ for (int i = 0; i < procs.length; i++) {
+ counterDataPointBuilder.labels(lbls.merge(Labels.of("proc", procs[i])));
+ gaugeDataPointBuilder.labels(lbls.merge(Labels.of("proc", procs[i])));
+ counterDataPointBuilder.value(Math.random());
+ gaugeDataPointBuilder.value(Math.random());
+
+ counterBuilder.dataPoint(counterDataPointBuilder.build());
+ gaugeBuilder.dataPoint(gaugeDataPointBuilder.build());
+ }
+ }
+ Collection snaps = new ArrayList();
+ snaps.add(counterBuilder.build());
+ snaps.add(gaugeBuilder.build());
+ MetricSnapshots msnaps = new MetricSnapshots(snaps);
+ return msnaps;
+ }
+
+ public List getPrometheusNames() {
+ List names = new ArrayList();
+ names.add("x_calls_total");
+ names.add("x_load");
+ return names;
+ }
+
+}
+
+```
+
+
+
+`PrometheusScrapeRequest` provides methods to access http-related infos from the request originally
+received by the endpoint
+
+```java
+public interface PrometheusScrapeRequest {
+ String getRequestURI();
+
+ String[] getParameterValues(String name);
+}
+
+```
+
+Sample Prometheus scrape_config
+
+```yaml
+- job_name: "multi-target"
+
+ # metrics_path defaults to '/metrics'
+ # scheme defaults to 'http'.
+ params:
+ proc: [proc1, proc2]
+ relabel_configs:
+ - source_labels: [__address__]
+ target_label: __param_target
+ - source_labels: [__param_target]
+ target_label: instance
+ - target_label: __address__
+ replacement: localhost:9401
+ static_configs:
+ - targets: ["target1", "target2"]
+```
+
+It's up to the specific MultiCollector implementation how to interpret the _target_ parameter.
+It might be an explicit real target (i.e. via host name/ip address) or as an alias in some internal
+configuration.
+The latter is more suitable when the MultiCollector implementation is a proxy (
+see )
+In this case, invoking real target might require extra parameters (e.g. credentials) that might be
+complex to manage in Prometheus configuration
+(not considering the case where the proxy might become an "open relay")
diff --git a/docs/content/getting-started/performance.md b/docs/content/getting-started/performance.md
new file mode 100644
index 000000000..435f0d18a
--- /dev/null
+++ b/docs/content/getting-started/performance.md
@@ -0,0 +1,88 @@
+---
+title: Performance
+weight: 6
+---
+
+This section has tips on how to use the Prometheus Java client in high performance applications.
+
+## Specify Label Values Only Once
+
+For high performance applications, we recommend to specify label values only once, and then use the
+data point directly.
+
+This applies to all metric types. Let's use a counter as an example here:
+
+```java
+Counter requestCount = Counter.builder()
+ .name("requests_total")
+ .help("total number of requests")
+ .labelNames("path", "status")
+ .register();
+```
+
+You could increment the counter above like this:
+
+```java
+requestCount.labelValue("/", "200").inc();
+```
+
+However, the line above does not only increment the counter, it also looks up the label values to
+find the right data point.
+
+In high performance applications you can optimize this by looking up the data point only once:
+
+```java
+CounterDataPoint successfulCalls = requestCount.labelValues("/", "200");
+```
+
+Now, you can increment the data point directly, which is a highly optimized operation:
+
+```java
+successfulCalls.inc();
+```
+
+## Enable Only One Histogram Representation
+
+By default, histograms maintain two representations under the hood: The classic histogram
+representation with static buckets, and the native histogram representation with dynamic buckets.
+
+While this default provides the flexibility to scrape different representations at runtime, it comes
+at a cost, because maintaining multiple representations causes performance overhead.
+
+In performance critical applications we recommend to use either the classic representation or the
+native representation, but not both.
+
+You can either configure this in code for each histogram by
+calling [classicOnly()]()
+or [nativeOnly()](),
+or you use the corresponding [config options]({{< relref "../config/config.md" >}}).
+
+One way to do this is with system properties in the command line when you start your application
+
+```sh
+java -Dio.prometheus.metrics.histogram_classic_only=true my-app.jar
+```
+
+or
+
+```sh
+java -Dio.prometheus.metrics.histogram_native_only=true my-app.jar
+```
+
+If you don't want to add a command line parameter every time you start your application, you can add
+a `prometheus.properties` file to your classpath (put it in the `src/main/resources/` directory so
+that it gets packed into your JAR file). The `prometheus.properties` file should have the following
+line:
+
+```properties
+io.prometheus.metrics.histogram_classic_only=true
+```
+
+or
+
+```properties
+io.prometheus.metrics.histogram_native_only=true
+```
+
+Future releases will add more configuration options, like support for configuration via environment
+variable`IO_PROMETHEUS_METRICS_HISTOGRAM_NATIVE_ONLY=true`.
diff --git a/docs/content/getting-started/quickstart.md b/docs/content/getting-started/quickstart.md
new file mode 100644
index 000000000..920d89b7f
--- /dev/null
+++ b/docs/content/getting-started/quickstart.md
@@ -0,0 +1,213 @@
+---
+title: Quickstart
+weight: 0
+---
+
+This tutorial shows the quickest way to get started with the Prometheus Java metrics library.
+
+{{< toc >}}
+
+## Dependencies
+
+We use the following dependencies:
+
+- `prometheus-metrics-core` is the actual metrics library.
+- `prometheus-metrics-instrumentation-jvm` provides out-of-the-box JVM metrics.
+- `prometheus-metrics-exporter-httpserver` is a standalone HTTP server for exposing Prometheus
+ metrics.
+ {{< tabs "deps" >}}
+ {{< tab "Gradle" >}}
+
+```groovy
+implementation 'io.prometheus:prometheus-metrics-core:$version'
+implementation 'io.prometheus:prometheus-metrics-instrumentation-jvm:$version'
+implementation 'io.prometheus:prometheus-metrics-exporter-httpserver:$version'
+```
+
+{{< /tab >}}
+{{< tab "Maven" >}}
+
+```xml
+
+ io.prometheus
+ prometheus-metrics-core
+ $version
+
+
+ io.prometheus
+ prometheus-metrics-instrumentation-jvm
+ $version
+
+
+ io.prometheus
+ prometheus-metrics-exporter-httpserver
+ $version
+
+```
+
+{{< /tab >}}
+{{< /tabs >}}
+
+There are alternative exporters as well, for example if you are using a Servlet container like
+Tomcat or Undertow you might want to use `prometheus-exporter-servlet-jakarta` rather than a
+standalone HTTP server.
+
+{{< hint type=note >}}
+
+If you do not use the protobuf exposition format, you can
+[exclude]({{< relref "../exporters/formats.md#exclude-protobuf-exposition-format" >}})
+it from the dependencies.
+
+{{< /hint >}}
+
+## Dependency management
+
+A Bill of Material
+([BOM](https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#bill-of-materials-bom-poms))
+ensures that versions of dependencies (including transitive ones) are aligned.
+This is especially important when using Spring Boot, which manages some of the dependencies of the
+project.
+
+You should omit the version number of the dependencies in your build file if you are using a BOM.
+
+{{< tabs "bom" >}}
+{{< tab "Gradle" >}}
+
+You have two ways to import a BOM.
+
+First, you can use the Gradle’s native BOM support by adding `dependencies`:
+
+```kotlin
+import org.springframework.boot.gradle.plugin.SpringBootPlugin
+
+plugins {
+ id("java")
+ id("org.springframework.boot") version "3.2.O" // if you are using Spring Boot
+}
+
+dependencies {
+ implementation(platform(SpringBootPlugin.BOM_COORDINATES)) // if you are using Spring Boot
+ implementation(platform("io.prometheus:prometheus-metrics-bom:$version"))
+}
+```
+
+The other way with Gradle is to use `dependencyManagement`:
+
+```kotlin
+plugins {
+ id("java")
+ id("org.springframework.boot") version "3.2.O" // if you are using Spring Boot
+ id("io.spring.dependency-management") version "1.1.0" // if you are using Spring Boot
+}
+
+dependencyManagement {
+ imports {
+ mavenBom("io.prometheus:prometheus-metrics-bom:$version")
+ }
+}
+```
+
+{{< hint type=note >}}
+
+Be careful not to mix up the different ways of configuring things with Gradle.
+For example, don't use
+`implementation(platform("io.prometheus:prometheus-metrics-bom:$version"))`
+with the `io.spring.dependency-management` plugin.
+
+{{< /hint >}}
+
+{{< /tab >}}
+{{< tab "Maven" >}}
+
+{{< hint type=note >}}
+
+Import the Prometheus Java metrics BOMs before any other BOMs in your
+project. For example, if you import the `spring-boot-dependencies` BOM, you have
+to declare it after the Prometheus Java metrics BOMs.
+
+{{< /hint >}}
+
+The following example shows how to import the Prometheus Java metrics BOMs using Maven:
+
+```xml
+
+
+
+ io.prometheus
+ prometheus-metrics-bom
+ $version
+ pom
+ import
+
+
+
+```
+
+{{< /tab >}}
+{{< /tabs >}}
+
+## Example Application
+
+```java
+import io.prometheus.metrics.core.metrics.Counter;
+import io.prometheus.metrics.exporter.httpserver.HTTPServer;
+import io.prometheus.metrics.instrumentation.jvm.JvmMetrics;
+
+import java.io.IOException;
+
+public class App {
+
+ public static void main(String[] args) throws InterruptedException, IOException {
+
+ JvmMetrics.builder().register(); // initialize the out-of-the-box JVM metrics
+
+ Counter counter = Counter.builder()
+ .name("my_count_total")
+ .help("example counter")
+ .labelNames("status")
+ .register();
+
+ counter.labelValues("ok").inc();
+ counter.labelValues("ok").inc();
+ counter.labelValues("error").inc();
+
+ HTTPServer server = HTTPServer.builder()
+ .port(9400)
+ .buildAndStart();
+
+ System.out.println("HTTPServer listening on port http://localhost:" +
+ server.getPort() + "/metrics");
+
+ Thread.currentThread().join(); // sleep forever
+ }
+}
+```
+
+## Result
+
+Run the application and view [http://localhost:9400/metrics](http://localhost:9400/metrics) with
+your browser to see the raw metrics. You should see the `my_count_total` metric as shown below plus
+the `jvm_` and `process_` metrics coming from `JvmMetrics`.
+
+```text
+# HELP my_count_total example counter
+# TYPE my_count_total counter
+my_count_total{status="error"} 1.0
+my_count_total{status="ok"} 2.0
+```
+
+## Prometheus Configuration
+
+To scrape the metrics with a Prometheus server, download the latest Prometheus
+server [release](https://github.com/prometheus/prometheus/releases), and configure the
+`prometheus.yml` file as follows:
+
+```yaml
+global:
+ scrape_interval: 10s # short interval for manual testing
+
+scrape_configs:
+ - job_name: "java-example"
+ static_configs:
+ - targets: ["localhost:9400"]
+```
diff --git a/docs/content/getting-started/registry.md b/docs/content/getting-started/registry.md
new file mode 100644
index 000000000..7f561ecef
--- /dev/null
+++ b/docs/content/getting-started/registry.md
@@ -0,0 +1,108 @@
+---
+title: Registry
+weight: 2
+---
+
+In order to expose metrics, you need to register them with a `PrometheusRegistry`. We are using a
+counter as an example here, but the `register()` method is the same for all metric types.
+
+## Registering a Metric with the Default Registry
+
+```java
+Counter eventsTotal = Counter.builder()
+ .name("events_total")
+ .help("Total number of events")
+ .register(); // <-- implicitly uses PrometheusRegistry.defaultRegistry
+```
+
+The `register()` call above builds the counter and registers it with the global static
+`PrometheusRegistry.defaultRegistry`. Using the default registry is recommended.
+
+## Registering a Metric with a Custom Registry
+
+You can also register your metric with a custom registry:
+
+```java
+PrometheusRegistry myRegistry = new PrometheusRegistry();
+
+Counter eventsTotal = Counter.builder()
+ .name("events_total")
+ .help("Total number of events")
+ .register(myRegistry);
+```
+
+## Registering a Metric with Multiple Registries
+
+As an alternative to calling `register()` directly, you can `build()` metrics without registering
+them,
+and register them later:
+
+```java
+
+// create a counter that is not registered with any registry
+
+Counter eventsTotal = Counter.builder()
+ .name("events_total")
+ .help("Total number of events")
+ .build(); // <-- this will create the metric but not register it
+
+// register the counter with the default registry
+
+PrometheusRegistry.defaultRegistry.register(eventsTotal);
+
+// register the counter with a custom registry.
+// This is OK, you can register a metric with multiple registries.
+
+PrometheusRegistry myRegistry = new PrometheusRegistry();
+myRegistry.register(eventsTotal);
+```
+
+Custom registries are useful if you want to maintain different scopes of metrics, like
+a debug registry with a lot of metrics, and a default registry with only a few metrics.
+
+## IllegalArgumentException: Duplicate Metric Name in Registry
+
+While it is OK to register the same metric with multiple registries, it is illegal to register the
+same metric name multiple times with the same registry.
+The following code will throw an `IllegalArgumentException`:
+
+```java
+Counter eventsTotal1 = Counter.builder()
+ .name("events_total")
+ .help("Total number of events")
+ .register();
+
+Counter eventsTotal2 = Counter.builder()
+ .name("events_total")
+ .help("Total number of events")
+ .register(); // IllegalArgumentException, because a metric with that name is already registered
+```
+
+## Validation at registration only
+
+Validation of duplicate metric names and label schemas happens at registration time only.
+Built-in metrics (Counter, Gauge, Histogram, etc.) participate in this validation.
+
+Custom collectors that implement the `Collector` or `MultiCollector` interface can optionally
+implement `getPrometheusName()` and `getMetricType()` (and the MultiCollector per-name variants) so
+the registry can enforce consistency. **Validation is skipped when metric name or type is
+unavailable:** if `getPrometheusName()` or `getMetricType()` returns `null`, the registry does not
+validate that collector. If two such collectors produce the same metric name and same label set at
+scrape time, the exposition output may contain duplicate time series and be invalid for Prometheus.
+
+When validation _is_ performed (name and type are non-null), **null label names are treated as an
+empty label schema:** `getLabelNames()` returning `null` is normalized to `Collections.emptySet()`
+and full label-schema validation and duplicate detection still apply. A collector that returns a
+non-null type but leaves `getLabelNames()` as `null` is still validated, with its labels treated as
+empty.
+
+## Unregistering a Metric
+
+There is no automatic expiry of unused metrics (yet), once a metric is registered it will remain
+registered forever.
+
+However, you can programmatically unregister an obsolete metric like this:
+
+```java
+PrometheusRegistry.defaultRegistry.unregister(eventsTotal);
+```
diff --git a/docs/content/instrumentation/_index.md b/docs/content/instrumentation/_index.md
new file mode 100644
index 000000000..3e255f9fe
--- /dev/null
+++ b/docs/content/instrumentation/_index.md
@@ -0,0 +1,4 @@
+---
+title: Instrumentation
+weight: 3
+---
diff --git a/docs/content/instrumentation/caffeine.md b/docs/content/instrumentation/caffeine.md
new file mode 100644
index 000000000..104a9b9fa
--- /dev/null
+++ b/docs/content/instrumentation/caffeine.md
@@ -0,0 +1,128 @@
+---
+title: Caffeine Cache
+weight: 1
+---
+
+The Caffeine instrumentation module, added in version 1.3.2, translates observability data
+provided by caffeine `Cache` objects into prometheus metrics.
+
+{{< tabs "uniqueid" >}}
+{{< tab "Gradle" >}}
+
+```groovy
+implementation 'io.prometheus:prometheus-metrics-instrumentation-caffeine:1.3.2'
+```
+
+{{< /tab >}}
+{{< tab "Maven" >}}
+
+```xml
+
+ io.prometheus
+ prometheus-metrics-instrumentation-caffeine
+ 1.3.2
+
+```
+
+{{< /tab >}}
+{{< /tabs >}}
+
+In order to collect metrics:
+
+- A single `CacheMetricsCollector` instance must be registered with the registry;
+ - Multiple `CacheMetricsCollector` instances cannot be registered with the same registry;
+- The `Cache` object must be instantiated with the `recordStats()` option, and then added to the
+ `CacheMetricsCollector` instance with a unique name, which will be used as the value of the
+ `cache` label on the exported metrics;
+ - If the `recordStats` option is not set, most metrics will only return zero values;
+
+```java
+var cache = Caffeine.newBuilder().recordStats().build();
+var cacheMetrics = CacheMetricsCollector.builder().build();
+PrometheusRegistry.defaultRegistry.register(cacheMetrics);
+cacheMetrics.addCache("mycache", cache);
+```
+
+{{< hint type=note >}}
+
+In version 1.3.5 and older of the caffeine instrumentation library, `CacheMetricsCollector.builder`
+does not exist, i.e. a constructor call `new CacheMetricsCollector()` is the only option.
+
+{{< /hint >}}
+
+All example metrics on this page will use the `mycache` label value.
+
+## Generic Cache Metrics
+
+For all cache instances, the following metrics will be available:
+
+```text
+# TYPE caffeine_cache_hit counter
+# HELP caffeine_cache_hit Cache hit totals
+caffeine_cache_hit_total{cache="mycache"} 10.0
+# TYPE caffeine_cache_miss counter
+# HELP caffeine_cache_miss Cache miss totals
+caffeine_cache_miss_total{cache="mycache"} 3.0
+# TYPE caffeine_cache_requests counter
+# HELP caffeine_cache_requests Cache request totals, hits + misses
+caffeine_cache_requests_total{cache="mycache"} 13.0
+# TYPE caffeine_cache_eviction counter
+# HELP caffeine_cache_eviction Cache eviction totals, doesn't include manually removed entries
+caffeine_cache_eviction_total{cache="mycache"} 1.0
+# TYPE caffeine_cache_estimated_size
+# HELP caffeine_cache_estimated_size Estimated cache size
+caffeine_cache_estimated_size{cache="mycache"} 5.0
+```
+
+## Loading Cache Metrics
+
+If the cache is an instance of `LoadingCache`, i.e. it is built with a `loader` function that is
+managed by the cache library, then metrics for observing load time and load failures become
+available:
+
+```text
+# TYPE caffeine_cache_load_failure counter
+# HELP caffeine_cache_load_failure Cache load failures
+caffeine_cache_load_failure_total{cache="mycache"} 10.0
+# TYPE caffeine_cache_loads counter
+# HELP caffeine_cache_loads Cache loads: both success and failures
+caffeine_cache_loads_total{cache="mycache"} 3.0
+# TYPE caffeine_cache_load_duration_seconds summary
+# HELP caffeine_cache_load_duration_seconds Cache load duration: both success and failures
+caffeine_cache_load_duration_seconds_count{cache="mycache"} 7.0
+caffeine_cache_load_duration_seconds_sum{cache="mycache"} 0.0034
+```
+
+## Weighted Cache Metrics
+
+Two metrics exist for observability specifically of caches that define a `weigher`:
+
+```text
+# TYPE caffeine_cache_eviction_weight counter
+# HELP caffeine_cache_eviction_weight Weight of evicted cache entries, doesn't include manually removed entries // editorconfig-checker-disable-line
+
+caffeine_cache_eviction_weight_total{cache="mycache"} 5.0
+# TYPE caffeine_cache_weighted_size gauge
+# HELP caffeine_cache_weighted_size Approximate accumulated weight of cache entries
+caffeine_cache_weighted_size{cache="mycache"} 30.0
+```
+
+{{< hint type=note >}}
+
+`caffeine_cache_weighted_size` is available only if the cache instance defines a `maximumWeight`.
+
+{{< /hint >}}
+
+Up to version 1.3.5 and older, the weighted metrics had a different behavior:
+
+- `caffeine_cache_weighted_size` was not implemented;
+- `caffeine_cache_eviction_weight` was exposed as a `gauge`;
+
+It is possible to restore the behavior of version 1.3.5 and older, by either:
+
+- Using the deprecated `new CacheMetricsCollector()` constructor;
+- Using the flags provided on the `CacheMetricsCollector.Builder` object to opt-out of each of the
+ elements of the post-1.3.5 behavior:
+ - `builder.collectWeightedSize(false)` will disable collection of `caffeine_cache_weighted_size`;
+ - `builder.collectEvictionWeightAsCounter(false)` will expose `caffeine_cache_eviction_weight` as
+ a `gauge` metric;
diff --git a/docs/content/instrumentation/guava.md b/docs/content/instrumentation/guava.md
new file mode 100644
index 000000000..ffc8f0ab2
--- /dev/null
+++ b/docs/content/instrumentation/guava.md
@@ -0,0 +1,87 @@
+---
+title: Guava Cache
+weight: 1
+---
+
+The Guava instrumentation module, added in version 1.3.2, translates observability data
+provided by Guava `Cache` objects into prometheus metrics.
+
+{{< tabs "uniqueid" >}}
+{{< tab "Gradle" >}}
+
+```groovy
+implementation 'io.prometheus:prometheus-metrics-instrumentation-guava:1.3.2'
+```
+
+{{< /tab >}}
+{{< tab "Maven" >}}
+
+```xml
+
+ io.prometheus
+ prometheus-metrics-instrumentation-guava
+ 1.3.2
+
+```
+
+{{< /tab >}}
+{{< /tabs >}}
+
+In order to collect metrics:
+
+- A single `CacheMetricsCollector` instance must be registered with the registry;
+ - Multiple `CacheMetricsCollector` instances cannot be registered with the same registry;
+- The `Cache` object must be instantiated with the `recordStats()` option, and then added to the
+ `CacheMetricsCollector` instance with a unique name, which will be used as the value of the
+ `cache` label on the exported metrics;
+ - If the `recordStats` option is not set, most metrics will only return zero values;
+
+```java
+var cache = CacheBuilder.newBuilder().recordStats().build();
+var cacheMetrics = new CacheMetricsCollector();
+PrometheusRegistry.defaultRegistry.register(cacheMetrics);
+cacheMetrics.addCache("mycache", cache);
+```
+
+All example metrics on this page will use the `mycache` label value.
+
+## Generic Cache Metrics
+
+For all cache instances, the following metrics will be available:
+
+```text
+# TYPE guava_cache_hit counter
+# HELP guava_cache_hit Cache hit totals
+guava_cache_hit_total{cache="mycache"} 10.0
+# TYPE guava_cache_miss counter
+# HELP guava_cache_miss Cache miss totals
+guava_cache_miss_total{cache="mycache"} 3.0
+# TYPE guava_cache_requests counter
+# HELP guava_cache_requests Cache request totals
+guava_cache_requests_total{cache="mycache"} 13.0
+# TYPE guava_cache_eviction counter
+# HELP guava_cache_eviction Cache eviction totals, doesn't include manually removed entries
+guava_cache_eviction_total{cache="mycache"} 1.0
+# TYPE guava_cache_size
+# HELP guava_cache_size Cache size
+guava_cache_size{cache="mycache"} 5.0
+```
+
+## Loading Cache Metrics
+
+If the cache is an instance of `LoadingCache`, i.e. it is built with a `loader` function that is
+managed by the cache library, then metrics for observing load time and load failures become
+available:
+
+```text
+# TYPE guava_cache_load_failure counter
+# HELP guava_cache_load_failure Cache load failures
+guava_cache_load_failure_total{cache="mycache"} 10.0
+# TYPE guava_cache_loads counter
+# HELP guava_cache_loads Cache loads: both success and failures
+guava_cache_loads_total{cache="mycache"} 3.0
+# TYPE guava_cache_load_duration_seconds summary
+# HELP guava_cache_load_duration_seconds Cache load duration: both success and failures
+guava_cache_load_duration_seconds_count{cache="mycache"} 7.0
+guava_cache_load_duration_seconds_sum{cache="mycache"} 0.0034
+```
diff --git a/docs/content/instrumentation/jvm.md b/docs/content/instrumentation/jvm.md
new file mode 100644
index 000000000..a9a15341f
--- /dev/null
+++ b/docs/content/instrumentation/jvm.md
@@ -0,0 +1,339 @@
+---
+title: JVM
+weight: 1
+---
+
+{{< hint type=note >}}
+
+Looking for JVM metrics that follow OTel semantic
+conventions? See
+[OTel JVM Runtime Metrics]({{< relref "../otel/jvm-runtime-metrics.md" >}})
+for an alternative based on OpenTelemetry's
+runtime-telemetry module.
+
+{{< /hint >}}
+
+The JVM instrumentation module provides a variety of out-of-the-box JVM and process metrics. To use
+it, add the following dependency:
+
+{{< tabs "uniqueid" >}}
+{{< tab "Gradle" >}}
+
+```groovy
+implementation 'io.prometheus:prometheus-metrics-instrumentation-jvm:1.0.0'
+```
+
+{{< /tab >}}
+{{< tab "Maven" >}}
+
+```xml
+
+ io.prometheus
+ prometheus-metrics-instrumentation-jvm
+ 1.0.0
+
+```
+
+{{< /tab >}}
+{{< /tabs >}}
+
+Now, you can register the JVM metrics as follows:
+
+```java
+JvmMetrics.builder().register();
+```
+
+The line above will initialize all JVM metrics and register them with the default registry. If you
+want to register the metrics with a custom `PrometheusRegistry`, you can pass the registry as
+parameter to the `register()` call.
+
+The sections below describe the individual classes providing JVM metrics. If you don't want to
+register all JVM metrics, you can register each of these classes individually rather than using
+`JvmMetrics`.
+
+## JVM Buffer Pool Metrics
+
+JVM buffer pool metrics are provided by
+the [JvmBufferPoolMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmBufferPoolMetrics.html)
+class. The data is coming from
+the [BufferPoolMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/BufferPoolMXBean.html).
+Example metrics:
+
+```text
+# HELP jvm_buffer_pool_capacity_bytes Bytes capacity of a given JVM buffer pool.
+# TYPE jvm_buffer_pool_capacity_bytes gauge
+jvm_buffer_pool_capacity_bytes{pool="direct"} 8192.0
+jvm_buffer_pool_capacity_bytes{pool="mapped"} 0.0
+# HELP jvm_buffer_pool_used_buffers Used buffers of a given JVM buffer pool.
+# TYPE jvm_buffer_pool_used_buffers gauge
+jvm_buffer_pool_used_buffers{pool="direct"} 1.0
+jvm_buffer_pool_used_buffers{pool="mapped"} 0.0
+# HELP jvm_buffer_pool_used_bytes Used bytes of a given JVM buffer pool.
+# TYPE jvm_buffer_pool_used_bytes gauge
+jvm_buffer_pool_used_bytes{pool="direct"} 8192.0
+jvm_buffer_pool_used_bytes{pool="mapped"} 0.0
+```
+
+## JVM Class Loading Metrics
+
+JVM class loading metrics are provided by
+the [JvmClassLoadingMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmClassLoadingMetrics.html)
+class. The data is coming from
+the [ClassLoadingMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/ClassLoadingMXBean.html).
+Example metrics:
+
+
+
+```text
+# HELP jvm_classes_currently_loaded The number of classes that are currently loaded in the JVM
+# TYPE jvm_classes_currently_loaded gauge
+jvm_classes_currently_loaded 1109.0
+# HELP jvm_classes_loaded_total The total number of classes that have been loaded since the JVM has started execution
+# TYPE jvm_classes_loaded_total counter
+jvm_classes_loaded_total 1109.0
+# HELP jvm_classes_unloaded_total The total number of classes that have been unloaded since the JVM has started execution
+# TYPE jvm_classes_unloaded_total counter
+jvm_classes_unloaded_total 0.0
+```
+
+
+
+## JVM Compilation Metrics
+
+JVM compilation metrics are provided by
+the [JvmCompilationMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmCompilationMetrics.html)
+class. The data is coming from
+the [CompilationMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/CompilationMXBean.html).
+Example metrics:
+
+
+
+```text
+# HELP jvm_compilation_time_seconds_total The total time in seconds taken for HotSpot class compilation
+# TYPE jvm_compilation_time_seconds_total counter
+jvm_compilation_time_seconds_total 0.152
+```
+
+
+
+## JVM Garbage Collector Metrics
+
+JVM garbage collector metrics are provided by
+the [JvmGarbageCollectorMetric](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmGarbageCollectorMetrics.html)
+class. The data is coming from
+the [GarbageCollectorMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/GarbageCollectorMXBean.html).
+Example metrics:
+
+```text
+# HELP jvm_gc_collection_seconds Time spent in a given JVM garbage collector in seconds.
+# TYPE jvm_gc_collection_seconds summary
+jvm_gc_collection_seconds_count{gc="PS MarkSweep"} 0
+jvm_gc_collection_seconds_sum{gc="PS MarkSweep"} 0.0
+jvm_gc_collection_seconds_count{gc="PS Scavenge"} 0
+jvm_gc_collection_seconds_sum{gc="PS Scavenge"} 0.0
+```
+
+## JVM Memory Metrics
+
+JVM memory metrics are provided by
+the [JvmMemoryMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmMemoryMetrics.html)
+class. The data is coming from
+the [MemoryMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/MemoryMXBean.html)
+and the [MemoryPoolMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html).
+Example metrics:
+
+
+
+```text
+# HELP jvm_memory_committed_bytes Committed (bytes) of a given JVM memory area.
+# TYPE jvm_memory_committed_bytes gauge
+jvm_memory_committed_bytes{area="heap"} 4.98597888E8
+jvm_memory_committed_bytes{area="nonheap"} 1.1993088E7
+# HELP jvm_memory_init_bytes Initial bytes of a given JVM memory area.
+# TYPE jvm_memory_init_bytes gauge
+jvm_memory_init_bytes{area="heap"} 5.20093696E8
+jvm_memory_init_bytes{area="nonheap"} 2555904.0
+# HELP jvm_memory_max_bytes Max (bytes) of a given JVM memory area.
+# TYPE jvm_memory_max_bytes gauge
+jvm_memory_max_bytes{area="heap"} 7.38983936E9
+jvm_memory_max_bytes{area="nonheap"} -1.0
+# HELP jvm_memory_objects_pending_finalization The number of objects waiting in the finalizer queue.
+# TYPE jvm_memory_objects_pending_finalization gauge
+jvm_memory_objects_pending_finalization 0.0
+# HELP jvm_memory_pool_collection_committed_bytes Committed after last collection bytes of a given JVM memory pool.
+# TYPE jvm_memory_pool_collection_committed_bytes gauge
+jvm_memory_pool_collection_committed_bytes{pool="PS Eden Space"} 1.30023424E8
+jvm_memory_pool_collection_committed_bytes{pool="PS Old Gen"} 3.47078656E8
+jvm_memory_pool_collection_committed_bytes{pool="PS Survivor Space"} 2.1495808E7
+# HELP jvm_memory_pool_collection_init_bytes Initial after last collection bytes of a given JVM memory pool.
+# TYPE jvm_memory_pool_collection_init_bytes gauge
+jvm_memory_pool_collection_init_bytes{pool="PS Eden Space"} 1.30023424E8
+jvm_memory_pool_collection_init_bytes{pool="PS Old Gen"} 3.47078656E8
+jvm_memory_pool_collection_init_bytes{pool="PS Survivor Space"} 2.1495808E7
+# HELP jvm_memory_pool_collection_max_bytes Max bytes after last collection of a given JVM memory pool.
+# TYPE jvm_memory_pool_collection_max_bytes gauge
+jvm_memory_pool_collection_max_bytes{pool="PS Eden Space"} 2.727870464E9
+jvm_memory_pool_collection_max_bytes{pool="PS Old Gen"} 5.542248448E9
+jvm_memory_pool_collection_max_bytes{pool="PS Survivor Space"} 2.1495808E7
+# HELP jvm_memory_pool_collection_used_bytes Used bytes after last collection of a given JVM memory pool.
+# TYPE jvm_memory_pool_collection_used_bytes gauge
+jvm_memory_pool_collection_used_bytes{pool="PS Eden Space"} 0.0
+jvm_memory_pool_collection_used_bytes{pool="PS Old Gen"} 1249696.0
+jvm_memory_pool_collection_used_bytes{pool="PS Survivor Space"} 0.0
+# HELP jvm_memory_pool_committed_bytes Committed bytes of a given JVM memory pool.
+# TYPE jvm_memory_pool_committed_bytes gauge
+jvm_memory_pool_committed_bytes{pool="Code Cache"} 4128768.0
+jvm_memory_pool_committed_bytes{pool="Compressed Class Space"} 917504.0
+jvm_memory_pool_committed_bytes{pool="Metaspace"} 6946816.0
+jvm_memory_pool_committed_bytes{pool="PS Eden Space"} 1.30023424E8
+jvm_memory_pool_committed_bytes{pool="PS Old Gen"} 3.47078656E8
+jvm_memory_pool_committed_bytes{pool="PS Survivor Space"} 2.1495808E7
+# HELP jvm_memory_pool_init_bytes Initial bytes of a given JVM memory pool.
+# TYPE jvm_memory_pool_init_bytes gauge
+jvm_memory_pool_init_bytes{pool="Code Cache"} 2555904.0
+jvm_memory_pool_init_bytes{pool="Compressed Class Space"} 0.0
+jvm_memory_pool_init_bytes{pool="Metaspace"} 0.0
+jvm_memory_pool_init_bytes{pool="PS Eden Space"} 1.30023424E8
+jvm_memory_pool_init_bytes{pool="PS Old Gen"} 3.47078656E8
+jvm_memory_pool_init_bytes{pool="PS Survivor Space"} 2.1495808E7
+# HELP jvm_memory_pool_max_bytes Max bytes of a given JVM memory pool.
+# TYPE jvm_memory_pool_max_bytes gauge
+jvm_memory_pool_max_bytes{pool="Code Cache"} 2.5165824E8
+jvm_memory_pool_max_bytes{pool="Compressed Class Space"} 1.073741824E9
+jvm_memory_pool_max_bytes{pool="Metaspace"} -1.0
+jvm_memory_pool_max_bytes{pool="PS Eden Space"} 2.727870464E9
+jvm_memory_pool_max_bytes{pool="PS Old Gen"} 5.542248448E9
+jvm_memory_pool_max_bytes{pool="PS Survivor Space"} 2.1495808E7
+# HELP jvm_memory_pool_used_bytes Used bytes of a given JVM memory pool.
+# TYPE jvm_memory_pool_used_bytes gauge
+jvm_memory_pool_used_bytes{pool="Code Cache"} 4065472.0
+jvm_memory_pool_used_bytes{pool="Compressed Class Space"} 766680.0
+jvm_memory_pool_used_bytes{pool="Metaspace"} 6659432.0
+jvm_memory_pool_used_bytes{pool="PS Eden Space"} 7801536.0
+jvm_memory_pool_used_bytes{pool="PS Old Gen"} 1249696.0
+jvm_memory_pool_used_bytes{pool="PS Survivor Space"} 0.0
+# HELP jvm_memory_used_bytes Used bytes of a given JVM memory area.
+# TYPE jvm_memory_used_bytes gauge
+jvm_memory_used_bytes{area="heap"} 9051232.0
+jvm_memory_used_bytes{area="nonheap"} 1.1490688E7
+```
+
+
+
+## JVM Memory Pool Allocation Metrics
+
+JVM memory pool allocation metrics are provided by
+the [JvmMemoryPoolAllocationMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetrics.html)
+class. The data is obtained by adding
+a [NotificationListener](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/javax/management/NotificationListener.html)
+to the [GarbageCollectorMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/GarbageCollectorMXBean.html).
+Example metrics:
+
+
+
+```text
+# HELP jvm_memory_pool_allocated_bytes_total Total bytes allocated in a given JVM memory pool. Only updated after GC, not continuously.
+# TYPE jvm_memory_pool_allocated_bytes_total counter
+jvm_memory_pool_allocated_bytes_total{pool="Code Cache"} 4336448.0
+jvm_memory_pool_allocated_bytes_total{pool="Compressed Class Space"} 875016.0
+jvm_memory_pool_allocated_bytes_total{pool="Metaspace"} 7480456.0
+jvm_memory_pool_allocated_bytes_total{pool="PS Eden Space"} 1.79232824E8
+jvm_memory_pool_allocated_bytes_total{pool="PS Old Gen"} 1428888.0
+jvm_memory_pool_allocated_bytes_total{pool="PS Survivor Space"} 4115280.0
+```
+
+
+
+## JVM Runtime Info Metric
+
+The JVM runtime info metric is provided by
+the [JvmRuntimeInfoMetric](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmRuntimeInfoMetric.html)
+class. The data is obtained via system properties and will not change throughout the lifetime of the
+application. Example metric:
+
+
+
+```text
+# TYPE jvm_runtime info
+# HELP jvm_runtime JVM runtime info
+jvm_runtime_info{runtime="OpenJDK Runtime Environment",vendor="Oracle Corporation",version="1.8.0_382-b05"} 1
+```
+
+
+
+## JVM Thread Metrics
+
+JVM thread metrics are provided by
+the [JvmThreadsMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetrics.html)
+class. The data is coming from
+the [ThreadMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/ThreadMXBean.html).
+Example metrics:
+
+
+
+```text
+# HELP jvm_threads_current Current thread count of a JVM
+# TYPE jvm_threads_current gauge
+jvm_threads_current 10.0
+# HELP jvm_threads_daemon Daemon thread count of a JVM
+# TYPE jvm_threads_daemon gauge
+jvm_threads_daemon 8.0
+# HELP jvm_threads_deadlocked Cycles of JVM-threads that are in deadlock waiting to acquire object monitors or ownable synchronizers
+# TYPE jvm_threads_deadlocked gauge
+jvm_threads_deadlocked 0.0
+# HELP jvm_threads_deadlocked_monitor Cycles of JVM-threads that are in deadlock waiting to acquire object monitors
+# TYPE jvm_threads_deadlocked_monitor gauge
+jvm_threads_deadlocked_monitor 0.0
+# HELP jvm_threads_peak Peak thread count of a JVM
+# TYPE jvm_threads_peak gauge
+jvm_threads_peak 10.0
+# HELP jvm_threads_started_total Started thread count of a JVM
+# TYPE jvm_threads_started_total counter
+jvm_threads_started_total 10.0
+# HELP jvm_threads_state Current count of threads by state
+# TYPE jvm_threads_state gauge
+jvm_threads_state{state="BLOCKED"} 0.0
+jvm_threads_state{state="NEW"} 0.0
+jvm_threads_state{state="RUNNABLE"} 5.0
+jvm_threads_state{state="TERMINATED"} 0.0
+jvm_threads_state{state="TIMED_WAITING"} 2.0
+jvm_threads_state{state="UNKNOWN"} 0.0
+jvm_threads_state{state="WAITING"} 3.0
+```
+
+
+
+## Process Metrics
+
+Process metrics are provided by
+the [ProcessMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/ProcessMetrics.html)
+class. The data is coming from
+the [OperatingSystemMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/OperatingSystemMXBean.html),
+the [RuntimeMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/RuntimeMXBean.html),
+and from the `/proc/self/status` file on Linux. The metrics with prefix `process_` are not specific
+to Java, but should be provided by every Prometheus client library,
+see [Process Metrics](https://prometheus.io/docs/instrumenting/writing_clientlibs/#process-metrics)
+in the
+Prometheus [writing client libraries](https://prometheus.io/docs/instrumenting/writing_clientlibs/#process-metrics)
+documentation. Example metrics:
+
+```text
+# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
+# TYPE process_cpu_seconds_total counter
+process_cpu_seconds_total 1.63
+# HELP process_max_fds Maximum number of open file descriptors.
+# TYPE process_max_fds gauge
+process_max_fds 524288.0
+# HELP process_open_fds Number of open file descriptors.
+# TYPE process_open_fds gauge
+process_open_fds 28.0
+# HELP process_resident_memory_bytes Resident memory size in bytes.
+# TYPE process_resident_memory_bytes gauge
+process_resident_memory_bytes 7.8577664E7
+# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
+# TYPE process_start_time_seconds gauge
+process_start_time_seconds 1.693829439767E9
+# HELP process_virtual_memory_bytes Virtual memory size in bytes.
+# TYPE process_virtual_memory_bytes gauge
+process_virtual_memory_bytes 1.2683624448E10
+```
diff --git a/docs/content/internals/_index.md b/docs/content/internals/_index.md
new file mode 100644
index 000000000..9cce8243e
--- /dev/null
+++ b/docs/content/internals/_index.md
@@ -0,0 +1,4 @@
+---
+title: Internals
+weight: 7
+---
diff --git a/docs/content/internals/model.md b/docs/content/internals/model.md
new file mode 100644
index 000000000..e1b2af644
--- /dev/null
+++ b/docs/content/internals/model.md
@@ -0,0 +1,47 @@
+---
+title: Model
+weight: 1
+---
+
+The illustration below shows the internal architecture of the Prometheus Java client library.
+
+
+
+## prometheus-metrics-core
+
+This is the user facing metrics library, implementing the core metric types,
+like [Counter](/client_java/api/io/prometheus/metrics/core/metrics/Counter.html),
+[Gauge](/client_java/api/io/prometheus/metrics/core/metrics/Gauge.html)
+[Histogram](/client_java/api/io/prometheus/metrics/core/metrics/Histogram.html),
+and so on.
+
+All metric types implement
+the [Collector](/client_java/api/io/prometheus/metrics/model/registry/Collector.html) interface,
+i.e. they provide
+a [collect()]()
+method to produce snapshots. Implementers that do not provide metric type or label names (returning
+null from `getMetricType()` and `getLabelNames()`) are not validated at registration; they must
+avoid producing the same metric name and label schema as another collector, or exposition may be
+invalid.
+
+## prometheus-metrics-model
+
+The model is an internal library, implementing read-only immutable snapshots. These snapshots are
+returned by
+the [Collector.collect()]()
+method.
+
+There is no need for users to use `prometheus-metrics-model` directly. Users should use the API
+provided by `prometheus-metrics-core`, which includes the core metrics as well as callback metrics.
+
+However, maintainers of third-party metrics libraries might want to use `prometheus-metrics-model`
+if they want to add Prometheus exposition formats to their metrics library.
+
+## Exporters and exposition formats
+
+The `prometheus-metrics-exposition-formats` module converts snapshots to Prometheus exposition
+formats, like text format, OpenMetrics text format, or Prometheus protobuf format.
+
+The exporters like `prometheus-metrics-exporter-httpserver` or
+`prometheus-metrics-exporter-servlet-jakarta` use this to convert snapshots into the right format
+depending on the `Accept` header in the scrape request.
diff --git a/docs/content/migration/_index.md b/docs/content/migration/_index.md
new file mode 100644
index 000000000..7055c0287
--- /dev/null
+++ b/docs/content/migration/_index.md
@@ -0,0 +1,4 @@
+---
+title: Compatibility
+weight: 6
+---
diff --git a/docs/content/migration/simpleclient.md b/docs/content/migration/simpleclient.md
new file mode 100644
index 000000000..6d0580571
--- /dev/null
+++ b/docs/content/migration/simpleclient.md
@@ -0,0 +1,173 @@
+---
+title: Simpleclient
+weight: 1
+---
+
+The Prometheus Java client library 1.0.0 is a complete rewrite of the underlying data model, and is
+not backward
+compatible with releases 0.16.0 and older for a variety of reasons:
+
+- The old data model was based on [OpenMetrics](https://openmetrics.io). Native histograms don't fit
+ with the
+ OpenMetrics model because they don't follow the "every sample has exactly one double value"
+ paradigm. It was a lot
+ cleaner to implement a dedicated `prometheus-metrics-model` than trying to fit native histograms
+ into the existing
+ OpenMetrics-based model.
+- Version 0.16.0 and older has multiple Maven modules sharing the same Java package name. This is
+ not supported by the
+ Java module system. To support users of Java modules, we renamed all packages and made sure no
+ package is reused
+ across multiple Maven modules.
+
+## Migration using the Simpleclient Bridge
+
+Good news: Users of version 0.16.0 and older do not need to refactor all their instrumentation code
+to get started with
+1.0.0.
+
+We provide a migration module for bridging the old simpleclient `CollectorRegistry` to the new
+`PrometheusRegistry`.
+
+To use the bridge, add the following dependency:
+
+{{< tabs "uniqueid" >}}
+{{< tab "Gradle" >}}
+
+```groovy
+implementation 'io.prometheus:prometheus-metrics-simpleclient-bridge:1.0.0'
+```
+
+{{< /tab >}}
+{{< tab "Maven" >}}
+
+```xml
+
+
+ io.prometheus
+ prometheus-metrics-simpleclient-bridge
+ 1.0.0
+
+```
+
+{{< /tab >}}
+{{< /tabs >}}
+
+Then add the following to your code:
+
+```java
+SimpleclientCollector.builder().register();
+```
+
+This will make all metrics registered with simpleclient's `CollectorRegistry.defaultRegistry`
+available in the new
+`PrometheusRegistry.defaultRegistry`.
+
+If you are using custom registries, you can specify them like this:
+
+```java
+CollectorRegistry simpleclientRegistry = ...;
+PrometheusRegistry prometheusRegistry = ...;
+
+SimpleclientCollector.builder()
+ .collectorRegistry(simpleclientRegistry)
+ .register(prometheusRegistry);
+```
+
+## Refactoring the Instrumentation Code
+
+If you decide to get rid of the old 0.16.0 dependencies and use 1.0.0 only, you need to refactor
+your code:
+
+Dependencies:
+
+- `simpleclient` -> `prometheus-metrics-core`
+- `simpleclient_hotspot` -> `prometheus-metrics-instrumentation-jvm`
+- `simpleclient_httpserver` -> `prometheus-metrics-exporter-httpserver`
+- `simpleclient_servlet_jakarta` -> `prometheus-metrics-exporter-servlet-jakarta`
+
+As long as you are using high-level metric API like `Counter`, `Gauge`, `Histogram`, and `Summary`
+converting code to
+the new API is relatively straightforward. You will need to adapt the package name and apply some
+minor changes like
+using `builder()` instead of `build()` or using `labelValues()` instead of `labels()`.
+
+Example of the old 0.16.0 API:
+
+```java
+import io.prometheus.client.Counter;
+
+Counter counter = Counter.build()
+ .name("test")
+ .help("test counter")
+ .labelNames("path")
+ .register();
+
+counter.labels("/hello-world").inc();
+```
+
+Example of the new 1.0.0 API:
+
+```java
+import io.prometheus.metrics.core.metrics.Counter;
+
+Counter counter = Counter.builder()
+ .name("test")
+ .help("test counter")
+ .labelNames("path")
+ .register();
+
+counter.labelValues("/hello-world").inc();
+```
+
+Reasons why we changed the API: Changing the package names was a necessity because the previous
+package names were
+incompatible with the Java module system. However, renaming packages requires changing code anyway,
+so we decided to
+clean up some things. For example, the name `builder()` for a builder method is very common in the
+Java ecosystem, it's
+used in Spring, Lombok, and so on. So naming the method `builder()` makes the Prometheus library
+more aligned with the
+broader Java ecosystem.
+
+If you are using the low level `Collector` API directly, you should have a look at the new callback
+metric types,
+see [/getting-started/callbacks/]({{< relref "../getting-started/callbacks.md" >}}). Chances are
+good that the new callback metrics have
+an easier way to achieve what you need than the old 0.16.0 code.
+
+## JVM Metrics
+
+Version 0.16.0 provided the `simpleclient_hotspot` module for exposing built-in JVM metrics:
+
+```java
+DefaultExports.initialize();
+```
+
+With version 1.0.0 these metrics moved to the `prometheus-metrics-instrumentation-jvm` module and
+are initialized as follows:
+
+```java
+JvmMetrics.builder().register();
+```
+
+A full list of the available JVM metrics can be found
+on [/instrumentation/jvm]({{< relref "../instrumentation/jvm.md" >}}).
+
+Most JVM metric names remained the same, except for a few cases where the old 0.16.0 metric names
+were not compliant with the [OpenMetrics](https://openmetrics.io) specification. OpenMetrics
+requires the unit to be a suffix, so we renamed metrics where the unit was in the middle of the
+metric name and moved the unit to the end of the metric name. The following metric names changed:
+
+- `jvm_memory_bytes_committed` -> `jvm_memory_committed_bytes`
+- `jvm_memory_bytes_init` -> `jvm_memory_init_bytes`
+- `jvm_memory_bytes_max` -> `jvm_memory_max_bytes`
+- `jvm_memory_pool_bytes_committed` -> `jvm_memory_pool_committed_bytes`
+- `jvm_memory_pool_bytes_init` -> `jvm_memory_pool_init_bytes`
+- `jvm_memory_pool_bytes_max` -> `jvm_memory_pool_max_bytes`
+- `jvm_memory_pool_bytes_used` -> `jvm_memory_pool_used_bytes`
+- `jvm_memory_pool_collection_bytes_committed` -> `jvm_memory_pool_collection_committed_bytes`
+- `jvm_memory_pool_collection_bytes_init` -> `jvm_memory_pool_collection_init_bytes`
+- `jvm_memory_pool_collection_bytes_max` -> `jvm_memory_pool_collection_max_bytes`
+- `jvm_memory_pool_collection_bytes_used` -> `jvm_memory_pool_collection_used_bytes`
+- `jvm_info` -> `jvm_runtime_info`
diff --git a/docs/content/otel/_index.md b/docs/content/otel/_index.md
new file mode 100644
index 000000000..79e89d3a5
--- /dev/null
+++ b/docs/content/otel/_index.md
@@ -0,0 +1,4 @@
+---
+title: OpenTelemetry
+weight: 4
+---
diff --git a/docs/content/otel/jvm-runtime-metrics.md b/docs/content/otel/jvm-runtime-metrics.md
new file mode 100644
index 000000000..d61da1861
--- /dev/null
+++ b/docs/content/otel/jvm-runtime-metrics.md
@@ -0,0 +1,241 @@
+---
+title: JVM Runtime Metrics
+weight: 4
+---
+
+OpenTelemetry's
+[runtime-telemetry](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/runtime-telemetry)
+module is an alternative to
+[prometheus-metrics-instrumentation-jvm]({{< relref "../instrumentation/jvm.md" >}})
+for users who want JVM metrics following OTel semantic conventions.
+
+Key advantages:
+
+- Metric names follow
+ [OTel semantic conventions](https://opentelemetry.io/docs/specs/semconv/runtime/jvm-metrics/)
+- Java 17+ JFR support (context switches, network I/O,
+ lock contention, memory allocation)
+- Alignment with the broader OTel ecosystem
+
+Since OpenTelemetry's `opentelemetry-exporter-prometheus`
+already depends on this library's `PrometheusRegistry`,
+no additional code is needed in this library — only the
+OTel SDK wiring shown below.
+
+## Dependencies
+
+Use the [OTel Support]({{< relref "support.md" >}}) module
+to pull in the OTel SDK and Prometheus exporter, then add
+the runtime-telemetry instrumentation:
+
+{{< tabs "jvm-runtime-deps" >}}
+{{< tab "Gradle" >}}
+
+```groovy
+implementation 'io.prometheus:prometheus-metrics-otel-support:$version'
+
+// Use opentelemetry-runtime-telemetry-java8 (Java 8+)
+// or opentelemetry-runtime-telemetry-java17 (Java 17+, JFR-based)
+implementation(
+ 'io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8:$otelVersion-alpha'
+)
+```
+
+{{< /tab >}}
+{{< tab "Maven" >}}
+
+```xml
+
+ io.prometheus
+ prometheus-metrics-otel-support
+ $version
+ pom
+
+
+
+
+
+ io.opentelemetry.instrumentation
+ opentelemetry-runtime-telemetry-java8
+ $otelVersion-alpha
+
+
+
+```
+
+{{< /tab >}}
+{{< /tabs >}}
+
+## Standalone Setup
+
+If you **only** want OTel runtime metrics exposed as
+Prometheus, without any Prometheus Java client metrics:
+
+```java
+import io.opentelemetry.exporter.prometheus.PrometheusHttpServer;
+import io.opentelemetry.instrumentation.runtimemetrics.java8.RuntimeMetrics;
+import io.opentelemetry.sdk.OpenTelemetrySdk;
+import io.opentelemetry.sdk.metrics.SdkMeterProvider;
+
+PrometheusHttpServer prometheusServer =
+ PrometheusHttpServer.builder()
+ .setPort(9464)
+ .build();
+
+OpenTelemetrySdk openTelemetry =
+ OpenTelemetrySdk.builder()
+ .setMeterProvider(
+ SdkMeterProvider.builder()
+ .registerMetricReader(prometheusServer)
+ .build())
+ .build();
+
+RuntimeMetrics runtimeMetrics =
+ RuntimeMetrics.builder(openTelemetry).build();
+
+// Close on shutdown to stop metric collection and server
+Runtime.getRuntime().addShutdownHook(new Thread(() -> {
+ runtimeMetrics.close();
+ prometheusServer.close();
+}));
+
+// Scrape at http://localhost:9464/metrics
+```
+
+## Combined with Prometheus Java Client Metrics
+
+If you already have Prometheus Java client metrics and want to
+add OTel runtime metrics to the **same** `/metrics`
+endpoint, use `PrometheusMetricReader` to bridge OTel
+metrics into a `PrometheusRegistry`:
+
+```java
+import io.prometheus.metrics.core.metrics.Counter;
+import io.prometheus.metrics.exporter.httpserver.HTTPServer;
+import io.prometheus.metrics.model.registry.PrometheusRegistry;
+import io.opentelemetry.exporter.prometheus.PrometheusMetricReader;
+import io.opentelemetry.instrumentation.runtimemetrics.java8.RuntimeMetrics;
+import io.opentelemetry.sdk.OpenTelemetrySdk;
+import io.opentelemetry.sdk.metrics.SdkMeterProvider;
+
+PrometheusRegistry registry =
+ new PrometheusRegistry();
+
+// Register Prometheus metrics as usual
+Counter myCounter = Counter.builder()
+ .name("my_requests_total")
+ .register(registry);
+
+// Bridge OTel metrics into the same registry
+PrometheusMetricReader reader =
+ PrometheusMetricReader.create();
+registry.register(reader);
+
+OpenTelemetrySdk openTelemetry =
+ OpenTelemetrySdk.builder()
+ .setMeterProvider(
+ SdkMeterProvider.builder()
+ .registerMetricReader(reader)
+ .build())
+ .build();
+
+RuntimeMetrics runtimeMetrics =
+ RuntimeMetrics.builder(openTelemetry).build();
+Runtime.getRuntime()
+ .addShutdownHook(new Thread(runtimeMetrics::close));
+
+// Expose everything on one endpoint
+HTTPServer.builder()
+ .port(9400)
+ .registry(registry)
+ .buildAndStart();
+```
+
+The [examples/example-otel-jvm-runtime-metrics](https://github.com/prometheus/client_java/tree/main/examples/example-otel-jvm-runtime-metrics)
+directory has a complete runnable example.
+
+## Configuration
+
+The `RuntimeMetricsBuilder` supports two configuration
+options:
+
+### `captureGcCause()`
+
+Adds a `jvm.gc.cause` attribute to the `jvm.gc.duration`
+metric, indicating why the garbage collection occurred
+(e.g. `G1 Evacuation Pause`, `System.gc()`):
+
+```java
+RuntimeMetrics.builder(openTelemetry)
+ .captureGcCause()
+ .build();
+```
+
+### `emitExperimentalTelemetry()`
+
+Enables additional experimental metrics beyond the stable
+set. These are not yet part of the OTel semantic conventions
+and may change in future releases:
+
+- Buffer pool metrics (direct and mapped byte buffers)
+- Extended CPU metrics
+- Extended memory pool metrics
+- File descriptor metrics
+
+```java
+RuntimeMetrics.builder(openTelemetry)
+ .emitExperimentalTelemetry()
+ .build();
+```
+
+Both options can be combined:
+
+```java
+RuntimeMetrics.builder(openTelemetry)
+ .captureGcCause()
+ .emitExperimentalTelemetry()
+ .build();
+```
+
+Selective per-metric registration is not supported by the
+runtime-telemetry API — it is all-or-nothing with these
+two toggles.
+
+## Java 17 JFR Support
+
+The `opentelemetry-runtime-telemetry-java17` variant adds
+JFR-based metrics. You can selectively enable features:
+
+```java
+import io.opentelemetry.instrumentation.runtimemetrics.java17.JfrFeature;
+import io.opentelemetry.instrumentation.runtimemetrics.java17.RuntimeMetrics;
+
+RuntimeMetrics.builder(openTelemetry)
+ .enableFeature(JfrFeature.BUFFER_METRICS)
+ .enableFeature(JfrFeature.NETWORK_IO_METRICS)
+ .enableFeature(JfrFeature.LOCK_METRICS)
+ .enableFeature(JfrFeature.CONTEXT_SWITCH_METRICS)
+ .build();
+```
+
+## Metric Names
+
+OTel metric names are converted to Prometheus format by
+the exporter. Examples:
+
+| OTel name | Prometheus name |
+| ---------------------------- | ---------------------------------- |
+| `jvm.memory.used` | `jvm_memory_used_bytes` |
+| `jvm.gc.duration` | `jvm_gc_duration_seconds` |
+| `jvm.thread.count` | `jvm_thread_count` |
+| `jvm.class.loaded` | `jvm_class_loaded` |
+| `jvm.cpu.recent_utilization` | `jvm_cpu_recent_utilization_ratio` |
+
+See [Names]({{< relref "names.md" >}}) for full details on
+how OTel names map to Prometheus names.
diff --git a/docs/content/otel/names.md b/docs/content/otel/names.md
new file mode 100644
index 000000000..a5425e07f
--- /dev/null
+++ b/docs/content/otel/names.md
@@ -0,0 +1,36 @@
+---
+title: Names
+weight: 3
+---
+
+OpenTelemetry naming conventions are different from Prometheus naming conventions. The mapping from
+OpenTelemetry metric names to Prometheus metric names is well defined in
+OpenTelemetry's [Prometheus and OpenMetrics Compatibility](https://opentelemetry.io/docs/specs/otel/compatibility/prometheus_and_openmetrics/)
+spec, and
+the [OpenTelemetryExporter](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.html)
+implements that specification.
+
+The goal is, if you set up a pipeline as illustrated below, you will see the same metric names in
+the Prometheus server as if you had exposed Prometheus metrics directly.
+
+
+
+The main steps when converting OpenTelemetry metric names to Prometheus metric names are:
+
+- Escape illegal characters as described in [Unicode support]
+- If the metric has a unit, append the unit to the metric name, like `_seconds`.
+- If the metric type has a suffix, append it, like `_total` for counters.
+
+## Dots in Metric and Label Names
+
+OpenTelemetry defines not only a line protocol, but also _semantic conventions_, i.e. standardized
+metric and label names. For example,
+OpenTelemetry's [Semantic Conventions for HTTP Metrics](https://opentelemetry.io/docs/specs/otel/metrics/semantic_conventions/http-metrics/)
+say that if you instrument an HTTP server with OpenTelemetry, you must have a histogram named
+`http.server.duration`.
+
+Most names defined in semantic conventions use dots.
+Dots in metric and label names are now supported in the Prometheus Java client library as
+described in [Unicode support].
+
+[Unicode support]: {{< relref "../exporters/unicode.md" >}}
diff --git a/docs/content/otel/otlp.md b/docs/content/otel/otlp.md
new file mode 100644
index 000000000..568219dd0
--- /dev/null
+++ b/docs/content/otel/otlp.md
@@ -0,0 +1,61 @@
+---
+title: OTLP
+weight: 1
+---
+
+The Prometheus Java client library allows you to push metrics to an OpenTelemetry endpoint using the
+OTLP protocol.
+
+
+
+To implement this, you need to include `prometheus-metrics-exporter` as a dependency
+
+{{< tabs "uniqueid" >}}
+{{< tab "Gradle" >}}
+
+```groovy
+implementation 'io.prometheus:prometheus-metrics-exporter-opentelemetry:1.0.0'
+```
+
+{{< /tab >}}
+{{< tab "Maven" >}}
+
+```xml
+
+ io.prometheus
+ prometheus-metrics-exporter-opentelemetry
+ 1.0.0
+
+```
+
+{{< /tab >}}
+{{< /tabs >}}
+
+Initialize the `OpenTelemetryExporter` in your Java code:
+
+```java
+OpenTelemetryExporter.builder()
+ // optional: call configuration methods here
+ .buildAndStart();
+```
+
+By default, the `OpenTelemetryExporter` will push metrics every 60 seconds to `localhost:4317` using
+`grpc` protocol. You can configure this in code using
+the [OpenTelemetryExporter.Builder](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.Builder.html),
+or at runtime via [`io.prometheus.exporter.opentelemetry.*`]({{< relref "../config/config.md#exporter-opentelemetry-properties" >}})
+properties.
+
+In addition to the Prometheus Java client configuration, the exporter also recognizes standard
+OpenTelemetry configuration. For example, you can set
+the [OTEL_EXPORTER_OTLP_METRICS_ENDPOINT](https://opentelemetry.io/docs/concepts/sdk-configuration/otlp-exporter-configuration/#otel_exporter_otlp_metrics_endpoint)
+environment variable to configure the endpoint. The Javadoc
+for [OpenTelemetryExporter.Builder](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.Builder.html)
+shows which settings have corresponding OTel configuration. The intended use case is that if you
+attach the
+[OpenTelemetry Java agent](https://github.com/open-telemetry/opentelemetry-java-instrumentation/)
+for tracing, and use the Prometheus Java client for metrics, it is sufficient to configure the OTel
+agent because the Prometheus library will pick up the same configuration.
+
+The [examples/example-exporter-opentelemetry](https://github.com/prometheus/client_java/tree/main/examples/example-exporter-opentelemetry)
+folder has a Docker compose with a complete end-to-end example, including a Java app, the OTel
+collector, and a Prometheus server.
diff --git a/docs/content/otel/support.md b/docs/content/otel/support.md
new file mode 100644
index 000000000..e3b8cbe3a
--- /dev/null
+++ b/docs/content/otel/support.md
@@ -0,0 +1,47 @@
+---
+title: OTel Support
+weight: 2
+---
+
+The `prometheus-metrics-otel-support` module bundles the
+OpenTelemetry SDK and the Prometheus exporter into a single
+POM dependency.
+
+Use this module when you want to combine OpenTelemetry
+instrumentations (e.g. JVM runtime metrics) with the
+Prometheus Java client on one `/metrics` endpoint.
+
+## Dependencies
+
+{{< tabs "otel-support-deps" >}}
+{{< tab "Gradle" >}}
+
+```groovy
+implementation 'io.prometheus:prometheus-metrics-otel-support:$version'
+```
+
+{{< /tab >}}
+{{< tab "Maven" >}}
+
+```xml
+
+ io.prometheus
+ prometheus-metrics-otel-support
+ $version
+ pom
+
+```
+
+{{< /tab >}}
+{{< /tabs >}}
+
+This single dependency replaces:
+
+- `io.opentelemetry:opentelemetry-sdk`
+- `io.opentelemetry:opentelemetry-exporter-prometheus`
+
+## Use Cases
+
+See [JVM Runtime Metrics]({{< relref "jvm-runtime-metrics.md" >}})
+for a concrete example of combining OTel JVM metrics with
+the Prometheus Java client.
diff --git a/docs/content/otel/tracing.md b/docs/content/otel/tracing.md
new file mode 100644
index 000000000..33180d34a
--- /dev/null
+++ b/docs/content/otel/tracing.md
@@ -0,0 +1,77 @@
+---
+title: Tracing
+weight: 2
+---
+
+OpenTelemetry’s
+[vision statement](https://github.com/open-telemetry/community/blob/main/mission-vision-values.md)
+says that
+[telemetry should be loosely coupled](https://github.com/open-telemetry/community/blob/main/mission-vision-values.md#telemetry-should-be-loosely-coupled),
+allowing end users to pick and choose from the pieces they want without having to bring in the rest
+of the project, too. In that spirit, you might choose to instrument your Java application with the
+Prometheus Java client library for metrics, and attach the
+[OpenTelemetry Java agent](https://github.com/open-telemetry/opentelemetry-java-instrumentation/)
+to get distributed tracing.
+
+First, if you attach the
+[OpenTelemetry Java agent](https://github.com/open-telemetry/opentelemetry-java-instrumentation/)
+you might want to turn off OTel's built-in metrics, because otherwise you get metrics from both the
+Prometheus Java client library and the OpenTelemetry agent (technically it's no problem to get both
+metrics, it's just not a common use case).
+
+```bash
+# This will tell the OpenTelemetry agent not to send metrics, just traces and logs.
+export OTEL_METRICS_EXPORTER=none
+```
+
+Now, start your application with the OpenTelemetry Java agent attached for traces and logs.
+
+```bash
+java -javaagent:path/to/opentelemetry-javaagent.jar -jar myapp.jar
+```
+
+With the OpenTelemetry Java agent attached, the Prometheus client library will do a lot of magic
+under the hood.
+
+- `service.name` and `service.instance.id` are used in OpenTelemetry to uniquely identify a service
+ instance. The Prometheus client library will automatically use the same `service.name` and
+ `service.instance.id` as the agent when pushing metrics in OpenTelemetry format. That way the
+ monitoring backend will see that the metrics and the traces are coming from the same instance.
+- Exemplars are added automatically if a Prometheus metric is updated in the context of a
+ distributed OpenTelemetry trace.
+- If a Span is used as an Exemplar, the Span is marked with the Span attribute `exemplar="true"`.
+ This can be used in the OpenTelemetry's sampling policy to make sure Exemplars are always sampled.
+
+Here's more context on the `exemplar="true"` Span attribute: Many users of tracing libraries don't
+keep 100% of their trace data, because traces are very repetitive. It is very common to sample only
+10% of traces and discard 90%. However, this can be an issue with Exemplars: In 90% of the cases
+Exemplars would point to a trace that has been thrown away.
+
+To solve this, the Prometheus Java client library annotates each Span that has been used as an
+Exemplar with the `exemplar="true"` Span attribute.
+
+The sampling policy in the OpenTelemetry collector can be configured to keep traces with this
+attribute. There's no risk that this results in a significant increase in trace data, because new
+Exemplars are only selected every
+[`minRetentionPeriodSeconds`]({{< relref "../config/config.md#exemplar-properties" >}}) seconds.
+
+Here's an example of how to configure OpenTelemetry's
+[tail sampling processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/tailsamplingprocessor/)
+to sample all Spans marked with `exemplar="true"`, and then discard 90% of the traces:
+
+```yaml
+policies:
+ [
+ {
+ name: keep-exemplars,
+ type: string_attribute,
+ string_attribute: { key: "exemplar", values: ["true"] },
+ },
+ { name: keep-10-percent, type: probabilistic, probabilistic: { sampling_percentage: 10 } },
+ ]
+```
+
+The [examples/example-exemplar-tail-sampling/](https://github.com/prometheus/client_java/tree/main/examples/example-exemplars-tail-sampling)
+directory has a complete end-to-end example, with a distributed Java application with two services,
+an OpenTelemetry collector, Prometheus, Tempo as a trace database, and Grafana dashboards. Use
+docker-compose as described in the example's readme to run the example and explore the results.
diff --git a/docs/data/menu/extra.yaml b/docs/data/menu/extra.yaml
new file mode 100644
index 000000000..ff5756bf8
--- /dev/null
+++ b/docs/data/menu/extra.yaml
@@ -0,0 +1,6 @@
+---
+header:
+ - name: GitHub
+ ref: https://github.com/prometheus/client_java
+ icon: gdoc_github
+ external: true
diff --git a/docs/data/menu/more.yaml b/docs/data/menu/more.yaml
new file mode 100644
index 000000000..ee55dc634
--- /dev/null
+++ b/docs/data/menu/more.yaml
@@ -0,0 +1,14 @@
+---
+more:
+ - name: JavaDoc
+ ref: "/client_java/api"
+ external: true
+ icon: "gdoc_bookmark"
+ - name: Releases
+ ref: "https://github.com/prometheus/client_java/releases"
+ external: true
+ icon: "gdoc_download"
+ - name: Github
+ ref: "https://github.com/prometheus/client_java"
+ external: true
+ icon: "gdoc_github"
diff --git a/docs/hugo.toml b/docs/hugo.toml
new file mode 100644
index 000000000..b558774ec
--- /dev/null
+++ b/docs/hugo.toml
@@ -0,0 +1,34 @@
+baseURL = "http://localhost"
+languageCode = 'en-us'
+title = "client_java"
+theme = "hugo-geekdoc"
+
+pluralizeListTitles = false
+
+# Geekdoc required configuration
+#pygmentsUseClasses = true
+pygmentsUseClasses = false
+pygmentsCodeFences = true
+disablePathToLower = true
+# geekdocFileTreeSortBy = "linkTitle"
+
+# Required if you want to render robots.txt template
+enableRobotsTXT = true
+
+# Needed for mermaid shortcodes
+[markup]
+ [markup.goldmark.renderer]
+ # Needed for mermaid shortcode
+ unsafe = true
+ [markup.tableOfContents]
+ startLevel = 1
+ endLevel = 9
+ [markup.highlight]
+ style = 'solarized-dark'
+
+[taxonomies]
+ tag = "tags"
+
+[caches]
+ [caches.images]
+ dir = ':cacheDir/images'
diff --git a/docs/static/.gitignore b/docs/static/.gitignore
new file mode 100644
index 000000000..eedd89b45
--- /dev/null
+++ b/docs/static/.gitignore
@@ -0,0 +1 @@
+api
diff --git a/docs/static/brand.svg b/docs/static/brand.svg
new file mode 100644
index 000000000..5c51f66d9
--- /dev/null
+++ b/docs/static/brand.svg
@@ -0,0 +1,50 @@
+
+
+
+
\ No newline at end of file
diff --git a/docs/static/custom.css b/docs/static/custom.css
new file mode 100644
index 000000000..ed919a35d
--- /dev/null
+++ b/docs/static/custom.css
@@ -0,0 +1,43 @@
+/*
+ * Didn't find much time to create a theme yet,
+ * so there are just a few non-default settings for now.
+ */
+:root,
+:root[color-theme="light"] {
+ --header-background: #222222;
+ --footer-background: #e6522c;
+ --footer-link-color: #ffffff;
+ --footer-link-color-visited: #ffffff;
+}
+
+@media (prefers-color-scheme: light) {
+ :root {
+ --header-background: #222222;
+ --footer-background: #e6522c;
+ --footer-link-color: #ffffff;
+ --footer-link-color-visited: #ffffff;
+ }
+}
+
+:root[color-theme="dark"]
+{
+ --header-background: #111c24;
+ --body-background: #1f1f21;
+ --footer-background: #e6522c;
+ --footer-link-color: #ffffff;
+ --footer-link-color-visited: #ffffff;
+}
+
+@media (prefers-color-scheme: dark) {
+ :root {
+ --header-background: #111c24;
+ --body-background: #1f1f21;
+ --footer-background: #e6522c;
+ --footer-link-color: #ffffff;
+ --footer-link-color-visited: #ffffff;
+ }
+}
+
+.gdoc-markdown pre,.gdoc-markdown code {
+ overflow: auto;
+}
\ No newline at end of file
diff --git a/docs/static/favicon/favicon-16x16.png b/docs/static/favicon/favicon-16x16.png
new file mode 100644
index 000000000..7a8cc5816
Binary files /dev/null and b/docs/static/favicon/favicon-16x16.png differ
diff --git a/docs/static/favicon/favicon-32x32.png b/docs/static/favicon/favicon-32x32.png
new file mode 100644
index 000000000..7d5a3ae3c
Binary files /dev/null and b/docs/static/favicon/favicon-32x32.png differ
diff --git a/docs/static/favicon/favicon.ico b/docs/static/favicon/favicon.ico
new file mode 100644
index 000000000..34bd1fbf0
Binary files /dev/null and b/docs/static/favicon/favicon.ico differ
diff --git a/docs/static/favicon/favicon.svg b/docs/static/favicon/favicon.svg
new file mode 100644
index 000000000..5c51f66d9
--- /dev/null
+++ b/docs/static/favicon/favicon.svg
@@ -0,0 +1,50 @@
+
+
+
+
\ No newline at end of file
diff --git a/docs/static/images/model.png b/docs/static/images/model.png
new file mode 100644
index 000000000..ee5094596
Binary files /dev/null and b/docs/static/images/model.png differ
diff --git a/docs/static/images/otel-pipeline.png b/docs/static/images/otel-pipeline.png
new file mode 100644
index 000000000..5cf8eda3d
Binary files /dev/null and b/docs/static/images/otel-pipeline.png differ
diff --git a/docs/themes/hugo-geekdoc/LICENSE b/docs/themes/hugo-geekdoc/LICENSE
new file mode 100644
index 000000000..3812eb46b
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Robert Kaussow
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
+OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/docs/themes/hugo-geekdoc/README.md b/docs/themes/hugo-geekdoc/README.md
new file mode 100644
index 000000000..99358d83c
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/README.md
@@ -0,0 +1,46 @@
+# Geekdoc
+
+[](https://ci.thegeeklab.de/repos/thegeeklab/hugo-geekdoc)
+[](https://gohugo.io)
+[](https://github.com/thegeeklab/hugo-geekdoc/releases/latest)
+[](https://github.com/thegeeklab/hugo-geekdoc/graphs/contributors)
+[](https://github.com/thegeeklab/hugo-geekdoc/blob/main/LICENSE)
+
+Geekdoc is a simple Hugo theme for documentations. It is intentionally designed as a fast and lean theme and may not fit the requirements of complex projects. If a more feature-complete theme is required there are a lot of good alternatives out there. You can find a demo and the full documentation at [https://geekdocs.de](https://geekdocs.de).
+
+
+
+## Build and release process
+
+This theme is subject to a CI driven build and release process common for software development. During the release build, all necessary assets are automatically built by [webpack](https://webpack.js.org/) and bundled in a release tarball. You can download the latest release from the GitHub [release page](https://github.com/thegeeklab/hugo-geekdoc/releases).
+
+Due to the fact that `webpack` and `npm scripts` are used as pre-processors, the theme cannot be used from the main branch by default. If you want to use the theme from a cloned branch instead of a release tarball you'll need to install `webpack` locally and run the build script once to create all required assets.
+
+```shell
+# install required packages from package.json
+npm install
+
+# run the build script to build required assets
+npm run build
+
+# build release tarball
+npm run pack
+```
+
+See the [Getting Started Guide](https://geekdocs.de/usage/getting-started/) for details about the different setup options.
+
+## Contributors
+
+Special thanks to all [contributors](https://github.com/thegeeklab/hugo-geekdoc/graphs/contributors). If you would like to contribute, please see the [instructions](https://github.com/thegeeklab/hugo-geekdoc/blob/main/CONTRIBUTING.md).
+
+Geekdoc is inspired and partially based on the [hugo-book](https://github.com/alex-shpak/hugo-book) theme, thanks [Alex Shpak](https://github.com/alex-shpak/) for your work.
+
+## License
+
+This project is licensed under the MIT License - see the [LICENSE](https://github.com/thegeeklab/hugo-geekdoc/blob/main/LICENSE) file for details.
+
+The used SVG icons and generated icon fonts are licensed under the license of the respective icon pack:
+
+- Font Awesome: [CC BY 4.0 License](https://github.com/FortAwesome/Font-Awesome#license)
+- IcoMoon Free Pack: [GPL/CC BY 4.0](https://icomoon.io/#icons-icomoon)
+- Material Icons: [Apache License 2.0](https://github.com/google/material-design-icons/blob/main/LICENSE)
diff --git a/docs/themes/hugo-geekdoc/VERSION b/docs/themes/hugo-geekdoc/VERSION
new file mode 100644
index 000000000..d0cca40aa
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/VERSION
@@ -0,0 +1 @@
+v0.41.1
diff --git a/docs/themes/hugo-geekdoc/archetypes/docs.md b/docs/themes/hugo-geekdoc/archetypes/docs.md
new file mode 100644
index 000000000..aa0d88f7b
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/archetypes/docs.md
@@ -0,0 +1,7 @@
+---
+title: "{{ .Name | humanize | title }}"
+weight: 1
+# geekdocFlatSection: false
+# geekdocToc: 6
+# geekdocHidden: false
+---
diff --git a/docs/themes/hugo-geekdoc/archetypes/posts.md b/docs/themes/hugo-geekdoc/archetypes/posts.md
new file mode 100644
index 000000000..fdccff8ae
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/archetypes/posts.md
@@ -0,0 +1,4 @@
+---
+title: "{{ replace .Name "-" " " | title }}"
+date: {{ .Date }}
+---
diff --git a/docs/themes/hugo-geekdoc/assets/search/config.json b/docs/themes/hugo-geekdoc/assets/search/config.json
new file mode 100644
index 000000000..1a5582a2e
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/assets/search/config.json
@@ -0,0 +1,8 @@
+{{- $searchDataFile := printf "search/%s.data.json" .Language.Lang -}}
+{{- $searchData := resources.Get "search/data.json" | resources.ExecuteAsTemplate $searchDataFile . | resources.Minify -}}
+{
+ "dataFile": {{ $searchData.RelPermalink | jsonify }},
+ "indexConfig": {{ .Site.Params.geekdocSearchConfig | jsonify }},
+ "showParent": {{ if .Site.Params.geekdocSearchShowParent }}true{{ else }}false{{ end }},
+ "showDescription": {{ if .Site.Params.geekdocSearchshowDescription }}true{{ else }}false{{ end }}
+}
diff --git a/docs/themes/hugo-geekdoc/assets/search/data.json b/docs/themes/hugo-geekdoc/assets/search/data.json
new file mode 100644
index 000000000..f1c0e804e
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/assets/search/data.json
@@ -0,0 +1,13 @@
+[
+ {{ range $index, $page := (where .Site.Pages "Params.geekdocProtected" "ne" true) }}
+ {{ if ne $index 0 }},{{ end }}
+ {
+ "id": {{ $index }},
+ "href": "{{ $page.RelPermalink }}",
+ "title": {{ (partial "utils/title" $page) | jsonify }},
+ "parent": {{ with $page.Parent }}{{ (partial "utils/title" .) | jsonify }}{{ else }}""{{ end }},
+ "content": {{ $page.Plain | jsonify }},
+ "description": {{ $page.Summary | plainify | jsonify }}
+ }
+ {{ end }}
+]
diff --git a/docs/themes/hugo-geekdoc/assets/sprites/geekdoc.svg b/docs/themes/hugo-geekdoc/assets/sprites/geekdoc.svg
new file mode 100644
index 000000000..4f3cfd291
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/assets/sprites/geekdoc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/themes/hugo-geekdoc/data/assets.json b/docs/themes/hugo-geekdoc/data/assets.json
new file mode 100644
index 000000000..81541fbbc
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/data/assets.json
@@ -0,0 +1,158 @@
+{
+ "main.js": {
+ "src": "js/main-924a1933.bundle.min.js",
+ "integrity": "sha512-0QF6awwW0WbBo491yytmULiHrc9gx94bloJ9MSXIvdJh3YHWw7CWyeX2YXu0rzOQefJp4jW/I6ZjUDYpNVFhdA=="
+ },
+ "colortheme.js": {
+ "src": "js/colortheme-d3e4d351.bundle.min.js",
+ "integrity": "sha512-HpQogL/VeKqG/v1qYOfJOgFUzBnQvW4yO4tAJO+54IiwbLbB9feROdeaYf7dpO6o5tSHsSZhaYLhtLMRlEgpJQ=="
+ },
+ "mermaid.js": {
+ "src": "js/mermaid-d305d450.bundle.min.js",
+ "integrity": "sha512-TASG03QptoVv1mkfOL47vm5A5kvmyOrnsi8PXhc82j1+FuHZuMOHXc2x5/jGEkOxbKi7mum0h/W7qYhrV29raw=="
+ },
+ "katex.js": {
+ "src": "js/katex-d4d5881d.bundle.min.js",
+ "integrity": "sha512-M8CLtMTu/HVXo11Et+lv3OqPanLf5Bl+GljNAn2yQuLclg/ZpZK1KUpHDRsZJhmkhCcCH90+bVj5CW3lLlmBgg=="
+ },
+ "search.js": {
+ "src": "js/search-9719be99.bundle.min.js",
+ "integrity": "sha512-/7NZxFUEbalC/8RKDgfAsHFDI42/Ydp33uJmCLckZgnO+kuz9LrTfmPFfVJxPJ31StMxa3MTQ5Jq049CmNK4pw=="
+ },
+ "js/637-86fbbecd.chunk.min.js": {
+ "src": "js/637-86fbbecd.chunk.min.js",
+ "integrity": "sha512-vD1y0C4MPPV/JhEKmNVAye9SQg7mB5v87nLf63keSALdnM7P+L0ybjEn2MzYzVTzs6JnOCryM7A6/t0TkYucDA=="
+ },
+ "js/116-341f79d9.chunk.min.js": {
+ "src": "js/116-341f79d9.chunk.min.js",
+ "integrity": "sha512-F7tq1KsF5mnJl0AAA6x2jZcx8x69kEZrUIZJJM4RZ1KlEO79yrrFHf4CZRvhNrYOxmkBpkQ84U9J0vFtRPKjTw=="
+ },
+ "js/545-8e970b03.chunk.min.js": {
+ "src": "js/545-8e970b03.chunk.min.js",
+ "integrity": "sha512-vDOXX1FstnT8UMkRIAMn6z4ucL8LVqI5kZw+T7LrD8pGC9xtKwwhWcmNeqnngc7FHc5Ogt7ppXBNp+uFPUgrJg=="
+ },
+ "js/728-5df4a5e5.chunk.min.js": {
+ "src": "js/728-5df4a5e5.chunk.min.js",
+ "integrity": "sha512-vX2dPV1VjOgv8DP4XbZ9xk9ZzHS9hPAUwPfHM8UG42efxXxH/qCqTpyavqob98onxR2FuiF+j1Vn56d3wqsgaw=="
+ },
+ "js/81-4e653aac.chunk.min.js": {
+ "src": "js/81-4e653aac.chunk.min.js",
+ "integrity": "sha512-a80h3DpDlMG6HhYXv9n9Q7r1M+rQX5kfJ7sFhfmPHlDRVimult9nn7vvTHFzTzmMFM+tLcfg4pZGd+AkxPcjEw=="
+ },
+ "js/430-cc171d93.chunk.min.js": {
+ "src": "js/430-cc171d93.chunk.min.js",
+ "integrity": "sha512-cqQyiIE22ZPo2PIPR4eb0DPSu1TWjxgJUKrIIyfVF48gc2vdLKnbHzWBZg6MpiOWYmUvJb5Ki+n5U6qEvNp2KQ=="
+ },
+ "js/729-32b017b3.chunk.min.js": {
+ "src": "js/729-32b017b3.chunk.min.js",
+ "integrity": "sha512-KAW7lnN0NHmIzfD6aIwVaU3TcpUkO8ladLrbOE83zq80NOJH/MGS4Ep+2rIfQZTvZP+a7nqZLHkmezfs27c2pw=="
+ },
+ "js/773-8f0c4fb8.chunk.min.js": {
+ "src": "js/773-8f0c4fb8.chunk.min.js",
+ "integrity": "sha512-HxtbZvs0J28pB9fImN8n82aprG/GW0QenIBzC7BHWhEUX6IhmxTeBqG4IZFbbAURG17VegOr2UlJg6w0qaX9gw=="
+ },
+ "js/433-f2655a46.chunk.min.js": {
+ "src": "js/433-f2655a46.chunk.min.js",
+ "integrity": "sha512-/yMUz6rxhVpvCPpQG+f28jFgdJK+X/5/3XWVsrAE2FHC57jxnHaL7SxZluZ4klUl0YsRCrhxAQj8maNspwwH1Q=="
+ },
+ "js/546-560b35c2.chunk.min.js": {
+ "src": "js/546-560b35c2.chunk.min.js",
+ "integrity": "sha512-am1/hYno7/cFQ8reHZqnbsth2KcphvKqLfkueVIm8I/i/6f9u+bbc0Z6zpYTLysl3oWddYXqyeO58zXoJoDVIA=="
+ },
+ "js/118-f1de6a20.chunk.min.js": {
+ "src": "js/118-f1de6a20.chunk.min.js",
+ "integrity": "sha512-tikydCOmBT1keN0AlCqvkpvbV1gB9U8lVXX8wmrS6fQ2faNc8DnH1QV9dzAlLtGeA1p8HAXnh+AevnVKxhXVbg=="
+ },
+ "js/19-86f47ecd.chunk.min.js": {
+ "src": "js/19-86f47ecd.chunk.min.js",
+ "integrity": "sha512-qRG0UrV25Kr/36tJTPZ49QobR6a/zv2BRAMDzSZwjlPgqSwse1HtgP9EEZtn59b1Vq7ayB1LoWfB9MZ9Gcm7Gw=="
+ },
+ "js/361-f7cd601a.chunk.min.js": {
+ "src": "js/361-f7cd601a.chunk.min.js",
+ "integrity": "sha512-7kwaFQhXUyiM/v2v0n6vI9wz6nSAu7sz2236r+MbwT0r4aBxYqeOxij+PkGnTUqR2n1UExnbWKjuruDi9V/H5g=="
+ },
+ "js/519-8d0cec7f.chunk.min.js": {
+ "src": "js/519-8d0cec7f.chunk.min.js",
+ "integrity": "sha512-tFsZN3iyUMIMeB/b4E1PZNOFDKqMM4Fes63RGNkHNhtRTL/AIUpqPcTKZ+Fi2ZTdyYvPSTtjc5urnzLUi196Wg=="
+ },
+ "js/747-b55f0f97.chunk.min.js": {
+ "src": "js/747-b55f0f97.chunk.min.js",
+ "integrity": "sha512-hoyvC5SSJcX9NGij9J9l4Ov1JAFNBX0UxlFXyiB5TC7TGW3lgIvm41zyfKhLyJudVGftY/qKxIO2EYtYD2pqOQ=="
+ },
+ "js/642-12e7dea2.chunk.min.js": {
+ "src": "js/642-12e7dea2.chunk.min.js",
+ "integrity": "sha512-ZVUj7NYSa8mMHdWaztAf3DCg7qznXTbMWWwqJaS2nfaqh0lVDOf5kVExPy6SGkXCeNu/B9gGbWLtDUa7kHFF6A=="
+ },
+ "js/626-1706197a.chunk.min.js": {
+ "src": "js/626-1706197a.chunk.min.js",
+ "integrity": "sha512-OlpbPXiGmQJR/ISfBSsHU2UGATggZDuHbopvAhhfVpw7ObMZgc/UvE6pK1FmGCjgI9iS+qmPhQyvf9SIbLFyxQ=="
+ },
+ "js/438-760c9ed3.chunk.min.js": {
+ "src": "js/438-760c9ed3.chunk.min.js",
+ "integrity": "sha512-Wo2DxS59Y8DVBTWNWDUmg6V+UCyLoiDd4sPs2xc7TkflQy7reGWPt/oHZCANXeGjZPpqcR3qfKYidNofUyIWEA=="
+ },
+ "js/639-88c6538a.chunk.min.js": {
+ "src": "js/639-88c6538a.chunk.min.js",
+ "integrity": "sha512-KbTKHxx+/Xwv+GH8jQsIJ9X1CFaGSsqgeSXnR8pW27YZpFz4ly8R6K7h+yq6P2b2AzQdW7krradZzyNo7Vz26w=="
+ },
+ "js/940-25dfc794.chunk.min.js": {
+ "src": "js/940-25dfc794.chunk.min.js",
+ "integrity": "sha512-qst5aejItmhzMvZ3CsAXyJe2F3FtLkyZwBqj422/8ViyQptcQFgP3x8bPsLwJEfiWFJVrLJkk4VhwflQuIyDtw=="
+ },
+ "js/662-17acb8f4.chunk.min.js": {
+ "src": "js/662-17acb8f4.chunk.min.js",
+ "integrity": "sha512-S/UlqDqwt++RzVZMVqjsdCNyhe1xNQ9/Qm38yIphmXfn9VBHzGqobIQTuhloYZVfTE4/GezrH+1T7mdrUqpAKQ=="
+ },
+ "js/579-9222afff.chunk.min.js": {
+ "src": "js/579-9222afff.chunk.min.js",
+ "integrity": "sha512-rl3bxxl/uhUFYlIuoHfVQE+VkmxfJr7TAuC/fxOBJXBCCMpdxP0XCPzms1zjEjOVjIs4bi4SUwn8r4STSl09Lg=="
+ },
+ "js/771-942a62df.chunk.min.js": {
+ "src": "js/771-942a62df.chunk.min.js",
+ "integrity": "sha512-8WfA8U1Udlfa6uWAYbdNKJzjlJ91qZ0ZhC+ldKdhghUgilxqA6UmZxHFKGRDQydjOFDk828O28XVmZU2IEvckA=="
+ },
+ "js/506-6950d52c.chunk.min.js": {
+ "src": "js/506-6950d52c.chunk.min.js",
+ "integrity": "sha512-h2po0SsM4N3IXiBbNWlIbasxX7zSm5XVDpgYfmsEmcfQkMcFwJtTJGppek085Mxi1XZmrhjfxq2AUtnUs03LJg=="
+ },
+ "js/76-732e78f1.chunk.min.js": {
+ "src": "js/76-732e78f1.chunk.min.js",
+ "integrity": "sha512-ZjF2oB76jiCtdQNJZ9v1MUJSPaBcZCXmTA2T3qDBuU260uVA99wGeprrNQ3WdHQeK+VYXCq26dOE9w+I3b6Q4w=="
+ },
+ "js/476-86e5cf96.chunk.min.js": {
+ "src": "js/476-86e5cf96.chunk.min.js",
+ "integrity": "sha512-siq24cNKFc1tXGACAQlpbXOb2gRKDnncf39INGAPlnJSiAsYewhNusq1UxhMDFA836eucVq7NzE1TqEYskI0ug=="
+ },
+ "js/813-0d3c16f5.chunk.min.js": {
+ "src": "js/813-0d3c16f5.chunk.min.js",
+ "integrity": "sha512-gDVyQtM781xlTfyZzuEJ1tnQWyasbFKLRPwgGUF5lpdS3QpW6KTIwCnMuVn2b5XF2qKSxpei9YNIushpBI4ILA=="
+ },
+ "js/423-897d7f17.chunk.min.js": {
+ "src": "js/423-897d7f17.chunk.min.js",
+ "integrity": "sha512-ERAmXYsLT59PDGFPLTHNgaNw5CsaTOK88orlaXr+7SOxf+Yjf5fvDmpXCNJe1odvU6OF4cajtlVM1qO9hzOqWw=="
+ },
+ "js/535-dcead599.chunk.min.js": {
+ "src": "js/535-dcead599.chunk.min.js",
+ "integrity": "sha512-3gB2l6iJbt94EMd1Xh6udlMXjdHlAbuRKkyl87X/LSuG1fGbfTe11O5ma+un13BBX1wZ1xnHtUv6Fyc3pgbgDg=="
+ },
+ "main.scss": {
+ "src": "main-252d384c.min.css",
+ "integrity": "sha512-WiV7BVk76Yp0EACJrwdWDk7+WNa+Jyiupi9aCKFrzZyiKkXk7BH+PL2IJcuDQpCMtMBFJEgen2fpKu9ExjjrUQ=="
+ },
+ "katex.css": {
+ "src": "katex-66092164.min.css",
+ "integrity": "sha512-ng+uY3bZP0IENn+fO0T+jdk1v1r7HQJjsVRJgzU+UiJJadAevmo0gVNrpVxrBFGpRQqSz42q20uTre1C1Qrnow=="
+ },
+ "mobile.scss": {
+ "src": "mobile-79ddc617.min.css",
+ "integrity": "sha512-dzw2wMOouDwhSgstQKLbXD/vIqS48Ttc2IV6DeG7yam9yvKUuChJVaworzL8s2UoGMX4x2jEm50PjFJE4R4QWw=="
+ },
+ "print.scss": {
+ "src": "print-735ccc12.min.css",
+ "integrity": "sha512-c28KLNtBnKDW1+/bNWFhwuGBLw9octTXA2wnuaS2qlvpNFL0DytCapui9VM4YYkZg6e9TVp5LyuRQc2lTougDw=="
+ },
+ "custom.css": {
+ "src": "custom.css",
+ "integrity": "sha512-1kALo+zc1L2u1rvyxPIew+ZDPWhnIA1Ei2rib3eHHbskQW+EMxfI9Ayyva4aV+YRrHvH0zFxvPSFIuZ3mfsbRA=="
+ }
+}
diff --git a/docs/themes/hugo-geekdoc/i18n/cs.yaml b/docs/themes/hugo-geekdoc/i18n/cs.yaml
new file mode 100644
index 000000000..71dd8ed30
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/i18n/cs.yaml
@@ -0,0 +1,53 @@
+---
+edit_page: Upravit stránku
+
+nav_navigation: Navigace
+nav_tags: Tagy
+nav_more: Více
+nav_top: Zpět nahoru
+
+form_placeholder_search: Vyhledat
+
+error_page_title: Ztracen? Nic se neděje
+error_message_title: Ztracen?
+error_message_code: Error 404
+error_message_text: >
+ Vypadá to že stránka, kterou hledáte, neexistuje. Nemějte obavy, můžete
+ se vrátit zpět na domovskou stránku.
+
+button_toggle_dark: Přepnout tmavý/světlý/automatický režim
+button_nav_open: Otevřít navigaci
+button_nav_close: Zavřít navigaci
+button_menu_open: Otevřít lištu nabídky
+button_menu_close: Zavřít lištu nabídky
+button_homepage: Zpět na domovskou stránku
+
+title_anchor_prefix: "Odkaz na:"
+
+posts_read_more: Přečíst celý příspěvek
+posts_read_time:
+ one: "Doba čtení: 1 minuta"
+ other: "Doba čtení: {{ . }} minut(y)"
+posts_update_prefix: Naposledy upraveno
+posts_count:
+ one: "Jeden příspěvek"
+ other: "Příspěvků: {{ . }}"
+posts_tagged_with: Všechny příspěvky označeny '{{ . }}'
+
+footer_build_with: >
+ Vytvořeno za pomocí Hugo a
+
+footer_legal_notice: Právní upozornění
+footer_privacy_policy: Zásady ochrany soukromí
+footer_content_license_prefix: >
+ Obsah licencovaný pod
+
+language_switch_no_tranlation_prefix: "Stránka není přeložena:"
+
+propertylist_required: povinné
+propertylist_optional: volitené
+propertylist_default: výchozí
+
+pagination_page_prev: předchozí
+pagination_page_next: další
+pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
diff --git a/docs/themes/hugo-geekdoc/i18n/de.yaml b/docs/themes/hugo-geekdoc/i18n/de.yaml
new file mode 100644
index 000000000..ae3dc99fc
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/i18n/de.yaml
@@ -0,0 +1,53 @@
+---
+edit_page: Seite bearbeiten
+
+nav_navigation: Navigation
+nav_tags: Tags
+nav_more: Weitere
+nav_top: Nach oben
+
+form_placeholder_search: Suchen
+
+error_page_title: Verlaufen? Keine Sorge
+error_message_title: Verlaufen?
+error_message_code: Fehler 404
+error_message_text: >
+ Wir können die Seite nach der Du gesucht hast leider nicht finden. Keine Sorge,
+ wir bringen Dich zurück zur Startseite.
+
+button_toggle_dark: Wechsel zwischen Dunkel/Hell/Auto Modus
+button_nav_open: Navigation öffnen
+button_nav_close: Navigation schließen
+button_menu_open: Menüband öffnen
+button_menu_close: Menüband schließen
+button_homepage: Zurück zur Startseite
+
+title_anchor_prefix: "Link zu:"
+
+posts_read_more: Ganzen Artikel lesen
+posts_read_time:
+ one: "Eine Minute Lesedauer"
+ other: "{{ . }} Minuten Lesedauer"
+posts_update_prefix: Aktualisiert am
+posts_count:
+ one: "Ein Artikel"
+ other: "{{ . }} Artikel"
+posts_tagged_with: Alle Artikel mit dem Tag '{{ . }}'
+
+footer_build_with: >
+ Entwickelt mit Hugo und
+
+footer_legal_notice: Impressum
+footer_privacy_policy: Datenschutzerklärung
+footer_content_license_prefix: >
+ Inhalt lizensiert unter
+
+language_switch_no_tranlation_prefix: "Seite nicht übersetzt:"
+
+propertylist_required: erforderlich
+propertylist_optional: optional
+propertylist_default: Standardwert
+
+pagination_page_prev: vorher
+pagination_page_next: weiter
+pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
diff --git a/docs/themes/hugo-geekdoc/i18n/en.yaml b/docs/themes/hugo-geekdoc/i18n/en.yaml
new file mode 100644
index 000000000..ff19ea4e8
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/i18n/en.yaml
@@ -0,0 +1,53 @@
+---
+edit_page: Edit page
+
+nav_navigation: Navigation
+nav_tags: Tags
+nav_more: More
+nav_top: Back to top
+
+form_placeholder_search: Search
+
+error_page_title: Lost? Don't worry
+error_message_title: Lost?
+error_message_code: Error 404
+error_message_text: >
+ Seems like what you are looking for can't be found. Don't worry, we can
+ bring you back to the homepage.
+
+button_toggle_dark: Toggle Dark/Light/Auto mode
+button_nav_open: Open Navigation
+button_nav_close: Close Navigation
+button_menu_open: Open Menu Bar
+button_menu_close: Close Menu Bar
+button_homepage: Back to homepage
+
+title_anchor_prefix: "Anchor to:"
+
+posts_read_more: Read full post
+posts_read_time:
+ one: "One minute to read"
+ other: "{{ . }} minutes to read"
+posts_update_prefix: Updated on
+posts_count:
+ one: "One post"
+ other: "{{ . }} posts"
+posts_tagged_with: All posts tagged with '{{ . }}'
+
+footer_build_with: >
+ Built with Hugo and
+
+footer_legal_notice: Legal Notice
+footer_privacy_policy: Privacy Policy
+footer_content_license_prefix: >
+ Content licensed under
+
+language_switch_no_tranlation_prefix: "Page not translated:"
+
+propertylist_required: required
+propertylist_optional: optional
+propertylist_default: default
+
+pagination_page_prev: prev
+pagination_page_next: next
+pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
diff --git a/docs/themes/hugo-geekdoc/i18n/es.yaml b/docs/themes/hugo-geekdoc/i18n/es.yaml
new file mode 100644
index 000000000..8e65cec7b
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/i18n/es.yaml
@@ -0,0 +1,53 @@
+---
+edit_page: Editar página
+
+nav_navigation: Navegación
+nav_tags: Etiquetas
+nav_more: Más
+nav_top: Inicio de la página
+
+form_placeholder_search: Buscar
+
+error_page_title: Perdido? No te preocupes
+error_message_title: Perdido?
+error_message_code: Error 404
+error_message_text: >
+ Al parecer, lo que estás buscando no pudo ser encontrado. No te preocupes, podemos
+ llevarte de vuelta al inicio.
+
+button_toggle_dark: Cambiar el modo Oscuro/Claro/Auto
+button_nav_open: Abrir la Navegación
+button_nav_close: Cerrar la Navegación
+button_menu_open: Abrir el Menú Bar
+button_menu_close: Cerrar el Menú Bar
+button_homepage: Volver al Inicio
+
+title_anchor_prefix: "Anclado a:"
+
+posts_read_more: Lee la publicación completa
+posts_read_time:
+ one: "Un minuto para leer"
+ other: "{{ . }} minutos para leer"
+posts_update_prefix: Actualizado en
+posts_count:
+ one: "Una publicación"
+ other: "{{ . }} publicaciones"
+posts_tagged_with: Todas las publicaciones etiquetadas con '{{ . }}'
+
+footer_build_with: >
+ Creado con Hugo y
+
+footer_legal_notice: Aviso Legal
+footer_privacy_policy: Política de Privacidad
+footer_content_license_prefix: >
+ Contenido licenciado con
+
+language_switch_no_tranlation_prefix: "Página no traducida:"
+
+propertylist_required: requerido
+propertylist_optional: opcional
+propertylist_default: estándar
+
+pagination_page_prev: previo
+pagination_page_next: siguiente
+pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
diff --git a/docs/themes/hugo-geekdoc/i18n/it.yaml b/docs/themes/hugo-geekdoc/i18n/it.yaml
new file mode 100644
index 000000000..ce7c40b4e
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/i18n/it.yaml
@@ -0,0 +1,53 @@
+---
+edit_page: Modifica la pagina
+
+nav_navigation: Navigazione
+nav_tags: Etichette
+nav_more: Altro
+nav_top: Torna su
+
+form_placeholder_search: Cerca
+
+error_page_title: Perso? Non ti preoccupare
+error_message_title: Perso?
+error_message_code: Errore 404
+error_message_text: >
+ Sembra che non sia possibile trovare quello che stavi cercando. Non ti preoccupare,
+ possiamo riportarti alla pagina iniziale.
+
+button_toggle_dark: Seleziona il tema Chiaro/Scuro/Automatico
+button_nav_open: Apri la Navigazione
+button_nav_close: Chiudi la Navigazione
+button_menu_open: Apri la Barra del Menu
+button_menu_close: Chiudi la Barra del Menu
+button_homepage: Torna alla pagina iniziale
+
+title_anchor_prefix: "Ancora a:"
+
+posts_read_more: Leggi tutto il post
+posts_read_time:
+ one: "Tempo di lettura: un minuto"
+ other: "Tempo di lettura: {{ . }} minuti"
+posts_update_prefix: Aggiornato il
+posts_count:
+ one: "Un post"
+ other: "{{ . }} post"
+posts_tagged_with: Tutti i post etichettati con '{{ . }}'
+
+footer_build_with: >
+ Realizzato con Hugo e
+
+footer_legal_notice: Avviso Legale
+footer_privacy_policy: Politica sulla Privacy
+footer_content_license_prefix: >
+ Contenuto sotto licenza
+
+language_switch_no_tranlation_prefix: "Pagina non tradotta:"
+
+propertylist_required: richiesto
+propertylist_optional: opzionale
+propertylist_default: valore predefinito
+
+pagination_page_prev: precedente
+pagination_page_next: prossimo
+pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
diff --git a/docs/themes/hugo-geekdoc/i18n/ja.yaml b/docs/themes/hugo-geekdoc/i18n/ja.yaml
new file mode 100644
index 000000000..506e7b4e1
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/i18n/ja.yaml
@@ -0,0 +1,53 @@
+---
+edit_page: ページの編集
+
+nav_navigation: ナビゲーション
+nav_tags: タグ
+nav_more: さらに
+nav_top: トップへ戻る
+
+form_placeholder_search: 検索
+
+error_page_title: お困りですか?ご心配なく
+error_message_title: お困りですか?
+error_message_code: 404 エラー
+error_message_text: >
+ お探しのものが見つからないようです。トップページ
+ へ戻ることができるので、ご安心ください。
+
+button_toggle_dark: モードの切替 ダーク/ライト/自動
+button_nav_open: ナビゲーションを開く
+button_nav_close: ナビゲーションを閉じる
+button_menu_open: メニューバーを開く
+button_menu_close: メニューバーを閉じる
+button_homepage: トップページへ戻る
+
+title_anchor_prefix: "アンカー先:"
+
+posts_read_more: 全投稿を閲覧
+posts_read_time:
+ one: "読むのに 1 分かかります"
+ other: "読むのに要する時間 {{ . }} (分)"
+posts_update_prefix: 更新時刻
+posts_count:
+ one: "一件の投稿"
+ other: "{{ . }} 件の投稿"
+posts_tagged_with: "'{{ . }}'のタグが付いた記事全部"
+
+footer_build_with: >
+ Hugo でビルドしています。
+
+footer_legal_notice: 法的な告知事項
+footer_privacy_policy: プライバシーポリシー
+footer_content_license_prefix: >
+ 提供するコンテンツのライセンス
+
+language_switch_no_tranlation_prefix: "未翻訳のページ:"
+
+propertylist_required: 必須
+propertylist_optional: 任意
+propertylist_default: 既定値
+
+pagination_page_prev: 前
+pagination_page_next: 次
+pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
diff --git a/docs/themes/hugo-geekdoc/i18n/nl.yaml b/docs/themes/hugo-geekdoc/i18n/nl.yaml
new file mode 100644
index 000000000..240bcea5a
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/i18n/nl.yaml
@@ -0,0 +1,53 @@
+---
+edit_page: Wijzig pagina
+
+nav_navigation: Navigatie
+nav_tags: Markering
+nav_more: Meer
+nav_top: Terug naar boven
+
+form_placeholder_search: Zoek
+
+error_page_title: Verdwaald? Geen probleem
+error_message_title: Verdwaald?
+error_message_code: Error 404
+error_message_text: >
+ Het lijkt er op dat wat je zoekt niet gevonden kan worden. Geen probleem,
+ we kunnen je terug naar de startpagina brengen.
+
+button_toggle_dark: Wijzig Donker/Licht/Auto weergave
+button_nav_open: Open navigatie
+button_nav_close: Sluit navigatie
+button_menu_open: Open menubalk
+button_menu_close: Sluit menubalk
+button_homepage: Terug naar startpagina
+
+title_anchor_prefix: "Link naar:"
+
+posts_read_more: Lees volledige bericht
+posts_read_time:
+ one: "Een minuut leestijd"
+ other: "{{ . }} minuten leestijd"
+posts_update_prefix: Bijgewerkt op
+posts_count:
+ one: "Een bericht"
+ other: "{{ . }} berichten"
+posts_tagged_with: Alle berichten gemarkeerd met '{{ . }}'
+
+footer_build_with: >
+ Gebouwd met Hugo en
+
+footer_legal_notice: Juridische mededeling
+footer_privacy_policy: Privacybeleid
+footer_content_license_prefix: >
+ Inhoud gelicenseerd onder
+
+language_switch_no_tranlation_prefix: "Pagina niet vertaald:"
+
+propertylist_required: verplicht
+propertylist_optional: optioneel
+propertylist_default: standaard
+
+pagination_page_prev: vorige
+pagination_page_next: volgende
+pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
diff --git a/docs/themes/hugo-geekdoc/i18n/zh-cn.yaml b/docs/themes/hugo-geekdoc/i18n/zh-cn.yaml
new file mode 100644
index 000000000..e6403acd1
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/i18n/zh-cn.yaml
@@ -0,0 +1,53 @@
+---
+edit_page: 编辑页面
+
+nav_navigation: 导航
+nav_tags: 标签
+nav_more: 更多
+nav_top: 回到顶部
+
+form_placeholder_search: 搜索
+
+error_page_title: 迷路了? 不用担心
+error_message_title: 迷路了?
+error_message_code: 错误 404
+error_message_text: >
+ 好像找不到你要找的东西。 别担心,我们可以
+ 带您回到主页。
+
+button_toggle_dark: 切换暗/亮/自动模式
+button_nav_open: 打开导航
+button_nav_close: 关闭导航
+button_menu_open: 打开菜单栏
+button_menu_close: 关闭菜单栏
+button_homepage: 返回首页
+
+title_anchor_prefix: "锚定到:"
+
+posts_read_more: 阅读全文
+posts_read_time:
+ one: "一分钟阅读时间"
+ other: "{{ . }} 分钟阅读时间"
+posts_update_prefix: 更新时间
+posts_count:
+ one: 一篇文章
+ other: "{{ . }} 个帖子"
+posts_tagged_with: 所有带有“{{ . }}”标签的帖子。
+
+footer_build_with: >
+ 基于 Hugo
+ 制作
+footer_legal_notice: "法律声明"
+footer_privacy_policy: "隐私政策"
+footer_content_license_prefix: >
+ 内容许可证
+
+language_switch_no_tranlation_prefix: "页面未翻译:"
+
+propertylist_required: 需要
+propertylist_optional: 可选
+propertylist_default: 默认值
+
+pagination_page_prev: 以前
+pagination_page_next: 下一个
+pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
diff --git a/docs/themes/hugo-geekdoc/images/readme.png b/docs/themes/hugo-geekdoc/images/readme.png
new file mode 100644
index 000000000..10c8ff157
Binary files /dev/null and b/docs/themes/hugo-geekdoc/images/readme.png differ
diff --git a/docs/themes/hugo-geekdoc/images/screenshot.png b/docs/themes/hugo-geekdoc/images/screenshot.png
new file mode 100644
index 000000000..af243606d
Binary files /dev/null and b/docs/themes/hugo-geekdoc/images/screenshot.png differ
diff --git a/docs/themes/hugo-geekdoc/images/tn.png b/docs/themes/hugo-geekdoc/images/tn.png
new file mode 100644
index 000000000..ee6e42ed0
Binary files /dev/null and b/docs/themes/hugo-geekdoc/images/tn.png differ
diff --git a/docs/themes/hugo-geekdoc/layouts/404.html b/docs/themes/hugo-geekdoc/layouts/404.html
new file mode 100644
index 000000000..f8a61bb53
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/404.html
@@ -0,0 +1,40 @@
+
+
+
+ {{ partial "head/meta" . }}
+ {{ i18n "error_page_title" }}
+
+ {{ partial "head/favicons" . }}
+ {{ partial "head/others" . }}
+
+
+
+ {{ partial "svg-icon-symbols" . }}
+
+
+
+
+
+ {{ partial "site-header" (dict "Root" . "MenuEnabled" false) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ partial "site-footer" . }}
+
+
+
+
diff --git a/docs/themes/hugo-geekdoc/layouts/_default/_markup/render-codeblock-mermaid.html b/docs/themes/hugo-geekdoc/layouts/_default/_markup/render-codeblock-mermaid.html
new file mode 100644
index 000000000..b5deb66b4
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/_default/_markup/render-codeblock-mermaid.html
@@ -0,0 +1,11 @@
+
+{{ if not (.Page.Scratch.Get "mermaid") }}
+
+
+ {{ .Page.Scratch.Set "mermaid" true }}
+{{ end }}
+
+
+
+ {{- .Inner -}}
+
diff --git a/docs/themes/hugo-geekdoc/layouts/_default/_markup/render-heading.html b/docs/themes/hugo-geekdoc/layouts/_default/_markup/render-heading.html
new file mode 100644
index 000000000..3e7a270f3
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/_default/_markup/render-heading.html
@@ -0,0 +1,27 @@
+{{- $showAnchor := (and (default true .Page.Params.geekdocAnchor) (default true .Page.Site.Params.geekdocAnchor)) -}}
+
+
+
+{{- if $showAnchor -}}
+
+
+ {{ .Text | safeHTML }}
+
+
+
+
+
+{{- else -}}
+
+
+ {{ .Text | safeHTML }}
+
+
+{{- end -}}
+
diff --git a/docs/themes/hugo-geekdoc/layouts/_default/_markup/render-image.html b/docs/themes/hugo-geekdoc/layouts/_default/_markup/render-image.html
new file mode 100644
index 000000000..99a311367
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/_default/_markup/render-image.html
@@ -0,0 +1,6 @@
+
+{{- /* Drop trailing newlines */ -}}
diff --git a/docs/themes/hugo-geekdoc/layouts/_default/_markup/render-link.html b/docs/themes/hugo-geekdoc/layouts/_default/_markup/render-link.html
new file mode 100644
index 000000000..cec8a9530
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/_default/_markup/render-link.html
@@ -0,0 +1,14 @@
+{{- $raw := or (hasPrefix .Text "
+ {{- .Text | safeHTML -}}
+
+{{- /* Drop trailing newlines */ -}}
diff --git a/docs/themes/hugo-geekdoc/layouts/_default/baseof.html b/docs/themes/hugo-geekdoc/layouts/_default/baseof.html
new file mode 100644
index 000000000..ebc39cfcf
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/_default/baseof.html
@@ -0,0 +1,60 @@
+
+
+
+ {{ partial "head/meta" . }}
+
+ {{- if eq .Kind "home" -}}
+ {{ .Site.Title }}
+ {{- else -}}
+ {{ printf "%s | %s" (partial "utils/title" .) .Site.Title }}
+ {{- end -}}
+
+
+ {{ partial "head/favicons" . }}
+ {{ partial "head/rel-me" . }}
+ {{ partial "head/microformats" . }}
+ {{ partial "head/others" . }}
+ {{ partial "head/custom" . }}
+
+
+
+ {{ partial "svg-icon-symbols" . }}
+
+
+
+
+
+ {{ $navEnabled := default true .Page.Params.geekdocNav }}
+ {{ partial "site-header" (dict "Root" . "MenuEnabled" $navEnabled) }}
+
+
+
+ {{ if $navEnabled }}
+
+ {{ end }}
+
+
+
+ {{ template "main" . }}
+
+
+
+
+
+
+ {{ partial "site-footer" . }}
+
+
+ {{ partial "foot" . }}
+
+
diff --git a/docs/themes/hugo-geekdoc/layouts/_default/list.html b/docs/themes/hugo-geekdoc/layouts/_default/list.html
new file mode 100644
index 000000000..94172f65d
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/_default/list.html
@@ -0,0 +1,11 @@
+{{ define "main" }}
+ {{ partial "page-header" . }}
+
+
+
+ {{ partial "utils/title" . }}
+ {{ partial "utils/content" . }}
+
+{{ end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/_default/single.html b/docs/themes/hugo-geekdoc/layouts/_default/single.html
new file mode 100644
index 000000000..94172f65d
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/_default/single.html
@@ -0,0 +1,11 @@
+{{ define "main" }}
+ {{ partial "page-header" . }}
+
+
+
+ {{ partial "utils/title" . }}
+ {{ partial "utils/content" . }}
+
+{{ end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/_default/taxonomy.html b/docs/themes/hugo-geekdoc/layouts/_default/taxonomy.html
new file mode 100644
index 000000000..bb97e8ed4
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/_default/taxonomy.html
@@ -0,0 +1,49 @@
+{{ define "main" }}
+ {{ range .Paginator.Pages }}
+
+
+
+ {{ partial "utils/title" . }}
+
+
+
+
+ {{ .Summary }}
+
+
+
+ {{ if .Truncated }}
+
+ {{ i18n "posts_read_more" }}
+ gdoc_arrow_right_alt
+
+ {{ end }}
+
+
+
+
+ {{ end }}
+ {{ partial "pagination.html" . }}
+{{ end }}
+
+{{ define "post-tag" }}
+
+
+
+{{ end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/_default/terms.html b/docs/themes/hugo-geekdoc/layouts/_default/terms.html
new file mode 100644
index 000000000..2316ef56d
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/_default/terms.html
@@ -0,0 +1,32 @@
+{{ define "main" }}
+ {{ range .Paginator.Pages.ByTitle }}
+
+
+
+ {{ partial "utils/title" . }}
+
+
+
+
+
+ {{ end }}
+ {{ partial "pagination.html" . }}
+{{ end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/foot.html b/docs/themes/hugo-geekdoc/layouts/partials/foot.html
new file mode 100644
index 000000000..2a115e562
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/foot.html
@@ -0,0 +1,6 @@
+{{ if default true .Site.Params.geekdocSearch }}
+
+ {{- $searchConfigFile := printf "search/%s.config.json" .Language.Lang -}}
+ {{- $searchConfig := resources.Get "search/config.json" | resources.ExecuteAsTemplate $searchConfigFile . | resources.Minify -}}
+ {{- $searchConfig.Publish -}}
+{{ end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/head/custom.html b/docs/themes/hugo-geekdoc/layouts/partials/head/custom.html
new file mode 100644
index 000000000..44862c7b6
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/head/custom.html
@@ -0,0 +1 @@
+
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/head/favicons.html b/docs/themes/hugo-geekdoc/layouts/partials/head/favicons.html
new file mode 100644
index 000000000..40a8c91d2
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/head/favicons.html
@@ -0,0 +1,13 @@
+
+
+
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/head/meta.html b/docs/themes/hugo-geekdoc/layouts/partials/head/meta.html
new file mode 100644
index 000000000..4cc4ddb44
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/head/meta.html
@@ -0,0 +1,14 @@
+
+
+
+
+{{ hugo.Generator }}
+
+{{ $keywords := default .Site.Params.Keywords .Keywords }}
+
+{{- with partial "utils/description" . }}
+
+{{- end }}
+{{- with $keywords }}
+
+{{- end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/head/microformats.html b/docs/themes/hugo-geekdoc/layouts/partials/head/microformats.html
new file mode 100644
index 000000000..8b6038ac2
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/head/microformats.html
@@ -0,0 +1,3 @@
+{{ partial "microformats/opengraph.html" . }}
+{{ partial "microformats/twitter_cards.html" . }}
+{{ partial "microformats/schema" . }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/head/others.html b/docs/themes/hugo-geekdoc/layouts/partials/head/others.html
new file mode 100644
index 000000000..537c2ff85
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/head/others.html
@@ -0,0 +1,73 @@
+{{- if default true .Site.Params.geekdocDarkModeToggle }}
+
+{{- end }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{{- with .OutputFormats.Get "html" }}
+ {{ printf `` .Permalink .Rel .MediaType.Type | safeHTML }}
+{{- end }}
+
+{{- if (default false $.Site.Params.geekdocOverwriteHTMLBase) }}
+
+{{- end }}
+
+{{ printf "" "Made with Geekdoc theme https://github.com/thegeeklab/hugo-geekdoc" | safeHTML }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/head/rel-me.html b/docs/themes/hugo-geekdoc/layouts/partials/head/rel-me.html
new file mode 100644
index 000000000..59a346168
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/head/rel-me.html
@@ -0,0 +1 @@
+
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/language.html b/docs/themes/hugo-geekdoc/layouts/partials/language.html
new file mode 100644
index 000000000..8ad972d07
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/language.html
@@ -0,0 +1,51 @@
+{{ if .IsTranslated }}
+
+
+ -
+ {{ range .Site.Languages }}
+ {{ if eq . $.Site.Language }}
+
+
+ {{ .Lang | upper }}
+
+ {{ end }}
+ {{ end }}
+
+
+
+ {{ if $.Translations }}
+ {{ range $.Translations }}
+ -
+
+ {{ .Language.LanguageName }}
+
+
+ {{ end }}
+ {{ else }}
+ {{ range .Site.Languages -}}
+ {{ if ne $.Site.Language.Lang .Lang }}
+ -
+
+ {{ .LanguageName }}*
+
+
+ {{ end -}}
+ {{ end -}}
+ {{ end }}
+
+
+
+
+{{ end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/menu-bundle.html b/docs/themes/hugo-geekdoc/layouts/partials/menu-bundle.html
new file mode 100644
index 000000000..bb323875b
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/menu-bundle.html
@@ -0,0 +1,87 @@
+{{ $current := .current }}
+{{ template "menu-file" dict "sect" .source "current" $current "site" $current.Site }}
+
+
+
+{{ define "menu-file" }}
+ {{ $current := .current }}
+ {{ $site := .site }}
+
+
+
+ {{ range sort (default (seq 0) .sect) "weight" }}
+ {{ $name := .name }}
+ {{ if reflect.IsMap .name }}
+ {{ $name = (index .name $site.Language.Lang) }}
+ {{ end }}
+
+
+ -
+ {{ $ref := default false .ref }}
+ {{ if $ref }}
+ {{ $this := $site.GetPage .ref }}
+ {{ $icon := default false .icon }}
+ {{ $numberOfPages := (add (len $this.Pages) (len $this.Sections)) }}
+ {{ $isCurrent := eq $current $this }}
+ {{ $isAncestor := $this.IsAncestor $current }}
+ {{ $id := substr (sha1 $this.Permalink) 0 8 }}
+ {{ $doCollapse := and (isset . "sub") (or $this.Params.geekdocCollapseSection (default false .Site.Params.geekdocCollapseAllSections)) }}
+
+ {{ $anchor := default "" .anchor }}
+ {{ if $anchor }}
+ {{ $anchor = printf "#%s" $anchor }}
+ {{ end }}
+
+ {{ if or .external ($this.RelPermalink) }}
+
+
+ {{ end }}
+ {{ else }}
+ {{ $name }}
+ {{ end }}
+
+ {{ with .sub }}
+ {{ template "menu-file" dict "sect" . "current" $current "site" $site }}
+ {{ end }}
+
+ {{ end }}
+
+{{ end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/menu-extra.html b/docs/themes/hugo-geekdoc/layouts/partials/menu-extra.html
new file mode 100644
index 000000000..a1984f8b2
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/menu-extra.html
@@ -0,0 +1,46 @@
+{{ $current := .current }}
+{{ template "menu-extra" dict "sect" .source "current" $current "site" $current.Site "target" .target }}
+
+
+
+{{ define "menu-extra" }}
+ {{ $current := .current }}
+ {{ $site := .site }}
+ {{ $target := .target }}
+ {{ $sect := .sect }}
+
+ {{ range sort (default (seq 0) $sect) "weight" }}
+ {{ if isset . "ref" }}
+ {{ $this := $site.GetPage .ref }}
+ {{ $isCurrent := eq $current $this }}
+ {{ $icon := default false .icon }}
+
+ {{ $name := .name }}
+ {{ if reflect.IsMap .name }}
+ {{ $name = (index .name $site.Language.Lang) }}
+ {{ end }}
+
+ {{ if not .icon }}
+ {{ errorf "Missing 'icon' attribute in data file for '%s' menu item '%s'" $target $name }}
+ {{ end }}
+
+ {{ if eq $target "header" }}
+
+
+
+ {{ $name }}
+
+
+
+
+ {{ end }}
+ {{ end }}
+ {{ end }}
+{{ end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/menu-filetree.html b/docs/themes/hugo-geekdoc/layouts/partials/menu-filetree.html
new file mode 100644
index 000000000..e51a5de0c
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/menu-filetree.html
@@ -0,0 +1,98 @@
+{{ $current := . }}
+{{ template "tree-nav" dict "sect" .Site.Home.Sections "current" $current }}
+
+
+
+{{ define "tree-nav" }}
+ {{ $current := .current }}
+
+
+
+ {{ $sortBy := (default "title" .current.Site.Params.geekdocFileTreeSortBy | lower) }}
+ {{ range .sect.GroupBy "Weight" }}
+ {{ $rangeBy := .ByTitle }}
+
+ {{ if eq $sortBy "title" }}
+ {{ $rangeBy = .ByTitle }}
+ {{ else if eq $sortBy "linktitle" }}
+ {{ $rangeBy = .ByLinkTitle }}
+ {{ else if eq $sortBy "date" }}
+ {{ $rangeBy = .ByDate }}
+ {{ else if eq $sortBy "publishdate" }}
+ {{ $rangeBy = .ByPublishDate }}
+ {{ else if eq $sortBy "expirydate" }}
+ {{ $rangeBy = .ByExpiryDate }}
+ {{ else if eq $sortBy "lastmod" }}
+ {{ $rangeBy = .ByLastmod }}
+ {{ else if eq $sortBy "title_reverse" }}
+ {{ $rangeBy = .ByTitle.Reverse }}
+ {{ else if eq $sortBy "linktitle_reverse" }}
+ {{ $rangeBy = .ByLinkTitle.Reverse }}
+ {{ else if eq $sortBy "date_reverse" }}
+ {{ $rangeBy = .ByDate.Reverse }}
+ {{ else if eq $sortBy "publishdate_reverse" }}
+ {{ $rangeBy = .ByPublishDate.Reverse }}
+ {{ else if eq $sortBy "expirydate_reverse" }}
+ {{ $rangeBy = .ByExpiryDate.Reverse }}
+ {{ else if eq $sortBy "lastmod_reverse" }}
+ {{ $rangeBy = .ByLastmod.Reverse }}
+ {{ end }}
+
+ {{ range $rangeBy }}
+ {{ if not .Params.geekdocHidden }}
+ {{ $numberOfPages := (add (len .Pages) (len .Sections)) }}
+ {{ $isParent := and (ne $numberOfPages 0) (not .Params.geekdocFlatSection) }}
+ {{ $isCurrent := eq $current . }}
+ {{ $isAncestor := .IsAncestor $current }}
+ {{ $id := substr (sha1 .Permalink) 0 8 }}
+ {{ $doCollapse := and $isParent (or .Params.geekdocCollapseSection (default false .Site.Params.geekdocCollapseAllSections)) }}
+
+
+ -
+
+
+
+ {{ if $isParent }}
+ {{ template "tree-nav" dict "sect" .Pages "current" $current }}
+ {{ end }}
+
+ {{ end }}
+ {{ end }}
+ {{ end }}
+
+{{ end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/menu-nextprev.html b/docs/themes/hugo-geekdoc/layouts/partials/menu-nextprev.html
new file mode 100644
index 000000000..6126f9517
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/menu-nextprev.html
@@ -0,0 +1,78 @@
+{{ $current := . }}
+{{ $site := .Site }}
+{{ $current.Scratch.Set "prev" false }}
+{{ $current.Scratch.Set "getNext" false }}
+
+{{ $current.Scratch.Set "nextPage" false }}
+{{ $current.Scratch.Set "prevPage" false }}
+
+{{ template "menu_nextprev" dict "sect" $.Site.Data.menu.main.main "current" $current "site" $site }}
+
+{{ define "menu_nextprev" }}
+ {{ $current := .current }}
+ {{ $site := .site }}
+
+ {{ range sort (default (seq 0) .sect) "weight" }}
+ {{ $current.Scratch.Set "current" $current }}
+ {{ $current.Scratch.Set "site" $site }}
+
+ {{ $ref := default false .ref }}
+ {{ if $ref }}
+ {{ $site := $current.Scratch.Get "site" }}
+ {{ $this := $site.GetPage .ref }}
+ {{ $current := $current.Scratch.Get "current" }}
+
+ {{ if reflect.IsMap .name }}
+ {{ $current.Scratch.Set "refName" (index .name $site.Language.Lang) }}
+ {{ else }}
+ {{ $current.Scratch.Set "refName" .name }}
+ {{ end }}
+ {{ $name := $current.Scratch.Get "refName" }}
+
+ {{ if $current.Scratch.Get "getNext" }}
+ {{ $current.Scratch.Set "nextPage" (dict "name" $name "this" $this) }}
+ {{ $current.Scratch.Set "getNext" false }}
+ {{ end }}
+
+ {{ if eq $current $this }}
+ {{ $current.Scratch.Set "prevPage" ($current.Scratch.Get "prev") }}
+ {{ $current.Scratch.Set "getNext" true }}
+ {{ end }}
+
+ {{ $current.Scratch.Set "prev" (dict "name" $name "this" $this) }}
+ {{ end }}
+
+ {{ $sub := default false .sub }}
+ {{ if $sub }}
+ {{ template "menu_nextprev" dict "sect" $sub "current" ($current.Scratch.Get "current") "site" ($current.Scratch.Get "site") }}
+ {{ end }}
+ {{ end }}
+{{ end }}
+
+{{ $showPrevNext := (and (default true .Site.Params.geekdocNextPrev) .Site.Params.geekdocMenuBundle) }}
+{{ if $showPrevNext }}
+
+ {{ with ($current.Scratch.Get "prevPage") }}
+
+ gdoc_arrow_left_alt
+ {{ .name }}
+
+ {{ end }}
+
+
+ {{ with ($current.Scratch.Get "nextPage") }}
+
+ {{ .name }}
+ gdoc_arrow_right_alt
+
+ {{ end }}
+
+{{ end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/menu.html b/docs/themes/hugo-geekdoc/layouts/partials/menu.html
new file mode 100644
index 000000000..7963eacdc
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/menu.html
@@ -0,0 +1,44 @@
+
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/microformats/opengraph.html b/docs/themes/hugo-geekdoc/layouts/partials/microformats/opengraph.html
new file mode 100644
index 000000000..ea34ba5be
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/microformats/opengraph.html
@@ -0,0 +1,68 @@
+{{ $isPage := or (and (ne .Type "posts") (in "section page" .Kind )) (and (eq .Type "posts") (eq .Kind "page")) }}
+
+{{- if ne .Kind "home" }}
+
+{{- end }}
+{{- with .Site.Title }}
+
+{{- end }}
+{{- with partial "utils/featured" . }}
+
+{{- end }}
+{{- with partial "utils/description" . }}
+
+{{- end }}
+
+
+{{- with .Params.audio }}
+
+{{- end }}
+{{- with .Params.locale }}
+
+{{- end }}
+{{- with .Params.videos }}
+ {{- range . }}
+
+ {{- end }}
+{{- end }}
+
+{{- /* If it is part of a series, link to related articles */}}
+{{- if .Site.Taxonomies.series }}
+ {{- $permalink := .Permalink -}}
+ {{- $siteSeries := .Site.Taxonomies.series -}}
+ {{- with .Params.series }}
+ {{- range $name := . }}
+ {{- $series := index $siteSeries ($name | urlize) }}
+ {{- range $page := first 6 $series.Pages }}
+ {{- if ne $page.Permalink $permalink }}
+
+ {{- end }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+{{- end }}
+
+{{ if $isPage -}}
+ {{- $iso8601 := "2006-01-02T15:04:05-07:00" -}}
+
+ {{- with .PublishDate }}
+
+ {{- end }}
+ {{- with .Lastmod }}
+
+ {{- end }}
+{{- end }}
+
+{{- /* Facebook Page Admin ID for Domain Insights */}}
+{{- with .Site.Params.Social.facebook_admin }}
+
+{{- end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/microformats/schema.html b/docs/themes/hugo-geekdoc/layouts/partials/microformats/schema.html
new file mode 100644
index 000000000..7e49ef8c7
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/microformats/schema.html
@@ -0,0 +1,58 @@
+{{ $isPage := or (and (ne .Type "posts") (in "section page" .Kind )) (and (eq .Type "posts") (eq .Kind "page")) }}
+{{- if eq .Kind "home" }}
+ {{- $schema := dict "@context" "http://schema.org" "@type" "WebSite" "name" .Site.Title "url" .Site.BaseURL "inLanguage" .Lang }}
+ {{- with partial "utils/description" . }}
+ {{- $schema = merge $schema (dict "description" (. | plainify | htmlUnescape | chomp)) }}
+ {{- end }}
+ {{- with partial "utils/featured" . }}
+ {{- $schema = merge $schema (dict "thumbnailUrl" .) }}
+ {{- end }}
+ {{- with .Site.Params.geekdocContentLicense }}
+ {{- $schema = merge $schema (dict "license" .name) }}
+ {{- end }}
+
+{{- else if $isPage }}
+ {{- $title := partial "utils/title" . }}
+ {{- $schema := dict
+ "@context" "http://schema.org"
+ "@type" "TechArticle"
+ "articleSection" (.Section | humanize | title)
+ "name" $title
+ "url" .Permalink
+ "headline" $title
+ "wordCount" (string .WordCount)
+ "inLanguage" .Lang
+ "isFamilyFriendly" "true"
+ "copyrightHolder" .Site.Title
+ "copyrightYear" (.Date.Format "2006")
+ "dateCreated" (.Date.Format "2006-01-02T15:04:05.00Z")
+ "datePublished" (.PublishDate.Format "2006-01-02T15:04:05.00Z")
+ "dateModified" (.Lastmod.Format "2006-01-02T15:04:05.00Z")
+ }}
+ {{- with .Params.lead }}
+ {{- $schema = merge $schema (dict "alternativeHeadline" .) }}
+ {{- end }}
+ {{- with partial "utils/description" . }}
+ {{- $schema = merge $schema (dict "description" (. | plainify | htmlUnescape | chomp)) }}
+ {{- end }}
+ {{- with partial "utils/featured" . }}
+ {{- $schema = merge $schema (dict "thumbnailUrl" .) }}
+ {{- end }}
+ {{- with .Site.Params.geekdocContentLicense }}
+ {{- $schema = merge $schema (dict "license" .name) }}
+ {{- end }}
+ {{- $mainEntity := dict "@type" "WebPage" "@id" .Permalink }}
+ {{- $schema = merge $schema (dict "mainEntityOfPage" $mainEntity) }}
+ {{- with $tags := .Params.tags }}
+ {{- $schema = merge $schema (dict "keywords" $tags) }}
+ {{- end }}
+ {{- $logoUrl := default "brand.svg" .Site.Params.logo | absURL }}
+ {{- $logo := dict "@type" "ImageObject" "url" $logoUrl "width" "32" "height" "32" }}
+ {{- $publisher := dict "@type" "Organization" "name" .Site.Title "url" .Site.BaseURL "logo" $logo }}
+ {{- $schema = merge $schema (dict "publisher" $publisher) }}
+
+{{- end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/microformats/twitter_cards.html b/docs/themes/hugo-geekdoc/layouts/partials/microformats/twitter_cards.html
new file mode 100644
index 000000000..603e3f53f
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/microformats/twitter_cards.html
@@ -0,0 +1,15 @@
+{{- with partial "utils/featured" . }}
+
+{{- else }}
+
+{{- end }}
+
+{{- with partial "utils/featured" . }}
+
+{{- end }}
+{{- with partial "utils/description" . }}
+
+{{- end }}
+{{- with .Site.Params.Social.twitter -}}
+
+{{- end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/page-header.html b/docs/themes/hugo-geekdoc/layouts/partials/page-header.html
new file mode 100644
index 000000000..8f146d7e9
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/page-header.html
@@ -0,0 +1,57 @@
+{{ $geekdocRepo := default (default false .Site.Params.geekdocRepo) .Page.Params.geekdocRepo }}
+{{ $geekdocEditPath := default (default false .Site.Params.geekdocEditPath) .Page.Params.geekdocEditPath }}
+{{ if .File }}
+ {{ $.Scratch.Set "geekdocFilePath" (default (strings.TrimPrefix hugo.WorkingDir .File.Filename) .Page.Params.geekdocFilePath) }}
+{{ else }}
+ {{ $.Scratch.Set "geekdocFilePath" false }}
+{{ end }}
+
+{{ define "breadcrumb" }}
+ {{ $parent := .page.Parent }}
+ {{ if $parent }}
+ {{ $name := (partial "utils/title" $parent) }}
+ {{ $position := (sub .position 1) }}
+ {{ $value := (printf "%s / %s" $parent.RelPermalink $parent.RelPermalink $name $position .value) }}
+ {{ template "breadcrumb" dict "page" $parent "value" $value "position" $position }}
+ {{ else }}
+ {{ .value | safeHTML }}
+ {{ end }}
+{{ end }}
+
+{{ $showBreadcrumb := (and (default true .Page.Params.geekdocBreadcrumb) (default true .Site.Params.geekdocBreadcrumb)) }}
+{{ $showEdit := (and ($.Scratch.Get "geekdocFilePath") $geekdocRepo $geekdocEditPath) }}
+
+ {{ if $showBreadcrumb }}
+
+
+
+
+ {{ end }}
+ {{ if $showEdit }}
+
+
+
+
+ {{ i18n "edit_page" }}
+
+
+
+ {{ end }}
+
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/pagination.html b/docs/themes/hugo-geekdoc/layouts/partials/pagination.html
new file mode 100644
index 000000000..aa615d8ad
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/pagination.html
@@ -0,0 +1,22 @@
+{{ $pag := $.Paginator }}
+
+
+
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/posts/metadata.html b/docs/themes/hugo-geekdoc/layouts/partials/posts/metadata.html
new file mode 100644
index 000000000..bf9d84527
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/posts/metadata.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+ {{ i18n "posts_read_time" .ReadingTime }}
+
+
+{{ $tc := 0 }}
+{{ with .Params.tags }}
+ {{ range sort . }}
+ {{ $name := . }}
+ {{ with $.Site.GetPage (printf "/tags/%s" $name | urlize) }}
+ {{ if eq $tc 0 }}
+
+
+ {{ template "post-tag" dict "name" $name "page" . }}
+
+ {{ else }}
+
+ {{ template "post-tag" dict "name" $name "page" . }}
+
+ {{ end }}
+ {{ end }}
+ {{ $tc = (add $tc 1) }}
+ {{ end }}
+{{ end }}
+
+{{ define "post-tag" }}
+
+{{ end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/search.html b/docs/themes/hugo-geekdoc/layouts/partials/search.html
new file mode 100644
index 000000000..62b2e6fb9
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/search.html
@@ -0,0 +1,16 @@
+{{ if default true .Site.Params.geekdocSearch }}
+
+
+
+
+
+{{ end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/site-footer.html b/docs/themes/hugo-geekdoc/layouts/partials/site-footer.html
new file mode 100644
index 000000000..31ae8e1be
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/site-footer.html
@@ -0,0 +1,45 @@
+
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/site-header.html b/docs/themes/hugo-geekdoc/layouts/partials/site-header.html
new file mode 100644
index 000000000..022c10a0a
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/site-header.html
@@ -0,0 +1,78 @@
+
+
+ {{ if .MenuEnabled }}
+
+ {{ end }}
+
+
+
+
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/svg-icon-symbols.html b/docs/themes/hugo-geekdoc/layouts/partials/svg-icon-symbols.html
new file mode 100644
index 000000000..801bee81a
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/svg-icon-symbols.html
@@ -0,0 +1,4 @@
+{{ range resources.Match "sprites/*.svg" }}
+ {{ printf "" . | safeHTML }}
+ {{ .Content | safeHTML }}
+{{ end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/utils/content.html b/docs/themes/hugo-geekdoc/layouts/partials/utils/content.html
new file mode 100644
index 000000000..c2085a903
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/utils/content.html
@@ -0,0 +1,6 @@
+{{ $content := .Content }}
+
+{{ $content = $content | replaceRE `` `` | safeHTML }}
+{{ $content = $content | replaceRE `((?:.|\n)+?
)` ` ${1} ` | safeHTML }}
+
+{{ return $content }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/utils/description.html b/docs/themes/hugo-geekdoc/layouts/partials/utils/description.html
new file mode 100644
index 000000000..f5eafb2df
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/utils/description.html
@@ -0,0 +1,14 @@
+{{ $isPage := or (and (ne .Type "posts") (in "section page" .Kind )) (and (eq .Type "posts") (eq .Kind "page")) }}
+{{ $description := "" }}
+
+{{ if .Description }}
+ {{ $description = .Description }}
+{{ else }}
+ {{ if $isPage }}
+ {{ $description = .Summary }}
+ {{ else if .Site.Params.description }}
+ {{ $description = .Site.Params.description }}
+ {{ end }}
+{{ end }}
+
+{{ return $description }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/utils/featured.html b/docs/themes/hugo-geekdoc/layouts/partials/utils/featured.html
new file mode 100644
index 000000000..33c4be812
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/utils/featured.html
@@ -0,0 +1,12 @@
+{{ $img := "" }}
+
+{{ with $source := ($.Resources.ByType "image").GetMatch "{*feature*,*cover*,*thumbnail*}" }}
+ {{ $featured := .Fill (printf "1200x630 %s" (default "Smart" .Params.anchor)) }}
+ {{ $img = $featured.Permalink }}
+{{ else }}
+ {{ with default $.Site.Params.images $.Params.images }}
+ {{ $img = index . 0 | absURL }}
+ {{ end }}
+{{ end }}
+
+{{ return $img }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/utils/title.html b/docs/themes/hugo-geekdoc/layouts/partials/utils/title.html
new file mode 100644
index 000000000..a792c0486
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/partials/utils/title.html
@@ -0,0 +1,11 @@
+{{ $title := "" }}
+
+{{ if .Title }}
+ {{ $title = .Title }}
+{{ else if and .IsSection .File }}
+ {{ $title = path.Base .File.Dir | humanize | title }}
+{{ else if and .IsPage .File }}
+ {{ $title = .File.BaseFileName | humanize | title }}
+{{ end }}
+
+{{ return $title }}
diff --git a/docs/themes/hugo-geekdoc/layouts/posts/list.html b/docs/themes/hugo-geekdoc/layouts/posts/list.html
new file mode 100644
index 000000000..ca0ea73a4
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/posts/list.html
@@ -0,0 +1,47 @@
+{{ define "main" }}
+ {{ range .Paginator.Pages }}
+
+
+
+ {{ partial "utils/title" . }}
+
+
+
+ {{ .Summary }}
+
+
+ {{ if .Truncated }}
+
+ {{ i18n "posts_read_more" }}
+ gdoc_arrow_right_alt
+
+ {{ end }}
+
+
+
+
+ {{ end }}
+ {{ partial "pagination.html" . }}
+{{ end }}
+
+{{ define "post-tag" }}
+
+
+
+{{ end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/posts/single.html b/docs/themes/hugo-geekdoc/layouts/posts/single.html
new file mode 100644
index 000000000..dea2a8c13
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/posts/single.html
@@ -0,0 +1,13 @@
+{{ define "main" }}
+
+
+ {{ partial "utils/title" . }}
+
+
+
+ {{ partial "utils/content" . }}
+
+
+{{ end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/robots.txt b/docs/themes/hugo-geekdoc/layouts/robots.txt
new file mode 100644
index 000000000..fb3345bb6
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/robots.txt
@@ -0,0 +1,4 @@
+User-agent: *
+Disallow: /tags/*
+
+Sitemap: {{ "sitemap.xml" | absURL }}
diff --git a/docs/themes/hugo-geekdoc/layouts/shortcodes/button.html b/docs/themes/hugo-geekdoc/layouts/shortcodes/button.html
new file mode 100644
index 000000000..7c000a323
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/shortcodes/button.html
@@ -0,0 +1,29 @@
+{{- $ref := "" }}
+{{- $class := "" }}
+{{- $size := default "regular" (.Get "size" | lower) }}
+
+{{- if not (in (slice "regular" "large") $size) }}
+ {{- $size = "regular" }}
+{{- end }}
+
+{{- with .Get "href" }}
+ {{- $ref = . }}
+{{- end }}
+
+{{- with .Get "relref" }}
+ {{- $ref = relref $ . }}
+{{- end }}
+
+{{- with .Get "class" }}
+ {{- $class = . }}
+{{- end }}
+
+
+
diff --git a/docs/themes/hugo-geekdoc/layouts/shortcodes/columns.html b/docs/themes/hugo-geekdoc/layouts/shortcodes/columns.html
new file mode 100644
index 000000000..a359e4146
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/shortcodes/columns.html
@@ -0,0 +1,14 @@
+{{- $size := default "regular" (.Get "size" | lower) }}
+
+{{- if not (in (slice "regular" "large" "small") $size) }}
+ {{- $size = "regular" }}
+{{- end }}
+
+
+
+ {{- range split .Inner "<--->" }}
+
+ {{ . | $.Page.RenderString -}}
+
+ {{- end }}
+
diff --git a/docs/themes/hugo-geekdoc/layouts/shortcodes/expand.html b/docs/themes/hugo-geekdoc/layouts/shortcodes/expand.html
new file mode 100644
index 000000000..0ab3d2a3c
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/shortcodes/expand.html
@@ -0,0 +1,11 @@
+{{ $id := substr (sha1 .Inner) 0 8 }}
+
diff --git a/docs/themes/hugo-geekdoc/layouts/shortcodes/hint.html b/docs/themes/hugo-geekdoc/layouts/shortcodes/hint.html
new file mode 100644
index 000000000..15149b6f0
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/shortcodes/hint.html
@@ -0,0 +1,16 @@
+{{ $type := default "note" (.Get "type") }}
+{{ $icon := .Get "icon" }}
+{{ $title := default ($type | title) (.Get "title") }}
+
+
+
+
+ {{- with $icon -}}
+
+ {{ $title }}
+ {{- else -}}
+
+ {{- end -}}
+
+ {{ .Inner | $.Page.RenderString }}
+
diff --git a/docs/themes/hugo-geekdoc/layouts/shortcodes/icon.html b/docs/themes/hugo-geekdoc/layouts/shortcodes/icon.html
new file mode 100644
index 000000000..080b144a2
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/shortcodes/icon.html
@@ -0,0 +1,5 @@
+{{ $id := .Get 0 }}
+
+{{- with $id -}}
+
+{{- end -}}
diff --git a/docs/themes/hugo-geekdoc/layouts/shortcodes/img.html b/docs/themes/hugo-geekdoc/layouts/shortcodes/img.html
new file mode 100644
index 000000000..70f38c3f6
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/shortcodes/img.html
@@ -0,0 +1,71 @@
+{{- $source := ($.Page.Resources.ByType "image").GetMatch (printf "%s" (.Get "name")) }}
+{{- $customAlt := .Get "alt" }}
+{{- $customSize := .Get "size" | lower }}
+{{- $lazyLoad := default (default true $.Site.Params.geekdocImageLazyLoading) (.Get "lazy") }}
+{{- $data := newScratch }}
+
+{{- with $source }}
+ {{- $caption := default .Title $customAlt }}
+ {{- $isSVG := (eq .MediaType.SubType "svg") }}
+
+ {{- $origin := .Permalink }}
+ {{- if $isSVG }}
+ {{- $data.SetInMap "size" "profile" "180" }}
+ {{- $data.SetInMap "size" "tiny" "320" }}
+ {{- $data.SetInMap "size" "small" "600" }}
+ {{- $data.SetInMap "size" "medium" "1200" }}
+ {{- $data.SetInMap "size" "large" "1800" }}
+ {{- else }}
+ {{- $data.SetInMap "size" "profile" (.Fill "180x180 Center").Permalink }}
+ {{- $data.SetInMap "size" "tiny" (.Resize "320x").Permalink }}
+ {{- $data.SetInMap "size" "small" (.Resize "600x").Permalink }}
+ {{- $data.SetInMap "size" "medium" (.Resize "1200x").Permalink }}
+ {{- $data.SetInMap "size" "large" (.Resize "1800x").Permalink }}
+ {{- end }}
+
+
+
+
+
+
+ {{- $size := $data.Get "size" }}
+ {{- if not $isSVG }}
+
+ {{- end }}
+
+
+
+ {{- if not (eq $customSize "profile") }}
+ {{- with $caption }}
+
+ {{ . }}
+ {{- with $source.Params.credits }}
+ {{ printf " (%s)" . | $.Page.RenderString }}
+ {{- end }}
+
+ {{- end }}
+ {{- end }}
+
+
+{{- end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/shortcodes/include.html b/docs/themes/hugo-geekdoc/layouts/shortcodes/include.html
new file mode 100644
index 000000000..4c395b3e9
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/shortcodes/include.html
@@ -0,0 +1,18 @@
+{{ $file := .Get "file" }}
+{{ $page := .Site.GetPage $file }}
+{{ $type := .Get "type" }}
+{{ $language := .Get "language" }}
+{{ $options :=.Get "options" }}
+
+
+
+ {{- if (.Get "language") -}}
+ {{- highlight ($file | readFile) $language (default "linenos=table" $options) -}}
+ {{- else if eq $type "html" -}}
+ {{- $file | readFile | safeHTML -}}
+ {{- else if eq $type "page" -}}
+ {{- with $page }}{{ .Content }}{{ end -}}
+ {{- else -}}
+ {{- $file | readFile | $.Page.RenderString -}}
+ {{- end -}}
+
diff --git a/docs/themes/hugo-geekdoc/layouts/shortcodes/katex.html b/docs/themes/hugo-geekdoc/layouts/shortcodes/katex.html
new file mode 100644
index 000000000..559acb687
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/shortcodes/katex.html
@@ -0,0 +1,18 @@
+
+{{ if not (.Page.Scratch.Get "katex") }}
+
+
+
+ {{ .Page.Scratch.Set "katex" true }}
+{{ end }}
+
+
+
+ {{ cond (in .Params "display") "\\[" "\\(" -}}
+ {{- trim .Inner "\n" -}}
+ {{- cond (in .Params "display") "\\]" "\\)" -}}
+
+{{- /* Drop trailing newlines */ -}}
diff --git a/docs/themes/hugo-geekdoc/layouts/shortcodes/mermaid.html b/docs/themes/hugo-geekdoc/layouts/shortcodes/mermaid.html
new file mode 100644
index 000000000..71330163c
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/shortcodes/mermaid.html
@@ -0,0 +1,11 @@
+
+{{ if not (.Page.Scratch.Get "mermaid") }}
+
+
+ {{ .Page.Scratch.Set "mermaid" true }}
+{{ end }}
+
+
+
+ {{- .Inner -}}
+
diff --git a/docs/themes/hugo-geekdoc/layouts/shortcodes/progress.html b/docs/themes/hugo-geekdoc/layouts/shortcodes/progress.html
new file mode 100644
index 000000000..244f92e91
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/shortcodes/progress.html
@@ -0,0 +1,23 @@
+{{- $value := default 0 (.Get "value") -}}
+{{- $title := .Get "title" -}}
+{{- $icon := .Get "icon" -}}
+
+
+
+
+
+ {{ with $icon -}}
+
+ {{- end }}
+ {{ with $title }}{{ . }}{{ end }}
+
+ {{ $value }}%
+
+
+
+
+
diff --git a/docs/themes/hugo-geekdoc/layouts/shortcodes/propertylist.html b/docs/themes/hugo-geekdoc/layouts/shortcodes/propertylist.html
new file mode 100644
index 000000000..ec62a48e1
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/shortcodes/propertylist.html
@@ -0,0 +1,60 @@
+{{- $name := .Get "name" -}}
+{{- $sort := .Get "sort" -}}
+{{- $order := default "asc" (.Get "order") -}}
+{{- $showAnchor := (and (default true .Page.Params.geekdocAnchor) (default true .Page.Site.Params.geekdocAnchor)) -}}
+
+{{- if .Site.Data.properties }}
+
+ {{- with (index .Site.Data.properties (split $name ".")) }}
+ {{- $properties := .properties }}
+ {{- with $sort }}
+ {{- $properties = (sort $properties . $order) }}
+ {{- end }}
+ {{- range $properties }}
+
+ -
+
+ {{- with .description }}
+ {{- $desc := . }}
+ {{- if reflect.IsMap $desc }}
+ {{- $desc = (index $desc $.Site.Language.Lang) }}
+ {{- end }}
+ {{ $desc | $.Page.RenderString }}
+ {{- end }}
+
+
+ {{- with default "none" (.defaultValue | string) }}
+ {{ i18n "propertylist_default" | title }}:
+ {{ . }}
+ {{- end }}
+
+
+ {{- end }}
+ {{- end }}
+
+{{- end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/shortcodes/tab.html b/docs/themes/hugo-geekdoc/layouts/shortcodes/tab.html
new file mode 100644
index 000000000..90b27274d
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/shortcodes/tab.html
@@ -0,0 +1,12 @@
+{{- if .Parent }}
+ {{- $name := .Get 0 }}
+ {{- $group := printf "tabs-%s" (.Parent.Get 0) }}
+
+ {{- if not (.Parent.Scratch.Get $group) }}
+ {{- .Parent.Scratch.Set $group slice }}
+ {{- end }}
+
+ {{- .Parent.Scratch.Add $group (dict "Name" $name "Content" .Inner) }}
+{{- else }}
+ {{ errorf "%q: 'tab' shortcode must be inside 'tabs' shortcode" .Page.Path }}
+{{- end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/shortcodes/tabs.html b/docs/themes/hugo-geekdoc/layouts/shortcodes/tabs.html
new file mode 100644
index 000000000..7d8671ec4
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/shortcodes/tabs.html
@@ -0,0 +1,22 @@
+{{- if .Inner }}{{ end }}
+{{- $id := .Get 0 }}
+{{- $group := printf "tabs-%s" $id }}
+
+
+
+ {{- range $index, $tab := .Scratch.Get $group }}
+
+
+
+ {{ .Content | $.Page.RenderString }}
+
+ {{- end }}
+
diff --git a/docs/themes/hugo-geekdoc/layouts/shortcodes/toc-tree.html b/docs/themes/hugo-geekdoc/layouts/shortcodes/toc-tree.html
new file mode 100644
index 000000000..13148ba17
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/shortcodes/toc-tree.html
@@ -0,0 +1,41 @@
+{{- $tocLevels := default (default 6 .Site.Params.geekdocToC) .Page.Params.geekdocToC }}
+
+{{- if $tocLevels }}
+
+ {{ template "toc-tree" dict "sect" .Page.Pages }}
+
+{{- end }}
+
+
+
+{{- define "toc-tree" }}
+
+ {{- range .sect.GroupBy "Weight" }}
+ {{- range .ByTitle }}
+ {{- if or (not .Params.geekdocHidden) (not (default true .Params.geekdocHiddenTocTree)) }}
+ -
+ {{- if or .Content .Params.geekdocFlatSection }}
+
+
+ {{- partial "utils/title" . }}{{ with .Params.geekdocDescription }}:{{ end }}
+
+ {{- with .Params.geekdocDescription }}{{ . }}{{ end }}
+
+ {{- else -}}
+
+ {{- partial "utils/title" . }}{{ with .Params.geekdocDescription }}
+ : {{ . }}
+ {{ end }}
+
+ {{- end -}}
+
+ {{- $numberOfPages := (add (len .Pages) (len .Sections)) }}
+ {{- if and (ne $numberOfPages 0) (not .Params.geekdocFlatSection) }}
+ {{- template "toc-tree" dict "sect" .Pages }}
+ {{- end }}
+
+ {{- end }}
+ {{- end }}
+ {{- end }}
+
+{{- end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/shortcodes/toc.html b/docs/themes/hugo-geekdoc/layouts/shortcodes/toc.html
new file mode 100644
index 000000000..5d875eee2
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/layouts/shortcodes/toc.html
@@ -0,0 +1,13 @@
+{{- $format := default "html" (.Get "format") }}
+{{- $tocLevels := default (default 6 .Site.Params.geekdocToC) .Page.Params.geekdocToC }}
+
+{{- if and $tocLevels .Page.TableOfContents -}}
+ {{- if not (eq ($format | lower) "raw") -}}
+
+ {{ .Page.TableOfContents }}
+
+
+ {{- else -}}
+ {{ .Page.TableOfContents }}
+ {{- end -}}
+{{- end -}}
diff --git a/docs/themes/hugo-geekdoc/static/brand.svg b/docs/themes/hugo-geekdoc/static/brand.svg
new file mode 100644
index 000000000..3a09f01db
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/brand.svg
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/themes/hugo-geekdoc/static/custom.css b/docs/themes/hugo-geekdoc/static/custom.css
new file mode 100644
index 000000000..e488c91ae
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/custom.css
@@ -0,0 +1 @@
+/* You can add custom styles here. */
diff --git a/docs/themes/hugo-geekdoc/static/favicon/android-chrome-144x144.png b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-144x144.png
new file mode 100644
index 000000000..d5e648100
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-144x144.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/android-chrome-192x192.png b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-192x192.png
new file mode 100644
index 000000000..b96ba6eaf
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-192x192.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/android-chrome-256x256.png b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-256x256.png
new file mode 100644
index 000000000..8243b3752
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-256x256.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/android-chrome-36x36.png b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-36x36.png
new file mode 100644
index 000000000..5624fe0c5
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-36x36.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/android-chrome-384x384.png b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-384x384.png
new file mode 100644
index 000000000..e9c6a30f7
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-384x384.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/android-chrome-48x48.png b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-48x48.png
new file mode 100644
index 000000000..9b9baf2b7
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-48x48.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/android-chrome-512x512.png b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-512x512.png
new file mode 100644
index 000000000..847c31465
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-512x512.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/android-chrome-72x72.png b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-72x72.png
new file mode 100644
index 000000000..592f66fb1
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-72x72.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/android-chrome-96x96.png b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-96x96.png
new file mode 100644
index 000000000..12c9988c1
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/android-chrome-96x96.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-1024x1024.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-1024x1024.png
new file mode 100644
index 000000000..ba47abecd
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-1024x1024.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-114x114.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-114x114.png
new file mode 100644
index 000000000..bdab2978a
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-114x114.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-120x120.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-120x120.png
new file mode 100644
index 000000000..3dd618d17
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-120x120.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-144x144.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-144x144.png
new file mode 100644
index 000000000..feffad84d
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-144x144.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-152x152.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-152x152.png
new file mode 100644
index 000000000..11645c34e
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-152x152.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-167x167.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-167x167.png
new file mode 100644
index 000000000..c36a56c93
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-167x167.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-180x180.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-180x180.png
new file mode 100644
index 000000000..d34586ff7
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-180x180.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-57x57.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-57x57.png
new file mode 100644
index 000000000..eda66bd3d
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-57x57.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-60x60.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-60x60.png
new file mode 100644
index 000000000..7de4a0106
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-60x60.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-72x72.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-72x72.png
new file mode 100644
index 000000000..b4abb3777
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-72x72.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-76x76.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-76x76.png
new file mode 100644
index 000000000..c93d59bb4
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-76x76.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-precomposed.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-precomposed.png
new file mode 100644
index 000000000..d34586ff7
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon-precomposed.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon.png
new file mode 100644
index 000000000..d34586ff7
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-icon.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1125x2436.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1125x2436.png
new file mode 100644
index 000000000..642d0254e
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1125x2436.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1136x640.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1136x640.png
new file mode 100644
index 000000000..103e015bf
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1136x640.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1170x2532.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1170x2532.png
new file mode 100644
index 000000000..b01493ba7
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1170x2532.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1242x2208.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1242x2208.png
new file mode 100644
index 000000000..8defb8724
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1242x2208.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1242x2688.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1242x2688.png
new file mode 100644
index 000000000..4f750f5f5
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1242x2688.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1284x2778.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1284x2778.png
new file mode 100644
index 000000000..10e452f54
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1284x2778.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1334x750.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1334x750.png
new file mode 100644
index 000000000..c6eefd607
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1334x750.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1536x2048.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1536x2048.png
new file mode 100644
index 000000000..5e9b9cb6b
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1536x2048.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1620x2160.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1620x2160.png
new file mode 100644
index 000000000..c8647135f
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1620x2160.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1668x2224.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1668x2224.png
new file mode 100644
index 000000000..a2780d7a9
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1668x2224.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1668x2388.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1668x2388.png
new file mode 100644
index 000000000..bb39a1cfd
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1668x2388.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1792x828.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1792x828.png
new file mode 100644
index 000000000..dd39a3ff2
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1792x828.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2048x1536.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2048x1536.png
new file mode 100644
index 000000000..6210c8697
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2048x1536.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2048x2732.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2048x2732.png
new file mode 100644
index 000000000..31e636c8e
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2048x2732.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2160x1620.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2160x1620.png
new file mode 100644
index 000000000..df73af011
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2160x1620.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2208x1242.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2208x1242.png
new file mode 100644
index 000000000..a0b001d40
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2208x1242.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2224x1668.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2224x1668.png
new file mode 100644
index 000000000..a8cb52a7a
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2224x1668.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2388x1668.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2388x1668.png
new file mode 100644
index 000000000..15fa83341
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2388x1668.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2436x1125.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2436x1125.png
new file mode 100644
index 000000000..4e43260f1
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2436x1125.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2532x1170.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2532x1170.png
new file mode 100644
index 000000000..21974e888
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2532x1170.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2688x1242.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2688x1242.png
new file mode 100644
index 000000000..a4360a412
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2688x1242.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2732x2048.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2732x2048.png
new file mode 100644
index 000000000..8f31a8595
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2732x2048.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2778x1284.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2778x1284.png
new file mode 100644
index 000000000..5ec7c9438
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2778x1284.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-640x1136.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-640x1136.png
new file mode 100644
index 000000000..0da1acff0
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-640x1136.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-750x1334.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-750x1334.png
new file mode 100644
index 000000000..720a857ad
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-750x1334.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-828x1792.png b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-828x1792.png
new file mode 100644
index 000000000..311af2229
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-828x1792.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/browserconfig.xml b/docs/themes/hugo-geekdoc/static/favicon/browserconfig.xml
new file mode 100644
index 000000000..3bdb582ca
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/favicon/browserconfig.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+ #efefef
+
+
+
\ No newline at end of file
diff --git a/docs/themes/hugo-geekdoc/static/favicon/favicon-16x16.png b/docs/themes/hugo-geekdoc/static/favicon/favicon-16x16.png
new file mode 100644
index 000000000..fcd6f540d
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/favicon-16x16.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/favicon-32x32.png b/docs/themes/hugo-geekdoc/static/favicon/favicon-32x32.png
new file mode 100644
index 000000000..afedef109
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/favicon-32x32.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/favicon-48x48.png b/docs/themes/hugo-geekdoc/static/favicon/favicon-48x48.png
new file mode 100644
index 000000000..f3b0f45b9
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/favicon-48x48.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/favicon.ico b/docs/themes/hugo-geekdoc/static/favicon/favicon.ico
new file mode 100644
index 000000000..e4cfde191
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/favicon.ico differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/favicon.svg b/docs/themes/hugo-geekdoc/static/favicon/favicon.svg
new file mode 100644
index 000000000..8d899c57e
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/favicon/favicon.svg
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/themes/hugo-geekdoc/static/favicon/manifest.json b/docs/themes/hugo-geekdoc/static/favicon/manifest.json
new file mode 100644
index 000000000..7f71aa2de
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/favicon/manifest.json
@@ -0,0 +1,69 @@
+{
+ "name": null,
+ "short_name": null,
+ "description": null,
+ "dir": "auto",
+ "lang": "en-US",
+ "display": "standalone",
+ "orientation": "any",
+ "scope": "",
+ "start_url": "/?homescreen=1",
+ "background_color": "#efefef",
+ "theme_color": "#efefef",
+ "icons": [
+ {
+ "src": "/favicon/android-chrome-36x36.png",
+ "sizes": "36x36",
+ "type": "image/png",
+ "purpose": "any"
+ },
+ {
+ "src": "/favicon/android-chrome-48x48.png",
+ "sizes": "48x48",
+ "type": "image/png",
+ "purpose": "any"
+ },
+ {
+ "src": "/favicon/android-chrome-72x72.png",
+ "sizes": "72x72",
+ "type": "image/png",
+ "purpose": "any"
+ },
+ {
+ "src": "/favicon/android-chrome-96x96.png",
+ "sizes": "96x96",
+ "type": "image/png",
+ "purpose": "any"
+ },
+ {
+ "src": "/favicon/android-chrome-144x144.png",
+ "sizes": "144x144",
+ "type": "image/png",
+ "purpose": "any"
+ },
+ {
+ "src": "/favicon/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png",
+ "purpose": "any"
+ },
+ {
+ "src": "/favicon/android-chrome-256x256.png",
+ "sizes": "256x256",
+ "type": "image/png",
+ "purpose": "any"
+ },
+ {
+ "src": "/favicon/android-chrome-384x384.png",
+ "sizes": "384x384",
+ "type": "image/png",
+ "purpose": "any"
+ },
+ {
+ "src": "/favicon/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png",
+ "purpose": "any"
+ }
+ ]
+}
diff --git a/docs/themes/hugo-geekdoc/static/favicon/mstile-144x144.png b/docs/themes/hugo-geekdoc/static/favicon/mstile-144x144.png
new file mode 100644
index 000000000..d5e648100
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/mstile-144x144.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/mstile-150x150.png b/docs/themes/hugo-geekdoc/static/favicon/mstile-150x150.png
new file mode 100644
index 000000000..8a50201da
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/mstile-150x150.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/mstile-310x150.png b/docs/themes/hugo-geekdoc/static/favicon/mstile-310x150.png
new file mode 100644
index 000000000..e0f80ff08
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/mstile-310x150.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/mstile-310x310.png b/docs/themes/hugo-geekdoc/static/favicon/mstile-310x310.png
new file mode 100644
index 000000000..26074c154
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/mstile-310x310.png differ
diff --git a/docs/themes/hugo-geekdoc/static/favicon/mstile-70x70.png b/docs/themes/hugo-geekdoc/static/favicon/mstile-70x70.png
new file mode 100644
index 000000000..d5d47bda9
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/favicon/mstile-70x70.png differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/GeekdocIcons.woff b/docs/themes/hugo-geekdoc/static/fonts/GeekdocIcons.woff
new file mode 100644
index 000000000..5e4a90b3b
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/GeekdocIcons.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/GeekdocIcons.woff2 b/docs/themes/hugo-geekdoc/static/fonts/GeekdocIcons.woff2
new file mode 100644
index 000000000..e8a885e10
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/GeekdocIcons.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_AMS-Regular.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_AMS-Regular.woff
new file mode 100644
index 000000000..b804d7b33
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_AMS-Regular.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_AMS-Regular.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_AMS-Regular.woff2
new file mode 100644
index 000000000..0acaaff03
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_AMS-Regular.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Bold.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Bold.woff
new file mode 100644
index 000000000..9759710d1
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Bold.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Bold.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Bold.woff2
new file mode 100644
index 000000000..f390922ec
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Bold.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Regular.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Regular.woff
new file mode 100644
index 000000000..9bdd534fd
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Regular.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Regular.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Regular.woff2
new file mode 100644
index 000000000..75344a1f9
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Regular.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Bold.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Bold.woff
new file mode 100644
index 000000000..e7730f662
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Bold.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Bold.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Bold.woff2
new file mode 100644
index 000000000..395f28bea
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Bold.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Regular.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Regular.woff
new file mode 100644
index 000000000..acab069f9
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Regular.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Regular.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Regular.woff2
new file mode 100644
index 000000000..735f6948d
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Regular.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Bold.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Bold.woff
new file mode 100644
index 000000000..f38136ac1
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Bold.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Bold.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Bold.woff2
new file mode 100644
index 000000000..ab2ad21da
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Bold.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-BoldItalic.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-BoldItalic.woff
new file mode 100644
index 000000000..67807b0bd
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-BoldItalic.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-BoldItalic.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-BoldItalic.woff2
new file mode 100644
index 000000000..5931794de
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-BoldItalic.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Italic.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Italic.woff
new file mode 100644
index 000000000..6f43b594b
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Italic.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Italic.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Italic.woff2
new file mode 100644
index 000000000..b50920e13
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Italic.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Regular.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Regular.woff
new file mode 100644
index 000000000..21f581296
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Regular.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Regular.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Regular.woff2
new file mode 100644
index 000000000..eb24a7ba2
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Regular.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Math-BoldItalic.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Math-BoldItalic.woff
new file mode 100644
index 000000000..0ae390d74
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Math-BoldItalic.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Math-BoldItalic.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Math-BoldItalic.woff2
new file mode 100644
index 000000000..29657023a
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Math-BoldItalic.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Math-Italic.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Math-Italic.woff
new file mode 100644
index 000000000..eb5159d4c
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Math-Italic.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Math-Italic.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Math-Italic.woff2
new file mode 100644
index 000000000..215c143fd
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Math-Italic.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Bold.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Bold.woff
new file mode 100644
index 000000000..8d47c02d9
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Bold.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Bold.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Bold.woff2
new file mode 100644
index 000000000..cfaa3bda5
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Bold.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Italic.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Italic.woff
new file mode 100644
index 000000000..7e02df963
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Italic.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Italic.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Italic.woff2
new file mode 100644
index 000000000..349c06dc6
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Italic.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Regular.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Regular.woff
new file mode 100644
index 000000000..31b84829b
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Regular.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Regular.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Regular.woff2
new file mode 100644
index 000000000..a90eea85f
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Regular.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Script-Regular.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Script-Regular.woff
new file mode 100644
index 000000000..0e7da821e
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Script-Regular.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Script-Regular.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Script-Regular.woff2
new file mode 100644
index 000000000..b3048fc11
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Script-Regular.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size1-Regular.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size1-Regular.woff
new file mode 100644
index 000000000..7f292d911
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size1-Regular.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size1-Regular.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size1-Regular.woff2
new file mode 100644
index 000000000..c5a8462fb
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size1-Regular.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size2-Regular.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size2-Regular.woff
new file mode 100644
index 000000000..d241d9be2
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size2-Regular.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size2-Regular.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size2-Regular.woff2
new file mode 100644
index 000000000..e1bccfe24
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size2-Regular.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size3-Regular.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size3-Regular.woff
new file mode 100644
index 000000000..e6e9b658d
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size3-Regular.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size3-Regular.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size3-Regular.woff2
new file mode 100644
index 000000000..249a28662
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size3-Regular.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size4-Regular.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size4-Regular.woff
new file mode 100644
index 000000000..e1ec54576
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size4-Regular.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size4-Regular.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size4-Regular.woff2
new file mode 100644
index 000000000..680c13085
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Size4-Regular.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Typewriter-Regular.woff b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Typewriter-Regular.woff
new file mode 100644
index 000000000..2432419f2
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Typewriter-Regular.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Typewriter-Regular.woff2 b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Typewriter-Regular.woff2
new file mode 100644
index 000000000..771f1af70
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/KaTeX_Typewriter-Regular.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/LiberationMono.woff b/docs/themes/hugo-geekdoc/static/fonts/LiberationMono.woff
new file mode 100644
index 000000000..05f5bd236
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/LiberationMono.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/LiberationMono.woff2 b/docs/themes/hugo-geekdoc/static/fonts/LiberationMono.woff2
new file mode 100644
index 000000000..3f4bb0637
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/LiberationMono.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-Bold.woff b/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-Bold.woff
new file mode 100644
index 000000000..145ed9f7b
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-Bold.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-Bold.woff2 b/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-Bold.woff2
new file mode 100644
index 000000000..b16596740
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-Bold.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-BoldItalic.woff b/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-BoldItalic.woff
new file mode 100644
index 000000000..aa4c0c1f5
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-BoldItalic.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-BoldItalic.woff2 b/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-BoldItalic.woff2
new file mode 100644
index 000000000..081c4d61d
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-BoldItalic.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-Italic.woff b/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-Italic.woff
new file mode 100644
index 000000000..ebe952e46
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-Italic.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-Italic.woff2 b/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-Italic.woff2
new file mode 100644
index 000000000..86f6521c0
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/LiberationSans-Italic.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/LiberationSans.woff b/docs/themes/hugo-geekdoc/static/fonts/LiberationSans.woff
new file mode 100644
index 000000000..bb582d51f
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/LiberationSans.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/LiberationSans.woff2 b/docs/themes/hugo-geekdoc/static/fonts/LiberationSans.woff2
new file mode 100644
index 000000000..796cb17b5
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/LiberationSans.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/Metropolis.woff b/docs/themes/hugo-geekdoc/static/fonts/Metropolis.woff
new file mode 100644
index 000000000..6b1342c2f
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/Metropolis.woff differ
diff --git a/docs/themes/hugo-geekdoc/static/fonts/Metropolis.woff2 b/docs/themes/hugo-geekdoc/static/fonts/Metropolis.woff2
new file mode 100644
index 000000000..d79d50a77
Binary files /dev/null and b/docs/themes/hugo-geekdoc/static/fonts/Metropolis.woff2 differ
diff --git a/docs/themes/hugo-geekdoc/static/img/geekdoc-stack.svg b/docs/themes/hugo-geekdoc/static/img/geekdoc-stack.svg
new file mode 100644
index 000000000..64aebb70c
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/img/geekdoc-stack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/themes/hugo-geekdoc/static/js/116-341f79d9.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/116-341f79d9.chunk.min.js
new file mode 100644
index 000000000..83829c8fa
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/116-341f79d9.chunk.min.js
@@ -0,0 +1,10870 @@
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [116],
+ {
+ 2116: function (e, t, r) {
+ var n;
+ "undefined" != typeof self && self,
+ (n = function (e) {
+ return (function () {
+ "use strict";
+ var t = {
+ 771: function (t) {
+ t.exports = e;
+ },
+ },
+ r = {};
+ function n(e) {
+ var a = r[e];
+ if (void 0 !== a) return a.exports;
+ var i = (r[e] = { exports: {} });
+ return t[e](i, i.exports, n), i.exports;
+ }
+ (n.n = function (e) {
+ var t =
+ e && e.__esModule
+ ? function () {
+ return e.default;
+ }
+ : function () {
+ return e;
+ };
+ return n.d(t, { a: t }), t;
+ }),
+ (n.d = function (e, t) {
+ for (var r in t) n.o(t, r) && !n.o(e, r) && Object.defineProperty(e, r, { enumerable: !0, get: t[r] });
+ }),
+ (n.o = function (e, t) {
+ return Object.prototype.hasOwnProperty.call(e, t);
+ });
+ var a = {};
+ return (
+ (function () {
+ n.d(a, {
+ default: function () {
+ return l;
+ },
+ });
+ var e = n(771),
+ t = n.n(e),
+ r = function (e, t, r) {
+ for (var n = r, a = 0, i = e.length; n < t.length; ) {
+ var o = t[n];
+ if (a <= 0 && t.slice(n, n + i) === e) return n;
+ "\\" === o ? n++ : "{" === o ? a++ : "}" === o && a--, n++;
+ }
+ return -1;
+ },
+ i = /^\\begin{/,
+ o = function (e, n) {
+ var a = (function (e, t) {
+ for (
+ var n,
+ a = [],
+ o = new RegExp(
+ "(" +
+ t
+ .map(function (e) {
+ return e.left.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&");
+ })
+ .join("|") +
+ ")",
+ );
+ -1 !== (n = e.search(o));
+
+ ) {
+ n > 0 && (a.push({ type: "text", data: e.slice(0, n) }), (e = e.slice(n)));
+ var s = t.findIndex(function (t) {
+ return e.startsWith(t.left);
+ });
+ if (-1 === (n = r(t[s].right, e, t[s].left.length))) break;
+ var l = e.slice(0, n + t[s].right.length),
+ h = i.test(l) ? l : e.slice(t[s].left.length, n);
+ a.push({ type: "math", data: h, rawData: l, display: t[s].display }), (e = e.slice(n + t[s].right.length));
+ }
+ return "" !== e && a.push({ type: "text", data: e }), a;
+ })(e, n.delimiters);
+ if (1 === a.length && "text" === a[0].type) return null;
+ for (var o = document.createDocumentFragment(), s = 0; s < a.length; s++)
+ if ("text" === a[s].type) o.appendChild(document.createTextNode(a[s].data));
+ else {
+ var l = document.createElement("span"),
+ h = a[s].data;
+ n.displayMode = a[s].display;
+ try {
+ n.preProcess && (h = n.preProcess(h)), t().render(h, l, n);
+ } catch (e) {
+ if (!(e instanceof t().ParseError)) throw e;
+ n.errorCallback("KaTeX auto-render: Failed to parse `" + a[s].data + "` with ", e),
+ o.appendChild(document.createTextNode(a[s].rawData));
+ continue;
+ }
+ o.appendChild(l);
+ }
+ return o;
+ },
+ s = function e(t, r) {
+ for (var n = 0; n < t.childNodes.length; n++) {
+ var a = t.childNodes[n];
+ if (3 === a.nodeType) {
+ for (var i = a.textContent, s = a.nextSibling, l = 0; s && s.nodeType === Node.TEXT_NODE; )
+ (i += s.textContent), (s = s.nextSibling), l++;
+ var h = o(i, r);
+ if (h) {
+ for (var c = 0; c < l; c++) a.nextSibling.remove();
+ (n += h.childNodes.length - 1), t.replaceChild(h, a);
+ } else n += l;
+ } else
+ 1 === a.nodeType &&
+ (function () {
+ var t = " " + a.className + " ";
+ -1 === r.ignoredTags.indexOf(a.nodeName.toLowerCase()) &&
+ r.ignoredClasses.every(function (e) {
+ return -1 === t.indexOf(" " + e + " ");
+ }) &&
+ e(a, r);
+ })();
+ }
+ },
+ l = function (e, t) {
+ if (!e) throw new Error("No element provided to render");
+ var r = {};
+ for (var n in t) t.hasOwnProperty(n) && (r[n] = t[n]);
+ (r.delimiters = r.delimiters || [
+ { left: "$$", right: "$$", display: !0 },
+ { left: "\\(", right: "\\)", display: !1 },
+ { left: "\\begin{equation}", right: "\\end{equation}", display: !0 },
+ { left: "\\begin{align}", right: "\\end{align}", display: !0 },
+ { left: "\\begin{alignat}", right: "\\end{alignat}", display: !0 },
+ { left: "\\begin{gather}", right: "\\end{gather}", display: !0 },
+ { left: "\\begin{CD}", right: "\\end{CD}", display: !0 },
+ { left: "\\[", right: "\\]", display: !0 },
+ ]),
+ (r.ignoredTags = r.ignoredTags || ["script", "noscript", "style", "textarea", "pre", "code", "option"]),
+ (r.ignoredClasses = r.ignoredClasses || []),
+ (r.errorCallback = r.errorCallback || console.error),
+ (r.macros = r.macros || {}),
+ s(e, r);
+ };
+ })(),
+ a.default
+ );
+ })();
+ }),
+ (e.exports = n(r(527)));
+ },
+ 527: function (e) {
+ var t;
+ "undefined" != typeof self && self,
+ (t = function () {
+ return (function () {
+ "use strict";
+ var e = {
+ d: function (t, r) {
+ for (var n in r) e.o(r, n) && !e.o(t, n) && Object.defineProperty(t, n, { enumerable: !0, get: r[n] });
+ },
+ o: function (e, t) {
+ return Object.prototype.hasOwnProperty.call(e, t);
+ },
+ },
+ t = {};
+ e.d(t, {
+ default: function () {
+ return ra;
+ },
+ });
+ var r = function e(t, r) {
+ (this.name = void 0), (this.position = void 0), (this.length = void 0), (this.rawMessage = void 0);
+ var n,
+ a,
+ i = "KaTeX parse error: " + t,
+ o = r && r.loc;
+ if (o && o.start <= o.end) {
+ var s = o.lexer.input;
+ (n = o.start), (a = o.end), n === s.length ? (i += " at end of input: ") : (i += " at position " + (n + 1) + ": ");
+ var l = s.slice(n, a).replace(/[^]/g, "$&̲");
+ i += (n > 15 ? "…" + s.slice(n - 15, n) : s.slice(0, n)) + l + (a + 15 < s.length ? s.slice(a, a + 15) + "…" : s.slice(a));
+ }
+ var h = new Error(i);
+ return (
+ (h.name = "ParseError"),
+ (h.__proto__ = e.prototype),
+ (h.position = n),
+ null != n && null != a && (h.length = a - n),
+ (h.rawMessage = t),
+ h
+ );
+ };
+ r.prototype.__proto__ = Error.prototype;
+ var n = r,
+ a = /([A-Z])/g,
+ i = { "&": "&", ">": ">", "<": "<", '"': """, "'": "'" },
+ o = /[&><"']/g,
+ s = function e(t) {
+ return "ordgroup" === t.type || "color" === t.type ? (1 === t.body.length ? e(t.body[0]) : t) : "font" === t.type ? e(t.body) : t;
+ },
+ l = function (e, t) {
+ return -1 !== e.indexOf(t);
+ },
+ h = function (e, t) {
+ return void 0 === e ? t : e;
+ },
+ c = function (e) {
+ return String(e).replace(o, function (e) {
+ return i[e];
+ });
+ },
+ m = function (e) {
+ return e.replace(a, "-$1").toLowerCase();
+ },
+ u = s,
+ p = function (e) {
+ var t = s(e);
+ return "mathord" === t.type || "textord" === t.type || "atom" === t.type;
+ },
+ d = function (e) {
+ var t = /^\s*([^\\/#]*?)(?::|*58|*3a)/i.exec(e);
+ return null != t ? t[1] : "_relative";
+ },
+ f = {
+ displayMode: {
+ type: "boolean",
+ description:
+ "Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",
+ cli: "-d, --display-mode",
+ },
+ output: {
+ type: { enum: ["htmlAndMathml", "html", "mathml"] },
+ description: "Determines the markup language of the output.",
+ cli: "-F, --format ",
+ },
+ leqno: {
+ type: "boolean",
+ description: "Render display math in leqno style (left-justified tags).",
+ },
+ fleqn: { type: "boolean", description: "Render display math flush left." },
+ throwOnError: {
+ type: "boolean",
+ default: !0,
+ cli: "-t, --no-throw-on-error",
+ cliDescription:
+ "Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error.",
+ },
+ errorColor: {
+ type: "string",
+ default: "#cc0000",
+ cli: "-c, --error-color ",
+ cliDescription:
+ "A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",
+ cliProcessor: function (e) {
+ return "#" + e;
+ },
+ },
+ macros: {
+ type: "object",
+ cli: "-m, --macro ",
+ cliDescription: "Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",
+ cliDefault: [],
+ cliProcessor: function (e, t) {
+ return t.push(e), t;
+ },
+ },
+ minRuleThickness: {
+ type: "number",
+ description:
+ "Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",
+ processor: function (e) {
+ return Math.max(0, e);
+ },
+ cli: "--min-rule-thickness ",
+ cliProcessor: parseFloat,
+ },
+ colorIsTextColor: {
+ type: "boolean",
+ description: "Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",
+ cli: "-b, --color-is-text-color",
+ },
+ strict: {
+ type: [{ enum: ["warn", "ignore", "error"] }, "boolean", "function"],
+ description:
+ "Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",
+ cli: "-S, --strict",
+ cliDefault: !1,
+ },
+ trust: {
+ type: ["boolean", "function"],
+ description: "Trust the input, enabling all HTML features such as \\url.",
+ cli: "-T, --trust",
+ },
+ maxSize: {
+ type: "number",
+ default: 1 / 0,
+ description:
+ "If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",
+ processor: function (e) {
+ return Math.max(0, e);
+ },
+ cli: "-s, --max-size ",
+ cliProcessor: parseInt,
+ },
+ maxExpand: {
+ type: "number",
+ default: 1e3,
+ description:
+ "Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",
+ processor: function (e) {
+ return Math.max(0, e);
+ },
+ cli: "-e, --max-expand ",
+ cliProcessor: function (e) {
+ return "Infinity" === e ? 1 / 0 : parseInt(e);
+ },
+ },
+ globalGroup: { type: "boolean", cli: !1 },
+ };
+ function g(e) {
+ if (e.default) return e.default;
+ var t = e.type,
+ r = Array.isArray(t) ? t[0] : t;
+ if ("string" != typeof r) return r.enum[0];
+ switch (r) {
+ case "boolean":
+ return !1;
+ case "string":
+ return "";
+ case "number":
+ return 0;
+ case "object":
+ return {};
+ }
+ }
+ var v = (function () {
+ function e(e) {
+ for (var t in ((this.displayMode = void 0),
+ (this.output = void 0),
+ (this.leqno = void 0),
+ (this.fleqn = void 0),
+ (this.throwOnError = void 0),
+ (this.errorColor = void 0),
+ (this.macros = void 0),
+ (this.minRuleThickness = void 0),
+ (this.colorIsTextColor = void 0),
+ (this.strict = void 0),
+ (this.trust = void 0),
+ (this.maxSize = void 0),
+ (this.maxExpand = void 0),
+ (this.globalGroup = void 0),
+ (e = e || {}),
+ f))
+ if (f.hasOwnProperty(t)) {
+ var r = f[t];
+ this[t] = void 0 !== e[t] ? (r.processor ? r.processor(e[t]) : e[t]) : g(r);
+ }
+ }
+ var t = e.prototype;
+ return (
+ (t.reportNonstrict = function (e, t, r) {
+ var a = this.strict;
+ if (("function" == typeof a && (a = a(e, t, r)), a && "ignore" !== a)) {
+ if (!0 === a || "error" === a)
+ throw new n("LaTeX-incompatible input and strict mode is set to 'error': " + t + " [" + e + "]", r);
+ "warn" === a
+ ? "undefined" != typeof console &&
+ console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + t + " [" + e + "]")
+ : "undefined" != typeof console &&
+ console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '" + a + "': " + t + " [" + e + "]");
+ }
+ }),
+ (t.useStrictBehavior = function (e, t, r) {
+ var n = this.strict;
+ if ("function" == typeof n)
+ try {
+ n = n(e, t, r);
+ } catch (e) {
+ n = "error";
+ }
+ return !(
+ !n ||
+ "ignore" === n ||
+ (!0 !== n &&
+ "error" !== n &&
+ ("warn" === n
+ ? ("undefined" != typeof console &&
+ console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + t + " [" + e + "]"),
+ 1)
+ : ("undefined" != typeof console &&
+ console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '" + n + "': " + t + " [" + e + "]"),
+ 1)))
+ );
+ }),
+ (t.isTrusted = function (e) {
+ e.url && !e.protocol && (e.protocol = d(e.url));
+ var t = "function" == typeof this.trust ? this.trust(e) : this.trust;
+ return Boolean(t);
+ }),
+ e
+ );
+ })(),
+ y = (function () {
+ function e(e, t, r) {
+ (this.id = void 0), (this.size = void 0), (this.cramped = void 0), (this.id = e), (this.size = t), (this.cramped = r);
+ }
+ var t = e.prototype;
+ return (
+ (t.sup = function () {
+ return b[x[this.id]];
+ }),
+ (t.sub = function () {
+ return b[w[this.id]];
+ }),
+ (t.fracNum = function () {
+ return b[k[this.id]];
+ }),
+ (t.fracDen = function () {
+ return b[S[this.id]];
+ }),
+ (t.cramp = function () {
+ return b[M[this.id]];
+ }),
+ (t.text = function () {
+ return b[z[this.id]];
+ }),
+ (t.isTight = function () {
+ return this.size >= 2;
+ }),
+ e
+ );
+ })(),
+ b = [
+ new y(0, 0, !1),
+ new y(1, 0, !0),
+ new y(2, 1, !1),
+ new y(3, 1, !0),
+ new y(4, 2, !1),
+ new y(5, 2, !0),
+ new y(6, 3, !1),
+ new y(7, 3, !0),
+ ],
+ x = [4, 5, 4, 5, 6, 7, 6, 7],
+ w = [5, 5, 5, 5, 7, 7, 7, 7],
+ k = [2, 3, 4, 5, 6, 7, 6, 7],
+ S = [3, 3, 5, 5, 7, 7, 7, 7],
+ M = [1, 1, 3, 3, 5, 5, 7, 7],
+ z = [0, 1, 2, 3, 2, 3, 2, 3],
+ A = { DISPLAY: b[0], TEXT: b[2], SCRIPT: b[4], SCRIPTSCRIPT: b[6] },
+ T = [
+ {
+ name: "latin",
+ blocks: [
+ [256, 591],
+ [768, 879],
+ ],
+ },
+ { name: "cyrillic", blocks: [[1024, 1279]] },
+ { name: "armenian", blocks: [[1328, 1423]] },
+ { name: "brahmic", blocks: [[2304, 4255]] },
+ { name: "georgian", blocks: [[4256, 4351]] },
+ {
+ name: "cjk",
+ blocks: [
+ [12288, 12543],
+ [19968, 40879],
+ [65280, 65376],
+ ],
+ },
+ { name: "hangul", blocks: [[44032, 55215]] },
+ ],
+ B = [];
+ function N(e) {
+ for (var t = 0; t < B.length; t += 2) if (e >= B[t] && e <= B[t + 1]) return !0;
+ return !1;
+ }
+ T.forEach(function (e) {
+ return e.blocks.forEach(function (e) {
+ return B.push.apply(B, e);
+ });
+ });
+ var C = {
+ doubleleftarrow:
+ "M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",
+ doublerightarrow:
+ "M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",
+ leftarrow:
+ "M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",
+ leftbrace:
+ "M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",
+ leftbraceunder:
+ "M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",
+ leftgroup: "M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",
+ leftgroupunder: "M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",
+ leftharpoon:
+ "M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",
+ leftharpoonplus:
+ "M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",
+ leftharpoondown:
+ "M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",
+ leftharpoondownplus:
+ "M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",
+ lefthook:
+ "M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",
+ leftlinesegment: "M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",
+ leftmapsto: "M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",
+ leftToFrom:
+ "M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",
+ longequal: "M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",
+ midbrace:
+ "M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",
+ midbraceunder:
+ "M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",
+ oiintSize1:
+ "M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",
+ oiintSize2:
+ "M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",
+ oiiintSize1:
+ "M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",
+ oiiintSize2:
+ "M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",
+ rightarrow:
+ "M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",
+ rightbrace:
+ "M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",
+ rightbraceunder:
+ "M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",
+ rightgroup: "M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",
+ rightgroupunder: "M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",
+ rightharpoon:
+ "M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",
+ rightharpoonplus:
+ "M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",
+ rightharpoondown:
+ "M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",
+ rightharpoondownplus:
+ "M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",
+ righthook:
+ "M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",
+ rightlinesegment: "M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",
+ rightToFrom:
+ "M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",
+ twoheadleftarrow:
+ "M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",
+ twoheadrightarrow:
+ "M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",
+ tilde1:
+ "M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",
+ tilde2:
+ "M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",
+ tilde3:
+ "M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",
+ tilde4:
+ "M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",
+ vec: "M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",
+ widehat1: "M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",
+ widehat2: "M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",
+ widehat3: "M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",
+ widehat4: "M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",
+ widecheck1:
+ "M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",
+ widecheck2:
+ "M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",
+ widecheck3:
+ "M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",
+ widecheck4:
+ "M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",
+ baraboveleftarrow:
+ "M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",
+ rightarrowabovebar:
+ "M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",
+ baraboveshortleftharpoon:
+ "M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",
+ rightharpoonaboveshortbar:
+ "M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",
+ shortbaraboveleftharpoon:
+ "M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",
+ shortrightharpoonabovebar:
+ "M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z",
+ },
+ q = (function () {
+ function e(e) {
+ (this.children = void 0),
+ (this.classes = void 0),
+ (this.height = void 0),
+ (this.depth = void 0),
+ (this.maxFontSize = void 0),
+ (this.style = void 0),
+ (this.children = e),
+ (this.classes = []),
+ (this.height = 0),
+ (this.depth = 0),
+ (this.maxFontSize = 0),
+ (this.style = {});
+ }
+ var t = e.prototype;
+ return (
+ (t.hasClass = function (e) {
+ return l(this.classes, e);
+ }),
+ (t.toNode = function () {
+ for (var e = document.createDocumentFragment(), t = 0; t < this.children.length; t++) e.appendChild(this.children[t].toNode());
+ return e;
+ }),
+ (t.toMarkup = function () {
+ for (var e = "", t = 0; t < this.children.length; t++) e += this.children[t].toMarkup();
+ return e;
+ }),
+ (t.toText = function () {
+ return this.children
+ .map(function (e) {
+ return e.toText();
+ })
+ .join("");
+ }),
+ e
+ );
+ })(),
+ I = {
+ "AMS-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 65: [0, 0.68889, 0, 0, 0.72222],
+ 66: [0, 0.68889, 0, 0, 0.66667],
+ 67: [0, 0.68889, 0, 0, 0.72222],
+ 68: [0, 0.68889, 0, 0, 0.72222],
+ 69: [0, 0.68889, 0, 0, 0.66667],
+ 70: [0, 0.68889, 0, 0, 0.61111],
+ 71: [0, 0.68889, 0, 0, 0.77778],
+ 72: [0, 0.68889, 0, 0, 0.77778],
+ 73: [0, 0.68889, 0, 0, 0.38889],
+ 74: [0.16667, 0.68889, 0, 0, 0.5],
+ 75: [0, 0.68889, 0, 0, 0.77778],
+ 76: [0, 0.68889, 0, 0, 0.66667],
+ 77: [0, 0.68889, 0, 0, 0.94445],
+ 78: [0, 0.68889, 0, 0, 0.72222],
+ 79: [0.16667, 0.68889, 0, 0, 0.77778],
+ 80: [0, 0.68889, 0, 0, 0.61111],
+ 81: [0.16667, 0.68889, 0, 0, 0.77778],
+ 82: [0, 0.68889, 0, 0, 0.72222],
+ 83: [0, 0.68889, 0, 0, 0.55556],
+ 84: [0, 0.68889, 0, 0, 0.66667],
+ 85: [0, 0.68889, 0, 0, 0.72222],
+ 86: [0, 0.68889, 0, 0, 0.72222],
+ 87: [0, 0.68889, 0, 0, 1],
+ 88: [0, 0.68889, 0, 0, 0.72222],
+ 89: [0, 0.68889, 0, 0, 0.72222],
+ 90: [0, 0.68889, 0, 0, 0.66667],
+ 107: [0, 0.68889, 0, 0, 0.55556],
+ 160: [0, 0, 0, 0, 0.25],
+ 165: [0, 0.675, 0.025, 0, 0.75],
+ 174: [0.15559, 0.69224, 0, 0, 0.94666],
+ 240: [0, 0.68889, 0, 0, 0.55556],
+ 295: [0, 0.68889, 0, 0, 0.54028],
+ 710: [0, 0.825, 0, 0, 2.33334],
+ 732: [0, 0.9, 0, 0, 2.33334],
+ 770: [0, 0.825, 0, 0, 2.33334],
+ 771: [0, 0.9, 0, 0, 2.33334],
+ 989: [0.08167, 0.58167, 0, 0, 0.77778],
+ 1008: [0, 0.43056, 0.04028, 0, 0.66667],
+ 8245: [0, 0.54986, 0, 0, 0.275],
+ 8463: [0, 0.68889, 0, 0, 0.54028],
+ 8487: [0, 0.68889, 0, 0, 0.72222],
+ 8498: [0, 0.68889, 0, 0, 0.55556],
+ 8502: [0, 0.68889, 0, 0, 0.66667],
+ 8503: [0, 0.68889, 0, 0, 0.44445],
+ 8504: [0, 0.68889, 0, 0, 0.66667],
+ 8513: [0, 0.68889, 0, 0, 0.63889],
+ 8592: [-0.03598, 0.46402, 0, 0, 0.5],
+ 8594: [-0.03598, 0.46402, 0, 0, 0.5],
+ 8602: [-0.13313, 0.36687, 0, 0, 1],
+ 8603: [-0.13313, 0.36687, 0, 0, 1],
+ 8606: [0.01354, 0.52239, 0, 0, 1],
+ 8608: [0.01354, 0.52239, 0, 0, 1],
+ 8610: [0.01354, 0.52239, 0, 0, 1.11111],
+ 8611: [0.01354, 0.52239, 0, 0, 1.11111],
+ 8619: [0, 0.54986, 0, 0, 1],
+ 8620: [0, 0.54986, 0, 0, 1],
+ 8621: [-0.13313, 0.37788, 0, 0, 1.38889],
+ 8622: [-0.13313, 0.36687, 0, 0, 1],
+ 8624: [0, 0.69224, 0, 0, 0.5],
+ 8625: [0, 0.69224, 0, 0, 0.5],
+ 8630: [0, 0.43056, 0, 0, 1],
+ 8631: [0, 0.43056, 0, 0, 1],
+ 8634: [0.08198, 0.58198, 0, 0, 0.77778],
+ 8635: [0.08198, 0.58198, 0, 0, 0.77778],
+ 8638: [0.19444, 0.69224, 0, 0, 0.41667],
+ 8639: [0.19444, 0.69224, 0, 0, 0.41667],
+ 8642: [0.19444, 0.69224, 0, 0, 0.41667],
+ 8643: [0.19444, 0.69224, 0, 0, 0.41667],
+ 8644: [0.1808, 0.675, 0, 0, 1],
+ 8646: [0.1808, 0.675, 0, 0, 1],
+ 8647: [0.1808, 0.675, 0, 0, 1],
+ 8648: [0.19444, 0.69224, 0, 0, 0.83334],
+ 8649: [0.1808, 0.675, 0, 0, 1],
+ 8650: [0.19444, 0.69224, 0, 0, 0.83334],
+ 8651: [0.01354, 0.52239, 0, 0, 1],
+ 8652: [0.01354, 0.52239, 0, 0, 1],
+ 8653: [-0.13313, 0.36687, 0, 0, 1],
+ 8654: [-0.13313, 0.36687, 0, 0, 1],
+ 8655: [-0.13313, 0.36687, 0, 0, 1],
+ 8666: [0.13667, 0.63667, 0, 0, 1],
+ 8667: [0.13667, 0.63667, 0, 0, 1],
+ 8669: [-0.13313, 0.37788, 0, 0, 1],
+ 8672: [-0.064, 0.437, 0, 0, 1.334],
+ 8674: [-0.064, 0.437, 0, 0, 1.334],
+ 8705: [0, 0.825, 0, 0, 0.5],
+ 8708: [0, 0.68889, 0, 0, 0.55556],
+ 8709: [0.08167, 0.58167, 0, 0, 0.77778],
+ 8717: [0, 0.43056, 0, 0, 0.42917],
+ 8722: [-0.03598, 0.46402, 0, 0, 0.5],
+ 8724: [0.08198, 0.69224, 0, 0, 0.77778],
+ 8726: [0.08167, 0.58167, 0, 0, 0.77778],
+ 8733: [0, 0.69224, 0, 0, 0.77778],
+ 8736: [0, 0.69224, 0, 0, 0.72222],
+ 8737: [0, 0.69224, 0, 0, 0.72222],
+ 8738: [0.03517, 0.52239, 0, 0, 0.72222],
+ 8739: [0.08167, 0.58167, 0, 0, 0.22222],
+ 8740: [0.25142, 0.74111, 0, 0, 0.27778],
+ 8741: [0.08167, 0.58167, 0, 0, 0.38889],
+ 8742: [0.25142, 0.74111, 0, 0, 0.5],
+ 8756: [0, 0.69224, 0, 0, 0.66667],
+ 8757: [0, 0.69224, 0, 0, 0.66667],
+ 8764: [-0.13313, 0.36687, 0, 0, 0.77778],
+ 8765: [-0.13313, 0.37788, 0, 0, 0.77778],
+ 8769: [-0.13313, 0.36687, 0, 0, 0.77778],
+ 8770: [-0.03625, 0.46375, 0, 0, 0.77778],
+ 8774: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8776: [-0.01688, 0.48312, 0, 0, 0.77778],
+ 8778: [0.08167, 0.58167, 0, 0, 0.77778],
+ 8782: [0.06062, 0.54986, 0, 0, 0.77778],
+ 8783: [0.06062, 0.54986, 0, 0, 0.77778],
+ 8785: [0.08198, 0.58198, 0, 0, 0.77778],
+ 8786: [0.08198, 0.58198, 0, 0, 0.77778],
+ 8787: [0.08198, 0.58198, 0, 0, 0.77778],
+ 8790: [0, 0.69224, 0, 0, 0.77778],
+ 8791: [0.22958, 0.72958, 0, 0, 0.77778],
+ 8796: [0.08198, 0.91667, 0, 0, 0.77778],
+ 8806: [0.25583, 0.75583, 0, 0, 0.77778],
+ 8807: [0.25583, 0.75583, 0, 0, 0.77778],
+ 8808: [0.25142, 0.75726, 0, 0, 0.77778],
+ 8809: [0.25142, 0.75726, 0, 0, 0.77778],
+ 8812: [0.25583, 0.75583, 0, 0, 0.5],
+ 8814: [0.20576, 0.70576, 0, 0, 0.77778],
+ 8815: [0.20576, 0.70576, 0, 0, 0.77778],
+ 8816: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8817: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8818: [0.22958, 0.72958, 0, 0, 0.77778],
+ 8819: [0.22958, 0.72958, 0, 0, 0.77778],
+ 8822: [0.1808, 0.675, 0, 0, 0.77778],
+ 8823: [0.1808, 0.675, 0, 0, 0.77778],
+ 8828: [0.13667, 0.63667, 0, 0, 0.77778],
+ 8829: [0.13667, 0.63667, 0, 0, 0.77778],
+ 8830: [0.22958, 0.72958, 0, 0, 0.77778],
+ 8831: [0.22958, 0.72958, 0, 0, 0.77778],
+ 8832: [0.20576, 0.70576, 0, 0, 0.77778],
+ 8833: [0.20576, 0.70576, 0, 0, 0.77778],
+ 8840: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8841: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8842: [0.13597, 0.63597, 0, 0, 0.77778],
+ 8843: [0.13597, 0.63597, 0, 0, 0.77778],
+ 8847: [0.03517, 0.54986, 0, 0, 0.77778],
+ 8848: [0.03517, 0.54986, 0, 0, 0.77778],
+ 8858: [0.08198, 0.58198, 0, 0, 0.77778],
+ 8859: [0.08198, 0.58198, 0, 0, 0.77778],
+ 8861: [0.08198, 0.58198, 0, 0, 0.77778],
+ 8862: [0, 0.675, 0, 0, 0.77778],
+ 8863: [0, 0.675, 0, 0, 0.77778],
+ 8864: [0, 0.675, 0, 0, 0.77778],
+ 8865: [0, 0.675, 0, 0, 0.77778],
+ 8872: [0, 0.69224, 0, 0, 0.61111],
+ 8873: [0, 0.69224, 0, 0, 0.72222],
+ 8874: [0, 0.69224, 0, 0, 0.88889],
+ 8876: [0, 0.68889, 0, 0, 0.61111],
+ 8877: [0, 0.68889, 0, 0, 0.61111],
+ 8878: [0, 0.68889, 0, 0, 0.72222],
+ 8879: [0, 0.68889, 0, 0, 0.72222],
+ 8882: [0.03517, 0.54986, 0, 0, 0.77778],
+ 8883: [0.03517, 0.54986, 0, 0, 0.77778],
+ 8884: [0.13667, 0.63667, 0, 0, 0.77778],
+ 8885: [0.13667, 0.63667, 0, 0, 0.77778],
+ 8888: [0, 0.54986, 0, 0, 1.11111],
+ 8890: [0.19444, 0.43056, 0, 0, 0.55556],
+ 8891: [0.19444, 0.69224, 0, 0, 0.61111],
+ 8892: [0.19444, 0.69224, 0, 0, 0.61111],
+ 8901: [0, 0.54986, 0, 0, 0.27778],
+ 8903: [0.08167, 0.58167, 0, 0, 0.77778],
+ 8905: [0.08167, 0.58167, 0, 0, 0.77778],
+ 8906: [0.08167, 0.58167, 0, 0, 0.77778],
+ 8907: [0, 0.69224, 0, 0, 0.77778],
+ 8908: [0, 0.69224, 0, 0, 0.77778],
+ 8909: [-0.03598, 0.46402, 0, 0, 0.77778],
+ 8910: [0, 0.54986, 0, 0, 0.76042],
+ 8911: [0, 0.54986, 0, 0, 0.76042],
+ 8912: [0.03517, 0.54986, 0, 0, 0.77778],
+ 8913: [0.03517, 0.54986, 0, 0, 0.77778],
+ 8914: [0, 0.54986, 0, 0, 0.66667],
+ 8915: [0, 0.54986, 0, 0, 0.66667],
+ 8916: [0, 0.69224, 0, 0, 0.66667],
+ 8918: [0.0391, 0.5391, 0, 0, 0.77778],
+ 8919: [0.0391, 0.5391, 0, 0, 0.77778],
+ 8920: [0.03517, 0.54986, 0, 0, 1.33334],
+ 8921: [0.03517, 0.54986, 0, 0, 1.33334],
+ 8922: [0.38569, 0.88569, 0, 0, 0.77778],
+ 8923: [0.38569, 0.88569, 0, 0, 0.77778],
+ 8926: [0.13667, 0.63667, 0, 0, 0.77778],
+ 8927: [0.13667, 0.63667, 0, 0, 0.77778],
+ 8928: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8929: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8934: [0.23222, 0.74111, 0, 0, 0.77778],
+ 8935: [0.23222, 0.74111, 0, 0, 0.77778],
+ 8936: [0.23222, 0.74111, 0, 0, 0.77778],
+ 8937: [0.23222, 0.74111, 0, 0, 0.77778],
+ 8938: [0.20576, 0.70576, 0, 0, 0.77778],
+ 8939: [0.20576, 0.70576, 0, 0, 0.77778],
+ 8940: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8941: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8994: [0.19444, 0.69224, 0, 0, 0.77778],
+ 8995: [0.19444, 0.69224, 0, 0, 0.77778],
+ 9416: [0.15559, 0.69224, 0, 0, 0.90222],
+ 9484: [0, 0.69224, 0, 0, 0.5],
+ 9488: [0, 0.69224, 0, 0, 0.5],
+ 9492: [0, 0.37788, 0, 0, 0.5],
+ 9496: [0, 0.37788, 0, 0, 0.5],
+ 9585: [0.19444, 0.68889, 0, 0, 0.88889],
+ 9586: [0.19444, 0.74111, 0, 0, 0.88889],
+ 9632: [0, 0.675, 0, 0, 0.77778],
+ 9633: [0, 0.675, 0, 0, 0.77778],
+ 9650: [0, 0.54986, 0, 0, 0.72222],
+ 9651: [0, 0.54986, 0, 0, 0.72222],
+ 9654: [0.03517, 0.54986, 0, 0, 0.77778],
+ 9660: [0, 0.54986, 0, 0, 0.72222],
+ 9661: [0, 0.54986, 0, 0, 0.72222],
+ 9664: [0.03517, 0.54986, 0, 0, 0.77778],
+ 9674: [0.11111, 0.69224, 0, 0, 0.66667],
+ 9733: [0.19444, 0.69224, 0, 0, 0.94445],
+ 10003: [0, 0.69224, 0, 0, 0.83334],
+ 10016: [0, 0.69224, 0, 0, 0.83334],
+ 10731: [0.11111, 0.69224, 0, 0, 0.66667],
+ 10846: [0.19444, 0.75583, 0, 0, 0.61111],
+ 10877: [0.13667, 0.63667, 0, 0, 0.77778],
+ 10878: [0.13667, 0.63667, 0, 0, 0.77778],
+ 10885: [0.25583, 0.75583, 0, 0, 0.77778],
+ 10886: [0.25583, 0.75583, 0, 0, 0.77778],
+ 10887: [0.13597, 0.63597, 0, 0, 0.77778],
+ 10888: [0.13597, 0.63597, 0, 0, 0.77778],
+ 10889: [0.26167, 0.75726, 0, 0, 0.77778],
+ 10890: [0.26167, 0.75726, 0, 0, 0.77778],
+ 10891: [0.48256, 0.98256, 0, 0, 0.77778],
+ 10892: [0.48256, 0.98256, 0, 0, 0.77778],
+ 10901: [0.13667, 0.63667, 0, 0, 0.77778],
+ 10902: [0.13667, 0.63667, 0, 0, 0.77778],
+ 10933: [0.25142, 0.75726, 0, 0, 0.77778],
+ 10934: [0.25142, 0.75726, 0, 0, 0.77778],
+ 10935: [0.26167, 0.75726, 0, 0, 0.77778],
+ 10936: [0.26167, 0.75726, 0, 0, 0.77778],
+ 10937: [0.26167, 0.75726, 0, 0, 0.77778],
+ 10938: [0.26167, 0.75726, 0, 0, 0.77778],
+ 10949: [0.25583, 0.75583, 0, 0, 0.77778],
+ 10950: [0.25583, 0.75583, 0, 0, 0.77778],
+ 10955: [0.28481, 0.79383, 0, 0, 0.77778],
+ 10956: [0.28481, 0.79383, 0, 0, 0.77778],
+ 57350: [0.08167, 0.58167, 0, 0, 0.22222],
+ 57351: [0.08167, 0.58167, 0, 0, 0.38889],
+ 57352: [0.08167, 0.58167, 0, 0, 0.77778],
+ 57353: [0, 0.43056, 0.04028, 0, 0.66667],
+ 57356: [0.25142, 0.75726, 0, 0, 0.77778],
+ 57357: [0.25142, 0.75726, 0, 0, 0.77778],
+ 57358: [0.41951, 0.91951, 0, 0, 0.77778],
+ 57359: [0.30274, 0.79383, 0, 0, 0.77778],
+ 57360: [0.30274, 0.79383, 0, 0, 0.77778],
+ 57361: [0.41951, 0.91951, 0, 0, 0.77778],
+ 57366: [0.25142, 0.75726, 0, 0, 0.77778],
+ 57367: [0.25142, 0.75726, 0, 0, 0.77778],
+ 57368: [0.25142, 0.75726, 0, 0, 0.77778],
+ 57369: [0.25142, 0.75726, 0, 0, 0.77778],
+ 57370: [0.13597, 0.63597, 0, 0, 0.77778],
+ 57371: [0.13597, 0.63597, 0, 0, 0.77778],
+ },
+ "Caligraphic-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 65: [0, 0.68333, 0, 0.19445, 0.79847],
+ 66: [0, 0.68333, 0.03041, 0.13889, 0.65681],
+ 67: [0, 0.68333, 0.05834, 0.13889, 0.52653],
+ 68: [0, 0.68333, 0.02778, 0.08334, 0.77139],
+ 69: [0, 0.68333, 0.08944, 0.11111, 0.52778],
+ 70: [0, 0.68333, 0.09931, 0.11111, 0.71875],
+ 71: [0.09722, 0.68333, 0.0593, 0.11111, 0.59487],
+ 72: [0, 0.68333, 0.00965, 0.11111, 0.84452],
+ 73: [0, 0.68333, 0.07382, 0, 0.54452],
+ 74: [0.09722, 0.68333, 0.18472, 0.16667, 0.67778],
+ 75: [0, 0.68333, 0.01445, 0.05556, 0.76195],
+ 76: [0, 0.68333, 0, 0.13889, 0.68972],
+ 77: [0, 0.68333, 0, 0.13889, 1.2009],
+ 78: [0, 0.68333, 0.14736, 0.08334, 0.82049],
+ 79: [0, 0.68333, 0.02778, 0.11111, 0.79611],
+ 80: [0, 0.68333, 0.08222, 0.08334, 0.69556],
+ 81: [0.09722, 0.68333, 0, 0.11111, 0.81667],
+ 82: [0, 0.68333, 0, 0.08334, 0.8475],
+ 83: [0, 0.68333, 0.075, 0.13889, 0.60556],
+ 84: [0, 0.68333, 0.25417, 0, 0.54464],
+ 85: [0, 0.68333, 0.09931, 0.08334, 0.62583],
+ 86: [0, 0.68333, 0.08222, 0, 0.61278],
+ 87: [0, 0.68333, 0.08222, 0.08334, 0.98778],
+ 88: [0, 0.68333, 0.14643, 0.13889, 0.7133],
+ 89: [0.09722, 0.68333, 0.08222, 0.08334, 0.66834],
+ 90: [0, 0.68333, 0.07944, 0.13889, 0.72473],
+ 160: [0, 0, 0, 0, 0.25],
+ },
+ "Fraktur-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 33: [0, 0.69141, 0, 0, 0.29574],
+ 34: [0, 0.69141, 0, 0, 0.21471],
+ 38: [0, 0.69141, 0, 0, 0.73786],
+ 39: [0, 0.69141, 0, 0, 0.21201],
+ 40: [0.24982, 0.74947, 0, 0, 0.38865],
+ 41: [0.24982, 0.74947, 0, 0, 0.38865],
+ 42: [0, 0.62119, 0, 0, 0.27764],
+ 43: [0.08319, 0.58283, 0, 0, 0.75623],
+ 44: [0, 0.10803, 0, 0, 0.27764],
+ 45: [0.08319, 0.58283, 0, 0, 0.75623],
+ 46: [0, 0.10803, 0, 0, 0.27764],
+ 47: [0.24982, 0.74947, 0, 0, 0.50181],
+ 48: [0, 0.47534, 0, 0, 0.50181],
+ 49: [0, 0.47534, 0, 0, 0.50181],
+ 50: [0, 0.47534, 0, 0, 0.50181],
+ 51: [0.18906, 0.47534, 0, 0, 0.50181],
+ 52: [0.18906, 0.47534, 0, 0, 0.50181],
+ 53: [0.18906, 0.47534, 0, 0, 0.50181],
+ 54: [0, 0.69141, 0, 0, 0.50181],
+ 55: [0.18906, 0.47534, 0, 0, 0.50181],
+ 56: [0, 0.69141, 0, 0, 0.50181],
+ 57: [0.18906, 0.47534, 0, 0, 0.50181],
+ 58: [0, 0.47534, 0, 0, 0.21606],
+ 59: [0.12604, 0.47534, 0, 0, 0.21606],
+ 61: [-0.13099, 0.36866, 0, 0, 0.75623],
+ 63: [0, 0.69141, 0, 0, 0.36245],
+ 65: [0, 0.69141, 0, 0, 0.7176],
+ 66: [0, 0.69141, 0, 0, 0.88397],
+ 67: [0, 0.69141, 0, 0, 0.61254],
+ 68: [0, 0.69141, 0, 0, 0.83158],
+ 69: [0, 0.69141, 0, 0, 0.66278],
+ 70: [0.12604, 0.69141, 0, 0, 0.61119],
+ 71: [0, 0.69141, 0, 0, 0.78539],
+ 72: [0.06302, 0.69141, 0, 0, 0.7203],
+ 73: [0, 0.69141, 0, 0, 0.55448],
+ 74: [0.12604, 0.69141, 0, 0, 0.55231],
+ 75: [0, 0.69141, 0, 0, 0.66845],
+ 76: [0, 0.69141, 0, 0, 0.66602],
+ 77: [0, 0.69141, 0, 0, 1.04953],
+ 78: [0, 0.69141, 0, 0, 0.83212],
+ 79: [0, 0.69141, 0, 0, 0.82699],
+ 80: [0.18906, 0.69141, 0, 0, 0.82753],
+ 81: [0.03781, 0.69141, 0, 0, 0.82699],
+ 82: [0, 0.69141, 0, 0, 0.82807],
+ 83: [0, 0.69141, 0, 0, 0.82861],
+ 84: [0, 0.69141, 0, 0, 0.66899],
+ 85: [0, 0.69141, 0, 0, 0.64576],
+ 86: [0, 0.69141, 0, 0, 0.83131],
+ 87: [0, 0.69141, 0, 0, 1.04602],
+ 88: [0, 0.69141, 0, 0, 0.71922],
+ 89: [0.18906, 0.69141, 0, 0, 0.83293],
+ 90: [0.12604, 0.69141, 0, 0, 0.60201],
+ 91: [0.24982, 0.74947, 0, 0, 0.27764],
+ 93: [0.24982, 0.74947, 0, 0, 0.27764],
+ 94: [0, 0.69141, 0, 0, 0.49965],
+ 97: [0, 0.47534, 0, 0, 0.50046],
+ 98: [0, 0.69141, 0, 0, 0.51315],
+ 99: [0, 0.47534, 0, 0, 0.38946],
+ 100: [0, 0.62119, 0, 0, 0.49857],
+ 101: [0, 0.47534, 0, 0, 0.40053],
+ 102: [0.18906, 0.69141, 0, 0, 0.32626],
+ 103: [0.18906, 0.47534, 0, 0, 0.5037],
+ 104: [0.18906, 0.69141, 0, 0, 0.52126],
+ 105: [0, 0.69141, 0, 0, 0.27899],
+ 106: [0, 0.69141, 0, 0, 0.28088],
+ 107: [0, 0.69141, 0, 0, 0.38946],
+ 108: [0, 0.69141, 0, 0, 0.27953],
+ 109: [0, 0.47534, 0, 0, 0.76676],
+ 110: [0, 0.47534, 0, 0, 0.52666],
+ 111: [0, 0.47534, 0, 0, 0.48885],
+ 112: [0.18906, 0.52396, 0, 0, 0.50046],
+ 113: [0.18906, 0.47534, 0, 0, 0.48912],
+ 114: [0, 0.47534, 0, 0, 0.38919],
+ 115: [0, 0.47534, 0, 0, 0.44266],
+ 116: [0, 0.62119, 0, 0, 0.33301],
+ 117: [0, 0.47534, 0, 0, 0.5172],
+ 118: [0, 0.52396, 0, 0, 0.5118],
+ 119: [0, 0.52396, 0, 0, 0.77351],
+ 120: [0.18906, 0.47534, 0, 0, 0.38865],
+ 121: [0.18906, 0.47534, 0, 0, 0.49884],
+ 122: [0.18906, 0.47534, 0, 0, 0.39054],
+ 160: [0, 0, 0, 0, 0.25],
+ 8216: [0, 0.69141, 0, 0, 0.21471],
+ 8217: [0, 0.69141, 0, 0, 0.21471],
+ 58112: [0, 0.62119, 0, 0, 0.49749],
+ 58113: [0, 0.62119, 0, 0, 0.4983],
+ 58114: [0.18906, 0.69141, 0, 0, 0.33328],
+ 58115: [0.18906, 0.69141, 0, 0, 0.32923],
+ 58116: [0.18906, 0.47534, 0, 0, 0.50343],
+ 58117: [0, 0.69141, 0, 0, 0.33301],
+ 58118: [0, 0.62119, 0, 0, 0.33409],
+ 58119: [0, 0.47534, 0, 0, 0.50073],
+ },
+ "Main-Bold": {
+ 32: [0, 0, 0, 0, 0.25],
+ 33: [0, 0.69444, 0, 0, 0.35],
+ 34: [0, 0.69444, 0, 0, 0.60278],
+ 35: [0.19444, 0.69444, 0, 0, 0.95833],
+ 36: [0.05556, 0.75, 0, 0, 0.575],
+ 37: [0.05556, 0.75, 0, 0, 0.95833],
+ 38: [0, 0.69444, 0, 0, 0.89444],
+ 39: [0, 0.69444, 0, 0, 0.31944],
+ 40: [0.25, 0.75, 0, 0, 0.44722],
+ 41: [0.25, 0.75, 0, 0, 0.44722],
+ 42: [0, 0.75, 0, 0, 0.575],
+ 43: [0.13333, 0.63333, 0, 0, 0.89444],
+ 44: [0.19444, 0.15556, 0, 0, 0.31944],
+ 45: [0, 0.44444, 0, 0, 0.38333],
+ 46: [0, 0.15556, 0, 0, 0.31944],
+ 47: [0.25, 0.75, 0, 0, 0.575],
+ 48: [0, 0.64444, 0, 0, 0.575],
+ 49: [0, 0.64444, 0, 0, 0.575],
+ 50: [0, 0.64444, 0, 0, 0.575],
+ 51: [0, 0.64444, 0, 0, 0.575],
+ 52: [0, 0.64444, 0, 0, 0.575],
+ 53: [0, 0.64444, 0, 0, 0.575],
+ 54: [0, 0.64444, 0, 0, 0.575],
+ 55: [0, 0.64444, 0, 0, 0.575],
+ 56: [0, 0.64444, 0, 0, 0.575],
+ 57: [0, 0.64444, 0, 0, 0.575],
+ 58: [0, 0.44444, 0, 0, 0.31944],
+ 59: [0.19444, 0.44444, 0, 0, 0.31944],
+ 60: [0.08556, 0.58556, 0, 0, 0.89444],
+ 61: [-0.10889, 0.39111, 0, 0, 0.89444],
+ 62: [0.08556, 0.58556, 0, 0, 0.89444],
+ 63: [0, 0.69444, 0, 0, 0.54305],
+ 64: [0, 0.69444, 0, 0, 0.89444],
+ 65: [0, 0.68611, 0, 0, 0.86944],
+ 66: [0, 0.68611, 0, 0, 0.81805],
+ 67: [0, 0.68611, 0, 0, 0.83055],
+ 68: [0, 0.68611, 0, 0, 0.88194],
+ 69: [0, 0.68611, 0, 0, 0.75555],
+ 70: [0, 0.68611, 0, 0, 0.72361],
+ 71: [0, 0.68611, 0, 0, 0.90416],
+ 72: [0, 0.68611, 0, 0, 0.9],
+ 73: [0, 0.68611, 0, 0, 0.43611],
+ 74: [0, 0.68611, 0, 0, 0.59444],
+ 75: [0, 0.68611, 0, 0, 0.90138],
+ 76: [0, 0.68611, 0, 0, 0.69166],
+ 77: [0, 0.68611, 0, 0, 1.09166],
+ 78: [0, 0.68611, 0, 0, 0.9],
+ 79: [0, 0.68611, 0, 0, 0.86388],
+ 80: [0, 0.68611, 0, 0, 0.78611],
+ 81: [0.19444, 0.68611, 0, 0, 0.86388],
+ 82: [0, 0.68611, 0, 0, 0.8625],
+ 83: [0, 0.68611, 0, 0, 0.63889],
+ 84: [0, 0.68611, 0, 0, 0.8],
+ 85: [0, 0.68611, 0, 0, 0.88472],
+ 86: [0, 0.68611, 0.01597, 0, 0.86944],
+ 87: [0, 0.68611, 0.01597, 0, 1.18888],
+ 88: [0, 0.68611, 0, 0, 0.86944],
+ 89: [0, 0.68611, 0.02875, 0, 0.86944],
+ 90: [0, 0.68611, 0, 0, 0.70277],
+ 91: [0.25, 0.75, 0, 0, 0.31944],
+ 92: [0.25, 0.75, 0, 0, 0.575],
+ 93: [0.25, 0.75, 0, 0, 0.31944],
+ 94: [0, 0.69444, 0, 0, 0.575],
+ 95: [0.31, 0.13444, 0.03194, 0, 0.575],
+ 97: [0, 0.44444, 0, 0, 0.55902],
+ 98: [0, 0.69444, 0, 0, 0.63889],
+ 99: [0, 0.44444, 0, 0, 0.51111],
+ 100: [0, 0.69444, 0, 0, 0.63889],
+ 101: [0, 0.44444, 0, 0, 0.52708],
+ 102: [0, 0.69444, 0.10903, 0, 0.35139],
+ 103: [0.19444, 0.44444, 0.01597, 0, 0.575],
+ 104: [0, 0.69444, 0, 0, 0.63889],
+ 105: [0, 0.69444, 0, 0, 0.31944],
+ 106: [0.19444, 0.69444, 0, 0, 0.35139],
+ 107: [0, 0.69444, 0, 0, 0.60694],
+ 108: [0, 0.69444, 0, 0, 0.31944],
+ 109: [0, 0.44444, 0, 0, 0.95833],
+ 110: [0, 0.44444, 0, 0, 0.63889],
+ 111: [0, 0.44444, 0, 0, 0.575],
+ 112: [0.19444, 0.44444, 0, 0, 0.63889],
+ 113: [0.19444, 0.44444, 0, 0, 0.60694],
+ 114: [0, 0.44444, 0, 0, 0.47361],
+ 115: [0, 0.44444, 0, 0, 0.45361],
+ 116: [0, 0.63492, 0, 0, 0.44722],
+ 117: [0, 0.44444, 0, 0, 0.63889],
+ 118: [0, 0.44444, 0.01597, 0, 0.60694],
+ 119: [0, 0.44444, 0.01597, 0, 0.83055],
+ 120: [0, 0.44444, 0, 0, 0.60694],
+ 121: [0.19444, 0.44444, 0.01597, 0, 0.60694],
+ 122: [0, 0.44444, 0, 0, 0.51111],
+ 123: [0.25, 0.75, 0, 0, 0.575],
+ 124: [0.25, 0.75, 0, 0, 0.31944],
+ 125: [0.25, 0.75, 0, 0, 0.575],
+ 126: [0.35, 0.34444, 0, 0, 0.575],
+ 160: [0, 0, 0, 0, 0.25],
+ 163: [0, 0.69444, 0, 0, 0.86853],
+ 168: [0, 0.69444, 0, 0, 0.575],
+ 172: [0, 0.44444, 0, 0, 0.76666],
+ 176: [0, 0.69444, 0, 0, 0.86944],
+ 177: [0.13333, 0.63333, 0, 0, 0.89444],
+ 184: [0.17014, 0, 0, 0, 0.51111],
+ 198: [0, 0.68611, 0, 0, 1.04166],
+ 215: [0.13333, 0.63333, 0, 0, 0.89444],
+ 216: [0.04861, 0.73472, 0, 0, 0.89444],
+ 223: [0, 0.69444, 0, 0, 0.59722],
+ 230: [0, 0.44444, 0, 0, 0.83055],
+ 247: [0.13333, 0.63333, 0, 0, 0.89444],
+ 248: [0.09722, 0.54167, 0, 0, 0.575],
+ 305: [0, 0.44444, 0, 0, 0.31944],
+ 338: [0, 0.68611, 0, 0, 1.16944],
+ 339: [0, 0.44444, 0, 0, 0.89444],
+ 567: [0.19444, 0.44444, 0, 0, 0.35139],
+ 710: [0, 0.69444, 0, 0, 0.575],
+ 711: [0, 0.63194, 0, 0, 0.575],
+ 713: [0, 0.59611, 0, 0, 0.575],
+ 714: [0, 0.69444, 0, 0, 0.575],
+ 715: [0, 0.69444, 0, 0, 0.575],
+ 728: [0, 0.69444, 0, 0, 0.575],
+ 729: [0, 0.69444, 0, 0, 0.31944],
+ 730: [0, 0.69444, 0, 0, 0.86944],
+ 732: [0, 0.69444, 0, 0, 0.575],
+ 733: [0, 0.69444, 0, 0, 0.575],
+ 915: [0, 0.68611, 0, 0, 0.69166],
+ 916: [0, 0.68611, 0, 0, 0.95833],
+ 920: [0, 0.68611, 0, 0, 0.89444],
+ 923: [0, 0.68611, 0, 0, 0.80555],
+ 926: [0, 0.68611, 0, 0, 0.76666],
+ 928: [0, 0.68611, 0, 0, 0.9],
+ 931: [0, 0.68611, 0, 0, 0.83055],
+ 933: [0, 0.68611, 0, 0, 0.89444],
+ 934: [0, 0.68611, 0, 0, 0.83055],
+ 936: [0, 0.68611, 0, 0, 0.89444],
+ 937: [0, 0.68611, 0, 0, 0.83055],
+ 8211: [0, 0.44444, 0.03194, 0, 0.575],
+ 8212: [0, 0.44444, 0.03194, 0, 1.14999],
+ 8216: [0, 0.69444, 0, 0, 0.31944],
+ 8217: [0, 0.69444, 0, 0, 0.31944],
+ 8220: [0, 0.69444, 0, 0, 0.60278],
+ 8221: [0, 0.69444, 0, 0, 0.60278],
+ 8224: [0.19444, 0.69444, 0, 0, 0.51111],
+ 8225: [0.19444, 0.69444, 0, 0, 0.51111],
+ 8242: [0, 0.55556, 0, 0, 0.34444],
+ 8407: [0, 0.72444, 0.15486, 0, 0.575],
+ 8463: [0, 0.69444, 0, 0, 0.66759],
+ 8465: [0, 0.69444, 0, 0, 0.83055],
+ 8467: [0, 0.69444, 0, 0, 0.47361],
+ 8472: [0.19444, 0.44444, 0, 0, 0.74027],
+ 8476: [0, 0.69444, 0, 0, 0.83055],
+ 8501: [0, 0.69444, 0, 0, 0.70277],
+ 8592: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8593: [0.19444, 0.69444, 0, 0, 0.575],
+ 8594: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8595: [0.19444, 0.69444, 0, 0, 0.575],
+ 8596: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8597: [0.25, 0.75, 0, 0, 0.575],
+ 8598: [0.19444, 0.69444, 0, 0, 1.14999],
+ 8599: [0.19444, 0.69444, 0, 0, 1.14999],
+ 8600: [0.19444, 0.69444, 0, 0, 1.14999],
+ 8601: [0.19444, 0.69444, 0, 0, 1.14999],
+ 8636: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8637: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8640: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8641: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8656: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8657: [0.19444, 0.69444, 0, 0, 0.70277],
+ 8658: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8659: [0.19444, 0.69444, 0, 0, 0.70277],
+ 8660: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8661: [0.25, 0.75, 0, 0, 0.70277],
+ 8704: [0, 0.69444, 0, 0, 0.63889],
+ 8706: [0, 0.69444, 0.06389, 0, 0.62847],
+ 8707: [0, 0.69444, 0, 0, 0.63889],
+ 8709: [0.05556, 0.75, 0, 0, 0.575],
+ 8711: [0, 0.68611, 0, 0, 0.95833],
+ 8712: [0.08556, 0.58556, 0, 0, 0.76666],
+ 8715: [0.08556, 0.58556, 0, 0, 0.76666],
+ 8722: [0.13333, 0.63333, 0, 0, 0.89444],
+ 8723: [0.13333, 0.63333, 0, 0, 0.89444],
+ 8725: [0.25, 0.75, 0, 0, 0.575],
+ 8726: [0.25, 0.75, 0, 0, 0.575],
+ 8727: [-0.02778, 0.47222, 0, 0, 0.575],
+ 8728: [-0.02639, 0.47361, 0, 0, 0.575],
+ 8729: [-0.02639, 0.47361, 0, 0, 0.575],
+ 8730: [0.18, 0.82, 0, 0, 0.95833],
+ 8733: [0, 0.44444, 0, 0, 0.89444],
+ 8734: [0, 0.44444, 0, 0, 1.14999],
+ 8736: [0, 0.69224, 0, 0, 0.72222],
+ 8739: [0.25, 0.75, 0, 0, 0.31944],
+ 8741: [0.25, 0.75, 0, 0, 0.575],
+ 8743: [0, 0.55556, 0, 0, 0.76666],
+ 8744: [0, 0.55556, 0, 0, 0.76666],
+ 8745: [0, 0.55556, 0, 0, 0.76666],
+ 8746: [0, 0.55556, 0, 0, 0.76666],
+ 8747: [0.19444, 0.69444, 0.12778, 0, 0.56875],
+ 8764: [-0.10889, 0.39111, 0, 0, 0.89444],
+ 8768: [0.19444, 0.69444, 0, 0, 0.31944],
+ 8771: [0.00222, 0.50222, 0, 0, 0.89444],
+ 8773: [0.027, 0.638, 0, 0, 0.894],
+ 8776: [0.02444, 0.52444, 0, 0, 0.89444],
+ 8781: [0.00222, 0.50222, 0, 0, 0.89444],
+ 8801: [0.00222, 0.50222, 0, 0, 0.89444],
+ 8804: [0.19667, 0.69667, 0, 0, 0.89444],
+ 8805: [0.19667, 0.69667, 0, 0, 0.89444],
+ 8810: [0.08556, 0.58556, 0, 0, 1.14999],
+ 8811: [0.08556, 0.58556, 0, 0, 1.14999],
+ 8826: [0.08556, 0.58556, 0, 0, 0.89444],
+ 8827: [0.08556, 0.58556, 0, 0, 0.89444],
+ 8834: [0.08556, 0.58556, 0, 0, 0.89444],
+ 8835: [0.08556, 0.58556, 0, 0, 0.89444],
+ 8838: [0.19667, 0.69667, 0, 0, 0.89444],
+ 8839: [0.19667, 0.69667, 0, 0, 0.89444],
+ 8846: [0, 0.55556, 0, 0, 0.76666],
+ 8849: [0.19667, 0.69667, 0, 0, 0.89444],
+ 8850: [0.19667, 0.69667, 0, 0, 0.89444],
+ 8851: [0, 0.55556, 0, 0, 0.76666],
+ 8852: [0, 0.55556, 0, 0, 0.76666],
+ 8853: [0.13333, 0.63333, 0, 0, 0.89444],
+ 8854: [0.13333, 0.63333, 0, 0, 0.89444],
+ 8855: [0.13333, 0.63333, 0, 0, 0.89444],
+ 8856: [0.13333, 0.63333, 0, 0, 0.89444],
+ 8857: [0.13333, 0.63333, 0, 0, 0.89444],
+ 8866: [0, 0.69444, 0, 0, 0.70277],
+ 8867: [0, 0.69444, 0, 0, 0.70277],
+ 8868: [0, 0.69444, 0, 0, 0.89444],
+ 8869: [0, 0.69444, 0, 0, 0.89444],
+ 8900: [-0.02639, 0.47361, 0, 0, 0.575],
+ 8901: [-0.02639, 0.47361, 0, 0, 0.31944],
+ 8902: [-0.02778, 0.47222, 0, 0, 0.575],
+ 8968: [0.25, 0.75, 0, 0, 0.51111],
+ 8969: [0.25, 0.75, 0, 0, 0.51111],
+ 8970: [0.25, 0.75, 0, 0, 0.51111],
+ 8971: [0.25, 0.75, 0, 0, 0.51111],
+ 8994: [-0.13889, 0.36111, 0, 0, 1.14999],
+ 8995: [-0.13889, 0.36111, 0, 0, 1.14999],
+ 9651: [0.19444, 0.69444, 0, 0, 1.02222],
+ 9657: [-0.02778, 0.47222, 0, 0, 0.575],
+ 9661: [0.19444, 0.69444, 0, 0, 1.02222],
+ 9667: [-0.02778, 0.47222, 0, 0, 0.575],
+ 9711: [0.19444, 0.69444, 0, 0, 1.14999],
+ 9824: [0.12963, 0.69444, 0, 0, 0.89444],
+ 9825: [0.12963, 0.69444, 0, 0, 0.89444],
+ 9826: [0.12963, 0.69444, 0, 0, 0.89444],
+ 9827: [0.12963, 0.69444, 0, 0, 0.89444],
+ 9837: [0, 0.75, 0, 0, 0.44722],
+ 9838: [0.19444, 0.69444, 0, 0, 0.44722],
+ 9839: [0.19444, 0.69444, 0, 0, 0.44722],
+ 10216: [0.25, 0.75, 0, 0, 0.44722],
+ 10217: [0.25, 0.75, 0, 0, 0.44722],
+ 10815: [0, 0.68611, 0, 0, 0.9],
+ 10927: [0.19667, 0.69667, 0, 0, 0.89444],
+ 10928: [0.19667, 0.69667, 0, 0, 0.89444],
+ 57376: [0.19444, 0.69444, 0, 0, 0],
+ },
+ "Main-BoldItalic": {
+ 32: [0, 0, 0, 0, 0.25],
+ 33: [0, 0.69444, 0.11417, 0, 0.38611],
+ 34: [0, 0.69444, 0.07939, 0, 0.62055],
+ 35: [0.19444, 0.69444, 0.06833, 0, 0.94444],
+ 37: [0.05556, 0.75, 0.12861, 0, 0.94444],
+ 38: [0, 0.69444, 0.08528, 0, 0.88555],
+ 39: [0, 0.69444, 0.12945, 0, 0.35555],
+ 40: [0.25, 0.75, 0.15806, 0, 0.47333],
+ 41: [0.25, 0.75, 0.03306, 0, 0.47333],
+ 42: [0, 0.75, 0.14333, 0, 0.59111],
+ 43: [0.10333, 0.60333, 0.03306, 0, 0.88555],
+ 44: [0.19444, 0.14722, 0, 0, 0.35555],
+ 45: [0, 0.44444, 0.02611, 0, 0.41444],
+ 46: [0, 0.14722, 0, 0, 0.35555],
+ 47: [0.25, 0.75, 0.15806, 0, 0.59111],
+ 48: [0, 0.64444, 0.13167, 0, 0.59111],
+ 49: [0, 0.64444, 0.13167, 0, 0.59111],
+ 50: [0, 0.64444, 0.13167, 0, 0.59111],
+ 51: [0, 0.64444, 0.13167, 0, 0.59111],
+ 52: [0.19444, 0.64444, 0.13167, 0, 0.59111],
+ 53: [0, 0.64444, 0.13167, 0, 0.59111],
+ 54: [0, 0.64444, 0.13167, 0, 0.59111],
+ 55: [0.19444, 0.64444, 0.13167, 0, 0.59111],
+ 56: [0, 0.64444, 0.13167, 0, 0.59111],
+ 57: [0, 0.64444, 0.13167, 0, 0.59111],
+ 58: [0, 0.44444, 0.06695, 0, 0.35555],
+ 59: [0.19444, 0.44444, 0.06695, 0, 0.35555],
+ 61: [-0.10889, 0.39111, 0.06833, 0, 0.88555],
+ 63: [0, 0.69444, 0.11472, 0, 0.59111],
+ 64: [0, 0.69444, 0.09208, 0, 0.88555],
+ 65: [0, 0.68611, 0, 0, 0.86555],
+ 66: [0, 0.68611, 0.0992, 0, 0.81666],
+ 67: [0, 0.68611, 0.14208, 0, 0.82666],
+ 68: [0, 0.68611, 0.09062, 0, 0.87555],
+ 69: [0, 0.68611, 0.11431, 0, 0.75666],
+ 70: [0, 0.68611, 0.12903, 0, 0.72722],
+ 71: [0, 0.68611, 0.07347, 0, 0.89527],
+ 72: [0, 0.68611, 0.17208, 0, 0.8961],
+ 73: [0, 0.68611, 0.15681, 0, 0.47166],
+ 74: [0, 0.68611, 0.145, 0, 0.61055],
+ 75: [0, 0.68611, 0.14208, 0, 0.89499],
+ 76: [0, 0.68611, 0, 0, 0.69777],
+ 77: [0, 0.68611, 0.17208, 0, 1.07277],
+ 78: [0, 0.68611, 0.17208, 0, 0.8961],
+ 79: [0, 0.68611, 0.09062, 0, 0.85499],
+ 80: [0, 0.68611, 0.0992, 0, 0.78721],
+ 81: [0.19444, 0.68611, 0.09062, 0, 0.85499],
+ 82: [0, 0.68611, 0.02559, 0, 0.85944],
+ 83: [0, 0.68611, 0.11264, 0, 0.64999],
+ 84: [0, 0.68611, 0.12903, 0, 0.7961],
+ 85: [0, 0.68611, 0.17208, 0, 0.88083],
+ 86: [0, 0.68611, 0.18625, 0, 0.86555],
+ 87: [0, 0.68611, 0.18625, 0, 1.15999],
+ 88: [0, 0.68611, 0.15681, 0, 0.86555],
+ 89: [0, 0.68611, 0.19803, 0, 0.86555],
+ 90: [0, 0.68611, 0.14208, 0, 0.70888],
+ 91: [0.25, 0.75, 0.1875, 0, 0.35611],
+ 93: [0.25, 0.75, 0.09972, 0, 0.35611],
+ 94: [0, 0.69444, 0.06709, 0, 0.59111],
+ 95: [0.31, 0.13444, 0.09811, 0, 0.59111],
+ 97: [0, 0.44444, 0.09426, 0, 0.59111],
+ 98: [0, 0.69444, 0.07861, 0, 0.53222],
+ 99: [0, 0.44444, 0.05222, 0, 0.53222],
+ 100: [0, 0.69444, 0.10861, 0, 0.59111],
+ 101: [0, 0.44444, 0.085, 0, 0.53222],
+ 102: [0.19444, 0.69444, 0.21778, 0, 0.4],
+ 103: [0.19444, 0.44444, 0.105, 0, 0.53222],
+ 104: [0, 0.69444, 0.09426, 0, 0.59111],
+ 105: [0, 0.69326, 0.11387, 0, 0.35555],
+ 106: [0.19444, 0.69326, 0.1672, 0, 0.35555],
+ 107: [0, 0.69444, 0.11111, 0, 0.53222],
+ 108: [0, 0.69444, 0.10861, 0, 0.29666],
+ 109: [0, 0.44444, 0.09426, 0, 0.94444],
+ 110: [0, 0.44444, 0.09426, 0, 0.64999],
+ 111: [0, 0.44444, 0.07861, 0, 0.59111],
+ 112: [0.19444, 0.44444, 0.07861, 0, 0.59111],
+ 113: [0.19444, 0.44444, 0.105, 0, 0.53222],
+ 114: [0, 0.44444, 0.11111, 0, 0.50167],
+ 115: [0, 0.44444, 0.08167, 0, 0.48694],
+ 116: [0, 0.63492, 0.09639, 0, 0.385],
+ 117: [0, 0.44444, 0.09426, 0, 0.62055],
+ 118: [0, 0.44444, 0.11111, 0, 0.53222],
+ 119: [0, 0.44444, 0.11111, 0, 0.76777],
+ 120: [0, 0.44444, 0.12583, 0, 0.56055],
+ 121: [0.19444, 0.44444, 0.105, 0, 0.56166],
+ 122: [0, 0.44444, 0.13889, 0, 0.49055],
+ 126: [0.35, 0.34444, 0.11472, 0, 0.59111],
+ 160: [0, 0, 0, 0, 0.25],
+ 168: [0, 0.69444, 0.11473, 0, 0.59111],
+ 176: [0, 0.69444, 0, 0, 0.94888],
+ 184: [0.17014, 0, 0, 0, 0.53222],
+ 198: [0, 0.68611, 0.11431, 0, 1.02277],
+ 216: [0.04861, 0.73472, 0.09062, 0, 0.88555],
+ 223: [0.19444, 0.69444, 0.09736, 0, 0.665],
+ 230: [0, 0.44444, 0.085, 0, 0.82666],
+ 248: [0.09722, 0.54167, 0.09458, 0, 0.59111],
+ 305: [0, 0.44444, 0.09426, 0, 0.35555],
+ 338: [0, 0.68611, 0.11431, 0, 1.14054],
+ 339: [0, 0.44444, 0.085, 0, 0.82666],
+ 567: [0.19444, 0.44444, 0.04611, 0, 0.385],
+ 710: [0, 0.69444, 0.06709, 0, 0.59111],
+ 711: [0, 0.63194, 0.08271, 0, 0.59111],
+ 713: [0, 0.59444, 0.10444, 0, 0.59111],
+ 714: [0, 0.69444, 0.08528, 0, 0.59111],
+ 715: [0, 0.69444, 0, 0, 0.59111],
+ 728: [0, 0.69444, 0.10333, 0, 0.59111],
+ 729: [0, 0.69444, 0.12945, 0, 0.35555],
+ 730: [0, 0.69444, 0, 0, 0.94888],
+ 732: [0, 0.69444, 0.11472, 0, 0.59111],
+ 733: [0, 0.69444, 0.11472, 0, 0.59111],
+ 915: [0, 0.68611, 0.12903, 0, 0.69777],
+ 916: [0, 0.68611, 0, 0, 0.94444],
+ 920: [0, 0.68611, 0.09062, 0, 0.88555],
+ 923: [0, 0.68611, 0, 0, 0.80666],
+ 926: [0, 0.68611, 0.15092, 0, 0.76777],
+ 928: [0, 0.68611, 0.17208, 0, 0.8961],
+ 931: [0, 0.68611, 0.11431, 0, 0.82666],
+ 933: [0, 0.68611, 0.10778, 0, 0.88555],
+ 934: [0, 0.68611, 0.05632, 0, 0.82666],
+ 936: [0, 0.68611, 0.10778, 0, 0.88555],
+ 937: [0, 0.68611, 0.0992, 0, 0.82666],
+ 8211: [0, 0.44444, 0.09811, 0, 0.59111],
+ 8212: [0, 0.44444, 0.09811, 0, 1.18221],
+ 8216: [0, 0.69444, 0.12945, 0, 0.35555],
+ 8217: [0, 0.69444, 0.12945, 0, 0.35555],
+ 8220: [0, 0.69444, 0.16772, 0, 0.62055],
+ 8221: [0, 0.69444, 0.07939, 0, 0.62055],
+ },
+ "Main-Italic": {
+ 32: [0, 0, 0, 0, 0.25],
+ 33: [0, 0.69444, 0.12417, 0, 0.30667],
+ 34: [0, 0.69444, 0.06961, 0, 0.51444],
+ 35: [0.19444, 0.69444, 0.06616, 0, 0.81777],
+ 37: [0.05556, 0.75, 0.13639, 0, 0.81777],
+ 38: [0, 0.69444, 0.09694, 0, 0.76666],
+ 39: [0, 0.69444, 0.12417, 0, 0.30667],
+ 40: [0.25, 0.75, 0.16194, 0, 0.40889],
+ 41: [0.25, 0.75, 0.03694, 0, 0.40889],
+ 42: [0, 0.75, 0.14917, 0, 0.51111],
+ 43: [0.05667, 0.56167, 0.03694, 0, 0.76666],
+ 44: [0.19444, 0.10556, 0, 0, 0.30667],
+ 45: [0, 0.43056, 0.02826, 0, 0.35778],
+ 46: [0, 0.10556, 0, 0, 0.30667],
+ 47: [0.25, 0.75, 0.16194, 0, 0.51111],
+ 48: [0, 0.64444, 0.13556, 0, 0.51111],
+ 49: [0, 0.64444, 0.13556, 0, 0.51111],
+ 50: [0, 0.64444, 0.13556, 0, 0.51111],
+ 51: [0, 0.64444, 0.13556, 0, 0.51111],
+ 52: [0.19444, 0.64444, 0.13556, 0, 0.51111],
+ 53: [0, 0.64444, 0.13556, 0, 0.51111],
+ 54: [0, 0.64444, 0.13556, 0, 0.51111],
+ 55: [0.19444, 0.64444, 0.13556, 0, 0.51111],
+ 56: [0, 0.64444, 0.13556, 0, 0.51111],
+ 57: [0, 0.64444, 0.13556, 0, 0.51111],
+ 58: [0, 0.43056, 0.0582, 0, 0.30667],
+ 59: [0.19444, 0.43056, 0.0582, 0, 0.30667],
+ 61: [-0.13313, 0.36687, 0.06616, 0, 0.76666],
+ 63: [0, 0.69444, 0.1225, 0, 0.51111],
+ 64: [0, 0.69444, 0.09597, 0, 0.76666],
+ 65: [0, 0.68333, 0, 0, 0.74333],
+ 66: [0, 0.68333, 0.10257, 0, 0.70389],
+ 67: [0, 0.68333, 0.14528, 0, 0.71555],
+ 68: [0, 0.68333, 0.09403, 0, 0.755],
+ 69: [0, 0.68333, 0.12028, 0, 0.67833],
+ 70: [0, 0.68333, 0.13305, 0, 0.65277],
+ 71: [0, 0.68333, 0.08722, 0, 0.77361],
+ 72: [0, 0.68333, 0.16389, 0, 0.74333],
+ 73: [0, 0.68333, 0.15806, 0, 0.38555],
+ 74: [0, 0.68333, 0.14028, 0, 0.525],
+ 75: [0, 0.68333, 0.14528, 0, 0.76888],
+ 76: [0, 0.68333, 0, 0, 0.62722],
+ 77: [0, 0.68333, 0.16389, 0, 0.89666],
+ 78: [0, 0.68333, 0.16389, 0, 0.74333],
+ 79: [0, 0.68333, 0.09403, 0, 0.76666],
+ 80: [0, 0.68333, 0.10257, 0, 0.67833],
+ 81: [0.19444, 0.68333, 0.09403, 0, 0.76666],
+ 82: [0, 0.68333, 0.03868, 0, 0.72944],
+ 83: [0, 0.68333, 0.11972, 0, 0.56222],
+ 84: [0, 0.68333, 0.13305, 0, 0.71555],
+ 85: [0, 0.68333, 0.16389, 0, 0.74333],
+ 86: [0, 0.68333, 0.18361, 0, 0.74333],
+ 87: [0, 0.68333, 0.18361, 0, 0.99888],
+ 88: [0, 0.68333, 0.15806, 0, 0.74333],
+ 89: [0, 0.68333, 0.19383, 0, 0.74333],
+ 90: [0, 0.68333, 0.14528, 0, 0.61333],
+ 91: [0.25, 0.75, 0.1875, 0, 0.30667],
+ 93: [0.25, 0.75, 0.10528, 0, 0.30667],
+ 94: [0, 0.69444, 0.06646, 0, 0.51111],
+ 95: [0.31, 0.12056, 0.09208, 0, 0.51111],
+ 97: [0, 0.43056, 0.07671, 0, 0.51111],
+ 98: [0, 0.69444, 0.06312, 0, 0.46],
+ 99: [0, 0.43056, 0.05653, 0, 0.46],
+ 100: [0, 0.69444, 0.10333, 0, 0.51111],
+ 101: [0, 0.43056, 0.07514, 0, 0.46],
+ 102: [0.19444, 0.69444, 0.21194, 0, 0.30667],
+ 103: [0.19444, 0.43056, 0.08847, 0, 0.46],
+ 104: [0, 0.69444, 0.07671, 0, 0.51111],
+ 105: [0, 0.65536, 0.1019, 0, 0.30667],
+ 106: [0.19444, 0.65536, 0.14467, 0, 0.30667],
+ 107: [0, 0.69444, 0.10764, 0, 0.46],
+ 108: [0, 0.69444, 0.10333, 0, 0.25555],
+ 109: [0, 0.43056, 0.07671, 0, 0.81777],
+ 110: [0, 0.43056, 0.07671, 0, 0.56222],
+ 111: [0, 0.43056, 0.06312, 0, 0.51111],
+ 112: [0.19444, 0.43056, 0.06312, 0, 0.51111],
+ 113: [0.19444, 0.43056, 0.08847, 0, 0.46],
+ 114: [0, 0.43056, 0.10764, 0, 0.42166],
+ 115: [0, 0.43056, 0.08208, 0, 0.40889],
+ 116: [0, 0.61508, 0.09486, 0, 0.33222],
+ 117: [0, 0.43056, 0.07671, 0, 0.53666],
+ 118: [0, 0.43056, 0.10764, 0, 0.46],
+ 119: [0, 0.43056, 0.10764, 0, 0.66444],
+ 120: [0, 0.43056, 0.12042, 0, 0.46389],
+ 121: [0.19444, 0.43056, 0.08847, 0, 0.48555],
+ 122: [0, 0.43056, 0.12292, 0, 0.40889],
+ 126: [0.35, 0.31786, 0.11585, 0, 0.51111],
+ 160: [0, 0, 0, 0, 0.25],
+ 168: [0, 0.66786, 0.10474, 0, 0.51111],
+ 176: [0, 0.69444, 0, 0, 0.83129],
+ 184: [0.17014, 0, 0, 0, 0.46],
+ 198: [0, 0.68333, 0.12028, 0, 0.88277],
+ 216: [0.04861, 0.73194, 0.09403, 0, 0.76666],
+ 223: [0.19444, 0.69444, 0.10514, 0, 0.53666],
+ 230: [0, 0.43056, 0.07514, 0, 0.71555],
+ 248: [0.09722, 0.52778, 0.09194, 0, 0.51111],
+ 338: [0, 0.68333, 0.12028, 0, 0.98499],
+ 339: [0, 0.43056, 0.07514, 0, 0.71555],
+ 710: [0, 0.69444, 0.06646, 0, 0.51111],
+ 711: [0, 0.62847, 0.08295, 0, 0.51111],
+ 713: [0, 0.56167, 0.10333, 0, 0.51111],
+ 714: [0, 0.69444, 0.09694, 0, 0.51111],
+ 715: [0, 0.69444, 0, 0, 0.51111],
+ 728: [0, 0.69444, 0.10806, 0, 0.51111],
+ 729: [0, 0.66786, 0.11752, 0, 0.30667],
+ 730: [0, 0.69444, 0, 0, 0.83129],
+ 732: [0, 0.66786, 0.11585, 0, 0.51111],
+ 733: [0, 0.69444, 0.1225, 0, 0.51111],
+ 915: [0, 0.68333, 0.13305, 0, 0.62722],
+ 916: [0, 0.68333, 0, 0, 0.81777],
+ 920: [0, 0.68333, 0.09403, 0, 0.76666],
+ 923: [0, 0.68333, 0, 0, 0.69222],
+ 926: [0, 0.68333, 0.15294, 0, 0.66444],
+ 928: [0, 0.68333, 0.16389, 0, 0.74333],
+ 931: [0, 0.68333, 0.12028, 0, 0.71555],
+ 933: [0, 0.68333, 0.11111, 0, 0.76666],
+ 934: [0, 0.68333, 0.05986, 0, 0.71555],
+ 936: [0, 0.68333, 0.11111, 0, 0.76666],
+ 937: [0, 0.68333, 0.10257, 0, 0.71555],
+ 8211: [0, 0.43056, 0.09208, 0, 0.51111],
+ 8212: [0, 0.43056, 0.09208, 0, 1.02222],
+ 8216: [0, 0.69444, 0.12417, 0, 0.30667],
+ 8217: [0, 0.69444, 0.12417, 0, 0.30667],
+ 8220: [0, 0.69444, 0.1685, 0, 0.51444],
+ 8221: [0, 0.69444, 0.06961, 0, 0.51444],
+ 8463: [0, 0.68889, 0, 0, 0.54028],
+ },
+ "Main-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 33: [0, 0.69444, 0, 0, 0.27778],
+ 34: [0, 0.69444, 0, 0, 0.5],
+ 35: [0.19444, 0.69444, 0, 0, 0.83334],
+ 36: [0.05556, 0.75, 0, 0, 0.5],
+ 37: [0.05556, 0.75, 0, 0, 0.83334],
+ 38: [0, 0.69444, 0, 0, 0.77778],
+ 39: [0, 0.69444, 0, 0, 0.27778],
+ 40: [0.25, 0.75, 0, 0, 0.38889],
+ 41: [0.25, 0.75, 0, 0, 0.38889],
+ 42: [0, 0.75, 0, 0, 0.5],
+ 43: [0.08333, 0.58333, 0, 0, 0.77778],
+ 44: [0.19444, 0.10556, 0, 0, 0.27778],
+ 45: [0, 0.43056, 0, 0, 0.33333],
+ 46: [0, 0.10556, 0, 0, 0.27778],
+ 47: [0.25, 0.75, 0, 0, 0.5],
+ 48: [0, 0.64444, 0, 0, 0.5],
+ 49: [0, 0.64444, 0, 0, 0.5],
+ 50: [0, 0.64444, 0, 0, 0.5],
+ 51: [0, 0.64444, 0, 0, 0.5],
+ 52: [0, 0.64444, 0, 0, 0.5],
+ 53: [0, 0.64444, 0, 0, 0.5],
+ 54: [0, 0.64444, 0, 0, 0.5],
+ 55: [0, 0.64444, 0, 0, 0.5],
+ 56: [0, 0.64444, 0, 0, 0.5],
+ 57: [0, 0.64444, 0, 0, 0.5],
+ 58: [0, 0.43056, 0, 0, 0.27778],
+ 59: [0.19444, 0.43056, 0, 0, 0.27778],
+ 60: [0.0391, 0.5391, 0, 0, 0.77778],
+ 61: [-0.13313, 0.36687, 0, 0, 0.77778],
+ 62: [0.0391, 0.5391, 0, 0, 0.77778],
+ 63: [0, 0.69444, 0, 0, 0.47222],
+ 64: [0, 0.69444, 0, 0, 0.77778],
+ 65: [0, 0.68333, 0, 0, 0.75],
+ 66: [0, 0.68333, 0, 0, 0.70834],
+ 67: [0, 0.68333, 0, 0, 0.72222],
+ 68: [0, 0.68333, 0, 0, 0.76389],
+ 69: [0, 0.68333, 0, 0, 0.68056],
+ 70: [0, 0.68333, 0, 0, 0.65278],
+ 71: [0, 0.68333, 0, 0, 0.78472],
+ 72: [0, 0.68333, 0, 0, 0.75],
+ 73: [0, 0.68333, 0, 0, 0.36111],
+ 74: [0, 0.68333, 0, 0, 0.51389],
+ 75: [0, 0.68333, 0, 0, 0.77778],
+ 76: [0, 0.68333, 0, 0, 0.625],
+ 77: [0, 0.68333, 0, 0, 0.91667],
+ 78: [0, 0.68333, 0, 0, 0.75],
+ 79: [0, 0.68333, 0, 0, 0.77778],
+ 80: [0, 0.68333, 0, 0, 0.68056],
+ 81: [0.19444, 0.68333, 0, 0, 0.77778],
+ 82: [0, 0.68333, 0, 0, 0.73611],
+ 83: [0, 0.68333, 0, 0, 0.55556],
+ 84: [0, 0.68333, 0, 0, 0.72222],
+ 85: [0, 0.68333, 0, 0, 0.75],
+ 86: [0, 0.68333, 0.01389, 0, 0.75],
+ 87: [0, 0.68333, 0.01389, 0, 1.02778],
+ 88: [0, 0.68333, 0, 0, 0.75],
+ 89: [0, 0.68333, 0.025, 0, 0.75],
+ 90: [0, 0.68333, 0, 0, 0.61111],
+ 91: [0.25, 0.75, 0, 0, 0.27778],
+ 92: [0.25, 0.75, 0, 0, 0.5],
+ 93: [0.25, 0.75, 0, 0, 0.27778],
+ 94: [0, 0.69444, 0, 0, 0.5],
+ 95: [0.31, 0.12056, 0.02778, 0, 0.5],
+ 97: [0, 0.43056, 0, 0, 0.5],
+ 98: [0, 0.69444, 0, 0, 0.55556],
+ 99: [0, 0.43056, 0, 0, 0.44445],
+ 100: [0, 0.69444, 0, 0, 0.55556],
+ 101: [0, 0.43056, 0, 0, 0.44445],
+ 102: [0, 0.69444, 0.07778, 0, 0.30556],
+ 103: [0.19444, 0.43056, 0.01389, 0, 0.5],
+ 104: [0, 0.69444, 0, 0, 0.55556],
+ 105: [0, 0.66786, 0, 0, 0.27778],
+ 106: [0.19444, 0.66786, 0, 0, 0.30556],
+ 107: [0, 0.69444, 0, 0, 0.52778],
+ 108: [0, 0.69444, 0, 0, 0.27778],
+ 109: [0, 0.43056, 0, 0, 0.83334],
+ 110: [0, 0.43056, 0, 0, 0.55556],
+ 111: [0, 0.43056, 0, 0, 0.5],
+ 112: [0.19444, 0.43056, 0, 0, 0.55556],
+ 113: [0.19444, 0.43056, 0, 0, 0.52778],
+ 114: [0, 0.43056, 0, 0, 0.39167],
+ 115: [0, 0.43056, 0, 0, 0.39445],
+ 116: [0, 0.61508, 0, 0, 0.38889],
+ 117: [0, 0.43056, 0, 0, 0.55556],
+ 118: [0, 0.43056, 0.01389, 0, 0.52778],
+ 119: [0, 0.43056, 0.01389, 0, 0.72222],
+ 120: [0, 0.43056, 0, 0, 0.52778],
+ 121: [0.19444, 0.43056, 0.01389, 0, 0.52778],
+ 122: [0, 0.43056, 0, 0, 0.44445],
+ 123: [0.25, 0.75, 0, 0, 0.5],
+ 124: [0.25, 0.75, 0, 0, 0.27778],
+ 125: [0.25, 0.75, 0, 0, 0.5],
+ 126: [0.35, 0.31786, 0, 0, 0.5],
+ 160: [0, 0, 0, 0, 0.25],
+ 163: [0, 0.69444, 0, 0, 0.76909],
+ 167: [0.19444, 0.69444, 0, 0, 0.44445],
+ 168: [0, 0.66786, 0, 0, 0.5],
+ 172: [0, 0.43056, 0, 0, 0.66667],
+ 176: [0, 0.69444, 0, 0, 0.75],
+ 177: [0.08333, 0.58333, 0, 0, 0.77778],
+ 182: [0.19444, 0.69444, 0, 0, 0.61111],
+ 184: [0.17014, 0, 0, 0, 0.44445],
+ 198: [0, 0.68333, 0, 0, 0.90278],
+ 215: [0.08333, 0.58333, 0, 0, 0.77778],
+ 216: [0.04861, 0.73194, 0, 0, 0.77778],
+ 223: [0, 0.69444, 0, 0, 0.5],
+ 230: [0, 0.43056, 0, 0, 0.72222],
+ 247: [0.08333, 0.58333, 0, 0, 0.77778],
+ 248: [0.09722, 0.52778, 0, 0, 0.5],
+ 305: [0, 0.43056, 0, 0, 0.27778],
+ 338: [0, 0.68333, 0, 0, 1.01389],
+ 339: [0, 0.43056, 0, 0, 0.77778],
+ 567: [0.19444, 0.43056, 0, 0, 0.30556],
+ 710: [0, 0.69444, 0, 0, 0.5],
+ 711: [0, 0.62847, 0, 0, 0.5],
+ 713: [0, 0.56778, 0, 0, 0.5],
+ 714: [0, 0.69444, 0, 0, 0.5],
+ 715: [0, 0.69444, 0, 0, 0.5],
+ 728: [0, 0.69444, 0, 0, 0.5],
+ 729: [0, 0.66786, 0, 0, 0.27778],
+ 730: [0, 0.69444, 0, 0, 0.75],
+ 732: [0, 0.66786, 0, 0, 0.5],
+ 733: [0, 0.69444, 0, 0, 0.5],
+ 915: [0, 0.68333, 0, 0, 0.625],
+ 916: [0, 0.68333, 0, 0, 0.83334],
+ 920: [0, 0.68333, 0, 0, 0.77778],
+ 923: [0, 0.68333, 0, 0, 0.69445],
+ 926: [0, 0.68333, 0, 0, 0.66667],
+ 928: [0, 0.68333, 0, 0, 0.75],
+ 931: [0, 0.68333, 0, 0, 0.72222],
+ 933: [0, 0.68333, 0, 0, 0.77778],
+ 934: [0, 0.68333, 0, 0, 0.72222],
+ 936: [0, 0.68333, 0, 0, 0.77778],
+ 937: [0, 0.68333, 0, 0, 0.72222],
+ 8211: [0, 0.43056, 0.02778, 0, 0.5],
+ 8212: [0, 0.43056, 0.02778, 0, 1],
+ 8216: [0, 0.69444, 0, 0, 0.27778],
+ 8217: [0, 0.69444, 0, 0, 0.27778],
+ 8220: [0, 0.69444, 0, 0, 0.5],
+ 8221: [0, 0.69444, 0, 0, 0.5],
+ 8224: [0.19444, 0.69444, 0, 0, 0.44445],
+ 8225: [0.19444, 0.69444, 0, 0, 0.44445],
+ 8230: [0, 0.123, 0, 0, 1.172],
+ 8242: [0, 0.55556, 0, 0, 0.275],
+ 8407: [0, 0.71444, 0.15382, 0, 0.5],
+ 8463: [0, 0.68889, 0, 0, 0.54028],
+ 8465: [0, 0.69444, 0, 0, 0.72222],
+ 8467: [0, 0.69444, 0, 0.11111, 0.41667],
+ 8472: [0.19444, 0.43056, 0, 0.11111, 0.63646],
+ 8476: [0, 0.69444, 0, 0, 0.72222],
+ 8501: [0, 0.69444, 0, 0, 0.61111],
+ 8592: [-0.13313, 0.36687, 0, 0, 1],
+ 8593: [0.19444, 0.69444, 0, 0, 0.5],
+ 8594: [-0.13313, 0.36687, 0, 0, 1],
+ 8595: [0.19444, 0.69444, 0, 0, 0.5],
+ 8596: [-0.13313, 0.36687, 0, 0, 1],
+ 8597: [0.25, 0.75, 0, 0, 0.5],
+ 8598: [0.19444, 0.69444, 0, 0, 1],
+ 8599: [0.19444, 0.69444, 0, 0, 1],
+ 8600: [0.19444, 0.69444, 0, 0, 1],
+ 8601: [0.19444, 0.69444, 0, 0, 1],
+ 8614: [0.011, 0.511, 0, 0, 1],
+ 8617: [0.011, 0.511, 0, 0, 1.126],
+ 8618: [0.011, 0.511, 0, 0, 1.126],
+ 8636: [-0.13313, 0.36687, 0, 0, 1],
+ 8637: [-0.13313, 0.36687, 0, 0, 1],
+ 8640: [-0.13313, 0.36687, 0, 0, 1],
+ 8641: [-0.13313, 0.36687, 0, 0, 1],
+ 8652: [0.011, 0.671, 0, 0, 1],
+ 8656: [-0.13313, 0.36687, 0, 0, 1],
+ 8657: [0.19444, 0.69444, 0, 0, 0.61111],
+ 8658: [-0.13313, 0.36687, 0, 0, 1],
+ 8659: [0.19444, 0.69444, 0, 0, 0.61111],
+ 8660: [-0.13313, 0.36687, 0, 0, 1],
+ 8661: [0.25, 0.75, 0, 0, 0.61111],
+ 8704: [0, 0.69444, 0, 0, 0.55556],
+ 8706: [0, 0.69444, 0.05556, 0.08334, 0.5309],
+ 8707: [0, 0.69444, 0, 0, 0.55556],
+ 8709: [0.05556, 0.75, 0, 0, 0.5],
+ 8711: [0, 0.68333, 0, 0, 0.83334],
+ 8712: [0.0391, 0.5391, 0, 0, 0.66667],
+ 8715: [0.0391, 0.5391, 0, 0, 0.66667],
+ 8722: [0.08333, 0.58333, 0, 0, 0.77778],
+ 8723: [0.08333, 0.58333, 0, 0, 0.77778],
+ 8725: [0.25, 0.75, 0, 0, 0.5],
+ 8726: [0.25, 0.75, 0, 0, 0.5],
+ 8727: [-0.03472, 0.46528, 0, 0, 0.5],
+ 8728: [-0.05555, 0.44445, 0, 0, 0.5],
+ 8729: [-0.05555, 0.44445, 0, 0, 0.5],
+ 8730: [0.2, 0.8, 0, 0, 0.83334],
+ 8733: [0, 0.43056, 0, 0, 0.77778],
+ 8734: [0, 0.43056, 0, 0, 1],
+ 8736: [0, 0.69224, 0, 0, 0.72222],
+ 8739: [0.25, 0.75, 0, 0, 0.27778],
+ 8741: [0.25, 0.75, 0, 0, 0.5],
+ 8743: [0, 0.55556, 0, 0, 0.66667],
+ 8744: [0, 0.55556, 0, 0, 0.66667],
+ 8745: [0, 0.55556, 0, 0, 0.66667],
+ 8746: [0, 0.55556, 0, 0, 0.66667],
+ 8747: [0.19444, 0.69444, 0.11111, 0, 0.41667],
+ 8764: [-0.13313, 0.36687, 0, 0, 0.77778],
+ 8768: [0.19444, 0.69444, 0, 0, 0.27778],
+ 8771: [-0.03625, 0.46375, 0, 0, 0.77778],
+ 8773: [-0.022, 0.589, 0, 0, 0.778],
+ 8776: [-0.01688, 0.48312, 0, 0, 0.77778],
+ 8781: [-0.03625, 0.46375, 0, 0, 0.77778],
+ 8784: [-0.133, 0.673, 0, 0, 0.778],
+ 8801: [-0.03625, 0.46375, 0, 0, 0.77778],
+ 8804: [0.13597, 0.63597, 0, 0, 0.77778],
+ 8805: [0.13597, 0.63597, 0, 0, 0.77778],
+ 8810: [0.0391, 0.5391, 0, 0, 1],
+ 8811: [0.0391, 0.5391, 0, 0, 1],
+ 8826: [0.0391, 0.5391, 0, 0, 0.77778],
+ 8827: [0.0391, 0.5391, 0, 0, 0.77778],
+ 8834: [0.0391, 0.5391, 0, 0, 0.77778],
+ 8835: [0.0391, 0.5391, 0, 0, 0.77778],
+ 8838: [0.13597, 0.63597, 0, 0, 0.77778],
+ 8839: [0.13597, 0.63597, 0, 0, 0.77778],
+ 8846: [0, 0.55556, 0, 0, 0.66667],
+ 8849: [0.13597, 0.63597, 0, 0, 0.77778],
+ 8850: [0.13597, 0.63597, 0, 0, 0.77778],
+ 8851: [0, 0.55556, 0, 0, 0.66667],
+ 8852: [0, 0.55556, 0, 0, 0.66667],
+ 8853: [0.08333, 0.58333, 0, 0, 0.77778],
+ 8854: [0.08333, 0.58333, 0, 0, 0.77778],
+ 8855: [0.08333, 0.58333, 0, 0, 0.77778],
+ 8856: [0.08333, 0.58333, 0, 0, 0.77778],
+ 8857: [0.08333, 0.58333, 0, 0, 0.77778],
+ 8866: [0, 0.69444, 0, 0, 0.61111],
+ 8867: [0, 0.69444, 0, 0, 0.61111],
+ 8868: [0, 0.69444, 0, 0, 0.77778],
+ 8869: [0, 0.69444, 0, 0, 0.77778],
+ 8872: [0.249, 0.75, 0, 0, 0.867],
+ 8900: [-0.05555, 0.44445, 0, 0, 0.5],
+ 8901: [-0.05555, 0.44445, 0, 0, 0.27778],
+ 8902: [-0.03472, 0.46528, 0, 0, 0.5],
+ 8904: [0.005, 0.505, 0, 0, 0.9],
+ 8942: [0.03, 0.903, 0, 0, 0.278],
+ 8943: [-0.19, 0.313, 0, 0, 1.172],
+ 8945: [-0.1, 0.823, 0, 0, 1.282],
+ 8968: [0.25, 0.75, 0, 0, 0.44445],
+ 8969: [0.25, 0.75, 0, 0, 0.44445],
+ 8970: [0.25, 0.75, 0, 0, 0.44445],
+ 8971: [0.25, 0.75, 0, 0, 0.44445],
+ 8994: [-0.14236, 0.35764, 0, 0, 1],
+ 8995: [-0.14236, 0.35764, 0, 0, 1],
+ 9136: [0.244, 0.744, 0, 0, 0.412],
+ 9137: [0.244, 0.745, 0, 0, 0.412],
+ 9651: [0.19444, 0.69444, 0, 0, 0.88889],
+ 9657: [-0.03472, 0.46528, 0, 0, 0.5],
+ 9661: [0.19444, 0.69444, 0, 0, 0.88889],
+ 9667: [-0.03472, 0.46528, 0, 0, 0.5],
+ 9711: [0.19444, 0.69444, 0, 0, 1],
+ 9824: [0.12963, 0.69444, 0, 0, 0.77778],
+ 9825: [0.12963, 0.69444, 0, 0, 0.77778],
+ 9826: [0.12963, 0.69444, 0, 0, 0.77778],
+ 9827: [0.12963, 0.69444, 0, 0, 0.77778],
+ 9837: [0, 0.75, 0, 0, 0.38889],
+ 9838: [0.19444, 0.69444, 0, 0, 0.38889],
+ 9839: [0.19444, 0.69444, 0, 0, 0.38889],
+ 10216: [0.25, 0.75, 0, 0, 0.38889],
+ 10217: [0.25, 0.75, 0, 0, 0.38889],
+ 10222: [0.244, 0.744, 0, 0, 0.412],
+ 10223: [0.244, 0.745, 0, 0, 0.412],
+ 10229: [0.011, 0.511, 0, 0, 1.609],
+ 10230: [0.011, 0.511, 0, 0, 1.638],
+ 10231: [0.011, 0.511, 0, 0, 1.859],
+ 10232: [0.024, 0.525, 0, 0, 1.609],
+ 10233: [0.024, 0.525, 0, 0, 1.638],
+ 10234: [0.024, 0.525, 0, 0, 1.858],
+ 10236: [0.011, 0.511, 0, 0, 1.638],
+ 10815: [0, 0.68333, 0, 0, 0.75],
+ 10927: [0.13597, 0.63597, 0, 0, 0.77778],
+ 10928: [0.13597, 0.63597, 0, 0, 0.77778],
+ 57376: [0.19444, 0.69444, 0, 0, 0],
+ },
+ "Math-BoldItalic": {
+ 32: [0, 0, 0, 0, 0.25],
+ 48: [0, 0.44444, 0, 0, 0.575],
+ 49: [0, 0.44444, 0, 0, 0.575],
+ 50: [0, 0.44444, 0, 0, 0.575],
+ 51: [0.19444, 0.44444, 0, 0, 0.575],
+ 52: [0.19444, 0.44444, 0, 0, 0.575],
+ 53: [0.19444, 0.44444, 0, 0, 0.575],
+ 54: [0, 0.64444, 0, 0, 0.575],
+ 55: [0.19444, 0.44444, 0, 0, 0.575],
+ 56: [0, 0.64444, 0, 0, 0.575],
+ 57: [0.19444, 0.44444, 0, 0, 0.575],
+ 65: [0, 0.68611, 0, 0, 0.86944],
+ 66: [0, 0.68611, 0.04835, 0, 0.8664],
+ 67: [0, 0.68611, 0.06979, 0, 0.81694],
+ 68: [0, 0.68611, 0.03194, 0, 0.93812],
+ 69: [0, 0.68611, 0.05451, 0, 0.81007],
+ 70: [0, 0.68611, 0.15972, 0, 0.68889],
+ 71: [0, 0.68611, 0, 0, 0.88673],
+ 72: [0, 0.68611, 0.08229, 0, 0.98229],
+ 73: [0, 0.68611, 0.07778, 0, 0.51111],
+ 74: [0, 0.68611, 0.10069, 0, 0.63125],
+ 75: [0, 0.68611, 0.06979, 0, 0.97118],
+ 76: [0, 0.68611, 0, 0, 0.75555],
+ 77: [0, 0.68611, 0.11424, 0, 1.14201],
+ 78: [0, 0.68611, 0.11424, 0, 0.95034],
+ 79: [0, 0.68611, 0.03194, 0, 0.83666],
+ 80: [0, 0.68611, 0.15972, 0, 0.72309],
+ 81: [0.19444, 0.68611, 0, 0, 0.86861],
+ 82: [0, 0.68611, 0.00421, 0, 0.87235],
+ 83: [0, 0.68611, 0.05382, 0, 0.69271],
+ 84: [0, 0.68611, 0.15972, 0, 0.63663],
+ 85: [0, 0.68611, 0.11424, 0, 0.80027],
+ 86: [0, 0.68611, 0.25555, 0, 0.67778],
+ 87: [0, 0.68611, 0.15972, 0, 1.09305],
+ 88: [0, 0.68611, 0.07778, 0, 0.94722],
+ 89: [0, 0.68611, 0.25555, 0, 0.67458],
+ 90: [0, 0.68611, 0.06979, 0, 0.77257],
+ 97: [0, 0.44444, 0, 0, 0.63287],
+ 98: [0, 0.69444, 0, 0, 0.52083],
+ 99: [0, 0.44444, 0, 0, 0.51342],
+ 100: [0, 0.69444, 0, 0, 0.60972],
+ 101: [0, 0.44444, 0, 0, 0.55361],
+ 102: [0.19444, 0.69444, 0.11042, 0, 0.56806],
+ 103: [0.19444, 0.44444, 0.03704, 0, 0.5449],
+ 104: [0, 0.69444, 0, 0, 0.66759],
+ 105: [0, 0.69326, 0, 0, 0.4048],
+ 106: [0.19444, 0.69326, 0.0622, 0, 0.47083],
+ 107: [0, 0.69444, 0.01852, 0, 0.6037],
+ 108: [0, 0.69444, 0.0088, 0, 0.34815],
+ 109: [0, 0.44444, 0, 0, 1.0324],
+ 110: [0, 0.44444, 0, 0, 0.71296],
+ 111: [0, 0.44444, 0, 0, 0.58472],
+ 112: [0.19444, 0.44444, 0, 0, 0.60092],
+ 113: [0.19444, 0.44444, 0.03704, 0, 0.54213],
+ 114: [0, 0.44444, 0.03194, 0, 0.5287],
+ 115: [0, 0.44444, 0, 0, 0.53125],
+ 116: [0, 0.63492, 0, 0, 0.41528],
+ 117: [0, 0.44444, 0, 0, 0.68102],
+ 118: [0, 0.44444, 0.03704, 0, 0.56666],
+ 119: [0, 0.44444, 0.02778, 0, 0.83148],
+ 120: [0, 0.44444, 0, 0, 0.65903],
+ 121: [0.19444, 0.44444, 0.03704, 0, 0.59028],
+ 122: [0, 0.44444, 0.04213, 0, 0.55509],
+ 160: [0, 0, 0, 0, 0.25],
+ 915: [0, 0.68611, 0.15972, 0, 0.65694],
+ 916: [0, 0.68611, 0, 0, 0.95833],
+ 920: [0, 0.68611, 0.03194, 0, 0.86722],
+ 923: [0, 0.68611, 0, 0, 0.80555],
+ 926: [0, 0.68611, 0.07458, 0, 0.84125],
+ 928: [0, 0.68611, 0.08229, 0, 0.98229],
+ 931: [0, 0.68611, 0.05451, 0, 0.88507],
+ 933: [0, 0.68611, 0.15972, 0, 0.67083],
+ 934: [0, 0.68611, 0, 0, 0.76666],
+ 936: [0, 0.68611, 0.11653, 0, 0.71402],
+ 937: [0, 0.68611, 0.04835, 0, 0.8789],
+ 945: [0, 0.44444, 0, 0, 0.76064],
+ 946: [0.19444, 0.69444, 0.03403, 0, 0.65972],
+ 947: [0.19444, 0.44444, 0.06389, 0, 0.59003],
+ 948: [0, 0.69444, 0.03819, 0, 0.52222],
+ 949: [0, 0.44444, 0, 0, 0.52882],
+ 950: [0.19444, 0.69444, 0.06215, 0, 0.50833],
+ 951: [0.19444, 0.44444, 0.03704, 0, 0.6],
+ 952: [0, 0.69444, 0.03194, 0, 0.5618],
+ 953: [0, 0.44444, 0, 0, 0.41204],
+ 954: [0, 0.44444, 0, 0, 0.66759],
+ 955: [0, 0.69444, 0, 0, 0.67083],
+ 956: [0.19444, 0.44444, 0, 0, 0.70787],
+ 957: [0, 0.44444, 0.06898, 0, 0.57685],
+ 958: [0.19444, 0.69444, 0.03021, 0, 0.50833],
+ 959: [0, 0.44444, 0, 0, 0.58472],
+ 960: [0, 0.44444, 0.03704, 0, 0.68241],
+ 961: [0.19444, 0.44444, 0, 0, 0.6118],
+ 962: [0.09722, 0.44444, 0.07917, 0, 0.42361],
+ 963: [0, 0.44444, 0.03704, 0, 0.68588],
+ 964: [0, 0.44444, 0.13472, 0, 0.52083],
+ 965: [0, 0.44444, 0.03704, 0, 0.63055],
+ 966: [0.19444, 0.44444, 0, 0, 0.74722],
+ 967: [0.19444, 0.44444, 0, 0, 0.71805],
+ 968: [0.19444, 0.69444, 0.03704, 0, 0.75833],
+ 969: [0, 0.44444, 0.03704, 0, 0.71782],
+ 977: [0, 0.69444, 0, 0, 0.69155],
+ 981: [0.19444, 0.69444, 0, 0, 0.7125],
+ 982: [0, 0.44444, 0.03194, 0, 0.975],
+ 1009: [0.19444, 0.44444, 0, 0, 0.6118],
+ 1013: [0, 0.44444, 0, 0, 0.48333],
+ 57649: [0, 0.44444, 0, 0, 0.39352],
+ 57911: [0.19444, 0.44444, 0, 0, 0.43889],
+ },
+ "Math-Italic": {
+ 32: [0, 0, 0, 0, 0.25],
+ 48: [0, 0.43056, 0, 0, 0.5],
+ 49: [0, 0.43056, 0, 0, 0.5],
+ 50: [0, 0.43056, 0, 0, 0.5],
+ 51: [0.19444, 0.43056, 0, 0, 0.5],
+ 52: [0.19444, 0.43056, 0, 0, 0.5],
+ 53: [0.19444, 0.43056, 0, 0, 0.5],
+ 54: [0, 0.64444, 0, 0, 0.5],
+ 55: [0.19444, 0.43056, 0, 0, 0.5],
+ 56: [0, 0.64444, 0, 0, 0.5],
+ 57: [0.19444, 0.43056, 0, 0, 0.5],
+ 65: [0, 0.68333, 0, 0.13889, 0.75],
+ 66: [0, 0.68333, 0.05017, 0.08334, 0.75851],
+ 67: [0, 0.68333, 0.07153, 0.08334, 0.71472],
+ 68: [0, 0.68333, 0.02778, 0.05556, 0.82792],
+ 69: [0, 0.68333, 0.05764, 0.08334, 0.7382],
+ 70: [0, 0.68333, 0.13889, 0.08334, 0.64306],
+ 71: [0, 0.68333, 0, 0.08334, 0.78625],
+ 72: [0, 0.68333, 0.08125, 0.05556, 0.83125],
+ 73: [0, 0.68333, 0.07847, 0.11111, 0.43958],
+ 74: [0, 0.68333, 0.09618, 0.16667, 0.55451],
+ 75: [0, 0.68333, 0.07153, 0.05556, 0.84931],
+ 76: [0, 0.68333, 0, 0.02778, 0.68056],
+ 77: [0, 0.68333, 0.10903, 0.08334, 0.97014],
+ 78: [0, 0.68333, 0.10903, 0.08334, 0.80347],
+ 79: [0, 0.68333, 0.02778, 0.08334, 0.76278],
+ 80: [0, 0.68333, 0.13889, 0.08334, 0.64201],
+ 81: [0.19444, 0.68333, 0, 0.08334, 0.79056],
+ 82: [0, 0.68333, 0.00773, 0.08334, 0.75929],
+ 83: [0, 0.68333, 0.05764, 0.08334, 0.6132],
+ 84: [0, 0.68333, 0.13889, 0.08334, 0.58438],
+ 85: [0, 0.68333, 0.10903, 0.02778, 0.68278],
+ 86: [0, 0.68333, 0.22222, 0, 0.58333],
+ 87: [0, 0.68333, 0.13889, 0, 0.94445],
+ 88: [0, 0.68333, 0.07847, 0.08334, 0.82847],
+ 89: [0, 0.68333, 0.22222, 0, 0.58056],
+ 90: [0, 0.68333, 0.07153, 0.08334, 0.68264],
+ 97: [0, 0.43056, 0, 0, 0.52859],
+ 98: [0, 0.69444, 0, 0, 0.42917],
+ 99: [0, 0.43056, 0, 0.05556, 0.43276],
+ 100: [0, 0.69444, 0, 0.16667, 0.52049],
+ 101: [0, 0.43056, 0, 0.05556, 0.46563],
+ 102: [0.19444, 0.69444, 0.10764, 0.16667, 0.48959],
+ 103: [0.19444, 0.43056, 0.03588, 0.02778, 0.47697],
+ 104: [0, 0.69444, 0, 0, 0.57616],
+ 105: [0, 0.65952, 0, 0, 0.34451],
+ 106: [0.19444, 0.65952, 0.05724, 0, 0.41181],
+ 107: [0, 0.69444, 0.03148, 0, 0.5206],
+ 108: [0, 0.69444, 0.01968, 0.08334, 0.29838],
+ 109: [0, 0.43056, 0, 0, 0.87801],
+ 110: [0, 0.43056, 0, 0, 0.60023],
+ 111: [0, 0.43056, 0, 0.05556, 0.48472],
+ 112: [0.19444, 0.43056, 0, 0.08334, 0.50313],
+ 113: [0.19444, 0.43056, 0.03588, 0.08334, 0.44641],
+ 114: [0, 0.43056, 0.02778, 0.05556, 0.45116],
+ 115: [0, 0.43056, 0, 0.05556, 0.46875],
+ 116: [0, 0.61508, 0, 0.08334, 0.36111],
+ 117: [0, 0.43056, 0, 0.02778, 0.57246],
+ 118: [0, 0.43056, 0.03588, 0.02778, 0.48472],
+ 119: [0, 0.43056, 0.02691, 0.08334, 0.71592],
+ 120: [0, 0.43056, 0, 0.02778, 0.57153],
+ 121: [0.19444, 0.43056, 0.03588, 0.05556, 0.49028],
+ 122: [0, 0.43056, 0.04398, 0.05556, 0.46505],
+ 160: [0, 0, 0, 0, 0.25],
+ 915: [0, 0.68333, 0.13889, 0.08334, 0.61528],
+ 916: [0, 0.68333, 0, 0.16667, 0.83334],
+ 920: [0, 0.68333, 0.02778, 0.08334, 0.76278],
+ 923: [0, 0.68333, 0, 0.16667, 0.69445],
+ 926: [0, 0.68333, 0.07569, 0.08334, 0.74236],
+ 928: [0, 0.68333, 0.08125, 0.05556, 0.83125],
+ 931: [0, 0.68333, 0.05764, 0.08334, 0.77986],
+ 933: [0, 0.68333, 0.13889, 0.05556, 0.58333],
+ 934: [0, 0.68333, 0, 0.08334, 0.66667],
+ 936: [0, 0.68333, 0.11, 0.05556, 0.61222],
+ 937: [0, 0.68333, 0.05017, 0.08334, 0.7724],
+ 945: [0, 0.43056, 0.0037, 0.02778, 0.6397],
+ 946: [0.19444, 0.69444, 0.05278, 0.08334, 0.56563],
+ 947: [0.19444, 0.43056, 0.05556, 0, 0.51773],
+ 948: [0, 0.69444, 0.03785, 0.05556, 0.44444],
+ 949: [0, 0.43056, 0, 0.08334, 0.46632],
+ 950: [0.19444, 0.69444, 0.07378, 0.08334, 0.4375],
+ 951: [0.19444, 0.43056, 0.03588, 0.05556, 0.49653],
+ 952: [0, 0.69444, 0.02778, 0.08334, 0.46944],
+ 953: [0, 0.43056, 0, 0.05556, 0.35394],
+ 954: [0, 0.43056, 0, 0, 0.57616],
+ 955: [0, 0.69444, 0, 0, 0.58334],
+ 956: [0.19444, 0.43056, 0, 0.02778, 0.60255],
+ 957: [0, 0.43056, 0.06366, 0.02778, 0.49398],
+ 958: [0.19444, 0.69444, 0.04601, 0.11111, 0.4375],
+ 959: [0, 0.43056, 0, 0.05556, 0.48472],
+ 960: [0, 0.43056, 0.03588, 0, 0.57003],
+ 961: [0.19444, 0.43056, 0, 0.08334, 0.51702],
+ 962: [0.09722, 0.43056, 0.07986, 0.08334, 0.36285],
+ 963: [0, 0.43056, 0.03588, 0, 0.57141],
+ 964: [0, 0.43056, 0.1132, 0.02778, 0.43715],
+ 965: [0, 0.43056, 0.03588, 0.02778, 0.54028],
+ 966: [0.19444, 0.43056, 0, 0.08334, 0.65417],
+ 967: [0.19444, 0.43056, 0, 0.05556, 0.62569],
+ 968: [0.19444, 0.69444, 0.03588, 0.11111, 0.65139],
+ 969: [0, 0.43056, 0.03588, 0, 0.62245],
+ 977: [0, 0.69444, 0, 0.08334, 0.59144],
+ 981: [0.19444, 0.69444, 0, 0.08334, 0.59583],
+ 982: [0, 0.43056, 0.02778, 0, 0.82813],
+ 1009: [0.19444, 0.43056, 0, 0.08334, 0.51702],
+ 1013: [0, 0.43056, 0, 0.05556, 0.4059],
+ 57649: [0, 0.43056, 0, 0.02778, 0.32246],
+ 57911: [0.19444, 0.43056, 0, 0.08334, 0.38403],
+ },
+ "SansSerif-Bold": {
+ 32: [0, 0, 0, 0, 0.25],
+ 33: [0, 0.69444, 0, 0, 0.36667],
+ 34: [0, 0.69444, 0, 0, 0.55834],
+ 35: [0.19444, 0.69444, 0, 0, 0.91667],
+ 36: [0.05556, 0.75, 0, 0, 0.55],
+ 37: [0.05556, 0.75, 0, 0, 1.02912],
+ 38: [0, 0.69444, 0, 0, 0.83056],
+ 39: [0, 0.69444, 0, 0, 0.30556],
+ 40: [0.25, 0.75, 0, 0, 0.42778],
+ 41: [0.25, 0.75, 0, 0, 0.42778],
+ 42: [0, 0.75, 0, 0, 0.55],
+ 43: [0.11667, 0.61667, 0, 0, 0.85556],
+ 44: [0.10556, 0.13056, 0, 0, 0.30556],
+ 45: [0, 0.45833, 0, 0, 0.36667],
+ 46: [0, 0.13056, 0, 0, 0.30556],
+ 47: [0.25, 0.75, 0, 0, 0.55],
+ 48: [0, 0.69444, 0, 0, 0.55],
+ 49: [0, 0.69444, 0, 0, 0.55],
+ 50: [0, 0.69444, 0, 0, 0.55],
+ 51: [0, 0.69444, 0, 0, 0.55],
+ 52: [0, 0.69444, 0, 0, 0.55],
+ 53: [0, 0.69444, 0, 0, 0.55],
+ 54: [0, 0.69444, 0, 0, 0.55],
+ 55: [0, 0.69444, 0, 0, 0.55],
+ 56: [0, 0.69444, 0, 0, 0.55],
+ 57: [0, 0.69444, 0, 0, 0.55],
+ 58: [0, 0.45833, 0, 0, 0.30556],
+ 59: [0.10556, 0.45833, 0, 0, 0.30556],
+ 61: [-0.09375, 0.40625, 0, 0, 0.85556],
+ 63: [0, 0.69444, 0, 0, 0.51945],
+ 64: [0, 0.69444, 0, 0, 0.73334],
+ 65: [0, 0.69444, 0, 0, 0.73334],
+ 66: [0, 0.69444, 0, 0, 0.73334],
+ 67: [0, 0.69444, 0, 0, 0.70278],
+ 68: [0, 0.69444, 0, 0, 0.79445],
+ 69: [0, 0.69444, 0, 0, 0.64167],
+ 70: [0, 0.69444, 0, 0, 0.61111],
+ 71: [0, 0.69444, 0, 0, 0.73334],
+ 72: [0, 0.69444, 0, 0, 0.79445],
+ 73: [0, 0.69444, 0, 0, 0.33056],
+ 74: [0, 0.69444, 0, 0, 0.51945],
+ 75: [0, 0.69444, 0, 0, 0.76389],
+ 76: [0, 0.69444, 0, 0, 0.58056],
+ 77: [0, 0.69444, 0, 0, 0.97778],
+ 78: [0, 0.69444, 0, 0, 0.79445],
+ 79: [0, 0.69444, 0, 0, 0.79445],
+ 80: [0, 0.69444, 0, 0, 0.70278],
+ 81: [0.10556, 0.69444, 0, 0, 0.79445],
+ 82: [0, 0.69444, 0, 0, 0.70278],
+ 83: [0, 0.69444, 0, 0, 0.61111],
+ 84: [0, 0.69444, 0, 0, 0.73334],
+ 85: [0, 0.69444, 0, 0, 0.76389],
+ 86: [0, 0.69444, 0.01528, 0, 0.73334],
+ 87: [0, 0.69444, 0.01528, 0, 1.03889],
+ 88: [0, 0.69444, 0, 0, 0.73334],
+ 89: [0, 0.69444, 0.0275, 0, 0.73334],
+ 90: [0, 0.69444, 0, 0, 0.67223],
+ 91: [0.25, 0.75, 0, 0, 0.34306],
+ 93: [0.25, 0.75, 0, 0, 0.34306],
+ 94: [0, 0.69444, 0, 0, 0.55],
+ 95: [0.35, 0.10833, 0.03056, 0, 0.55],
+ 97: [0, 0.45833, 0, 0, 0.525],
+ 98: [0, 0.69444, 0, 0, 0.56111],
+ 99: [0, 0.45833, 0, 0, 0.48889],
+ 100: [0, 0.69444, 0, 0, 0.56111],
+ 101: [0, 0.45833, 0, 0, 0.51111],
+ 102: [0, 0.69444, 0.07639, 0, 0.33611],
+ 103: [0.19444, 0.45833, 0.01528, 0, 0.55],
+ 104: [0, 0.69444, 0, 0, 0.56111],
+ 105: [0, 0.69444, 0, 0, 0.25556],
+ 106: [0.19444, 0.69444, 0, 0, 0.28611],
+ 107: [0, 0.69444, 0, 0, 0.53056],
+ 108: [0, 0.69444, 0, 0, 0.25556],
+ 109: [0, 0.45833, 0, 0, 0.86667],
+ 110: [0, 0.45833, 0, 0, 0.56111],
+ 111: [0, 0.45833, 0, 0, 0.55],
+ 112: [0.19444, 0.45833, 0, 0, 0.56111],
+ 113: [0.19444, 0.45833, 0, 0, 0.56111],
+ 114: [0, 0.45833, 0.01528, 0, 0.37222],
+ 115: [0, 0.45833, 0, 0, 0.42167],
+ 116: [0, 0.58929, 0, 0, 0.40417],
+ 117: [0, 0.45833, 0, 0, 0.56111],
+ 118: [0, 0.45833, 0.01528, 0, 0.5],
+ 119: [0, 0.45833, 0.01528, 0, 0.74445],
+ 120: [0, 0.45833, 0, 0, 0.5],
+ 121: [0.19444, 0.45833, 0.01528, 0, 0.5],
+ 122: [0, 0.45833, 0, 0, 0.47639],
+ 126: [0.35, 0.34444, 0, 0, 0.55],
+ 160: [0, 0, 0, 0, 0.25],
+ 168: [0, 0.69444, 0, 0, 0.55],
+ 176: [0, 0.69444, 0, 0, 0.73334],
+ 180: [0, 0.69444, 0, 0, 0.55],
+ 184: [0.17014, 0, 0, 0, 0.48889],
+ 305: [0, 0.45833, 0, 0, 0.25556],
+ 567: [0.19444, 0.45833, 0, 0, 0.28611],
+ 710: [0, 0.69444, 0, 0, 0.55],
+ 711: [0, 0.63542, 0, 0, 0.55],
+ 713: [0, 0.63778, 0, 0, 0.55],
+ 728: [0, 0.69444, 0, 0, 0.55],
+ 729: [0, 0.69444, 0, 0, 0.30556],
+ 730: [0, 0.69444, 0, 0, 0.73334],
+ 732: [0, 0.69444, 0, 0, 0.55],
+ 733: [0, 0.69444, 0, 0, 0.55],
+ 915: [0, 0.69444, 0, 0, 0.58056],
+ 916: [0, 0.69444, 0, 0, 0.91667],
+ 920: [0, 0.69444, 0, 0, 0.85556],
+ 923: [0, 0.69444, 0, 0, 0.67223],
+ 926: [0, 0.69444, 0, 0, 0.73334],
+ 928: [0, 0.69444, 0, 0, 0.79445],
+ 931: [0, 0.69444, 0, 0, 0.79445],
+ 933: [0, 0.69444, 0, 0, 0.85556],
+ 934: [0, 0.69444, 0, 0, 0.79445],
+ 936: [0, 0.69444, 0, 0, 0.85556],
+ 937: [0, 0.69444, 0, 0, 0.79445],
+ 8211: [0, 0.45833, 0.03056, 0, 0.55],
+ 8212: [0, 0.45833, 0.03056, 0, 1.10001],
+ 8216: [0, 0.69444, 0, 0, 0.30556],
+ 8217: [0, 0.69444, 0, 0, 0.30556],
+ 8220: [0, 0.69444, 0, 0, 0.55834],
+ 8221: [0, 0.69444, 0, 0, 0.55834],
+ },
+ "SansSerif-Italic": {
+ 32: [0, 0, 0, 0, 0.25],
+ 33: [0, 0.69444, 0.05733, 0, 0.31945],
+ 34: [0, 0.69444, 0.00316, 0, 0.5],
+ 35: [0.19444, 0.69444, 0.05087, 0, 0.83334],
+ 36: [0.05556, 0.75, 0.11156, 0, 0.5],
+ 37: [0.05556, 0.75, 0.03126, 0, 0.83334],
+ 38: [0, 0.69444, 0.03058, 0, 0.75834],
+ 39: [0, 0.69444, 0.07816, 0, 0.27778],
+ 40: [0.25, 0.75, 0.13164, 0, 0.38889],
+ 41: [0.25, 0.75, 0.02536, 0, 0.38889],
+ 42: [0, 0.75, 0.11775, 0, 0.5],
+ 43: [0.08333, 0.58333, 0.02536, 0, 0.77778],
+ 44: [0.125, 0.08333, 0, 0, 0.27778],
+ 45: [0, 0.44444, 0.01946, 0, 0.33333],
+ 46: [0, 0.08333, 0, 0, 0.27778],
+ 47: [0.25, 0.75, 0.13164, 0, 0.5],
+ 48: [0, 0.65556, 0.11156, 0, 0.5],
+ 49: [0, 0.65556, 0.11156, 0, 0.5],
+ 50: [0, 0.65556, 0.11156, 0, 0.5],
+ 51: [0, 0.65556, 0.11156, 0, 0.5],
+ 52: [0, 0.65556, 0.11156, 0, 0.5],
+ 53: [0, 0.65556, 0.11156, 0, 0.5],
+ 54: [0, 0.65556, 0.11156, 0, 0.5],
+ 55: [0, 0.65556, 0.11156, 0, 0.5],
+ 56: [0, 0.65556, 0.11156, 0, 0.5],
+ 57: [0, 0.65556, 0.11156, 0, 0.5],
+ 58: [0, 0.44444, 0.02502, 0, 0.27778],
+ 59: [0.125, 0.44444, 0.02502, 0, 0.27778],
+ 61: [-0.13, 0.37, 0.05087, 0, 0.77778],
+ 63: [0, 0.69444, 0.11809, 0, 0.47222],
+ 64: [0, 0.69444, 0.07555, 0, 0.66667],
+ 65: [0, 0.69444, 0, 0, 0.66667],
+ 66: [0, 0.69444, 0.08293, 0, 0.66667],
+ 67: [0, 0.69444, 0.11983, 0, 0.63889],
+ 68: [0, 0.69444, 0.07555, 0, 0.72223],
+ 69: [0, 0.69444, 0.11983, 0, 0.59722],
+ 70: [0, 0.69444, 0.13372, 0, 0.56945],
+ 71: [0, 0.69444, 0.11983, 0, 0.66667],
+ 72: [0, 0.69444, 0.08094, 0, 0.70834],
+ 73: [0, 0.69444, 0.13372, 0, 0.27778],
+ 74: [0, 0.69444, 0.08094, 0, 0.47222],
+ 75: [0, 0.69444, 0.11983, 0, 0.69445],
+ 76: [0, 0.69444, 0, 0, 0.54167],
+ 77: [0, 0.69444, 0.08094, 0, 0.875],
+ 78: [0, 0.69444, 0.08094, 0, 0.70834],
+ 79: [0, 0.69444, 0.07555, 0, 0.73611],
+ 80: [0, 0.69444, 0.08293, 0, 0.63889],
+ 81: [0.125, 0.69444, 0.07555, 0, 0.73611],
+ 82: [0, 0.69444, 0.08293, 0, 0.64584],
+ 83: [0, 0.69444, 0.09205, 0, 0.55556],
+ 84: [0, 0.69444, 0.13372, 0, 0.68056],
+ 85: [0, 0.69444, 0.08094, 0, 0.6875],
+ 86: [0, 0.69444, 0.1615, 0, 0.66667],
+ 87: [0, 0.69444, 0.1615, 0, 0.94445],
+ 88: [0, 0.69444, 0.13372, 0, 0.66667],
+ 89: [0, 0.69444, 0.17261, 0, 0.66667],
+ 90: [0, 0.69444, 0.11983, 0, 0.61111],
+ 91: [0.25, 0.75, 0.15942, 0, 0.28889],
+ 93: [0.25, 0.75, 0.08719, 0, 0.28889],
+ 94: [0, 0.69444, 0.0799, 0, 0.5],
+ 95: [0.35, 0.09444, 0.08616, 0, 0.5],
+ 97: [0, 0.44444, 0.00981, 0, 0.48056],
+ 98: [0, 0.69444, 0.03057, 0, 0.51667],
+ 99: [0, 0.44444, 0.08336, 0, 0.44445],
+ 100: [0, 0.69444, 0.09483, 0, 0.51667],
+ 101: [0, 0.44444, 0.06778, 0, 0.44445],
+ 102: [0, 0.69444, 0.21705, 0, 0.30556],
+ 103: [0.19444, 0.44444, 0.10836, 0, 0.5],
+ 104: [0, 0.69444, 0.01778, 0, 0.51667],
+ 105: [0, 0.67937, 0.09718, 0, 0.23889],
+ 106: [0.19444, 0.67937, 0.09162, 0, 0.26667],
+ 107: [0, 0.69444, 0.08336, 0, 0.48889],
+ 108: [0, 0.69444, 0.09483, 0, 0.23889],
+ 109: [0, 0.44444, 0.01778, 0, 0.79445],
+ 110: [0, 0.44444, 0.01778, 0, 0.51667],
+ 111: [0, 0.44444, 0.06613, 0, 0.5],
+ 112: [0.19444, 0.44444, 0.0389, 0, 0.51667],
+ 113: [0.19444, 0.44444, 0.04169, 0, 0.51667],
+ 114: [0, 0.44444, 0.10836, 0, 0.34167],
+ 115: [0, 0.44444, 0.0778, 0, 0.38333],
+ 116: [0, 0.57143, 0.07225, 0, 0.36111],
+ 117: [0, 0.44444, 0.04169, 0, 0.51667],
+ 118: [0, 0.44444, 0.10836, 0, 0.46111],
+ 119: [0, 0.44444, 0.10836, 0, 0.68334],
+ 120: [0, 0.44444, 0.09169, 0, 0.46111],
+ 121: [0.19444, 0.44444, 0.10836, 0, 0.46111],
+ 122: [0, 0.44444, 0.08752, 0, 0.43472],
+ 126: [0.35, 0.32659, 0.08826, 0, 0.5],
+ 160: [0, 0, 0, 0, 0.25],
+ 168: [0, 0.67937, 0.06385, 0, 0.5],
+ 176: [0, 0.69444, 0, 0, 0.73752],
+ 184: [0.17014, 0, 0, 0, 0.44445],
+ 305: [0, 0.44444, 0.04169, 0, 0.23889],
+ 567: [0.19444, 0.44444, 0.04169, 0, 0.26667],
+ 710: [0, 0.69444, 0.0799, 0, 0.5],
+ 711: [0, 0.63194, 0.08432, 0, 0.5],
+ 713: [0, 0.60889, 0.08776, 0, 0.5],
+ 714: [0, 0.69444, 0.09205, 0, 0.5],
+ 715: [0, 0.69444, 0, 0, 0.5],
+ 728: [0, 0.69444, 0.09483, 0, 0.5],
+ 729: [0, 0.67937, 0.07774, 0, 0.27778],
+ 730: [0, 0.69444, 0, 0, 0.73752],
+ 732: [0, 0.67659, 0.08826, 0, 0.5],
+ 733: [0, 0.69444, 0.09205, 0, 0.5],
+ 915: [0, 0.69444, 0.13372, 0, 0.54167],
+ 916: [0, 0.69444, 0, 0, 0.83334],
+ 920: [0, 0.69444, 0.07555, 0, 0.77778],
+ 923: [0, 0.69444, 0, 0, 0.61111],
+ 926: [0, 0.69444, 0.12816, 0, 0.66667],
+ 928: [0, 0.69444, 0.08094, 0, 0.70834],
+ 931: [0, 0.69444, 0.11983, 0, 0.72222],
+ 933: [0, 0.69444, 0.09031, 0, 0.77778],
+ 934: [0, 0.69444, 0.04603, 0, 0.72222],
+ 936: [0, 0.69444, 0.09031, 0, 0.77778],
+ 937: [0, 0.69444, 0.08293, 0, 0.72222],
+ 8211: [0, 0.44444, 0.08616, 0, 0.5],
+ 8212: [0, 0.44444, 0.08616, 0, 1],
+ 8216: [0, 0.69444, 0.07816, 0, 0.27778],
+ 8217: [0, 0.69444, 0.07816, 0, 0.27778],
+ 8220: [0, 0.69444, 0.14205, 0, 0.5],
+ 8221: [0, 0.69444, 0.00316, 0, 0.5],
+ },
+ "SansSerif-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 33: [0, 0.69444, 0, 0, 0.31945],
+ 34: [0, 0.69444, 0, 0, 0.5],
+ 35: [0.19444, 0.69444, 0, 0, 0.83334],
+ 36: [0.05556, 0.75, 0, 0, 0.5],
+ 37: [0.05556, 0.75, 0, 0, 0.83334],
+ 38: [0, 0.69444, 0, 0, 0.75834],
+ 39: [0, 0.69444, 0, 0, 0.27778],
+ 40: [0.25, 0.75, 0, 0, 0.38889],
+ 41: [0.25, 0.75, 0, 0, 0.38889],
+ 42: [0, 0.75, 0, 0, 0.5],
+ 43: [0.08333, 0.58333, 0, 0, 0.77778],
+ 44: [0.125, 0.08333, 0, 0, 0.27778],
+ 45: [0, 0.44444, 0, 0, 0.33333],
+ 46: [0, 0.08333, 0, 0, 0.27778],
+ 47: [0.25, 0.75, 0, 0, 0.5],
+ 48: [0, 0.65556, 0, 0, 0.5],
+ 49: [0, 0.65556, 0, 0, 0.5],
+ 50: [0, 0.65556, 0, 0, 0.5],
+ 51: [0, 0.65556, 0, 0, 0.5],
+ 52: [0, 0.65556, 0, 0, 0.5],
+ 53: [0, 0.65556, 0, 0, 0.5],
+ 54: [0, 0.65556, 0, 0, 0.5],
+ 55: [0, 0.65556, 0, 0, 0.5],
+ 56: [0, 0.65556, 0, 0, 0.5],
+ 57: [0, 0.65556, 0, 0, 0.5],
+ 58: [0, 0.44444, 0, 0, 0.27778],
+ 59: [0.125, 0.44444, 0, 0, 0.27778],
+ 61: [-0.13, 0.37, 0, 0, 0.77778],
+ 63: [0, 0.69444, 0, 0, 0.47222],
+ 64: [0, 0.69444, 0, 0, 0.66667],
+ 65: [0, 0.69444, 0, 0, 0.66667],
+ 66: [0, 0.69444, 0, 0, 0.66667],
+ 67: [0, 0.69444, 0, 0, 0.63889],
+ 68: [0, 0.69444, 0, 0, 0.72223],
+ 69: [0, 0.69444, 0, 0, 0.59722],
+ 70: [0, 0.69444, 0, 0, 0.56945],
+ 71: [0, 0.69444, 0, 0, 0.66667],
+ 72: [0, 0.69444, 0, 0, 0.70834],
+ 73: [0, 0.69444, 0, 0, 0.27778],
+ 74: [0, 0.69444, 0, 0, 0.47222],
+ 75: [0, 0.69444, 0, 0, 0.69445],
+ 76: [0, 0.69444, 0, 0, 0.54167],
+ 77: [0, 0.69444, 0, 0, 0.875],
+ 78: [0, 0.69444, 0, 0, 0.70834],
+ 79: [0, 0.69444, 0, 0, 0.73611],
+ 80: [0, 0.69444, 0, 0, 0.63889],
+ 81: [0.125, 0.69444, 0, 0, 0.73611],
+ 82: [0, 0.69444, 0, 0, 0.64584],
+ 83: [0, 0.69444, 0, 0, 0.55556],
+ 84: [0, 0.69444, 0, 0, 0.68056],
+ 85: [0, 0.69444, 0, 0, 0.6875],
+ 86: [0, 0.69444, 0.01389, 0, 0.66667],
+ 87: [0, 0.69444, 0.01389, 0, 0.94445],
+ 88: [0, 0.69444, 0, 0, 0.66667],
+ 89: [0, 0.69444, 0.025, 0, 0.66667],
+ 90: [0, 0.69444, 0, 0, 0.61111],
+ 91: [0.25, 0.75, 0, 0, 0.28889],
+ 93: [0.25, 0.75, 0, 0, 0.28889],
+ 94: [0, 0.69444, 0, 0, 0.5],
+ 95: [0.35, 0.09444, 0.02778, 0, 0.5],
+ 97: [0, 0.44444, 0, 0, 0.48056],
+ 98: [0, 0.69444, 0, 0, 0.51667],
+ 99: [0, 0.44444, 0, 0, 0.44445],
+ 100: [0, 0.69444, 0, 0, 0.51667],
+ 101: [0, 0.44444, 0, 0, 0.44445],
+ 102: [0, 0.69444, 0.06944, 0, 0.30556],
+ 103: [0.19444, 0.44444, 0.01389, 0, 0.5],
+ 104: [0, 0.69444, 0, 0, 0.51667],
+ 105: [0, 0.67937, 0, 0, 0.23889],
+ 106: [0.19444, 0.67937, 0, 0, 0.26667],
+ 107: [0, 0.69444, 0, 0, 0.48889],
+ 108: [0, 0.69444, 0, 0, 0.23889],
+ 109: [0, 0.44444, 0, 0, 0.79445],
+ 110: [0, 0.44444, 0, 0, 0.51667],
+ 111: [0, 0.44444, 0, 0, 0.5],
+ 112: [0.19444, 0.44444, 0, 0, 0.51667],
+ 113: [0.19444, 0.44444, 0, 0, 0.51667],
+ 114: [0, 0.44444, 0.01389, 0, 0.34167],
+ 115: [0, 0.44444, 0, 0, 0.38333],
+ 116: [0, 0.57143, 0, 0, 0.36111],
+ 117: [0, 0.44444, 0, 0, 0.51667],
+ 118: [0, 0.44444, 0.01389, 0, 0.46111],
+ 119: [0, 0.44444, 0.01389, 0, 0.68334],
+ 120: [0, 0.44444, 0, 0, 0.46111],
+ 121: [0.19444, 0.44444, 0.01389, 0, 0.46111],
+ 122: [0, 0.44444, 0, 0, 0.43472],
+ 126: [0.35, 0.32659, 0, 0, 0.5],
+ 160: [0, 0, 0, 0, 0.25],
+ 168: [0, 0.67937, 0, 0, 0.5],
+ 176: [0, 0.69444, 0, 0, 0.66667],
+ 184: [0.17014, 0, 0, 0, 0.44445],
+ 305: [0, 0.44444, 0, 0, 0.23889],
+ 567: [0.19444, 0.44444, 0, 0, 0.26667],
+ 710: [0, 0.69444, 0, 0, 0.5],
+ 711: [0, 0.63194, 0, 0, 0.5],
+ 713: [0, 0.60889, 0, 0, 0.5],
+ 714: [0, 0.69444, 0, 0, 0.5],
+ 715: [0, 0.69444, 0, 0, 0.5],
+ 728: [0, 0.69444, 0, 0, 0.5],
+ 729: [0, 0.67937, 0, 0, 0.27778],
+ 730: [0, 0.69444, 0, 0, 0.66667],
+ 732: [0, 0.67659, 0, 0, 0.5],
+ 733: [0, 0.69444, 0, 0, 0.5],
+ 915: [0, 0.69444, 0, 0, 0.54167],
+ 916: [0, 0.69444, 0, 0, 0.83334],
+ 920: [0, 0.69444, 0, 0, 0.77778],
+ 923: [0, 0.69444, 0, 0, 0.61111],
+ 926: [0, 0.69444, 0, 0, 0.66667],
+ 928: [0, 0.69444, 0, 0, 0.70834],
+ 931: [0, 0.69444, 0, 0, 0.72222],
+ 933: [0, 0.69444, 0, 0, 0.77778],
+ 934: [0, 0.69444, 0, 0, 0.72222],
+ 936: [0, 0.69444, 0, 0, 0.77778],
+ 937: [0, 0.69444, 0, 0, 0.72222],
+ 8211: [0, 0.44444, 0.02778, 0, 0.5],
+ 8212: [0, 0.44444, 0.02778, 0, 1],
+ 8216: [0, 0.69444, 0, 0, 0.27778],
+ 8217: [0, 0.69444, 0, 0, 0.27778],
+ 8220: [0, 0.69444, 0, 0, 0.5],
+ 8221: [0, 0.69444, 0, 0, 0.5],
+ },
+ "Script-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 65: [0, 0.7, 0.22925, 0, 0.80253],
+ 66: [0, 0.7, 0.04087, 0, 0.90757],
+ 67: [0, 0.7, 0.1689, 0, 0.66619],
+ 68: [0, 0.7, 0.09371, 0, 0.77443],
+ 69: [0, 0.7, 0.18583, 0, 0.56162],
+ 70: [0, 0.7, 0.13634, 0, 0.89544],
+ 71: [0, 0.7, 0.17322, 0, 0.60961],
+ 72: [0, 0.7, 0.29694, 0, 0.96919],
+ 73: [0, 0.7, 0.19189, 0, 0.80907],
+ 74: [0.27778, 0.7, 0.19189, 0, 1.05159],
+ 75: [0, 0.7, 0.31259, 0, 0.91364],
+ 76: [0, 0.7, 0.19189, 0, 0.87373],
+ 77: [0, 0.7, 0.15981, 0, 1.08031],
+ 78: [0, 0.7, 0.3525, 0, 0.9015],
+ 79: [0, 0.7, 0.08078, 0, 0.73787],
+ 80: [0, 0.7, 0.08078, 0, 1.01262],
+ 81: [0, 0.7, 0.03305, 0, 0.88282],
+ 82: [0, 0.7, 0.06259, 0, 0.85],
+ 83: [0, 0.7, 0.19189, 0, 0.86767],
+ 84: [0, 0.7, 0.29087, 0, 0.74697],
+ 85: [0, 0.7, 0.25815, 0, 0.79996],
+ 86: [0, 0.7, 0.27523, 0, 0.62204],
+ 87: [0, 0.7, 0.27523, 0, 0.80532],
+ 88: [0, 0.7, 0.26006, 0, 0.94445],
+ 89: [0, 0.7, 0.2939, 0, 0.70961],
+ 90: [0, 0.7, 0.24037, 0, 0.8212],
+ 160: [0, 0, 0, 0, 0.25],
+ },
+ "Size1-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 40: [0.35001, 0.85, 0, 0, 0.45834],
+ 41: [0.35001, 0.85, 0, 0, 0.45834],
+ 47: [0.35001, 0.85, 0, 0, 0.57778],
+ 91: [0.35001, 0.85, 0, 0, 0.41667],
+ 92: [0.35001, 0.85, 0, 0, 0.57778],
+ 93: [0.35001, 0.85, 0, 0, 0.41667],
+ 123: [0.35001, 0.85, 0, 0, 0.58334],
+ 125: [0.35001, 0.85, 0, 0, 0.58334],
+ 160: [0, 0, 0, 0, 0.25],
+ 710: [0, 0.72222, 0, 0, 0.55556],
+ 732: [0, 0.72222, 0, 0, 0.55556],
+ 770: [0, 0.72222, 0, 0, 0.55556],
+ 771: [0, 0.72222, 0, 0, 0.55556],
+ 8214: [-99e-5, 0.601, 0, 0, 0.77778],
+ 8593: [1e-5, 0.6, 0, 0, 0.66667],
+ 8595: [1e-5, 0.6, 0, 0, 0.66667],
+ 8657: [1e-5, 0.6, 0, 0, 0.77778],
+ 8659: [1e-5, 0.6, 0, 0, 0.77778],
+ 8719: [0.25001, 0.75, 0, 0, 0.94445],
+ 8720: [0.25001, 0.75, 0, 0, 0.94445],
+ 8721: [0.25001, 0.75, 0, 0, 1.05556],
+ 8730: [0.35001, 0.85, 0, 0, 1],
+ 8739: [-0.00599, 0.606, 0, 0, 0.33333],
+ 8741: [-0.00599, 0.606, 0, 0, 0.55556],
+ 8747: [0.30612, 0.805, 0.19445, 0, 0.47222],
+ 8748: [0.306, 0.805, 0.19445, 0, 0.47222],
+ 8749: [0.306, 0.805, 0.19445, 0, 0.47222],
+ 8750: [0.30612, 0.805, 0.19445, 0, 0.47222],
+ 8896: [0.25001, 0.75, 0, 0, 0.83334],
+ 8897: [0.25001, 0.75, 0, 0, 0.83334],
+ 8898: [0.25001, 0.75, 0, 0, 0.83334],
+ 8899: [0.25001, 0.75, 0, 0, 0.83334],
+ 8968: [0.35001, 0.85, 0, 0, 0.47222],
+ 8969: [0.35001, 0.85, 0, 0, 0.47222],
+ 8970: [0.35001, 0.85, 0, 0, 0.47222],
+ 8971: [0.35001, 0.85, 0, 0, 0.47222],
+ 9168: [-99e-5, 0.601, 0, 0, 0.66667],
+ 10216: [0.35001, 0.85, 0, 0, 0.47222],
+ 10217: [0.35001, 0.85, 0, 0, 0.47222],
+ 10752: [0.25001, 0.75, 0, 0, 1.11111],
+ 10753: [0.25001, 0.75, 0, 0, 1.11111],
+ 10754: [0.25001, 0.75, 0, 0, 1.11111],
+ 10756: [0.25001, 0.75, 0, 0, 0.83334],
+ 10758: [0.25001, 0.75, 0, 0, 0.83334],
+ },
+ "Size2-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 40: [0.65002, 1.15, 0, 0, 0.59722],
+ 41: [0.65002, 1.15, 0, 0, 0.59722],
+ 47: [0.65002, 1.15, 0, 0, 0.81111],
+ 91: [0.65002, 1.15, 0, 0, 0.47222],
+ 92: [0.65002, 1.15, 0, 0, 0.81111],
+ 93: [0.65002, 1.15, 0, 0, 0.47222],
+ 123: [0.65002, 1.15, 0, 0, 0.66667],
+ 125: [0.65002, 1.15, 0, 0, 0.66667],
+ 160: [0, 0, 0, 0, 0.25],
+ 710: [0, 0.75, 0, 0, 1],
+ 732: [0, 0.75, 0, 0, 1],
+ 770: [0, 0.75, 0, 0, 1],
+ 771: [0, 0.75, 0, 0, 1],
+ 8719: [0.55001, 1.05, 0, 0, 1.27778],
+ 8720: [0.55001, 1.05, 0, 0, 1.27778],
+ 8721: [0.55001, 1.05, 0, 0, 1.44445],
+ 8730: [0.65002, 1.15, 0, 0, 1],
+ 8747: [0.86225, 1.36, 0.44445, 0, 0.55556],
+ 8748: [0.862, 1.36, 0.44445, 0, 0.55556],
+ 8749: [0.862, 1.36, 0.44445, 0, 0.55556],
+ 8750: [0.86225, 1.36, 0.44445, 0, 0.55556],
+ 8896: [0.55001, 1.05, 0, 0, 1.11111],
+ 8897: [0.55001, 1.05, 0, 0, 1.11111],
+ 8898: [0.55001, 1.05, 0, 0, 1.11111],
+ 8899: [0.55001, 1.05, 0, 0, 1.11111],
+ 8968: [0.65002, 1.15, 0, 0, 0.52778],
+ 8969: [0.65002, 1.15, 0, 0, 0.52778],
+ 8970: [0.65002, 1.15, 0, 0, 0.52778],
+ 8971: [0.65002, 1.15, 0, 0, 0.52778],
+ 10216: [0.65002, 1.15, 0, 0, 0.61111],
+ 10217: [0.65002, 1.15, 0, 0, 0.61111],
+ 10752: [0.55001, 1.05, 0, 0, 1.51112],
+ 10753: [0.55001, 1.05, 0, 0, 1.51112],
+ 10754: [0.55001, 1.05, 0, 0, 1.51112],
+ 10756: [0.55001, 1.05, 0, 0, 1.11111],
+ 10758: [0.55001, 1.05, 0, 0, 1.11111],
+ },
+ "Size3-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 40: [0.95003, 1.45, 0, 0, 0.73611],
+ 41: [0.95003, 1.45, 0, 0, 0.73611],
+ 47: [0.95003, 1.45, 0, 0, 1.04445],
+ 91: [0.95003, 1.45, 0, 0, 0.52778],
+ 92: [0.95003, 1.45, 0, 0, 1.04445],
+ 93: [0.95003, 1.45, 0, 0, 0.52778],
+ 123: [0.95003, 1.45, 0, 0, 0.75],
+ 125: [0.95003, 1.45, 0, 0, 0.75],
+ 160: [0, 0, 0, 0, 0.25],
+ 710: [0, 0.75, 0, 0, 1.44445],
+ 732: [0, 0.75, 0, 0, 1.44445],
+ 770: [0, 0.75, 0, 0, 1.44445],
+ 771: [0, 0.75, 0, 0, 1.44445],
+ 8730: [0.95003, 1.45, 0, 0, 1],
+ 8968: [0.95003, 1.45, 0, 0, 0.58334],
+ 8969: [0.95003, 1.45, 0, 0, 0.58334],
+ 8970: [0.95003, 1.45, 0, 0, 0.58334],
+ 8971: [0.95003, 1.45, 0, 0, 0.58334],
+ 10216: [0.95003, 1.45, 0, 0, 0.75],
+ 10217: [0.95003, 1.45, 0, 0, 0.75],
+ },
+ "Size4-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 40: [1.25003, 1.75, 0, 0, 0.79167],
+ 41: [1.25003, 1.75, 0, 0, 0.79167],
+ 47: [1.25003, 1.75, 0, 0, 1.27778],
+ 91: [1.25003, 1.75, 0, 0, 0.58334],
+ 92: [1.25003, 1.75, 0, 0, 1.27778],
+ 93: [1.25003, 1.75, 0, 0, 0.58334],
+ 123: [1.25003, 1.75, 0, 0, 0.80556],
+ 125: [1.25003, 1.75, 0, 0, 0.80556],
+ 160: [0, 0, 0, 0, 0.25],
+ 710: [0, 0.825, 0, 0, 1.8889],
+ 732: [0, 0.825, 0, 0, 1.8889],
+ 770: [0, 0.825, 0, 0, 1.8889],
+ 771: [0, 0.825, 0, 0, 1.8889],
+ 8730: [1.25003, 1.75, 0, 0, 1],
+ 8968: [1.25003, 1.75, 0, 0, 0.63889],
+ 8969: [1.25003, 1.75, 0, 0, 0.63889],
+ 8970: [1.25003, 1.75, 0, 0, 0.63889],
+ 8971: [1.25003, 1.75, 0, 0, 0.63889],
+ 9115: [0.64502, 1.155, 0, 0, 0.875],
+ 9116: [1e-5, 0.6, 0, 0, 0.875],
+ 9117: [0.64502, 1.155, 0, 0, 0.875],
+ 9118: [0.64502, 1.155, 0, 0, 0.875],
+ 9119: [1e-5, 0.6, 0, 0, 0.875],
+ 9120: [0.64502, 1.155, 0, 0, 0.875],
+ 9121: [0.64502, 1.155, 0, 0, 0.66667],
+ 9122: [-99e-5, 0.601, 0, 0, 0.66667],
+ 9123: [0.64502, 1.155, 0, 0, 0.66667],
+ 9124: [0.64502, 1.155, 0, 0, 0.66667],
+ 9125: [-99e-5, 0.601, 0, 0, 0.66667],
+ 9126: [0.64502, 1.155, 0, 0, 0.66667],
+ 9127: [1e-5, 0.9, 0, 0, 0.88889],
+ 9128: [0.65002, 1.15, 0, 0, 0.88889],
+ 9129: [0.90001, 0, 0, 0, 0.88889],
+ 9130: [0, 0.3, 0, 0, 0.88889],
+ 9131: [1e-5, 0.9, 0, 0, 0.88889],
+ 9132: [0.65002, 1.15, 0, 0, 0.88889],
+ 9133: [0.90001, 0, 0, 0, 0.88889],
+ 9143: [0.88502, 0.915, 0, 0, 1.05556],
+ 10216: [1.25003, 1.75, 0, 0, 0.80556],
+ 10217: [1.25003, 1.75, 0, 0, 0.80556],
+ 57344: [-0.00499, 0.605, 0, 0, 1.05556],
+ 57345: [-0.00499, 0.605, 0, 0, 1.05556],
+ 57680: [0, 0.12, 0, 0, 0.45],
+ 57681: [0, 0.12, 0, 0, 0.45],
+ 57682: [0, 0.12, 0, 0, 0.45],
+ 57683: [0, 0.12, 0, 0, 0.45],
+ },
+ "Typewriter-Regular": {
+ 32: [0, 0, 0, 0, 0.525],
+ 33: [0, 0.61111, 0, 0, 0.525],
+ 34: [0, 0.61111, 0, 0, 0.525],
+ 35: [0, 0.61111, 0, 0, 0.525],
+ 36: [0.08333, 0.69444, 0, 0, 0.525],
+ 37: [0.08333, 0.69444, 0, 0, 0.525],
+ 38: [0, 0.61111, 0, 0, 0.525],
+ 39: [0, 0.61111, 0, 0, 0.525],
+ 40: [0.08333, 0.69444, 0, 0, 0.525],
+ 41: [0.08333, 0.69444, 0, 0, 0.525],
+ 42: [0, 0.52083, 0, 0, 0.525],
+ 43: [-0.08056, 0.53055, 0, 0, 0.525],
+ 44: [0.13889, 0.125, 0, 0, 0.525],
+ 45: [-0.08056, 0.53055, 0, 0, 0.525],
+ 46: [0, 0.125, 0, 0, 0.525],
+ 47: [0.08333, 0.69444, 0, 0, 0.525],
+ 48: [0, 0.61111, 0, 0, 0.525],
+ 49: [0, 0.61111, 0, 0, 0.525],
+ 50: [0, 0.61111, 0, 0, 0.525],
+ 51: [0, 0.61111, 0, 0, 0.525],
+ 52: [0, 0.61111, 0, 0, 0.525],
+ 53: [0, 0.61111, 0, 0, 0.525],
+ 54: [0, 0.61111, 0, 0, 0.525],
+ 55: [0, 0.61111, 0, 0, 0.525],
+ 56: [0, 0.61111, 0, 0, 0.525],
+ 57: [0, 0.61111, 0, 0, 0.525],
+ 58: [0, 0.43056, 0, 0, 0.525],
+ 59: [0.13889, 0.43056, 0, 0, 0.525],
+ 60: [-0.05556, 0.55556, 0, 0, 0.525],
+ 61: [-0.19549, 0.41562, 0, 0, 0.525],
+ 62: [-0.05556, 0.55556, 0, 0, 0.525],
+ 63: [0, 0.61111, 0, 0, 0.525],
+ 64: [0, 0.61111, 0, 0, 0.525],
+ 65: [0, 0.61111, 0, 0, 0.525],
+ 66: [0, 0.61111, 0, 0, 0.525],
+ 67: [0, 0.61111, 0, 0, 0.525],
+ 68: [0, 0.61111, 0, 0, 0.525],
+ 69: [0, 0.61111, 0, 0, 0.525],
+ 70: [0, 0.61111, 0, 0, 0.525],
+ 71: [0, 0.61111, 0, 0, 0.525],
+ 72: [0, 0.61111, 0, 0, 0.525],
+ 73: [0, 0.61111, 0, 0, 0.525],
+ 74: [0, 0.61111, 0, 0, 0.525],
+ 75: [0, 0.61111, 0, 0, 0.525],
+ 76: [0, 0.61111, 0, 0, 0.525],
+ 77: [0, 0.61111, 0, 0, 0.525],
+ 78: [0, 0.61111, 0, 0, 0.525],
+ 79: [0, 0.61111, 0, 0, 0.525],
+ 80: [0, 0.61111, 0, 0, 0.525],
+ 81: [0.13889, 0.61111, 0, 0, 0.525],
+ 82: [0, 0.61111, 0, 0, 0.525],
+ 83: [0, 0.61111, 0, 0, 0.525],
+ 84: [0, 0.61111, 0, 0, 0.525],
+ 85: [0, 0.61111, 0, 0, 0.525],
+ 86: [0, 0.61111, 0, 0, 0.525],
+ 87: [0, 0.61111, 0, 0, 0.525],
+ 88: [0, 0.61111, 0, 0, 0.525],
+ 89: [0, 0.61111, 0, 0, 0.525],
+ 90: [0, 0.61111, 0, 0, 0.525],
+ 91: [0.08333, 0.69444, 0, 0, 0.525],
+ 92: [0.08333, 0.69444, 0, 0, 0.525],
+ 93: [0.08333, 0.69444, 0, 0, 0.525],
+ 94: [0, 0.61111, 0, 0, 0.525],
+ 95: [0.09514, 0, 0, 0, 0.525],
+ 96: [0, 0.61111, 0, 0, 0.525],
+ 97: [0, 0.43056, 0, 0, 0.525],
+ 98: [0, 0.61111, 0, 0, 0.525],
+ 99: [0, 0.43056, 0, 0, 0.525],
+ 100: [0, 0.61111, 0, 0, 0.525],
+ 101: [0, 0.43056, 0, 0, 0.525],
+ 102: [0, 0.61111, 0, 0, 0.525],
+ 103: [0.22222, 0.43056, 0, 0, 0.525],
+ 104: [0, 0.61111, 0, 0, 0.525],
+ 105: [0, 0.61111, 0, 0, 0.525],
+ 106: [0.22222, 0.61111, 0, 0, 0.525],
+ 107: [0, 0.61111, 0, 0, 0.525],
+ 108: [0, 0.61111, 0, 0, 0.525],
+ 109: [0, 0.43056, 0, 0, 0.525],
+ 110: [0, 0.43056, 0, 0, 0.525],
+ 111: [0, 0.43056, 0, 0, 0.525],
+ 112: [0.22222, 0.43056, 0, 0, 0.525],
+ 113: [0.22222, 0.43056, 0, 0, 0.525],
+ 114: [0, 0.43056, 0, 0, 0.525],
+ 115: [0, 0.43056, 0, 0, 0.525],
+ 116: [0, 0.55358, 0, 0, 0.525],
+ 117: [0, 0.43056, 0, 0, 0.525],
+ 118: [0, 0.43056, 0, 0, 0.525],
+ 119: [0, 0.43056, 0, 0, 0.525],
+ 120: [0, 0.43056, 0, 0, 0.525],
+ 121: [0.22222, 0.43056, 0, 0, 0.525],
+ 122: [0, 0.43056, 0, 0, 0.525],
+ 123: [0.08333, 0.69444, 0, 0, 0.525],
+ 124: [0.08333, 0.69444, 0, 0, 0.525],
+ 125: [0.08333, 0.69444, 0, 0, 0.525],
+ 126: [0, 0.61111, 0, 0, 0.525],
+ 127: [0, 0.61111, 0, 0, 0.525],
+ 160: [0, 0, 0, 0, 0.525],
+ 176: [0, 0.61111, 0, 0, 0.525],
+ 184: [0.19445, 0, 0, 0, 0.525],
+ 305: [0, 0.43056, 0, 0, 0.525],
+ 567: [0.22222, 0.43056, 0, 0, 0.525],
+ 711: [0, 0.56597, 0, 0, 0.525],
+ 713: [0, 0.56555, 0, 0, 0.525],
+ 714: [0, 0.61111, 0, 0, 0.525],
+ 715: [0, 0.61111, 0, 0, 0.525],
+ 728: [0, 0.61111, 0, 0, 0.525],
+ 730: [0, 0.61111, 0, 0, 0.525],
+ 770: [0, 0.61111, 0, 0, 0.525],
+ 771: [0, 0.61111, 0, 0, 0.525],
+ 776: [0, 0.61111, 0, 0, 0.525],
+ 915: [0, 0.61111, 0, 0, 0.525],
+ 916: [0, 0.61111, 0, 0, 0.525],
+ 920: [0, 0.61111, 0, 0, 0.525],
+ 923: [0, 0.61111, 0, 0, 0.525],
+ 926: [0, 0.61111, 0, 0, 0.525],
+ 928: [0, 0.61111, 0, 0, 0.525],
+ 931: [0, 0.61111, 0, 0, 0.525],
+ 933: [0, 0.61111, 0, 0, 0.525],
+ 934: [0, 0.61111, 0, 0, 0.525],
+ 936: [0, 0.61111, 0, 0, 0.525],
+ 937: [0, 0.61111, 0, 0, 0.525],
+ 8216: [0, 0.61111, 0, 0, 0.525],
+ 8217: [0, 0.61111, 0, 0, 0.525],
+ 8242: [0, 0.61111, 0, 0, 0.525],
+ 9251: [0.11111, 0.21944, 0, 0, 0.525],
+ },
+ },
+ R = {
+ slant: [0.25, 0.25, 0.25],
+ space: [0, 0, 0],
+ stretch: [0, 0, 0],
+ shrink: [0, 0, 0],
+ xHeight: [0.431, 0.431, 0.431],
+ quad: [1, 1.171, 1.472],
+ extraSpace: [0, 0, 0],
+ num1: [0.677, 0.732, 0.925],
+ num2: [0.394, 0.384, 0.387],
+ num3: [0.444, 0.471, 0.504],
+ denom1: [0.686, 0.752, 1.025],
+ denom2: [0.345, 0.344, 0.532],
+ sup1: [0.413, 0.503, 0.504],
+ sup2: [0.363, 0.431, 0.404],
+ sup3: [0.289, 0.286, 0.294],
+ sub1: [0.15, 0.143, 0.2],
+ sub2: [0.247, 0.286, 0.4],
+ supDrop: [0.386, 0.353, 0.494],
+ subDrop: [0.05, 0.071, 0.1],
+ delim1: [2.39, 1.7, 1.98],
+ delim2: [1.01, 1.157, 1.42],
+ axisHeight: [0.25, 0.25, 0.25],
+ defaultRuleThickness: [0.04, 0.049, 0.049],
+ bigOpSpacing1: [0.111, 0.111, 0.111],
+ bigOpSpacing2: [0.166, 0.166, 0.166],
+ bigOpSpacing3: [0.2, 0.2, 0.2],
+ bigOpSpacing4: [0.6, 0.611, 0.611],
+ bigOpSpacing5: [0.1, 0.143, 0.143],
+ sqrtRuleThickness: [0.04, 0.04, 0.04],
+ ptPerEm: [10, 10, 10],
+ doubleRuleSep: [0.2, 0.2, 0.2],
+ arrayRuleWidth: [0.04, 0.04, 0.04],
+ fboxsep: [0.3, 0.3, 0.3],
+ fboxrule: [0.04, 0.04, 0.04],
+ },
+ H = {
+ Å: "A",
+ Ð: "D",
+ Þ: "o",
+ å: "a",
+ ð: "d",
+ þ: "o",
+ А: "A",
+ Б: "B",
+ В: "B",
+ Г: "F",
+ Д: "A",
+ Е: "E",
+ Ж: "K",
+ З: "3",
+ И: "N",
+ Й: "N",
+ К: "K",
+ Л: "N",
+ М: "M",
+ Н: "H",
+ О: "O",
+ П: "N",
+ Р: "P",
+ С: "C",
+ Т: "T",
+ У: "y",
+ Ф: "O",
+ Х: "X",
+ Ц: "U",
+ Ч: "h",
+ Ш: "W",
+ Щ: "W",
+ Ъ: "B",
+ Ы: "X",
+ Ь: "B",
+ Э: "3",
+ Ю: "X",
+ Я: "R",
+ а: "a",
+ б: "b",
+ в: "a",
+ г: "r",
+ д: "y",
+ е: "e",
+ ж: "m",
+ з: "e",
+ и: "n",
+ й: "n",
+ к: "n",
+ л: "n",
+ м: "m",
+ н: "n",
+ о: "o",
+ п: "n",
+ р: "p",
+ с: "c",
+ т: "o",
+ у: "y",
+ ф: "b",
+ х: "x",
+ ц: "n",
+ ч: "n",
+ ш: "w",
+ щ: "w",
+ ъ: "a",
+ ы: "m",
+ ь: "a",
+ э: "e",
+ ю: "m",
+ я: "r",
+ };
+ function O(e, t, r) {
+ if (!I[t]) throw new Error("Font metrics not found for font: " + t + ".");
+ var n = e.charCodeAt(0),
+ a = I[t][n];
+ if ((!a && e[0] in H && ((n = H[e[0]].charCodeAt(0)), (a = I[t][n])), a || "text" !== r || (N(n) && (a = I[t][77])), a))
+ return { depth: a[0], height: a[1], italic: a[2], skew: a[3], width: a[4] };
+ }
+ var E = {},
+ L = [
+ [1, 1, 1],
+ [2, 1, 1],
+ [3, 1, 1],
+ [4, 2, 1],
+ [5, 2, 1],
+ [6, 3, 1],
+ [7, 4, 2],
+ [8, 6, 3],
+ [9, 7, 6],
+ [10, 8, 7],
+ [11, 10, 9],
+ ],
+ D = [0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.2, 1.44, 1.728, 2.074, 2.488],
+ P = function (e, t) {
+ return t.size < 2 ? e : L[e - 1][t.size - 1];
+ },
+ V = (function () {
+ function e(t) {
+ (this.style = void 0),
+ (this.color = void 0),
+ (this.size = void 0),
+ (this.textSize = void 0),
+ (this.phantom = void 0),
+ (this.font = void 0),
+ (this.fontFamily = void 0),
+ (this.fontWeight = void 0),
+ (this.fontShape = void 0),
+ (this.sizeMultiplier = void 0),
+ (this.maxSize = void 0),
+ (this.minRuleThickness = void 0),
+ (this._fontMetrics = void 0),
+ (this.style = t.style),
+ (this.color = t.color),
+ (this.size = t.size || e.BASESIZE),
+ (this.textSize = t.textSize || this.size),
+ (this.phantom = !!t.phantom),
+ (this.font = t.font || ""),
+ (this.fontFamily = t.fontFamily || ""),
+ (this.fontWeight = t.fontWeight || ""),
+ (this.fontShape = t.fontShape || ""),
+ (this.sizeMultiplier = D[this.size - 1]),
+ (this.maxSize = t.maxSize),
+ (this.minRuleThickness = t.minRuleThickness),
+ (this._fontMetrics = void 0);
+ }
+ var t = e.prototype;
+ return (
+ (t.extend = function (t) {
+ var r = {
+ style: this.style,
+ size: this.size,
+ textSize: this.textSize,
+ color: this.color,
+ phantom: this.phantom,
+ font: this.font,
+ fontFamily: this.fontFamily,
+ fontWeight: this.fontWeight,
+ fontShape: this.fontShape,
+ maxSize: this.maxSize,
+ minRuleThickness: this.minRuleThickness,
+ };
+ for (var n in t) t.hasOwnProperty(n) && (r[n] = t[n]);
+ return new e(r);
+ }),
+ (t.havingStyle = function (e) {
+ return this.style === e ? this : this.extend({ style: e, size: P(this.textSize, e) });
+ }),
+ (t.havingCrampedStyle = function () {
+ return this.havingStyle(this.style.cramp());
+ }),
+ (t.havingSize = function (e) {
+ return this.size === e && this.textSize === e
+ ? this
+ : this.extend({
+ style: this.style.text(),
+ size: e,
+ textSize: e,
+ sizeMultiplier: D[e - 1],
+ });
+ }),
+ (t.havingBaseStyle = function (t) {
+ t = t || this.style.text();
+ var r = P(e.BASESIZE, t);
+ return this.size === r && this.textSize === e.BASESIZE && this.style === t ? this : this.extend({ style: t, size: r });
+ }),
+ (t.havingBaseSizing = function () {
+ var e;
+ switch (this.style.id) {
+ case 4:
+ case 5:
+ e = 3;
+ break;
+ case 6:
+ case 7:
+ e = 1;
+ break;
+ default:
+ e = 6;
+ }
+ return this.extend({ style: this.style.text(), size: e });
+ }),
+ (t.withColor = function (e) {
+ return this.extend({ color: e });
+ }),
+ (t.withPhantom = function () {
+ return this.extend({ phantom: !0 });
+ }),
+ (t.withFont = function (e) {
+ return this.extend({ font: e });
+ }),
+ (t.withTextFontFamily = function (e) {
+ return this.extend({ fontFamily: e, font: "" });
+ }),
+ (t.withTextFontWeight = function (e) {
+ return this.extend({ fontWeight: e, font: "" });
+ }),
+ (t.withTextFontShape = function (e) {
+ return this.extend({ fontShape: e, font: "" });
+ }),
+ (t.sizingClasses = function (e) {
+ return e.size !== this.size ? ["sizing", "reset-size" + e.size, "size" + this.size] : [];
+ }),
+ (t.baseSizingClasses = function () {
+ return this.size !== e.BASESIZE ? ["sizing", "reset-size" + this.size, "size" + e.BASESIZE] : [];
+ }),
+ (t.fontMetrics = function () {
+ return (
+ this._fontMetrics ||
+ (this._fontMetrics = (function (e) {
+ var t;
+ if (!E[(t = e >= 5 ? 0 : e >= 3 ? 1 : 2)]) {
+ var r = (E[t] = { cssEmPerMu: R.quad[t] / 18 });
+ for (var n in R) R.hasOwnProperty(n) && (r[n] = R[n][t]);
+ }
+ return E[t];
+ })(this.size)),
+ this._fontMetrics
+ );
+ }),
+ (t.getColor = function () {
+ return this.phantom ? "transparent" : this.color;
+ }),
+ e
+ );
+ })();
+ V.BASESIZE = 6;
+ var F = V,
+ G = {
+ pt: 1,
+ mm: 7227 / 2540,
+ cm: 7227 / 254,
+ in: 72.27,
+ bp: 1.00375,
+ pc: 12,
+ dd: 1238 / 1157,
+ cc: 14856 / 1157,
+ nd: 685 / 642,
+ nc: 1370 / 107,
+ sp: 1 / 65536,
+ px: 1.00375,
+ },
+ U = { ex: !0, em: !0, mu: !0 },
+ Y = function (e) {
+ return "string" != typeof e && (e = e.unit), e in G || e in U || "ex" === e;
+ },
+ X = function (e, t) {
+ var r;
+ if (e.unit in G) r = G[e.unit] / t.fontMetrics().ptPerEm / t.sizeMultiplier;
+ else if ("mu" === e.unit) r = t.fontMetrics().cssEmPerMu;
+ else {
+ var a;
+ if (((a = t.style.isTight() ? t.havingStyle(t.style.text()) : t), "ex" === e.unit)) r = a.fontMetrics().xHeight;
+ else {
+ if ("em" !== e.unit) throw new n("Invalid unit: '" + e.unit + "'");
+ r = a.fontMetrics().quad;
+ }
+ a !== t && (r *= a.sizeMultiplier / t.sizeMultiplier);
+ }
+ return Math.min(e.number * r, t.maxSize);
+ },
+ W = function (e) {
+ return +e.toFixed(4) + "em";
+ },
+ _ = function (e) {
+ return e
+ .filter(function (e) {
+ return e;
+ })
+ .join(" ");
+ },
+ j = function (e, t, r) {
+ if (
+ ((this.classes = e || []),
+ (this.attributes = {}),
+ (this.height = 0),
+ (this.depth = 0),
+ (this.maxFontSize = 0),
+ (this.style = r || {}),
+ t)
+ ) {
+ t.style.isTight() && this.classes.push("mtight");
+ var n = t.getColor();
+ n && (this.style.color = n);
+ }
+ },
+ $ = function (e) {
+ var t = document.createElement(e);
+ for (var r in ((t.className = _(this.classes)), this.style)) this.style.hasOwnProperty(r) && (t.style[r] = this.style[r]);
+ for (var n in this.attributes) this.attributes.hasOwnProperty(n) && t.setAttribute(n, this.attributes[n]);
+ for (var a = 0; a < this.children.length; a++) t.appendChild(this.children[a].toNode());
+ return t;
+ },
+ Z = function (e) {
+ var t = "<" + e;
+ this.classes.length && (t += ' class="' + c(_(this.classes)) + '"');
+ var r = "";
+ for (var n in this.style) this.style.hasOwnProperty(n) && (r += m(n) + ":" + this.style[n] + ";");
+ for (var a in (r && (t += ' style="' + c(r) + '"'), this.attributes))
+ this.attributes.hasOwnProperty(a) && (t += " " + a + '="' + c(this.attributes[a]) + '"');
+ t += ">";
+ for (var i = 0; i < this.children.length; i++) t += this.children[i].toMarkup();
+ return t + "" + e + ">";
+ },
+ K = (function () {
+ function e(e, t, r, n) {
+ (this.children = void 0),
+ (this.attributes = void 0),
+ (this.classes = void 0),
+ (this.height = void 0),
+ (this.depth = void 0),
+ (this.width = void 0),
+ (this.maxFontSize = void 0),
+ (this.style = void 0),
+ j.call(this, e, r, n),
+ (this.children = t || []);
+ }
+ var t = e.prototype;
+ return (
+ (t.setAttribute = function (e, t) {
+ this.attributes[e] = t;
+ }),
+ (t.hasClass = function (e) {
+ return l(this.classes, e);
+ }),
+ (t.toNode = function () {
+ return $.call(this, "span");
+ }),
+ (t.toMarkup = function () {
+ return Z.call(this, "span");
+ }),
+ e
+ );
+ })(),
+ J = (function () {
+ function e(e, t, r, n) {
+ (this.children = void 0),
+ (this.attributes = void 0),
+ (this.classes = void 0),
+ (this.height = void 0),
+ (this.depth = void 0),
+ (this.maxFontSize = void 0),
+ (this.style = void 0),
+ j.call(this, t, n),
+ (this.children = r || []),
+ this.setAttribute("href", e);
+ }
+ var t = e.prototype;
+ return (
+ (t.setAttribute = function (e, t) {
+ this.attributes[e] = t;
+ }),
+ (t.hasClass = function (e) {
+ return l(this.classes, e);
+ }),
+ (t.toNode = function () {
+ return $.call(this, "a");
+ }),
+ (t.toMarkup = function () {
+ return Z.call(this, "a");
+ }),
+ e
+ );
+ })(),
+ Q = (function () {
+ function e(e, t, r) {
+ (this.src = void 0),
+ (this.alt = void 0),
+ (this.classes = void 0),
+ (this.height = void 0),
+ (this.depth = void 0),
+ (this.maxFontSize = void 0),
+ (this.style = void 0),
+ (this.alt = t),
+ (this.src = e),
+ (this.classes = ["mord"]),
+ (this.style = r);
+ }
+ var t = e.prototype;
+ return (
+ (t.hasClass = function (e) {
+ return l(this.classes, e);
+ }),
+ (t.toNode = function () {
+ var e = document.createElement("img");
+ for (var t in ((e.src = this.src), (e.alt = this.alt), (e.className = "mord"), this.style))
+ this.style.hasOwnProperty(t) && (e.style[t] = this.style[t]);
+ return e;
+ }),
+ (t.toMarkup = function () {
+ var e = "
";
+ }),
+ e
+ );
+ })(),
+ ee = { î: "ı̂", ï: "ı̈", í: "ı́", ì: "ı̀" },
+ te = (function () {
+ function e(e, t, r, n, a, i, o, s) {
+ (this.text = void 0),
+ (this.height = void 0),
+ (this.depth = void 0),
+ (this.italic = void 0),
+ (this.skew = void 0),
+ (this.width = void 0),
+ (this.maxFontSize = void 0),
+ (this.classes = void 0),
+ (this.style = void 0),
+ (this.text = e),
+ (this.height = t || 0),
+ (this.depth = r || 0),
+ (this.italic = n || 0),
+ (this.skew = a || 0),
+ (this.width = i || 0),
+ (this.classes = o || []),
+ (this.style = s || {}),
+ (this.maxFontSize = 0);
+ var l = (function (e) {
+ for (var t = 0; t < T.length; t++)
+ for (var r = T[t], n = 0; n < r.blocks.length; n++) {
+ var a = r.blocks[n];
+ if (e >= a[0] && e <= a[1]) return r.name;
+ }
+ return null;
+ })(this.text.charCodeAt(0));
+ l && this.classes.push(l + "_fallback"), /[îïíì]/.test(this.text) && (this.text = ee[this.text]);
+ }
+ var t = e.prototype;
+ return (
+ (t.hasClass = function (e) {
+ return l(this.classes, e);
+ }),
+ (t.toNode = function () {
+ var e = document.createTextNode(this.text),
+ t = null;
+ for (var r in (this.italic > 0 && ((t = document.createElement("span")).style.marginRight = W(this.italic)),
+ this.classes.length > 0 && ((t = t || document.createElement("span")).className = _(this.classes)),
+ this.style))
+ this.style.hasOwnProperty(r) && ((t = t || document.createElement("span")).style[r] = this.style[r]);
+ return t ? (t.appendChild(e), t) : e;
+ }),
+ (t.toMarkup = function () {
+ var e = !1,
+ t = " 0 && (r += "margin-right:" + this.italic + "em;"), this.style))
+ this.style.hasOwnProperty(n) && (r += m(n) + ":" + this.style[n] + ";");
+ r && ((e = !0), (t += ' style="' + c(r) + '"'));
+ var a = c(this.text);
+ return e ? ((t += ">"), (t += a), (t += "")) : a;
+ }),
+ e
+ );
+ })(),
+ re = (function () {
+ function e(e, t) {
+ (this.children = void 0), (this.attributes = void 0), (this.children = e || []), (this.attributes = t || {});
+ }
+ var t = e.prototype;
+ return (
+ (t.toNode = function () {
+ var e = document.createElementNS("http://www.w3.org/2000/svg", "svg");
+ for (var t in this.attributes) Object.prototype.hasOwnProperty.call(this.attributes, t) && e.setAttribute(t, this.attributes[t]);
+ for (var r = 0; r < this.children.length; r++) e.appendChild(this.children[r].toNode());
+ return e;
+ }),
+ (t.toMarkup = function () {
+ var e = '";
+ for (var r = 0; r < this.children.length; r++) e += this.children[r].toMarkup();
+ return e + " ";
+ }),
+ e
+ );
+ })(),
+ ne = (function () {
+ function e(e, t) {
+ (this.pathName = void 0), (this.alternate = void 0), (this.pathName = e), (this.alternate = t);
+ }
+ var t = e.prototype;
+ return (
+ (t.toNode = function () {
+ var e = document.createElementNS("http://www.w3.org/2000/svg", "path");
+ return this.alternate ? e.setAttribute("d", this.alternate) : e.setAttribute("d", C[this.pathName]), e;
+ }),
+ (t.toMarkup = function () {
+ return this.alternate ? " " : " ";
+ }),
+ e
+ );
+ })(),
+ ae = (function () {
+ function e(e) {
+ (this.attributes = void 0), (this.attributes = e || {});
+ }
+ var t = e.prototype;
+ return (
+ (t.toNode = function () {
+ var e = document.createElementNS("http://www.w3.org/2000/svg", "line");
+ for (var t in this.attributes) Object.prototype.hasOwnProperty.call(this.attributes, t) && e.setAttribute(t, this.attributes[t]);
+ return e;
+ }),
+ (t.toMarkup = function () {
+ var e = " ";
+ }),
+ e
+ );
+ })();
+ function ie(e) {
+ if (e instanceof te) return e;
+ throw new Error("Expected symbolNode but got " + String(e) + ".");
+ }
+ var oe = { bin: 1, close: 1, inner: 1, open: 1, punct: 1, rel: 1 },
+ se = { "accent-token": 1, mathord: 1, "op-token": 1, spacing: 1, textord: 1 },
+ le = { math: {}, text: {} },
+ he = le;
+ function ce(e, t, r, n, a, i) {
+ (le[e][a] = { font: t, group: r, replace: n }), i && n && (le[e][n] = le[e][a]);
+ }
+ var me = "math",
+ ue = "text",
+ pe = "main",
+ de = "ams",
+ fe = "accent-token",
+ ge = "bin",
+ ve = "close",
+ ye = "inner",
+ be = "mathord",
+ xe = "op-token",
+ we = "open",
+ ke = "punct",
+ Se = "rel",
+ Me = "spacing",
+ ze = "textord";
+ ce(me, pe, Se, "≡", "\\equiv", !0),
+ ce(me, pe, Se, "≺", "\\prec", !0),
+ ce(me, pe, Se, "≻", "\\succ", !0),
+ ce(me, pe, Se, "∼", "\\sim", !0),
+ ce(me, pe, Se, "⊥", "\\perp"),
+ ce(me, pe, Se, "⪯", "\\preceq", !0),
+ ce(me, pe, Se, "⪰", "\\succeq", !0),
+ ce(me, pe, Se, "≃", "\\simeq", !0),
+ ce(me, pe, Se, "∣", "\\mid", !0),
+ ce(me, pe, Se, "≪", "\\ll", !0),
+ ce(me, pe, Se, "≫", "\\gg", !0),
+ ce(me, pe, Se, "≍", "\\asymp", !0),
+ ce(me, pe, Se, "∥", "\\parallel"),
+ ce(me, pe, Se, "⋈", "\\bowtie", !0),
+ ce(me, pe, Se, "⌣", "\\smile", !0),
+ ce(me, pe, Se, "⊑", "\\sqsubseteq", !0),
+ ce(me, pe, Se, "⊒", "\\sqsupseteq", !0),
+ ce(me, pe, Se, "≐", "\\doteq", !0),
+ ce(me, pe, Se, "⌢", "\\frown", !0),
+ ce(me, pe, Se, "∋", "\\ni", !0),
+ ce(me, pe, Se, "∝", "\\propto", !0),
+ ce(me, pe, Se, "⊢", "\\vdash", !0),
+ ce(me, pe, Se, "⊣", "\\dashv", !0),
+ ce(me, pe, Se, "∋", "\\owns"),
+ ce(me, pe, ke, ".", "\\ldotp"),
+ ce(me, pe, ke, "⋅", "\\cdotp"),
+ ce(me, pe, ze, "#", "\\#"),
+ ce(ue, pe, ze, "#", "\\#"),
+ ce(me, pe, ze, "&", "\\&"),
+ ce(ue, pe, ze, "&", "\\&"),
+ ce(me, pe, ze, "ℵ", "\\aleph", !0),
+ ce(me, pe, ze, "∀", "\\forall", !0),
+ ce(me, pe, ze, "ℏ", "\\hbar", !0),
+ ce(me, pe, ze, "∃", "\\exists", !0),
+ ce(me, pe, ze, "∇", "\\nabla", !0),
+ ce(me, pe, ze, "♭", "\\flat", !0),
+ ce(me, pe, ze, "ℓ", "\\ell", !0),
+ ce(me, pe, ze, "♮", "\\natural", !0),
+ ce(me, pe, ze, "♣", "\\clubsuit", !0),
+ ce(me, pe, ze, "℘", "\\wp", !0),
+ ce(me, pe, ze, "♯", "\\sharp", !0),
+ ce(me, pe, ze, "♢", "\\diamondsuit", !0),
+ ce(me, pe, ze, "ℜ", "\\Re", !0),
+ ce(me, pe, ze, "♡", "\\heartsuit", !0),
+ ce(me, pe, ze, "ℑ", "\\Im", !0),
+ ce(me, pe, ze, "♠", "\\spadesuit", !0),
+ ce(me, pe, ze, "§", "\\S", !0),
+ ce(ue, pe, ze, "§", "\\S"),
+ ce(me, pe, ze, "¶", "\\P", !0),
+ ce(ue, pe, ze, "¶", "\\P"),
+ ce(me, pe, ze, "†", "\\dag"),
+ ce(ue, pe, ze, "†", "\\dag"),
+ ce(ue, pe, ze, "†", "\\textdagger"),
+ ce(me, pe, ze, "‡", "\\ddag"),
+ ce(ue, pe, ze, "‡", "\\ddag"),
+ ce(ue, pe, ze, "‡", "\\textdaggerdbl"),
+ ce(me, pe, ve, "⎱", "\\rmoustache", !0),
+ ce(me, pe, we, "⎰", "\\lmoustache", !0),
+ ce(me, pe, ve, "⟯", "\\rgroup", !0),
+ ce(me, pe, we, "⟮", "\\lgroup", !0),
+ ce(me, pe, ge, "∓", "\\mp", !0),
+ ce(me, pe, ge, "⊖", "\\ominus", !0),
+ ce(me, pe, ge, "⊎", "\\uplus", !0),
+ ce(me, pe, ge, "⊓", "\\sqcap", !0),
+ ce(me, pe, ge, "∗", "\\ast"),
+ ce(me, pe, ge, "⊔", "\\sqcup", !0),
+ ce(me, pe, ge, "◯", "\\bigcirc", !0),
+ ce(me, pe, ge, "∙", "\\bullet", !0),
+ ce(me, pe, ge, "‡", "\\ddagger"),
+ ce(me, pe, ge, "≀", "\\wr", !0),
+ ce(me, pe, ge, "⨿", "\\amalg"),
+ ce(me, pe, ge, "&", "\\And"),
+ ce(me, pe, Se, "⟵", "\\longleftarrow", !0),
+ ce(me, pe, Se, "⇐", "\\Leftarrow", !0),
+ ce(me, pe, Se, "⟸", "\\Longleftarrow", !0),
+ ce(me, pe, Se, "⟶", "\\longrightarrow", !0),
+ ce(me, pe, Se, "⇒", "\\Rightarrow", !0),
+ ce(me, pe, Se, "⟹", "\\Longrightarrow", !0),
+ ce(me, pe, Se, "↔", "\\leftrightarrow", !0),
+ ce(me, pe, Se, "⟷", "\\longleftrightarrow", !0),
+ ce(me, pe, Se, "⇔", "\\Leftrightarrow", !0),
+ ce(me, pe, Se, "⟺", "\\Longleftrightarrow", !0),
+ ce(me, pe, Se, "↦", "\\mapsto", !0),
+ ce(me, pe, Se, "⟼", "\\longmapsto", !0),
+ ce(me, pe, Se, "↗", "\\nearrow", !0),
+ ce(me, pe, Se, "↩", "\\hookleftarrow", !0),
+ ce(me, pe, Se, "↪", "\\hookrightarrow", !0),
+ ce(me, pe, Se, "↘", "\\searrow", !0),
+ ce(me, pe, Se, "↼", "\\leftharpoonup", !0),
+ ce(me, pe, Se, "⇀", "\\rightharpoonup", !0),
+ ce(me, pe, Se, "↙", "\\swarrow", !0),
+ ce(me, pe, Se, "↽", "\\leftharpoondown", !0),
+ ce(me, pe, Se, "⇁", "\\rightharpoondown", !0),
+ ce(me, pe, Se, "↖", "\\nwarrow", !0),
+ ce(me, pe, Se, "⇌", "\\rightleftharpoons", !0),
+ ce(me, de, Se, "≮", "\\nless", !0),
+ ce(me, de, Se, "", "\\@nleqslant"),
+ ce(me, de, Se, "", "\\@nleqq"),
+ ce(me, de, Se, "⪇", "\\lneq", !0),
+ ce(me, de, Se, "≨", "\\lneqq", !0),
+ ce(me, de, Se, "", "\\@lvertneqq"),
+ ce(me, de, Se, "⋦", "\\lnsim", !0),
+ ce(me, de, Se, "⪉", "\\lnapprox", !0),
+ ce(me, de, Se, "⊀", "\\nprec", !0),
+ ce(me, de, Se, "⋠", "\\npreceq", !0),
+ ce(me, de, Se, "⋨", "\\precnsim", !0),
+ ce(me, de, Se, "⪹", "\\precnapprox", !0),
+ ce(me, de, Se, "≁", "\\nsim", !0),
+ ce(me, de, Se, "", "\\@nshortmid"),
+ ce(me, de, Se, "∤", "\\nmid", !0),
+ ce(me, de, Se, "⊬", "\\nvdash", !0),
+ ce(me, de, Se, "⊭", "\\nvDash", !0),
+ ce(me, de, Se, "⋪", "\\ntriangleleft"),
+ ce(me, de, Se, "⋬", "\\ntrianglelefteq", !0),
+ ce(me, de, Se, "⊊", "\\subsetneq", !0),
+ ce(me, de, Se, "", "\\@varsubsetneq"),
+ ce(me, de, Se, "⫋", "\\subsetneqq", !0),
+ ce(me, de, Se, "", "\\@varsubsetneqq"),
+ ce(me, de, Se, "≯", "\\ngtr", !0),
+ ce(me, de, Se, "", "\\@ngeqslant"),
+ ce(me, de, Se, "", "\\@ngeqq"),
+ ce(me, de, Se, "⪈", "\\gneq", !0),
+ ce(me, de, Se, "≩", "\\gneqq", !0),
+ ce(me, de, Se, "", "\\@gvertneqq"),
+ ce(me, de, Se, "⋧", "\\gnsim", !0),
+ ce(me, de, Se, "⪊", "\\gnapprox", !0),
+ ce(me, de, Se, "⊁", "\\nsucc", !0),
+ ce(me, de, Se, "⋡", "\\nsucceq", !0),
+ ce(me, de, Se, "⋩", "\\succnsim", !0),
+ ce(me, de, Se, "⪺", "\\succnapprox", !0),
+ ce(me, de, Se, "≆", "\\ncong", !0),
+ ce(me, de, Se, "", "\\@nshortparallel"),
+ ce(me, de, Se, "∦", "\\nparallel", !0),
+ ce(me, de, Se, "⊯", "\\nVDash", !0),
+ ce(me, de, Se, "⋫", "\\ntriangleright"),
+ ce(me, de, Se, "⋭", "\\ntrianglerighteq", !0),
+ ce(me, de, Se, "", "\\@nsupseteqq"),
+ ce(me, de, Se, "⊋", "\\supsetneq", !0),
+ ce(me, de, Se, "", "\\@varsupsetneq"),
+ ce(me, de, Se, "⫌", "\\supsetneqq", !0),
+ ce(me, de, Se, "", "\\@varsupsetneqq"),
+ ce(me, de, Se, "⊮", "\\nVdash", !0),
+ ce(me, de, Se, "⪵", "\\precneqq", !0),
+ ce(me, de, Se, "⪶", "\\succneqq", !0),
+ ce(me, de, Se, "", "\\@nsubseteqq"),
+ ce(me, de, ge, "⊴", "\\unlhd"),
+ ce(me, de, ge, "⊵", "\\unrhd"),
+ ce(me, de, Se, "↚", "\\nleftarrow", !0),
+ ce(me, de, Se, "↛", "\\nrightarrow", !0),
+ ce(me, de, Se, "⇍", "\\nLeftarrow", !0),
+ ce(me, de, Se, "⇏", "\\nRightarrow", !0),
+ ce(me, de, Se, "↮", "\\nleftrightarrow", !0),
+ ce(me, de, Se, "⇎", "\\nLeftrightarrow", !0),
+ ce(me, de, Se, "△", "\\vartriangle"),
+ ce(me, de, ze, "ℏ", "\\hslash"),
+ ce(me, de, ze, "▽", "\\triangledown"),
+ ce(me, de, ze, "◊", "\\lozenge"),
+ ce(me, de, ze, "Ⓢ", "\\circledS"),
+ ce(me, de, ze, "®", "\\circledR"),
+ ce(ue, de, ze, "®", "\\circledR"),
+ ce(me, de, ze, "∡", "\\measuredangle", !0),
+ ce(me, de, ze, "∄", "\\nexists"),
+ ce(me, de, ze, "℧", "\\mho"),
+ ce(me, de, ze, "Ⅎ", "\\Finv", !0),
+ ce(me, de, ze, "⅁", "\\Game", !0),
+ ce(me, de, ze, "‵", "\\backprime"),
+ ce(me, de, ze, "▲", "\\blacktriangle"),
+ ce(me, de, ze, "▼", "\\blacktriangledown"),
+ ce(me, de, ze, "■", "\\blacksquare"),
+ ce(me, de, ze, "⧫", "\\blacklozenge"),
+ ce(me, de, ze, "★", "\\bigstar"),
+ ce(me, de, ze, "∢", "\\sphericalangle", !0),
+ ce(me, de, ze, "∁", "\\complement", !0),
+ ce(me, de, ze, "ð", "\\eth", !0),
+ ce(ue, pe, ze, "ð", "ð"),
+ ce(me, de, ze, "╱", "\\diagup"),
+ ce(me, de, ze, "╲", "\\diagdown"),
+ ce(me, de, ze, "□", "\\square"),
+ ce(me, de, ze, "□", "\\Box"),
+ ce(me, de, ze, "◊", "\\Diamond"),
+ ce(me, de, ze, "¥", "\\yen", !0),
+ ce(ue, de, ze, "¥", "\\yen", !0),
+ ce(me, de, ze, "✓", "\\checkmark", !0),
+ ce(ue, de, ze, "✓", "\\checkmark"),
+ ce(me, de, ze, "ℶ", "\\beth", !0),
+ ce(me, de, ze, "ℸ", "\\daleth", !0),
+ ce(me, de, ze, "ℷ", "\\gimel", !0),
+ ce(me, de, ze, "ϝ", "\\digamma", !0),
+ ce(me, de, ze, "ϰ", "\\varkappa"),
+ ce(me, de, we, "┌", "\\@ulcorner", !0),
+ ce(me, de, ve, "┐", "\\@urcorner", !0),
+ ce(me, de, we, "└", "\\@llcorner", !0),
+ ce(me, de, ve, "┘", "\\@lrcorner", !0),
+ ce(me, de, Se, "≦", "\\leqq", !0),
+ ce(me, de, Se, "⩽", "\\leqslant", !0),
+ ce(me, de, Se, "⪕", "\\eqslantless", !0),
+ ce(me, de, Se, "≲", "\\lesssim", !0),
+ ce(me, de, Se, "⪅", "\\lessapprox", !0),
+ ce(me, de, Se, "≊", "\\approxeq", !0),
+ ce(me, de, ge, "⋖", "\\lessdot"),
+ ce(me, de, Se, "⋘", "\\lll", !0),
+ ce(me, de, Se, "≶", "\\lessgtr", !0),
+ ce(me, de, Se, "⋚", "\\lesseqgtr", !0),
+ ce(me, de, Se, "⪋", "\\lesseqqgtr", !0),
+ ce(me, de, Se, "≑", "\\doteqdot"),
+ ce(me, de, Se, "≓", "\\risingdotseq", !0),
+ ce(me, de, Se, "≒", "\\fallingdotseq", !0),
+ ce(me, de, Se, "∽", "\\backsim", !0),
+ ce(me, de, Se, "⋍", "\\backsimeq", !0),
+ ce(me, de, Se, "⫅", "\\subseteqq", !0),
+ ce(me, de, Se, "⋐", "\\Subset", !0),
+ ce(me, de, Se, "⊏", "\\sqsubset", !0),
+ ce(me, de, Se, "≼", "\\preccurlyeq", !0),
+ ce(me, de, Se, "⋞", "\\curlyeqprec", !0),
+ ce(me, de, Se, "≾", "\\precsim", !0),
+ ce(me, de, Se, "⪷", "\\precapprox", !0),
+ ce(me, de, Se, "⊲", "\\vartriangleleft"),
+ ce(me, de, Se, "⊴", "\\trianglelefteq"),
+ ce(me, de, Se, "⊨", "\\vDash", !0),
+ ce(me, de, Se, "⊪", "\\Vvdash", !0),
+ ce(me, de, Se, "⌣", "\\smallsmile"),
+ ce(me, de, Se, "⌢", "\\smallfrown"),
+ ce(me, de, Se, "≏", "\\bumpeq", !0),
+ ce(me, de, Se, "≎", "\\Bumpeq", !0),
+ ce(me, de, Se, "≧", "\\geqq", !0),
+ ce(me, de, Se, "⩾", "\\geqslant", !0),
+ ce(me, de, Se, "⪖", "\\eqslantgtr", !0),
+ ce(me, de, Se, "≳", "\\gtrsim", !0),
+ ce(me, de, Se, "⪆", "\\gtrapprox", !0),
+ ce(me, de, ge, "⋗", "\\gtrdot"),
+ ce(me, de, Se, "⋙", "\\ggg", !0),
+ ce(me, de, Se, "≷", "\\gtrless", !0),
+ ce(me, de, Se, "⋛", "\\gtreqless", !0),
+ ce(me, de, Se, "⪌", "\\gtreqqless", !0),
+ ce(me, de, Se, "≖", "\\eqcirc", !0),
+ ce(me, de, Se, "≗", "\\circeq", !0),
+ ce(me, de, Se, "≜", "\\triangleq", !0),
+ ce(me, de, Se, "∼", "\\thicksim"),
+ ce(me, de, Se, "≈", "\\thickapprox"),
+ ce(me, de, Se, "⫆", "\\supseteqq", !0),
+ ce(me, de, Se, "⋑", "\\Supset", !0),
+ ce(me, de, Se, "⊐", "\\sqsupset", !0),
+ ce(me, de, Se, "≽", "\\succcurlyeq", !0),
+ ce(me, de, Se, "⋟", "\\curlyeqsucc", !0),
+ ce(me, de, Se, "≿", "\\succsim", !0),
+ ce(me, de, Se, "⪸", "\\succapprox", !0),
+ ce(me, de, Se, "⊳", "\\vartriangleright"),
+ ce(me, de, Se, "⊵", "\\trianglerighteq"),
+ ce(me, de, Se, "⊩", "\\Vdash", !0),
+ ce(me, de, Se, "∣", "\\shortmid"),
+ ce(me, de, Se, "∥", "\\shortparallel"),
+ ce(me, de, Se, "≬", "\\between", !0),
+ ce(me, de, Se, "⋔", "\\pitchfork", !0),
+ ce(me, de, Se, "∝", "\\varpropto"),
+ ce(me, de, Se, "◀", "\\blacktriangleleft"),
+ ce(me, de, Se, "∴", "\\therefore", !0),
+ ce(me, de, Se, "∍", "\\backepsilon"),
+ ce(me, de, Se, "▶", "\\blacktriangleright"),
+ ce(me, de, Se, "∵", "\\because", !0),
+ ce(me, de, Se, "⋘", "\\llless"),
+ ce(me, de, Se, "⋙", "\\gggtr"),
+ ce(me, de, ge, "⊲", "\\lhd"),
+ ce(me, de, ge, "⊳", "\\rhd"),
+ ce(me, de, Se, "≂", "\\eqsim", !0),
+ ce(me, pe, Se, "⋈", "\\Join"),
+ ce(me, de, Se, "≑", "\\Doteq", !0),
+ ce(me, de, ge, "∔", "\\dotplus", !0),
+ ce(me, de, ge, "∖", "\\smallsetminus"),
+ ce(me, de, ge, "⋒", "\\Cap", !0),
+ ce(me, de, ge, "⋓", "\\Cup", !0),
+ ce(me, de, ge, "⩞", "\\doublebarwedge", !0),
+ ce(me, de, ge, "⊟", "\\boxminus", !0),
+ ce(me, de, ge, "⊞", "\\boxplus", !0),
+ ce(me, de, ge, "⋇", "\\divideontimes", !0),
+ ce(me, de, ge, "⋉", "\\ltimes", !0),
+ ce(me, de, ge, "⋊", "\\rtimes", !0),
+ ce(me, de, ge, "⋋", "\\leftthreetimes", !0),
+ ce(me, de, ge, "⋌", "\\rightthreetimes", !0),
+ ce(me, de, ge, "⋏", "\\curlywedge", !0),
+ ce(me, de, ge, "⋎", "\\curlyvee", !0),
+ ce(me, de, ge, "⊝", "\\circleddash", !0),
+ ce(me, de, ge, "⊛", "\\circledast", !0),
+ ce(me, de, ge, "⋅", "\\centerdot"),
+ ce(me, de, ge, "⊺", "\\intercal", !0),
+ ce(me, de, ge, "⋒", "\\doublecap"),
+ ce(me, de, ge, "⋓", "\\doublecup"),
+ ce(me, de, ge, "⊠", "\\boxtimes", !0),
+ ce(me, de, Se, "⇢", "\\dashrightarrow", !0),
+ ce(me, de, Se, "⇠", "\\dashleftarrow", !0),
+ ce(me, de, Se, "⇇", "\\leftleftarrows", !0),
+ ce(me, de, Se, "⇆", "\\leftrightarrows", !0),
+ ce(me, de, Se, "⇚", "\\Lleftarrow", !0),
+ ce(me, de, Se, "↞", "\\twoheadleftarrow", !0),
+ ce(me, de, Se, "↢", "\\leftarrowtail", !0),
+ ce(me, de, Se, "↫", "\\looparrowleft", !0),
+ ce(me, de, Se, "⇋", "\\leftrightharpoons", !0),
+ ce(me, de, Se, "↶", "\\curvearrowleft", !0),
+ ce(me, de, Se, "↺", "\\circlearrowleft", !0),
+ ce(me, de, Se, "↰", "\\Lsh", !0),
+ ce(me, de, Se, "⇈", "\\upuparrows", !0),
+ ce(me, de, Se, "↿", "\\upharpoonleft", !0),
+ ce(me, de, Se, "⇃", "\\downharpoonleft", !0),
+ ce(me, pe, Se, "⊶", "\\origof", !0),
+ ce(me, pe, Se, "⊷", "\\imageof", !0),
+ ce(me, de, Se, "⊸", "\\multimap", !0),
+ ce(me, de, Se, "↭", "\\leftrightsquigarrow", !0),
+ ce(me, de, Se, "⇉", "\\rightrightarrows", !0),
+ ce(me, de, Se, "⇄", "\\rightleftarrows", !0),
+ ce(me, de, Se, "↠", "\\twoheadrightarrow", !0),
+ ce(me, de, Se, "↣", "\\rightarrowtail", !0),
+ ce(me, de, Se, "↬", "\\looparrowright", !0),
+ ce(me, de, Se, "↷", "\\curvearrowright", !0),
+ ce(me, de, Se, "↻", "\\circlearrowright", !0),
+ ce(me, de, Se, "↱", "\\Rsh", !0),
+ ce(me, de, Se, "⇊", "\\downdownarrows", !0),
+ ce(me, de, Se, "↾", "\\upharpoonright", !0),
+ ce(me, de, Se, "⇂", "\\downharpoonright", !0),
+ ce(me, de, Se, "⇝", "\\rightsquigarrow", !0),
+ ce(me, de, Se, "⇝", "\\leadsto"),
+ ce(me, de, Se, "⇛", "\\Rrightarrow", !0),
+ ce(me, de, Se, "↾", "\\restriction"),
+ ce(me, pe, ze, "‘", "`"),
+ ce(me, pe, ze, "$", "\\$"),
+ ce(ue, pe, ze, "$", "\\$"),
+ ce(ue, pe, ze, "$", "\\textdollar"),
+ ce(me, pe, ze, "%", "\\%"),
+ ce(ue, pe, ze, "%", "\\%"),
+ ce(me, pe, ze, "_", "\\_"),
+ ce(ue, pe, ze, "_", "\\_"),
+ ce(ue, pe, ze, "_", "\\textunderscore"),
+ ce(me, pe, ze, "∠", "\\angle", !0),
+ ce(me, pe, ze, "∞", "\\infty", !0),
+ ce(me, pe, ze, "′", "\\prime"),
+ ce(me, pe, ze, "△", "\\triangle"),
+ ce(me, pe, ze, "Γ", "\\Gamma", !0),
+ ce(me, pe, ze, "Δ", "\\Delta", !0),
+ ce(me, pe, ze, "Θ", "\\Theta", !0),
+ ce(me, pe, ze, "Λ", "\\Lambda", !0),
+ ce(me, pe, ze, "Ξ", "\\Xi", !0),
+ ce(me, pe, ze, "Π", "\\Pi", !0),
+ ce(me, pe, ze, "Σ", "\\Sigma", !0),
+ ce(me, pe, ze, "Υ", "\\Upsilon", !0),
+ ce(me, pe, ze, "Φ", "\\Phi", !0),
+ ce(me, pe, ze, "Ψ", "\\Psi", !0),
+ ce(me, pe, ze, "Ω", "\\Omega", !0),
+ ce(me, pe, ze, "A", "Α"),
+ ce(me, pe, ze, "B", "Β"),
+ ce(me, pe, ze, "E", "Ε"),
+ ce(me, pe, ze, "Z", "Ζ"),
+ ce(me, pe, ze, "H", "Η"),
+ ce(me, pe, ze, "I", "Ι"),
+ ce(me, pe, ze, "K", "Κ"),
+ ce(me, pe, ze, "M", "Μ"),
+ ce(me, pe, ze, "N", "Ν"),
+ ce(me, pe, ze, "O", "Ο"),
+ ce(me, pe, ze, "P", "Ρ"),
+ ce(me, pe, ze, "T", "Τ"),
+ ce(me, pe, ze, "X", "Χ"),
+ ce(me, pe, ze, "¬", "\\neg", !0),
+ ce(me, pe, ze, "¬", "\\lnot"),
+ ce(me, pe, ze, "⊤", "\\top"),
+ ce(me, pe, ze, "⊥", "\\bot"),
+ ce(me, pe, ze, "∅", "\\emptyset"),
+ ce(me, de, ze, "∅", "\\varnothing"),
+ ce(me, pe, be, "α", "\\alpha", !0),
+ ce(me, pe, be, "β", "\\beta", !0),
+ ce(me, pe, be, "γ", "\\gamma", !0),
+ ce(me, pe, be, "δ", "\\delta", !0),
+ ce(me, pe, be, "ϵ", "\\epsilon", !0),
+ ce(me, pe, be, "ζ", "\\zeta", !0),
+ ce(me, pe, be, "η", "\\eta", !0),
+ ce(me, pe, be, "θ", "\\theta", !0),
+ ce(me, pe, be, "ι", "\\iota", !0),
+ ce(me, pe, be, "κ", "\\kappa", !0),
+ ce(me, pe, be, "λ", "\\lambda", !0),
+ ce(me, pe, be, "μ", "\\mu", !0),
+ ce(me, pe, be, "ν", "\\nu", !0),
+ ce(me, pe, be, "ξ", "\\xi", !0),
+ ce(me, pe, be, "ο", "\\omicron", !0),
+ ce(me, pe, be, "π", "\\pi", !0),
+ ce(me, pe, be, "ρ", "\\rho", !0),
+ ce(me, pe, be, "σ", "\\sigma", !0),
+ ce(me, pe, be, "τ", "\\tau", !0),
+ ce(me, pe, be, "υ", "\\upsilon", !0),
+ ce(me, pe, be, "ϕ", "\\phi", !0),
+ ce(me, pe, be, "χ", "\\chi", !0),
+ ce(me, pe, be, "ψ", "\\psi", !0),
+ ce(me, pe, be, "ω", "\\omega", !0),
+ ce(me, pe, be, "ε", "\\varepsilon", !0),
+ ce(me, pe, be, "ϑ", "\\vartheta", !0),
+ ce(me, pe, be, "ϖ", "\\varpi", !0),
+ ce(me, pe, be, "ϱ", "\\varrho", !0),
+ ce(me, pe, be, "ς", "\\varsigma", !0),
+ ce(me, pe, be, "φ", "\\varphi", !0),
+ ce(me, pe, ge, "∗", "*", !0),
+ ce(me, pe, ge, "+", "+"),
+ ce(me, pe, ge, "−", "-", !0),
+ ce(me, pe, ge, "⋅", "\\cdot", !0),
+ ce(me, pe, ge, "∘", "\\circ", !0),
+ ce(me, pe, ge, "÷", "\\div", !0),
+ ce(me, pe, ge, "±", "\\pm", !0),
+ ce(me, pe, ge, "×", "\\times", !0),
+ ce(me, pe, ge, "∩", "\\cap", !0),
+ ce(me, pe, ge, "∪", "\\cup", !0),
+ ce(me, pe, ge, "∖", "\\setminus", !0),
+ ce(me, pe, ge, "∧", "\\land"),
+ ce(me, pe, ge, "∨", "\\lor"),
+ ce(me, pe, ge, "∧", "\\wedge", !0),
+ ce(me, pe, ge, "∨", "\\vee", !0),
+ ce(me, pe, ze, "√", "\\surd"),
+ ce(me, pe, we, "⟨", "\\langle", !0),
+ ce(me, pe, we, "∣", "\\lvert"),
+ ce(me, pe, we, "∥", "\\lVert"),
+ ce(me, pe, ve, "?", "?"),
+ ce(me, pe, ve, "!", "!"),
+ ce(me, pe, ve, "⟩", "\\rangle", !0),
+ ce(me, pe, ve, "∣", "\\rvert"),
+ ce(me, pe, ve, "∥", "\\rVert"),
+ ce(me, pe, Se, "=", "="),
+ ce(me, pe, Se, ":", ":"),
+ ce(me, pe, Se, "≈", "\\approx", !0),
+ ce(me, pe, Se, "≅", "\\cong", !0),
+ ce(me, pe, Se, "≥", "\\ge"),
+ ce(me, pe, Se, "≥", "\\geq", !0),
+ ce(me, pe, Se, "←", "\\gets"),
+ ce(me, pe, Se, ">", "\\gt", !0),
+ ce(me, pe, Se, "∈", "\\in", !0),
+ ce(me, pe, Se, "", "\\@not"),
+ ce(me, pe, Se, "⊂", "\\subset", !0),
+ ce(me, pe, Se, "⊃", "\\supset", !0),
+ ce(me, pe, Se, "⊆", "\\subseteq", !0),
+ ce(me, pe, Se, "⊇", "\\supseteq", !0),
+ ce(me, de, Se, "⊈", "\\nsubseteq", !0),
+ ce(me, de, Se, "⊉", "\\nsupseteq", !0),
+ ce(me, pe, Se, "⊨", "\\models"),
+ ce(me, pe, Se, "←", "\\leftarrow", !0),
+ ce(me, pe, Se, "≤", "\\le"),
+ ce(me, pe, Se, "≤", "\\leq", !0),
+ ce(me, pe, Se, "<", "\\lt", !0),
+ ce(me, pe, Se, "→", "\\rightarrow", !0),
+ ce(me, pe, Se, "→", "\\to"),
+ ce(me, de, Se, "≱", "\\ngeq", !0),
+ ce(me, de, Se, "≰", "\\nleq", !0),
+ ce(me, pe, Me, " ", "\\ "),
+ ce(me, pe, Me, " ", "\\space"),
+ ce(me, pe, Me, " ", "\\nobreakspace"),
+ ce(ue, pe, Me, " ", "\\ "),
+ ce(ue, pe, Me, " ", " "),
+ ce(ue, pe, Me, " ", "\\space"),
+ ce(ue, pe, Me, " ", "\\nobreakspace"),
+ ce(me, pe, Me, null, "\\nobreak"),
+ ce(me, pe, Me, null, "\\allowbreak"),
+ ce(me, pe, ke, ",", ","),
+ ce(me, pe, ke, ";", ";"),
+ ce(me, de, ge, "⊼", "\\barwedge", !0),
+ ce(me, de, ge, "⊻", "\\veebar", !0),
+ ce(me, pe, ge, "⊙", "\\odot", !0),
+ ce(me, pe, ge, "⊕", "\\oplus", !0),
+ ce(me, pe, ge, "⊗", "\\otimes", !0),
+ ce(me, pe, ze, "∂", "\\partial", !0),
+ ce(me, pe, ge, "⊘", "\\oslash", !0),
+ ce(me, de, ge, "⊚", "\\circledcirc", !0),
+ ce(me, de, ge, "⊡", "\\boxdot", !0),
+ ce(me, pe, ge, "△", "\\bigtriangleup"),
+ ce(me, pe, ge, "▽", "\\bigtriangledown"),
+ ce(me, pe, ge, "†", "\\dagger"),
+ ce(me, pe, ge, "⋄", "\\diamond"),
+ ce(me, pe, ge, "⋆", "\\star"),
+ ce(me, pe, ge, "◃", "\\triangleleft"),
+ ce(me, pe, ge, "▹", "\\triangleright"),
+ ce(me, pe, we, "{", "\\{"),
+ ce(ue, pe, ze, "{", "\\{"),
+ ce(ue, pe, ze, "{", "\\textbraceleft"),
+ ce(me, pe, ve, "}", "\\}"),
+ ce(ue, pe, ze, "}", "\\}"),
+ ce(ue, pe, ze, "}", "\\textbraceright"),
+ ce(me, pe, we, "{", "\\lbrace"),
+ ce(me, pe, ve, "}", "\\rbrace"),
+ ce(me, pe, we, "[", "\\lbrack", !0),
+ ce(ue, pe, ze, "[", "\\lbrack", !0),
+ ce(me, pe, ve, "]", "\\rbrack", !0),
+ ce(ue, pe, ze, "]", "\\rbrack", !0),
+ ce(me, pe, we, "(", "\\lparen", !0),
+ ce(me, pe, ve, ")", "\\rparen", !0),
+ ce(ue, pe, ze, "<", "\\textless", !0),
+ ce(ue, pe, ze, ">", "\\textgreater", !0),
+ ce(me, pe, we, "⌊", "\\lfloor", !0),
+ ce(me, pe, ve, "⌋", "\\rfloor", !0),
+ ce(me, pe, we, "⌈", "\\lceil", !0),
+ ce(me, pe, ve, "⌉", "\\rceil", !0),
+ ce(me, pe, ze, "\\", "\\backslash"),
+ ce(me, pe, ze, "∣", "|"),
+ ce(me, pe, ze, "∣", "\\vert"),
+ ce(ue, pe, ze, "|", "\\textbar", !0),
+ ce(me, pe, ze, "∥", "\\|"),
+ ce(me, pe, ze, "∥", "\\Vert"),
+ ce(ue, pe, ze, "∥", "\\textbardbl"),
+ ce(ue, pe, ze, "~", "\\textasciitilde"),
+ ce(ue, pe, ze, "\\", "\\textbackslash"),
+ ce(ue, pe, ze, "^", "\\textasciicircum"),
+ ce(me, pe, Se, "↑", "\\uparrow", !0),
+ ce(me, pe, Se, "⇑", "\\Uparrow", !0),
+ ce(me, pe, Se, "↓", "\\downarrow", !0),
+ ce(me, pe, Se, "⇓", "\\Downarrow", !0),
+ ce(me, pe, Se, "↕", "\\updownarrow", !0),
+ ce(me, pe, Se, "⇕", "\\Updownarrow", !0),
+ ce(me, pe, xe, "∐", "\\coprod"),
+ ce(me, pe, xe, "⋁", "\\bigvee"),
+ ce(me, pe, xe, "⋀", "\\bigwedge"),
+ ce(me, pe, xe, "⨄", "\\biguplus"),
+ ce(me, pe, xe, "⋂", "\\bigcap"),
+ ce(me, pe, xe, "⋃", "\\bigcup"),
+ ce(me, pe, xe, "∫", "\\int"),
+ ce(me, pe, xe, "∫", "\\intop"),
+ ce(me, pe, xe, "∬", "\\iint"),
+ ce(me, pe, xe, "∭", "\\iiint"),
+ ce(me, pe, xe, "∏", "\\prod"),
+ ce(me, pe, xe, "∑", "\\sum"),
+ ce(me, pe, xe, "⨂", "\\bigotimes"),
+ ce(me, pe, xe, "⨁", "\\bigoplus"),
+ ce(me, pe, xe, "⨀", "\\bigodot"),
+ ce(me, pe, xe, "∮", "\\oint"),
+ ce(me, pe, xe, "∯", "\\oiint"),
+ ce(me, pe, xe, "∰", "\\oiiint"),
+ ce(me, pe, xe, "⨆", "\\bigsqcup"),
+ ce(me, pe, xe, "∫", "\\smallint"),
+ ce(ue, pe, ye, "…", "\\textellipsis"),
+ ce(me, pe, ye, "…", "\\mathellipsis"),
+ ce(ue, pe, ye, "…", "\\ldots", !0),
+ ce(me, pe, ye, "…", "\\ldots", !0),
+ ce(me, pe, ye, "⋯", "\\@cdots", !0),
+ ce(me, pe, ye, "⋱", "\\ddots", !0),
+ ce(me, pe, ze, "⋮", "\\varvdots"),
+ ce(me, pe, fe, "ˊ", "\\acute"),
+ ce(me, pe, fe, "ˋ", "\\grave"),
+ ce(me, pe, fe, "¨", "\\ddot"),
+ ce(me, pe, fe, "~", "\\tilde"),
+ ce(me, pe, fe, "ˉ", "\\bar"),
+ ce(me, pe, fe, "˘", "\\breve"),
+ ce(me, pe, fe, "ˇ", "\\check"),
+ ce(me, pe, fe, "^", "\\hat"),
+ ce(me, pe, fe, "⃗", "\\vec"),
+ ce(me, pe, fe, "˙", "\\dot"),
+ ce(me, pe, fe, "˚", "\\mathring"),
+ ce(me, pe, be, "", "\\@imath"),
+ ce(me, pe, be, "", "\\@jmath"),
+ ce(me, pe, ze, "ı", "ı"),
+ ce(me, pe, ze, "ȷ", "ȷ"),
+ ce(ue, pe, ze, "ı", "\\i", !0),
+ ce(ue, pe, ze, "ȷ", "\\j", !0),
+ ce(ue, pe, ze, "ß", "\\ss", !0),
+ ce(ue, pe, ze, "æ", "\\ae", !0),
+ ce(ue, pe, ze, "œ", "\\oe", !0),
+ ce(ue, pe, ze, "ø", "\\o", !0),
+ ce(ue, pe, ze, "Æ", "\\AE", !0),
+ ce(ue, pe, ze, "Œ", "\\OE", !0),
+ ce(ue, pe, ze, "Ø", "\\O", !0),
+ ce(ue, pe, fe, "ˊ", "\\'"),
+ ce(ue, pe, fe, "ˋ", "\\`"),
+ ce(ue, pe, fe, "ˆ", "\\^"),
+ ce(ue, pe, fe, "˜", "\\~"),
+ ce(ue, pe, fe, "ˉ", "\\="),
+ ce(ue, pe, fe, "˘", "\\u"),
+ ce(ue, pe, fe, "˙", "\\."),
+ ce(ue, pe, fe, "¸", "\\c"),
+ ce(ue, pe, fe, "˚", "\\r"),
+ ce(ue, pe, fe, "ˇ", "\\v"),
+ ce(ue, pe, fe, "¨", '\\"'),
+ ce(ue, pe, fe, "˝", "\\H"),
+ ce(ue, pe, fe, "◯", "\\textcircled");
+ var Ae = { "--": !0, "---": !0, "``": !0, "''": !0 };
+ ce(ue, pe, ze, "–", "--", !0),
+ ce(ue, pe, ze, "–", "\\textendash"),
+ ce(ue, pe, ze, "—", "---", !0),
+ ce(ue, pe, ze, "—", "\\textemdash"),
+ ce(ue, pe, ze, "‘", "`", !0),
+ ce(ue, pe, ze, "‘", "\\textquoteleft"),
+ ce(ue, pe, ze, "’", "'", !0),
+ ce(ue, pe, ze, "’", "\\textquoteright"),
+ ce(ue, pe, ze, "“", "``", !0),
+ ce(ue, pe, ze, "“", "\\textquotedblleft"),
+ ce(ue, pe, ze, "”", "''", !0),
+ ce(ue, pe, ze, "”", "\\textquotedblright"),
+ ce(me, pe, ze, "°", "\\degree", !0),
+ ce(ue, pe, ze, "°", "\\degree"),
+ ce(ue, pe, ze, "°", "\\textdegree", !0),
+ ce(me, pe, ze, "£", "\\pounds"),
+ ce(me, pe, ze, "£", "\\mathsterling", !0),
+ ce(ue, pe, ze, "£", "\\pounds"),
+ ce(ue, pe, ze, "£", "\\textsterling", !0),
+ ce(me, de, ze, "✠", "\\maltese"),
+ ce(ue, de, ze, "✠", "\\maltese");
+ for (var Te = 0; Te < 14; Te++) {
+ var Be = '0123456789/@."'.charAt(Te);
+ ce(me, pe, ze, Be, Be);
+ }
+ for (var Ne = 0; Ne < 25; Ne++) {
+ var Ce = '0123456789!@*()-=+";:?/.,'.charAt(Ne);
+ ce(ue, pe, ze, Ce, Ce);
+ }
+ for (var qe = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", Ie = 0; Ie < 52; Ie++) {
+ var Re = qe.charAt(Ie);
+ ce(me, pe, be, Re, Re), ce(ue, pe, ze, Re, Re);
+ }
+ ce(me, de, ze, "C", "ℂ"),
+ ce(ue, de, ze, "C", "ℂ"),
+ ce(me, de, ze, "H", "ℍ"),
+ ce(ue, de, ze, "H", "ℍ"),
+ ce(me, de, ze, "N", "ℕ"),
+ ce(ue, de, ze, "N", "ℕ"),
+ ce(me, de, ze, "P", "ℙ"),
+ ce(ue, de, ze, "P", "ℙ"),
+ ce(me, de, ze, "Q", "ℚ"),
+ ce(ue, de, ze, "Q", "ℚ"),
+ ce(me, de, ze, "R", "ℝ"),
+ ce(ue, de, ze, "R", "ℝ"),
+ ce(me, de, ze, "Z", "ℤ"),
+ ce(ue, de, ze, "Z", "ℤ"),
+ ce(me, pe, be, "h", "ℎ"),
+ ce(ue, pe, be, "h", "ℎ");
+ for (var He = "", Oe = 0; Oe < 52; Oe++) {
+ var Ee = qe.charAt(Oe);
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56320 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56372 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56424 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56580 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56736 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56788 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56840 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56944 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ Oe < 26 &&
+ (ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56632 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56476 + Oe))),
+ ce(ue, pe, ze, Ee, He));
+ }
+ ce(me, pe, be, "k", (He = String.fromCharCode(55349, 56668))), ce(ue, pe, ze, "k", He);
+ for (var Le = 0; Le < 10; Le++) {
+ var De = Le.toString();
+ ce(me, pe, be, De, (He = String.fromCharCode(55349, 57294 + Le))),
+ ce(ue, pe, ze, De, He),
+ ce(me, pe, be, De, (He = String.fromCharCode(55349, 57314 + Le))),
+ ce(ue, pe, ze, De, He),
+ ce(me, pe, be, De, (He = String.fromCharCode(55349, 57324 + Le))),
+ ce(ue, pe, ze, De, He),
+ ce(me, pe, be, De, (He = String.fromCharCode(55349, 57334 + Le))),
+ ce(ue, pe, ze, De, He);
+ }
+ for (var Pe = 0; Pe < 3; Pe++) {
+ var Ve = "ÐÞþ".charAt(Pe);
+ ce(me, pe, be, Ve, Ve), ce(ue, pe, ze, Ve, Ve);
+ }
+ var Fe = [
+ ["mathbf", "textbf", "Main-Bold"],
+ ["mathbf", "textbf", "Main-Bold"],
+ ["mathnormal", "textit", "Math-Italic"],
+ ["mathnormal", "textit", "Math-Italic"],
+ ["boldsymbol", "boldsymbol", "Main-BoldItalic"],
+ ["boldsymbol", "boldsymbol", "Main-BoldItalic"],
+ ["mathscr", "textscr", "Script-Regular"],
+ ["", "", ""],
+ ["", "", ""],
+ ["", "", ""],
+ ["mathfrak", "textfrak", "Fraktur-Regular"],
+ ["mathfrak", "textfrak", "Fraktur-Regular"],
+ ["mathbb", "textbb", "AMS-Regular"],
+ ["mathbb", "textbb", "AMS-Regular"],
+ ["", "", ""],
+ ["", "", ""],
+ ["mathsf", "textsf", "SansSerif-Regular"],
+ ["mathsf", "textsf", "SansSerif-Regular"],
+ ["mathboldsf", "textboldsf", "SansSerif-Bold"],
+ ["mathboldsf", "textboldsf", "SansSerif-Bold"],
+ ["mathitsf", "textitsf", "SansSerif-Italic"],
+ ["mathitsf", "textitsf", "SansSerif-Italic"],
+ ["", "", ""],
+ ["", "", ""],
+ ["mathtt", "texttt", "Typewriter-Regular"],
+ ["mathtt", "texttt", "Typewriter-Regular"],
+ ],
+ Ge = [
+ ["mathbf", "textbf", "Main-Bold"],
+ ["", "", ""],
+ ["mathsf", "textsf", "SansSerif-Regular"],
+ ["mathboldsf", "textboldsf", "SansSerif-Bold"],
+ ["mathtt", "texttt", "Typewriter-Regular"],
+ ],
+ Ue = function (e, t, r) {
+ return he[r][e] && he[r][e].replace && (e = he[r][e].replace), { value: e, metrics: O(e, t, r) };
+ },
+ Ye = function (e, t, r, n, a) {
+ var i,
+ o = Ue(e, t, r),
+ s = o.metrics;
+ if (((e = o.value), s)) {
+ var l = s.italic;
+ ("text" === r || (n && "mathit" === n.font)) && (l = 0), (i = new te(e, s.height, s.depth, l, s.skew, s.width, a));
+ } else
+ "undefined" != typeof console && console.warn("No character metrics for '" + e + "' in style '" + t + "' and mode '" + r + "'"),
+ (i = new te(e, 0, 0, 0, 0, 0, a));
+ if (n) {
+ (i.maxFontSize = n.sizeMultiplier), n.style.isTight() && i.classes.push("mtight");
+ var h = n.getColor();
+ h && (i.style.color = h);
+ }
+ return i;
+ },
+ Xe = function (e, t) {
+ if (_(e.classes) !== _(t.classes) || e.skew !== t.skew || e.maxFontSize !== t.maxFontSize) return !1;
+ if (1 === e.classes.length) {
+ var r = e.classes[0];
+ if ("mbin" === r || "mord" === r) return !1;
+ }
+ for (var n in e.style) if (e.style.hasOwnProperty(n) && e.style[n] !== t.style[n]) return !1;
+ for (var a in t.style) if (t.style.hasOwnProperty(a) && e.style[a] !== t.style[a]) return !1;
+ return !0;
+ },
+ We = function (e) {
+ for (var t = 0, r = 0, n = 0, a = 0; a < e.children.length; a++) {
+ var i = e.children[a];
+ i.height > t && (t = i.height), i.depth > r && (r = i.depth), i.maxFontSize > n && (n = i.maxFontSize);
+ }
+ (e.height = t), (e.depth = r), (e.maxFontSize = n);
+ },
+ _e = function (e, t, r, n) {
+ var a = new K(e, t, r, n);
+ return We(a), a;
+ },
+ je = function (e, t, r, n) {
+ return new K(e, t, r, n);
+ },
+ $e = function (e) {
+ var t = new q(e);
+ return We(t), t;
+ },
+ Ze = function (e, t, r) {
+ var n = "";
+ switch (e) {
+ case "amsrm":
+ n = "AMS";
+ break;
+ case "textrm":
+ n = "Main";
+ break;
+ case "textsf":
+ n = "SansSerif";
+ break;
+ case "texttt":
+ n = "Typewriter";
+ break;
+ default:
+ n = e;
+ }
+ return n + "-" + ("textbf" === t && "textit" === r ? "BoldItalic" : "textbf" === t ? "Bold" : "textit" === t ? "Italic" : "Regular");
+ },
+ Ke = {
+ mathbf: { variant: "bold", fontName: "Main-Bold" },
+ mathrm: { variant: "normal", fontName: "Main-Regular" },
+ textit: { variant: "italic", fontName: "Main-Italic" },
+ mathit: { variant: "italic", fontName: "Main-Italic" },
+ mathnormal: { variant: "italic", fontName: "Math-Italic" },
+ mathbb: { variant: "double-struck", fontName: "AMS-Regular" },
+ mathcal: { variant: "script", fontName: "Caligraphic-Regular" },
+ mathfrak: { variant: "fraktur", fontName: "Fraktur-Regular" },
+ mathscr: { variant: "script", fontName: "Script-Regular" },
+ mathsf: { variant: "sans-serif", fontName: "SansSerif-Regular" },
+ mathtt: { variant: "monospace", fontName: "Typewriter-Regular" },
+ },
+ Je = {
+ vec: ["vec", 0.471, 0.714],
+ oiintSize1: ["oiintSize1", 0.957, 0.499],
+ oiintSize2: ["oiintSize2", 1.472, 0.659],
+ oiiintSize1: ["oiiintSize1", 1.304, 0.499],
+ oiiintSize2: ["oiiintSize2", 1.98, 0.659],
+ },
+ Qe = {
+ fontMap: Ke,
+ makeSymbol: Ye,
+ mathsym: function (e, t, r, n) {
+ return (
+ void 0 === n && (n = []),
+ "boldsymbol" === r.font && Ue(e, "Main-Bold", t).metrics
+ ? Ye(e, "Main-Bold", t, r, n.concat(["mathbf"]))
+ : "\\" === e || "main" === he[t][e].font
+ ? Ye(e, "Main-Regular", t, r, n)
+ : Ye(e, "AMS-Regular", t, r, n.concat(["amsrm"]))
+ );
+ },
+ makeSpan: _e,
+ makeSvgSpan: je,
+ makeLineSpan: function (e, t, r) {
+ var n = _e([e], [], t);
+ return (
+ (n.height = Math.max(r || t.fontMetrics().defaultRuleThickness, t.minRuleThickness)),
+ (n.style.borderBottomWidth = W(n.height)),
+ (n.maxFontSize = 1),
+ n
+ );
+ },
+ makeAnchor: function (e, t, r, n) {
+ var a = new J(e, t, r, n);
+ return We(a), a;
+ },
+ makeFragment: $e,
+ wrapFragment: function (e, t) {
+ return e instanceof q ? _e([], [e], t) : e;
+ },
+ makeVList: function (e, t) {
+ for (
+ var r = (function (e) {
+ if ("individualShift" === e.positionType) {
+ for (var t = e.children, r = [t[0]], n = -t[0].shift - t[0].elem.depth, a = n, i = 1; i < t.length; i++) {
+ var o = -t[i].shift - a - t[i].elem.depth,
+ s = o - (t[i - 1].elem.height + t[i - 1].elem.depth);
+ (a += o), r.push({ type: "kern", size: s }), r.push(t[i]);
+ }
+ return { children: r, depth: n };
+ }
+ var l;
+ if ("top" === e.positionType) {
+ for (var h = e.positionData, c = 0; c < e.children.length; c++) {
+ var m = e.children[c];
+ h -= "kern" === m.type ? m.size : m.elem.height + m.elem.depth;
+ }
+ l = h;
+ } else if ("bottom" === e.positionType) l = -e.positionData;
+ else {
+ var u = e.children[0];
+ if ("elem" !== u.type) throw new Error('First child must have type "elem".');
+ if ("shift" === e.positionType) l = -u.elem.depth - e.positionData;
+ else {
+ if ("firstBaseline" !== e.positionType) throw new Error("Invalid positionType " + e.positionType + ".");
+ l = -u.elem.depth;
+ }
+ }
+ return { children: e.children, depth: l };
+ })(e),
+ n = r.children,
+ a = r.depth,
+ i = 0,
+ o = 0;
+ o < n.length;
+ o++
+ ) {
+ var s = n[o];
+ if ("elem" === s.type) {
+ var l = s.elem;
+ i = Math.max(i, l.maxFontSize, l.height);
+ }
+ }
+ i += 2;
+ var h = _e(["pstrut"], []);
+ h.style.height = W(i);
+ for (var c = [], m = a, u = a, p = a, d = 0; d < n.length; d++) {
+ var f = n[d];
+ if ("kern" === f.type) p += f.size;
+ else {
+ var g = f.elem,
+ v = f.wrapperClasses || [],
+ y = f.wrapperStyle || {},
+ b = _e(v, [h, g], void 0, y);
+ (b.style.top = W(-i - p - g.depth)),
+ f.marginLeft && (b.style.marginLeft = f.marginLeft),
+ f.marginRight && (b.style.marginRight = f.marginRight),
+ c.push(b),
+ (p += g.height + g.depth);
+ }
+ (m = Math.min(m, p)), (u = Math.max(u, p));
+ }
+ var x,
+ w = _e(["vlist"], c);
+ if (((w.style.height = W(u)), m < 0)) {
+ var k = _e([], []),
+ S = _e(["vlist"], [k]);
+ S.style.height = W(-m);
+ var M = _e(["vlist-s"], [new te("")]);
+ x = [_e(["vlist-r"], [w, M]), _e(["vlist-r"], [S])];
+ } else x = [_e(["vlist-r"], [w])];
+ var z = _e(["vlist-t"], x);
+ return 2 === x.length && z.classes.push("vlist-t2"), (z.height = u), (z.depth = -m), z;
+ },
+ makeOrd: function (e, t, r) {
+ var a = e.mode,
+ i = e.text,
+ o = ["mord"],
+ s = "math" === a || ("text" === a && t.font),
+ l = s ? t.font : t.fontFamily;
+ if (55349 === i.charCodeAt(0)) {
+ var h = (function (e, t) {
+ var r = 1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536,
+ a = "math" === t ? 0 : 1;
+ if (119808 <= r && r < 120484) {
+ var i = Math.floor((r - 119808) / 26);
+ return [Fe[i][2], Fe[i][a]];
+ }
+ if (120782 <= r && r <= 120831) {
+ var o = Math.floor((r - 120782) / 10);
+ return [Ge[o][2], Ge[o][a]];
+ }
+ if (120485 === r || 120486 === r) return [Fe[0][2], Fe[0][a]];
+ if (120486 < r && r < 120782) return ["", ""];
+ throw new n("Unsupported character: " + e);
+ })(i, a),
+ c = h[0],
+ m = h[1];
+ return Ye(i, c, a, t, o.concat(m));
+ }
+ if (l) {
+ var u, p;
+ if ("boldsymbol" === l) {
+ var d = (function (e, t, r, n, a) {
+ return "textord" !== a && Ue(e, "Math-BoldItalic", t).metrics
+ ? { fontName: "Math-BoldItalic", fontClass: "boldsymbol" }
+ : { fontName: "Main-Bold", fontClass: "mathbf" };
+ })(i, a, 0, 0, r);
+ (u = d.fontName), (p = [d.fontClass]);
+ } else s ? ((u = Ke[l].fontName), (p = [l])) : ((u = Ze(l, t.fontWeight, t.fontShape)), (p = [l, t.fontWeight, t.fontShape]));
+ if (Ue(i, u, a).metrics) return Ye(i, u, a, t, o.concat(p));
+ if (Ae.hasOwnProperty(i) && "Typewriter" === u.slice(0, 10)) {
+ for (var f = [], g = 0; g < i.length; g++) f.push(Ye(i[g], u, a, t, o.concat(p)));
+ return $e(f);
+ }
+ }
+ if ("mathord" === r) return Ye(i, "Math-Italic", a, t, o.concat(["mathnormal"]));
+ if ("textord" === r) {
+ var v = he[a][i] && he[a][i].font;
+ if ("ams" === v) {
+ var y = Ze("amsrm", t.fontWeight, t.fontShape);
+ return Ye(i, y, a, t, o.concat("amsrm", t.fontWeight, t.fontShape));
+ }
+ if ("main" !== v && v) {
+ var b = Ze(v, t.fontWeight, t.fontShape);
+ return Ye(i, b, a, t, o.concat(b, t.fontWeight, t.fontShape));
+ }
+ var x = Ze("textrm", t.fontWeight, t.fontShape);
+ return Ye(i, x, a, t, o.concat(t.fontWeight, t.fontShape));
+ }
+ throw new Error("unexpected type: " + r + " in makeOrd");
+ },
+ makeGlue: function (e, t) {
+ var r = _e(["mspace"], [], t),
+ n = X(e, t);
+ return (r.style.marginRight = W(n)), r;
+ },
+ staticSvg: function (e, t) {
+ var r = Je[e],
+ n = r[0],
+ a = r[1],
+ i = r[2],
+ o = new ne(n),
+ s = new re([o], {
+ width: W(a),
+ height: W(i),
+ style: "width:" + W(a),
+ viewBox: "0 0 " + 1e3 * a + " " + 1e3 * i,
+ preserveAspectRatio: "xMinYMin",
+ }),
+ l = je(["overlay"], [s], t);
+ return (l.height = i), (l.style.height = W(i)), (l.style.width = W(a)), l;
+ },
+ svgData: Je,
+ tryCombineChars: function (e) {
+ for (var t = 0; t < e.length - 1; t++) {
+ var r = e[t],
+ n = e[t + 1];
+ r instanceof te &&
+ n instanceof te &&
+ Xe(r, n) &&
+ ((r.text += n.text),
+ (r.height = Math.max(r.height, n.height)),
+ (r.depth = Math.max(r.depth, n.depth)),
+ (r.italic = n.italic),
+ e.splice(t + 1, 1),
+ t--);
+ }
+ return e;
+ },
+ },
+ et = { number: 3, unit: "mu" },
+ tt = { number: 4, unit: "mu" },
+ rt = { number: 5, unit: "mu" },
+ nt = {
+ mord: { mop: et, mbin: tt, mrel: rt, minner: et },
+ mop: { mord: et, mop: et, mrel: rt, minner: et },
+ mbin: { mord: tt, mop: tt, mopen: tt, minner: tt },
+ mrel: { mord: rt, mop: rt, mopen: rt, minner: rt },
+ mopen: {},
+ mclose: { mop: et, mbin: tt, mrel: rt, minner: et },
+ mpunct: {
+ mord: et,
+ mop: et,
+ mrel: rt,
+ mopen: et,
+ mclose: et,
+ mpunct: et,
+ minner: et,
+ },
+ minner: {
+ mord: et,
+ mop: et,
+ mbin: tt,
+ mrel: rt,
+ mopen: et,
+ mpunct: et,
+ minner: et,
+ },
+ },
+ at = {
+ mord: { mop: et },
+ mop: { mord: et, mop: et },
+ mbin: {},
+ mrel: {},
+ mopen: {},
+ mclose: { mop: et },
+ mpunct: {},
+ minner: { mop: et },
+ },
+ it = {},
+ ot = {},
+ st = {};
+ function lt(e) {
+ for (
+ var t = e.type,
+ r = e.names,
+ n = e.props,
+ a = e.handler,
+ i = e.htmlBuilder,
+ o = e.mathmlBuilder,
+ s = {
+ type: t,
+ numArgs: n.numArgs,
+ argTypes: n.argTypes,
+ allowedInArgument: !!n.allowedInArgument,
+ allowedInText: !!n.allowedInText,
+ allowedInMath: void 0 === n.allowedInMath || n.allowedInMath,
+ numOptionalArgs: n.numOptionalArgs || 0,
+ infix: !!n.infix,
+ primitive: !!n.primitive,
+ handler: a,
+ },
+ l = 0;
+ l < r.length;
+ ++l
+ )
+ it[r[l]] = s;
+ t && (i && (ot[t] = i), o && (st[t] = o));
+ }
+ function ht(e) {
+ lt({
+ type: e.type,
+ names: [],
+ props: { numArgs: 0 },
+ handler: function () {
+ throw new Error("Should never be called.");
+ },
+ htmlBuilder: e.htmlBuilder,
+ mathmlBuilder: e.mathmlBuilder,
+ });
+ }
+ var ct = function (e) {
+ return "ordgroup" === e.type && 1 === e.body.length ? e.body[0] : e;
+ },
+ mt = function (e) {
+ return "ordgroup" === e.type ? e.body : [e];
+ },
+ ut = Qe.makeSpan,
+ pt = ["leftmost", "mbin", "mopen", "mrel", "mop", "mpunct"],
+ dt = ["rightmost", "mrel", "mclose", "mpunct"],
+ ft = {
+ display: A.DISPLAY,
+ text: A.TEXT,
+ script: A.SCRIPT,
+ scriptscript: A.SCRIPTSCRIPT,
+ },
+ gt = {
+ mord: "mord",
+ mop: "mop",
+ mbin: "mbin",
+ mrel: "mrel",
+ mopen: "mopen",
+ mclose: "mclose",
+ mpunct: "mpunct",
+ minner: "minner",
+ },
+ vt = function (e, t, r, n) {
+ void 0 === n && (n = [null, null]);
+ for (var a = [], i = 0; i < e.length; i++) {
+ var o = St(e[i], t);
+ if (o instanceof q) {
+ var s = o.children;
+ a.push.apply(a, s);
+ } else a.push(o);
+ }
+ if ((Qe.tryCombineChars(a), !r)) return a;
+ var h = t;
+ if (1 === e.length) {
+ var c = e[0];
+ "sizing" === c.type ? (h = t.havingSize(c.size)) : "styling" === c.type && (h = t.havingStyle(ft[c.style]));
+ }
+ var m = ut([n[0] || "leftmost"], [], t),
+ u = ut([n[1] || "rightmost"], [], t),
+ p = "root" === r;
+ return (
+ yt(
+ a,
+ function (e, t) {
+ var r = t.classes[0],
+ n = e.classes[0];
+ "mbin" === r && l(dt, n) ? (t.classes[0] = "mord") : "mbin" === n && l(pt, r) && (e.classes[0] = "mord");
+ },
+ { node: m },
+ u,
+ p,
+ ),
+ yt(
+ a,
+ function (e, t) {
+ var r = wt(t),
+ n = wt(e),
+ a = r && n ? (e.hasClass("mtight") ? at[r][n] : nt[r][n]) : null;
+ if (a) return Qe.makeGlue(a, h);
+ },
+ { node: m },
+ u,
+ p,
+ ),
+ a
+ );
+ },
+ yt = function e(t, r, n, a, i) {
+ a && t.push(a);
+ for (var o = 0; o < t.length; o++) {
+ var s = t[o],
+ l = bt(s);
+ if (l) e(l.children, r, n, null, i);
+ else {
+ var h = !s.hasClass("mspace");
+ if (h) {
+ var c = r(s, n.node);
+ c && (n.insertAfter ? n.insertAfter(c) : (t.unshift(c), o++));
+ }
+ h ? (n.node = s) : i && s.hasClass("newline") && (n.node = ut(["leftmost"])),
+ (n.insertAfter = (function (e) {
+ return function (r) {
+ t.splice(e + 1, 0, r), o++;
+ };
+ })(o));
+ }
+ }
+ a && t.pop();
+ },
+ bt = function (e) {
+ return e instanceof q || e instanceof J || (e instanceof K && e.hasClass("enclosing")) ? e : null;
+ },
+ xt = function e(t, r) {
+ var n = bt(t);
+ if (n) {
+ var a = n.children;
+ if (a.length) {
+ if ("right" === r) return e(a[a.length - 1], "right");
+ if ("left" === r) return e(a[0], "left");
+ }
+ }
+ return t;
+ },
+ wt = function (e, t) {
+ return e ? (t && (e = xt(e, t)), gt[e.classes[0]] || null) : null;
+ },
+ kt = function (e, t) {
+ var r = ["nulldelimiter"].concat(e.baseSizingClasses());
+ return ut(t.concat(r));
+ },
+ St = function (e, t, r) {
+ if (!e) return ut();
+ if (ot[e.type]) {
+ var a = ot[e.type](e, t);
+ if (r && t.size !== r.size) {
+ a = ut(t.sizingClasses(r), [a], t);
+ var i = t.sizeMultiplier / r.sizeMultiplier;
+ (a.height *= i), (a.depth *= i);
+ }
+ return a;
+ }
+ throw new n("Got group of unknown type: '" + e.type + "'");
+ };
+ function Mt(e, t) {
+ var r = ut(["base"], e, t),
+ n = ut(["strut"]);
+ return (n.style.height = W(r.height + r.depth)), r.depth && (n.style.verticalAlign = W(-r.depth)), r.children.unshift(n), r;
+ }
+ function zt(e, t) {
+ var r = null;
+ 1 === e.length && "tag" === e[0].type && ((r = e[0].tag), (e = e[0].body));
+ var n,
+ a = vt(e, t, "root");
+ 2 === a.length && a[1].hasClass("tag") && (n = a.pop());
+ for (var i, o = [], s = [], l = 0; l < a.length; l++)
+ if ((s.push(a[l]), a[l].hasClass("mbin") || a[l].hasClass("mrel") || a[l].hasClass("allowbreak"))) {
+ for (var h = !1; l < a.length - 1 && a[l + 1].hasClass("mspace") && !a[l + 1].hasClass("newline"); )
+ l++, s.push(a[l]), a[l].hasClass("nobreak") && (h = !0);
+ h || (o.push(Mt(s, t)), (s = []));
+ } else a[l].hasClass("newline") && (s.pop(), s.length > 0 && (o.push(Mt(s, t)), (s = [])), o.push(a[l]));
+ s.length > 0 && o.push(Mt(s, t)), r ? (((i = Mt(vt(r, t, !0))).classes = ["tag"]), o.push(i)) : n && o.push(n);
+ var c = ut(["katex-html"], o);
+ if ((c.setAttribute("aria-hidden", "true"), i)) {
+ var m = i.children[0];
+ (m.style.height = W(c.height + c.depth)), c.depth && (m.style.verticalAlign = W(-c.depth));
+ }
+ return c;
+ }
+ function At(e) {
+ return new q(e);
+ }
+ var Tt = (function () {
+ function e(e, t, r) {
+ (this.type = void 0),
+ (this.attributes = void 0),
+ (this.children = void 0),
+ (this.classes = void 0),
+ (this.type = e),
+ (this.attributes = {}),
+ (this.children = t || []),
+ (this.classes = r || []);
+ }
+ var t = e.prototype;
+ return (
+ (t.setAttribute = function (e, t) {
+ this.attributes[e] = t;
+ }),
+ (t.getAttribute = function (e) {
+ return this.attributes[e];
+ }),
+ (t.toNode = function () {
+ var e = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type);
+ for (var t in this.attributes) Object.prototype.hasOwnProperty.call(this.attributes, t) && e.setAttribute(t, this.attributes[t]);
+ this.classes.length > 0 && (e.className = _(this.classes));
+ for (var r = 0; r < this.children.length; r++) e.appendChild(this.children[r].toNode());
+ return e;
+ }),
+ (t.toMarkup = function () {
+ var e = "<" + this.type;
+ for (var t in this.attributes)
+ Object.prototype.hasOwnProperty.call(this.attributes, t) && ((e += " " + t + '="'), (e += c(this.attributes[t])), (e += '"'));
+ this.classes.length > 0 && (e += ' class ="' + c(_(this.classes)) + '"'), (e += ">");
+ for (var r = 0; r < this.children.length; r++) e += this.children[r].toMarkup();
+ return e + "" + this.type + ">";
+ }),
+ (t.toText = function () {
+ return this.children
+ .map(function (e) {
+ return e.toText();
+ })
+ .join("");
+ }),
+ e
+ );
+ })(),
+ Bt = (function () {
+ function e(e) {
+ (this.text = void 0), (this.text = e);
+ }
+ var t = e.prototype;
+ return (
+ (t.toNode = function () {
+ return document.createTextNode(this.text);
+ }),
+ (t.toMarkup = function () {
+ return c(this.toText());
+ }),
+ (t.toText = function () {
+ return this.text;
+ }),
+ e
+ );
+ })(),
+ Nt = {
+ MathNode: Tt,
+ TextNode: Bt,
+ SpaceNode: (function () {
+ function e(e) {
+ (this.width = void 0),
+ (this.character = void 0),
+ (this.width = e),
+ (this.character =
+ e >= 0.05555 && e <= 0.05556
+ ? " "
+ : e >= 0.1666 && e <= 0.1667
+ ? " "
+ : e >= 0.2222 && e <= 0.2223
+ ? " "
+ : e >= 0.2777 && e <= 0.2778
+ ? " "
+ : e >= -0.05556 && e <= -0.05555
+ ? " "
+ : e >= -0.1667 && e <= -0.1666
+ ? " "
+ : e >= -0.2223 && e <= -0.2222
+ ? " "
+ : e >= -0.2778 && e <= -0.2777
+ ? " "
+ : null);
+ }
+ var t = e.prototype;
+ return (
+ (t.toNode = function () {
+ if (this.character) return document.createTextNode(this.character);
+ var e = document.createElementNS("http://www.w3.org/1998/Math/MathML", "mspace");
+ return e.setAttribute("width", W(this.width)), e;
+ }),
+ (t.toMarkup = function () {
+ return this.character ? "" + this.character + " " : ' ';
+ }),
+ (t.toText = function () {
+ return this.character ? this.character : " ";
+ }),
+ e
+ );
+ })(),
+ newDocumentFragment: At,
+ },
+ Ct = function (e, t, r) {
+ return (
+ !he[t][e] ||
+ !he[t][e].replace ||
+ 55349 === e.charCodeAt(0) ||
+ (Ae.hasOwnProperty(e) && r && ((r.fontFamily && "tt" === r.fontFamily.slice(4, 6)) || (r.font && "tt" === r.font.slice(4, 6)))) ||
+ (e = he[t][e].replace),
+ new Nt.TextNode(e)
+ );
+ },
+ qt = function (e) {
+ return 1 === e.length ? e[0] : new Nt.MathNode("mrow", e);
+ },
+ It = function (e, t) {
+ if ("texttt" === t.fontFamily) return "monospace";
+ if ("textsf" === t.fontFamily)
+ return "textit" === t.fontShape && "textbf" === t.fontWeight
+ ? "sans-serif-bold-italic"
+ : "textit" === t.fontShape
+ ? "sans-serif-italic"
+ : "textbf" === t.fontWeight
+ ? "bold-sans-serif"
+ : "sans-serif";
+ if ("textit" === t.fontShape && "textbf" === t.fontWeight) return "bold-italic";
+ if ("textit" === t.fontShape) return "italic";
+ if ("textbf" === t.fontWeight) return "bold";
+ var r = t.font;
+ if (!r || "mathnormal" === r) return null;
+ var n = e.mode;
+ if ("mathit" === r) return "italic";
+ if ("boldsymbol" === r) return "textord" === e.type ? "bold" : "bold-italic";
+ if ("mathbf" === r) return "bold";
+ if ("mathbb" === r) return "double-struck";
+ if ("mathfrak" === r) return "fraktur";
+ if ("mathscr" === r || "mathcal" === r) return "script";
+ if ("mathsf" === r) return "sans-serif";
+ if ("mathtt" === r) return "monospace";
+ var a = e.text;
+ return l(["\\imath", "\\jmath"], a)
+ ? null
+ : (he[n][a] && he[n][a].replace && (a = he[n][a].replace), O(a, Qe.fontMap[r].fontName, n) ? Qe.fontMap[r].variant : null);
+ },
+ Rt = function (e, t, r) {
+ if (1 === e.length) {
+ var n = Ot(e[0], t);
+ return r && n instanceof Tt && "mo" === n.type && (n.setAttribute("lspace", "0em"), n.setAttribute("rspace", "0em")), [n];
+ }
+ for (var a, i = [], o = 0; o < e.length; o++) {
+ var s = Ot(e[o], t);
+ if (s instanceof Tt && a instanceof Tt) {
+ if ("mtext" === s.type && "mtext" === a.type && s.getAttribute("mathvariant") === a.getAttribute("mathvariant")) {
+ var l;
+ (l = a.children).push.apply(l, s.children);
+ continue;
+ }
+ if ("mn" === s.type && "mn" === a.type) {
+ var h;
+ (h = a.children).push.apply(h, s.children);
+ continue;
+ }
+ if ("mi" === s.type && 1 === s.children.length && "mn" === a.type) {
+ var c = s.children[0];
+ if (c instanceof Bt && "." === c.text) {
+ var m;
+ (m = a.children).push.apply(m, s.children);
+ continue;
+ }
+ } else if ("mi" === a.type && 1 === a.children.length) {
+ var u = a.children[0];
+ if (u instanceof Bt && "̸" === u.text && ("mo" === s.type || "mi" === s.type || "mn" === s.type)) {
+ var p = s.children[0];
+ p instanceof Bt && p.text.length > 0 && ((p.text = p.text.slice(0, 1) + "̸" + p.text.slice(1)), i.pop());
+ }
+ }
+ }
+ i.push(s), (a = s);
+ }
+ return i;
+ },
+ Ht = function (e, t, r) {
+ return qt(Rt(e, t, r));
+ },
+ Ot = function (e, t) {
+ if (!e) return new Nt.MathNode("mrow");
+ if (st[e.type]) return st[e.type](e, t);
+ throw new n("Got group of unknown type: '" + e.type + "'");
+ };
+ function Et(e, t, r, n, a) {
+ var i,
+ o = Rt(e, r);
+ i = 1 === o.length && o[0] instanceof Tt && l(["mrow", "mtable"], o[0].type) ? o[0] : new Nt.MathNode("mrow", o);
+ var s = new Nt.MathNode("annotation", [new Nt.TextNode(t)]);
+ s.setAttribute("encoding", "application/x-tex");
+ var h = new Nt.MathNode("semantics", [i, s]),
+ c = new Nt.MathNode("math", [h]);
+ return (
+ c.setAttribute("xmlns", "http://www.w3.org/1998/Math/MathML"),
+ n && c.setAttribute("display", "block"),
+ Qe.makeSpan([a ? "katex" : "katex-mathml"], [c])
+ );
+ }
+ var Lt = function (e) {
+ return new F({
+ style: e.displayMode ? A.DISPLAY : A.TEXT,
+ maxSize: e.maxSize,
+ minRuleThickness: e.minRuleThickness,
+ });
+ },
+ Dt = function (e, t) {
+ if (t.displayMode) {
+ var r = ["katex-display"];
+ t.leqno && r.push("leqno"), t.fleqn && r.push("fleqn"), (e = Qe.makeSpan(r, [e]));
+ }
+ return e;
+ },
+ Pt = {
+ widehat: "^",
+ widecheck: "ˇ",
+ widetilde: "~",
+ utilde: "~",
+ overleftarrow: "←",
+ underleftarrow: "←",
+ xleftarrow: "←",
+ overrightarrow: "→",
+ underrightarrow: "→",
+ xrightarrow: "→",
+ underbrace: "⏟",
+ overbrace: "⏞",
+ overgroup: "⏠",
+ undergroup: "⏡",
+ overleftrightarrow: "↔",
+ underleftrightarrow: "↔",
+ xleftrightarrow: "↔",
+ Overrightarrow: "⇒",
+ xRightarrow: "⇒",
+ overleftharpoon: "↼",
+ xleftharpoonup: "↼",
+ overrightharpoon: "⇀",
+ xrightharpoonup: "⇀",
+ xLeftarrow: "⇐",
+ xLeftrightarrow: "⇔",
+ xhookleftarrow: "↩",
+ xhookrightarrow: "↪",
+ xmapsto: "↦",
+ xrightharpoondown: "⇁",
+ xleftharpoondown: "↽",
+ xrightleftharpoons: "⇌",
+ xleftrightharpoons: "⇋",
+ xtwoheadleftarrow: "↞",
+ xtwoheadrightarrow: "↠",
+ xlongequal: "=",
+ xtofrom: "⇄",
+ xrightleftarrows: "⇄",
+ xrightequilibrium: "⇌",
+ xleftequilibrium: "⇋",
+ "\\cdrightarrow": "→",
+ "\\cdleftarrow": "←",
+ "\\cdlongequal": "=",
+ },
+ Vt = {
+ overrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"],
+ overleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"],
+ underrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"],
+ underleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"],
+ xrightarrow: [["rightarrow"], 1.469, 522, "xMaxYMin"],
+ "\\cdrightarrow": [["rightarrow"], 3, 522, "xMaxYMin"],
+ xleftarrow: [["leftarrow"], 1.469, 522, "xMinYMin"],
+ "\\cdleftarrow": [["leftarrow"], 3, 522, "xMinYMin"],
+ Overrightarrow: [["doublerightarrow"], 0.888, 560, "xMaxYMin"],
+ xRightarrow: [["doublerightarrow"], 1.526, 560, "xMaxYMin"],
+ xLeftarrow: [["doubleleftarrow"], 1.526, 560, "xMinYMin"],
+ overleftharpoon: [["leftharpoon"], 0.888, 522, "xMinYMin"],
+ xleftharpoonup: [["leftharpoon"], 0.888, 522, "xMinYMin"],
+ xleftharpoondown: [["leftharpoondown"], 0.888, 522, "xMinYMin"],
+ overrightharpoon: [["rightharpoon"], 0.888, 522, "xMaxYMin"],
+ xrightharpoonup: [["rightharpoon"], 0.888, 522, "xMaxYMin"],
+ xrightharpoondown: [["rightharpoondown"], 0.888, 522, "xMaxYMin"],
+ xlongequal: [["longequal"], 0.888, 334, "xMinYMin"],
+ "\\cdlongequal": [["longequal"], 3, 334, "xMinYMin"],
+ xtwoheadleftarrow: [["twoheadleftarrow"], 0.888, 334, "xMinYMin"],
+ xtwoheadrightarrow: [["twoheadrightarrow"], 0.888, 334, "xMaxYMin"],
+ overleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522],
+ overbrace: [["leftbrace", "midbrace", "rightbrace"], 1.6, 548],
+ underbrace: [["leftbraceunder", "midbraceunder", "rightbraceunder"], 1.6, 548],
+ underleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522],
+ xleftrightarrow: [["leftarrow", "rightarrow"], 1.75, 522],
+ xLeftrightarrow: [["doubleleftarrow", "doublerightarrow"], 1.75, 560],
+ xrightleftharpoons: [["leftharpoondownplus", "rightharpoonplus"], 1.75, 716],
+ xleftrightharpoons: [["leftharpoonplus", "rightharpoondownplus"], 1.75, 716],
+ xhookleftarrow: [["leftarrow", "righthook"], 1.08, 522],
+ xhookrightarrow: [["lefthook", "rightarrow"], 1.08, 522],
+ overlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522],
+ underlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522],
+ overgroup: [["leftgroup", "rightgroup"], 0.888, 342],
+ undergroup: [["leftgroupunder", "rightgroupunder"], 0.888, 342],
+ xmapsto: [["leftmapsto", "rightarrow"], 1.5, 522],
+ xtofrom: [["leftToFrom", "rightToFrom"], 1.75, 528],
+ xrightleftarrows: [["baraboveleftarrow", "rightarrowabovebar"], 1.75, 901],
+ xrightequilibrium: [["baraboveshortleftharpoon", "rightharpoonaboveshortbar"], 1.75, 716],
+ xleftequilibrium: [["shortbaraboveleftharpoon", "shortrightharpoonabovebar"], 1.75, 716],
+ },
+ Ft = function (e) {
+ var t = new Nt.MathNode("mo", [new Nt.TextNode(Pt[e.replace(/^\\/, "")])]);
+ return t.setAttribute("stretchy", "true"), t;
+ },
+ Gt = function (e, t) {
+ var r = (function () {
+ var r = 4e5,
+ n = e.label.slice(1);
+ if (l(["widehat", "widecheck", "widetilde", "utilde"], n)) {
+ var a,
+ i,
+ o,
+ s = "ordgroup" === (d = e.base).type ? d.body.length : 1;
+ if (s > 5)
+ "widehat" === n || "widecheck" === n
+ ? ((a = 420), (r = 2364), (o = 0.42), (i = n + "4"))
+ : ((a = 312), (r = 2340), (o = 0.34), (i = "tilde4"));
+ else {
+ var h = [1, 1, 2, 2, 3, 3][s];
+ "widehat" === n || "widecheck" === n
+ ? ((r = [0, 1062, 2364, 2364, 2364][h]),
+ (a = [0, 239, 300, 360, 420][h]),
+ (o = [0, 0.24, 0.3, 0.3, 0.36, 0.42][h]),
+ (i = n + h))
+ : ((r = [0, 600, 1033, 2339, 2340][h]),
+ (a = [0, 260, 286, 306, 312][h]),
+ (o = [0, 0.26, 0.286, 0.3, 0.306, 0.34][h]),
+ (i = "tilde" + h));
+ }
+ var c = new ne(i),
+ m = new re([c], {
+ width: "100%",
+ height: W(o),
+ viewBox: "0 0 " + r + " " + a,
+ preserveAspectRatio: "none",
+ });
+ return { span: Qe.makeSvgSpan([], [m], t), minWidth: 0, height: o };
+ }
+ var u,
+ p,
+ d,
+ f = [],
+ g = Vt[n],
+ v = g[0],
+ y = g[1],
+ b = g[2],
+ x = b / 1e3,
+ w = v.length;
+ if (1 === w) (u = ["hide-tail"]), (p = [g[3]]);
+ else if (2 === w) (u = ["halfarrow-left", "halfarrow-right"]), (p = ["xMinYMin", "xMaxYMin"]);
+ else {
+ if (3 !== w) throw new Error("Correct katexImagesData or update code here to support\n " + w + " children.");
+ (u = ["brace-left", "brace-center", "brace-right"]), (p = ["xMinYMin", "xMidYMin", "xMaxYMin"]);
+ }
+ for (var k = 0; k < w; k++) {
+ var S = new ne(v[k]),
+ M = new re([S], {
+ width: "400em",
+ height: W(x),
+ viewBox: "0 0 " + r + " " + b,
+ preserveAspectRatio: p[k] + " slice",
+ }),
+ z = Qe.makeSvgSpan([u[k]], [M], t);
+ if (1 === w) return { span: z, minWidth: y, height: x };
+ (z.style.height = W(x)), f.push(z);
+ }
+ return { span: Qe.makeSpan(["stretchy"], f, t), minWidth: y, height: x };
+ })(),
+ n = r.span,
+ a = r.minWidth,
+ i = r.height;
+ return (n.height = i), (n.style.height = W(i)), a > 0 && (n.style.minWidth = W(a)), n;
+ };
+ function Ut(e, t) {
+ if (!e || e.type !== t) throw new Error("Expected node of type " + t + ", but got " + (e ? "node of type " + e.type : String(e)));
+ return e;
+ }
+ function Yt(e) {
+ var t = Xt(e);
+ if (!t) throw new Error("Expected node of symbol group type, but got " + (e ? "node of type " + e.type : String(e)));
+ return t;
+ }
+ function Xt(e) {
+ return e && ("atom" === e.type || se.hasOwnProperty(e.type)) ? e : null;
+ }
+ var Wt = function (e, t) {
+ var r, n, a;
+ e && "supsub" === e.type
+ ? ((r = (n = Ut(e.base, "accent")).base),
+ (e.base = r),
+ (a = (function (e) {
+ if (e instanceof K) return e;
+ throw new Error("Expected span but got " + String(e) + ".");
+ })(St(e, t))),
+ (e.base = n))
+ : (r = (n = Ut(e, "accent")).base);
+ var i = St(r, t.havingCrampedStyle()),
+ o = 0;
+ if (n.isShifty && p(r)) {
+ var s = u(r);
+ o = ie(St(s, t.havingCrampedStyle())).skew;
+ }
+ var l,
+ h = "\\c" === n.label,
+ c = h ? i.height + i.depth : Math.min(i.height, t.fontMetrics().xHeight);
+ if (n.isStretchy)
+ (l = Gt(n, t)),
+ (l = Qe.makeVList(
+ {
+ positionType: "firstBaseline",
+ children: [
+ { type: "elem", elem: i },
+ {
+ type: "elem",
+ elem: l,
+ wrapperClasses: ["svg-align"],
+ wrapperStyle: o > 0 ? { width: "calc(100% - " + W(2 * o) + ")", marginLeft: W(2 * o) } : void 0,
+ },
+ ],
+ },
+ t,
+ ));
+ else {
+ var m, d;
+ "\\vec" === n.label
+ ? ((m = Qe.staticSvg("vec", t)), (d = Qe.svgData.vec[1]))
+ : (((m = ie((m = Qe.makeOrd({ mode: n.mode, text: n.label }, t, "textord")))).italic = 0), (d = m.width), h && (c += m.depth)),
+ (l = Qe.makeSpan(["accent-body"], [m]));
+ var f = "\\textcircled" === n.label;
+ f && (l.classes.push("accent-full"), (c = i.height));
+ var g = o;
+ f || (g -= d / 2),
+ (l.style.left = W(g)),
+ "\\textcircled" === n.label && (l.style.top = ".2em"),
+ (l = Qe.makeVList(
+ {
+ positionType: "firstBaseline",
+ children: [
+ { type: "elem", elem: i },
+ { type: "kern", size: -c },
+ { type: "elem", elem: l },
+ ],
+ },
+ t,
+ ));
+ }
+ var v = Qe.makeSpan(["mord", "accent"], [l], t);
+ return a ? ((a.children[0] = v), (a.height = Math.max(v.height, a.height)), (a.classes[0] = "mord"), a) : v;
+ },
+ _t = function (e, t) {
+ var r = e.isStretchy ? Ft(e.label) : new Nt.MathNode("mo", [Ct(e.label, e.mode)]),
+ n = new Nt.MathNode("mover", [Ot(e.base, t), r]);
+ return n.setAttribute("accent", "true"), n;
+ },
+ jt = new RegExp(
+ ["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring"]
+ .map(function (e) {
+ return "\\" + e;
+ })
+ .join("|"),
+ );
+ lt({
+ type: "accent",
+ names: [
+ "\\acute",
+ "\\grave",
+ "\\ddot",
+ "\\tilde",
+ "\\bar",
+ "\\breve",
+ "\\check",
+ "\\hat",
+ "\\vec",
+ "\\dot",
+ "\\mathring",
+ "\\widecheck",
+ "\\widehat",
+ "\\widetilde",
+ "\\overrightarrow",
+ "\\overleftarrow",
+ "\\Overrightarrow",
+ "\\overleftrightarrow",
+ "\\overgroup",
+ "\\overlinesegment",
+ "\\overleftharpoon",
+ "\\overrightharpoon",
+ ],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = ct(t[0]),
+ n = !jt.test(e.funcName),
+ a = !n || "\\widehat" === e.funcName || "\\widetilde" === e.funcName || "\\widecheck" === e.funcName;
+ return {
+ type: "accent",
+ mode: e.parser.mode,
+ label: e.funcName,
+ isStretchy: n,
+ isShifty: a,
+ base: r,
+ };
+ },
+ htmlBuilder: Wt,
+ mathmlBuilder: _t,
+ }),
+ lt({
+ type: "accent",
+ names: ["\\'", "\\`", "\\^", "\\~", "\\=", "\\u", "\\.", '\\"', "\\c", "\\r", "\\H", "\\v", "\\textcircled"],
+ props: {
+ numArgs: 1,
+ allowedInText: !0,
+ allowedInMath: !0,
+ argTypes: ["primitive"],
+ },
+ handler: function (e, t) {
+ var r = t[0],
+ n = e.parser.mode;
+ return (
+ "math" === n &&
+ (e.parser.settings.reportNonstrict("mathVsTextAccents", "LaTeX's accent " + e.funcName + " works only in text mode"),
+ (n = "text")),
+ {
+ type: "accent",
+ mode: n,
+ label: e.funcName,
+ isStretchy: !1,
+ isShifty: !0,
+ base: r,
+ }
+ );
+ },
+ htmlBuilder: Wt,
+ mathmlBuilder: _t,
+ }),
+ lt({
+ type: "accentUnder",
+ names: ["\\underleftarrow", "\\underrightarrow", "\\underleftrightarrow", "\\undergroup", "\\underlinesegment", "\\utilde"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = t[0];
+ return { type: "accentUnder", mode: r.mode, label: n, base: a };
+ },
+ htmlBuilder: function (e, t) {
+ var r = St(e.base, t),
+ n = Gt(e, t),
+ a = "\\utilde" === e.label ? 0.12 : 0,
+ i = Qe.makeVList(
+ {
+ positionType: "top",
+ positionData: r.height,
+ children: [
+ { type: "elem", elem: n, wrapperClasses: ["svg-align"] },
+ { type: "kern", size: a },
+ { type: "elem", elem: r },
+ ],
+ },
+ t,
+ );
+ return Qe.makeSpan(["mord", "accentunder"], [i], t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = Ft(e.label),
+ n = new Nt.MathNode("munder", [Ot(e.base, t), r]);
+ return n.setAttribute("accentunder", "true"), n;
+ },
+ });
+ var $t = function (e) {
+ var t = new Nt.MathNode("mpadded", e ? [e] : []);
+ return t.setAttribute("width", "+0.6em"), t.setAttribute("lspace", "0.3em"), t;
+ };
+ lt({
+ type: "xArrow",
+ names: [
+ "\\xleftarrow",
+ "\\xrightarrow",
+ "\\xLeftarrow",
+ "\\xRightarrow",
+ "\\xleftrightarrow",
+ "\\xLeftrightarrow",
+ "\\xhookleftarrow",
+ "\\xhookrightarrow",
+ "\\xmapsto",
+ "\\xrightharpoondown",
+ "\\xrightharpoonup",
+ "\\xleftharpoondown",
+ "\\xleftharpoonup",
+ "\\xrightleftharpoons",
+ "\\xleftrightharpoons",
+ "\\xlongequal",
+ "\\xtwoheadrightarrow",
+ "\\xtwoheadleftarrow",
+ "\\xtofrom",
+ "\\xrightleftarrows",
+ "\\xrightequilibrium",
+ "\\xleftequilibrium",
+ "\\\\cdrightarrow",
+ "\\\\cdleftarrow",
+ "\\\\cdlongequal",
+ ],
+ props: { numArgs: 1, numOptionalArgs: 1 },
+ handler: function (e, t, r) {
+ var n = e.parser,
+ a = e.funcName;
+ return { type: "xArrow", mode: n.mode, label: a, body: t[0], below: r[0] };
+ },
+ htmlBuilder: function (e, t) {
+ var r,
+ n = t.style,
+ a = t.havingStyle(n.sup()),
+ i = Qe.wrapFragment(St(e.body, a, t), t),
+ o = "\\x" === e.label.slice(0, 2) ? "x" : "cd";
+ i.classes.push(o + "-arrow-pad"),
+ e.below && ((a = t.havingStyle(n.sub())), (r = Qe.wrapFragment(St(e.below, a, t), t)).classes.push(o + "-arrow-pad"));
+ var s,
+ l = Gt(e, t),
+ h = -t.fontMetrics().axisHeight + 0.5 * l.height,
+ c = -t.fontMetrics().axisHeight - 0.5 * l.height - 0.111;
+ if (((i.depth > 0.25 || "\\xleftequilibrium" === e.label) && (c -= i.depth), r)) {
+ var m = -t.fontMetrics().axisHeight + r.height + 0.5 * l.height + 0.111;
+ s = Qe.makeVList(
+ {
+ positionType: "individualShift",
+ children: [
+ { type: "elem", elem: i, shift: c },
+ { type: "elem", elem: l, shift: h },
+ { type: "elem", elem: r, shift: m },
+ ],
+ },
+ t,
+ );
+ } else
+ s = Qe.makeVList(
+ {
+ positionType: "individualShift",
+ children: [
+ { type: "elem", elem: i, shift: c },
+ { type: "elem", elem: l, shift: h },
+ ],
+ },
+ t,
+ );
+ return s.children[0].children[0].children[1].classes.push("svg-align"), Qe.makeSpan(["mrel", "x-arrow"], [s], t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r,
+ n = Ft(e.label);
+ if ((n.setAttribute("minsize", "x" === e.label.charAt(0) ? "1.75em" : "3.0em"), e.body)) {
+ var a = $t(Ot(e.body, t));
+ if (e.below) {
+ var i = $t(Ot(e.below, t));
+ r = new Nt.MathNode("munderover", [n, i, a]);
+ } else r = new Nt.MathNode("mover", [n, a]);
+ } else if (e.below) {
+ var o = $t(Ot(e.below, t));
+ r = new Nt.MathNode("munder", [n, o]);
+ } else (r = $t()), (r = new Nt.MathNode("mover", [n, r]));
+ return r;
+ },
+ });
+ var Zt = Qe.makeSpan;
+ function Kt(e, t) {
+ var r = vt(e.body, t, !0);
+ return Zt([e.mclass], r, t);
+ }
+ function Jt(e, t) {
+ var r,
+ n = Rt(e.body, t);
+ return (
+ "minner" === e.mclass
+ ? (r = new Nt.MathNode("mpadded", n))
+ : "mord" === e.mclass
+ ? e.isCharacterBox
+ ? ((r = n[0]).type = "mi")
+ : (r = new Nt.MathNode("mi", n))
+ : (e.isCharacterBox ? ((r = n[0]).type = "mo") : (r = new Nt.MathNode("mo", n)),
+ "mbin" === e.mclass
+ ? ((r.attributes.lspace = "0.22em"), (r.attributes.rspace = "0.22em"))
+ : "mpunct" === e.mclass
+ ? ((r.attributes.lspace = "0em"), (r.attributes.rspace = "0.17em"))
+ : "mopen" === e.mclass || "mclose" === e.mclass
+ ? ((r.attributes.lspace = "0em"), (r.attributes.rspace = "0em"))
+ : "minner" === e.mclass && ((r.attributes.lspace = "0.0556em"), (r.attributes.width = "+0.1111em"))),
+ r
+ );
+ }
+ lt({
+ type: "mclass",
+ names: ["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclose", "\\mathpunct", "\\mathinner"],
+ props: { numArgs: 1, primitive: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = t[0];
+ return {
+ type: "mclass",
+ mode: r.mode,
+ mclass: "m" + n.slice(5),
+ body: mt(a),
+ isCharacterBox: p(a),
+ };
+ },
+ htmlBuilder: Kt,
+ mathmlBuilder: Jt,
+ });
+ var Qt = function (e) {
+ var t = "ordgroup" === e.type && e.body.length ? e.body[0] : e;
+ return "atom" !== t.type || ("bin" !== t.family && "rel" !== t.family) ? "mord" : "m" + t.family;
+ };
+ lt({
+ type: "mclass",
+ names: ["\\@binrel"],
+ props: { numArgs: 2 },
+ handler: function (e, t) {
+ return {
+ type: "mclass",
+ mode: e.parser.mode,
+ mclass: Qt(t[0]),
+ body: mt(t[1]),
+ isCharacterBox: p(t[1]),
+ };
+ },
+ }),
+ lt({
+ type: "mclass",
+ names: ["\\stackrel", "\\overset", "\\underset"],
+ props: { numArgs: 2 },
+ handler: function (e, t) {
+ var r,
+ n = e.parser,
+ a = e.funcName,
+ i = t[1],
+ o = t[0];
+ r = "\\stackrel" !== a ? Qt(i) : "mrel";
+ var s = {
+ type: "op",
+ mode: i.mode,
+ limits: !0,
+ alwaysHandleSupSub: !0,
+ parentIsSupSub: !1,
+ symbol: !1,
+ suppressBaseShift: "\\stackrel" !== a,
+ body: mt(i),
+ },
+ l = {
+ type: "supsub",
+ mode: o.mode,
+ base: s,
+ sup: "\\underset" === a ? null : o,
+ sub: "\\underset" === a ? o : null,
+ };
+ return {
+ type: "mclass",
+ mode: n.mode,
+ mclass: r,
+ body: [l],
+ isCharacterBox: p(l),
+ };
+ },
+ htmlBuilder: Kt,
+ mathmlBuilder: Jt,
+ }),
+ lt({
+ type: "pmb",
+ names: ["\\pmb"],
+ props: { numArgs: 1, allowedInText: !0 },
+ handler: function (e, t) {
+ return { type: "pmb", mode: e.parser.mode, mclass: Qt(t[0]), body: mt(t[0]) };
+ },
+ htmlBuilder: function (e, t) {
+ var r = vt(e.body, t, !0),
+ n = Qe.makeSpan([e.mclass], r, t);
+ return (n.style.textShadow = "0.02em 0.01em 0.04px"), n;
+ },
+ mathmlBuilder: function (e, t) {
+ var r = Rt(e.body, t),
+ n = new Nt.MathNode("mstyle", r);
+ return n.setAttribute("style", "text-shadow: 0.02em 0.01em 0.04px"), n;
+ },
+ });
+ var er = {
+ ">": "\\\\cdrightarrow",
+ "<": "\\\\cdleftarrow",
+ "=": "\\\\cdlongequal",
+ A: "\\uparrow",
+ V: "\\downarrow",
+ "|": "\\Vert",
+ ".": "no arrow",
+ },
+ tr = function (e) {
+ return "textord" === e.type && "@" === e.text;
+ };
+ function rr(e, t, r) {
+ var n = er[e];
+ switch (n) {
+ case "\\\\cdrightarrow":
+ case "\\\\cdleftarrow":
+ return r.callFunction(n, [t[0]], [t[1]]);
+ case "\\uparrow":
+ case "\\downarrow":
+ var a = { type: "atom", text: n, mode: "math", family: "rel" },
+ i = {
+ type: "ordgroup",
+ mode: "math",
+ body: [r.callFunction("\\\\cdleft", [t[0]], []), r.callFunction("\\Big", [a], []), r.callFunction("\\\\cdright", [t[1]], [])],
+ };
+ return r.callFunction("\\\\cdparent", [i], []);
+ case "\\\\cdlongequal":
+ return r.callFunction("\\\\cdlongequal", [], []);
+ case "\\Vert":
+ return r.callFunction("\\Big", [{ type: "textord", text: "\\Vert", mode: "math" }], []);
+ default:
+ return { type: "textord", text: " ", mode: "math" };
+ }
+ }
+ lt({
+ type: "cdlabel",
+ names: ["\\\\cdleft", "\\\\cdright"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName;
+ return { type: "cdlabel", mode: r.mode, side: n.slice(4), label: t[0] };
+ },
+ htmlBuilder: function (e, t) {
+ var r = t.havingStyle(t.style.sup()),
+ n = Qe.wrapFragment(St(e.label, r, t), t);
+ return n.classes.push("cd-label-" + e.side), (n.style.bottom = W(0.8 - n.depth)), (n.height = 0), (n.depth = 0), n;
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mrow", [Ot(e.label, t)]);
+ return (
+ (r = new Nt.MathNode("mpadded", [r])).setAttribute("width", "0"),
+ "left" === e.side && r.setAttribute("lspace", "-1width"),
+ r.setAttribute("voffset", "0.7em"),
+ (r = new Nt.MathNode("mstyle", [r])).setAttribute("displaystyle", "false"),
+ r.setAttribute("scriptlevel", "1"),
+ r
+ );
+ },
+ }),
+ lt({
+ type: "cdlabelparent",
+ names: ["\\\\cdparent"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ return { type: "cdlabelparent", mode: e.parser.mode, fragment: t[0] };
+ },
+ htmlBuilder: function (e, t) {
+ var r = Qe.wrapFragment(St(e.fragment, t), t);
+ return r.classes.push("cd-vert-arrow"), r;
+ },
+ mathmlBuilder: function (e, t) {
+ return new Nt.MathNode("mrow", [Ot(e.fragment, t)]);
+ },
+ }),
+ lt({
+ type: "textord",
+ names: ["\\@char"],
+ props: { numArgs: 1, allowedInText: !0 },
+ handler: function (e, t) {
+ for (var r = e.parser, a = Ut(t[0], "ordgroup").body, i = "", o = 0; o < a.length; o++) i += Ut(a[o], "textord").text;
+ var s,
+ l = parseInt(i);
+ if (isNaN(l)) throw new n("\\@char has non-numeric argument " + i);
+ if (l < 0 || l >= 1114111) throw new n("\\@char with invalid code point " + i);
+ return (
+ l <= 65535 ? (s = String.fromCharCode(l)) : ((l -= 65536), (s = String.fromCharCode(55296 + (l >> 10), 56320 + (1023 & l)))),
+ { type: "textord", mode: r.mode, text: s }
+ );
+ },
+ });
+ var nr = function (e, t) {
+ var r = vt(e.body, t.withColor(e.color), !1);
+ return Qe.makeFragment(r);
+ },
+ ar = function (e, t) {
+ var r = Rt(e.body, t.withColor(e.color)),
+ n = new Nt.MathNode("mstyle", r);
+ return n.setAttribute("mathcolor", e.color), n;
+ };
+ lt({
+ type: "color",
+ names: ["\\textcolor"],
+ props: { numArgs: 2, allowedInText: !0, argTypes: ["color", "original"] },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = Ut(t[0], "color-token").color,
+ a = t[1];
+ return { type: "color", mode: r.mode, color: n, body: mt(a) };
+ },
+ htmlBuilder: nr,
+ mathmlBuilder: ar,
+ }),
+ lt({
+ type: "color",
+ names: ["\\color"],
+ props: { numArgs: 1, allowedInText: !0, argTypes: ["color"] },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.breakOnTokenText,
+ a = Ut(t[0], "color-token").color;
+ r.gullet.macros.set("\\current@color", a);
+ var i = r.parseExpression(!0, n);
+ return { type: "color", mode: r.mode, color: a, body: i };
+ },
+ htmlBuilder: nr,
+ mathmlBuilder: ar,
+ }),
+ lt({
+ type: "cr",
+ names: ["\\\\"],
+ props: { numArgs: 0, numOptionalArgs: 0, allowedInText: !0 },
+ handler: function (e, t, r) {
+ var n = e.parser,
+ a = "[" === n.gullet.future().text ? n.parseSizeGroup(!0) : null,
+ i =
+ !n.settings.displayMode ||
+ !n.settings.useStrictBehavior("newLineInDisplayMode", "In LaTeX, \\\\ or \\newline does nothing in display mode");
+ return { type: "cr", mode: n.mode, newLine: i, size: a && Ut(a, "size").value };
+ },
+ htmlBuilder: function (e, t) {
+ var r = Qe.makeSpan(["mspace"], [], t);
+ return e.newLine && (r.classes.push("newline"), e.size && (r.style.marginTop = W(X(e.size, t)))), r;
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mspace");
+ return e.newLine && (r.setAttribute("linebreak", "newline"), e.size && r.setAttribute("height", W(X(e.size, t)))), r;
+ },
+ });
+ var ir = {
+ "\\global": "\\global",
+ "\\long": "\\\\globallong",
+ "\\\\globallong": "\\\\globallong",
+ "\\def": "\\gdef",
+ "\\gdef": "\\gdef",
+ "\\edef": "\\xdef",
+ "\\xdef": "\\xdef",
+ "\\let": "\\\\globallet",
+ "\\futurelet": "\\\\globalfuture",
+ },
+ or = function (e) {
+ var t = e.text;
+ if (/^(?:[\\{}$^_]|EOF)$/.test(t)) throw new n("Expected a control sequence", e);
+ return t;
+ },
+ sr = function (e, t, r, n) {
+ var a = e.gullet.macros.get(r.text);
+ null == a && ((r.noexpand = !0), (a = { tokens: [r], numArgs: 0, unexpandable: !e.gullet.isExpandable(r.text) })),
+ e.gullet.macros.set(t, a, n);
+ };
+ lt({
+ type: "internal",
+ names: ["\\global", "\\long", "\\\\globallong"],
+ props: { numArgs: 0, allowedInText: !0 },
+ handler: function (e) {
+ var t = e.parser,
+ r = e.funcName;
+ t.consumeSpaces();
+ var a = t.fetch();
+ if (ir[a.text]) return ("\\global" !== r && "\\\\globallong" !== r) || (a.text = ir[a.text]), Ut(t.parseFunction(), "internal");
+ throw new n("Invalid token after macro prefix", a);
+ },
+ }),
+ lt({
+ type: "internal",
+ names: ["\\def", "\\gdef", "\\edef", "\\xdef"],
+ props: { numArgs: 0, allowedInText: !0, primitive: !0 },
+ handler: function (e) {
+ var t = e.parser,
+ r = e.funcName,
+ a = t.gullet.popToken(),
+ i = a.text;
+ if (/^(?:[\\{}$^_]|EOF)$/.test(i)) throw new n("Expected a control sequence", a);
+ for (var o, s = 0, l = [[]]; "{" !== t.gullet.future().text; )
+ if ("#" === (a = t.gullet.popToken()).text) {
+ if ("{" === t.gullet.future().text) {
+ (o = t.gullet.future()), l[s].push("{");
+ break;
+ }
+ if (((a = t.gullet.popToken()), !/^[1-9]$/.test(a.text))) throw new n('Invalid argument number "' + a.text + '"');
+ if (parseInt(a.text) !== s + 1) throw new n('Argument number "' + a.text + '" out of order');
+ s++, l.push([]);
+ } else {
+ if ("EOF" === a.text) throw new n("Expected a macro definition");
+ l[s].push(a.text);
+ }
+ var h = t.gullet.consumeArg().tokens;
+ return (
+ o && h.unshift(o),
+ ("\\edef" !== r && "\\xdef" !== r) || (h = t.gullet.expandTokens(h)).reverse(),
+ t.gullet.macros.set(i, { tokens: h, numArgs: s, delimiters: l }, r === ir[r]),
+ { type: "internal", mode: t.mode }
+ );
+ },
+ }),
+ lt({
+ type: "internal",
+ names: ["\\let", "\\\\globallet"],
+ props: { numArgs: 0, allowedInText: !0, primitive: !0 },
+ handler: function (e) {
+ var t = e.parser,
+ r = e.funcName,
+ n = or(t.gullet.popToken());
+ t.gullet.consumeSpaces();
+ var a = (function (e) {
+ var t = e.gullet.popToken();
+ return "=" === t.text && " " === (t = e.gullet.popToken()).text && (t = e.gullet.popToken()), t;
+ })(t);
+ return sr(t, n, a, "\\\\globallet" === r), { type: "internal", mode: t.mode };
+ },
+ }),
+ lt({
+ type: "internal",
+ names: ["\\futurelet", "\\\\globalfuture"],
+ props: { numArgs: 0, allowedInText: !0, primitive: !0 },
+ handler: function (e) {
+ var t = e.parser,
+ r = e.funcName,
+ n = or(t.gullet.popToken()),
+ a = t.gullet.popToken(),
+ i = t.gullet.popToken();
+ return sr(t, n, i, "\\\\globalfuture" === r), t.gullet.pushToken(i), t.gullet.pushToken(a), { type: "internal", mode: t.mode };
+ },
+ });
+ var lr = function (e, t, r) {
+ var n = O((he.math[e] && he.math[e].replace) || e, t, r);
+ if (!n) throw new Error("Unsupported symbol " + e + " and font size " + t + ".");
+ return n;
+ },
+ hr = function (e, t, r, n) {
+ var a = r.havingBaseStyle(t),
+ i = Qe.makeSpan(n.concat(a.sizingClasses(r)), [e], r),
+ o = a.sizeMultiplier / r.sizeMultiplier;
+ return (i.height *= o), (i.depth *= o), (i.maxFontSize = a.sizeMultiplier), i;
+ },
+ cr = function (e, t, r) {
+ var n = t.havingBaseStyle(r),
+ a = (1 - t.sizeMultiplier / n.sizeMultiplier) * t.fontMetrics().axisHeight;
+ e.classes.push("delimcenter"), (e.style.top = W(a)), (e.height -= a), (e.depth += a);
+ },
+ mr = function (e, t, r, n, a, i) {
+ var o = (function (e, t, r, n) {
+ return Qe.makeSymbol(e, "Size" + t + "-Regular", r, n);
+ })(e, t, a, n),
+ s = hr(Qe.makeSpan(["delimsizing", "size" + t], [o], n), A.TEXT, n, i);
+ return r && cr(s, n, A.TEXT), s;
+ },
+ ur = function (e, t, r) {
+ return {
+ type: "elem",
+ elem: Qe.makeSpan(
+ ["delimsizinginner", "Size1-Regular" === t ? "delim-size1" : "delim-size4"],
+ [Qe.makeSpan([], [Qe.makeSymbol(e, t, r)])],
+ ),
+ };
+ },
+ pr = function (e, t, r) {
+ var n = I["Size4-Regular"][e.charCodeAt(0)] ? I["Size4-Regular"][e.charCodeAt(0)][4] : I["Size1-Regular"][e.charCodeAt(0)][4],
+ a = new ne(
+ "inner",
+ (function (e, t) {
+ switch (e) {
+ case "⎜":
+ return "M291 0 H417 V" + t + " H291z M291 0 H417 V" + t + " H291z";
+ case "∣":
+ return "M145 0 H188 V" + t + " H145z M145 0 H188 V" + t + " H145z";
+ case "∥":
+ return "M145 0 H188 V" + t + " H145z M145 0 H188 V" + t + " H145zM367 0 H410 V" + t + " H367z M367 0 H410 V" + t + " H367z";
+ case "⎟":
+ return "M457 0 H583 V" + t + " H457z M457 0 H583 V" + t + " H457z";
+ case "⎢":
+ return "M319 0 H403 V" + t + " H319z M319 0 H403 V" + t + " H319z";
+ case "⎥":
+ return "M263 0 H347 V" + t + " H263z M263 0 H347 V" + t + " H263z";
+ case "⎪":
+ return "M384 0 H504 V" + t + " H384z M384 0 H504 V" + t + " H384z";
+ case "⏐":
+ return "M312 0 H355 V" + t + " H312z M312 0 H355 V" + t + " H312z";
+ case "‖":
+ return "M257 0 H300 V" + t + " H257z M257 0 H300 V" + t + " H257zM478 0 H521 V" + t + " H478z M478 0 H521 V" + t + " H478z";
+ default:
+ return "";
+ }
+ })(e, Math.round(1e3 * t)),
+ ),
+ i = new re([a], {
+ width: W(n),
+ height: W(t),
+ style: "width:" + W(n),
+ viewBox: "0 0 " + 1e3 * n + " " + Math.round(1e3 * t),
+ preserveAspectRatio: "xMinYMin",
+ }),
+ o = Qe.makeSvgSpan([], [i], r);
+ return (o.height = t), (o.style.height = W(t)), (o.style.width = W(n)), { type: "elem", elem: o };
+ },
+ dr = { type: "kern", size: -0.008 },
+ fr = ["|", "\\lvert", "\\rvert", "\\vert"],
+ gr = ["\\|", "\\lVert", "\\rVert", "\\Vert"],
+ vr = function (e, t, r, n, a, i) {
+ var o,
+ s,
+ h,
+ c,
+ m = "",
+ u = 0;
+ (o = h = c = e), (s = null);
+ var p = "Size1-Regular";
+ "\\uparrow" === e
+ ? (h = c = "⏐")
+ : "\\Uparrow" === e
+ ? (h = c = "‖")
+ : "\\downarrow" === e
+ ? (o = h = "⏐")
+ : "\\Downarrow" === e
+ ? (o = h = "‖")
+ : "\\updownarrow" === e
+ ? ((o = "\\uparrow"), (h = "⏐"), (c = "\\downarrow"))
+ : "\\Updownarrow" === e
+ ? ((o = "\\Uparrow"), (h = "‖"), (c = "\\Downarrow"))
+ : l(fr, e)
+ ? ((h = "∣"), (m = "vert"), (u = 333))
+ : l(gr, e)
+ ? ((h = "∥"), (m = "doublevert"), (u = 556))
+ : "[" === e || "\\lbrack" === e
+ ? ((o = "⎡"), (h = "⎢"), (c = "⎣"), (p = "Size4-Regular"), (m = "lbrack"), (u = 667))
+ : "]" === e || "\\rbrack" === e
+ ? ((o = "⎤"), (h = "⎥"), (c = "⎦"), (p = "Size4-Regular"), (m = "rbrack"), (u = 667))
+ : "\\lfloor" === e || "⌊" === e
+ ? ((h = o = "⎢"), (c = "⎣"), (p = "Size4-Regular"), (m = "lfloor"), (u = 667))
+ : "\\lceil" === e || "⌈" === e
+ ? ((o = "⎡"), (h = c = "⎢"), (p = "Size4-Regular"), (m = "lceil"), (u = 667))
+ : "\\rfloor" === e || "⌋" === e
+ ? ((h = o = "⎥"), (c = "⎦"), (p = "Size4-Regular"), (m = "rfloor"), (u = 667))
+ : "\\rceil" === e || "⌉" === e
+ ? ((o = "⎤"), (h = c = "⎥"), (p = "Size4-Regular"), (m = "rceil"), (u = 667))
+ : "(" === e || "\\lparen" === e
+ ? ((o = "⎛"), (h = "⎜"), (c = "⎝"), (p = "Size4-Regular"), (m = "lparen"), (u = 875))
+ : ")" === e || "\\rparen" === e
+ ? ((o = "⎞"), (h = "⎟"), (c = "⎠"), (p = "Size4-Regular"), (m = "rparen"), (u = 875))
+ : "\\{" === e || "\\lbrace" === e
+ ? ((o = "⎧"), (s = "⎨"), (c = "⎩"), (h = "⎪"), (p = "Size4-Regular"))
+ : "\\}" === e || "\\rbrace" === e
+ ? ((o = "⎫"), (s = "⎬"), (c = "⎭"), (h = "⎪"), (p = "Size4-Regular"))
+ : "\\lgroup" === e || "⟮" === e
+ ? ((o = "⎧"), (c = "⎩"), (h = "⎪"), (p = "Size4-Regular"))
+ : "\\rgroup" === e || "⟯" === e
+ ? ((o = "⎫"), (c = "⎭"), (h = "⎪"), (p = "Size4-Regular"))
+ : "\\lmoustache" === e || "⎰" === e
+ ? ((o = "⎧"), (c = "⎭"), (h = "⎪"), (p = "Size4-Regular"))
+ : ("\\rmoustache" !== e && "⎱" !== e) ||
+ ((o = "⎫"), (c = "⎩"), (h = "⎪"), (p = "Size4-Regular"));
+ var d = lr(o, p, a),
+ f = d.height + d.depth,
+ g = lr(h, p, a),
+ v = g.height + g.depth,
+ y = lr(c, p, a),
+ b = y.height + y.depth,
+ x = 0,
+ w = 1;
+ if (null !== s) {
+ var k = lr(s, p, a);
+ (x = k.height + k.depth), (w = 2);
+ }
+ var S = f + b + x,
+ M = S + Math.max(0, Math.ceil((t - S) / (w * v))) * w * v,
+ z = n.fontMetrics().axisHeight;
+ r && (z *= n.sizeMultiplier);
+ var T = M / 2 - z,
+ B = [];
+ if (m.length > 0) {
+ var N = M - f - b,
+ C = Math.round(1e3 * M),
+ q = (function (e, t) {
+ switch (e) {
+ case "lbrack":
+ return "M403 1759 V84 H666 V0 H319 V1759 v" + t + " v1759 h347 v-84\nH403z M403 1759 V0 H319 V1759 v" + t + " v1759 h84z";
+ case "rbrack":
+ return "M347 1759 V0 H0 V84 H263 V1759 v" + t + " v1759 H0 v84 H347z\nM347 1759 V0 H263 V1759 v" + t + " v1759 h84z";
+ case "vert":
+ return (
+ "M145 15 v585 v" +
+ t +
+ " v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v" +
+ -t +
+ " v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v" +
+ t +
+ " v585 h43z"
+ );
+ case "doublevert":
+ return (
+ "M145 15 v585 v" +
+ t +
+ " v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v" +
+ -t +
+ " v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v" +
+ t +
+ " v585 h43z\nM367 15 v585 v" +
+ t +
+ " v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v" +
+ -t +
+ " v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v" +
+ t +
+ " v585 h43z"
+ );
+ case "lfloor":
+ return "M319 602 V0 H403 V602 v" + t + " v1715 h263 v84 H319z\nMM319 602 V0 H403 V602 v" + t + " v1715 H319z";
+ case "rfloor":
+ return "M319 602 V0 H403 V602 v" + t + " v1799 H0 v-84 H319z\nMM319 602 V0 H403 V602 v" + t + " v1715 H319z";
+ case "lceil":
+ return "M403 1759 V84 H666 V0 H319 V1759 v" + t + " v602 h84z\nM403 1759 V0 H319 V1759 v" + t + " v602 h84z";
+ case "rceil":
+ return "M347 1759 V0 H0 V84 H263 V1759 v" + t + " v602 h84z\nM347 1759 V0 h-84 V1759 v" + t + " v602 h84z";
+ case "lparen":
+ return (
+ "M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1\nc-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349,\n-36,557 l0," +
+ (t + 84) +
+ "c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,\n949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9\nc0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,\n-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189\nl0,-" +
+ (t + 92) +
+ "c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,\n-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z"
+ );
+ case "rparen":
+ return (
+ "M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,\n63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5\nc11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0," +
+ (t + 9) +
+ "\nc-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664\nc-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11\nc0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17\nc242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558\nl0,-" +
+ (t + 144) +
+ "c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,\n-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z"
+ );
+ default:
+ throw new Error("Unknown stretchy delimiter.");
+ }
+ })(m, Math.round(1e3 * N)),
+ I = new ne(m, q),
+ R = (u / 1e3).toFixed(3) + "em",
+ H = (C / 1e3).toFixed(3) + "em",
+ O = new re([I], { width: R, height: H, viewBox: "0 0 " + u + " " + C }),
+ E = Qe.makeSvgSpan([], [O], n);
+ (E.height = C / 1e3), (E.style.width = R), (E.style.height = H), B.push({ type: "elem", elem: E });
+ } else {
+ if ((B.push(ur(c, p, a)), B.push(dr), null === s)) {
+ var L = M - f - b + 0.016;
+ B.push(pr(h, L, n));
+ } else {
+ var D = (M - f - b - x) / 2 + 0.016;
+ B.push(pr(h, D, n)), B.push(dr), B.push(ur(s, p, a)), B.push(dr), B.push(pr(h, D, n));
+ }
+ B.push(dr), B.push(ur(o, p, a));
+ }
+ var P = n.havingBaseStyle(A.TEXT),
+ V = Qe.makeVList({ positionType: "bottom", positionData: T, children: B }, P);
+ return hr(Qe.makeSpan(["delimsizing", "mult"], [V], P), A.TEXT, n, i);
+ },
+ yr = 0.08,
+ br = function (e, t, r, n, a) {
+ var i = (function (e, t, r) {
+ t *= 1e3;
+ var n = "";
+ switch (e) {
+ case "sqrtMain":
+ n = (function (e, t) {
+ return (
+ "M95," +
+ (622 + e + 80) +
+ "\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl" +
+ e / 2.075 +
+ " -" +
+ e +
+ "\nc5.3,-9.3,12,-14,20,-14\nH400000v" +
+ (40 + e) +
+ "H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM" +
+ (834 + e) +
+ " 80h400000v" +
+ (40 + e) +
+ "h-400000z"
+ );
+ })(t);
+ break;
+ case "sqrtSize1":
+ n = (function (e, t) {
+ return (
+ "M263," +
+ (601 + e + 80) +
+ "c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl" +
+ e / 2.084 +
+ " -" +
+ e +
+ "\nc4.7,-7.3,11,-11,19,-11\nH40000v" +
+ (40 + e) +
+ "H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM" +
+ (1001 + e) +
+ " 80h400000v" +
+ (40 + e) +
+ "h-400000z"
+ );
+ })(t);
+ break;
+ case "sqrtSize2":
+ n = (function (e, t) {
+ return (
+ "M983 " +
+ (10 + e + 80) +
+ "\nl" +
+ e / 3.13 +
+ " -" +
+ e +
+ "\nc4,-6.7,10,-10,18,-10 H400000v" +
+ (40 + e) +
+ "\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM" +
+ (1001 + e) +
+ " 80h400000v" +
+ (40 + e) +
+ "h-400000z"
+ );
+ })(t);
+ break;
+ case "sqrtSize3":
+ n = (function (e, t) {
+ return (
+ "M424," +
+ (2398 + e + 80) +
+ "\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl" +
+ e / 4.223 +
+ " -" +
+ e +
+ "c4,-6.7,10,-10,18,-10 H400000\nv" +
+ (40 + e) +
+ "H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M" +
+ (1001 + e) +
+ " 80\nh400000v" +
+ (40 + e) +
+ "h-400000z"
+ );
+ })(t);
+ break;
+ case "sqrtSize4":
+ n = (function (e, t) {
+ return (
+ "M473," +
+ (2713 + e + 80) +
+ "\nc339.3,-1799.3,509.3,-2700,510,-2702 l" +
+ e / 5.298 +
+ " -" +
+ e +
+ "\nc3.3,-7.3,9.3,-11,18,-11 H400000v" +
+ (40 + e) +
+ "H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM" +
+ (1001 + e) +
+ " 80h400000v" +
+ (40 + e) +
+ "H1017.7z"
+ );
+ })(t);
+ break;
+ case "sqrtTall":
+ n = (function (e, t, r) {
+ return (
+ "M702 " +
+ (e + 80) +
+ "H400000" +
+ (40 + e) +
+ "\nH742v" +
+ (r - 54 - 80 - e) +
+ "l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 80H400000v" +
+ (40 + e) +
+ "H742z"
+ );
+ })(t, 0, r);
+ }
+ return n;
+ })(e, n, r),
+ o = new ne(e, i),
+ s = new re([o], {
+ width: "400em",
+ height: W(t),
+ viewBox: "0 0 400000 " + r,
+ preserveAspectRatio: "xMinYMin slice",
+ });
+ return Qe.makeSvgSpan(["hide-tail"], [s], a);
+ },
+ xr = [
+ "(",
+ "\\lparen",
+ ")",
+ "\\rparen",
+ "[",
+ "\\lbrack",
+ "]",
+ "\\rbrack",
+ "\\{",
+ "\\lbrace",
+ "\\}",
+ "\\rbrace",
+ "\\lfloor",
+ "\\rfloor",
+ "⌊",
+ "⌋",
+ "\\lceil",
+ "\\rceil",
+ "⌈",
+ "⌉",
+ "\\surd",
+ ],
+ wr = [
+ "\\uparrow",
+ "\\downarrow",
+ "\\updownarrow",
+ "\\Uparrow",
+ "\\Downarrow",
+ "\\Updownarrow",
+ "|",
+ "\\|",
+ "\\vert",
+ "\\Vert",
+ "\\lvert",
+ "\\rvert",
+ "\\lVert",
+ "\\rVert",
+ "\\lgroup",
+ "\\rgroup",
+ "⟮",
+ "⟯",
+ "\\lmoustache",
+ "\\rmoustache",
+ "⎰",
+ "⎱",
+ ],
+ kr = ["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"],
+ Sr = [0, 1.2, 1.8, 2.4, 3],
+ Mr = [
+ { type: "small", style: A.SCRIPTSCRIPT },
+ { type: "small", style: A.SCRIPT },
+ { type: "small", style: A.TEXT },
+ { type: "large", size: 1 },
+ { type: "large", size: 2 },
+ { type: "large", size: 3 },
+ { type: "large", size: 4 },
+ ],
+ zr = [
+ { type: "small", style: A.SCRIPTSCRIPT },
+ { type: "small", style: A.SCRIPT },
+ { type: "small", style: A.TEXT },
+ { type: "stack" },
+ ],
+ Ar = [
+ { type: "small", style: A.SCRIPTSCRIPT },
+ { type: "small", style: A.SCRIPT },
+ { type: "small", style: A.TEXT },
+ { type: "large", size: 1 },
+ { type: "large", size: 2 },
+ { type: "large", size: 3 },
+ { type: "large", size: 4 },
+ { type: "stack" },
+ ],
+ Tr = function (e) {
+ if ("small" === e.type) return "Main-Regular";
+ if ("large" === e.type) return "Size" + e.size + "-Regular";
+ if ("stack" === e.type) return "Size4-Regular";
+ throw new Error("Add support for delim type '" + e.type + "' here.");
+ },
+ Br = function (e, t, r, n) {
+ for (var a = Math.min(2, 3 - n.style.size); a < r.length && "stack" !== r[a].type; a++) {
+ var i = lr(e, Tr(r[a]), "math"),
+ o = i.height + i.depth;
+ if (("small" === r[a].type && (o *= n.havingBaseStyle(r[a].style).sizeMultiplier), o > t)) return r[a];
+ }
+ return r[r.length - 1];
+ },
+ Nr = function (e, t, r, n, a, i) {
+ var o;
+ "<" === e || "\\lt" === e || "⟨" === e ? (e = "\\langle") : (">" !== e && "\\gt" !== e && "⟩" !== e) || (e = "\\rangle"),
+ (o = l(kr, e) ? Mr : l(xr, e) ? Ar : zr);
+ var s = Br(e, t, o, n);
+ return "small" === s.type
+ ? (function (e, t, r, n, a, i) {
+ var o = Qe.makeSymbol(e, "Main-Regular", a, n),
+ s = hr(o, t, n, i);
+ return r && cr(s, n, t), s;
+ })(e, s.style, r, n, a, i)
+ : "large" === s.type
+ ? mr(e, s.size, r, n, a, i)
+ : vr(e, t, r, n, a, i);
+ },
+ Cr = {
+ sqrtImage: function (e, t) {
+ var r,
+ n,
+ a = t.havingBaseSizing(),
+ i = Br("\\surd", e * a.sizeMultiplier, Ar, a),
+ o = a.sizeMultiplier,
+ s = Math.max(0, t.minRuleThickness - t.fontMetrics().sqrtRuleThickness),
+ l = 0,
+ h = 0,
+ c = 0;
+ return (
+ "small" === i.type
+ ? (e < 1 ? (o = 1) : e < 1.4 && (o = 0.7),
+ (h = (1 + s) / o),
+ ((r = br("sqrtMain", (l = (1 + s + yr) / o), (c = 1e3 + 1e3 * s + 80), s, t)).style.minWidth = "0.853em"),
+ (n = 0.833 / o))
+ : "large" === i.type
+ ? ((c = 1080 * Sr[i.size]),
+ (h = (Sr[i.size] + s) / o),
+ (l = (Sr[i.size] + s + yr) / o),
+ ((r = br("sqrtSize" + i.size, l, c, s, t)).style.minWidth = "1.02em"),
+ (n = 1 / o))
+ : ((l = e + s + yr),
+ (h = e + s),
+ (c = Math.floor(1e3 * e + s) + 80),
+ ((r = br("sqrtTall", l, c, s, t)).style.minWidth = "0.742em"),
+ (n = 1.056)),
+ (r.height = h),
+ (r.style.height = W(l)),
+ {
+ span: r,
+ advanceWidth: n,
+ ruleWidth: (t.fontMetrics().sqrtRuleThickness + s) * o,
+ }
+ );
+ },
+ sizedDelim: function (e, t, r, a, i) {
+ if (
+ ("<" === e || "\\lt" === e || "⟨" === e ? (e = "\\langle") : (">" !== e && "\\gt" !== e && "⟩" !== e) || (e = "\\rangle"),
+ l(xr, e) || l(kr, e))
+ )
+ return mr(e, t, !1, r, a, i);
+ if (l(wr, e)) return vr(e, Sr[t], !1, r, a, i);
+ throw new n("Illegal delimiter: '" + e + "'");
+ },
+ sizeToMaxHeight: Sr,
+ customSizedDelim: Nr,
+ leftRightDelim: function (e, t, r, n, a, i) {
+ var o = n.fontMetrics().axisHeight * n.sizeMultiplier,
+ s = 5 / n.fontMetrics().ptPerEm,
+ l = Math.max(t - o, r + o),
+ h = Math.max((l / 500) * 901, 2 * l - s);
+ return Nr(e, h, !0, n, a, i);
+ },
+ },
+ qr = {
+ "\\bigl": { mclass: "mopen", size: 1 },
+ "\\Bigl": { mclass: "mopen", size: 2 },
+ "\\biggl": { mclass: "mopen", size: 3 },
+ "\\Biggl": { mclass: "mopen", size: 4 },
+ "\\bigr": { mclass: "mclose", size: 1 },
+ "\\Bigr": { mclass: "mclose", size: 2 },
+ "\\biggr": { mclass: "mclose", size: 3 },
+ "\\Biggr": { mclass: "mclose", size: 4 },
+ "\\bigm": { mclass: "mrel", size: 1 },
+ "\\Bigm": { mclass: "mrel", size: 2 },
+ "\\biggm": { mclass: "mrel", size: 3 },
+ "\\Biggm": { mclass: "mrel", size: 4 },
+ "\\big": { mclass: "mord", size: 1 },
+ "\\Big": { mclass: "mord", size: 2 },
+ "\\bigg": { mclass: "mord", size: 3 },
+ "\\Bigg": { mclass: "mord", size: 4 },
+ },
+ Ir = [
+ "(",
+ "\\lparen",
+ ")",
+ "\\rparen",
+ "[",
+ "\\lbrack",
+ "]",
+ "\\rbrack",
+ "\\{",
+ "\\lbrace",
+ "\\}",
+ "\\rbrace",
+ "\\lfloor",
+ "\\rfloor",
+ "⌊",
+ "⌋",
+ "\\lceil",
+ "\\rceil",
+ "⌈",
+ "⌉",
+ "<",
+ ">",
+ "\\langle",
+ "⟨",
+ "\\rangle",
+ "⟩",
+ "\\lt",
+ "\\gt",
+ "\\lvert",
+ "\\rvert",
+ "\\lVert",
+ "\\rVert",
+ "\\lgroup",
+ "\\rgroup",
+ "⟮",
+ "⟯",
+ "\\lmoustache",
+ "\\rmoustache",
+ "⎰",
+ "⎱",
+ "/",
+ "\\backslash",
+ "|",
+ "\\vert",
+ "\\|",
+ "\\Vert",
+ "\\uparrow",
+ "\\Uparrow",
+ "\\downarrow",
+ "\\Downarrow",
+ "\\updownarrow",
+ "\\Updownarrow",
+ ".",
+ ];
+ function Rr(e, t) {
+ var r = Xt(e);
+ if (r && l(Ir, r.text)) return r;
+ throw new n(r ? "Invalid delimiter '" + r.text + "' after '" + t.funcName + "'" : "Invalid delimiter type '" + e.type + "'", e);
+ }
+ function Hr(e) {
+ if (!e.body) throw new Error("Bug: The leftright ParseNode wasn't fully parsed.");
+ }
+ lt({
+ type: "delimsizing",
+ names: [
+ "\\bigl",
+ "\\Bigl",
+ "\\biggl",
+ "\\Biggl",
+ "\\bigr",
+ "\\Bigr",
+ "\\biggr",
+ "\\Biggr",
+ "\\bigm",
+ "\\Bigm",
+ "\\biggm",
+ "\\Biggm",
+ "\\big",
+ "\\Big",
+ "\\bigg",
+ "\\Bigg",
+ ],
+ props: { numArgs: 1, argTypes: ["primitive"] },
+ handler: function (e, t) {
+ var r = Rr(t[0], e);
+ return {
+ type: "delimsizing",
+ mode: e.parser.mode,
+ size: qr[e.funcName].size,
+ mclass: qr[e.funcName].mclass,
+ delim: r.text,
+ };
+ },
+ htmlBuilder: function (e, t) {
+ return "." === e.delim ? Qe.makeSpan([e.mclass]) : Cr.sizedDelim(e.delim, e.size, t, e.mode, [e.mclass]);
+ },
+ mathmlBuilder: function (e) {
+ var t = [];
+ "." !== e.delim && t.push(Ct(e.delim, e.mode));
+ var r = new Nt.MathNode("mo", t);
+ "mopen" === e.mclass || "mclose" === e.mclass ? r.setAttribute("fence", "true") : r.setAttribute("fence", "false"),
+ r.setAttribute("stretchy", "true");
+ var n = W(Cr.sizeToMaxHeight[e.size]);
+ return r.setAttribute("minsize", n), r.setAttribute("maxsize", n), r;
+ },
+ }),
+ lt({
+ type: "leftright-right",
+ names: ["\\right"],
+ props: { numArgs: 1, primitive: !0 },
+ handler: function (e, t) {
+ var r = e.parser.gullet.macros.get("\\current@color");
+ if (r && "string" != typeof r) throw new n("\\current@color set to non-string in \\right");
+ return {
+ type: "leftright-right",
+ mode: e.parser.mode,
+ delim: Rr(t[0], e).text,
+ color: r,
+ };
+ },
+ }),
+ lt({
+ type: "leftright",
+ names: ["\\left"],
+ props: { numArgs: 1, primitive: !0 },
+ handler: function (e, t) {
+ var r = Rr(t[0], e),
+ n = e.parser;
+ ++n.leftrightDepth;
+ var a = n.parseExpression(!1);
+ --n.leftrightDepth, n.expect("\\right", !1);
+ var i = Ut(n.parseFunction(), "leftright-right");
+ return {
+ type: "leftright",
+ mode: n.mode,
+ body: a,
+ left: r.text,
+ right: i.delim,
+ rightColor: i.color,
+ };
+ },
+ htmlBuilder: function (e, t) {
+ Hr(e);
+ for (var r, n, a = vt(e.body, t, !0, ["mopen", "mclose"]), i = 0, o = 0, s = !1, l = 0; l < a.length; l++)
+ a[l].isMiddle ? (s = !0) : ((i = Math.max(a[l].height, i)), (o = Math.max(a[l].depth, o)));
+ if (
+ ((i *= t.sizeMultiplier),
+ (o *= t.sizeMultiplier),
+ (r = "." === e.left ? kt(t, ["mopen"]) : Cr.leftRightDelim(e.left, i, o, t, e.mode, ["mopen"])),
+ a.unshift(r),
+ s)
+ )
+ for (var h = 1; h < a.length; h++) {
+ var c = a[h].isMiddle;
+ c && (a[h] = Cr.leftRightDelim(c.delim, i, o, c.options, e.mode, []));
+ }
+ if ("." === e.right) n = kt(t, ["mclose"]);
+ else {
+ var m = e.rightColor ? t.withColor(e.rightColor) : t;
+ n = Cr.leftRightDelim(e.right, i, o, m, e.mode, ["mclose"]);
+ }
+ return a.push(n), Qe.makeSpan(["minner"], a, t);
+ },
+ mathmlBuilder: function (e, t) {
+ Hr(e);
+ var r = Rt(e.body, t);
+ if ("." !== e.left) {
+ var n = new Nt.MathNode("mo", [Ct(e.left, e.mode)]);
+ n.setAttribute("fence", "true"), r.unshift(n);
+ }
+ if ("." !== e.right) {
+ var a = new Nt.MathNode("mo", [Ct(e.right, e.mode)]);
+ a.setAttribute("fence", "true"), e.rightColor && a.setAttribute("mathcolor", e.rightColor), r.push(a);
+ }
+ return qt(r);
+ },
+ }),
+ lt({
+ type: "middle",
+ names: ["\\middle"],
+ props: { numArgs: 1, primitive: !0 },
+ handler: function (e, t) {
+ var r = Rr(t[0], e);
+ if (!e.parser.leftrightDepth) throw new n("\\middle without preceding \\left", r);
+ return { type: "middle", mode: e.parser.mode, delim: r.text };
+ },
+ htmlBuilder: function (e, t) {
+ var r;
+ if ("." === e.delim) r = kt(t, []);
+ else {
+ r = Cr.sizedDelim(e.delim, 1, t, e.mode, []);
+ var n = { delim: e.delim, options: t };
+ r.isMiddle = n;
+ }
+ return r;
+ },
+ mathmlBuilder: function (e, t) {
+ var r = "\\vert" === e.delim || "|" === e.delim ? Ct("|", "text") : Ct(e.delim, e.mode),
+ n = new Nt.MathNode("mo", [r]);
+ return n.setAttribute("fence", "true"), n.setAttribute("lspace", "0.05em"), n.setAttribute("rspace", "0.05em"), n;
+ },
+ });
+ var Or = function (e, t) {
+ var r,
+ n,
+ a,
+ i = Qe.wrapFragment(St(e.body, t), t),
+ o = e.label.slice(1),
+ s = t.sizeMultiplier,
+ l = 0,
+ h = p(e.body);
+ if ("sout" === o)
+ ((r = Qe.makeSpan(["stretchy", "sout"])).height = t.fontMetrics().defaultRuleThickness / s), (l = -0.5 * t.fontMetrics().xHeight);
+ else if ("phase" === o) {
+ var c = X({ number: 0.6, unit: "pt" }, t),
+ m = X({ number: 0.35, unit: "ex" }, t);
+ s /= t.havingBaseSizing().sizeMultiplier;
+ var u = i.height + i.depth + c + m;
+ i.style.paddingLeft = W(u / 2 + c);
+ var d = Math.floor(1e3 * u * s),
+ f = "M400000 " + (n = d) + " H0 L" + n / 2 + " 0 l65 45 L145 " + (n - 80) + " H400000z",
+ g = new re([new ne("phase", f)], {
+ width: "400em",
+ height: W(d / 1e3),
+ viewBox: "0 0 400000 " + d,
+ preserveAspectRatio: "xMinYMin slice",
+ });
+ ((r = Qe.makeSvgSpan(["hide-tail"], [g], t)).style.height = W(u)), (l = i.depth + c + m);
+ } else {
+ /cancel/.test(o) ? h || i.classes.push("cancel-pad") : "angl" === o ? i.classes.push("anglpad") : i.classes.push("boxpad");
+ var v = 0,
+ y = 0,
+ b = 0;
+ /box/.test(o)
+ ? ((b = Math.max(t.fontMetrics().fboxrule, t.minRuleThickness)), (y = v = t.fontMetrics().fboxsep + ("colorbox" === o ? 0 : b)))
+ : "angl" === o
+ ? ((v = 4 * (b = Math.max(t.fontMetrics().defaultRuleThickness, t.minRuleThickness))), (y = Math.max(0, 0.25 - i.depth)))
+ : (y = v = h ? 0.2 : 0),
+ (r = (function (e, t, r, n, a) {
+ var i,
+ o = e.height + e.depth + r + n;
+ if (/fbox|color|angl/.test(t)) {
+ if (((i = Qe.makeSpan(["stretchy", t], [], a)), "fbox" === t)) {
+ var s = a.color && a.getColor();
+ s && (i.style.borderColor = s);
+ }
+ } else {
+ var l = [];
+ /^[bx]cancel$/.test(t) &&
+ l.push(
+ new ae({
+ x1: "0",
+ y1: "0",
+ x2: "100%",
+ y2: "100%",
+ "stroke-width": "0.046em",
+ }),
+ ),
+ /^x?cancel$/.test(t) &&
+ l.push(
+ new ae({
+ x1: "0",
+ y1: "100%",
+ x2: "100%",
+ y2: "0",
+ "stroke-width": "0.046em",
+ }),
+ );
+ var h = new re(l, { width: "100%", height: W(o) });
+ i = Qe.makeSvgSpan([], [h], a);
+ }
+ return (i.height = o), (i.style.height = W(o)), i;
+ })(i, o, v, y, t)),
+ /fbox|boxed|fcolorbox/.test(o)
+ ? ((r.style.borderStyle = "solid"), (r.style.borderWidth = W(b)))
+ : "angl" === o && 0.049 !== b && ((r.style.borderTopWidth = W(b)), (r.style.borderRightWidth = W(b))),
+ (l = i.depth + y),
+ e.backgroundColor && ((r.style.backgroundColor = e.backgroundColor), e.borderColor && (r.style.borderColor = e.borderColor));
+ }
+ if (e.backgroundColor)
+ a = Qe.makeVList(
+ {
+ positionType: "individualShift",
+ children: [
+ { type: "elem", elem: r, shift: l },
+ { type: "elem", elem: i, shift: 0 },
+ ],
+ },
+ t,
+ );
+ else {
+ var x = /cancel|phase/.test(o) ? ["svg-align"] : [];
+ a = Qe.makeVList(
+ {
+ positionType: "individualShift",
+ children: [
+ { type: "elem", elem: i, shift: 0 },
+ { type: "elem", elem: r, shift: l, wrapperClasses: x },
+ ],
+ },
+ t,
+ );
+ }
+ return (
+ /cancel/.test(o) && ((a.height = i.height), (a.depth = i.depth)),
+ /cancel/.test(o) && !h ? Qe.makeSpan(["mord", "cancel-lap"], [a], t) : Qe.makeSpan(["mord"], [a], t)
+ );
+ },
+ Er = function (e, t) {
+ var r = 0,
+ n = new Nt.MathNode(e.label.indexOf("colorbox") > -1 ? "mpadded" : "menclose", [Ot(e.body, t)]);
+ switch (e.label) {
+ case "\\cancel":
+ n.setAttribute("notation", "updiagonalstrike");
+ break;
+ case "\\bcancel":
+ n.setAttribute("notation", "downdiagonalstrike");
+ break;
+ case "\\phase":
+ n.setAttribute("notation", "phasorangle");
+ break;
+ case "\\sout":
+ n.setAttribute("notation", "horizontalstrike");
+ break;
+ case "\\fbox":
+ n.setAttribute("notation", "box");
+ break;
+ case "\\angl":
+ n.setAttribute("notation", "actuarial");
+ break;
+ case "\\fcolorbox":
+ case "\\colorbox":
+ if (
+ ((r = t.fontMetrics().fboxsep * t.fontMetrics().ptPerEm),
+ n.setAttribute("width", "+" + 2 * r + "pt"),
+ n.setAttribute("height", "+" + 2 * r + "pt"),
+ n.setAttribute("lspace", r + "pt"),
+ n.setAttribute("voffset", r + "pt"),
+ "\\fcolorbox" === e.label)
+ ) {
+ var a = Math.max(t.fontMetrics().fboxrule, t.minRuleThickness);
+ n.setAttribute("style", "border: " + a + "em solid " + String(e.borderColor));
+ }
+ break;
+ case "\\xcancel":
+ n.setAttribute("notation", "updiagonalstrike downdiagonalstrike");
+ }
+ return e.backgroundColor && n.setAttribute("mathbackground", e.backgroundColor), n;
+ };
+ lt({
+ type: "enclose",
+ names: ["\\colorbox"],
+ props: { numArgs: 2, allowedInText: !0, argTypes: ["color", "text"] },
+ handler: function (e, t, r) {
+ var n = e.parser,
+ a = e.funcName,
+ i = Ut(t[0], "color-token").color,
+ o = t[1];
+ return { type: "enclose", mode: n.mode, label: a, backgroundColor: i, body: o };
+ },
+ htmlBuilder: Or,
+ mathmlBuilder: Er,
+ }),
+ lt({
+ type: "enclose",
+ names: ["\\fcolorbox"],
+ props: { numArgs: 3, allowedInText: !0, argTypes: ["color", "color", "text"] },
+ handler: function (e, t, r) {
+ var n = e.parser,
+ a = e.funcName,
+ i = Ut(t[0], "color-token").color,
+ o = Ut(t[1], "color-token").color,
+ s = t[2];
+ return {
+ type: "enclose",
+ mode: n.mode,
+ label: a,
+ backgroundColor: o,
+ borderColor: i,
+ body: s,
+ };
+ },
+ htmlBuilder: Or,
+ mathmlBuilder: Er,
+ }),
+ lt({
+ type: "enclose",
+ names: ["\\fbox"],
+ props: { numArgs: 1, argTypes: ["hbox"], allowedInText: !0 },
+ handler: function (e, t) {
+ return { type: "enclose", mode: e.parser.mode, label: "\\fbox", body: t[0] };
+ },
+ }),
+ lt({
+ type: "enclose",
+ names: ["\\cancel", "\\bcancel", "\\xcancel", "\\sout", "\\phase"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = t[0];
+ return { type: "enclose", mode: r.mode, label: n, body: a };
+ },
+ htmlBuilder: Or,
+ mathmlBuilder: Er,
+ }),
+ lt({
+ type: "enclose",
+ names: ["\\angl"],
+ props: { numArgs: 1, argTypes: ["hbox"], allowedInText: !1 },
+ handler: function (e, t) {
+ return { type: "enclose", mode: e.parser.mode, label: "\\angl", body: t[0] };
+ },
+ });
+ var Lr = {};
+ function Dr(e) {
+ for (
+ var t = e.type,
+ r = e.names,
+ n = e.props,
+ a = e.handler,
+ i = e.htmlBuilder,
+ o = e.mathmlBuilder,
+ s = {
+ type: t,
+ numArgs: n.numArgs || 0,
+ allowedInText: !1,
+ numOptionalArgs: 0,
+ handler: a,
+ },
+ l = 0;
+ l < r.length;
+ ++l
+ )
+ Lr[r[l]] = s;
+ i && (ot[t] = i), o && (st[t] = o);
+ }
+ var Pr = {};
+ function Vr(e, t) {
+ Pr[e] = t;
+ }
+ var Fr = (function () {
+ function e(e, t, r) {
+ (this.lexer = void 0), (this.start = void 0), (this.end = void 0), (this.lexer = e), (this.start = t), (this.end = r);
+ }
+ return (
+ (e.range = function (t, r) {
+ return r ? (t && t.loc && r.loc && t.loc.lexer === r.loc.lexer ? new e(t.loc.lexer, t.loc.start, r.loc.end) : null) : t && t.loc;
+ }),
+ e
+ );
+ })(),
+ Gr = (function () {
+ function e(e, t) {
+ (this.text = void 0), (this.loc = void 0), (this.noexpand = void 0), (this.treatAsRelax = void 0), (this.text = e), (this.loc = t);
+ }
+ return (
+ (e.prototype.range = function (t, r) {
+ return new e(r, Fr.range(this, t));
+ }),
+ e
+ );
+ })();
+ function Ur(e) {
+ var t = [];
+ e.consumeSpaces();
+ var r = e.fetch().text;
+ for ("\\relax" === r && (e.consume(), e.consumeSpaces(), (r = e.fetch().text)); "\\hline" === r || "\\hdashline" === r; )
+ e.consume(), t.push("\\hdashline" === r), e.consumeSpaces(), (r = e.fetch().text);
+ return t;
+ }
+ var Yr = function (e) {
+ if (!e.parser.settings.displayMode) throw new n("{" + e.envName + "} can be used only in display mode.");
+ };
+ function Xr(e) {
+ if (-1 === e.indexOf("ed")) return -1 === e.indexOf("*");
+ }
+ function Wr(e, t, r) {
+ var a = t.hskipBeforeAndAfter,
+ i = t.addJot,
+ o = t.cols,
+ s = t.arraystretch,
+ l = t.colSeparationType,
+ h = t.autoTag,
+ c = t.singleRow,
+ m = t.emptySingleRow,
+ u = t.maxNumCols,
+ p = t.leqno;
+ if ((e.gullet.beginGroup(), c || e.gullet.macros.set("\\cr", "\\\\\\relax"), !s)) {
+ var d = e.gullet.expandMacroAsText("\\arraystretch");
+ if (null == d) s = 1;
+ else if (!(s = parseFloat(d)) || s < 0) throw new n("Invalid \\arraystretch: " + d);
+ }
+ e.gullet.beginGroup();
+ var f = [],
+ g = [f],
+ v = [],
+ y = [],
+ b = null != h ? [] : void 0;
+ function x() {
+ h && e.gullet.macros.set("\\@eqnsw", "1", !0);
+ }
+ function w() {
+ b &&
+ (e.gullet.macros.get("\\df@tag")
+ ? (b.push(e.subparse([new Gr("\\df@tag")])), e.gullet.macros.set("\\df@tag", void 0, !0))
+ : b.push(Boolean(h) && "1" === e.gullet.macros.get("\\@eqnsw")));
+ }
+ for (x(), y.push(Ur(e)); ; ) {
+ var k = e.parseExpression(!1, c ? "\\end" : "\\\\");
+ e.gullet.endGroup(),
+ e.gullet.beginGroup(),
+ (k = { type: "ordgroup", mode: e.mode, body: k }),
+ r && (k = { type: "styling", mode: e.mode, style: r, body: [k] }),
+ f.push(k);
+ var S = e.fetch().text;
+ if ("&" === S) {
+ if (u && f.length === u) {
+ if (c || l) throw new n("Too many tab characters: &", e.nextToken);
+ e.settings.reportNonstrict("textEnv", "Too few columns specified in the {array} column argument.");
+ }
+ e.consume();
+ } else {
+ if ("\\end" === S) {
+ w(),
+ 1 === f.length && "styling" === k.type && 0 === k.body[0].body.length && (g.length > 1 || !m) && g.pop(),
+ y.length < g.length + 1 && y.push([]);
+ break;
+ }
+ if ("\\\\" !== S) throw new n("Expected & or \\\\ or \\cr or \\end", e.nextToken);
+ e.consume();
+ var M = void 0;
+ " " !== e.gullet.future().text && (M = e.parseSizeGroup(!0)),
+ v.push(M ? M.value : null),
+ w(),
+ y.push(Ur(e)),
+ (f = []),
+ g.push(f),
+ x();
+ }
+ }
+ return (
+ e.gullet.endGroup(),
+ e.gullet.endGroup(),
+ {
+ type: "array",
+ mode: e.mode,
+ addJot: i,
+ arraystretch: s,
+ body: g,
+ cols: o,
+ rowGaps: v,
+ hskipBeforeAndAfter: a,
+ hLinesBeforeRow: y,
+ colSeparationType: l,
+ tags: b,
+ leqno: p,
+ }
+ );
+ }
+ function _r(e) {
+ return "d" === e.slice(0, 1) ? "display" : "text";
+ }
+ var jr = function (e, t) {
+ var r,
+ a,
+ i = e.body.length,
+ o = e.hLinesBeforeRow,
+ s = 0,
+ l = new Array(i),
+ c = [],
+ m = Math.max(t.fontMetrics().arrayRuleWidth, t.minRuleThickness),
+ u = 1 / t.fontMetrics().ptPerEm,
+ p = 5 * u;
+ e.colSeparationType && "small" === e.colSeparationType && (p = (t.havingStyle(A.SCRIPT).sizeMultiplier / t.sizeMultiplier) * 0.2778);
+ var d = "CD" === e.colSeparationType ? X({ number: 3, unit: "ex" }, t) : 12 * u,
+ f = 3 * u,
+ g = e.arraystretch * d,
+ v = 0.7 * g,
+ y = 0.3 * g,
+ b = 0;
+ function x(e) {
+ for (var t = 0; t < e.length; ++t) t > 0 && (b += 0.25), c.push({ pos: b, isDashed: e[t] });
+ }
+ for (x(o[0]), r = 0; r < e.body.length; ++r) {
+ var w = e.body[r],
+ k = v,
+ S = y;
+ s < w.length && (s = w.length);
+ var M = new Array(w.length);
+ for (a = 0; a < w.length; ++a) {
+ var z = St(w[a], t);
+ S < z.depth && (S = z.depth), k < z.height && (k = z.height), (M[a] = z);
+ }
+ var T = e.rowGaps[r],
+ B = 0;
+ T && (B = X(T, t)) > 0 && (S < (B += y) && (S = B), (B = 0)),
+ e.addJot && (S += f),
+ (M.height = k),
+ (M.depth = S),
+ (b += k),
+ (M.pos = b),
+ (b += S + B),
+ (l[r] = M),
+ x(o[r + 1]);
+ }
+ var N,
+ C,
+ q = b / 2 + t.fontMetrics().axisHeight,
+ I = e.cols || [],
+ R = [],
+ H = [];
+ if (
+ e.tags &&
+ e.tags.some(function (e) {
+ return e;
+ })
+ )
+ for (r = 0; r < i; ++r) {
+ var O = l[r],
+ E = O.pos - q,
+ L = e.tags[r],
+ D = void 0;
+ ((D = !0 === L ? Qe.makeSpan(["eqn-num"], [], t) : Qe.makeSpan([], !1 === L ? [] : vt(L, t, !0), t)).depth = O.depth),
+ (D.height = O.height),
+ H.push({ type: "elem", elem: D, shift: E });
+ }
+ for (a = 0, C = 0; a < s || C < I.length; ++a, ++C) {
+ for (var P = I[C] || {}, V = !0; "separator" === P.type; ) {
+ if (
+ (V || (((N = Qe.makeSpan(["arraycolsep"], [])).style.width = W(t.fontMetrics().doubleRuleSep)), R.push(N)),
+ "|" !== P.separator && ":" !== P.separator)
+ )
+ throw new n("Invalid separator type: " + P.separator);
+ var F = "|" === P.separator ? "solid" : "dashed",
+ G = Qe.makeSpan(["vertical-separator"], [], t);
+ (G.style.height = W(b)), (G.style.borderRightWidth = W(m)), (G.style.borderRightStyle = F), (G.style.margin = "0 " + W(-m / 2));
+ var U = b - q;
+ U && (G.style.verticalAlign = W(-U)), R.push(G), (P = I[++C] || {}), (V = !1);
+ }
+ if (!(a >= s)) {
+ var Y = void 0;
+ (a > 0 || e.hskipBeforeAndAfter) &&
+ 0 !== (Y = h(P.pregap, p)) &&
+ (((N = Qe.makeSpan(["arraycolsep"], [])).style.width = W(Y)), R.push(N));
+ var _ = [];
+ for (r = 0; r < i; ++r) {
+ var j = l[r],
+ $ = j[a];
+ if ($) {
+ var Z = j.pos - q;
+ ($.depth = j.depth), ($.height = j.height), _.push({ type: "elem", elem: $, shift: Z });
+ }
+ }
+ (_ = Qe.makeVList({ positionType: "individualShift", children: _ }, t)),
+ (_ = Qe.makeSpan(["col-align-" + (P.align || "c")], [_])),
+ R.push(_),
+ (a < s - 1 || e.hskipBeforeAndAfter) &&
+ 0 !== (Y = h(P.postgap, p)) &&
+ (((N = Qe.makeSpan(["arraycolsep"], [])).style.width = W(Y)), R.push(N));
+ }
+ }
+ if (((l = Qe.makeSpan(["mtable"], R)), c.length > 0)) {
+ for (
+ var K = Qe.makeLineSpan("hline", t, m), J = Qe.makeLineSpan("hdashline", t, m), Q = [{ type: "elem", elem: l, shift: 0 }];
+ c.length > 0;
+
+ ) {
+ var ee = c.pop(),
+ te = ee.pos - q;
+ ee.isDashed ? Q.push({ type: "elem", elem: J, shift: te }) : Q.push({ type: "elem", elem: K, shift: te });
+ }
+ l = Qe.makeVList({ positionType: "individualShift", children: Q }, t);
+ }
+ if (0 === H.length) return Qe.makeSpan(["mord"], [l], t);
+ var re = Qe.makeVList({ positionType: "individualShift", children: H }, t);
+ return (re = Qe.makeSpan(["tag"], [re], t)), Qe.makeFragment([l, re]);
+ },
+ $r = { c: "center ", l: "left ", r: "right " },
+ Zr = function (e, t) {
+ for (
+ var r = [], n = new Nt.MathNode("mtd", [], ["mtr-glue"]), a = new Nt.MathNode("mtd", [], ["mml-eqn-num"]), i = 0;
+ i < e.body.length;
+ i++
+ ) {
+ for (var o = e.body[i], s = [], l = 0; l < o.length; l++) s.push(new Nt.MathNode("mtd", [Ot(o[l], t)]));
+ e.tags && e.tags[i] && (s.unshift(n), s.push(n), e.leqno ? s.unshift(a) : s.push(a)), r.push(new Nt.MathNode("mtr", s));
+ }
+ var h = new Nt.MathNode("mtable", r),
+ c = 0.5 === e.arraystretch ? 0.1 : 0.16 + e.arraystretch - 1 + (e.addJot ? 0.09 : 0);
+ h.setAttribute("rowspacing", W(c));
+ var m = "",
+ u = "";
+ if (e.cols && e.cols.length > 0) {
+ var p = e.cols,
+ d = "",
+ f = !1,
+ g = 0,
+ v = p.length;
+ "separator" === p[0].type && ((m += "top "), (g = 1)), "separator" === p[p.length - 1].type && ((m += "bottom "), (v -= 1));
+ for (var y = g; y < v; y++)
+ "align" === p[y].type
+ ? ((u += $r[p[y].align]), f && (d += "none "), (f = !0))
+ : "separator" === p[y].type && f && ((d += "|" === p[y].separator ? "solid " : "dashed "), (f = !1));
+ h.setAttribute("columnalign", u.trim()), /[sd]/.test(d) && h.setAttribute("columnlines", d.trim());
+ }
+ if ("align" === e.colSeparationType) {
+ for (var b = e.cols || [], x = "", w = 1; w < b.length; w++) x += w % 2 ? "0em " : "1em ";
+ h.setAttribute("columnspacing", x.trim());
+ } else
+ "alignat" === e.colSeparationType || "gather" === e.colSeparationType
+ ? h.setAttribute("columnspacing", "0em")
+ : "small" === e.colSeparationType
+ ? h.setAttribute("columnspacing", "0.2778em")
+ : "CD" === e.colSeparationType
+ ? h.setAttribute("columnspacing", "0.5em")
+ : h.setAttribute("columnspacing", "1em");
+ var k = "",
+ S = e.hLinesBeforeRow;
+ (m += S[0].length > 0 ? "left " : ""), (m += S[S.length - 1].length > 0 ? "right " : "");
+ for (var M = 1; M < S.length - 1; M++) k += 0 === S[M].length ? "none " : S[M][0] ? "dashed " : "solid ";
+ return (
+ /[sd]/.test(k) && h.setAttribute("rowlines", k.trim()),
+ "" !== m && (h = new Nt.MathNode("menclose", [h])).setAttribute("notation", m.trim()),
+ e.arraystretch && e.arraystretch < 1 && (h = new Nt.MathNode("mstyle", [h])).setAttribute("scriptlevel", "1"),
+ h
+ );
+ },
+ Kr = function (e, t) {
+ -1 === e.envName.indexOf("ed") && Yr(e);
+ var r,
+ a = [],
+ i = e.envName.indexOf("at") > -1 ? "alignat" : "align",
+ o = "split" === e.envName,
+ s = Wr(
+ e.parser,
+ {
+ cols: a,
+ addJot: !0,
+ autoTag: o ? void 0 : Xr(e.envName),
+ emptySingleRow: !0,
+ colSeparationType: i,
+ maxNumCols: o ? 2 : void 0,
+ leqno: e.parser.settings.leqno,
+ },
+ "display",
+ ),
+ l = 0,
+ h = { type: "ordgroup", mode: e.mode, body: [] };
+ if (t[0] && "ordgroup" === t[0].type) {
+ for (var c = "", m = 0; m < t[0].body.length; m++) c += Ut(t[0].body[m], "textord").text;
+ (r = Number(c)), (l = 2 * r);
+ }
+ var u = !l;
+ s.body.forEach(function (e) {
+ for (var t = 1; t < e.length; t += 2) {
+ var a = Ut(e[t], "styling");
+ Ut(a.body[0], "ordgroup").body.unshift(h);
+ }
+ if (u) l < e.length && (l = e.length);
+ else {
+ var i = e.length / 2;
+ if (r < i) throw new n("Too many math in a row: expected " + r + ", but got " + i, e[0]);
+ }
+ });
+ for (var p = 0; p < l; ++p) {
+ var d = "r",
+ f = 0;
+ p % 2 == 1 ? (d = "l") : p > 0 && u && (f = 1), (a[p] = { type: "align", align: d, pregap: f, postgap: 0 });
+ }
+ return (s.colSeparationType = u ? "align" : "alignat"), s;
+ };
+ Dr({
+ type: "array",
+ names: ["array", "darray"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = (Xt(t[0]) ? [t[0]] : Ut(t[0], "ordgroup").body).map(function (e) {
+ var t = Yt(e).text;
+ if (-1 !== "lcr".indexOf(t)) return { type: "align", align: t };
+ if ("|" === t) return { type: "separator", separator: "|" };
+ if (":" === t) return { type: "separator", separator: ":" };
+ throw new n("Unknown column alignment: " + t, e);
+ }),
+ a = { cols: r, hskipBeforeAndAfter: !0, maxNumCols: r.length };
+ return Wr(e.parser, a, _r(e.envName));
+ },
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: [
+ "matrix",
+ "pmatrix",
+ "bmatrix",
+ "Bmatrix",
+ "vmatrix",
+ "Vmatrix",
+ "matrix*",
+ "pmatrix*",
+ "bmatrix*",
+ "Bmatrix*",
+ "vmatrix*",
+ "Vmatrix*",
+ ],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ var t = {
+ matrix: null,
+ pmatrix: ["(", ")"],
+ bmatrix: ["[", "]"],
+ Bmatrix: ["\\{", "\\}"],
+ vmatrix: ["|", "|"],
+ Vmatrix: ["\\Vert", "\\Vert"],
+ }[e.envName.replace("*", "")],
+ r = "c",
+ a = { hskipBeforeAndAfter: !1, cols: [{ type: "align", align: r }] };
+ if ("*" === e.envName.charAt(e.envName.length - 1)) {
+ var i = e.parser;
+ if ((i.consumeSpaces(), "[" === i.fetch().text)) {
+ if ((i.consume(), i.consumeSpaces(), (r = i.fetch().text), -1 === "lcr".indexOf(r)))
+ throw new n("Expected l or c or r", i.nextToken);
+ i.consume(), i.consumeSpaces(), i.expect("]"), i.consume(), (a.cols = [{ type: "align", align: r }]);
+ }
+ }
+ var o = Wr(e.parser, a, _r(e.envName)),
+ s = Math.max.apply(
+ Math,
+ [0].concat(
+ o.body.map(function (e) {
+ return e.length;
+ }),
+ ),
+ );
+ return (
+ (o.cols = new Array(s).fill({ type: "align", align: r })),
+ t
+ ? {
+ type: "leftright",
+ mode: e.mode,
+ body: [o],
+ left: t[0],
+ right: t[1],
+ rightColor: void 0,
+ }
+ : o
+ );
+ },
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: ["smallmatrix"],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ var t = Wr(e.parser, { arraystretch: 0.5 }, "script");
+ return (t.colSeparationType = "small"), t;
+ },
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: ["subarray"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = (Xt(t[0]) ? [t[0]] : Ut(t[0], "ordgroup").body).map(function (e) {
+ var t = Yt(e).text;
+ if (-1 !== "lc".indexOf(t)) return { type: "align", align: t };
+ throw new n("Unknown column alignment: " + t, e);
+ });
+ if (r.length > 1) throw new n("{subarray} can contain only one column");
+ var a = { cols: r, hskipBeforeAndAfter: !1, arraystretch: 0.5 };
+ if ((a = Wr(e.parser, a, "script")).body.length > 0 && a.body[0].length > 1) throw new n("{subarray} can contain only one column");
+ return a;
+ },
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: ["cases", "dcases", "rcases", "drcases"],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ var t = Wr(
+ e.parser,
+ {
+ arraystretch: 1.2,
+ cols: [
+ { type: "align", align: "l", pregap: 0, postgap: 1 },
+ { type: "align", align: "l", pregap: 0, postgap: 0 },
+ ],
+ },
+ _r(e.envName),
+ );
+ return {
+ type: "leftright",
+ mode: e.mode,
+ body: [t],
+ left: e.envName.indexOf("r") > -1 ? "." : "\\{",
+ right: e.envName.indexOf("r") > -1 ? "\\}" : ".",
+ rightColor: void 0,
+ };
+ },
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: ["align", "align*", "aligned", "split"],
+ props: { numArgs: 0 },
+ handler: Kr,
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: ["gathered", "gather", "gather*"],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ l(["gather", "gather*"], e.envName) && Yr(e);
+ var t = {
+ cols: [{ type: "align", align: "c" }],
+ addJot: !0,
+ colSeparationType: "gather",
+ autoTag: Xr(e.envName),
+ emptySingleRow: !0,
+ leqno: e.parser.settings.leqno,
+ };
+ return Wr(e.parser, t, "display");
+ },
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: ["alignat", "alignat*", "alignedat"],
+ props: { numArgs: 1 },
+ handler: Kr,
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: ["equation", "equation*"],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ Yr(e);
+ var t = {
+ autoTag: Xr(e.envName),
+ emptySingleRow: !0,
+ singleRow: !0,
+ maxNumCols: 1,
+ leqno: e.parser.settings.leqno,
+ };
+ return Wr(e.parser, t, "display");
+ },
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: ["CD"],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ return (
+ Yr(e),
+ (function (e) {
+ var t = [];
+ for (e.gullet.beginGroup(), e.gullet.macros.set("\\cr", "\\\\\\relax"), e.gullet.beginGroup(); ; ) {
+ t.push(e.parseExpression(!1, "\\\\")), e.gullet.endGroup(), e.gullet.beginGroup();
+ var r = e.fetch().text;
+ if ("&" !== r && "\\\\" !== r) {
+ if ("\\end" === r) {
+ 0 === t[t.length - 1].length && t.pop();
+ break;
+ }
+ throw new n("Expected \\\\ or \\cr or \\end", e.nextToken);
+ }
+ e.consume();
+ }
+ for (var a, i, o = [], s = [o], l = 0; l < t.length; l++) {
+ for (var h = t[l], c = { type: "styling", body: [], mode: "math", style: "display" }, m = 0; m < h.length; m++)
+ if (tr(h[m])) {
+ o.push(c);
+ var u = Yt(h[(m += 1)]).text,
+ p = new Array(2);
+ if (
+ ((p[0] = { type: "ordgroup", mode: "math", body: [] }),
+ (p[1] = { type: "ordgroup", mode: "math", body: [] }),
+ "=|.".indexOf(u) > -1)
+ );
+ else {
+ if (!("<>AV".indexOf(u) > -1)) throw new n('Expected one of "<>AV=|." after @', h[m]);
+ for (var d = 0; d < 2; d++) {
+ for (var f = !0, g = m + 1; g < h.length; g++) {
+ if (((i = u), ("mathord" === (a = h[g]).type || "atom" === a.type) && a.text === i)) {
+ (f = !1), (m = g);
+ break;
+ }
+ if (tr(h[g])) throw new n("Missing a " + u + " character to complete a CD arrow.", h[g]);
+ p[d].body.push(h[g]);
+ }
+ if (f) throw new n("Missing a " + u + " character to complete a CD arrow.", h[m]);
+ }
+ }
+ var v = {
+ type: "styling",
+ body: [rr(u, p, e)],
+ mode: "math",
+ style: "display",
+ };
+ o.push(v), (c = { type: "styling", body: [], mode: "math", style: "display" });
+ } else c.body.push(h[m]);
+ l % 2 == 0 ? o.push(c) : o.shift(), (o = []), s.push(o);
+ }
+ return (
+ e.gullet.endGroup(),
+ e.gullet.endGroup(),
+ {
+ type: "array",
+ mode: "math",
+ body: s,
+ arraystretch: 1,
+ addJot: !0,
+ rowGaps: [null],
+ cols: new Array(s[0].length).fill({
+ type: "align",
+ align: "c",
+ pregap: 0.25,
+ postgap: 0.25,
+ }),
+ colSeparationType: "CD",
+ hLinesBeforeRow: new Array(s.length + 1).fill([]),
+ }
+ );
+ })(e.parser)
+ );
+ },
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Vr("\\nonumber", "\\gdef\\@eqnsw{0}"),
+ Vr("\\notag", "\\nonumber"),
+ lt({
+ type: "text",
+ names: ["\\hline", "\\hdashline"],
+ props: { numArgs: 0, allowedInText: !0, allowedInMath: !0 },
+ handler: function (e, t) {
+ throw new n(e.funcName + " valid only within array environment");
+ },
+ });
+ var Jr = Lr;
+ lt({
+ type: "environment",
+ names: ["\\begin", "\\end"],
+ props: { numArgs: 1, argTypes: ["text"] },
+ handler: function (e, t) {
+ var r = e.parser,
+ a = e.funcName,
+ i = t[0];
+ if ("ordgroup" !== i.type) throw new n("Invalid environment name", i);
+ for (var o = "", s = 0; s < i.body.length; ++s) o += Ut(i.body[s], "textord").text;
+ if ("\\begin" === a) {
+ if (!Jr.hasOwnProperty(o)) throw new n("No such environment: " + o, i);
+ var l = Jr[o],
+ h = r.parseArguments("\\begin{" + o + "}", l),
+ c = h.args,
+ m = h.optArgs,
+ u = { mode: r.mode, envName: o, parser: r },
+ p = l.handler(u, c, m);
+ r.expect("\\end", !1);
+ var d = r.nextToken,
+ f = Ut(r.parseFunction(), "environment");
+ if (f.name !== o) throw new n("Mismatch: \\begin{" + o + "} matched by \\end{" + f.name + "}", d);
+ return p;
+ }
+ return { type: "environment", mode: r.mode, name: o, nameGroup: i };
+ },
+ });
+ var Qr = function (e, t) {
+ var r = e.font,
+ n = t.withFont(r);
+ return St(e.body, n);
+ },
+ en = function (e, t) {
+ var r = e.font,
+ n = t.withFont(r);
+ return Ot(e.body, n);
+ },
+ tn = {
+ "\\Bbb": "\\mathbb",
+ "\\bold": "\\mathbf",
+ "\\frak": "\\mathfrak",
+ "\\bm": "\\boldsymbol",
+ };
+ lt({
+ type: "font",
+ names: [
+ "\\mathrm",
+ "\\mathit",
+ "\\mathbf",
+ "\\mathnormal",
+ "\\mathbb",
+ "\\mathcal",
+ "\\mathfrak",
+ "\\mathscr",
+ "\\mathsf",
+ "\\mathtt",
+ "\\Bbb",
+ "\\bold",
+ "\\frak",
+ ],
+ props: { numArgs: 1, allowedInArgument: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = ct(t[0]),
+ i = n;
+ return i in tn && (i = tn[i]), { type: "font", mode: r.mode, font: i.slice(1), body: a };
+ },
+ htmlBuilder: Qr,
+ mathmlBuilder: en,
+ }),
+ lt({
+ type: "mclass",
+ names: ["\\boldsymbol", "\\bm"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = t[0],
+ a = p(n);
+ return {
+ type: "mclass",
+ mode: r.mode,
+ mclass: Qt(n),
+ body: [{ type: "font", mode: r.mode, font: "boldsymbol", body: n }],
+ isCharacterBox: a,
+ };
+ },
+ }),
+ lt({
+ type: "font",
+ names: ["\\rm", "\\sf", "\\tt", "\\bf", "\\it", "\\cal"],
+ props: { numArgs: 0, allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = e.breakOnTokenText,
+ i = r.mode,
+ o = r.parseExpression(!0, a);
+ return {
+ type: "font",
+ mode: i,
+ font: "math" + n.slice(1),
+ body: { type: "ordgroup", mode: r.mode, body: o },
+ };
+ },
+ htmlBuilder: Qr,
+ mathmlBuilder: en,
+ });
+ var rn = function (e, t) {
+ var r = t;
+ return (
+ "display" === e
+ ? (r = r.id >= A.SCRIPT.id ? r.text() : A.DISPLAY)
+ : "text" === e && r.size === A.DISPLAY.size
+ ? (r = A.TEXT)
+ : "script" === e
+ ? (r = A.SCRIPT)
+ : "scriptscript" === e && (r = A.SCRIPTSCRIPT),
+ r
+ );
+ },
+ nn = function (e, t) {
+ var r,
+ n = rn(e.size, t.style),
+ a = n.fracNum(),
+ i = n.fracDen();
+ r = t.havingStyle(a);
+ var o = St(e.numer, r, t);
+ if (e.continued) {
+ var s = 8.5 / t.fontMetrics().ptPerEm,
+ l = 3.5 / t.fontMetrics().ptPerEm;
+ (o.height = o.height < s ? s : o.height), (o.depth = o.depth < l ? l : o.depth);
+ }
+ r = t.havingStyle(i);
+ var h,
+ c,
+ m,
+ u,
+ p,
+ d,
+ f,
+ g,
+ v,
+ y,
+ b = St(e.denom, r, t);
+ if (
+ (e.hasBarLine
+ ? (e.barSize ? ((c = X(e.barSize, t)), (h = Qe.makeLineSpan("frac-line", t, c))) : (h = Qe.makeLineSpan("frac-line", t)),
+ (c = h.height),
+ (m = h.height))
+ : ((h = null), (c = 0), (m = t.fontMetrics().defaultRuleThickness)),
+ n.size === A.DISPLAY.size || "display" === e.size
+ ? ((u = t.fontMetrics().num1), (p = c > 0 ? 3 * m : 7 * m), (d = t.fontMetrics().denom1))
+ : (c > 0 ? ((u = t.fontMetrics().num2), (p = m)) : ((u = t.fontMetrics().num3), (p = 3 * m)), (d = t.fontMetrics().denom2)),
+ h)
+ ) {
+ var x = t.fontMetrics().axisHeight;
+ u - o.depth - (x + 0.5 * c) < p && (u += p - (u - o.depth - (x + 0.5 * c))),
+ x - 0.5 * c - (b.height - d) < p && (d += p - (x - 0.5 * c - (b.height - d))),
+ (f = Qe.makeVList(
+ {
+ positionType: "individualShift",
+ children: [
+ { type: "elem", elem: b, shift: d },
+ { type: "elem", elem: h, shift: -(x - 0.5 * c) },
+ { type: "elem", elem: o, shift: -u },
+ ],
+ },
+ t,
+ ));
+ } else {
+ var w = u - o.depth - (b.height - d);
+ w < p && ((u += 0.5 * (p - w)), (d += 0.5 * (p - w))),
+ (f = Qe.makeVList(
+ {
+ positionType: "individualShift",
+ children: [
+ { type: "elem", elem: b, shift: d },
+ { type: "elem", elem: o, shift: -u },
+ ],
+ },
+ t,
+ ));
+ }
+ return (
+ (r = t.havingStyle(n)),
+ (f.height *= r.sizeMultiplier / t.sizeMultiplier),
+ (f.depth *= r.sizeMultiplier / t.sizeMultiplier),
+ (g =
+ n.size === A.DISPLAY.size
+ ? t.fontMetrics().delim1
+ : n.size === A.SCRIPTSCRIPT.size
+ ? t.havingStyle(A.SCRIPT).fontMetrics().delim2
+ : t.fontMetrics().delim2),
+ (v = null == e.leftDelim ? kt(t, ["mopen"]) : Cr.customSizedDelim(e.leftDelim, g, !0, t.havingStyle(n), e.mode, ["mopen"])),
+ (y = e.continued
+ ? Qe.makeSpan([])
+ : null == e.rightDelim
+ ? kt(t, ["mclose"])
+ : Cr.customSizedDelim(e.rightDelim, g, !0, t.havingStyle(n), e.mode, ["mclose"])),
+ Qe.makeSpan(["mord"].concat(r.sizingClasses(t)), [v, Qe.makeSpan(["mfrac"], [f]), y], t)
+ );
+ },
+ an = function (e, t) {
+ var r = new Nt.MathNode("mfrac", [Ot(e.numer, t), Ot(e.denom, t)]);
+ if (e.hasBarLine) {
+ if (e.barSize) {
+ var n = X(e.barSize, t);
+ r.setAttribute("linethickness", W(n));
+ }
+ } else r.setAttribute("linethickness", "0px");
+ var a = rn(e.size, t.style);
+ if (a.size !== t.style.size) {
+ r = new Nt.MathNode("mstyle", [r]);
+ var i = a.size === A.DISPLAY.size ? "true" : "false";
+ r.setAttribute("displaystyle", i), r.setAttribute("scriptlevel", "0");
+ }
+ if (null != e.leftDelim || null != e.rightDelim) {
+ var o = [];
+ if (null != e.leftDelim) {
+ var s = new Nt.MathNode("mo", [new Nt.TextNode(e.leftDelim.replace("\\", ""))]);
+ s.setAttribute("fence", "true"), o.push(s);
+ }
+ if ((o.push(r), null != e.rightDelim)) {
+ var l = new Nt.MathNode("mo", [new Nt.TextNode(e.rightDelim.replace("\\", ""))]);
+ l.setAttribute("fence", "true"), o.push(l);
+ }
+ return qt(o);
+ }
+ return r;
+ };
+ lt({
+ type: "genfrac",
+ names: ["\\dfrac", "\\frac", "\\tfrac", "\\dbinom", "\\binom", "\\tbinom", "\\\\atopfrac", "\\\\bracefrac", "\\\\brackfrac"],
+ props: { numArgs: 2, allowedInArgument: !0 },
+ handler: function (e, t) {
+ var r,
+ n = e.parser,
+ a = e.funcName,
+ i = t[0],
+ o = t[1],
+ s = null,
+ l = null,
+ h = "auto";
+ switch (a) {
+ case "\\dfrac":
+ case "\\frac":
+ case "\\tfrac":
+ r = !0;
+ break;
+ case "\\\\atopfrac":
+ r = !1;
+ break;
+ case "\\dbinom":
+ case "\\binom":
+ case "\\tbinom":
+ (r = !1), (s = "("), (l = ")");
+ break;
+ case "\\\\bracefrac":
+ (r = !1), (s = "\\{"), (l = "\\}");
+ break;
+ case "\\\\brackfrac":
+ (r = !1), (s = "["), (l = "]");
+ break;
+ default:
+ throw new Error("Unrecognized genfrac command");
+ }
+ switch (a) {
+ case "\\dfrac":
+ case "\\dbinom":
+ h = "display";
+ break;
+ case "\\tfrac":
+ case "\\tbinom":
+ h = "text";
+ }
+ return {
+ type: "genfrac",
+ mode: n.mode,
+ continued: !1,
+ numer: i,
+ denom: o,
+ hasBarLine: r,
+ leftDelim: s,
+ rightDelim: l,
+ size: h,
+ barSize: null,
+ };
+ },
+ htmlBuilder: nn,
+ mathmlBuilder: an,
+ }),
+ lt({
+ type: "genfrac",
+ names: ["\\cfrac"],
+ props: { numArgs: 2 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = (e.funcName, t[0]),
+ a = t[1];
+ return {
+ type: "genfrac",
+ mode: r.mode,
+ continued: !0,
+ numer: n,
+ denom: a,
+ hasBarLine: !0,
+ leftDelim: null,
+ rightDelim: null,
+ size: "display",
+ barSize: null,
+ };
+ },
+ }),
+ lt({
+ type: "infix",
+ names: ["\\over", "\\choose", "\\atop", "\\brace", "\\brack"],
+ props: { numArgs: 0, infix: !0 },
+ handler: function (e) {
+ var t,
+ r = e.parser,
+ n = e.funcName,
+ a = e.token;
+ switch (n) {
+ case "\\over":
+ t = "\\frac";
+ break;
+ case "\\choose":
+ t = "\\binom";
+ break;
+ case "\\atop":
+ t = "\\\\atopfrac";
+ break;
+ case "\\brace":
+ t = "\\\\bracefrac";
+ break;
+ case "\\brack":
+ t = "\\\\brackfrac";
+ break;
+ default:
+ throw new Error("Unrecognized infix genfrac command");
+ }
+ return { type: "infix", mode: r.mode, replaceWith: t, token: a };
+ },
+ });
+ var on = ["display", "text", "script", "scriptscript"],
+ sn = function (e) {
+ var t = null;
+ return e.length > 0 && (t = "." === (t = e) ? null : t), t;
+ };
+ lt({
+ type: "genfrac",
+ names: ["\\genfrac"],
+ props: {
+ numArgs: 6,
+ allowedInArgument: !0,
+ argTypes: ["math", "math", "size", "text", "math", "math"],
+ },
+ handler: function (e, t) {
+ var r,
+ n = e.parser,
+ a = t[4],
+ i = t[5],
+ o = ct(t[0]),
+ s = "atom" === o.type && "open" === o.family ? sn(o.text) : null,
+ l = ct(t[1]),
+ h = "atom" === l.type && "close" === l.family ? sn(l.text) : null,
+ c = Ut(t[2], "size"),
+ m = null;
+ r = !!c.isBlank || (m = c.value).number > 0;
+ var u = "auto",
+ p = t[3];
+ if ("ordgroup" === p.type) {
+ if (p.body.length > 0) {
+ var d = Ut(p.body[0], "textord");
+ u = on[Number(d.text)];
+ }
+ } else (p = Ut(p, "textord")), (u = on[Number(p.text)]);
+ return {
+ type: "genfrac",
+ mode: n.mode,
+ numer: a,
+ denom: i,
+ continued: !1,
+ hasBarLine: r,
+ barSize: m,
+ leftDelim: s,
+ rightDelim: h,
+ size: u,
+ };
+ },
+ htmlBuilder: nn,
+ mathmlBuilder: an,
+ }),
+ lt({
+ type: "infix",
+ names: ["\\above"],
+ props: { numArgs: 1, argTypes: ["size"], infix: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = (e.funcName, e.token);
+ return {
+ type: "infix",
+ mode: r.mode,
+ replaceWith: "\\\\abovefrac",
+ size: Ut(t[0], "size").value,
+ token: n,
+ };
+ },
+ }),
+ lt({
+ type: "genfrac",
+ names: ["\\\\abovefrac"],
+ props: { numArgs: 3, argTypes: ["math", "size", "math"] },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = (e.funcName, t[0]),
+ a = (function (e) {
+ if (!e) throw new Error("Expected non-null, but got " + String(e));
+ return e;
+ })(Ut(t[1], "infix").size),
+ i = t[2],
+ o = a.number > 0;
+ return {
+ type: "genfrac",
+ mode: r.mode,
+ numer: n,
+ denom: i,
+ continued: !1,
+ hasBarLine: o,
+ barSize: a,
+ leftDelim: null,
+ rightDelim: null,
+ size: "auto",
+ };
+ },
+ htmlBuilder: nn,
+ mathmlBuilder: an,
+ });
+ var ln = function (e, t) {
+ var r,
+ n,
+ a = t.style;
+ "supsub" === e.type
+ ? ((r = e.sup ? St(e.sup, t.havingStyle(a.sup()), t) : St(e.sub, t.havingStyle(a.sub()), t)), (n = Ut(e.base, "horizBrace")))
+ : (n = Ut(e, "horizBrace"));
+ var i,
+ o = St(n.base, t.havingBaseStyle(A.DISPLAY)),
+ s = Gt(n, t);
+ if (
+ (n.isOver
+ ? (i = Qe.makeVList(
+ {
+ positionType: "firstBaseline",
+ children: [
+ { type: "elem", elem: o },
+ { type: "kern", size: 0.1 },
+ { type: "elem", elem: s },
+ ],
+ },
+ t,
+ )).children[0].children[0].children[1].classes.push("svg-align")
+ : (i = Qe.makeVList(
+ {
+ positionType: "bottom",
+ positionData: o.depth + 0.1 + s.height,
+ children: [
+ { type: "elem", elem: s },
+ { type: "kern", size: 0.1 },
+ { type: "elem", elem: o },
+ ],
+ },
+ t,
+ )).children[0].children[0].children[0].classes.push("svg-align"),
+ r)
+ ) {
+ var l = Qe.makeSpan(["mord", n.isOver ? "mover" : "munder"], [i], t);
+ i = n.isOver
+ ? Qe.makeVList(
+ {
+ positionType: "firstBaseline",
+ children: [
+ { type: "elem", elem: l },
+ { type: "kern", size: 0.2 },
+ { type: "elem", elem: r },
+ ],
+ },
+ t,
+ )
+ : Qe.makeVList(
+ {
+ positionType: "bottom",
+ positionData: l.depth + 0.2 + r.height + r.depth,
+ children: [
+ { type: "elem", elem: r },
+ { type: "kern", size: 0.2 },
+ { type: "elem", elem: l },
+ ],
+ },
+ t,
+ );
+ }
+ return Qe.makeSpan(["mord", n.isOver ? "mover" : "munder"], [i], t);
+ };
+ lt({
+ type: "horizBrace",
+ names: ["\\overbrace", "\\underbrace"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName;
+ return {
+ type: "horizBrace",
+ mode: r.mode,
+ label: n,
+ isOver: /^\\over/.test(n),
+ base: t[0],
+ };
+ },
+ htmlBuilder: ln,
+ mathmlBuilder: function (e, t) {
+ var r = Ft(e.label);
+ return new Nt.MathNode(e.isOver ? "mover" : "munder", [Ot(e.base, t), r]);
+ },
+ }),
+ lt({
+ type: "href",
+ names: ["\\href"],
+ props: { numArgs: 2, argTypes: ["url", "original"], allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = t[1],
+ a = Ut(t[0], "url").url;
+ return r.settings.isTrusted({ command: "\\href", url: a })
+ ? { type: "href", mode: r.mode, href: a, body: mt(n) }
+ : r.formatUnsupportedCmd("\\href");
+ },
+ htmlBuilder: function (e, t) {
+ var r = vt(e.body, t, !1);
+ return Qe.makeAnchor(e.href, [], r, t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = Ht(e.body, t);
+ return r instanceof Tt || (r = new Tt("mrow", [r])), r.setAttribute("href", e.href), r;
+ },
+ }),
+ lt({
+ type: "href",
+ names: ["\\url"],
+ props: { numArgs: 1, argTypes: ["url"], allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = Ut(t[0], "url").url;
+ if (!r.settings.isTrusted({ command: "\\url", url: n })) return r.formatUnsupportedCmd("\\url");
+ for (var a = [], i = 0; i < n.length; i++) {
+ var o = n[i];
+ "~" === o && (o = "\\textasciitilde"), a.push({ type: "textord", mode: "text", text: o });
+ }
+ var s = { type: "text", mode: r.mode, font: "\\texttt", body: a };
+ return { type: "href", mode: r.mode, href: n, body: mt(s) };
+ },
+ }),
+ lt({
+ type: "hbox",
+ names: ["\\hbox"],
+ props: { numArgs: 1, argTypes: ["text"], allowedInText: !0, primitive: !0 },
+ handler: function (e, t) {
+ return { type: "hbox", mode: e.parser.mode, body: mt(t[0]) };
+ },
+ htmlBuilder: function (e, t) {
+ var r = vt(e.body, t, !1);
+ return Qe.makeFragment(r);
+ },
+ mathmlBuilder: function (e, t) {
+ return new Nt.MathNode("mrow", Rt(e.body, t));
+ },
+ }),
+ lt({
+ type: "html",
+ names: ["\\htmlClass", "\\htmlId", "\\htmlStyle", "\\htmlData"],
+ props: { numArgs: 2, argTypes: ["raw", "original"], allowedInText: !0 },
+ handler: function (e, t) {
+ var r,
+ a = e.parser,
+ i = e.funcName,
+ o = (e.token, Ut(t[0], "raw").string),
+ s = t[1];
+ a.settings.strict && a.settings.reportNonstrict("htmlExtension", "HTML extension is disabled on strict mode");
+ var l = {};
+ switch (i) {
+ case "\\htmlClass":
+ (l.class = o), (r = { command: "\\htmlClass", class: o });
+ break;
+ case "\\htmlId":
+ (l.id = o), (r = { command: "\\htmlId", id: o });
+ break;
+ case "\\htmlStyle":
+ (l.style = o), (r = { command: "\\htmlStyle", style: o });
+ break;
+ case "\\htmlData":
+ for (var h = o.split(","), c = 0; c < h.length; c++) {
+ var m = h[c].split("=");
+ if (2 !== m.length) throw new n("Error parsing key-value for \\htmlData");
+ l["data-" + m[0].trim()] = m[1].trim();
+ }
+ r = { command: "\\htmlData", attributes: l };
+ break;
+ default:
+ throw new Error("Unrecognized html command");
+ }
+ return a.settings.isTrusted(r) ? { type: "html", mode: a.mode, attributes: l, body: mt(s) } : a.formatUnsupportedCmd(i);
+ },
+ htmlBuilder: function (e, t) {
+ var r = vt(e.body, t, !1),
+ n = ["enclosing"];
+ e.attributes.class && n.push.apply(n, e.attributes.class.trim().split(/\s+/));
+ var a = Qe.makeSpan(n, r, t);
+ for (var i in e.attributes) "class" !== i && e.attributes.hasOwnProperty(i) && a.setAttribute(i, e.attributes[i]);
+ return a;
+ },
+ mathmlBuilder: function (e, t) {
+ return Ht(e.body, t);
+ },
+ }),
+ lt({
+ type: "htmlmathml",
+ names: ["\\html@mathml"],
+ props: { numArgs: 2, allowedInText: !0 },
+ handler: function (e, t) {
+ return {
+ type: "htmlmathml",
+ mode: e.parser.mode,
+ html: mt(t[0]),
+ mathml: mt(t[1]),
+ };
+ },
+ htmlBuilder: function (e, t) {
+ var r = vt(e.html, t, !1);
+ return Qe.makeFragment(r);
+ },
+ mathmlBuilder: function (e, t) {
+ return Ht(e.mathml, t);
+ },
+ });
+ var hn = function (e) {
+ if (/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e)) return { number: +e, unit: "bp" };
+ var t = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);
+ if (!t) throw new n("Invalid size: '" + e + "' in \\includegraphics");
+ var r = { number: +(t[1] + t[2]), unit: t[3] };
+ if (!Y(r)) throw new n("Invalid unit: '" + r.unit + "' in \\includegraphics.");
+ return r;
+ };
+ lt({
+ type: "includegraphics",
+ names: ["\\includegraphics"],
+ props: {
+ numArgs: 1,
+ numOptionalArgs: 1,
+ argTypes: ["raw", "url"],
+ allowedInText: !1,
+ },
+ handler: function (e, t, r) {
+ var a = e.parser,
+ i = { number: 0, unit: "em" },
+ o = { number: 0.9, unit: "em" },
+ s = { number: 0, unit: "em" },
+ l = "";
+ if (r[0])
+ for (var h = Ut(r[0], "raw").string.split(","), c = 0; c < h.length; c++) {
+ var m = h[c].split("=");
+ if (2 === m.length) {
+ var u = m[1].trim();
+ switch (m[0].trim()) {
+ case "alt":
+ l = u;
+ break;
+ case "width":
+ i = hn(u);
+ break;
+ case "height":
+ o = hn(u);
+ break;
+ case "totalheight":
+ s = hn(u);
+ break;
+ default:
+ throw new n("Invalid key: '" + m[0] + "' in \\includegraphics.");
+ }
+ }
+ }
+ var p = Ut(t[0], "url").url;
+ return (
+ "" === l && (l = (l = (l = p).replace(/^.*[\\/]/, "")).substring(0, l.lastIndexOf("."))),
+ a.settings.isTrusted({ command: "\\includegraphics", url: p })
+ ? {
+ type: "includegraphics",
+ mode: a.mode,
+ alt: l,
+ width: i,
+ height: o,
+ totalheight: s,
+ src: p,
+ }
+ : a.formatUnsupportedCmd("\\includegraphics")
+ );
+ },
+ htmlBuilder: function (e, t) {
+ var r = X(e.height, t),
+ n = 0;
+ e.totalheight.number > 0 && (n = X(e.totalheight, t) - r);
+ var a = 0;
+ e.width.number > 0 && (a = X(e.width, t));
+ var i = { height: W(r + n) };
+ a > 0 && (i.width = W(a)), n > 0 && (i.verticalAlign = W(-n));
+ var o = new Q(e.src, e.alt, i);
+ return (o.height = r), (o.depth = n), o;
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mglyph", []);
+ r.setAttribute("alt", e.alt);
+ var n = X(e.height, t),
+ a = 0;
+ if (
+ (e.totalheight.number > 0 && ((a = X(e.totalheight, t) - n), r.setAttribute("valign", W(-a))),
+ r.setAttribute("height", W(n + a)),
+ e.width.number > 0)
+ ) {
+ var i = X(e.width, t);
+ r.setAttribute("width", W(i));
+ }
+ return r.setAttribute("src", e.src), r;
+ },
+ }),
+ lt({
+ type: "kern",
+ names: ["\\kern", "\\mkern", "\\hskip", "\\mskip"],
+ props: { numArgs: 1, argTypes: ["size"], primitive: !0, allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = Ut(t[0], "size");
+ if (r.settings.strict) {
+ var i = "m" === n[1],
+ o = "mu" === a.value.unit;
+ i
+ ? (o ||
+ r.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + n + " supports only mu units, not " + a.value.unit + " units"),
+ "math" !== r.mode && r.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + n + " works only in math mode"))
+ : o && r.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + n + " doesn't support mu units");
+ }
+ return { type: "kern", mode: r.mode, dimension: a.value };
+ },
+ htmlBuilder: function (e, t) {
+ return Qe.makeGlue(e.dimension, t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = X(e.dimension, t);
+ return new Nt.SpaceNode(r);
+ },
+ }),
+ lt({
+ type: "lap",
+ names: ["\\mathllap", "\\mathrlap", "\\mathclap"],
+ props: { numArgs: 1, allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = t[0];
+ return { type: "lap", mode: r.mode, alignment: n.slice(5), body: a };
+ },
+ htmlBuilder: function (e, t) {
+ var r;
+ "clap" === e.alignment
+ ? ((r = Qe.makeSpan([], [St(e.body, t)])), (r = Qe.makeSpan(["inner"], [r], t)))
+ : (r = Qe.makeSpan(["inner"], [St(e.body, t)]));
+ var n = Qe.makeSpan(["fix"], []),
+ a = Qe.makeSpan([e.alignment], [r, n], t),
+ i = Qe.makeSpan(["strut"]);
+ return (
+ (i.style.height = W(a.height + a.depth)),
+ a.depth && (i.style.verticalAlign = W(-a.depth)),
+ a.children.unshift(i),
+ (a = Qe.makeSpan(["thinbox"], [a], t)),
+ Qe.makeSpan(["mord", "vbox"], [a], t)
+ );
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mpadded", [Ot(e.body, t)]);
+ if ("rlap" !== e.alignment) {
+ var n = "llap" === e.alignment ? "-1" : "-0.5";
+ r.setAttribute("lspace", n + "width");
+ }
+ return r.setAttribute("width", "0px"), r;
+ },
+ }),
+ lt({
+ type: "styling",
+ names: ["\\(", "$"],
+ props: { numArgs: 0, allowedInText: !0, allowedInMath: !1 },
+ handler: function (e, t) {
+ var r = e.funcName,
+ n = e.parser,
+ a = n.mode;
+ n.switchMode("math");
+ var i = "\\(" === r ? "\\)" : "$",
+ o = n.parseExpression(!1, i);
+ return n.expect(i), n.switchMode(a), { type: "styling", mode: n.mode, style: "text", body: o };
+ },
+ }),
+ lt({
+ type: "text",
+ names: ["\\)", "\\]"],
+ props: { numArgs: 0, allowedInText: !0, allowedInMath: !1 },
+ handler: function (e, t) {
+ throw new n("Mismatched " + e.funcName);
+ },
+ });
+ var cn = function (e, t) {
+ switch (t.style.size) {
+ case A.DISPLAY.size:
+ return e.display;
+ case A.TEXT.size:
+ return e.text;
+ case A.SCRIPT.size:
+ return e.script;
+ case A.SCRIPTSCRIPT.size:
+ return e.scriptscript;
+ default:
+ return e.text;
+ }
+ };
+ lt({
+ type: "mathchoice",
+ names: ["\\mathchoice"],
+ props: { numArgs: 4, primitive: !0 },
+ handler: function (e, t) {
+ return {
+ type: "mathchoice",
+ mode: e.parser.mode,
+ display: mt(t[0]),
+ text: mt(t[1]),
+ script: mt(t[2]),
+ scriptscript: mt(t[3]),
+ };
+ },
+ htmlBuilder: function (e, t) {
+ var r = cn(e, t),
+ n = vt(r, t, !1);
+ return Qe.makeFragment(n);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = cn(e, t);
+ return Ht(r, t);
+ },
+ });
+ var mn = function (e, t, r, n, a, i, o) {
+ e = Qe.makeSpan([], [e]);
+ var s,
+ l,
+ h,
+ c = r && p(r);
+ if (t) {
+ var m = St(t, n.havingStyle(a.sup()), n);
+ l = {
+ elem: m,
+ kern: Math.max(n.fontMetrics().bigOpSpacing1, n.fontMetrics().bigOpSpacing3 - m.depth),
+ };
+ }
+ if (r) {
+ var u = St(r, n.havingStyle(a.sub()), n);
+ s = {
+ elem: u,
+ kern: Math.max(n.fontMetrics().bigOpSpacing2, n.fontMetrics().bigOpSpacing4 - u.height),
+ };
+ }
+ if (l && s) {
+ var d = n.fontMetrics().bigOpSpacing5 + s.elem.height + s.elem.depth + s.kern + e.depth + o;
+ h = Qe.makeVList(
+ {
+ positionType: "bottom",
+ positionData: d,
+ children: [
+ { type: "kern", size: n.fontMetrics().bigOpSpacing5 },
+ { type: "elem", elem: s.elem, marginLeft: W(-i) },
+ { type: "kern", size: s.kern },
+ { type: "elem", elem: e },
+ { type: "kern", size: l.kern },
+ { type: "elem", elem: l.elem, marginLeft: W(i) },
+ { type: "kern", size: n.fontMetrics().bigOpSpacing5 },
+ ],
+ },
+ n,
+ );
+ } else if (s) {
+ var f = e.height - o;
+ h = Qe.makeVList(
+ {
+ positionType: "top",
+ positionData: f,
+ children: [
+ { type: "kern", size: n.fontMetrics().bigOpSpacing5 },
+ { type: "elem", elem: s.elem, marginLeft: W(-i) },
+ { type: "kern", size: s.kern },
+ { type: "elem", elem: e },
+ ],
+ },
+ n,
+ );
+ } else {
+ if (!l) return e;
+ var g = e.depth + o;
+ h = Qe.makeVList(
+ {
+ positionType: "bottom",
+ positionData: g,
+ children: [
+ { type: "elem", elem: e },
+ { type: "kern", size: l.kern },
+ { type: "elem", elem: l.elem, marginLeft: W(i) },
+ { type: "kern", size: n.fontMetrics().bigOpSpacing5 },
+ ],
+ },
+ n,
+ );
+ }
+ var v = [h];
+ if (s && 0 !== i && !c) {
+ var y = Qe.makeSpan(["mspace"], [], n);
+ (y.style.marginRight = W(i)), v.unshift(y);
+ }
+ return Qe.makeSpan(["mop", "op-limits"], v, n);
+ },
+ un = ["\\smallint"],
+ pn = function (e, t) {
+ var r,
+ n,
+ a,
+ i = !1;
+ "supsub" === e.type ? ((r = e.sup), (n = e.sub), (a = Ut(e.base, "op")), (i = !0)) : (a = Ut(e, "op"));
+ var o,
+ s = t.style,
+ h = !1;
+ if ((s.size === A.DISPLAY.size && a.symbol && !l(un, a.name) && (h = !0), a.symbol)) {
+ var c = h ? "Size2-Regular" : "Size1-Regular",
+ m = "";
+ if (
+ (("\\oiint" !== a.name && "\\oiiint" !== a.name) || ((m = a.name.slice(1)), (a.name = "oiint" === m ? "\\iint" : "\\iiint")),
+ (o = Qe.makeSymbol(a.name, c, "math", t, ["mop", "op-symbol", h ? "large-op" : "small-op"])),
+ m.length > 0)
+ ) {
+ var u = o.italic,
+ p = Qe.staticSvg(m + "Size" + (h ? "2" : "1"), t);
+ (o = Qe.makeVList(
+ {
+ positionType: "individualShift",
+ children: [
+ { type: "elem", elem: o, shift: 0 },
+ { type: "elem", elem: p, shift: h ? 0.08 : 0 },
+ ],
+ },
+ t,
+ )),
+ (a.name = "\\" + m),
+ o.classes.unshift("mop"),
+ (o.italic = u);
+ }
+ } else if (a.body) {
+ var d = vt(a.body, t, !0);
+ 1 === d.length && d[0] instanceof te ? ((o = d[0]).classes[0] = "mop") : (o = Qe.makeSpan(["mop"], d, t));
+ } else {
+ for (var f = [], g = 1; g < a.name.length; g++) f.push(Qe.mathsym(a.name[g], a.mode, t));
+ o = Qe.makeSpan(["mop"], f, t);
+ }
+ var v = 0,
+ y = 0;
+ return (
+ (o instanceof te || "\\oiint" === a.name || "\\oiiint" === a.name) &&
+ !a.suppressBaseShift &&
+ ((v = (o.height - o.depth) / 2 - t.fontMetrics().axisHeight), (y = o.italic)),
+ i ? mn(o, r, n, t, s, y, v) : (v && ((o.style.position = "relative"), (o.style.top = W(v))), o)
+ );
+ },
+ dn = function (e, t) {
+ var r;
+ if (e.symbol) (r = new Tt("mo", [Ct(e.name, e.mode)])), l(un, e.name) && r.setAttribute("largeop", "false");
+ else if (e.body) r = new Tt("mo", Rt(e.body, t));
+ else {
+ r = new Tt("mi", [new Bt(e.name.slice(1))]);
+ var n = new Tt("mo", [Ct("", "text")]);
+ r = e.parentIsSupSub ? new Tt("mrow", [r, n]) : At([r, n]);
+ }
+ return r;
+ },
+ fn = {
+ "∏": "\\prod",
+ "∐": "\\coprod",
+ "∑": "\\sum",
+ "⋀": "\\bigwedge",
+ "⋁": "\\bigvee",
+ "⋂": "\\bigcap",
+ "⋃": "\\bigcup",
+ "⨀": "\\bigodot",
+ "⨁": "\\bigoplus",
+ "⨂": "\\bigotimes",
+ "⨄": "\\biguplus",
+ "⨆": "\\bigsqcup",
+ };
+ lt({
+ type: "op",
+ names: [
+ "\\coprod",
+ "\\bigvee",
+ "\\bigwedge",
+ "\\biguplus",
+ "\\bigcap",
+ "\\bigcup",
+ "\\intop",
+ "\\prod",
+ "\\sum",
+ "\\bigotimes",
+ "\\bigoplus",
+ "\\bigodot",
+ "\\bigsqcup",
+ "\\smallint",
+ "∏",
+ "∐",
+ "∑",
+ "⋀",
+ "⋁",
+ "⋂",
+ "⋃",
+ "⨀",
+ "⨁",
+ "⨂",
+ "⨄",
+ "⨆",
+ ],
+ props: { numArgs: 0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName;
+ return 1 === n.length && (n = fn[n]), { type: "op", mode: r.mode, limits: !0, parentIsSupSub: !1, symbol: !0, name: n };
+ },
+ htmlBuilder: pn,
+ mathmlBuilder: dn,
+ }),
+ lt({
+ type: "op",
+ names: ["\\mathop"],
+ props: { numArgs: 1, primitive: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = t[0];
+ return {
+ type: "op",
+ mode: r.mode,
+ limits: !1,
+ parentIsSupSub: !1,
+ symbol: !1,
+ body: mt(n),
+ };
+ },
+ htmlBuilder: pn,
+ mathmlBuilder: dn,
+ });
+ var gn = {
+ "∫": "\\int",
+ "∬": "\\iint",
+ "∭": "\\iiint",
+ "∮": "\\oint",
+ "∯": "\\oiint",
+ "∰": "\\oiiint",
+ };
+ lt({
+ type: "op",
+ names: [
+ "\\arcsin",
+ "\\arccos",
+ "\\arctan",
+ "\\arctg",
+ "\\arcctg",
+ "\\arg",
+ "\\ch",
+ "\\cos",
+ "\\cosec",
+ "\\cosh",
+ "\\cot",
+ "\\cotg",
+ "\\coth",
+ "\\csc",
+ "\\ctg",
+ "\\cth",
+ "\\deg",
+ "\\dim",
+ "\\exp",
+ "\\hom",
+ "\\ker",
+ "\\lg",
+ "\\ln",
+ "\\log",
+ "\\sec",
+ "\\sin",
+ "\\sinh",
+ "\\sh",
+ "\\tan",
+ "\\tanh",
+ "\\tg",
+ "\\th",
+ ],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ var t = e.parser,
+ r = e.funcName;
+ return {
+ type: "op",
+ mode: t.mode,
+ limits: !1,
+ parentIsSupSub: !1,
+ symbol: !1,
+ name: r,
+ };
+ },
+ htmlBuilder: pn,
+ mathmlBuilder: dn,
+ }),
+ lt({
+ type: "op",
+ names: ["\\det", "\\gcd", "\\inf", "\\lim", "\\max", "\\min", "\\Pr", "\\sup"],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ var t = e.parser,
+ r = e.funcName;
+ return {
+ type: "op",
+ mode: t.mode,
+ limits: !0,
+ parentIsSupSub: !1,
+ symbol: !1,
+ name: r,
+ };
+ },
+ htmlBuilder: pn,
+ mathmlBuilder: dn,
+ }),
+ lt({
+ type: "op",
+ names: ["\\int", "\\iint", "\\iiint", "\\oint", "\\oiint", "\\oiiint", "∫", "∬", "∭", "∮", "∯", "∰"],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ var t = e.parser,
+ r = e.funcName;
+ return (
+ 1 === r.length && (r = gn[r]),
+ {
+ type: "op",
+ mode: t.mode,
+ limits: !1,
+ parentIsSupSub: !1,
+ symbol: !0,
+ name: r,
+ }
+ );
+ },
+ htmlBuilder: pn,
+ mathmlBuilder: dn,
+ });
+ var vn = function (e, t) {
+ var r,
+ n,
+ a,
+ i,
+ o = !1;
+ if (
+ ("supsub" === e.type ? ((r = e.sup), (n = e.sub), (a = Ut(e.base, "operatorname")), (o = !0)) : (a = Ut(e, "operatorname")),
+ a.body.length > 0)
+ ) {
+ for (
+ var s = a.body.map(function (e) {
+ var t = e.text;
+ return "string" == typeof t ? { type: "textord", mode: e.mode, text: t } : e;
+ }),
+ l = vt(s, t.withFont("mathrm"), !0),
+ h = 0;
+ h < l.length;
+ h++
+ ) {
+ var c = l[h];
+ c instanceof te && (c.text = c.text.replace(/\u2212/, "-").replace(/\u2217/, "*"));
+ }
+ i = Qe.makeSpan(["mop"], l, t);
+ } else i = Qe.makeSpan(["mop"], [], t);
+ return o ? mn(i, r, n, t, t.style, 0, 0) : i;
+ };
+ function yn(e, t, r) {
+ for (var n = vt(e, t, !1), a = t.sizeMultiplier / r.sizeMultiplier, i = 0; i < n.length; i++) {
+ var o = n[i].classes.indexOf("sizing");
+ o < 0
+ ? Array.prototype.push.apply(n[i].classes, t.sizingClasses(r))
+ : n[i].classes[o + 1] === "reset-size" + t.size && (n[i].classes[o + 1] = "reset-size" + r.size),
+ (n[i].height *= a),
+ (n[i].depth *= a);
+ }
+ return Qe.makeFragment(n);
+ }
+ lt({
+ type: "operatorname",
+ names: ["\\operatorname@", "\\operatornamewithlimits"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = t[0];
+ return {
+ type: "operatorname",
+ mode: r.mode,
+ body: mt(a),
+ alwaysHandleSupSub: "\\operatornamewithlimits" === n,
+ limits: !1,
+ parentIsSupSub: !1,
+ };
+ },
+ htmlBuilder: vn,
+ mathmlBuilder: function (e, t) {
+ for (var r = Rt(e.body, t.withFont("mathrm")), n = !0, a = 0; a < r.length; a++) {
+ var i = r[a];
+ if (i instanceof Nt.SpaceNode);
+ else if (i instanceof Nt.MathNode)
+ switch (i.type) {
+ case "mi":
+ case "mn":
+ case "ms":
+ case "mspace":
+ case "mtext":
+ break;
+ case "mo":
+ var o = i.children[0];
+ 1 === i.children.length && o instanceof Nt.TextNode
+ ? (o.text = o.text.replace(/\u2212/, "-").replace(/\u2217/, "*"))
+ : (n = !1);
+ break;
+ default:
+ n = !1;
+ }
+ else n = !1;
+ }
+ if (n) {
+ var s = r
+ .map(function (e) {
+ return e.toText();
+ })
+ .join("");
+ r = [new Nt.TextNode(s)];
+ }
+ var l = new Nt.MathNode("mi", r);
+ l.setAttribute("mathvariant", "normal");
+ var h = new Nt.MathNode("mo", [Ct("", "text")]);
+ return e.parentIsSupSub ? new Nt.MathNode("mrow", [l, h]) : Nt.newDocumentFragment([l, h]);
+ },
+ }),
+ Vr("\\operatorname", "\\@ifstar\\operatornamewithlimits\\operatorname@"),
+ ht({
+ type: "ordgroup",
+ htmlBuilder: function (e, t) {
+ return e.semisimple ? Qe.makeFragment(vt(e.body, t, !1)) : Qe.makeSpan(["mord"], vt(e.body, t, !0), t);
+ },
+ mathmlBuilder: function (e, t) {
+ return Ht(e.body, t, !0);
+ },
+ }),
+ lt({
+ type: "overline",
+ names: ["\\overline"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = t[0];
+ return { type: "overline", mode: r.mode, body: n };
+ },
+ htmlBuilder: function (e, t) {
+ var r = St(e.body, t.havingCrampedStyle()),
+ n = Qe.makeLineSpan("overline-line", t),
+ a = t.fontMetrics().defaultRuleThickness,
+ i = Qe.makeVList(
+ {
+ positionType: "firstBaseline",
+ children: [
+ { type: "elem", elem: r },
+ { type: "kern", size: 3 * a },
+ { type: "elem", elem: n },
+ { type: "kern", size: a },
+ ],
+ },
+ t,
+ );
+ return Qe.makeSpan(["mord", "overline"], [i], t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mo", [new Nt.TextNode("‾")]);
+ r.setAttribute("stretchy", "true");
+ var n = new Nt.MathNode("mover", [Ot(e.body, t), r]);
+ return n.setAttribute("accent", "true"), n;
+ },
+ }),
+ lt({
+ type: "phantom",
+ names: ["\\phantom"],
+ props: { numArgs: 1, allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = t[0];
+ return { type: "phantom", mode: r.mode, body: mt(n) };
+ },
+ htmlBuilder: function (e, t) {
+ var r = vt(e.body, t.withPhantom(), !1);
+ return Qe.makeFragment(r);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = Rt(e.body, t);
+ return new Nt.MathNode("mphantom", r);
+ },
+ }),
+ lt({
+ type: "hphantom",
+ names: ["\\hphantom"],
+ props: { numArgs: 1, allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = t[0];
+ return { type: "hphantom", mode: r.mode, body: n };
+ },
+ htmlBuilder: function (e, t) {
+ var r = Qe.makeSpan([], [St(e.body, t.withPhantom())]);
+ if (((r.height = 0), (r.depth = 0), r.children))
+ for (var n = 0; n < r.children.length; n++) (r.children[n].height = 0), (r.children[n].depth = 0);
+ return (
+ (r = Qe.makeVList({ positionType: "firstBaseline", children: [{ type: "elem", elem: r }] }, t)), Qe.makeSpan(["mord"], [r], t)
+ );
+ },
+ mathmlBuilder: function (e, t) {
+ var r = Rt(mt(e.body), t),
+ n = new Nt.MathNode("mphantom", r),
+ a = new Nt.MathNode("mpadded", [n]);
+ return a.setAttribute("height", "0px"), a.setAttribute("depth", "0px"), a;
+ },
+ }),
+ lt({
+ type: "vphantom",
+ names: ["\\vphantom"],
+ props: { numArgs: 1, allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = t[0];
+ return { type: "vphantom", mode: r.mode, body: n };
+ },
+ htmlBuilder: function (e, t) {
+ var r = Qe.makeSpan(["inner"], [St(e.body, t.withPhantom())]),
+ n = Qe.makeSpan(["fix"], []);
+ return Qe.makeSpan(["mord", "rlap"], [r, n], t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = Rt(mt(e.body), t),
+ n = new Nt.MathNode("mphantom", r),
+ a = new Nt.MathNode("mpadded", [n]);
+ return a.setAttribute("width", "0px"), a;
+ },
+ }),
+ lt({
+ type: "raisebox",
+ names: ["\\raisebox"],
+ props: { numArgs: 2, argTypes: ["size", "hbox"], allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = Ut(t[0], "size").value,
+ a = t[1];
+ return { type: "raisebox", mode: r.mode, dy: n, body: a };
+ },
+ htmlBuilder: function (e, t) {
+ var r = St(e.body, t),
+ n = X(e.dy, t);
+ return Qe.makeVList(
+ {
+ positionType: "shift",
+ positionData: -n,
+ children: [{ type: "elem", elem: r }],
+ },
+ t,
+ );
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mpadded", [Ot(e.body, t)]),
+ n = e.dy.number + e.dy.unit;
+ return r.setAttribute("voffset", n), r;
+ },
+ }),
+ lt({
+ type: "internal",
+ names: ["\\relax"],
+ props: { numArgs: 0, allowedInText: !0 },
+ handler: function (e) {
+ return { type: "internal", mode: e.parser.mode };
+ },
+ }),
+ lt({
+ type: "rule",
+ names: ["\\rule"],
+ props: { numArgs: 2, numOptionalArgs: 1, argTypes: ["size", "size", "size"] },
+ handler: function (e, t, r) {
+ var n = e.parser,
+ a = r[0],
+ i = Ut(t[0], "size"),
+ o = Ut(t[1], "size");
+ return {
+ type: "rule",
+ mode: n.mode,
+ shift: a && Ut(a, "size").value,
+ width: i.value,
+ height: o.value,
+ };
+ },
+ htmlBuilder: function (e, t) {
+ var r = Qe.makeSpan(["mord", "rule"], [], t),
+ n = X(e.width, t),
+ a = X(e.height, t),
+ i = e.shift ? X(e.shift, t) : 0;
+ return (
+ (r.style.borderRightWidth = W(n)),
+ (r.style.borderTopWidth = W(a)),
+ (r.style.bottom = W(i)),
+ (r.width = n),
+ (r.height = a + i),
+ (r.depth = -i),
+ (r.maxFontSize = 1.125 * a * t.sizeMultiplier),
+ r
+ );
+ },
+ mathmlBuilder: function (e, t) {
+ var r = X(e.width, t),
+ n = X(e.height, t),
+ a = e.shift ? X(e.shift, t) : 0,
+ i = (t.color && t.getColor()) || "black",
+ o = new Nt.MathNode("mspace");
+ o.setAttribute("mathbackground", i), o.setAttribute("width", W(r)), o.setAttribute("height", W(n));
+ var s = new Nt.MathNode("mpadded", [o]);
+ return (
+ a >= 0 ? s.setAttribute("height", W(a)) : (s.setAttribute("height", W(a)), s.setAttribute("depth", W(-a))),
+ s.setAttribute("voffset", W(a)),
+ s
+ );
+ },
+ });
+ var bn = [
+ "\\tiny",
+ "\\sixptsize",
+ "\\scriptsize",
+ "\\footnotesize",
+ "\\small",
+ "\\normalsize",
+ "\\large",
+ "\\Large",
+ "\\LARGE",
+ "\\huge",
+ "\\Huge",
+ ];
+ lt({
+ type: "sizing",
+ names: bn,
+ props: { numArgs: 0, allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.breakOnTokenText,
+ n = e.funcName,
+ a = e.parser,
+ i = a.parseExpression(!1, r);
+ return { type: "sizing", mode: a.mode, size: bn.indexOf(n) + 1, body: i };
+ },
+ htmlBuilder: function (e, t) {
+ var r = t.havingSize(e.size);
+ return yn(e.body, r, t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = t.havingSize(e.size),
+ n = Rt(e.body, r),
+ a = new Nt.MathNode("mstyle", n);
+ return a.setAttribute("mathsize", W(r.sizeMultiplier)), a;
+ },
+ }),
+ lt({
+ type: "smash",
+ names: ["\\smash"],
+ props: { numArgs: 1, numOptionalArgs: 1, allowedInText: !0 },
+ handler: function (e, t, r) {
+ var n = e.parser,
+ a = !1,
+ i = !1,
+ o = r[0] && Ut(r[0], "ordgroup");
+ if (o)
+ for (var s = "", l = 0; l < o.body.length; ++l)
+ if ("t" === (s = o.body[l].text)) a = !0;
+ else {
+ if ("b" !== s) {
+ (a = !1), (i = !1);
+ break;
+ }
+ i = !0;
+ }
+ else (a = !0), (i = !0);
+ var h = t[0];
+ return { type: "smash", mode: n.mode, body: h, smashHeight: a, smashDepth: i };
+ },
+ htmlBuilder: function (e, t) {
+ var r = Qe.makeSpan([], [St(e.body, t)]);
+ if (!e.smashHeight && !e.smashDepth) return r;
+ if (e.smashHeight && ((r.height = 0), r.children)) for (var n = 0; n < r.children.length; n++) r.children[n].height = 0;
+ if (e.smashDepth && ((r.depth = 0), r.children)) for (var a = 0; a < r.children.length; a++) r.children[a].depth = 0;
+ var i = Qe.makeVList({ positionType: "firstBaseline", children: [{ type: "elem", elem: r }] }, t);
+ return Qe.makeSpan(["mord"], [i], t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mpadded", [Ot(e.body, t)]);
+ return e.smashHeight && r.setAttribute("height", "0px"), e.smashDepth && r.setAttribute("depth", "0px"), r;
+ },
+ }),
+ lt({
+ type: "sqrt",
+ names: ["\\sqrt"],
+ props: { numArgs: 1, numOptionalArgs: 1 },
+ handler: function (e, t, r) {
+ var n = e.parser,
+ a = r[0],
+ i = t[0];
+ return { type: "sqrt", mode: n.mode, body: i, index: a };
+ },
+ htmlBuilder: function (e, t) {
+ var r = St(e.body, t.havingCrampedStyle());
+ 0 === r.height && (r.height = t.fontMetrics().xHeight), (r = Qe.wrapFragment(r, t));
+ var n = t.fontMetrics().defaultRuleThickness,
+ a = n;
+ t.style.id < A.TEXT.id && (a = t.fontMetrics().xHeight);
+ var i = n + a / 4,
+ o = r.height + r.depth + i + n,
+ s = Cr.sqrtImage(o, t),
+ l = s.span,
+ h = s.ruleWidth,
+ c = s.advanceWidth,
+ m = l.height - h;
+ m > r.height + r.depth + i && (i = (i + m - r.height - r.depth) / 2);
+ var u = l.height - r.height - i - h;
+ r.style.paddingLeft = W(c);
+ var p = Qe.makeVList(
+ {
+ positionType: "firstBaseline",
+ children: [
+ { type: "elem", elem: r, wrapperClasses: ["svg-align"] },
+ { type: "kern", size: -(r.height + u) },
+ { type: "elem", elem: l },
+ { type: "kern", size: h },
+ ],
+ },
+ t,
+ );
+ if (e.index) {
+ var d = t.havingStyle(A.SCRIPTSCRIPT),
+ f = St(e.index, d, t),
+ g = 0.6 * (p.height - p.depth),
+ v = Qe.makeVList(
+ {
+ positionType: "shift",
+ positionData: -g,
+ children: [{ type: "elem", elem: f }],
+ },
+ t,
+ ),
+ y = Qe.makeSpan(["root"], [v]);
+ return Qe.makeSpan(["mord", "sqrt"], [y, p], t);
+ }
+ return Qe.makeSpan(["mord", "sqrt"], [p], t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = e.body,
+ n = e.index;
+ return n ? new Nt.MathNode("mroot", [Ot(r, t), Ot(n, t)]) : new Nt.MathNode("msqrt", [Ot(r, t)]);
+ },
+ });
+ var xn = {
+ display: A.DISPLAY,
+ text: A.TEXT,
+ script: A.SCRIPT,
+ scriptscript: A.SCRIPTSCRIPT,
+ };
+ lt({
+ type: "styling",
+ names: ["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"],
+ props: { numArgs: 0, allowedInText: !0, primitive: !0 },
+ handler: function (e, t) {
+ var r = e.breakOnTokenText,
+ n = e.funcName,
+ a = e.parser,
+ i = a.parseExpression(!0, r),
+ o = n.slice(1, n.length - 5);
+ return { type: "styling", mode: a.mode, style: o, body: i };
+ },
+ htmlBuilder: function (e, t) {
+ var r = xn[e.style],
+ n = t.havingStyle(r).withFont("");
+ return yn(e.body, n, t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = xn[e.style],
+ n = t.havingStyle(r),
+ a = Rt(e.body, n),
+ i = new Nt.MathNode("mstyle", a),
+ o = {
+ display: ["0", "true"],
+ text: ["0", "false"],
+ script: ["1", "false"],
+ scriptscript: ["2", "false"],
+ }[e.style];
+ return i.setAttribute("scriptlevel", o[0]), i.setAttribute("displaystyle", o[1]), i;
+ },
+ });
+ ht({
+ type: "supsub",
+ htmlBuilder: function (e, t) {
+ var r = (function (e, t) {
+ var r = e.base;
+ return r
+ ? "op" === r.type
+ ? r.limits && (t.style.size === A.DISPLAY.size || r.alwaysHandleSupSub)
+ ? pn
+ : null
+ : "operatorname" === r.type
+ ? r.alwaysHandleSupSub && (t.style.size === A.DISPLAY.size || r.limits)
+ ? vn
+ : null
+ : "accent" === r.type
+ ? p(r.base)
+ ? Wt
+ : null
+ : "horizBrace" === r.type && !e.sub === r.isOver
+ ? ln
+ : null
+ : null;
+ })(e, t);
+ if (r) return r(e, t);
+ var n,
+ a,
+ i,
+ o = e.base,
+ s = e.sup,
+ l = e.sub,
+ h = St(o, t),
+ c = t.fontMetrics(),
+ m = 0,
+ u = 0,
+ d = o && p(o);
+ if (s) {
+ var f = t.havingStyle(t.style.sup());
+ (n = St(s, f, t)), d || (m = h.height - (f.fontMetrics().supDrop * f.sizeMultiplier) / t.sizeMultiplier);
+ }
+ if (l) {
+ var g = t.havingStyle(t.style.sub());
+ (a = St(l, g, t)), d || (u = h.depth + (g.fontMetrics().subDrop * g.sizeMultiplier) / t.sizeMultiplier);
+ }
+ i = t.style === A.DISPLAY ? c.sup1 : t.style.cramped ? c.sup3 : c.sup2;
+ var v,
+ y = t.sizeMultiplier,
+ b = W(0.5 / c.ptPerEm / y),
+ x = null;
+ if (a) {
+ var w = e.base && "op" === e.base.type && e.base.name && ("\\oiint" === e.base.name || "\\oiiint" === e.base.name);
+ (h instanceof te || w) && (x = W(-h.italic));
+ }
+ if (n && a) {
+ (m = Math.max(m, i, n.depth + 0.25 * c.xHeight)), (u = Math.max(u, c.sub2));
+ var k = 4 * c.defaultRuleThickness;
+ if (m - n.depth - (a.height - u) < k) {
+ u = k - (m - n.depth) + a.height;
+ var S = 0.8 * c.xHeight - (m - n.depth);
+ S > 0 && ((m += S), (u -= S));
+ }
+ v = Qe.makeVList(
+ {
+ positionType: "individualShift",
+ children: [
+ { type: "elem", elem: a, shift: u, marginRight: b, marginLeft: x },
+ { type: "elem", elem: n, shift: -m, marginRight: b },
+ ],
+ },
+ t,
+ );
+ } else if (a) {
+ (u = Math.max(u, c.sub1, a.height - 0.8 * c.xHeight)),
+ (v = Qe.makeVList(
+ {
+ positionType: "shift",
+ positionData: u,
+ children: [{ type: "elem", elem: a, marginLeft: x, marginRight: b }],
+ },
+ t,
+ ));
+ } else {
+ if (!n) throw new Error("supsub must have either sup or sub.");
+ (m = Math.max(m, i, n.depth + 0.25 * c.xHeight)),
+ (v = Qe.makeVList(
+ {
+ positionType: "shift",
+ positionData: -m,
+ children: [{ type: "elem", elem: n, marginRight: b }],
+ },
+ t,
+ ));
+ }
+ var M = wt(h, "right") || "mord";
+ return Qe.makeSpan([M], [h, Qe.makeSpan(["msupsub"], [v])], t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r,
+ n = !1;
+ e.base && "horizBrace" === e.base.type && !!e.sup === e.base.isOver && ((n = !0), (r = e.base.isOver)),
+ !e.base || ("op" !== e.base.type && "operatorname" !== e.base.type) || (e.base.parentIsSupSub = !0);
+ var a,
+ i = [Ot(e.base, t)];
+ if ((e.sub && i.push(Ot(e.sub, t)), e.sup && i.push(Ot(e.sup, t)), n)) a = r ? "mover" : "munder";
+ else if (e.sub)
+ if (e.sup) {
+ var o = e.base;
+ a =
+ (o && "op" === o.type && o.limits && t.style === A.DISPLAY) ||
+ (o && "operatorname" === o.type && o.alwaysHandleSupSub && (t.style === A.DISPLAY || o.limits))
+ ? "munderover"
+ : "msubsup";
+ } else {
+ var s = e.base;
+ a =
+ (s && "op" === s.type && s.limits && (t.style === A.DISPLAY || s.alwaysHandleSupSub)) ||
+ (s && "operatorname" === s.type && s.alwaysHandleSupSub && (s.limits || t.style === A.DISPLAY))
+ ? "munder"
+ : "msub";
+ }
+ else {
+ var l = e.base;
+ a =
+ (l && "op" === l.type && l.limits && (t.style === A.DISPLAY || l.alwaysHandleSupSub)) ||
+ (l && "operatorname" === l.type && l.alwaysHandleSupSub && (l.limits || t.style === A.DISPLAY))
+ ? "mover"
+ : "msup";
+ }
+ return new Nt.MathNode(a, i);
+ },
+ }),
+ ht({
+ type: "atom",
+ htmlBuilder: function (e, t) {
+ return Qe.mathsym(e.text, e.mode, t, ["m" + e.family]);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mo", [Ct(e.text, e.mode)]);
+ if ("bin" === e.family) {
+ var n = It(e, t);
+ "bold-italic" === n && r.setAttribute("mathvariant", n);
+ } else
+ "punct" === e.family
+ ? r.setAttribute("separator", "true")
+ : ("open" !== e.family && "close" !== e.family) || r.setAttribute("stretchy", "false");
+ return r;
+ },
+ });
+ var wn = { mi: "italic", mn: "normal", mtext: "normal" };
+ ht({
+ type: "mathord",
+ htmlBuilder: function (e, t) {
+ return Qe.makeOrd(e, t, "mathord");
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mi", [Ct(e.text, e.mode, t)]),
+ n = It(e, t) || "italic";
+ return n !== wn[r.type] && r.setAttribute("mathvariant", n), r;
+ },
+ }),
+ ht({
+ type: "textord",
+ htmlBuilder: function (e, t) {
+ return Qe.makeOrd(e, t, "textord");
+ },
+ mathmlBuilder: function (e, t) {
+ var r,
+ n = Ct(e.text, e.mode, t),
+ a = It(e, t) || "normal";
+ return (
+ (r =
+ "text" === e.mode
+ ? new Nt.MathNode("mtext", [n])
+ : /[0-9]/.test(e.text)
+ ? new Nt.MathNode("mn", [n])
+ : "\\prime" === e.text
+ ? new Nt.MathNode("mo", [n])
+ : new Nt.MathNode("mi", [n])),
+ a !== wn[r.type] && r.setAttribute("mathvariant", a),
+ r
+ );
+ },
+ });
+ var kn = { "\\nobreak": "nobreak", "\\allowbreak": "allowbreak" },
+ Sn = {
+ " ": {},
+ "\\ ": {},
+ "~": { className: "nobreak" },
+ "\\space": {},
+ "\\nobreakspace": { className: "nobreak" },
+ };
+ ht({
+ type: "spacing",
+ htmlBuilder: function (e, t) {
+ if (Sn.hasOwnProperty(e.text)) {
+ var r = Sn[e.text].className || "";
+ if ("text" === e.mode) {
+ var a = Qe.makeOrd(e, t, "textord");
+ return a.classes.push(r), a;
+ }
+ return Qe.makeSpan(["mspace", r], [Qe.mathsym(e.text, e.mode, t)], t);
+ }
+ if (kn.hasOwnProperty(e.text)) return Qe.makeSpan(["mspace", kn[e.text]], [], t);
+ throw new n('Unknown type of space "' + e.text + '"');
+ },
+ mathmlBuilder: function (e, t) {
+ if (!Sn.hasOwnProperty(e.text)) {
+ if (kn.hasOwnProperty(e.text)) return new Nt.MathNode("mspace");
+ throw new n('Unknown type of space "' + e.text + '"');
+ }
+ return new Nt.MathNode("mtext", [new Nt.TextNode(" ")]);
+ },
+ });
+ var Mn = function () {
+ var e = new Nt.MathNode("mtd", []);
+ return e.setAttribute("width", "50%"), e;
+ };
+ ht({
+ type: "tag",
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mtable", [
+ new Nt.MathNode("mtr", [Mn(), new Nt.MathNode("mtd", [Ht(e.body, t)]), Mn(), new Nt.MathNode("mtd", [Ht(e.tag, t)])]),
+ ]);
+ return r.setAttribute("width", "100%"), r;
+ },
+ });
+ var zn = {
+ "\\text": void 0,
+ "\\textrm": "textrm",
+ "\\textsf": "textsf",
+ "\\texttt": "texttt",
+ "\\textnormal": "textrm",
+ },
+ An = { "\\textbf": "textbf", "\\textmd": "textmd" },
+ Tn = { "\\textit": "textit", "\\textup": "textup" },
+ Bn = function (e, t) {
+ var r = e.font;
+ return r ? (zn[r] ? t.withTextFontFamily(zn[r]) : An[r] ? t.withTextFontWeight(An[r]) : t.withTextFontShape(Tn[r])) : t;
+ };
+ lt({
+ type: "text",
+ names: ["\\text", "\\textrm", "\\textsf", "\\texttt", "\\textnormal", "\\textbf", "\\textmd", "\\textit", "\\textup"],
+ props: { numArgs: 1, argTypes: ["text"], allowedInArgument: !0, allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = t[0];
+ return { type: "text", mode: r.mode, body: mt(a), font: n };
+ },
+ htmlBuilder: function (e, t) {
+ var r = Bn(e, t),
+ n = vt(e.body, r, !0);
+ return Qe.makeSpan(["mord", "text"], n, r);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = Bn(e, t);
+ return Ht(e.body, r);
+ },
+ }),
+ lt({
+ type: "underline",
+ names: ["\\underline"],
+ props: { numArgs: 1, allowedInText: !0 },
+ handler: function (e, t) {
+ return { type: "underline", mode: e.parser.mode, body: t[0] };
+ },
+ htmlBuilder: function (e, t) {
+ var r = St(e.body, t),
+ n = Qe.makeLineSpan("underline-line", t),
+ a = t.fontMetrics().defaultRuleThickness,
+ i = Qe.makeVList(
+ {
+ positionType: "top",
+ positionData: r.height,
+ children: [
+ { type: "kern", size: a },
+ { type: "elem", elem: n },
+ { type: "kern", size: 3 * a },
+ { type: "elem", elem: r },
+ ],
+ },
+ t,
+ );
+ return Qe.makeSpan(["mord", "underline"], [i], t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mo", [new Nt.TextNode("‾")]);
+ r.setAttribute("stretchy", "true");
+ var n = new Nt.MathNode("munder", [Ot(e.body, t), r]);
+ return n.setAttribute("accentunder", "true"), n;
+ },
+ }),
+ lt({
+ type: "vcenter",
+ names: ["\\vcenter"],
+ props: { numArgs: 1, argTypes: ["original"], allowedInText: !1 },
+ handler: function (e, t) {
+ return { type: "vcenter", mode: e.parser.mode, body: t[0] };
+ },
+ htmlBuilder: function (e, t) {
+ var r = St(e.body, t),
+ n = t.fontMetrics().axisHeight,
+ a = 0.5 * (r.height - n - (r.depth + n));
+ return Qe.makeVList(
+ {
+ positionType: "shift",
+ positionData: a,
+ children: [{ type: "elem", elem: r }],
+ },
+ t,
+ );
+ },
+ mathmlBuilder: function (e, t) {
+ return new Nt.MathNode("mpadded", [Ot(e.body, t)], ["vcenter"]);
+ },
+ }),
+ lt({
+ type: "verb",
+ names: ["\\verb"],
+ props: { numArgs: 0, allowedInText: !0 },
+ handler: function (e, t, r) {
+ throw new n("\\verb ended by end of line instead of matching delimiter");
+ },
+ htmlBuilder: function (e, t) {
+ for (var r = Nn(e), n = [], a = t.havingStyle(t.style.text()), i = 0; i < r.length; i++) {
+ var o = r[i];
+ "~" === o && (o = "\\textasciitilde"), n.push(Qe.makeSymbol(o, "Typewriter-Regular", e.mode, a, ["mord", "texttt"]));
+ }
+ return Qe.makeSpan(["mord", "text"].concat(a.sizingClasses(t)), Qe.tryCombineChars(n), a);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.TextNode(Nn(e)),
+ n = new Nt.MathNode("mtext", [r]);
+ return n.setAttribute("mathvariant", "monospace"), n;
+ },
+ });
+ var Nn = function (e) {
+ return e.body.replace(/ /g, e.star ? "␣" : " ");
+ },
+ Cn = it,
+ qn = "[ \r\n\t]",
+ In = "(\\\\[a-zA-Z@]+)" + qn + "*",
+ Rn = "[̀-ͯ]",
+ Hn = new RegExp(Rn + "+$"),
+ On =
+ "(" +
+ qn +
+ "+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-‧-豈-]" +
+ Rn +
+ "*|[\ud800-\udbff][\udc00-\udfff]" +
+ Rn +
+ "*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|" +
+ In +
+ "|\\\\[^\ud800-\udfff])",
+ En = (function () {
+ function e(e, t) {
+ (this.input = void 0),
+ (this.settings = void 0),
+ (this.tokenRegex = void 0),
+ (this.catcodes = void 0),
+ (this.input = e),
+ (this.settings = t),
+ (this.tokenRegex = new RegExp(On, "g")),
+ (this.catcodes = { "%": 14, "~": 13 });
+ }
+ var t = e.prototype;
+ return (
+ (t.setCatcode = function (e, t) {
+ this.catcodes[e] = t;
+ }),
+ (t.lex = function () {
+ var e = this.input,
+ t = this.tokenRegex.lastIndex;
+ if (t === e.length) return new Gr("EOF", new Fr(this, t, t));
+ var r = this.tokenRegex.exec(e);
+ if (null === r || r.index !== t) throw new n("Unexpected character: '" + e[t] + "'", new Gr(e[t], new Fr(this, t, t + 1)));
+ var a = r[6] || r[3] || (r[2] ? "\\ " : " ");
+ if (14 === this.catcodes[a]) {
+ var i = e.indexOf("\n", this.tokenRegex.lastIndex);
+ return (
+ -1 === i
+ ? ((this.tokenRegex.lastIndex = e.length),
+ this.settings.reportNonstrict(
+ "commentAtEnd",
+ "% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)",
+ ))
+ : (this.tokenRegex.lastIndex = i + 1),
+ this.lex()
+ );
+ }
+ return new Gr(a, new Fr(this, t, this.tokenRegex.lastIndex));
+ }),
+ e
+ );
+ })(),
+ Ln = (function () {
+ function e(e, t) {
+ void 0 === e && (e = {}),
+ void 0 === t && (t = {}),
+ (this.current = void 0),
+ (this.builtins = void 0),
+ (this.undefStack = void 0),
+ (this.current = t),
+ (this.builtins = e),
+ (this.undefStack = []);
+ }
+ var t = e.prototype;
+ return (
+ (t.beginGroup = function () {
+ this.undefStack.push({});
+ }),
+ (t.endGroup = function () {
+ if (0 === this.undefStack.length)
+ throw new n("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");
+ var e = this.undefStack.pop();
+ for (var t in e) e.hasOwnProperty(t) && (null == e[t] ? delete this.current[t] : (this.current[t] = e[t]));
+ }),
+ (t.endGroups = function () {
+ for (; this.undefStack.length > 0; ) this.endGroup();
+ }),
+ (t.has = function (e) {
+ return this.current.hasOwnProperty(e) || this.builtins.hasOwnProperty(e);
+ }),
+ (t.get = function (e) {
+ return this.current.hasOwnProperty(e) ? this.current[e] : this.builtins[e];
+ }),
+ (t.set = function (e, t, r) {
+ if ((void 0 === r && (r = !1), r)) {
+ for (var n = 0; n < this.undefStack.length; n++) delete this.undefStack[n][e];
+ this.undefStack.length > 0 && (this.undefStack[this.undefStack.length - 1][e] = t);
+ } else {
+ var a = this.undefStack[this.undefStack.length - 1];
+ a && !a.hasOwnProperty(e) && (a[e] = this.current[e]);
+ }
+ null == t ? delete this.current[e] : (this.current[e] = t);
+ }),
+ e
+ );
+ })(),
+ Dn = Pr;
+ Vr("\\noexpand", function (e) {
+ var t = e.popToken();
+ return e.isExpandable(t.text) && ((t.noexpand = !0), (t.treatAsRelax = !0)), { tokens: [t], numArgs: 0 };
+ }),
+ Vr("\\expandafter", function (e) {
+ var t = e.popToken();
+ return e.expandOnce(!0), { tokens: [t], numArgs: 0 };
+ }),
+ Vr("\\@firstoftwo", function (e) {
+ return { tokens: e.consumeArgs(2)[0], numArgs: 0 };
+ }),
+ Vr("\\@secondoftwo", function (e) {
+ return { tokens: e.consumeArgs(2)[1], numArgs: 0 };
+ }),
+ Vr("\\@ifnextchar", function (e) {
+ var t = e.consumeArgs(3);
+ e.consumeSpaces();
+ var r = e.future();
+ return 1 === t[0].length && t[0][0].text === r.text ? { tokens: t[1], numArgs: 0 } : { tokens: t[2], numArgs: 0 };
+ }),
+ Vr("\\@ifstar", "\\@ifnextchar *{\\@firstoftwo{#1}}"),
+ Vr("\\TextOrMath", function (e) {
+ var t = e.consumeArgs(2);
+ return "text" === e.mode ? { tokens: t[0], numArgs: 0 } : { tokens: t[1], numArgs: 0 };
+ });
+ var Pn = {
+ 0: 0,
+ 1: 1,
+ 2: 2,
+ 3: 3,
+ 4: 4,
+ 5: 5,
+ 6: 6,
+ 7: 7,
+ 8: 8,
+ 9: 9,
+ a: 10,
+ A: 10,
+ b: 11,
+ B: 11,
+ c: 12,
+ C: 12,
+ d: 13,
+ D: 13,
+ e: 14,
+ E: 14,
+ f: 15,
+ F: 15,
+ };
+ Vr("\\char", function (e) {
+ var t,
+ r = e.popToken(),
+ a = "";
+ if ("'" === r.text) (t = 8), (r = e.popToken());
+ else if ('"' === r.text) (t = 16), (r = e.popToken());
+ else if ("`" === r.text)
+ if ("\\" === (r = e.popToken()).text[0]) a = r.text.charCodeAt(1);
+ else {
+ if ("EOF" === r.text) throw new n("\\char` missing argument");
+ a = r.text.charCodeAt(0);
+ }
+ else t = 10;
+ if (t) {
+ if (null == (a = Pn[r.text]) || a >= t) throw new n("Invalid base-" + t + " digit " + r.text);
+ for (var i; null != (i = Pn[e.future().text]) && i < t; ) (a *= t), (a += i), e.popToken();
+ }
+ return "\\@char{" + a + "}";
+ });
+ var Vn = function (e, t, r) {
+ var a = e.consumeArg().tokens;
+ if (1 !== a.length) throw new n("\\newcommand's first argument must be a macro name");
+ var i = a[0].text,
+ o = e.isDefined(i);
+ if (o && !t) throw new n("\\newcommand{" + i + "} attempting to redefine " + i + "; use \\renewcommand");
+ if (!o && !r) throw new n("\\renewcommand{" + i + "} when command " + i + " does not yet exist; use \\newcommand");
+ var s = 0;
+ if (1 === (a = e.consumeArg().tokens).length && "[" === a[0].text) {
+ for (var l = "", h = e.expandNextToken(); "]" !== h.text && "EOF" !== h.text; ) (l += h.text), (h = e.expandNextToken());
+ if (!l.match(/^\s*[0-9]+\s*$/)) throw new n("Invalid number of arguments: " + l);
+ (s = parseInt(l)), (a = e.consumeArg().tokens);
+ }
+ return e.macros.set(i, { tokens: a, numArgs: s }), "";
+ };
+ Vr("\\newcommand", function (e) {
+ return Vn(e, !1, !0);
+ }),
+ Vr("\\renewcommand", function (e) {
+ return Vn(e, !0, !1);
+ }),
+ Vr("\\providecommand", function (e) {
+ return Vn(e, !0, !0);
+ }),
+ Vr("\\message", function (e) {
+ var t = e.consumeArgs(1)[0];
+ return (
+ console.log(
+ t
+ .reverse()
+ .map(function (e) {
+ return e.text;
+ })
+ .join(""),
+ ),
+ ""
+ );
+ }),
+ Vr("\\errmessage", function (e) {
+ var t = e.consumeArgs(1)[0];
+ return (
+ console.error(
+ t
+ .reverse()
+ .map(function (e) {
+ return e.text;
+ })
+ .join(""),
+ ),
+ ""
+ );
+ }),
+ Vr("\\show", function (e) {
+ var t = e.popToken(),
+ r = t.text;
+ return console.log(t, e.macros.get(r), Cn[r], he.math[r], he.text[r]), "";
+ }),
+ Vr("\\bgroup", "{"),
+ Vr("\\egroup", "}"),
+ Vr("~", "\\nobreakspace"),
+ Vr("\\lq", "`"),
+ Vr("\\rq", "'"),
+ Vr("\\aa", "\\r a"),
+ Vr("\\AA", "\\r A"),
+ Vr("\\textcopyright", "\\html@mathml{\\textcircled{c}}{\\char`©}"),
+ Vr("\\copyright", "\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),
+ Vr("\\textregistered", "\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"),
+ Vr("ℬ", "\\mathscr{B}"),
+ Vr("ℰ", "\\mathscr{E}"),
+ Vr("ℱ", "\\mathscr{F}"),
+ Vr("ℋ", "\\mathscr{H}"),
+ Vr("ℐ", "\\mathscr{I}"),
+ Vr("ℒ", "\\mathscr{L}"),
+ Vr("ℳ", "\\mathscr{M}"),
+ Vr("ℛ", "\\mathscr{R}"),
+ Vr("ℭ", "\\mathfrak{C}"),
+ Vr("ℌ", "\\mathfrak{H}"),
+ Vr("ℨ", "\\mathfrak{Z}"),
+ Vr("\\Bbbk", "\\Bbb{k}"),
+ Vr("·", "\\cdotp"),
+ Vr("\\llap", "\\mathllap{\\textrm{#1}}"),
+ Vr("\\rlap", "\\mathrlap{\\textrm{#1}}"),
+ Vr("\\clap", "\\mathclap{\\textrm{#1}}"),
+ Vr("\\mathstrut", "\\vphantom{(}"),
+ Vr("\\underbar", "\\underline{\\text{#1}}"),
+ Vr("\\not", '\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),
+ Vr("\\neq", "\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}"),
+ Vr("\\ne", "\\neq"),
+ Vr("≠", "\\neq"),
+ Vr("\\notin", "\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}"),
+ Vr("∉", "\\notin"),
+ Vr("≘", "\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}"),
+ Vr("≙", "\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}"),
+ Vr("≚", "\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}"),
+ Vr("≛", "\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}"),
+ Vr("≝", "\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}"),
+ Vr("≞", "\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}"),
+ Vr("≟", "\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}"),
+ Vr("⟂", "\\perp"),
+ Vr("‼", "\\mathclose{!\\mkern-0.8mu!}"),
+ Vr("∌", "\\notni"),
+ Vr("⌜", "\\ulcorner"),
+ Vr("⌝", "\\urcorner"),
+ Vr("⌞", "\\llcorner"),
+ Vr("⌟", "\\lrcorner"),
+ Vr("©", "\\copyright"),
+ Vr("®", "\\textregistered"),
+ Vr("️", "\\textregistered"),
+ Vr("\\ulcorner", '\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}'),
+ Vr("\\urcorner", '\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'),
+ Vr("\\llcorner", '\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'),
+ Vr("\\lrcorner", '\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'),
+ Vr("\\vdots", "\\mathord{\\varvdots\\rule{0pt}{15pt}}"),
+ Vr("⋮", "\\vdots"),
+ Vr("\\varGamma", "\\mathit{\\Gamma}"),
+ Vr("\\varDelta", "\\mathit{\\Delta}"),
+ Vr("\\varTheta", "\\mathit{\\Theta}"),
+ Vr("\\varLambda", "\\mathit{\\Lambda}"),
+ Vr("\\varXi", "\\mathit{\\Xi}"),
+ Vr("\\varPi", "\\mathit{\\Pi}"),
+ Vr("\\varSigma", "\\mathit{\\Sigma}"),
+ Vr("\\varUpsilon", "\\mathit{\\Upsilon}"),
+ Vr("\\varPhi", "\\mathit{\\Phi}"),
+ Vr("\\varPsi", "\\mathit{\\Psi}"),
+ Vr("\\varOmega", "\\mathit{\\Omega}"),
+ Vr("\\substack", "\\begin{subarray}{c}#1\\end{subarray}"),
+ Vr("\\colon", "\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax"),
+ Vr("\\boxed", "\\fbox{$\\displaystyle{#1}$}"),
+ Vr("\\iff", "\\DOTSB\\;\\Longleftrightarrow\\;"),
+ Vr("\\implies", "\\DOTSB\\;\\Longrightarrow\\;"),
+ Vr("\\impliedby", "\\DOTSB\\;\\Longleftarrow\\;");
+ var Fn = {
+ ",": "\\dotsc",
+ "\\not": "\\dotsb",
+ "+": "\\dotsb",
+ "=": "\\dotsb",
+ "<": "\\dotsb",
+ ">": "\\dotsb",
+ "-": "\\dotsb",
+ "*": "\\dotsb",
+ ":": "\\dotsb",
+ "\\DOTSB": "\\dotsb",
+ "\\coprod": "\\dotsb",
+ "\\bigvee": "\\dotsb",
+ "\\bigwedge": "\\dotsb",
+ "\\biguplus": "\\dotsb",
+ "\\bigcap": "\\dotsb",
+ "\\bigcup": "\\dotsb",
+ "\\prod": "\\dotsb",
+ "\\sum": "\\dotsb",
+ "\\bigotimes": "\\dotsb",
+ "\\bigoplus": "\\dotsb",
+ "\\bigodot": "\\dotsb",
+ "\\bigsqcup": "\\dotsb",
+ "\\And": "\\dotsb",
+ "\\longrightarrow": "\\dotsb",
+ "\\Longrightarrow": "\\dotsb",
+ "\\longleftarrow": "\\dotsb",
+ "\\Longleftarrow": "\\dotsb",
+ "\\longleftrightarrow": "\\dotsb",
+ "\\Longleftrightarrow": "\\dotsb",
+ "\\mapsto": "\\dotsb",
+ "\\longmapsto": "\\dotsb",
+ "\\hookrightarrow": "\\dotsb",
+ "\\doteq": "\\dotsb",
+ "\\mathbin": "\\dotsb",
+ "\\mathrel": "\\dotsb",
+ "\\relbar": "\\dotsb",
+ "\\Relbar": "\\dotsb",
+ "\\xrightarrow": "\\dotsb",
+ "\\xleftarrow": "\\dotsb",
+ "\\DOTSI": "\\dotsi",
+ "\\int": "\\dotsi",
+ "\\oint": "\\dotsi",
+ "\\iint": "\\dotsi",
+ "\\iiint": "\\dotsi",
+ "\\iiiint": "\\dotsi",
+ "\\idotsint": "\\dotsi",
+ "\\DOTSX": "\\dotsx",
+ };
+ Vr("\\dots", function (e) {
+ var t = "\\dotso",
+ r = e.expandAfterFuture().text;
+ return (
+ r in Fn ? (t = Fn[r]) : ("\\not" === r.slice(0, 4) || (r in he.math && l(["bin", "rel"], he.math[r].group))) && (t = "\\dotsb"), t
+ );
+ });
+ var Gn = {
+ ")": !0,
+ "]": !0,
+ "\\rbrack": !0,
+ "\\}": !0,
+ "\\rbrace": !0,
+ "\\rangle": !0,
+ "\\rceil": !0,
+ "\\rfloor": !0,
+ "\\rgroup": !0,
+ "\\rmoustache": !0,
+ "\\right": !0,
+ "\\bigr": !0,
+ "\\biggr": !0,
+ "\\Bigr": !0,
+ "\\Biggr": !0,
+ $: !0,
+ ";": !0,
+ ".": !0,
+ ",": !0,
+ };
+ Vr("\\dotso", function (e) {
+ return e.future().text in Gn ? "\\ldots\\," : "\\ldots";
+ }),
+ Vr("\\dotsc", function (e) {
+ var t = e.future().text;
+ return t in Gn && "," !== t ? "\\ldots\\," : "\\ldots";
+ }),
+ Vr("\\cdots", function (e) {
+ return e.future().text in Gn ? "\\@cdots\\," : "\\@cdots";
+ }),
+ Vr("\\dotsb", "\\cdots"),
+ Vr("\\dotsm", "\\cdots"),
+ Vr("\\dotsi", "\\!\\cdots"),
+ Vr("\\dotsx", "\\ldots\\,"),
+ Vr("\\DOTSI", "\\relax"),
+ Vr("\\DOTSB", "\\relax"),
+ Vr("\\DOTSX", "\\relax"),
+ Vr("\\tmspace", "\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),
+ Vr("\\,", "\\tmspace+{3mu}{.1667em}"),
+ Vr("\\thinspace", "\\,"),
+ Vr("\\>", "\\mskip{4mu}"),
+ Vr("\\:", "\\tmspace+{4mu}{.2222em}"),
+ Vr("\\medspace", "\\:"),
+ Vr("\\;", "\\tmspace+{5mu}{.2777em}"),
+ Vr("\\thickspace", "\\;"),
+ Vr("\\!", "\\tmspace-{3mu}{.1667em}"),
+ Vr("\\negthinspace", "\\!"),
+ Vr("\\negmedspace", "\\tmspace-{4mu}{.2222em}"),
+ Vr("\\negthickspace", "\\tmspace-{5mu}{.277em}"),
+ Vr("\\enspace", "\\kern.5em "),
+ Vr("\\enskip", "\\hskip.5em\\relax"),
+ Vr("\\quad", "\\hskip1em\\relax"),
+ Vr("\\qquad", "\\hskip2em\\relax"),
+ Vr("\\tag", "\\@ifstar\\tag@literal\\tag@paren"),
+ Vr("\\tag@paren", "\\tag@literal{({#1})}"),
+ Vr("\\tag@literal", function (e) {
+ if (e.macros.get("\\df@tag")) throw new n("Multiple \\tag");
+ return "\\gdef\\df@tag{\\text{#1}}";
+ }),
+ Vr(
+ "\\bmod",
+ "\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}",
+ ),
+ Vr("\\pod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),
+ Vr("\\pmod", "\\pod{{\\rm mod}\\mkern6mu#1}"),
+ Vr("\\mod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),
+ Vr("\\newline", "\\\\\\relax"),
+ Vr("\\TeX", "\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");
+ var Un = W(I["Main-Regular"]["T".charCodeAt(0)][1] - 0.7 * I["Main-Regular"]["A".charCodeAt(0)][1]);
+ Vr("\\LaTeX", "\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{" + Un + "}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),
+ Vr("\\KaTeX", "\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{" + Un + "}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),
+ Vr("\\hspace", "\\@ifstar\\@hspacer\\@hspace"),
+ Vr("\\@hspace", "\\hskip #1\\relax"),
+ Vr("\\@hspacer", "\\rule{0pt}{0pt}\\hskip #1\\relax"),
+ Vr("\\ordinarycolon", ":"),
+ Vr("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}"),
+ Vr("\\dblcolon", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),
+ Vr("\\coloneqq", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),
+ Vr("\\Coloneqq", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),
+ Vr("\\coloneq", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),
+ Vr("\\Coloneq", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),
+ Vr("\\eqqcolon", '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),
+ Vr("\\Eqqcolon", '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),
+ Vr("\\eqcolon", '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),
+ Vr("\\Eqcolon", '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),
+ Vr("\\colonapprox", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),
+ Vr("\\Colonapprox", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),
+ Vr("\\colonsim", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),
+ Vr("\\Colonsim", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),
+ Vr("∷", "\\dblcolon"),
+ Vr("∹", "\\eqcolon"),
+ Vr("≔", "\\coloneqq"),
+ Vr("≕", "\\eqqcolon"),
+ Vr("⩴", "\\Coloneqq"),
+ Vr("\\ratio", "\\vcentcolon"),
+ Vr("\\coloncolon", "\\dblcolon"),
+ Vr("\\colonequals", "\\coloneqq"),
+ Vr("\\coloncolonequals", "\\Coloneqq"),
+ Vr("\\equalscolon", "\\eqqcolon"),
+ Vr("\\equalscoloncolon", "\\Eqqcolon"),
+ Vr("\\colonminus", "\\coloneq"),
+ Vr("\\coloncolonminus", "\\Coloneq"),
+ Vr("\\minuscolon", "\\eqcolon"),
+ Vr("\\minuscoloncolon", "\\Eqcolon"),
+ Vr("\\coloncolonapprox", "\\Colonapprox"),
+ Vr("\\coloncolonsim", "\\Colonsim"),
+ Vr("\\simcolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),
+ Vr("\\simcoloncolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),
+ Vr("\\approxcolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),
+ Vr("\\approxcoloncolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),
+ Vr("\\notni", "\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}"),
+ Vr("\\limsup", "\\DOTSB\\operatorname*{lim\\,sup}"),
+ Vr("\\liminf", "\\DOTSB\\operatorname*{lim\\,inf}"),
+ Vr("\\injlim", "\\DOTSB\\operatorname*{inj\\,lim}"),
+ Vr("\\projlim", "\\DOTSB\\operatorname*{proj\\,lim}"),
+ Vr("\\varlimsup", "\\DOTSB\\operatorname*{\\overline{lim}}"),
+ Vr("\\varliminf", "\\DOTSB\\operatorname*{\\underline{lim}}"),
+ Vr("\\varinjlim", "\\DOTSB\\operatorname*{\\underrightarrow{lim}}"),
+ Vr("\\varprojlim", "\\DOTSB\\operatorname*{\\underleftarrow{lim}}"),
+ Vr("\\gvertneqq", "\\html@mathml{\\@gvertneqq}{≩}"),
+ Vr("\\lvertneqq", "\\html@mathml{\\@lvertneqq}{≨}"),
+ Vr("\\ngeqq", "\\html@mathml{\\@ngeqq}{≱}"),
+ Vr("\\ngeqslant", "\\html@mathml{\\@ngeqslant}{≱}"),
+ Vr("\\nleqq", "\\html@mathml{\\@nleqq}{≰}"),
+ Vr("\\nleqslant", "\\html@mathml{\\@nleqslant}{≰}"),
+ Vr("\\nshortmid", "\\html@mathml{\\@nshortmid}{∤}"),
+ Vr("\\nshortparallel", "\\html@mathml{\\@nshortparallel}{∦}"),
+ Vr("\\nsubseteqq", "\\html@mathml{\\@nsubseteqq}{⊈}"),
+ Vr("\\nsupseteqq", "\\html@mathml{\\@nsupseteqq}{⊉}"),
+ Vr("\\varsubsetneq", "\\html@mathml{\\@varsubsetneq}{⊊}"),
+ Vr("\\varsubsetneqq", "\\html@mathml{\\@varsubsetneqq}{⫋}"),
+ Vr("\\varsupsetneq", "\\html@mathml{\\@varsupsetneq}{⊋}"),
+ Vr("\\varsupsetneqq", "\\html@mathml{\\@varsupsetneqq}{⫌}"),
+ Vr("\\imath", "\\html@mathml{\\@imath}{ı}"),
+ Vr("\\jmath", "\\html@mathml{\\@jmath}{ȷ}"),
+ Vr("\\llbracket", "\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}"),
+ Vr("\\rrbracket", "\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}"),
+ Vr("⟦", "\\llbracket"),
+ Vr("⟧", "\\rrbracket"),
+ Vr("\\lBrace", "\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}"),
+ Vr("\\rBrace", "\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}"),
+ Vr("⦃", "\\lBrace"),
+ Vr("⦄", "\\rBrace"),
+ Vr(
+ "\\minuso",
+ "\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}",
+ ),
+ Vr("⦵", "\\minuso"),
+ Vr("\\darr", "\\downarrow"),
+ Vr("\\dArr", "\\Downarrow"),
+ Vr("\\Darr", "\\Downarrow"),
+ Vr("\\lang", "\\langle"),
+ Vr("\\rang", "\\rangle"),
+ Vr("\\uarr", "\\uparrow"),
+ Vr("\\uArr", "\\Uparrow"),
+ Vr("\\Uarr", "\\Uparrow"),
+ Vr("\\N", "\\mathbb{N}"),
+ Vr("\\R", "\\mathbb{R}"),
+ Vr("\\Z", "\\mathbb{Z}"),
+ Vr("\\alef", "\\aleph"),
+ Vr("\\alefsym", "\\aleph"),
+ Vr("\\Alpha", "\\mathrm{A}"),
+ Vr("\\Beta", "\\mathrm{B}"),
+ Vr("\\bull", "\\bullet"),
+ Vr("\\Chi", "\\mathrm{X}"),
+ Vr("\\clubs", "\\clubsuit"),
+ Vr("\\cnums", "\\mathbb{C}"),
+ Vr("\\Complex", "\\mathbb{C}"),
+ Vr("\\Dagger", "\\ddagger"),
+ Vr("\\diamonds", "\\diamondsuit"),
+ Vr("\\empty", "\\emptyset"),
+ Vr("\\Epsilon", "\\mathrm{E}"),
+ Vr("\\Eta", "\\mathrm{H}"),
+ Vr("\\exist", "\\exists"),
+ Vr("\\harr", "\\leftrightarrow"),
+ Vr("\\hArr", "\\Leftrightarrow"),
+ Vr("\\Harr", "\\Leftrightarrow"),
+ Vr("\\hearts", "\\heartsuit"),
+ Vr("\\image", "\\Im"),
+ Vr("\\infin", "\\infty"),
+ Vr("\\Iota", "\\mathrm{I}"),
+ Vr("\\isin", "\\in"),
+ Vr("\\Kappa", "\\mathrm{K}"),
+ Vr("\\larr", "\\leftarrow"),
+ Vr("\\lArr", "\\Leftarrow"),
+ Vr("\\Larr", "\\Leftarrow"),
+ Vr("\\lrarr", "\\leftrightarrow"),
+ Vr("\\lrArr", "\\Leftrightarrow"),
+ Vr("\\Lrarr", "\\Leftrightarrow"),
+ Vr("\\Mu", "\\mathrm{M}"),
+ Vr("\\natnums", "\\mathbb{N}"),
+ Vr("\\Nu", "\\mathrm{N}"),
+ Vr("\\Omicron", "\\mathrm{O}"),
+ Vr("\\plusmn", "\\pm"),
+ Vr("\\rarr", "\\rightarrow"),
+ Vr("\\rArr", "\\Rightarrow"),
+ Vr("\\Rarr", "\\Rightarrow"),
+ Vr("\\real", "\\Re"),
+ Vr("\\reals", "\\mathbb{R}"),
+ Vr("\\Reals", "\\mathbb{R}"),
+ Vr("\\Rho", "\\mathrm{P}"),
+ Vr("\\sdot", "\\cdot"),
+ Vr("\\sect", "\\S"),
+ Vr("\\spades", "\\spadesuit"),
+ Vr("\\sub", "\\subset"),
+ Vr("\\sube", "\\subseteq"),
+ Vr("\\supe", "\\supseteq"),
+ Vr("\\Tau", "\\mathrm{T}"),
+ Vr("\\thetasym", "\\vartheta"),
+ Vr("\\weierp", "\\wp"),
+ Vr("\\Zeta", "\\mathrm{Z}"),
+ Vr("\\argmin", "\\DOTSB\\operatorname*{arg\\,min}"),
+ Vr("\\argmax", "\\DOTSB\\operatorname*{arg\\,max}"),
+ Vr("\\plim", "\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),
+ Vr("\\bra", "\\mathinner{\\langle{#1}|}"),
+ Vr("\\ket", "\\mathinner{|{#1}\\rangle}"),
+ Vr("\\braket", "\\mathinner{\\langle{#1}\\rangle}"),
+ Vr("\\Bra", "\\left\\langle#1\\right|"),
+ Vr("\\Ket", "\\left|#1\\right\\rangle");
+ var Yn = function (e) {
+ return function (t) {
+ var r = t.consumeArg().tokens,
+ n = t.consumeArg().tokens,
+ a = t.consumeArg().tokens,
+ i = t.consumeArg().tokens,
+ o = t.macros.get("|"),
+ s = t.macros.get("\\|");
+ t.macros.beginGroup();
+ var l = function (t) {
+ return function (r) {
+ e && (r.macros.set("|", o), a.length && r.macros.set("\\|", s));
+ var i = t;
+ return !t && a.length && "|" === r.future().text && (r.popToken(), (i = !0)), { tokens: i ? a : n, numArgs: 0 };
+ };
+ };
+ t.macros.set("|", l(!1)), a.length && t.macros.set("\\|", l(!0));
+ var h = t.consumeArg().tokens,
+ c = t.expandTokens([].concat(i, h, r));
+ return t.macros.endGroup(), { tokens: c.reverse(), numArgs: 0 };
+ };
+ };
+ Vr("\\bra@ket", Yn(!1)),
+ Vr("\\bra@set", Yn(!0)),
+ Vr("\\Braket", "\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"),
+ Vr("\\Set", "\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"),
+ Vr("\\set", "\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"),
+ Vr("\\angln", "{\\angl n}"),
+ Vr("\\blue", "\\textcolor{##6495ed}{#1}"),
+ Vr("\\orange", "\\textcolor{##ffa500}{#1}"),
+ Vr("\\pink", "\\textcolor{##ff00af}{#1}"),
+ Vr("\\red", "\\textcolor{##df0030}{#1}"),
+ Vr("\\green", "\\textcolor{##28ae7b}{#1}"),
+ Vr("\\gray", "\\textcolor{gray}{#1}"),
+ Vr("\\purple", "\\textcolor{##9d38bd}{#1}"),
+ Vr("\\blueA", "\\textcolor{##ccfaff}{#1}"),
+ Vr("\\blueB", "\\textcolor{##80f6ff}{#1}"),
+ Vr("\\blueC", "\\textcolor{##63d9ea}{#1}"),
+ Vr("\\blueD", "\\textcolor{##11accd}{#1}"),
+ Vr("\\blueE", "\\textcolor{##0c7f99}{#1}"),
+ Vr("\\tealA", "\\textcolor{##94fff5}{#1}"),
+ Vr("\\tealB", "\\textcolor{##26edd5}{#1}"),
+ Vr("\\tealC", "\\textcolor{##01d1c1}{#1}"),
+ Vr("\\tealD", "\\textcolor{##01a995}{#1}"),
+ Vr("\\tealE", "\\textcolor{##208170}{#1}"),
+ Vr("\\greenA", "\\textcolor{##b6ffb0}{#1}"),
+ Vr("\\greenB", "\\textcolor{##8af281}{#1}"),
+ Vr("\\greenC", "\\textcolor{##74cf70}{#1}"),
+ Vr("\\greenD", "\\textcolor{##1fab54}{#1}"),
+ Vr("\\greenE", "\\textcolor{##0d923f}{#1}"),
+ Vr("\\goldA", "\\textcolor{##ffd0a9}{#1}"),
+ Vr("\\goldB", "\\textcolor{##ffbb71}{#1}"),
+ Vr("\\goldC", "\\textcolor{##ff9c39}{#1}"),
+ Vr("\\goldD", "\\textcolor{##e07d10}{#1}"),
+ Vr("\\goldE", "\\textcolor{##a75a05}{#1}"),
+ Vr("\\redA", "\\textcolor{##fca9a9}{#1}"),
+ Vr("\\redB", "\\textcolor{##ff8482}{#1}"),
+ Vr("\\redC", "\\textcolor{##f9685d}{#1}"),
+ Vr("\\redD", "\\textcolor{##e84d39}{#1}"),
+ Vr("\\redE", "\\textcolor{##bc2612}{#1}"),
+ Vr("\\maroonA", "\\textcolor{##ffbde0}{#1}"),
+ Vr("\\maroonB", "\\textcolor{##ff92c6}{#1}"),
+ Vr("\\maroonC", "\\textcolor{##ed5fa6}{#1}"),
+ Vr("\\maroonD", "\\textcolor{##ca337c}{#1}"),
+ Vr("\\maroonE", "\\textcolor{##9e034e}{#1}"),
+ Vr("\\purpleA", "\\textcolor{##ddd7ff}{#1}"),
+ Vr("\\purpleB", "\\textcolor{##c6b9fc}{#1}"),
+ Vr("\\purpleC", "\\textcolor{##aa87ff}{#1}"),
+ Vr("\\purpleD", "\\textcolor{##7854ab}{#1}"),
+ Vr("\\purpleE", "\\textcolor{##543b78}{#1}"),
+ Vr("\\mintA", "\\textcolor{##f5f9e8}{#1}"),
+ Vr("\\mintB", "\\textcolor{##edf2df}{#1}"),
+ Vr("\\mintC", "\\textcolor{##e0e5cc}{#1}"),
+ Vr("\\grayA", "\\textcolor{##f6f7f7}{#1}"),
+ Vr("\\grayB", "\\textcolor{##f0f1f2}{#1}"),
+ Vr("\\grayC", "\\textcolor{##e3e5e6}{#1}"),
+ Vr("\\grayD", "\\textcolor{##d6d8da}{#1}"),
+ Vr("\\grayE", "\\textcolor{##babec2}{#1}"),
+ Vr("\\grayF", "\\textcolor{##888d93}{#1}"),
+ Vr("\\grayG", "\\textcolor{##626569}{#1}"),
+ Vr("\\grayH", "\\textcolor{##3b3e40}{#1}"),
+ Vr("\\grayI", "\\textcolor{##21242c}{#1}"),
+ Vr("\\kaBlue", "\\textcolor{##314453}{#1}"),
+ Vr("\\kaGreen", "\\textcolor{##71B307}{#1}");
+ var Xn = { "^": !0, _: !0, "\\limits": !0, "\\nolimits": !0 },
+ Wn = (function () {
+ function e(e, t, r) {
+ (this.settings = void 0),
+ (this.expansionCount = void 0),
+ (this.lexer = void 0),
+ (this.macros = void 0),
+ (this.stack = void 0),
+ (this.mode = void 0),
+ (this.settings = t),
+ (this.expansionCount = 0),
+ this.feed(e),
+ (this.macros = new Ln(Dn, t.macros)),
+ (this.mode = r),
+ (this.stack = []);
+ }
+ var t = e.prototype;
+ return (
+ (t.feed = function (e) {
+ this.lexer = new En(e, this.settings);
+ }),
+ (t.switchMode = function (e) {
+ this.mode = e;
+ }),
+ (t.beginGroup = function () {
+ this.macros.beginGroup();
+ }),
+ (t.endGroup = function () {
+ this.macros.endGroup();
+ }),
+ (t.endGroups = function () {
+ this.macros.endGroups();
+ }),
+ (t.future = function () {
+ return 0 === this.stack.length && this.pushToken(this.lexer.lex()), this.stack[this.stack.length - 1];
+ }),
+ (t.popToken = function () {
+ return this.future(), this.stack.pop();
+ }),
+ (t.pushToken = function (e) {
+ this.stack.push(e);
+ }),
+ (t.pushTokens = function (e) {
+ var t;
+ (t = this.stack).push.apply(t, e);
+ }),
+ (t.scanArgument = function (e) {
+ var t, r, n;
+ if (e) {
+ if ((this.consumeSpaces(), "[" !== this.future().text)) return null;
+ t = this.popToken();
+ var a = this.consumeArg(["]"]);
+ (n = a.tokens), (r = a.end);
+ } else {
+ var i = this.consumeArg();
+ (n = i.tokens), (t = i.start), (r = i.end);
+ }
+ return this.pushToken(new Gr("EOF", r.loc)), this.pushTokens(n), t.range(r, "");
+ }),
+ (t.consumeSpaces = function () {
+ for (; " " === this.future().text; ) this.stack.pop();
+ }),
+ (t.consumeArg = function (e) {
+ var t = [],
+ r = e && e.length > 0;
+ r || this.consumeSpaces();
+ var a,
+ i = this.future(),
+ o = 0,
+ s = 0;
+ do {
+ if (((a = this.popToken()), t.push(a), "{" === a.text)) ++o;
+ else if ("}" === a.text) {
+ if (-1 == --o) throw new n("Extra }", a);
+ } else if ("EOF" === a.text)
+ throw new n("Unexpected end of input in a macro argument, expected '" + (e && r ? e[s] : "}") + "'", a);
+ if (e && r)
+ if ((0 === o || (1 === o && "{" === e[s])) && a.text === e[s]) {
+ if (++s === e.length) {
+ t.splice(-s, s);
+ break;
+ }
+ } else s = 0;
+ } while (0 !== o || r);
+ return "{" === i.text && "}" === t[t.length - 1].text && (t.pop(), t.shift()), t.reverse(), { tokens: t, start: i, end: a };
+ }),
+ (t.consumeArgs = function (e, t) {
+ if (t) {
+ if (t.length !== e + 1) throw new n("The length of delimiters doesn't match the number of args!");
+ for (var r = t[0], a = 0; a < r.length; a++) {
+ var i = this.popToken();
+ if (r[a] !== i.text) throw new n("Use of the macro doesn't match its definition", i);
+ }
+ }
+ for (var o = [], s = 0; s < e; s++) o.push(this.consumeArg(t && t[s + 1]).tokens);
+ return o;
+ }),
+ (t.expandOnce = function (e) {
+ var t = this.popToken(),
+ r = t.text,
+ a = t.noexpand ? null : this._getExpansion(r);
+ if (null == a || (e && a.unexpandable)) {
+ if (e && null == a && "\\" === r[0] && !this.isDefined(r)) throw new n("Undefined control sequence: " + r);
+ return this.pushToken(t), !1;
+ }
+ if ((this.expansionCount++, this.expansionCount > this.settings.maxExpand))
+ throw new n("Too many expansions: infinite loop or need to increase maxExpand setting");
+ var i = a.tokens,
+ o = this.consumeArgs(a.numArgs, a.delimiters);
+ if (a.numArgs)
+ for (var s = (i = i.slice()).length - 1; s >= 0; --s) {
+ var l = i[s];
+ if ("#" === l.text) {
+ if (0 === s) throw new n("Incomplete placeholder at end of macro body", l);
+ if ("#" === (l = i[--s]).text) i.splice(s + 1, 1);
+ else {
+ if (!/^[1-9]$/.test(l.text)) throw new n("Not a valid argument number", l);
+ var h;
+ (h = i).splice.apply(h, [s, 2].concat(o[+l.text - 1]));
+ }
+ }
+ }
+ return this.pushTokens(i), i.length;
+ }),
+ (t.expandAfterFuture = function () {
+ return this.expandOnce(), this.future();
+ }),
+ (t.expandNextToken = function () {
+ for (;;)
+ if (!1 === this.expandOnce()) {
+ var e = this.stack.pop();
+ return e.treatAsRelax && (e.text = "\\relax"), e;
+ }
+ throw new Error();
+ }),
+ (t.expandMacro = function (e) {
+ return this.macros.has(e) ? this.expandTokens([new Gr(e)]) : void 0;
+ }),
+ (t.expandTokens = function (e) {
+ var t = [],
+ r = this.stack.length;
+ for (this.pushTokens(e); this.stack.length > r; )
+ if (!1 === this.expandOnce(!0)) {
+ var n = this.stack.pop();
+ n.treatAsRelax && ((n.noexpand = !1), (n.treatAsRelax = !1)), t.push(n);
+ }
+ return t;
+ }),
+ (t.expandMacroAsText = function (e) {
+ var t = this.expandMacro(e);
+ return t
+ ? t
+ .map(function (e) {
+ return e.text;
+ })
+ .join("")
+ : t;
+ }),
+ (t._getExpansion = function (e) {
+ var t = this.macros.get(e);
+ if (null == t) return t;
+ if (1 === e.length) {
+ var r = this.lexer.catcodes[e];
+ if (null != r && 13 !== r) return;
+ }
+ var n = "function" == typeof t ? t(this) : t;
+ if ("string" == typeof n) {
+ var a = 0;
+ if (-1 !== n.indexOf("#")) for (var i = n.replace(/##/g, ""); -1 !== i.indexOf("#" + (a + 1)); ) ++a;
+ for (var o = new En(n, this.settings), s = [], l = o.lex(); "EOF" !== l.text; ) s.push(l), (l = o.lex());
+ return s.reverse(), { tokens: s, numArgs: a };
+ }
+ return n;
+ }),
+ (t.isDefined = function (e) {
+ return (
+ this.macros.has(e) || Cn.hasOwnProperty(e) || he.math.hasOwnProperty(e) || he.text.hasOwnProperty(e) || Xn.hasOwnProperty(e)
+ );
+ }),
+ (t.isExpandable = function (e) {
+ var t = this.macros.get(e);
+ return null != t ? "string" == typeof t || "function" == typeof t || !t.unexpandable : Cn.hasOwnProperty(e) && !Cn[e].primitive;
+ }),
+ e
+ );
+ })(),
+ _n = /^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,
+ jn = Object.freeze({
+ "₊": "+",
+ "₋": "-",
+ "₌": "=",
+ "₍": "(",
+ "₎": ")",
+ "₀": "0",
+ "₁": "1",
+ "₂": "2",
+ "₃": "3",
+ "₄": "4",
+ "₅": "5",
+ "₆": "6",
+ "₇": "7",
+ "₈": "8",
+ "₉": "9",
+ ₐ: "a",
+ ₑ: "e",
+ ₕ: "h",
+ ᵢ: "i",
+ ⱼ: "j",
+ ₖ: "k",
+ ₗ: "l",
+ ₘ: "m",
+ ₙ: "n",
+ ₒ: "o",
+ ₚ: "p",
+ ᵣ: "r",
+ ₛ: "s",
+ ₜ: "t",
+ ᵤ: "u",
+ ᵥ: "v",
+ ₓ: "x",
+ ᵦ: "β",
+ ᵧ: "γ",
+ ᵨ: "ρ",
+ ᵩ: "ϕ",
+ ᵪ: "χ",
+ "⁺": "+",
+ "⁻": "-",
+ "⁼": "=",
+ "⁽": "(",
+ "⁾": ")",
+ "⁰": "0",
+ "¹": "1",
+ "²": "2",
+ "³": "3",
+ "⁴": "4",
+ "⁵": "5",
+ "⁶": "6",
+ "⁷": "7",
+ "⁸": "8",
+ "⁹": "9",
+ ᴬ: "A",
+ ᴮ: "B",
+ ᴰ: "D",
+ ᴱ: "E",
+ ᴳ: "G",
+ ᴴ: "H",
+ ᴵ: "I",
+ ᴶ: "J",
+ ᴷ: "K",
+ ᴸ: "L",
+ ᴹ: "M",
+ ᴺ: "N",
+ ᴼ: "O",
+ ᴾ: "P",
+ ᴿ: "R",
+ ᵀ: "T",
+ ᵁ: "U",
+ ⱽ: "V",
+ ᵂ: "W",
+ ᵃ: "a",
+ ᵇ: "b",
+ ᶜ: "c",
+ ᵈ: "d",
+ ᵉ: "e",
+ ᶠ: "f",
+ ᵍ: "g",
+ ʰ: "h",
+ ⁱ: "i",
+ ʲ: "j",
+ ᵏ: "k",
+ ˡ: "l",
+ ᵐ: "m",
+ ⁿ: "n",
+ ᵒ: "o",
+ ᵖ: "p",
+ ʳ: "r",
+ ˢ: "s",
+ ᵗ: "t",
+ ᵘ: "u",
+ ᵛ: "v",
+ ʷ: "w",
+ ˣ: "x",
+ ʸ: "y",
+ ᶻ: "z",
+ ᵝ: "β",
+ ᵞ: "γ",
+ ᵟ: "δ",
+ ᵠ: "ϕ",
+ ᵡ: "χ",
+ ᶿ: "θ",
+ }),
+ $n = {
+ "́": { text: "\\'", math: "\\acute" },
+ "̀": { text: "\\`", math: "\\grave" },
+ "̈": { text: '\\"', math: "\\ddot" },
+ "̃": { text: "\\~", math: "\\tilde" },
+ "̄": { text: "\\=", math: "\\bar" },
+ "̆": { text: "\\u", math: "\\breve" },
+ "̌": { text: "\\v", math: "\\check" },
+ "̂": { text: "\\^", math: "\\hat" },
+ "̇": { text: "\\.", math: "\\dot" },
+ "̊": { text: "\\r", math: "\\mathring" },
+ "̋": { text: "\\H" },
+ "̧": { text: "\\c" },
+ },
+ Zn = {
+ á: "á",
+ à: "à",
+ ä: "ä",
+ ǟ: "ǟ",
+ ã: "ã",
+ ā: "ā",
+ ă: "ă",
+ ắ: "ắ",
+ ằ: "ằ",
+ ẵ: "ẵ",
+ ǎ: "ǎ",
+ â: "â",
+ ấ: "ấ",
+ ầ: "ầ",
+ ẫ: "ẫ",
+ ȧ: "ȧ",
+ ǡ: "ǡ",
+ å: "å",
+ ǻ: "ǻ",
+ ḃ: "ḃ",
+ ć: "ć",
+ ḉ: "ḉ",
+ č: "č",
+ ĉ: "ĉ",
+ ċ: "ċ",
+ ç: "ç",
+ ď: "ď",
+ ḋ: "ḋ",
+ ḑ: "ḑ",
+ é: "é",
+ è: "è",
+ ë: "ë",
+ ẽ: "ẽ",
+ ē: "ē",
+ ḗ: "ḗ",
+ ḕ: "ḕ",
+ ĕ: "ĕ",
+ ḝ: "ḝ",
+ ě: "ě",
+ ê: "ê",
+ ế: "ế",
+ ề: "ề",
+ ễ: "ễ",
+ ė: "ė",
+ ȩ: "ȩ",
+ ḟ: "ḟ",
+ ǵ: "ǵ",
+ ḡ: "ḡ",
+ ğ: "ğ",
+ ǧ: "ǧ",
+ ĝ: "ĝ",
+ ġ: "ġ",
+ ģ: "ģ",
+ ḧ: "ḧ",
+ ȟ: "ȟ",
+ ĥ: "ĥ",
+ ḣ: "ḣ",
+ ḩ: "ḩ",
+ í: "í",
+ ì: "ì",
+ ï: "ï",
+ ḯ: "ḯ",
+ ĩ: "ĩ",
+ ī: "ī",
+ ĭ: "ĭ",
+ ǐ: "ǐ",
+ î: "î",
+ ǰ: "ǰ",
+ ĵ: "ĵ",
+ ḱ: "ḱ",
+ ǩ: "ǩ",
+ ķ: "ķ",
+ ĺ: "ĺ",
+ ľ: "ľ",
+ ļ: "ļ",
+ ḿ: "ḿ",
+ ṁ: "ṁ",
+ ń: "ń",
+ ǹ: "ǹ",
+ ñ: "ñ",
+ ň: "ň",
+ ṅ: "ṅ",
+ ņ: "ņ",
+ ó: "ó",
+ ò: "ò",
+ ö: "ö",
+ ȫ: "ȫ",
+ õ: "õ",
+ ṍ: "ṍ",
+ ṏ: "ṏ",
+ ȭ: "ȭ",
+ ō: "ō",
+ ṓ: "ṓ",
+ ṑ: "ṑ",
+ ŏ: "ŏ",
+ ǒ: "ǒ",
+ ô: "ô",
+ ố: "ố",
+ ồ: "ồ",
+ ỗ: "ỗ",
+ ȯ: "ȯ",
+ ȱ: "ȱ",
+ ő: "ő",
+ ṕ: "ṕ",
+ ṗ: "ṗ",
+ ŕ: "ŕ",
+ ř: "ř",
+ ṙ: "ṙ",
+ ŗ: "ŗ",
+ ś: "ś",
+ ṥ: "ṥ",
+ š: "š",
+ ṧ: "ṧ",
+ ŝ: "ŝ",
+ ṡ: "ṡ",
+ ş: "ş",
+ ẗ: "ẗ",
+ ť: "ť",
+ ṫ: "ṫ",
+ ţ: "ţ",
+ ú: "ú",
+ ù: "ù",
+ ü: "ü",
+ ǘ: "ǘ",
+ ǜ: "ǜ",
+ ǖ: "ǖ",
+ ǚ: "ǚ",
+ ũ: "ũ",
+ ṹ: "ṹ",
+ ū: "ū",
+ ṻ: "ṻ",
+ ŭ: "ŭ",
+ ǔ: "ǔ",
+ û: "û",
+ ů: "ů",
+ ű: "ű",
+ ṽ: "ṽ",
+ ẃ: "ẃ",
+ ẁ: "ẁ",
+ ẅ: "ẅ",
+ ŵ: "ŵ",
+ ẇ: "ẇ",
+ ẘ: "ẘ",
+ ẍ: "ẍ",
+ ẋ: "ẋ",
+ ý: "ý",
+ ỳ: "ỳ",
+ ÿ: "ÿ",
+ ỹ: "ỹ",
+ ȳ: "ȳ",
+ ŷ: "ŷ",
+ ẏ: "ẏ",
+ ẙ: "ẙ",
+ ź: "ź",
+ ž: "ž",
+ ẑ: "ẑ",
+ ż: "ż",
+ Á: "Á",
+ À: "À",
+ Ä: "Ä",
+ Ǟ: "Ǟ",
+ Ã: "Ã",
+ Ā: "Ā",
+ Ă: "Ă",
+ Ắ: "Ắ",
+ Ằ: "Ằ",
+ Ẵ: "Ẵ",
+ Ǎ: "Ǎ",
+ Â: "Â",
+ Ấ: "Ấ",
+ Ầ: "Ầ",
+ Ẫ: "Ẫ",
+ Ȧ: "Ȧ",
+ Ǡ: "Ǡ",
+ Å: "Å",
+ Ǻ: "Ǻ",
+ Ḃ: "Ḃ",
+ Ć: "Ć",
+ Ḉ: "Ḉ",
+ Č: "Č",
+ Ĉ: "Ĉ",
+ Ċ: "Ċ",
+ Ç: "Ç",
+ Ď: "Ď",
+ Ḋ: "Ḋ",
+ Ḑ: "Ḑ",
+ É: "É",
+ È: "È",
+ Ë: "Ë",
+ Ẽ: "Ẽ",
+ Ē: "Ē",
+ Ḗ: "Ḗ",
+ Ḕ: "Ḕ",
+ Ĕ: "Ĕ",
+ Ḝ: "Ḝ",
+ Ě: "Ě",
+ Ê: "Ê",
+ Ế: "Ế",
+ Ề: "Ề",
+ Ễ: "Ễ",
+ Ė: "Ė",
+ Ȩ: "Ȩ",
+ Ḟ: "Ḟ",
+ Ǵ: "Ǵ",
+ Ḡ: "Ḡ",
+ Ğ: "Ğ",
+ Ǧ: "Ǧ",
+ Ĝ: "Ĝ",
+ Ġ: "Ġ",
+ Ģ: "Ģ",
+ Ḧ: "Ḧ",
+ Ȟ: "Ȟ",
+ Ĥ: "Ĥ",
+ Ḣ: "Ḣ",
+ Ḩ: "Ḩ",
+ Í: "Í",
+ Ì: "Ì",
+ Ï: "Ï",
+ Ḯ: "Ḯ",
+ Ĩ: "Ĩ",
+ Ī: "Ī",
+ Ĭ: "Ĭ",
+ Ǐ: "Ǐ",
+ Î: "Î",
+ İ: "İ",
+ Ĵ: "Ĵ",
+ Ḱ: "Ḱ",
+ Ǩ: "Ǩ",
+ Ķ: "Ķ",
+ Ĺ: "Ĺ",
+ Ľ: "Ľ",
+ Ļ: "Ļ",
+ Ḿ: "Ḿ",
+ Ṁ: "Ṁ",
+ Ń: "Ń",
+ Ǹ: "Ǹ",
+ Ñ: "Ñ",
+ Ň: "Ň",
+ Ṅ: "Ṅ",
+ Ņ: "Ņ",
+ Ó: "Ó",
+ Ò: "Ò",
+ Ö: "Ö",
+ Ȫ: "Ȫ",
+ Õ: "Õ",
+ Ṍ: "Ṍ",
+ Ṏ: "Ṏ",
+ Ȭ: "Ȭ",
+ Ō: "Ō",
+ Ṓ: "Ṓ",
+ Ṑ: "Ṑ",
+ Ŏ: "Ŏ",
+ Ǒ: "Ǒ",
+ Ô: "Ô",
+ Ố: "Ố",
+ Ồ: "Ồ",
+ Ỗ: "Ỗ",
+ Ȯ: "Ȯ",
+ Ȱ: "Ȱ",
+ Ő: "Ő",
+ Ṕ: "Ṕ",
+ Ṗ: "Ṗ",
+ Ŕ: "Ŕ",
+ Ř: "Ř",
+ Ṙ: "Ṙ",
+ Ŗ: "Ŗ",
+ Ś: "Ś",
+ Ṥ: "Ṥ",
+ Š: "Š",
+ Ṧ: "Ṧ",
+ Ŝ: "Ŝ",
+ Ṡ: "Ṡ",
+ Ş: "Ş",
+ Ť: "Ť",
+ Ṫ: "Ṫ",
+ Ţ: "Ţ",
+ Ú: "Ú",
+ Ù: "Ù",
+ Ü: "Ü",
+ Ǘ: "Ǘ",
+ Ǜ: "Ǜ",
+ Ǖ: "Ǖ",
+ Ǚ: "Ǚ",
+ Ũ: "Ũ",
+ Ṹ: "Ṹ",
+ Ū: "Ū",
+ Ṻ: "Ṻ",
+ Ŭ: "Ŭ",
+ Ǔ: "Ǔ",
+ Û: "Û",
+ Ů: "Ů",
+ Ű: "Ű",
+ Ṽ: "Ṽ",
+ Ẃ: "Ẃ",
+ Ẁ: "Ẁ",
+ Ẅ: "Ẅ",
+ Ŵ: "Ŵ",
+ Ẇ: "Ẇ",
+ Ẍ: "Ẍ",
+ Ẋ: "Ẋ",
+ Ý: "Ý",
+ Ỳ: "Ỳ",
+ Ÿ: "Ÿ",
+ Ỹ: "Ỹ",
+ Ȳ: "Ȳ",
+ Ŷ: "Ŷ",
+ Ẏ: "Ẏ",
+ Ź: "Ź",
+ Ž: "Ž",
+ Ẑ: "Ẑ",
+ Ż: "Ż",
+ ά: "ά",
+ ὰ: "ὰ",
+ ᾱ: "ᾱ",
+ ᾰ: "ᾰ",
+ έ: "έ",
+ ὲ: "ὲ",
+ ή: "ή",
+ ὴ: "ὴ",
+ ί: "ί",
+ ὶ: "ὶ",
+ ϊ: "ϊ",
+ ΐ: "ΐ",
+ ῒ: "ῒ",
+ ῑ: "ῑ",
+ ῐ: "ῐ",
+ ό: "ό",
+ ὸ: "ὸ",
+ ύ: "ύ",
+ ὺ: "ὺ",
+ ϋ: "ϋ",
+ ΰ: "ΰ",
+ ῢ: "ῢ",
+ ῡ: "ῡ",
+ ῠ: "ῠ",
+ ώ: "ώ",
+ ὼ: "ὼ",
+ Ύ: "Ύ",
+ Ὺ: "Ὺ",
+ Ϋ: "Ϋ",
+ Ῡ: "Ῡ",
+ Ῠ: "Ῠ",
+ Ώ: "Ώ",
+ Ὼ: "Ὼ",
+ },
+ Kn = (function () {
+ function e(e, t) {
+ (this.mode = void 0),
+ (this.gullet = void 0),
+ (this.settings = void 0),
+ (this.leftrightDepth = void 0),
+ (this.nextToken = void 0),
+ (this.mode = "math"),
+ (this.gullet = new Wn(e, t, this.mode)),
+ (this.settings = t),
+ (this.leftrightDepth = 0);
+ }
+ var t = e.prototype;
+ return (
+ (t.expect = function (e, t) {
+ if ((void 0 === t && (t = !0), this.fetch().text !== e))
+ throw new n("Expected '" + e + "', got '" + this.fetch().text + "'", this.fetch());
+ t && this.consume();
+ }),
+ (t.consume = function () {
+ this.nextToken = null;
+ }),
+ (t.fetch = function () {
+ return null == this.nextToken && (this.nextToken = this.gullet.expandNextToken()), this.nextToken;
+ }),
+ (t.switchMode = function (e) {
+ (this.mode = e), this.gullet.switchMode(e);
+ }),
+ (t.parse = function () {
+ this.settings.globalGroup || this.gullet.beginGroup(),
+ this.settings.colorIsTextColor && this.gullet.macros.set("\\color", "\\textcolor");
+ try {
+ var e = this.parseExpression(!1);
+ return this.expect("EOF"), this.settings.globalGroup || this.gullet.endGroup(), e;
+ } finally {
+ this.gullet.endGroups();
+ }
+ }),
+ (t.subparse = function (e) {
+ var t = this.nextToken;
+ this.consume(), this.gullet.pushToken(new Gr("}")), this.gullet.pushTokens(e);
+ var r = this.parseExpression(!1);
+ return this.expect("}"), (this.nextToken = t), r;
+ }),
+ (t.parseExpression = function (t, r) {
+ for (var n = []; ; ) {
+ "math" === this.mode && this.consumeSpaces();
+ var a = this.fetch();
+ if (-1 !== e.endOfExpression.indexOf(a.text)) break;
+ if (r && a.text === r) break;
+ if (t && Cn[a.text] && Cn[a.text].infix) break;
+ var i = this.parseAtom(r);
+ if (!i) break;
+ "internal" !== i.type && n.push(i);
+ }
+ return "text" === this.mode && this.formLigatures(n), this.handleInfixNodes(n);
+ }),
+ (t.handleInfixNodes = function (e) {
+ for (var t, r = -1, a = 0; a < e.length; a++)
+ if ("infix" === e[a].type) {
+ if (-1 !== r) throw new n("only one infix operator per group", e[a].token);
+ (r = a), (t = e[a].replaceWith);
+ }
+ if (-1 !== r && t) {
+ var i,
+ o,
+ s = e.slice(0, r),
+ l = e.slice(r + 1);
+ return (
+ (i = 1 === s.length && "ordgroup" === s[0].type ? s[0] : { type: "ordgroup", mode: this.mode, body: s }),
+ (o = 1 === l.length && "ordgroup" === l[0].type ? l[0] : { type: "ordgroup", mode: this.mode, body: l }),
+ ["\\\\abovefrac" === t ? this.callFunction(t, [i, e[r], o], []) : this.callFunction(t, [i, o], [])]
+ );
+ }
+ return e;
+ }),
+ (t.handleSupSubscript = function (e) {
+ var t = this.fetch(),
+ r = t.text;
+ this.consume(), this.consumeSpaces();
+ var a = this.parseGroup(e);
+ if (!a) throw new n("Expected group after '" + r + "'", t);
+ return a;
+ }),
+ (t.formatUnsupportedCmd = function (e) {
+ for (var t = [], r = 0; r < e.length; r++) t.push({ type: "textord", mode: "text", text: e[r] });
+ var n = { type: "text", mode: this.mode, body: t };
+ return {
+ type: "color",
+ mode: this.mode,
+ color: this.settings.errorColor,
+ body: [n],
+ };
+ }),
+ (t.parseAtom = function (t) {
+ var r,
+ a,
+ i = this.parseGroup("atom", t);
+ if ("text" === this.mode) return i;
+ for (;;) {
+ this.consumeSpaces();
+ var o = this.fetch();
+ if ("\\limits" === o.text || "\\nolimits" === o.text) {
+ if (i && "op" === i.type) {
+ var s = "\\limits" === o.text;
+ (i.limits = s), (i.alwaysHandleSupSub = !0);
+ } else {
+ if (!i || "operatorname" !== i.type) throw new n("Limit controls must follow a math operator", o);
+ i.alwaysHandleSupSub && (i.limits = "\\limits" === o.text);
+ }
+ this.consume();
+ } else if ("^" === o.text) {
+ if (r) throw new n("Double superscript", o);
+ r = this.handleSupSubscript("superscript");
+ } else if ("_" === o.text) {
+ if (a) throw new n("Double subscript", o);
+ a = this.handleSupSubscript("subscript");
+ } else if ("'" === o.text) {
+ if (r) throw new n("Double superscript", o);
+ var l = { type: "textord", mode: this.mode, text: "\\prime" },
+ h = [l];
+ for (this.consume(); "'" === this.fetch().text; ) h.push(l), this.consume();
+ "^" === this.fetch().text && h.push(this.handleSupSubscript("superscript")),
+ (r = { type: "ordgroup", mode: this.mode, body: h });
+ } else {
+ if (!jn[o.text]) break;
+ var c = jn[o.text],
+ m = _n.test(o.text);
+ for (this.consume(); ; ) {
+ var u = this.fetch().text;
+ if (!jn[u]) break;
+ if (_n.test(u) !== m) break;
+ this.consume(), (c += jn[u]);
+ }
+ var p = new e(c, this.settings).parse();
+ m ? (a = { type: "ordgroup", mode: "math", body: p }) : (r = { type: "ordgroup", mode: "math", body: p });
+ }
+ }
+ return r || a ? { type: "supsub", mode: this.mode, base: i, sup: r, sub: a } : i;
+ }),
+ (t.parseFunction = function (e, t) {
+ var r = this.fetch(),
+ a = r.text,
+ i = Cn[a];
+ if (!i) return null;
+ if ((this.consume(), t && "atom" !== t && !i.allowedInArgument))
+ throw new n("Got function '" + a + "' with no arguments" + (t ? " as " + t : ""), r);
+ if ("text" === this.mode && !i.allowedInText) throw new n("Can't use function '" + a + "' in text mode", r);
+ if ("math" === this.mode && !1 === i.allowedInMath) throw new n("Can't use function '" + a + "' in math mode", r);
+ var o = this.parseArguments(a, i),
+ s = o.args,
+ l = o.optArgs;
+ return this.callFunction(a, s, l, r, e);
+ }),
+ (t.callFunction = function (e, t, r, a, i) {
+ var o = { funcName: e, parser: this, token: a, breakOnTokenText: i },
+ s = Cn[e];
+ if (s && s.handler) return s.handler(o, t, r);
+ throw new n("No function handler for " + e);
+ }),
+ (t.parseArguments = function (e, t) {
+ var r = t.numArgs + t.numOptionalArgs;
+ if (0 === r) return { args: [], optArgs: [] };
+ for (var a = [], i = [], o = 0; o < r; o++) {
+ var s = t.argTypes && t.argTypes[o],
+ l = o < t.numOptionalArgs;
+ ((t.primitive && null == s) || ("sqrt" === t.type && 1 === o && null == i[0])) && (s = "primitive");
+ var h = this.parseGroupOfType("argument to '" + e + "'", s, l);
+ if (l) i.push(h);
+ else {
+ if (null == h) throw new n("Null argument, please report this as a bug");
+ a.push(h);
+ }
+ }
+ return { args: a, optArgs: i };
+ }),
+ (t.parseGroupOfType = function (e, t, r) {
+ switch (t) {
+ case "color":
+ return this.parseColorGroup(r);
+ case "size":
+ return this.parseSizeGroup(r);
+ case "url":
+ return this.parseUrlGroup(r);
+ case "math":
+ case "text":
+ return this.parseArgumentGroup(r, t);
+ case "hbox":
+ var a = this.parseArgumentGroup(r, "text");
+ return null != a ? { type: "styling", mode: a.mode, body: [a], style: "text" } : null;
+ case "raw":
+ var i = this.parseStringGroup("raw", r);
+ return null != i ? { type: "raw", mode: "text", string: i.text } : null;
+ case "primitive":
+ if (r) throw new n("A primitive argument cannot be optional");
+ var o = this.parseGroup(e);
+ if (null == o) throw new n("Expected group as " + e, this.fetch());
+ return o;
+ case "original":
+ case null:
+ case void 0:
+ return this.parseArgumentGroup(r);
+ default:
+ throw new n("Unknown group type as " + e, this.fetch());
+ }
+ }),
+ (t.consumeSpaces = function () {
+ for (; " " === this.fetch().text; ) this.consume();
+ }),
+ (t.parseStringGroup = function (e, t) {
+ var r = this.gullet.scanArgument(t);
+ if (null == r) return null;
+ for (var n, a = ""; "EOF" !== (n = this.fetch()).text; ) (a += n.text), this.consume();
+ return this.consume(), (r.text = a), r;
+ }),
+ (t.parseRegexGroup = function (e, t) {
+ for (var r, a = this.fetch(), i = a, o = ""; "EOF" !== (r = this.fetch()).text && e.test(o + r.text); )
+ (o += (i = r).text), this.consume();
+ if ("" === o) throw new n("Invalid " + t + ": '" + a.text + "'", a);
+ return a.range(i, o);
+ }),
+ (t.parseColorGroup = function (e) {
+ var t = this.parseStringGroup("color", e);
+ if (null == t) return null;
+ var r = /^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(t.text);
+ if (!r) throw new n("Invalid color: '" + t.text + "'", t);
+ var a = r[0];
+ return /^[0-9a-f]{6}$/i.test(a) && (a = "#" + a), { type: "color-token", mode: this.mode, color: a };
+ }),
+ (t.parseSizeGroup = function (e) {
+ var t,
+ r = !1;
+ if (
+ (this.gullet.consumeSpaces(),
+ !(t =
+ e || "{" === this.gullet.future().text
+ ? this.parseStringGroup("size", e)
+ : this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, "size")))
+ )
+ return null;
+ e || 0 !== t.text.length || ((t.text = "0pt"), (r = !0));
+ var a = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);
+ if (!a) throw new n("Invalid size: '" + t.text + "'", t);
+ var i = { number: +(a[1] + a[2]), unit: a[3] };
+ if (!Y(i)) throw new n("Invalid unit: '" + i.unit + "'", t);
+ return { type: "size", mode: this.mode, value: i, isBlank: r };
+ }),
+ (t.parseUrlGroup = function (e) {
+ this.gullet.lexer.setCatcode("%", 13), this.gullet.lexer.setCatcode("~", 12);
+ var t = this.parseStringGroup("url", e);
+ if ((this.gullet.lexer.setCatcode("%", 14), this.gullet.lexer.setCatcode("~", 13), null == t)) return null;
+ var r = t.text.replace(/\\([#$%&~_^{}])/g, "$1");
+ return { type: "url", mode: this.mode, url: r };
+ }),
+ (t.parseArgumentGroup = function (e, t) {
+ var r = this.gullet.scanArgument(e);
+ if (null == r) return null;
+ var n = this.mode;
+ t && this.switchMode(t), this.gullet.beginGroup();
+ var a = this.parseExpression(!1, "EOF");
+ this.expect("EOF"), this.gullet.endGroup();
+ var i = { type: "ordgroup", mode: this.mode, loc: r.loc, body: a };
+ return t && this.switchMode(n), i;
+ }),
+ (t.parseGroup = function (e, t) {
+ var r,
+ a = this.fetch(),
+ i = a.text;
+ if ("{" === i || "\\begingroup" === i) {
+ this.consume();
+ var o = "{" === i ? "}" : "\\endgroup";
+ this.gullet.beginGroup();
+ var s = this.parseExpression(!1, o),
+ l = this.fetch();
+ this.expect(o),
+ this.gullet.endGroup(),
+ (r = {
+ type: "ordgroup",
+ mode: this.mode,
+ loc: Fr.range(a, l),
+ body: s,
+ semisimple: "\\begingroup" === i || void 0,
+ });
+ } else if (null == (r = this.parseFunction(t, e) || this.parseSymbol()) && "\\" === i[0] && !Xn.hasOwnProperty(i)) {
+ if (this.settings.throwOnError) throw new n("Undefined control sequence: " + i, a);
+ (r = this.formatUnsupportedCmd(i)), this.consume();
+ }
+ return r;
+ }),
+ (t.formLigatures = function (e) {
+ for (var t = e.length - 1, r = 0; r < t; ++r) {
+ var n = e[r],
+ a = n.text;
+ "-" === a &&
+ "-" === e[r + 1].text &&
+ (r + 1 < t && "-" === e[r + 2].text
+ ? (e.splice(r, 3, {
+ type: "textord",
+ mode: "text",
+ loc: Fr.range(n, e[r + 2]),
+ text: "---",
+ }),
+ (t -= 2))
+ : (e.splice(r, 2, {
+ type: "textord",
+ mode: "text",
+ loc: Fr.range(n, e[r + 1]),
+ text: "--",
+ }),
+ (t -= 1))),
+ ("'" !== a && "`" !== a) ||
+ e[r + 1].text !== a ||
+ (e.splice(r, 2, {
+ type: "textord",
+ mode: "text",
+ loc: Fr.range(n, e[r + 1]),
+ text: a + a,
+ }),
+ (t -= 1));
+ }
+ }),
+ (t.parseSymbol = function () {
+ var e = this.fetch(),
+ t = e.text;
+ if (/^\\verb[^a-zA-Z]/.test(t)) {
+ this.consume();
+ var r = t.slice(5),
+ a = "*" === r.charAt(0);
+ if ((a && (r = r.slice(1)), r.length < 2 || r.charAt(0) !== r.slice(-1)))
+ throw new n("\\verb assertion failed --\n please report what input caused this bug");
+ return { type: "verb", mode: "text", body: (r = r.slice(1, -1)), star: a };
+ }
+ Zn.hasOwnProperty(t[0]) &&
+ !he[this.mode][t[0]] &&
+ (this.settings.strict &&
+ "math" === this.mode &&
+ this.settings.reportNonstrict("unicodeTextInMathMode", 'Accented Unicode text character "' + t[0] + '" used in math mode', e),
+ (t = Zn[t[0]] + t.slice(1)));
+ var i,
+ o = Hn.exec(t);
+ if ((o && ("i" === (t = t.substring(0, o.index)) ? (t = "ı") : "j" === t && (t = "ȷ")), he[this.mode][t])) {
+ this.settings.strict &&
+ "math" === this.mode &&
+ "ÐÞþ".indexOf(t) >= 0 &&
+ this.settings.reportNonstrict("unicodeTextInMathMode", 'Latin-1/Unicode text character "' + t[0] + '" used in math mode', e);
+ var s,
+ l = he[this.mode][t].group,
+ h = Fr.range(e);
+ if (oe.hasOwnProperty(l)) {
+ var c = l;
+ s = { type: "atom", mode: this.mode, family: c, loc: h, text: t };
+ } else s = { type: l, mode: this.mode, loc: h, text: t };
+ i = s;
+ } else {
+ if (!(t.charCodeAt(0) >= 128)) return null;
+ this.settings.strict &&
+ (N(t.charCodeAt(0))
+ ? "math" === this.mode &&
+ this.settings.reportNonstrict("unicodeTextInMathMode", 'Unicode text character "' + t[0] + '" used in math mode', e)
+ : this.settings.reportNonstrict(
+ "unknownSymbol",
+ 'Unrecognized Unicode character "' + t[0] + '" (' + t.charCodeAt(0) + ")",
+ e,
+ )),
+ (i = { type: "textord", mode: "text", loc: Fr.range(e), text: t });
+ }
+ if ((this.consume(), o))
+ for (var m = 0; m < o[0].length; m++) {
+ var u = o[0][m];
+ if (!$n[u]) throw new n("Unknown accent ' " + u + "'", e);
+ var p = $n[u][this.mode] || $n[u].text;
+ if (!p) throw new n("Accent " + u + " unsupported in " + this.mode + " mode", e);
+ i = {
+ type: "accent",
+ mode: this.mode,
+ loc: Fr.range(e),
+ label: p,
+ isStretchy: !1,
+ isShifty: !0,
+ base: i,
+ };
+ }
+ return i;
+ }),
+ e
+ );
+ })();
+ Kn.endOfExpression = ["}", "\\endgroup", "\\end", "\\right", "&"];
+ var Jn = function (e, t) {
+ if (!("string" == typeof e || e instanceof String)) throw new TypeError("KaTeX can only parse string typed expression");
+ var r = new Kn(e, t);
+ delete r.gullet.macros.current["\\df@tag"];
+ var a = r.parse();
+ if ((delete r.gullet.macros.current["\\current@color"], delete r.gullet.macros.current["\\color"], r.gullet.macros.get("\\df@tag"))) {
+ if (!t.displayMode) throw new n("\\tag works only in display equations");
+ a = [{ type: "tag", mode: "text", body: a, tag: r.subparse([new Gr("\\df@tag")]) }];
+ }
+ return a;
+ },
+ Qn = function (e, t, r) {
+ t.textContent = "";
+ var n = ta(e, r).toNode();
+ t.appendChild(n);
+ };
+ "undefined" != typeof document &&
+ "CSS1Compat" !== document.compatMode &&
+ ("undefined" != typeof console &&
+ console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),
+ (Qn = function () {
+ throw new n("KaTeX doesn't work in quirks mode.");
+ }));
+ var ea = function (e, t, r) {
+ if (r.throwOnError || !(e instanceof n)) throw e;
+ var a = Qe.makeSpan(["katex-error"], [new te(t)]);
+ return a.setAttribute("title", e.toString()), a.setAttribute("style", "color:" + r.errorColor), a;
+ },
+ ta = function (e, t) {
+ var r = new v(t);
+ try {
+ return (function (e, t, r) {
+ var n,
+ a = Lt(r);
+ if ("mathml" === r.output) return Et(e, t, a, r.displayMode, !0);
+ if ("html" === r.output) {
+ var i = zt(e, a);
+ n = Qe.makeSpan(["katex"], [i]);
+ } else {
+ var o = Et(e, t, a, r.displayMode, !1),
+ s = zt(e, a);
+ n = Qe.makeSpan(["katex"], [o, s]);
+ }
+ return Dt(n, r);
+ })(Jn(e, r), e, r);
+ } catch (t) {
+ return ea(t, e, r);
+ }
+ },
+ ra = {
+ version: "0.16.8",
+ render: Qn,
+ renderToString: function (e, t) {
+ return ta(e, t).toMarkup();
+ },
+ ParseError: n,
+ SETTINGS_SCHEMA: f,
+ __parse: function (e, t) {
+ var r = new v(t);
+ return Jn(e, r);
+ },
+ __renderToDomTree: ta,
+ __renderToHTMLTree: function (e, t) {
+ var r = new v(t);
+ try {
+ return (function (e, t, r) {
+ var n = zt(e, Lt(r)),
+ a = Qe.makeSpan(["katex"], [n]);
+ return Dt(a, r);
+ })(Jn(e, r), 0, r);
+ } catch (t) {
+ return ea(t, e, r);
+ }
+ },
+ __setFontMetrics: function (e, t) {
+ I[e] = t;
+ },
+ __defineSymbol: ce,
+ __defineFunction: lt,
+ __defineMacro: Vr,
+ __domTree: {
+ Span: K,
+ Anchor: J,
+ SymbolNode: te,
+ SvgNode: re,
+ PathNode: ne,
+ LineNode: ae,
+ },
+ };
+ return t.default;
+ })();
+ }),
+ (e.exports = t());
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/118-f1de6a20.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/118-f1de6a20.chunk.min.js
new file mode 100644
index 000000000..09ac8e69f
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/118-f1de6a20.chunk.min.js
@@ -0,0 +1,1787 @@
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [118],
+ {
+ 7118: function (t, i, e) {
+ e.d(i, {
+ diagram: function () {
+ return d;
+ },
+ });
+ var a = e(9339),
+ n = e(7274),
+ r =
+ (e(7484),
+ e(7967),
+ e(7856),
+ (function () {
+ var t = function (t, i, e, a) {
+ for (e = e || {}, a = t.length; a--; e[t[a]] = i);
+ return e;
+ },
+ i = [1, 3],
+ e = [1, 5],
+ a = [1, 6],
+ n = [1, 7],
+ r = [1, 8],
+ s = [1, 10],
+ l = [1, 5, 14, 16, 18, 20, 21, 26, 28, 29, 30, 31, 32, 38, 39, 40, 41, 47, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60],
+ o = [1, 5, 7, 14, 16, 18, 20, 21, 26, 28, 29, 30, 31, 32, 38, 39, 40, 41, 47, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60],
+ h = [38, 39, 40],
+ c = [2, 8],
+ d = [1, 19],
+ u = [1, 23],
+ x = [1, 24],
+ g = [1, 25],
+ f = [1, 26],
+ y = [1, 27],
+ p = [1, 29],
+ q = [1, 30],
+ T = [1, 31],
+ _ = [1, 32],
+ m = [1, 33],
+ A = [1, 34],
+ b = [1, 37],
+ S = [1, 38],
+ k = [1, 39],
+ v = [1, 40],
+ F = [1, 41],
+ P = [1, 42],
+ C = [1, 43],
+ L = [1, 44],
+ D = [1, 45],
+ z = [1, 46],
+ E = [1, 47],
+ I = [1, 48],
+ B = [1, 49],
+ w = [1, 52],
+ R = [1, 67],
+ W = [1, 68],
+ N = [5, 23, 27, 38, 39, 40, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61],
+ U = [5, 7, 38, 39, 40, 41],
+ Q = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ eol: 4,
+ SPACE: 5,
+ directive: 6,
+ QUADRANT: 7,
+ document: 8,
+ line: 9,
+ statement: 10,
+ axisDetails: 11,
+ quadrantDetails: 12,
+ points: 13,
+ title: 14,
+ title_value: 15,
+ acc_title: 16,
+ acc_title_value: 17,
+ acc_descr: 18,
+ acc_descr_value: 19,
+ acc_descr_multiline_value: 20,
+ section: 21,
+ text: 22,
+ point_start: 23,
+ point_x: 24,
+ point_y: 25,
+ "X-AXIS": 26,
+ "AXIS-TEXT-DELIMITER": 27,
+ "Y-AXIS": 28,
+ QUADRANT_1: 29,
+ QUADRANT_2: 30,
+ QUADRANT_3: 31,
+ QUADRANT_4: 32,
+ openDirective: 33,
+ typeDirective: 34,
+ closeDirective: 35,
+ ":": 36,
+ argDirective: 37,
+ NEWLINE: 38,
+ SEMI: 39,
+ EOF: 40,
+ open_directive: 41,
+ type_directive: 42,
+ arg_directive: 43,
+ close_directive: 44,
+ alphaNumToken: 45,
+ textNoTagsToken: 46,
+ STR: 47,
+ MD_STR: 48,
+ alphaNum: 49,
+ PUNCTUATION: 50,
+ AMP: 51,
+ NUM: 52,
+ ALPHA: 53,
+ COMMA: 54,
+ PLUS: 55,
+ EQUALS: 56,
+ MULT: 57,
+ DOT: 58,
+ BRKT: 59,
+ UNDERSCORE: 60,
+ MINUS: 61,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 5: "SPACE",
+ 7: "QUADRANT",
+ 14: "title",
+ 15: "title_value",
+ 16: "acc_title",
+ 17: "acc_title_value",
+ 18: "acc_descr",
+ 19: "acc_descr_value",
+ 20: "acc_descr_multiline_value",
+ 21: "section",
+ 23: "point_start",
+ 24: "point_x",
+ 25: "point_y",
+ 26: "X-AXIS",
+ 27: "AXIS-TEXT-DELIMITER",
+ 28: "Y-AXIS",
+ 29: "QUADRANT_1",
+ 30: "QUADRANT_2",
+ 31: "QUADRANT_3",
+ 32: "QUADRANT_4",
+ 36: ":",
+ 38: "NEWLINE",
+ 39: "SEMI",
+ 40: "EOF",
+ 41: "open_directive",
+ 42: "type_directive",
+ 43: "arg_directive",
+ 44: "close_directive",
+ 47: "STR",
+ 48: "MD_STR",
+ 50: "PUNCTUATION",
+ 51: "AMP",
+ 52: "NUM",
+ 53: "ALPHA",
+ 54: "COMMA",
+ 55: "PLUS",
+ 56: "EQUALS",
+ 57: "MULT",
+ 58: "DOT",
+ 59: "BRKT",
+ 60: "UNDERSCORE",
+ 61: "MINUS",
+ },
+ productions_: [
+ 0,
+ [3, 2],
+ [3, 2],
+ [3, 2],
+ [3, 2],
+ [8, 0],
+ [8, 2],
+ [9, 2],
+ [10, 0],
+ [10, 2],
+ [10, 1],
+ [10, 1],
+ [10, 1],
+ [10, 2],
+ [10, 2],
+ [10, 2],
+ [10, 1],
+ [10, 1],
+ [10, 1],
+ [13, 4],
+ [11, 4],
+ [11, 3],
+ [11, 2],
+ [11, 4],
+ [11, 3],
+ [11, 2],
+ [12, 2],
+ [12, 2],
+ [12, 2],
+ [12, 2],
+ [6, 3],
+ [6, 5],
+ [4, 1],
+ [4, 1],
+ [4, 1],
+ [33, 1],
+ [34, 1],
+ [37, 1],
+ [35, 1],
+ [22, 1],
+ [22, 2],
+ [22, 1],
+ [22, 1],
+ [49, 1],
+ [49, 2],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [46, 1],
+ [46, 1],
+ [46, 1],
+ ],
+ performAction: function (t, i, e, a, n, r, s) {
+ var l = r.length - 1;
+ switch (n) {
+ case 13:
+ (this.$ = r[l].trim()), a.setDiagramTitle(this.$);
+ break;
+ case 14:
+ (this.$ = r[l].trim()), a.setAccTitle(this.$);
+ break;
+ case 15:
+ case 16:
+ (this.$ = r[l].trim()), a.setAccDescription(this.$);
+ break;
+ case 17:
+ a.addSection(r[l].substr(8)), (this.$ = r[l].substr(8));
+ break;
+ case 19:
+ a.addPoint(r[l - 3], r[l - 1], r[l]);
+ break;
+ case 20:
+ a.setXAxisLeftText(r[l - 2]), a.setXAxisRightText(r[l]);
+ break;
+ case 21:
+ (r[l - 1].text += " ⟶ "), a.setXAxisLeftText(r[l - 1]);
+ break;
+ case 22:
+ a.setXAxisLeftText(r[l]);
+ break;
+ case 23:
+ a.setYAxisBottomText(r[l - 2]), a.setYAxisTopText(r[l]);
+ break;
+ case 24:
+ (r[l - 1].text += " ⟶ "), a.setYAxisBottomText(r[l - 1]);
+ break;
+ case 25:
+ a.setYAxisBottomText(r[l]);
+ break;
+ case 26:
+ a.setQuadrant1Text(r[l]);
+ break;
+ case 27:
+ a.setQuadrant2Text(r[l]);
+ break;
+ case 28:
+ a.setQuadrant3Text(r[l]);
+ break;
+ case 29:
+ a.setQuadrant4Text(r[l]);
+ break;
+ case 35:
+ a.parseDirective("%%{", "open_directive");
+ break;
+ case 36:
+ a.parseDirective(r[l], "type_directive");
+ break;
+ case 37:
+ (r[l] = r[l].trim().replace(/'/g, '"')), a.parseDirective(r[l], "arg_directive");
+ break;
+ case 38:
+ a.parseDirective("}%%", "close_directive", "quadrantChart");
+ break;
+ case 39:
+ case 41:
+ this.$ = { text: r[l], type: "text" };
+ break;
+ case 40:
+ this.$ = { text: r[l - 1].text + "" + r[l], type: r[l - 1].type };
+ break;
+ case 42:
+ this.$ = { text: r[l], type: "markdown" };
+ break;
+ case 43:
+ this.$ = r[l];
+ break;
+ case 44:
+ this.$ = r[l - 1] + "" + r[l];
+ }
+ },
+ table: [
+ { 3: 1, 4: 2, 5: i, 6: 4, 7: e, 33: 9, 38: a, 39: n, 40: r, 41: s },
+ { 1: [3] },
+ { 3: 11, 4: 2, 5: i, 6: 4, 7: e, 33: 9, 38: a, 39: n, 40: r, 41: s },
+ { 3: 12, 4: 2, 5: i, 6: 4, 7: e, 33: 9, 38: a, 39: n, 40: r, 41: s },
+ { 3: 13, 4: 2, 5: i, 6: 4, 7: e, 33: 9, 38: a, 39: n, 40: r, 41: s },
+ t(l, [2, 5], { 8: 14 }),
+ t(o, [2, 32]),
+ t(o, [2, 33]),
+ t(o, [2, 34]),
+ { 34: 15, 42: [1, 16] },
+ { 42: [2, 35] },
+ { 1: [2, 1] },
+ { 1: [2, 2] },
+ { 1: [2, 3] },
+ t(h, c, {
+ 33: 9,
+ 9: 17,
+ 10: 18,
+ 11: 20,
+ 12: 21,
+ 13: 22,
+ 6: 28,
+ 22: 35,
+ 45: 36,
+ 1: [2, 4],
+ 5: d,
+ 14: u,
+ 16: x,
+ 18: g,
+ 20: f,
+ 21: y,
+ 26: p,
+ 28: q,
+ 29: T,
+ 30: _,
+ 31: m,
+ 32: A,
+ 41: s,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ }),
+ { 35: 50, 36: [1, 51], 44: w },
+ t([36, 44], [2, 36]),
+ t(l, [2, 6]),
+ { 4: 53, 38: a, 39: n, 40: r },
+ t(h, c, {
+ 33: 9,
+ 11: 20,
+ 12: 21,
+ 13: 22,
+ 6: 28,
+ 22: 35,
+ 45: 36,
+ 10: 54,
+ 5: d,
+ 14: u,
+ 16: x,
+ 18: g,
+ 20: f,
+ 21: y,
+ 26: p,
+ 28: q,
+ 29: T,
+ 30: _,
+ 31: m,
+ 32: A,
+ 41: s,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ }),
+ t(h, [2, 10]),
+ t(h, [2, 11]),
+ t(h, [2, 12]),
+ { 15: [1, 55] },
+ { 17: [1, 56] },
+ { 19: [1, 57] },
+ t(h, [2, 16]),
+ t(h, [2, 17]),
+ t(h, [2, 18]),
+ {
+ 22: 58,
+ 45: 36,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ },
+ {
+ 22: 59,
+ 45: 36,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ },
+ {
+ 22: 60,
+ 45: 36,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ },
+ {
+ 22: 61,
+ 45: 36,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ },
+ {
+ 22: 62,
+ 45: 36,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ },
+ {
+ 22: 63,
+ 45: 36,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ },
+ {
+ 5: R,
+ 23: [1, 64],
+ 45: 66,
+ 46: 65,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ },
+ t(N, [2, 39]),
+ t(N, [2, 41]),
+ t(N, [2, 42]),
+ t(N, [2, 45]),
+ t(N, [2, 46]),
+ t(N, [2, 47]),
+ t(N, [2, 48]),
+ t(N, [2, 49]),
+ t(N, [2, 50]),
+ t(N, [2, 51]),
+ t(N, [2, 52]),
+ t(N, [2, 53]),
+ t(N, [2, 54]),
+ t(N, [2, 55]),
+ t(U, [2, 30]),
+ { 37: 69, 43: [1, 70] },
+ t(U, [2, 38]),
+ t(l, [2, 7]),
+ t(h, [2, 9]),
+ t(h, [2, 13]),
+ t(h, [2, 14]),
+ t(h, [2, 15]),
+ t(h, [2, 22], {
+ 46: 65,
+ 45: 66,
+ 5: R,
+ 27: [1, 71],
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ }),
+ t(h, [2, 25], {
+ 46: 65,
+ 45: 66,
+ 5: R,
+ 27: [1, 72],
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ }),
+ t(h, [2, 26], {
+ 46: 65,
+ 45: 66,
+ 5: R,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ }),
+ t(h, [2, 27], {
+ 46: 65,
+ 45: 66,
+ 5: R,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ }),
+ t(h, [2, 28], {
+ 46: 65,
+ 45: 66,
+ 5: R,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ }),
+ t(h, [2, 29], {
+ 46: 65,
+ 45: 66,
+ 5: R,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ }),
+ { 24: [1, 73] },
+ t(N, [2, 40]),
+ t(N, [2, 56]),
+ t(N, [2, 57]),
+ t(N, [2, 58]),
+ { 35: 74, 44: w },
+ { 44: [2, 37] },
+ t(h, [2, 21], {
+ 45: 36,
+ 22: 75,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ }),
+ t(h, [2, 24], {
+ 45: 36,
+ 22: 76,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ }),
+ { 25: [1, 77] },
+ t(U, [2, 31]),
+ t(h, [2, 20], {
+ 46: 65,
+ 45: 66,
+ 5: R,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ }),
+ t(h, [2, 23], {
+ 46: 65,
+ 45: 66,
+ 5: R,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ }),
+ t(h, [2, 19]),
+ ],
+ defaultActions: { 10: [2, 35], 11: [2, 1], 12: [2, 2], 13: [2, 3], 70: [2, 37] },
+ parseError: function (t, i) {
+ if (!i.recoverable) {
+ var e = new Error(t);
+ throw ((e.hash = i), e);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var i = [0],
+ e = [],
+ a = [null],
+ n = [],
+ r = this.table,
+ s = "",
+ l = 0,
+ o = 0,
+ h = n.slice.call(arguments, 1),
+ c = Object.create(this.lexer),
+ d = { yy: {} };
+ for (var u in this.yy) Object.prototype.hasOwnProperty.call(this.yy, u) && (d.yy[u] = this.yy[u]);
+ c.setInput(t, d.yy), (d.yy.lexer = c), (d.yy.parser = this), void 0 === c.yylloc && (c.yylloc = {});
+ var x = c.yylloc;
+ n.push(x);
+ var g = c.options && c.options.ranges;
+ "function" == typeof d.yy.parseError
+ ? (this.parseError = d.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var f, y, p, q, T, _, m, A, b, S = {}; ; ) {
+ if (
+ ((y = i[i.length - 1]),
+ this.defaultActions[y]
+ ? (p = this.defaultActions[y])
+ : (null == f &&
+ ((b = void 0),
+ "number" != typeof (b = e.pop() || c.lex() || 1) &&
+ (b instanceof Array && (b = (e = b).pop()), (b = this.symbols_[b] || b)),
+ (f = b)),
+ (p = r[y] && r[y][f])),
+ void 0 === p || !p.length || !p[0])
+ ) {
+ var k;
+ for (T in ((A = []), r[y])) this.terminals_[T] && T > 2 && A.push("'" + this.terminals_[T] + "'");
+ (k = c.showPosition
+ ? "Parse error on line " +
+ (l + 1) +
+ ":\n" +
+ c.showPosition() +
+ "\nExpecting " +
+ A.join(", ") +
+ ", got '" +
+ (this.terminals_[f] || f) +
+ "'"
+ : "Parse error on line " + (l + 1) + ": Unexpected " + (1 == f ? "end of input" : "'" + (this.terminals_[f] || f) + "'")),
+ this.parseError(k, {
+ text: c.match,
+ token: this.terminals_[f] || f,
+ line: c.yylineno,
+ loc: x,
+ expected: A,
+ });
+ }
+ if (p[0] instanceof Array && p.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + y + ", token: " + f);
+ switch (p[0]) {
+ case 1:
+ i.push(f),
+ a.push(c.yytext),
+ n.push(c.yylloc),
+ i.push(p[1]),
+ (f = null),
+ (o = c.yyleng),
+ (s = c.yytext),
+ (l = c.yylineno),
+ (x = c.yylloc);
+ break;
+ case 2:
+ if (
+ ((_ = this.productions_[p[1]][1]),
+ (S.$ = a[a.length - _]),
+ (S._$ = {
+ first_line: n[n.length - (_ || 1)].first_line,
+ last_line: n[n.length - 1].last_line,
+ first_column: n[n.length - (_ || 1)].first_column,
+ last_column: n[n.length - 1].last_column,
+ }),
+ g && (S._$.range = [n[n.length - (_ || 1)].range[0], n[n.length - 1].range[1]]),
+ void 0 !== (q = this.performAction.apply(S, [s, o, l, d.yy, p[1], a, n].concat(h))))
+ )
+ return q;
+ _ && ((i = i.slice(0, -1 * _ * 2)), (a = a.slice(0, -1 * _)), (n = n.slice(0, -1 * _))),
+ i.push(this.productions_[p[1]][0]),
+ a.push(S.$),
+ n.push(S._$),
+ (m = r[i[i.length - 2]][i[i.length - 1]]),
+ i.push(m);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ H = {
+ EOF: 1,
+ parseError: function (t, i) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, i);
+ },
+ setInput: function (t, i) {
+ return (
+ (this.yy = i || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0,
+ }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var i = t.length,
+ e = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - i)), (this.offset -= i);
+ var a = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ e.length - 1 && (this.yylineno -= e.length - 1);
+ var n = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: e
+ ? (e.length === a.length ? this.yylloc.first_column : 0) + a[a.length - e.length].length - e[0].length
+ : this.yylloc.first_column - i,
+ }),
+ this.options.ranges && (this.yylloc.range = [n[0], n[0] + this.yyleng - i]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ i = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + i + "^";
+ },
+ test_match: function (t, i) {
+ var e, a, n;
+ if (
+ (this.options.backtrack_lexer &&
+ ((n = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (n.yylloc.range = this.yylloc.range.slice(0))),
+ (a = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += a.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: a ? a[a.length - 1].length - a[a.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (e = this.performAction.call(this, this.yy, this, i, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ e)
+ )
+ return e;
+ if (this._backtrack) {
+ for (var r in n) this[r] = n[r];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, i, e, a;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var n = this._currentRules(), r = 0; r < n.length; r++)
+ if ((e = this._input.match(this.rules[n[r]])) && (!i || e[0].length > i[0].length)) {
+ if (((i = e), (a = r), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(e, n[r]))) return t;
+ if (this._backtrack) {
+ i = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return i
+ ? !1 !== (t = this.test_match(i, n[a])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { "case-insensitive": !0 },
+ performAction: function (t, i, e, a) {
+ switch (e) {
+ case 0:
+ return this.begin("open_directive"), 41;
+ case 1:
+ return this.begin("type_directive"), 42;
+ case 2:
+ return this.popState(), this.begin("arg_directive"), 36;
+ case 3:
+ return this.popState(), this.popState(), 44;
+ case 4:
+ return 43;
+ case 5:
+ case 6:
+ case 8:
+ break;
+ case 7:
+ return 38;
+ case 9:
+ return this.begin("title"), 14;
+ case 10:
+ return this.popState(), "title_value";
+ case 11:
+ return this.begin("acc_title"), 16;
+ case 12:
+ return this.popState(), "acc_title_value";
+ case 13:
+ return this.begin("acc_descr"), 18;
+ case 14:
+ return this.popState(), "acc_descr_value";
+ case 15:
+ this.begin("acc_descr_multiline");
+ break;
+ case 16:
+ case 27:
+ case 29:
+ case 33:
+ this.popState();
+ break;
+ case 17:
+ return "acc_descr_multiline_value";
+ case 18:
+ return 26;
+ case 19:
+ return 28;
+ case 20:
+ return 27;
+ case 21:
+ return 29;
+ case 22:
+ return 30;
+ case 23:
+ return 31;
+ case 24:
+ return 32;
+ case 25:
+ this.begin("md_string");
+ break;
+ case 26:
+ return "MD_STR";
+ case 28:
+ this.begin("string");
+ break;
+ case 30:
+ return "STR";
+ case 31:
+ return this.begin("point_start"), 23;
+ case 32:
+ return this.begin("point_x"), 24;
+ case 34:
+ this.popState(), this.begin("point_y");
+ break;
+ case 35:
+ return this.popState(), 25;
+ case 36:
+ return 7;
+ case 37:
+ return 53;
+ case 38:
+ return "COLON";
+ case 39:
+ return 55;
+ case 40:
+ return 54;
+ case 41:
+ case 42:
+ return 56;
+ case 43:
+ return 57;
+ case 44:
+ return 59;
+ case 45:
+ return 60;
+ case 46:
+ return 58;
+ case 47:
+ return 51;
+ case 48:
+ return 61;
+ case 49:
+ return 52;
+ case 50:
+ return 5;
+ case 51:
+ return 39;
+ case 52:
+ return 50;
+ case 53:
+ return 40;
+ }
+ },
+ rules: [
+ /^(?:%%\{)/i,
+ /^(?:((?:(?!\}%%)[^:.])*))/i,
+ /^(?::)/i,
+ /^(?:\}%%)/i,
+ /^(?:((?:(?!\}%%).|\n)*))/i,
+ /^(?:%%(?!\{)[^\n]*)/i,
+ /^(?:[^\}]%%[^\n]*)/i,
+ /^(?:[\n\r]+)/i,
+ /^(?:%%[^\n]*)/i,
+ /^(?:title\b)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accTitle\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*\{\s*)/i,
+ /^(?:[\}])/i,
+ /^(?:[^\}]*)/i,
+ /^(?: *x-axis *)/i,
+ /^(?: *y-axis *)/i,
+ /^(?: *--+> *)/i,
+ /^(?: *quadrant-1 *)/i,
+ /^(?: *quadrant-2 *)/i,
+ /^(?: *quadrant-3 *)/i,
+ /^(?: *quadrant-4 *)/i,
+ /^(?:["][`])/i,
+ /^(?:[^`"]+)/i,
+ /^(?:[`]["])/i,
+ /^(?:["])/i,
+ /^(?:["])/i,
+ /^(?:[^"]*)/i,
+ /^(?:\s*:\s*\[\s*)/i,
+ /^(?:(1)|(0(.\d+)?))/i,
+ /^(?:\s*\] *)/i,
+ /^(?:\s*,\s*)/i,
+ /^(?:(1)|(0(.\d+)?))/i,
+ /^(?: *quadrantChart *)/i,
+ /^(?:[A-Za-z]+)/i,
+ /^(?::)/i,
+ /^(?:\+)/i,
+ /^(?:,)/i,
+ /^(?:=)/i,
+ /^(?:=)/i,
+ /^(?:\*)/i,
+ /^(?:#)/i,
+ /^(?:[\_])/i,
+ /^(?:\.)/i,
+ /^(?:&)/i,
+ /^(?:-)/i,
+ /^(?:[0-9]+)/i,
+ /^(?:\s)/i,
+ /^(?:;)/i,
+ /^(?:[!"#$%&'*+,-.`?\\_/])/i,
+ /^(?:$)/i,
+ ],
+ conditions: {
+ point_y: { rules: [35], inclusive: !1 },
+ point_x: { rules: [34], inclusive: !1 },
+ point_start: { rules: [32, 33], inclusive: !1 },
+ acc_descr_multiline: { rules: [16, 17], inclusive: !1 },
+ acc_descr: { rules: [14], inclusive: !1 },
+ acc_title: { rules: [12], inclusive: !1 },
+ close_directive: { rules: [], inclusive: !1 },
+ arg_directive: { rules: [3, 4], inclusive: !1 },
+ type_directive: { rules: [2, 3], inclusive: !1 },
+ open_directive: { rules: [1], inclusive: !1 },
+ title: { rules: [10], inclusive: !1 },
+ md_string: { rules: [26, 27], inclusive: !1 },
+ string: { rules: [29, 30], inclusive: !1 },
+ INITIAL: {
+ rules: [
+ 0, 5, 6, 7, 8, 9, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 25, 28, 31, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53,
+ ],
+ inclusive: !0,
+ },
+ },
+ };
+ function $() {
+ this.yy = {};
+ }
+ return (Q.lexer = H), ($.prototype = Q), (Q.Parser = $), new $();
+ })());
+ r.parser = r;
+ const s = r,
+ l = (0, a.G)(),
+ o = (0, a.c)();
+ function h(t) {
+ return (0, a.d)(t.trim(), o);
+ }
+ const c = new (class {
+ constructor() {
+ (this.config = this.getDefaultConfig()), (this.themeConfig = this.getDefaultThemeConfig()), (this.data = this.getDefaultData());
+ }
+ getDefaultData() {
+ return {
+ titleText: "",
+ quadrant1Text: "",
+ quadrant2Text: "",
+ quadrant3Text: "",
+ quadrant4Text: "",
+ xAxisLeftText: "",
+ xAxisRightText: "",
+ yAxisBottomText: "",
+ yAxisTopText: "",
+ points: [],
+ };
+ }
+ getDefaultConfig() {
+ var t, i, e, n, r, s, l, o, h, c, d, u, x, g, f, y, p, q;
+ return {
+ showXAxis: !0,
+ showYAxis: !0,
+ showTitle: !0,
+ chartHeight: (null == (t = a.C.quadrantChart) ? void 0 : t.chartWidth) || 500,
+ chartWidth: (null == (i = a.C.quadrantChart) ? void 0 : i.chartHeight) || 500,
+ titlePadding: (null == (e = a.C.quadrantChart) ? void 0 : e.titlePadding) || 10,
+ titleFontSize: (null == (n = a.C.quadrantChart) ? void 0 : n.titleFontSize) || 20,
+ quadrantPadding: (null == (r = a.C.quadrantChart) ? void 0 : r.quadrantPadding) || 5,
+ xAxisLabelPadding: (null == (s = a.C.quadrantChart) ? void 0 : s.xAxisLabelPadding) || 5,
+ yAxisLabelPadding: (null == (l = a.C.quadrantChart) ? void 0 : l.yAxisLabelPadding) || 5,
+ xAxisLabelFontSize: (null == (o = a.C.quadrantChart) ? void 0 : o.xAxisLabelFontSize) || 16,
+ yAxisLabelFontSize: (null == (h = a.C.quadrantChart) ? void 0 : h.yAxisLabelFontSize) || 16,
+ quadrantLabelFontSize: (null == (c = a.C.quadrantChart) ? void 0 : c.quadrantLabelFontSize) || 16,
+ quadrantTextTopPadding: (null == (d = a.C.quadrantChart) ? void 0 : d.quadrantTextTopPadding) || 5,
+ pointTextPadding: (null == (u = a.C.quadrantChart) ? void 0 : u.pointTextPadding) || 5,
+ pointLabelFontSize: (null == (x = a.C.quadrantChart) ? void 0 : x.pointLabelFontSize) || 12,
+ pointRadius: (null == (g = a.C.quadrantChart) ? void 0 : g.pointRadius) || 5,
+ xAxisPosition: (null == (f = a.C.quadrantChart) ? void 0 : f.xAxisPosition) || "top",
+ yAxisPosition: (null == (y = a.C.quadrantChart) ? void 0 : y.yAxisPosition) || "left",
+ quadrantInternalBorderStrokeWidth: (null == (p = a.C.quadrantChart) ? void 0 : p.quadrantInternalBorderStrokeWidth) || 1,
+ quadrantExternalBorderStrokeWidth: (null == (q = a.C.quadrantChart) ? void 0 : q.quadrantExternalBorderStrokeWidth) || 2,
+ };
+ }
+ getDefaultThemeConfig() {
+ return {
+ quadrant1Fill: l.quadrant1Fill,
+ quadrant2Fill: l.quadrant2Fill,
+ quadrant3Fill: l.quadrant3Fill,
+ quadrant4Fill: l.quadrant4Fill,
+ quadrant1TextFill: l.quadrant1TextFill,
+ quadrant2TextFill: l.quadrant2TextFill,
+ quadrant3TextFill: l.quadrant3TextFill,
+ quadrant4TextFill: l.quadrant4TextFill,
+ quadrantPointFill: l.quadrantPointFill,
+ quadrantPointTextFill: l.quadrantPointTextFill,
+ quadrantXAxisTextFill: l.quadrantXAxisTextFill,
+ quadrantYAxisTextFill: l.quadrantYAxisTextFill,
+ quadrantTitleFill: l.quadrantTitleFill,
+ quadrantInternalBorderStrokeFill: l.quadrantInternalBorderStrokeFill,
+ quadrantExternalBorderStrokeFill: l.quadrantExternalBorderStrokeFill,
+ };
+ }
+ clear() {
+ (this.config = this.getDefaultConfig()),
+ (this.themeConfig = this.getDefaultThemeConfig()),
+ (this.data = this.getDefaultData()),
+ a.l.info("clear called");
+ }
+ setData(t) {
+ this.data = { ...this.data, ...t };
+ }
+ addPoints(t) {
+ this.data.points = [...t, ...this.data.points];
+ }
+ setConfig(t) {
+ a.l.trace("setConfig called with: ", t), (this.config = { ...this.config, ...t });
+ }
+ setThemeConfig(t) {
+ a.l.trace("setThemeConfig called with: ", t), (this.themeConfig = { ...this.themeConfig, ...t });
+ }
+ calculateSpace(t, i, e, a) {
+ const n = 2 * this.config.xAxisLabelPadding + this.config.xAxisLabelFontSize,
+ r = { top: "top" === t && i ? n : 0, bottom: "bottom" === t && i ? n : 0 },
+ s = 2 * this.config.yAxisLabelPadding + this.config.yAxisLabelFontSize,
+ l = {
+ left: "left" === this.config.yAxisPosition && e ? s : 0,
+ right: "right" === this.config.yAxisPosition && e ? s : 0,
+ },
+ o = this.config.titleFontSize + 2 * this.config.titlePadding,
+ h = { top: a ? o : 0 },
+ c = this.config.quadrantPadding + l.left,
+ d = this.config.quadrantPadding + r.top + h.top,
+ u = this.config.chartWidth - 2 * this.config.quadrantPadding - l.left - l.right,
+ x = this.config.chartHeight - 2 * this.config.quadrantPadding - r.top - r.bottom - h.top;
+ return {
+ xAxisSpace: r,
+ yAxisSpace: l,
+ titleSpace: h,
+ quadrantSpace: {
+ quadrantLeft: c,
+ quadrantTop: d,
+ quadrantWidth: u,
+ quadrantHalfWidth: u / 2,
+ quadrantHeight: x,
+ quadrantHalfHeight: x / 2,
+ },
+ };
+ }
+ getAxisLabels(t, i, e, a) {
+ const { quadrantSpace: n, titleSpace: r } = a,
+ { quadrantHalfHeight: s, quadrantHeight: l, quadrantLeft: o, quadrantHalfWidth: h, quadrantTop: c, quadrantWidth: d } = n,
+ u = 0 === this.data.points.length,
+ x = [];
+ return (
+ this.data.xAxisLeftText &&
+ i &&
+ x.push({
+ text: this.data.xAxisLeftText,
+ fill: this.themeConfig.quadrantXAxisTextFill,
+ x: o + (u ? h / 2 : 0),
+ y: "top" === t ? this.config.xAxisLabelPadding + r.top : this.config.xAxisLabelPadding + c + l + this.config.quadrantPadding,
+ fontSize: this.config.xAxisLabelFontSize,
+ verticalPos: u ? "center" : "left",
+ horizontalPos: "top",
+ rotation: 0,
+ }),
+ this.data.xAxisRightText &&
+ i &&
+ x.push({
+ text: this.data.xAxisRightText,
+ fill: this.themeConfig.quadrantXAxisTextFill,
+ x: o + h + (u ? h / 2 : 0),
+ y: "top" === t ? this.config.xAxisLabelPadding + r.top : this.config.xAxisLabelPadding + c + l + this.config.quadrantPadding,
+ fontSize: this.config.xAxisLabelFontSize,
+ verticalPos: u ? "center" : "left",
+ horizontalPos: "top",
+ rotation: 0,
+ }),
+ this.data.yAxisBottomText &&
+ e &&
+ x.push({
+ text: this.data.yAxisBottomText,
+ fill: this.themeConfig.quadrantYAxisTextFill,
+ x:
+ "left" === this.config.yAxisPosition
+ ? this.config.yAxisLabelPadding
+ : this.config.yAxisLabelPadding + o + d + this.config.quadrantPadding,
+ y: c + l - (u ? s / 2 : 0),
+ fontSize: this.config.yAxisLabelFontSize,
+ verticalPos: u ? "center" : "left",
+ horizontalPos: "top",
+ rotation: -90,
+ }),
+ this.data.yAxisTopText &&
+ e &&
+ x.push({
+ text: this.data.yAxisTopText,
+ fill: this.themeConfig.quadrantYAxisTextFill,
+ x:
+ "left" === this.config.yAxisPosition
+ ? this.config.yAxisLabelPadding
+ : this.config.yAxisLabelPadding + o + d + this.config.quadrantPadding,
+ y: c + s - (u ? s / 2 : 0),
+ fontSize: this.config.yAxisLabelFontSize,
+ verticalPos: u ? "center" : "left",
+ horizontalPos: "top",
+ rotation: -90,
+ }),
+ x
+ );
+ }
+ getQuadrants(t) {
+ const { quadrantSpace: i } = t,
+ { quadrantHalfHeight: e, quadrantLeft: a, quadrantHalfWidth: n, quadrantTop: r } = i,
+ s = [
+ {
+ text: {
+ text: this.data.quadrant1Text,
+ fill: this.themeConfig.quadrant1TextFill,
+ x: 0,
+ y: 0,
+ fontSize: this.config.quadrantLabelFontSize,
+ verticalPos: "center",
+ horizontalPos: "middle",
+ rotation: 0,
+ },
+ x: a + n,
+ y: r,
+ width: n,
+ height: e,
+ fill: this.themeConfig.quadrant1Fill,
+ },
+ {
+ text: {
+ text: this.data.quadrant2Text,
+ fill: this.themeConfig.quadrant2TextFill,
+ x: 0,
+ y: 0,
+ fontSize: this.config.quadrantLabelFontSize,
+ verticalPos: "center",
+ horizontalPos: "middle",
+ rotation: 0,
+ },
+ x: a,
+ y: r,
+ width: n,
+ height: e,
+ fill: this.themeConfig.quadrant2Fill,
+ },
+ {
+ text: {
+ text: this.data.quadrant3Text,
+ fill: this.themeConfig.quadrant3TextFill,
+ x: 0,
+ y: 0,
+ fontSize: this.config.quadrantLabelFontSize,
+ verticalPos: "center",
+ horizontalPos: "middle",
+ rotation: 0,
+ },
+ x: a,
+ y: r + e,
+ width: n,
+ height: e,
+ fill: this.themeConfig.quadrant3Fill,
+ },
+ {
+ text: {
+ text: this.data.quadrant4Text,
+ fill: this.themeConfig.quadrant4TextFill,
+ x: 0,
+ y: 0,
+ fontSize: this.config.quadrantLabelFontSize,
+ verticalPos: "center",
+ horizontalPos: "middle",
+ rotation: 0,
+ },
+ x: a + n,
+ y: r + e,
+ width: n,
+ height: e,
+ fill: this.themeConfig.quadrant4Fill,
+ },
+ ];
+ for (const t of s)
+ (t.text.x = t.x + t.width / 2),
+ 0 === this.data.points.length
+ ? ((t.text.y = t.y + t.height / 2), (t.text.horizontalPos = "middle"))
+ : ((t.text.y = t.y + this.config.quadrantTextTopPadding), (t.text.horizontalPos = "top"));
+ return s;
+ }
+ getQuadrantPoints(t) {
+ const { quadrantSpace: i } = t,
+ { quadrantHeight: e, quadrantLeft: a, quadrantTop: r, quadrantWidth: s } = i,
+ l = (0, n.BYU)()
+ .domain([0, 1])
+ .range([a, s + a]),
+ o = (0, n.BYU)()
+ .domain([0, 1])
+ .range([e + r, r]);
+ return this.data.points.map((t) => ({
+ x: l(t.x),
+ y: o(t.y),
+ fill: this.themeConfig.quadrantPointFill,
+ radius: this.config.pointRadius,
+ text: {
+ text: t.text,
+ fill: this.themeConfig.quadrantPointTextFill,
+ x: l(t.x),
+ y: o(t.y) + this.config.pointTextPadding,
+ verticalPos: "center",
+ horizontalPos: "top",
+ fontSize: this.config.pointLabelFontSize,
+ rotation: 0,
+ },
+ }));
+ }
+ getBorders(t) {
+ const i = this.config.quadrantExternalBorderStrokeWidth / 2,
+ { quadrantSpace: e } = t,
+ { quadrantHalfHeight: a, quadrantHeight: n, quadrantLeft: r, quadrantHalfWidth: s, quadrantTop: l, quadrantWidth: o } = e;
+ return [
+ {
+ strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,
+ strokeWidth: this.config.quadrantExternalBorderStrokeWidth,
+ x1: r - i,
+ y1: l,
+ x2: r + o + i,
+ y2: l,
+ },
+ {
+ strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,
+ strokeWidth: this.config.quadrantExternalBorderStrokeWidth,
+ x1: r + o,
+ y1: l + i,
+ x2: r + o,
+ y2: l + n - i,
+ },
+ {
+ strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,
+ strokeWidth: this.config.quadrantExternalBorderStrokeWidth,
+ x1: r - i,
+ y1: l + n,
+ x2: r + o + i,
+ y2: l + n,
+ },
+ {
+ strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,
+ strokeWidth: this.config.quadrantExternalBorderStrokeWidth,
+ x1: r,
+ y1: l + i,
+ x2: r,
+ y2: l + n - i,
+ },
+ {
+ strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill,
+ strokeWidth: this.config.quadrantInternalBorderStrokeWidth,
+ x1: r + s,
+ y1: l + i,
+ x2: r + s,
+ y2: l + n - i,
+ },
+ {
+ strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill,
+ strokeWidth: this.config.quadrantInternalBorderStrokeWidth,
+ x1: r + i,
+ y1: l + a,
+ x2: r + o - i,
+ y2: l + a,
+ },
+ ];
+ }
+ getTitle(t) {
+ if (t)
+ return {
+ text: this.data.titleText,
+ fill: this.themeConfig.quadrantTitleFill,
+ fontSize: this.config.titleFontSize,
+ horizontalPos: "top",
+ verticalPos: "center",
+ rotation: 0,
+ y: this.config.titlePadding,
+ x: this.config.chartWidth / 2,
+ };
+ }
+ build() {
+ const t = this.config.showXAxis && !(!this.data.xAxisLeftText && !this.data.xAxisRightText),
+ i = this.config.showYAxis && !(!this.data.yAxisTopText && !this.data.yAxisBottomText),
+ e = this.config.showTitle && !!this.data.titleText,
+ a = this.data.points.length > 0 ? "bottom" : this.config.xAxisPosition,
+ n = this.calculateSpace(a, t, i, e);
+ return {
+ points: this.getQuadrantPoints(n),
+ quadrants: this.getQuadrants(n),
+ axisLabels: this.getAxisLabels(a, t, i, n),
+ borderLines: this.getBorders(n),
+ title: this.getTitle(e),
+ };
+ }
+ })(),
+ d = {
+ parser: s,
+ db: {
+ setWidth: function (t) {
+ c.setConfig({ chartWidth: t });
+ },
+ setHeight: function (t) {
+ c.setConfig({ chartHeight: t });
+ },
+ setQuadrant1Text: function (t) {
+ c.setData({ quadrant1Text: h(t.text) });
+ },
+ setQuadrant2Text: function (t) {
+ c.setData({ quadrant2Text: h(t.text) });
+ },
+ setQuadrant3Text: function (t) {
+ c.setData({ quadrant3Text: h(t.text) });
+ },
+ setQuadrant4Text: function (t) {
+ c.setData({ quadrant4Text: h(t.text) });
+ },
+ setXAxisLeftText: function (t) {
+ c.setData({ xAxisLeftText: h(t.text) });
+ },
+ setXAxisRightText: function (t) {
+ c.setData({ xAxisRightText: h(t.text) });
+ },
+ setYAxisTopText: function (t) {
+ c.setData({ yAxisTopText: h(t.text) });
+ },
+ setYAxisBottomText: function (t) {
+ c.setData({ yAxisBottomText: h(t.text) });
+ },
+ addPoint: function (t, i, e) {
+ c.addPoints([{ x: i, y: e, text: h(t.text) }]);
+ },
+ getQuadrantData: function () {
+ const t = (0, a.c)(),
+ { themeVariables: i, quadrantChart: e } = t;
+ return (
+ e && c.setConfig(e),
+ c.setThemeConfig({
+ quadrant1Fill: i.quadrant1Fill,
+ quadrant2Fill: i.quadrant2Fill,
+ quadrant3Fill: i.quadrant3Fill,
+ quadrant4Fill: i.quadrant4Fill,
+ quadrant1TextFill: i.quadrant1TextFill,
+ quadrant2TextFill: i.quadrant2TextFill,
+ quadrant3TextFill: i.quadrant3TextFill,
+ quadrant4TextFill: i.quadrant4TextFill,
+ quadrantPointFill: i.quadrantPointFill,
+ quadrantPointTextFill: i.quadrantPointTextFill,
+ quadrantXAxisTextFill: i.quadrantXAxisTextFill,
+ quadrantYAxisTextFill: i.quadrantYAxisTextFill,
+ quadrantExternalBorderStrokeFill: i.quadrantExternalBorderStrokeFill,
+ quadrantInternalBorderStrokeFill: i.quadrantInternalBorderStrokeFill,
+ quadrantTitleFill: i.quadrantTitleFill,
+ }),
+ c.setData({ titleText: (0, a.t)() }),
+ c.build()
+ );
+ },
+ parseDirective: function (t, i, e) {
+ a.m.parseDirective(this, t, i, e);
+ },
+ clear: function () {
+ c.clear(), (0, a.v)();
+ },
+ setAccTitle: a.s,
+ getAccTitle: a.g,
+ setDiagramTitle: a.r,
+ getDiagramTitle: a.t,
+ getAccDescription: a.a,
+ setAccDescription: a.b,
+ },
+ renderer: {
+ draw: (t, i, e, r) => {
+ var s, l, o;
+ function h(t) {
+ return "top" === t ? "hanging" : "middle";
+ }
+ function c(t) {
+ return "left" === t ? "start" : "middle";
+ }
+ function d(t) {
+ return `translate(${t.x}, ${t.y}) rotate(${t.rotation || 0})`;
+ }
+ const u = (0, a.c)();
+ a.l.debug("Rendering quadrant chart\n" + t);
+ const x = u.securityLevel;
+ let g;
+ "sandbox" === x && (g = (0, n.Ys)("#i" + i));
+ const f = ("sandbox" === x ? (0, n.Ys)(g.nodes()[0].contentDocument.body) : (0, n.Ys)("body")).select(`[id="${i}"]`),
+ y = f.append("g").attr("class", "main"),
+ p = (null == (s = u.quadrantChart) ? void 0 : s.chartWidth) || 500,
+ q = (null == (l = u.quadrantChart) ? void 0 : l.chartHeight) || 500;
+ (0, a.i)(f, q, p, (null == (o = u.quadrantChart) ? void 0 : o.useMaxWidth) || !0),
+ f.attr("viewBox", "0 0 " + p + " " + q),
+ r.db.setHeight(q),
+ r.db.setWidth(p);
+ const T = r.db.getQuadrantData(),
+ _ = y.append("g").attr("class", "quadrants"),
+ m = y.append("g").attr("class", "border"),
+ A = y.append("g").attr("class", "data-points"),
+ b = y.append("g").attr("class", "labels"),
+ S = y.append("g").attr("class", "title");
+ T.title &&
+ S.append("text")
+ .attr("x", 0)
+ .attr("y", 0)
+ .attr("fill", T.title.fill)
+ .attr("font-size", T.title.fontSize)
+ .attr("dominant-baseline", h(T.title.horizontalPos))
+ .attr("text-anchor", c(T.title.verticalPos))
+ .attr("transform", d(T.title))
+ .text(T.title.text),
+ T.borderLines &&
+ m
+ .selectAll("line")
+ .data(T.borderLines)
+ .enter()
+ .append("line")
+ .attr("x1", (t) => t.x1)
+ .attr("y1", (t) => t.y1)
+ .attr("x2", (t) => t.x2)
+ .attr("y2", (t) => t.y2)
+ .style("stroke", (t) => t.strokeFill)
+ .style("stroke-width", (t) => t.strokeWidth);
+ const k = _.selectAll("g.quadrant").data(T.quadrants).enter().append("g").attr("class", "quadrant");
+ k
+ .append("rect")
+ .attr("x", (t) => t.x)
+ .attr("y", (t) => t.y)
+ .attr("width", (t) => t.width)
+ .attr("height", (t) => t.height)
+ .attr("fill", (t) => t.fill),
+ k
+ .append("text")
+ .attr("x", 0)
+ .attr("y", 0)
+ .attr("fill", (t) => t.text.fill)
+ .attr("font-size", (t) => t.text.fontSize)
+ .attr("dominant-baseline", (t) => h(t.text.horizontalPos))
+ .attr("text-anchor", (t) => c(t.text.verticalPos))
+ .attr("transform", (t) => d(t.text))
+ .text((t) => t.text.text),
+ b
+ .selectAll("g.label")
+ .data(T.axisLabels)
+ .enter()
+ .append("g")
+ .attr("class", "label")
+ .append("text")
+ .attr("x", 0)
+ .attr("y", 0)
+ .text((t) => t.text)
+ .attr("fill", (t) => t.fill)
+ .attr("font-size", (t) => t.fontSize)
+ .attr("dominant-baseline", (t) => h(t.horizontalPos))
+ .attr("text-anchor", (t) => c(t.verticalPos))
+ .attr("transform", (t) => d(t));
+ const v = A.selectAll("g.data-point").data(T.points).enter().append("g").attr("class", "data-point");
+ v
+ .append("circle")
+ .attr("cx", (t) => t.x)
+ .attr("cy", (t) => t.y)
+ .attr("r", (t) => t.radius)
+ .attr("fill", (t) => t.fill),
+ v
+ .append("text")
+ .attr("x", 0)
+ .attr("y", 0)
+ .text((t) => t.text.text)
+ .attr("fill", (t) => t.text.fill)
+ .attr("font-size", (t) => t.text.fontSize)
+ .attr("dominant-baseline", (t) => h(t.text.horizontalPos))
+ .attr("text-anchor", (t) => c(t.text.verticalPos))
+ .attr("transform", (t) => d(t.text));
+ },
+ },
+ styles: () => "",
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/19-86f47ecd.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/19-86f47ecd.chunk.min.js
new file mode 100644
index 000000000..b90763ffa
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/19-86f47ecd.chunk.min.js
@@ -0,0 +1,1503 @@
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [19],
+ {
+ 4019: function (e, t, i) {
+ i.d(t, {
+ diagram: function () {
+ return k;
+ },
+ });
+ var n = i(9339),
+ r = i(7274),
+ s = i(3771),
+ a = i(5625),
+ c =
+ (i(7484),
+ i(7967),
+ i(7856),
+ (function () {
+ var e = function (e, t, i, n) {
+ for (i = i || {}, n = e.length; n--; i[e[n]] = t);
+ return i;
+ },
+ t = [1, 3],
+ i = [1, 5],
+ n = [1, 6],
+ r = [1, 7],
+ s = [1, 8],
+ a = [5, 6, 8, 14, 16, 18, 19, 40, 41, 42, 43, 44, 45, 53, 71, 72],
+ c = [1, 22],
+ l = [2, 13],
+ o = [1, 26],
+ h = [1, 27],
+ u = [1, 28],
+ d = [1, 29],
+ y = [1, 30],
+ p = [1, 31],
+ _ = [1, 24],
+ g = [1, 32],
+ E = [1, 33],
+ R = [1, 36],
+ f = [71, 72],
+ m = [5, 8, 14, 16, 18, 19, 40, 41, 42, 43, 44, 45, 53, 60, 62, 71, 72],
+ I = [1, 56],
+ b = [1, 57],
+ k = [1, 58],
+ S = [1, 59],
+ T = [1, 60],
+ N = [1, 61],
+ v = [1, 62],
+ x = [62, 63],
+ A = [1, 74],
+ q = [1, 70],
+ $ = [1, 71],
+ O = [1, 72],
+ w = [1, 73],
+ C = [1, 75],
+ D = [1, 79],
+ L = [1, 80],
+ F = [1, 77],
+ M = [1, 78],
+ P = [5, 8, 14, 16, 18, 19, 40, 41, 42, 43, 44, 45, 53, 71, 72],
+ V = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ directive: 4,
+ NEWLINE: 5,
+ RD: 6,
+ diagram: 7,
+ EOF: 8,
+ openDirective: 9,
+ typeDirective: 10,
+ closeDirective: 11,
+ ":": 12,
+ argDirective: 13,
+ acc_title: 14,
+ acc_title_value: 15,
+ acc_descr: 16,
+ acc_descr_value: 17,
+ acc_descr_multiline_value: 18,
+ open_directive: 19,
+ type_directive: 20,
+ arg_directive: 21,
+ close_directive: 22,
+ requirementDef: 23,
+ elementDef: 24,
+ relationshipDef: 25,
+ requirementType: 26,
+ requirementName: 27,
+ STRUCT_START: 28,
+ requirementBody: 29,
+ ID: 30,
+ COLONSEP: 31,
+ id: 32,
+ TEXT: 33,
+ text: 34,
+ RISK: 35,
+ riskLevel: 36,
+ VERIFYMTHD: 37,
+ verifyType: 38,
+ STRUCT_STOP: 39,
+ REQUIREMENT: 40,
+ FUNCTIONAL_REQUIREMENT: 41,
+ INTERFACE_REQUIREMENT: 42,
+ PERFORMANCE_REQUIREMENT: 43,
+ PHYSICAL_REQUIREMENT: 44,
+ DESIGN_CONSTRAINT: 45,
+ LOW_RISK: 46,
+ MED_RISK: 47,
+ HIGH_RISK: 48,
+ VERIFY_ANALYSIS: 49,
+ VERIFY_DEMONSTRATION: 50,
+ VERIFY_INSPECTION: 51,
+ VERIFY_TEST: 52,
+ ELEMENT: 53,
+ elementName: 54,
+ elementBody: 55,
+ TYPE: 56,
+ type: 57,
+ DOCREF: 58,
+ ref: 59,
+ END_ARROW_L: 60,
+ relationship: 61,
+ LINE: 62,
+ END_ARROW_R: 63,
+ CONTAINS: 64,
+ COPIES: 65,
+ DERIVES: 66,
+ SATISFIES: 67,
+ VERIFIES: 68,
+ REFINES: 69,
+ TRACES: 70,
+ unqString: 71,
+ qString: 72,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 5: "NEWLINE",
+ 6: "RD",
+ 8: "EOF",
+ 12: ":",
+ 14: "acc_title",
+ 15: "acc_title_value",
+ 16: "acc_descr",
+ 17: "acc_descr_value",
+ 18: "acc_descr_multiline_value",
+ 19: "open_directive",
+ 20: "type_directive",
+ 21: "arg_directive",
+ 22: "close_directive",
+ 28: "STRUCT_START",
+ 30: "ID",
+ 31: "COLONSEP",
+ 33: "TEXT",
+ 35: "RISK",
+ 37: "VERIFYMTHD",
+ 39: "STRUCT_STOP",
+ 40: "REQUIREMENT",
+ 41: "FUNCTIONAL_REQUIREMENT",
+ 42: "INTERFACE_REQUIREMENT",
+ 43: "PERFORMANCE_REQUIREMENT",
+ 44: "PHYSICAL_REQUIREMENT",
+ 45: "DESIGN_CONSTRAINT",
+ 46: "LOW_RISK",
+ 47: "MED_RISK",
+ 48: "HIGH_RISK",
+ 49: "VERIFY_ANALYSIS",
+ 50: "VERIFY_DEMONSTRATION",
+ 51: "VERIFY_INSPECTION",
+ 52: "VERIFY_TEST",
+ 53: "ELEMENT",
+ 56: "TYPE",
+ 58: "DOCREF",
+ 60: "END_ARROW_L",
+ 62: "LINE",
+ 63: "END_ARROW_R",
+ 64: "CONTAINS",
+ 65: "COPIES",
+ 66: "DERIVES",
+ 67: "SATISFIES",
+ 68: "VERIFIES",
+ 69: "REFINES",
+ 70: "TRACES",
+ 71: "unqString",
+ 72: "qString",
+ },
+ productions_: [
+ 0,
+ [3, 3],
+ [3, 2],
+ [3, 4],
+ [4, 3],
+ [4, 5],
+ [4, 2],
+ [4, 2],
+ [4, 1],
+ [9, 1],
+ [10, 1],
+ [13, 1],
+ [11, 1],
+ [7, 0],
+ [7, 2],
+ [7, 2],
+ [7, 2],
+ [7, 2],
+ [7, 2],
+ [23, 5],
+ [29, 5],
+ [29, 5],
+ [29, 5],
+ [29, 5],
+ [29, 2],
+ [29, 1],
+ [26, 1],
+ [26, 1],
+ [26, 1],
+ [26, 1],
+ [26, 1],
+ [26, 1],
+ [36, 1],
+ [36, 1],
+ [36, 1],
+ [38, 1],
+ [38, 1],
+ [38, 1],
+ [38, 1],
+ [24, 5],
+ [55, 5],
+ [55, 5],
+ [55, 2],
+ [55, 1],
+ [25, 5],
+ [25, 5],
+ [61, 1],
+ [61, 1],
+ [61, 1],
+ [61, 1],
+ [61, 1],
+ [61, 1],
+ [61, 1],
+ [27, 1],
+ [27, 1],
+ [32, 1],
+ [32, 1],
+ [34, 1],
+ [34, 1],
+ [54, 1],
+ [54, 1],
+ [57, 1],
+ [57, 1],
+ [59, 1],
+ [59, 1],
+ ],
+ performAction: function (e, t, i, n, r, s, a) {
+ var c = s.length - 1;
+ switch (r) {
+ case 6:
+ (this.$ = s[c].trim()), n.setAccTitle(this.$);
+ break;
+ case 7:
+ case 8:
+ (this.$ = s[c].trim()), n.setAccDescription(this.$);
+ break;
+ case 9:
+ n.parseDirective("%%{", "open_directive");
+ break;
+ case 10:
+ n.parseDirective(s[c], "type_directive");
+ break;
+ case 11:
+ (s[c] = s[c].trim().replace(/'/g, '"')), n.parseDirective(s[c], "arg_directive");
+ break;
+ case 12:
+ n.parseDirective("}%%", "close_directive", "pie");
+ break;
+ case 13:
+ this.$ = [];
+ break;
+ case 19:
+ n.addRequirement(s[c - 3], s[c - 4]);
+ break;
+ case 20:
+ n.setNewReqId(s[c - 2]);
+ break;
+ case 21:
+ n.setNewReqText(s[c - 2]);
+ break;
+ case 22:
+ n.setNewReqRisk(s[c - 2]);
+ break;
+ case 23:
+ n.setNewReqVerifyMethod(s[c - 2]);
+ break;
+ case 26:
+ this.$ = n.RequirementType.REQUIREMENT;
+ break;
+ case 27:
+ this.$ = n.RequirementType.FUNCTIONAL_REQUIREMENT;
+ break;
+ case 28:
+ this.$ = n.RequirementType.INTERFACE_REQUIREMENT;
+ break;
+ case 29:
+ this.$ = n.RequirementType.PERFORMANCE_REQUIREMENT;
+ break;
+ case 30:
+ this.$ = n.RequirementType.PHYSICAL_REQUIREMENT;
+ break;
+ case 31:
+ this.$ = n.RequirementType.DESIGN_CONSTRAINT;
+ break;
+ case 32:
+ this.$ = n.RiskLevel.LOW_RISK;
+ break;
+ case 33:
+ this.$ = n.RiskLevel.MED_RISK;
+ break;
+ case 34:
+ this.$ = n.RiskLevel.HIGH_RISK;
+ break;
+ case 35:
+ this.$ = n.VerifyType.VERIFY_ANALYSIS;
+ break;
+ case 36:
+ this.$ = n.VerifyType.VERIFY_DEMONSTRATION;
+ break;
+ case 37:
+ this.$ = n.VerifyType.VERIFY_INSPECTION;
+ break;
+ case 38:
+ this.$ = n.VerifyType.VERIFY_TEST;
+ break;
+ case 39:
+ n.addElement(s[c - 3]);
+ break;
+ case 40:
+ n.setNewElementType(s[c - 2]);
+ break;
+ case 41:
+ n.setNewElementDocRef(s[c - 2]);
+ break;
+ case 44:
+ n.addRelationship(s[c - 2], s[c], s[c - 4]);
+ break;
+ case 45:
+ n.addRelationship(s[c - 2], s[c - 4], s[c]);
+ break;
+ case 46:
+ this.$ = n.Relationships.CONTAINS;
+ break;
+ case 47:
+ this.$ = n.Relationships.COPIES;
+ break;
+ case 48:
+ this.$ = n.Relationships.DERIVES;
+ break;
+ case 49:
+ this.$ = n.Relationships.SATISFIES;
+ break;
+ case 50:
+ this.$ = n.Relationships.VERIFIES;
+ break;
+ case 51:
+ this.$ = n.Relationships.REFINES;
+ break;
+ case 52:
+ this.$ = n.Relationships.TRACES;
+ }
+ },
+ table: [
+ { 3: 1, 4: 2, 6: t, 9: 4, 14: i, 16: n, 18: r, 19: s },
+ { 1: [3] },
+ { 3: 10, 4: 2, 5: [1, 9], 6: t, 9: 4, 14: i, 16: n, 18: r, 19: s },
+ { 5: [1, 11] },
+ { 10: 12, 20: [1, 13] },
+ { 15: [1, 14] },
+ { 17: [1, 15] },
+ e(a, [2, 8]),
+ { 20: [2, 9] },
+ { 3: 16, 4: 2, 6: t, 9: 4, 14: i, 16: n, 18: r, 19: s },
+ { 1: [2, 2] },
+ {
+ 4: 21,
+ 5: c,
+ 7: 17,
+ 8: l,
+ 9: 4,
+ 14: i,
+ 16: n,
+ 18: r,
+ 19: s,
+ 23: 18,
+ 24: 19,
+ 25: 20,
+ 26: 23,
+ 32: 25,
+ 40: o,
+ 41: h,
+ 42: u,
+ 43: d,
+ 44: y,
+ 45: p,
+ 53: _,
+ 71: g,
+ 72: E,
+ },
+ { 11: 34, 12: [1, 35], 22: R },
+ e([12, 22], [2, 10]),
+ e(a, [2, 6]),
+ e(a, [2, 7]),
+ { 1: [2, 1] },
+ { 8: [1, 37] },
+ {
+ 4: 21,
+ 5: c,
+ 7: 38,
+ 8: l,
+ 9: 4,
+ 14: i,
+ 16: n,
+ 18: r,
+ 19: s,
+ 23: 18,
+ 24: 19,
+ 25: 20,
+ 26: 23,
+ 32: 25,
+ 40: o,
+ 41: h,
+ 42: u,
+ 43: d,
+ 44: y,
+ 45: p,
+ 53: _,
+ 71: g,
+ 72: E,
+ },
+ {
+ 4: 21,
+ 5: c,
+ 7: 39,
+ 8: l,
+ 9: 4,
+ 14: i,
+ 16: n,
+ 18: r,
+ 19: s,
+ 23: 18,
+ 24: 19,
+ 25: 20,
+ 26: 23,
+ 32: 25,
+ 40: o,
+ 41: h,
+ 42: u,
+ 43: d,
+ 44: y,
+ 45: p,
+ 53: _,
+ 71: g,
+ 72: E,
+ },
+ {
+ 4: 21,
+ 5: c,
+ 7: 40,
+ 8: l,
+ 9: 4,
+ 14: i,
+ 16: n,
+ 18: r,
+ 19: s,
+ 23: 18,
+ 24: 19,
+ 25: 20,
+ 26: 23,
+ 32: 25,
+ 40: o,
+ 41: h,
+ 42: u,
+ 43: d,
+ 44: y,
+ 45: p,
+ 53: _,
+ 71: g,
+ 72: E,
+ },
+ {
+ 4: 21,
+ 5: c,
+ 7: 41,
+ 8: l,
+ 9: 4,
+ 14: i,
+ 16: n,
+ 18: r,
+ 19: s,
+ 23: 18,
+ 24: 19,
+ 25: 20,
+ 26: 23,
+ 32: 25,
+ 40: o,
+ 41: h,
+ 42: u,
+ 43: d,
+ 44: y,
+ 45: p,
+ 53: _,
+ 71: g,
+ 72: E,
+ },
+ {
+ 4: 21,
+ 5: c,
+ 7: 42,
+ 8: l,
+ 9: 4,
+ 14: i,
+ 16: n,
+ 18: r,
+ 19: s,
+ 23: 18,
+ 24: 19,
+ 25: 20,
+ 26: 23,
+ 32: 25,
+ 40: o,
+ 41: h,
+ 42: u,
+ 43: d,
+ 44: y,
+ 45: p,
+ 53: _,
+ 71: g,
+ 72: E,
+ },
+ { 27: 43, 71: [1, 44], 72: [1, 45] },
+ { 54: 46, 71: [1, 47], 72: [1, 48] },
+ { 60: [1, 49], 62: [1, 50] },
+ e(f, [2, 26]),
+ e(f, [2, 27]),
+ e(f, [2, 28]),
+ e(f, [2, 29]),
+ e(f, [2, 30]),
+ e(f, [2, 31]),
+ e(m, [2, 55]),
+ e(m, [2, 56]),
+ e(a, [2, 4]),
+ { 13: 51, 21: [1, 52] },
+ e(a, [2, 12]),
+ { 1: [2, 3] },
+ { 8: [2, 14] },
+ { 8: [2, 15] },
+ { 8: [2, 16] },
+ { 8: [2, 17] },
+ { 8: [2, 18] },
+ { 28: [1, 53] },
+ { 28: [2, 53] },
+ { 28: [2, 54] },
+ { 28: [1, 54] },
+ { 28: [2, 59] },
+ { 28: [2, 60] },
+ { 61: 55, 64: I, 65: b, 66: k, 67: S, 68: T, 69: N, 70: v },
+ { 61: 63, 64: I, 65: b, 66: k, 67: S, 68: T, 69: N, 70: v },
+ { 11: 64, 22: R },
+ { 22: [2, 11] },
+ { 5: [1, 65] },
+ { 5: [1, 66] },
+ { 62: [1, 67] },
+ e(x, [2, 46]),
+ e(x, [2, 47]),
+ e(x, [2, 48]),
+ e(x, [2, 49]),
+ e(x, [2, 50]),
+ e(x, [2, 51]),
+ e(x, [2, 52]),
+ { 63: [1, 68] },
+ e(a, [2, 5]),
+ { 5: A, 29: 69, 30: q, 33: $, 35: O, 37: w, 39: C },
+ { 5: D, 39: L, 55: 76, 56: F, 58: M },
+ { 32: 81, 71: g, 72: E },
+ { 32: 82, 71: g, 72: E },
+ e(P, [2, 19]),
+ { 31: [1, 83] },
+ { 31: [1, 84] },
+ { 31: [1, 85] },
+ { 31: [1, 86] },
+ { 5: A, 29: 87, 30: q, 33: $, 35: O, 37: w, 39: C },
+ e(P, [2, 25]),
+ e(P, [2, 39]),
+ { 31: [1, 88] },
+ { 31: [1, 89] },
+ { 5: D, 39: L, 55: 90, 56: F, 58: M },
+ e(P, [2, 43]),
+ e(P, [2, 44]),
+ e(P, [2, 45]),
+ { 32: 91, 71: g, 72: E },
+ { 34: 92, 71: [1, 93], 72: [1, 94] },
+ { 36: 95, 46: [1, 96], 47: [1, 97], 48: [1, 98] },
+ { 38: 99, 49: [1, 100], 50: [1, 101], 51: [1, 102], 52: [1, 103] },
+ e(P, [2, 24]),
+ { 57: 104, 71: [1, 105], 72: [1, 106] },
+ { 59: 107, 71: [1, 108], 72: [1, 109] },
+ e(P, [2, 42]),
+ { 5: [1, 110] },
+ { 5: [1, 111] },
+ { 5: [2, 57] },
+ { 5: [2, 58] },
+ { 5: [1, 112] },
+ { 5: [2, 32] },
+ { 5: [2, 33] },
+ { 5: [2, 34] },
+ { 5: [1, 113] },
+ { 5: [2, 35] },
+ { 5: [2, 36] },
+ { 5: [2, 37] },
+ { 5: [2, 38] },
+ { 5: [1, 114] },
+ { 5: [2, 61] },
+ { 5: [2, 62] },
+ { 5: [1, 115] },
+ { 5: [2, 63] },
+ { 5: [2, 64] },
+ { 5: A, 29: 116, 30: q, 33: $, 35: O, 37: w, 39: C },
+ { 5: A, 29: 117, 30: q, 33: $, 35: O, 37: w, 39: C },
+ { 5: A, 29: 118, 30: q, 33: $, 35: O, 37: w, 39: C },
+ { 5: A, 29: 119, 30: q, 33: $, 35: O, 37: w, 39: C },
+ { 5: D, 39: L, 55: 120, 56: F, 58: M },
+ { 5: D, 39: L, 55: 121, 56: F, 58: M },
+ e(P, [2, 20]),
+ e(P, [2, 21]),
+ e(P, [2, 22]),
+ e(P, [2, 23]),
+ e(P, [2, 40]),
+ e(P, [2, 41]),
+ ],
+ defaultActions: {
+ 8: [2, 9],
+ 10: [2, 2],
+ 16: [2, 1],
+ 37: [2, 3],
+ 38: [2, 14],
+ 39: [2, 15],
+ 40: [2, 16],
+ 41: [2, 17],
+ 42: [2, 18],
+ 44: [2, 53],
+ 45: [2, 54],
+ 47: [2, 59],
+ 48: [2, 60],
+ 52: [2, 11],
+ 93: [2, 57],
+ 94: [2, 58],
+ 96: [2, 32],
+ 97: [2, 33],
+ 98: [2, 34],
+ 100: [2, 35],
+ 101: [2, 36],
+ 102: [2, 37],
+ 103: [2, 38],
+ 105: [2, 61],
+ 106: [2, 62],
+ 108: [2, 63],
+ 109: [2, 64],
+ },
+ parseError: function (e, t) {
+ if (!t.recoverable) {
+ var i = new Error(e);
+ throw ((i.hash = t), i);
+ }
+ this.trace(e);
+ },
+ parse: function (e) {
+ var t = [0],
+ i = [],
+ n = [null],
+ r = [],
+ s = this.table,
+ a = "",
+ c = 0,
+ l = 0,
+ o = r.slice.call(arguments, 1),
+ h = Object.create(this.lexer),
+ u = { yy: {} };
+ for (var d in this.yy) Object.prototype.hasOwnProperty.call(this.yy, d) && (u.yy[d] = this.yy[d]);
+ h.setInput(e, u.yy), (u.yy.lexer = h), (u.yy.parser = this), void 0 === h.yylloc && (h.yylloc = {});
+ var y = h.yylloc;
+ r.push(y);
+ var p = h.options && h.options.ranges;
+ "function" == typeof u.yy.parseError
+ ? (this.parseError = u.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var _, g, E, R, f, m, I, b, k, S = {}; ; ) {
+ if (
+ ((g = t[t.length - 1]),
+ this.defaultActions[g]
+ ? (E = this.defaultActions[g])
+ : (null == _ &&
+ ((k = void 0),
+ "number" != typeof (k = i.pop() || h.lex() || 1) &&
+ (k instanceof Array && (k = (i = k).pop()), (k = this.symbols_[k] || k)),
+ (_ = k)),
+ (E = s[g] && s[g][_])),
+ void 0 === E || !E.length || !E[0])
+ ) {
+ var T;
+ for (f in ((b = []), s[g])) this.terminals_[f] && f > 2 && b.push("'" + this.terminals_[f] + "'");
+ (T = h.showPosition
+ ? "Parse error on line " +
+ (c + 1) +
+ ":\n" +
+ h.showPosition() +
+ "\nExpecting " +
+ b.join(", ") +
+ ", got '" +
+ (this.terminals_[_] || _) +
+ "'"
+ : "Parse error on line " + (c + 1) + ": Unexpected " + (1 == _ ? "end of input" : "'" + (this.terminals_[_] || _) + "'")),
+ this.parseError(T, {
+ text: h.match,
+ token: this.terminals_[_] || _,
+ line: h.yylineno,
+ loc: y,
+ expected: b,
+ });
+ }
+ if (E[0] instanceof Array && E.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + g + ", token: " + _);
+ switch (E[0]) {
+ case 1:
+ t.push(_),
+ n.push(h.yytext),
+ r.push(h.yylloc),
+ t.push(E[1]),
+ (_ = null),
+ (l = h.yyleng),
+ (a = h.yytext),
+ (c = h.yylineno),
+ (y = h.yylloc);
+ break;
+ case 2:
+ if (
+ ((m = this.productions_[E[1]][1]),
+ (S.$ = n[n.length - m]),
+ (S._$ = {
+ first_line: r[r.length - (m || 1)].first_line,
+ last_line: r[r.length - 1].last_line,
+ first_column: r[r.length - (m || 1)].first_column,
+ last_column: r[r.length - 1].last_column,
+ }),
+ p && (S._$.range = [r[r.length - (m || 1)].range[0], r[r.length - 1].range[1]]),
+ void 0 !== (R = this.performAction.apply(S, [a, l, c, u.yy, E[1], n, r].concat(o))))
+ )
+ return R;
+ m && ((t = t.slice(0, -1 * m * 2)), (n = n.slice(0, -1 * m)), (r = r.slice(0, -1 * m))),
+ t.push(this.productions_[E[1]][0]),
+ n.push(S.$),
+ r.push(S._$),
+ (I = s[t[t.length - 2]][t[t.length - 1]]),
+ t.push(I);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ Y = {
+ EOF: 1,
+ parseError: function (e, t) {
+ if (!this.yy.parser) throw new Error(e);
+ this.yy.parser.parseError(e, t);
+ },
+ setInput: function (e, t) {
+ return (
+ (this.yy = t || this.yy || {}),
+ (this._input = e),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0,
+ }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var e = this._input[0];
+ return (
+ (this.yytext += e),
+ this.yyleng++,
+ this.offset++,
+ (this.match += e),
+ (this.matched += e),
+ e.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ e
+ );
+ },
+ unput: function (e) {
+ var t = e.length,
+ i = e.split(/(?:\r\n?|\n)/g);
+ (this._input = e + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - t)), (this.offset -= t);
+ var n = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ i.length - 1 && (this.yylineno -= i.length - 1);
+ var r = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: i
+ ? (i.length === n.length ? this.yylloc.first_column : 0) + n[n.length - i.length].length - i[0].length
+ : this.yylloc.first_column - t,
+ }),
+ this.options.ranges && (this.yylloc.range = [r[0], r[0] + this.yyleng - t]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (e) {
+ this.unput(this.match.slice(e));
+ },
+ pastInput: function () {
+ var e = this.matched.substr(0, this.matched.length - this.match.length);
+ return (e.length > 20 ? "..." : "") + e.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var e = this.match;
+ return (
+ e.length < 20 && (e += this._input.substr(0, 20 - e.length)), (e.substr(0, 20) + (e.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var e = this.pastInput(),
+ t = new Array(e.length + 1).join("-");
+ return e + this.upcomingInput() + "\n" + t + "^";
+ },
+ test_match: function (e, t) {
+ var i, n, r;
+ if (
+ (this.options.backtrack_lexer &&
+ ((r = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (r.yylloc.range = this.yylloc.range.slice(0))),
+ (n = e[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += n.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: n ? n[n.length - 1].length - n[n.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + e[0].length,
+ }),
+ (this.yytext += e[0]),
+ (this.match += e[0]),
+ (this.matches = e),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(e[0].length)),
+ (this.matched += e[0]),
+ (i = this.performAction.call(this, this.yy, this, t, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ i)
+ )
+ return i;
+ if (this._backtrack) {
+ for (var s in r) this[s] = r[s];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var e, t, i, n;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var r = this._currentRules(), s = 0; s < r.length; s++)
+ if ((i = this._input.match(this.rules[r[s]])) && (!t || i[0].length > t[0].length)) {
+ if (((t = i), (n = s), this.options.backtrack_lexer)) {
+ if (!1 !== (e = this.test_match(i, r[s]))) return e;
+ if (this._backtrack) {
+ t = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return t
+ ? !1 !== (e = this.test_match(t, r[n])) && e
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (e) {
+ this.conditionStack.push(e);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (e) {
+ return (e = this.conditionStack.length - 1 - Math.abs(e || 0)) >= 0 ? this.conditionStack[e] : "INITIAL";
+ },
+ pushState: function (e) {
+ this.begin(e);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { "case-insensitive": !0 },
+ performAction: function (e, t, i, n) {
+ switch (i) {
+ case 0:
+ return this.begin("open_directive"), 19;
+ case 1:
+ return this.begin("type_directive"), 20;
+ case 2:
+ return this.popState(), this.begin("arg_directive"), 12;
+ case 3:
+ return this.popState(), this.popState(), 22;
+ case 4:
+ return 21;
+ case 5:
+ return "title";
+ case 6:
+ return this.begin("acc_title"), 14;
+ case 7:
+ return this.popState(), "acc_title_value";
+ case 8:
+ return this.begin("acc_descr"), 16;
+ case 9:
+ return this.popState(), "acc_descr_value";
+ case 10:
+ this.begin("acc_descr_multiline");
+ break;
+ case 11:
+ case 53:
+ this.popState();
+ break;
+ case 12:
+ return "acc_descr_multiline_value";
+ case 13:
+ return 5;
+ case 14:
+ case 15:
+ case 16:
+ break;
+ case 17:
+ return 8;
+ case 18:
+ return 6;
+ case 19:
+ return 28;
+ case 20:
+ return 39;
+ case 21:
+ return 31;
+ case 22:
+ return 30;
+ case 23:
+ return 33;
+ case 24:
+ return 35;
+ case 25:
+ return 37;
+ case 26:
+ return 40;
+ case 27:
+ return 41;
+ case 28:
+ return 42;
+ case 29:
+ return 43;
+ case 30:
+ return 44;
+ case 31:
+ return 45;
+ case 32:
+ return 46;
+ case 33:
+ return 47;
+ case 34:
+ return 48;
+ case 35:
+ return 49;
+ case 36:
+ return 50;
+ case 37:
+ return 51;
+ case 38:
+ return 52;
+ case 39:
+ return 53;
+ case 40:
+ return 64;
+ case 41:
+ return 65;
+ case 42:
+ return 66;
+ case 43:
+ return 67;
+ case 44:
+ return 68;
+ case 45:
+ return 69;
+ case 46:
+ return 70;
+ case 47:
+ return 56;
+ case 48:
+ return 58;
+ case 49:
+ return 60;
+ case 50:
+ return 63;
+ case 51:
+ return 62;
+ case 52:
+ this.begin("string");
+ break;
+ case 54:
+ return "qString";
+ case 55:
+ return (t.yytext = t.yytext.trim()), 71;
+ }
+ },
+ rules: [
+ /^(?:%%\{)/i,
+ /^(?:((?:(?!\}%%)[^:.])*))/i,
+ /^(?::)/i,
+ /^(?:\}%%)/i,
+ /^(?:((?:(?!\}%%).|\n)*))/i,
+ /^(?:title\s[^#\n;]+)/i,
+ /^(?:accTitle\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*\{\s*)/i,
+ /^(?:[\}])/i,
+ /^(?:[^\}]*)/i,
+ /^(?:(\r?\n)+)/i,
+ /^(?:\s+)/i,
+ /^(?:#[^\n]*)/i,
+ /^(?:%[^\n]*)/i,
+ /^(?:$)/i,
+ /^(?:requirementDiagram\b)/i,
+ /^(?:\{)/i,
+ /^(?:\})/i,
+ /^(?::)/i,
+ /^(?:id\b)/i,
+ /^(?:text\b)/i,
+ /^(?:risk\b)/i,
+ /^(?:verifyMethod\b)/i,
+ /^(?:requirement\b)/i,
+ /^(?:functionalRequirement\b)/i,
+ /^(?:interfaceRequirement\b)/i,
+ /^(?:performanceRequirement\b)/i,
+ /^(?:physicalRequirement\b)/i,
+ /^(?:designConstraint\b)/i,
+ /^(?:low\b)/i,
+ /^(?:medium\b)/i,
+ /^(?:high\b)/i,
+ /^(?:analysis\b)/i,
+ /^(?:demonstration\b)/i,
+ /^(?:inspection\b)/i,
+ /^(?:test\b)/i,
+ /^(?:element\b)/i,
+ /^(?:contains\b)/i,
+ /^(?:copies\b)/i,
+ /^(?:derives\b)/i,
+ /^(?:satisfies\b)/i,
+ /^(?:verifies\b)/i,
+ /^(?:refines\b)/i,
+ /^(?:traces\b)/i,
+ /^(?:type\b)/i,
+ /^(?:docref\b)/i,
+ /^(?:<-)/i,
+ /^(?:->)/i,
+ /^(?:-)/i,
+ /^(?:["])/i,
+ /^(?:["])/i,
+ /^(?:[^"]*)/i,
+ /^(?:[\w][^\r\n\{\<\>\-\=]*)/i,
+ ],
+ conditions: {
+ acc_descr_multiline: { rules: [11, 12], inclusive: !1 },
+ acc_descr: { rules: [9], inclusive: !1 },
+ acc_title: { rules: [7], inclusive: !1 },
+ close_directive: { rules: [], inclusive: !1 },
+ arg_directive: { rules: [3, 4], inclusive: !1 },
+ type_directive: { rules: [2, 3], inclusive: !1 },
+ open_directive: { rules: [1], inclusive: !1 },
+ unqString: { rules: [], inclusive: !1 },
+ token: { rules: [], inclusive: !1 },
+ string: { rules: [53, 54], inclusive: !1 },
+ INITIAL: {
+ rules: [
+ 0, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55,
+ ],
+ inclusive: !0,
+ },
+ },
+ };
+ function U() {
+ this.yy = {};
+ }
+ return (V.lexer = Y), (U.prototype = V), (V.Parser = U), new U();
+ })());
+ c.parser = c;
+ const l = c;
+ let o = [],
+ h = {},
+ u = {},
+ d = {},
+ y = {};
+ const p = {
+ RequirementType: {
+ REQUIREMENT: "Requirement",
+ FUNCTIONAL_REQUIREMENT: "Functional Requirement",
+ INTERFACE_REQUIREMENT: "Interface Requirement",
+ PERFORMANCE_REQUIREMENT: "Performance Requirement",
+ PHYSICAL_REQUIREMENT: "Physical Requirement",
+ DESIGN_CONSTRAINT: "Design Constraint",
+ },
+ RiskLevel: { LOW_RISK: "Low", MED_RISK: "Medium", HIGH_RISK: "High" },
+ VerifyType: {
+ VERIFY_ANALYSIS: "Analysis",
+ VERIFY_DEMONSTRATION: "Demonstration",
+ VERIFY_INSPECTION: "Inspection",
+ VERIFY_TEST: "Test",
+ },
+ Relationships: {
+ CONTAINS: "contains",
+ COPIES: "copies",
+ DERIVES: "derives",
+ SATISFIES: "satisfies",
+ VERIFIES: "verifies",
+ REFINES: "refines",
+ TRACES: "traces",
+ },
+ parseDirective: function (e, t, i) {
+ n.m.parseDirective(this, e, t, i);
+ },
+ getConfig: () => (0, n.c)().req,
+ addRequirement: (e, t) => (
+ void 0 === u[e] &&
+ (u[e] = {
+ name: e,
+ type: t,
+ id: h.id,
+ text: h.text,
+ risk: h.risk,
+ verifyMethod: h.verifyMethod,
+ }),
+ (h = {}),
+ u[e]
+ ),
+ getRequirements: () => u,
+ setNewReqId: (e) => {
+ void 0 !== h && (h.id = e);
+ },
+ setNewReqText: (e) => {
+ void 0 !== h && (h.text = e);
+ },
+ setNewReqRisk: (e) => {
+ void 0 !== h && (h.risk = e);
+ },
+ setNewReqVerifyMethod: (e) => {
+ void 0 !== h && (h.verifyMethod = e);
+ },
+ setAccTitle: n.s,
+ getAccTitle: n.g,
+ setAccDescription: n.b,
+ getAccDescription: n.a,
+ addElement: (e) => (
+ void 0 === y[e] && ((y[e] = { name: e, type: d.type, docRef: d.docRef }), n.l.info("Added new requirement: ", e)), (d = {}), y[e]
+ ),
+ getElements: () => y,
+ setNewElementType: (e) => {
+ void 0 !== d && (d.type = e);
+ },
+ setNewElementDocRef: (e) => {
+ void 0 !== d && (d.docRef = e);
+ },
+ addRelationship: (e, t, i) => {
+ o.push({ type: e, src: t, dst: i });
+ },
+ getRelationships: () => o,
+ clear: () => {
+ (o = []), (h = {}), (u = {}), (d = {}), (y = {}), (0, n.v)();
+ },
+ },
+ _ = { CONTAINS: "contains", ARROW: "arrow" },
+ g = _;
+ let E = {},
+ R = 0;
+ const f = (e, t) =>
+ e
+ .insert("rect", "#" + t)
+ .attr("class", "req reqBox")
+ .attr("x", 0)
+ .attr("y", 0)
+ .attr("width", E.rect_min_width + "px")
+ .attr("height", E.rect_min_height + "px"),
+ m = (e, t, i) => {
+ let n = E.rect_min_width / 2,
+ r = e
+ .append("text")
+ .attr("class", "req reqLabel reqTitle")
+ .attr("id", t)
+ .attr("x", n)
+ .attr("y", E.rect_padding)
+ .attr("dominant-baseline", "hanging"),
+ s = 0;
+ i.forEach((e) => {
+ 0 == s
+ ? r
+ .append("tspan")
+ .attr("text-anchor", "middle")
+ .attr("x", E.rect_min_width / 2)
+ .attr("dy", 0)
+ .text(e)
+ : r
+ .append("tspan")
+ .attr("text-anchor", "middle")
+ .attr("x", E.rect_min_width / 2)
+ .attr("dy", 0.75 * E.line_height)
+ .text(e),
+ s++;
+ });
+ let a = 1.5 * E.rect_padding + s * E.line_height * 0.75;
+ return (
+ e.append("line").attr("class", "req-title-line").attr("x1", "0").attr("x2", E.rect_min_width).attr("y1", a).attr("y2", a),
+ { titleNode: r, y: a }
+ );
+ },
+ I = (e, t, i, n) => {
+ let r = e
+ .append("text")
+ .attr("class", "req reqLabel")
+ .attr("id", t)
+ .attr("x", E.rect_padding)
+ .attr("y", n)
+ .attr("dominant-baseline", "hanging"),
+ s = 0,
+ a = [];
+ return (
+ i.forEach((e) => {
+ let t = e.length;
+ for (; t > 30 && s < 3; ) {
+ let i = e.substring(0, 30);
+ (t = (e = e.substring(30, e.length)).length), (a[a.length] = i), s++;
+ }
+ if (3 == s) {
+ let e = a[a.length - 1];
+ a[a.length - 1] = e.substring(0, e.length - 4) + "...";
+ } else a[a.length] = e;
+ s = 0;
+ }),
+ a.forEach((e) => {
+ r.append("tspan").attr("x", E.rect_padding).attr("dy", E.line_height).text(e);
+ }),
+ r
+ );
+ },
+ b = (e) => e.replace(/\s/g, "").replace(/\./g, "_"),
+ k = {
+ parser: l,
+ db: p,
+ renderer: {
+ draw: (e, t, i, c) => {
+ E = (0, n.c)().requirement;
+ const l = E.securityLevel;
+ let o;
+ "sandbox" === l && (o = (0, r.Ys)("#i" + t));
+ const h = ("sandbox" === l ? (0, r.Ys)(o.nodes()[0].contentDocument.body) : (0, r.Ys)("body")).select(`[id='${t}']`);
+ ((e, t) => {
+ let i = e
+ .append("defs")
+ .append("marker")
+ .attr("id", _.CONTAINS + "_line_ending")
+ .attr("refX", 0)
+ .attr("refY", t.line_height / 2)
+ .attr("markerWidth", t.line_height)
+ .attr("markerHeight", t.line_height)
+ .attr("orient", "auto")
+ .append("g");
+ i
+ .append("circle")
+ .attr("cx", t.line_height / 2)
+ .attr("cy", t.line_height / 2)
+ .attr("r", t.line_height / 2)
+ .attr("fill", "none"),
+ i
+ .append("line")
+ .attr("x1", 0)
+ .attr("x2", t.line_height)
+ .attr("y1", t.line_height / 2)
+ .attr("y2", t.line_height / 2)
+ .attr("stroke-width", 1),
+ i
+ .append("line")
+ .attr("y1", 0)
+ .attr("y2", t.line_height)
+ .attr("x1", t.line_height / 2)
+ .attr("x2", t.line_height / 2)
+ .attr("stroke-width", 1),
+ e
+ .append("defs")
+ .append("marker")
+ .attr("id", _.ARROW + "_line_ending")
+ .attr("refX", t.line_height)
+ .attr("refY", 0.5 * t.line_height)
+ .attr("markerWidth", t.line_height)
+ .attr("markerHeight", t.line_height)
+ .attr("orient", "auto")
+ .append("path")
+ .attr(
+ "d",
+ `M0,0\n L${t.line_height},${t.line_height / 2}\n M${t.line_height},${t.line_height / 2}\n L0,${t.line_height}`,
+ )
+ .attr("stroke-width", 1);
+ })(h, E);
+ const u = new a.k({ multigraph: !1, compound: !1, directed: !0 })
+ .setGraph({
+ rankdir: E.layoutDirection,
+ marginx: 20,
+ marginy: 20,
+ nodesep: 100,
+ edgesep: 100,
+ ranksep: 100,
+ })
+ .setDefaultEdgeLabel(function () {
+ return {};
+ });
+ let d = c.db.getRequirements(),
+ y = c.db.getElements(),
+ p = c.db.getRelationships();
+ var k, S, T;
+ (k = d),
+ (S = u),
+ (T = h),
+ Object.keys(k).forEach((e) => {
+ let t = k[e];
+ (e = b(e)), n.l.info("Added new requirement: ", e);
+ const i = T.append("g").attr("id", e),
+ r = f(i, "req-" + e);
+ let s = m(i, e + "_title", [`<<${t.type}>>`, `${t.name}`]);
+ I(i, e + "_body", [`Id: ${t.id}`, `Text: ${t.text}`, `Risk: ${t.risk}`, `Verification: ${t.verifyMethod}`], s.y);
+ const a = r.node().getBBox();
+ S.setNode(e, { width: a.width, height: a.height, shape: "rect", id: e });
+ }),
+ ((e, t, i) => {
+ Object.keys(e).forEach((n) => {
+ let r = e[n];
+ const s = b(n),
+ a = i.append("g").attr("id", s),
+ c = "element-" + s,
+ l = f(a, c);
+ let o = m(a, c + "_title", ["<>", `${n}`]);
+ I(a, c + "_body", [`Type: ${r.type || "Not Specified"}`, `Doc Ref: ${r.docRef || "None"}`], o.y);
+ const h = l.node().getBBox();
+ t.setNode(s, { width: h.width, height: h.height, shape: "rect", id: s });
+ });
+ })(y, u, h),
+ ((e, t) => {
+ e.forEach(function (e) {
+ let i = b(e.src),
+ n = b(e.dst);
+ t.setEdge(i, n, { relationship: e });
+ });
+ })(p, u),
+ (0, s.bK)(u),
+ (function (e, t) {
+ t.nodes().forEach(function (i) {
+ void 0 !== i &&
+ void 0 !== t.node(i) &&
+ (e.select("#" + i),
+ e
+ .select("#" + i)
+ .attr("transform", "translate(" + (t.node(i).x - t.node(i).width / 2) + "," + (t.node(i).y - t.node(i).height / 2) + " )"));
+ });
+ })(h, u),
+ p.forEach(function (e) {
+ !(function (e, t, i, s, a) {
+ const c = i.edge(b(t.src), b(t.dst)),
+ l = (0, r.jvg)()
+ .x(function (e) {
+ return e.x;
+ })
+ .y(function (e) {
+ return e.y;
+ }),
+ o = e
+ .insert("path", "#" + s)
+ .attr("class", "er relationshipLine")
+ .attr("d", l(c.points))
+ .attr("fill", "none");
+ t.type == a.db.Relationships.CONTAINS
+ ? o.attr("marker-start", "url(" + n.e.getUrl(E.arrowMarkerAbsolute) + "#" + t.type + "_line_ending)")
+ : (o.attr("stroke-dasharray", "10,7"),
+ o.attr("marker-end", "url(" + n.e.getUrl(E.arrowMarkerAbsolute) + "#" + g.ARROW + "_line_ending)")),
+ ((e, t, i, n) => {
+ const r = t.node().getTotalLength(),
+ s = t.node().getPointAtLength(0.5 * r),
+ a = "rel" + R;
+ R++;
+ const c = e
+ .append("text")
+ .attr("class", "req relationshipLabel")
+ .attr("id", a)
+ .attr("x", s.x)
+ .attr("y", s.y)
+ .attr("text-anchor", "middle")
+ .attr("dominant-baseline", "middle")
+ .text(n)
+ .node()
+ .getBBox();
+ e.insert("rect", "#" + a)
+ .attr("class", "req reqLabelBox")
+ .attr("x", s.x - c.width / 2)
+ .attr("y", s.y - c.height / 2)
+ .attr("width", c.width)
+ .attr("height", c.height)
+ .attr("fill", "white")
+ .attr("fill-opacity", "85%");
+ })(e, o, 0, `<<${t.type}>>`);
+ })(h, e, u, t, c);
+ });
+ const N = E.rect_padding,
+ v = h.node().getBBox(),
+ x = v.width + 2 * N,
+ A = v.height + 2 * N;
+ (0, n.i)(h, A, x, E.useMaxWidth), h.attr("viewBox", `${v.x - N} ${v.y - N} ${x} ${A}`);
+ },
+ },
+ styles: (e) =>
+ `\n\n marker {\n fill: ${e.relationColor};\n stroke: ${e.relationColor};\n }\n\n marker.cross {\n stroke: ${e.lineColor};\n }\n\n svg {\n font-family: ${e.fontFamily};\n font-size: ${e.fontSize};\n }\n\n .reqBox {\n fill: ${e.requirementBackground};\n fill-opacity: 1.0;\n stroke: ${e.requirementBorderColor};\n stroke-width: ${e.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${e.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${e.relationLabelBackground};\n fill-opacity: 1.0;\n }\n\n .req-title-line {\n stroke: ${e.requirementBorderColor};\n stroke-width: ${e.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${e.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${e.relationLabelColor};\n }\n\n`,
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/361-f7cd601a.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/361-f7cd601a.chunk.min.js
new file mode 100644
index 000000000..a623bb503
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/361-f7cd601a.chunk.min.js
@@ -0,0 +1,3736 @@
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [361],
+ {
+ 5510: function (t, e, a) {
+ a.d(e, {
+ diagram: function () {
+ return mt;
+ },
+ });
+ var i = a(9339),
+ r = a(7274),
+ s = a(8252),
+ n = a(7967),
+ o =
+ (a(7484),
+ a(7856),
+ (function () {
+ var t = function (t, e, a, i) {
+ for (a = a || {}, i = t.length; i--; a[t[i]] = e);
+ return a;
+ },
+ e = [1, 2],
+ a = [1, 3],
+ i = [1, 5],
+ r = [1, 7],
+ s = [2, 5],
+ n = [1, 15],
+ o = [1, 17],
+ c = [1, 19],
+ l = [1, 20],
+ h = [1, 22],
+ d = [1, 23],
+ p = [1, 24],
+ g = [1, 30],
+ u = [1, 31],
+ x = [1, 32],
+ y = [1, 33],
+ m = [1, 34],
+ f = [1, 35],
+ b = [1, 36],
+ T = [1, 37],
+ E = [1, 38],
+ w = [1, 39],
+ _ = [1, 40],
+ v = [1, 41],
+ P = [1, 42],
+ k = [1, 44],
+ L = [1, 45],
+ I = [1, 46],
+ M = [1, 48],
+ N = [1, 49],
+ A = [1, 50],
+ S = [1, 51],
+ O = [1, 52],
+ D = [1, 53],
+ R = [1, 56],
+ Y = [
+ 1, 4, 5, 19, 20, 22, 24, 27, 29, 35, 36, 37, 39, 41, 42, 43, 44, 45, 47, 49, 50, 52, 53, 54, 55, 56, 58, 59, 60, 65, 66, 67, 68, 76,
+ 86,
+ ],
+ $ = [4, 5, 22, 56, 58, 59],
+ C = [4, 5, 19, 20, 22, 24, 27, 29, 35, 36, 37, 39, 41, 42, 43, 44, 45, 47, 49, 50, 52, 56, 58, 59, 60, 65, 66, 67, 68, 76, 86],
+ V = [4, 5, 19, 20, 22, 24, 27, 29, 35, 36, 37, 39, 41, 42, 43, 44, 45, 47, 49, 50, 52, 55, 56, 58, 59, 60, 65, 66, 67, 68, 76, 86],
+ B = [4, 5, 19, 20, 22, 24, 27, 29, 35, 36, 37, 39, 41, 42, 43, 44, 45, 47, 49, 50, 52, 54, 56, 58, 59, 60, 65, 66, 67, 68, 76, 86],
+ F = [4, 5, 19, 20, 22, 24, 27, 29, 35, 36, 37, 39, 41, 42, 43, 44, 45, 47, 49, 50, 52, 53, 56, 58, 59, 60, 65, 66, 67, 68, 76, 86],
+ W = [74, 75, 76],
+ q = [1, 133],
+ z = [
+ 1, 4, 5, 7, 19, 20, 22, 24, 27, 29, 35, 36, 37, 39, 41, 42, 43, 44, 45, 47, 49, 50, 52, 53, 54, 55, 56, 58, 59, 60, 65, 66, 67, 68,
+ 76, 86,
+ ],
+ H = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ SPACE: 4,
+ NEWLINE: 5,
+ directive: 6,
+ SD: 7,
+ document: 8,
+ line: 9,
+ statement: 10,
+ box_section: 11,
+ box_line: 12,
+ participant_statement: 13,
+ openDirective: 14,
+ typeDirective: 15,
+ closeDirective: 16,
+ ":": 17,
+ argDirective: 18,
+ create: 19,
+ box: 20,
+ restOfLine: 21,
+ end: 22,
+ signal: 23,
+ autonumber: 24,
+ NUM: 25,
+ off: 26,
+ activate: 27,
+ actor: 28,
+ deactivate: 29,
+ note_statement: 30,
+ links_statement: 31,
+ link_statement: 32,
+ properties_statement: 33,
+ details_statement: 34,
+ title: 35,
+ legacy_title: 36,
+ acc_title: 37,
+ acc_title_value: 38,
+ acc_descr: 39,
+ acc_descr_value: 40,
+ acc_descr_multiline_value: 41,
+ loop: 42,
+ rect: 43,
+ opt: 44,
+ alt: 45,
+ else_sections: 46,
+ par: 47,
+ par_sections: 48,
+ par_over: 49,
+ critical: 50,
+ option_sections: 51,
+ break: 52,
+ option: 53,
+ and: 54,
+ else: 55,
+ participant: 56,
+ AS: 57,
+ participant_actor: 58,
+ destroy: 59,
+ note: 60,
+ placement: 61,
+ text2: 62,
+ over: 63,
+ actor_pair: 64,
+ links: 65,
+ link: 66,
+ properties: 67,
+ details: 68,
+ spaceList: 69,
+ ",": 70,
+ left_of: 71,
+ right_of: 72,
+ signaltype: 73,
+ "+": 74,
+ "-": 75,
+ ACTOR: 76,
+ SOLID_OPEN_ARROW: 77,
+ DOTTED_OPEN_ARROW: 78,
+ SOLID_ARROW: 79,
+ DOTTED_ARROW: 80,
+ SOLID_CROSS: 81,
+ DOTTED_CROSS: 82,
+ SOLID_POINT: 83,
+ DOTTED_POINT: 84,
+ TXT: 85,
+ open_directive: 86,
+ type_directive: 87,
+ arg_directive: 88,
+ close_directive: 89,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 4: "SPACE",
+ 5: "NEWLINE",
+ 7: "SD",
+ 17: ":",
+ 19: "create",
+ 20: "box",
+ 21: "restOfLine",
+ 22: "end",
+ 24: "autonumber",
+ 25: "NUM",
+ 26: "off",
+ 27: "activate",
+ 29: "deactivate",
+ 35: "title",
+ 36: "legacy_title",
+ 37: "acc_title",
+ 38: "acc_title_value",
+ 39: "acc_descr",
+ 40: "acc_descr_value",
+ 41: "acc_descr_multiline_value",
+ 42: "loop",
+ 43: "rect",
+ 44: "opt",
+ 45: "alt",
+ 47: "par",
+ 49: "par_over",
+ 50: "critical",
+ 52: "break",
+ 53: "option",
+ 54: "and",
+ 55: "else",
+ 56: "participant",
+ 57: "AS",
+ 58: "participant_actor",
+ 59: "destroy",
+ 60: "note",
+ 63: "over",
+ 65: "links",
+ 66: "link",
+ 67: "properties",
+ 68: "details",
+ 70: ",",
+ 71: "left_of",
+ 72: "right_of",
+ 74: "+",
+ 75: "-",
+ 76: "ACTOR",
+ 77: "SOLID_OPEN_ARROW",
+ 78: "DOTTED_OPEN_ARROW",
+ 79: "SOLID_ARROW",
+ 80: "DOTTED_ARROW",
+ 81: "SOLID_CROSS",
+ 82: "DOTTED_CROSS",
+ 83: "SOLID_POINT",
+ 84: "DOTTED_POINT",
+ 85: "TXT",
+ 86: "open_directive",
+ 87: "type_directive",
+ 88: "arg_directive",
+ 89: "close_directive",
+ },
+ productions_: [
+ 0,
+ [3, 2],
+ [3, 2],
+ [3, 2],
+ [3, 2],
+ [8, 0],
+ [8, 2],
+ [9, 2],
+ [9, 1],
+ [9, 1],
+ [11, 0],
+ [11, 2],
+ [12, 2],
+ [12, 1],
+ [12, 1],
+ [6, 4],
+ [6, 6],
+ [10, 1],
+ [10, 2],
+ [10, 4],
+ [10, 2],
+ [10, 4],
+ [10, 3],
+ [10, 3],
+ [10, 2],
+ [10, 3],
+ [10, 3],
+ [10, 2],
+ [10, 2],
+ [10, 2],
+ [10, 2],
+ [10, 2],
+ [10, 1],
+ [10, 1],
+ [10, 2],
+ [10, 2],
+ [10, 1],
+ [10, 4],
+ [10, 4],
+ [10, 4],
+ [10, 4],
+ [10, 4],
+ [10, 4],
+ [10, 4],
+ [10, 4],
+ [10, 1],
+ [51, 1],
+ [51, 4],
+ [48, 1],
+ [48, 4],
+ [46, 1],
+ [46, 4],
+ [13, 5],
+ [13, 3],
+ [13, 5],
+ [13, 3],
+ [13, 3],
+ [30, 4],
+ [30, 4],
+ [31, 3],
+ [32, 3],
+ [33, 3],
+ [34, 3],
+ [69, 2],
+ [69, 1],
+ [64, 3],
+ [64, 1],
+ [61, 1],
+ [61, 1],
+ [23, 5],
+ [23, 5],
+ [23, 4],
+ [28, 1],
+ [73, 1],
+ [73, 1],
+ [73, 1],
+ [73, 1],
+ [73, 1],
+ [73, 1],
+ [73, 1],
+ [73, 1],
+ [62, 1],
+ [14, 1],
+ [15, 1],
+ [18, 1],
+ [16, 1],
+ ],
+ performAction: function (t, e, a, i, r, s, n) {
+ var o = s.length - 1;
+ switch (r) {
+ case 4:
+ return i.apply(s[o]), s[o];
+ case 5:
+ case 10:
+ case 9:
+ case 14:
+ this.$ = [];
+ break;
+ case 6:
+ case 11:
+ s[o - 1].push(s[o]), (this.$ = s[o - 1]);
+ break;
+ case 7:
+ case 8:
+ case 12:
+ case 13:
+ case 66:
+ this.$ = s[o];
+ break;
+ case 18:
+ (s[o].type = "createParticipant"), (this.$ = s[o]);
+ break;
+ case 19:
+ s[o - 1].unshift({ type: "boxStart", boxData: i.parseBoxData(s[o - 2]) }),
+ s[o - 1].push({ type: "boxEnd", boxText: s[o - 2] }),
+ (this.$ = s[o - 1]);
+ break;
+ case 21:
+ this.$ = {
+ type: "sequenceIndex",
+ sequenceIndex: Number(s[o - 2]),
+ sequenceIndexStep: Number(s[o - 1]),
+ sequenceVisible: !0,
+ signalType: i.LINETYPE.AUTONUMBER,
+ };
+ break;
+ case 22:
+ this.$ = {
+ type: "sequenceIndex",
+ sequenceIndex: Number(s[o - 1]),
+ sequenceIndexStep: 1,
+ sequenceVisible: !0,
+ signalType: i.LINETYPE.AUTONUMBER,
+ };
+ break;
+ case 23:
+ this.$ = {
+ type: "sequenceIndex",
+ sequenceVisible: !1,
+ signalType: i.LINETYPE.AUTONUMBER,
+ };
+ break;
+ case 24:
+ this.$ = {
+ type: "sequenceIndex",
+ sequenceVisible: !0,
+ signalType: i.LINETYPE.AUTONUMBER,
+ };
+ break;
+ case 25:
+ this.$ = {
+ type: "activeStart",
+ signalType: i.LINETYPE.ACTIVE_START,
+ actor: s[o - 1],
+ };
+ break;
+ case 26:
+ this.$ = {
+ type: "activeEnd",
+ signalType: i.LINETYPE.ACTIVE_END,
+ actor: s[o - 1],
+ };
+ break;
+ case 32:
+ i.setDiagramTitle(s[o].substring(6)), (this.$ = s[o].substring(6));
+ break;
+ case 33:
+ i.setDiagramTitle(s[o].substring(7)), (this.$ = s[o].substring(7));
+ break;
+ case 34:
+ (this.$ = s[o].trim()), i.setAccTitle(this.$);
+ break;
+ case 35:
+ case 36:
+ (this.$ = s[o].trim()), i.setAccDescription(this.$);
+ break;
+ case 37:
+ s[o - 1].unshift({
+ type: "loopStart",
+ loopText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.LOOP_START,
+ }),
+ s[o - 1].push({
+ type: "loopEnd",
+ loopText: s[o - 2],
+ signalType: i.LINETYPE.LOOP_END,
+ }),
+ (this.$ = s[o - 1]);
+ break;
+ case 38:
+ s[o - 1].unshift({
+ type: "rectStart",
+ color: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.RECT_START,
+ }),
+ s[o - 1].push({
+ type: "rectEnd",
+ color: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.RECT_END,
+ }),
+ (this.$ = s[o - 1]);
+ break;
+ case 39:
+ s[o - 1].unshift({
+ type: "optStart",
+ optText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.OPT_START,
+ }),
+ s[o - 1].push({
+ type: "optEnd",
+ optText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.OPT_END,
+ }),
+ (this.$ = s[o - 1]);
+ break;
+ case 40:
+ s[o - 1].unshift({
+ type: "altStart",
+ altText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.ALT_START,
+ }),
+ s[o - 1].push({ type: "altEnd", signalType: i.LINETYPE.ALT_END }),
+ (this.$ = s[o - 1]);
+ break;
+ case 41:
+ s[o - 1].unshift({
+ type: "parStart",
+ parText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.PAR_START,
+ }),
+ s[o - 1].push({ type: "parEnd", signalType: i.LINETYPE.PAR_END }),
+ (this.$ = s[o - 1]);
+ break;
+ case 42:
+ s[o - 1].unshift({
+ type: "parStart",
+ parText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.PAR_OVER_START,
+ }),
+ s[o - 1].push({ type: "parEnd", signalType: i.LINETYPE.PAR_END }),
+ (this.$ = s[o - 1]);
+ break;
+ case 43:
+ s[o - 1].unshift({
+ type: "criticalStart",
+ criticalText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.CRITICAL_START,
+ }),
+ s[o - 1].push({ type: "criticalEnd", signalType: i.LINETYPE.CRITICAL_END }),
+ (this.$ = s[o - 1]);
+ break;
+ case 44:
+ s[o - 1].unshift({
+ type: "breakStart",
+ breakText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.BREAK_START,
+ }),
+ s[o - 1].push({
+ type: "breakEnd",
+ optText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.BREAK_END,
+ }),
+ (this.$ = s[o - 1]);
+ break;
+ case 47:
+ this.$ = s[o - 3].concat([
+ {
+ type: "option",
+ optionText: i.parseMessage(s[o - 1]),
+ signalType: i.LINETYPE.CRITICAL_OPTION,
+ },
+ s[o],
+ ]);
+ break;
+ case 49:
+ this.$ = s[o - 3].concat([
+ {
+ type: "and",
+ parText: i.parseMessage(s[o - 1]),
+ signalType: i.LINETYPE.PAR_AND,
+ },
+ s[o],
+ ]);
+ break;
+ case 51:
+ this.$ = s[o - 3].concat([
+ {
+ type: "else",
+ altText: i.parseMessage(s[o - 1]),
+ signalType: i.LINETYPE.ALT_ELSE,
+ },
+ s[o],
+ ]);
+ break;
+ case 52:
+ (s[o - 3].draw = "participant"),
+ (s[o - 3].type = "addParticipant"),
+ (s[o - 3].description = i.parseMessage(s[o - 1])),
+ (this.$ = s[o - 3]);
+ break;
+ case 53:
+ (s[o - 1].draw = "participant"), (s[o - 1].type = "addParticipant"), (this.$ = s[o - 1]);
+ break;
+ case 54:
+ (s[o - 3].draw = "actor"),
+ (s[o - 3].type = "addParticipant"),
+ (s[o - 3].description = i.parseMessage(s[o - 1])),
+ (this.$ = s[o - 3]);
+ break;
+ case 55:
+ (s[o - 1].draw = "actor"), (s[o - 1].type = "addParticipant"), (this.$ = s[o - 1]);
+ break;
+ case 56:
+ (s[o - 1].type = "destroyParticipant"), (this.$ = s[o - 1]);
+ break;
+ case 57:
+ this.$ = [s[o - 1], { type: "addNote", placement: s[o - 2], actor: s[o - 1].actor, text: s[o] }];
+ break;
+ case 58:
+ (s[o - 2] = [].concat(s[o - 1], s[o - 1]).slice(0, 2)),
+ (s[o - 2][0] = s[o - 2][0].actor),
+ (s[o - 2][1] = s[o - 2][1].actor),
+ (this.$ = [
+ s[o - 1],
+ {
+ type: "addNote",
+ placement: i.PLACEMENT.OVER,
+ actor: s[o - 2].slice(0, 2),
+ text: s[o],
+ },
+ ]);
+ break;
+ case 59:
+ this.$ = [s[o - 1], { type: "addLinks", actor: s[o - 1].actor, text: s[o] }];
+ break;
+ case 60:
+ this.$ = [s[o - 1], { type: "addALink", actor: s[o - 1].actor, text: s[o] }];
+ break;
+ case 61:
+ this.$ = [s[o - 1], { type: "addProperties", actor: s[o - 1].actor, text: s[o] }];
+ break;
+ case 62:
+ this.$ = [s[o - 1], { type: "addDetails", actor: s[o - 1].actor, text: s[o] }];
+ break;
+ case 65:
+ this.$ = [s[o - 2], s[o]];
+ break;
+ case 67:
+ this.$ = i.PLACEMENT.LEFTOF;
+ break;
+ case 68:
+ this.$ = i.PLACEMENT.RIGHTOF;
+ break;
+ case 69:
+ this.$ = [
+ s[o - 4],
+ s[o - 1],
+ {
+ type: "addMessage",
+ from: s[o - 4].actor,
+ to: s[o - 1].actor,
+ signalType: s[o - 3],
+ msg: s[o],
+ },
+ {
+ type: "activeStart",
+ signalType: i.LINETYPE.ACTIVE_START,
+ actor: s[o - 1],
+ },
+ ];
+ break;
+ case 70:
+ this.$ = [
+ s[o - 4],
+ s[o - 1],
+ {
+ type: "addMessage",
+ from: s[o - 4].actor,
+ to: s[o - 1].actor,
+ signalType: s[o - 3],
+ msg: s[o],
+ },
+ { type: "activeEnd", signalType: i.LINETYPE.ACTIVE_END, actor: s[o - 4] },
+ ];
+ break;
+ case 71:
+ this.$ = [
+ s[o - 3],
+ s[o - 1],
+ {
+ type: "addMessage",
+ from: s[o - 3].actor,
+ to: s[o - 1].actor,
+ signalType: s[o - 2],
+ msg: s[o],
+ },
+ ];
+ break;
+ case 72:
+ this.$ = { type: "addParticipant", actor: s[o] };
+ break;
+ case 73:
+ this.$ = i.LINETYPE.SOLID_OPEN;
+ break;
+ case 74:
+ this.$ = i.LINETYPE.DOTTED_OPEN;
+ break;
+ case 75:
+ this.$ = i.LINETYPE.SOLID;
+ break;
+ case 76:
+ this.$ = i.LINETYPE.DOTTED;
+ break;
+ case 77:
+ this.$ = i.LINETYPE.SOLID_CROSS;
+ break;
+ case 78:
+ this.$ = i.LINETYPE.DOTTED_CROSS;
+ break;
+ case 79:
+ this.$ = i.LINETYPE.SOLID_POINT;
+ break;
+ case 80:
+ this.$ = i.LINETYPE.DOTTED_POINT;
+ break;
+ case 81:
+ this.$ = i.parseMessage(s[o].trim().substring(1));
+ break;
+ case 82:
+ i.parseDirective("%%{", "open_directive");
+ break;
+ case 83:
+ i.parseDirective(s[o], "type_directive");
+ break;
+ case 84:
+ (s[o] = s[o].trim().replace(/'/g, '"')), i.parseDirective(s[o], "arg_directive");
+ break;
+ case 85:
+ i.parseDirective("}%%", "close_directive", "sequence");
+ }
+ },
+ table: [
+ { 3: 1, 4: e, 5: a, 6: 4, 7: i, 14: 6, 86: r },
+ { 1: [3] },
+ { 3: 8, 4: e, 5: a, 6: 4, 7: i, 14: 6, 86: r },
+ { 3: 9, 4: e, 5: a, 6: 4, 7: i, 14: 6, 86: r },
+ { 3: 10, 4: e, 5: a, 6: 4, 7: i, 14: 6, 86: r },
+ t([1, 4, 5, 19, 20, 24, 27, 29, 35, 36, 37, 39, 41, 42, 43, 44, 45, 47, 49, 50, 52, 56, 58, 59, 60, 65, 66, 67, 68, 76, 86], s, {
+ 8: 11,
+ }),
+ { 15: 12, 87: [1, 13] },
+ { 87: [2, 82] },
+ { 1: [2, 1] },
+ { 1: [2, 2] },
+ { 1: [2, 3] },
+ {
+ 1: [2, 4],
+ 4: n,
+ 5: o,
+ 6: 43,
+ 9: 14,
+ 10: 16,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ { 16: 54, 17: [1, 55], 89: R },
+ t([17, 89], [2, 83]),
+ t(Y, [2, 6]),
+ {
+ 6: 43,
+ 10: 57,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ t(Y, [2, 8]),
+ t(Y, [2, 9]),
+ t(Y, [2, 17]),
+ { 13: 58, 56: k, 58: L, 59: I },
+ { 21: [1, 59] },
+ { 5: [1, 60] },
+ { 5: [1, 63], 25: [1, 61], 26: [1, 62] },
+ { 28: 64, 76: D },
+ { 28: 65, 76: D },
+ { 5: [1, 66] },
+ { 5: [1, 67] },
+ { 5: [1, 68] },
+ { 5: [1, 69] },
+ { 5: [1, 70] },
+ t(Y, [2, 32]),
+ t(Y, [2, 33]),
+ { 38: [1, 71] },
+ { 40: [1, 72] },
+ t(Y, [2, 36]),
+ { 21: [1, 73] },
+ { 21: [1, 74] },
+ { 21: [1, 75] },
+ { 21: [1, 76] },
+ { 21: [1, 77] },
+ { 21: [1, 78] },
+ { 21: [1, 79] },
+ { 21: [1, 80] },
+ t(Y, [2, 45]),
+ { 28: 81, 76: D },
+ { 28: 82, 76: D },
+ { 28: 83, 76: D },
+ {
+ 73: 84,
+ 77: [1, 85],
+ 78: [1, 86],
+ 79: [1, 87],
+ 80: [1, 88],
+ 81: [1, 89],
+ 82: [1, 90],
+ 83: [1, 91],
+ 84: [1, 92],
+ },
+ { 61: 93, 63: [1, 94], 71: [1, 95], 72: [1, 96] },
+ { 28: 97, 76: D },
+ { 28: 98, 76: D },
+ { 28: 99, 76: D },
+ { 28: 100, 76: D },
+ t([5, 57, 70, 77, 78, 79, 80, 81, 82, 83, 84, 85], [2, 72]),
+ { 5: [1, 101] },
+ { 18: 102, 88: [1, 103] },
+ { 5: [2, 85] },
+ t(Y, [2, 7]),
+ t(Y, [2, 18]),
+ t($, [2, 10], { 11: 104 }),
+ t(Y, [2, 20]),
+ { 5: [1, 106], 25: [1, 105] },
+ { 5: [1, 107] },
+ t(Y, [2, 24]),
+ { 5: [1, 108] },
+ { 5: [1, 109] },
+ t(Y, [2, 27]),
+ t(Y, [2, 28]),
+ t(Y, [2, 29]),
+ t(Y, [2, 30]),
+ t(Y, [2, 31]),
+ t(Y, [2, 34]),
+ t(Y, [2, 35]),
+ t(C, s, { 8: 110 }),
+ t(C, s, { 8: 111 }),
+ t(C, s, { 8: 112 }),
+ t(V, s, { 46: 113, 8: 114 }),
+ t(B, s, { 48: 115, 8: 116 }),
+ t(B, s, { 8: 116, 48: 117 }),
+ t(F, s, { 51: 118, 8: 119 }),
+ t(C, s, { 8: 120 }),
+ { 5: [1, 122], 57: [1, 121] },
+ { 5: [1, 124], 57: [1, 123] },
+ { 5: [1, 125] },
+ { 28: 128, 74: [1, 126], 75: [1, 127], 76: D },
+ t(W, [2, 73]),
+ t(W, [2, 74]),
+ t(W, [2, 75]),
+ t(W, [2, 76]),
+ t(W, [2, 77]),
+ t(W, [2, 78]),
+ t(W, [2, 79]),
+ t(W, [2, 80]),
+ { 28: 129, 76: D },
+ { 28: 131, 64: 130, 76: D },
+ { 76: [2, 67] },
+ { 76: [2, 68] },
+ { 62: 132, 85: q },
+ { 62: 134, 85: q },
+ { 62: 135, 85: q },
+ { 62: 136, 85: q },
+ t(z, [2, 15]),
+ { 16: 137, 89: R },
+ { 89: [2, 84] },
+ { 4: [1, 140], 5: [1, 142], 12: 139, 13: 141, 22: [1, 138], 56: k, 58: L, 59: I },
+ { 5: [1, 143] },
+ t(Y, [2, 22]),
+ t(Y, [2, 23]),
+ t(Y, [2, 25]),
+ t(Y, [2, 26]),
+ {
+ 4: n,
+ 5: o,
+ 6: 43,
+ 9: 14,
+ 10: 16,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 22: [1, 144],
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ {
+ 4: n,
+ 5: o,
+ 6: 43,
+ 9: 14,
+ 10: 16,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 22: [1, 145],
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ {
+ 4: n,
+ 5: o,
+ 6: 43,
+ 9: 14,
+ 10: 16,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 22: [1, 146],
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ { 22: [1, 147] },
+ {
+ 4: n,
+ 5: o,
+ 6: 43,
+ 9: 14,
+ 10: 16,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 22: [2, 50],
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 55: [1, 148],
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ { 22: [1, 149] },
+ {
+ 4: n,
+ 5: o,
+ 6: 43,
+ 9: 14,
+ 10: 16,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 22: [2, 48],
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 54: [1, 150],
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ { 22: [1, 151] },
+ { 22: [1, 152] },
+ {
+ 4: n,
+ 5: o,
+ 6: 43,
+ 9: 14,
+ 10: 16,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 22: [2, 46],
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 53: [1, 153],
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ {
+ 4: n,
+ 5: o,
+ 6: 43,
+ 9: 14,
+ 10: 16,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 22: [1, 154],
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ { 21: [1, 155] },
+ t(Y, [2, 53]),
+ { 21: [1, 156] },
+ t(Y, [2, 55]),
+ t(Y, [2, 56]),
+ { 28: 157, 76: D },
+ { 28: 158, 76: D },
+ { 62: 159, 85: q },
+ { 62: 160, 85: q },
+ { 62: 161, 85: q },
+ { 70: [1, 162], 85: [2, 66] },
+ { 5: [2, 59] },
+ { 5: [2, 81] },
+ { 5: [2, 60] },
+ { 5: [2, 61] },
+ { 5: [2, 62] },
+ { 5: [1, 163] },
+ t(Y, [2, 19]),
+ t($, [2, 11]),
+ { 13: 164, 56: k, 58: L, 59: I },
+ t($, [2, 13]),
+ t($, [2, 14]),
+ t(Y, [2, 21]),
+ t(Y, [2, 37]),
+ t(Y, [2, 38]),
+ t(Y, [2, 39]),
+ t(Y, [2, 40]),
+ { 21: [1, 165] },
+ t(Y, [2, 41]),
+ { 21: [1, 166] },
+ t(Y, [2, 42]),
+ t(Y, [2, 43]),
+ { 21: [1, 167] },
+ t(Y, [2, 44]),
+ { 5: [1, 168] },
+ { 5: [1, 169] },
+ { 62: 170, 85: q },
+ { 62: 171, 85: q },
+ { 5: [2, 71] },
+ { 5: [2, 57] },
+ { 5: [2, 58] },
+ { 28: 172, 76: D },
+ t(z, [2, 16]),
+ t($, [2, 12]),
+ t(V, s, { 8: 114, 46: 173 }),
+ t(B, s, { 8: 116, 48: 174 }),
+ t(F, s, { 8: 119, 51: 175 }),
+ t(Y, [2, 52]),
+ t(Y, [2, 54]),
+ { 5: [2, 69] },
+ { 5: [2, 70] },
+ { 85: [2, 65] },
+ { 22: [2, 51] },
+ { 22: [2, 49] },
+ { 22: [2, 47] },
+ ],
+ defaultActions: {
+ 7: [2, 82],
+ 8: [2, 1],
+ 9: [2, 2],
+ 10: [2, 3],
+ 56: [2, 85],
+ 95: [2, 67],
+ 96: [2, 68],
+ 103: [2, 84],
+ 132: [2, 59],
+ 133: [2, 81],
+ 134: [2, 60],
+ 135: [2, 61],
+ 136: [2, 62],
+ 159: [2, 71],
+ 160: [2, 57],
+ 161: [2, 58],
+ 170: [2, 69],
+ 171: [2, 70],
+ 172: [2, 65],
+ 173: [2, 51],
+ 174: [2, 49],
+ 175: [2, 47],
+ },
+ parseError: function (t, e) {
+ if (!e.recoverable) {
+ var a = new Error(t);
+ throw ((a.hash = e), a);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var e = [0],
+ a = [],
+ i = [null],
+ r = [],
+ s = this.table,
+ n = "",
+ o = 0,
+ c = 0,
+ l = r.slice.call(arguments, 1),
+ h = Object.create(this.lexer),
+ d = { yy: {} };
+ for (var p in this.yy) Object.prototype.hasOwnProperty.call(this.yy, p) && (d.yy[p] = this.yy[p]);
+ h.setInput(t, d.yy), (d.yy.lexer = h), (d.yy.parser = this), void 0 === h.yylloc && (h.yylloc = {});
+ var g = h.yylloc;
+ r.push(g);
+ var u = h.options && h.options.ranges;
+ "function" == typeof d.yy.parseError
+ ? (this.parseError = d.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var x, y, m, f, b, T, E, w, _, v = {}; ; ) {
+ if (
+ ((y = e[e.length - 1]),
+ this.defaultActions[y]
+ ? (m = this.defaultActions[y])
+ : (null == x &&
+ ((_ = void 0),
+ "number" != typeof (_ = a.pop() || h.lex() || 1) &&
+ (_ instanceof Array && (_ = (a = _).pop()), (_ = this.symbols_[_] || _)),
+ (x = _)),
+ (m = s[y] && s[y][x])),
+ void 0 === m || !m.length || !m[0])
+ ) {
+ var P;
+ for (b in ((w = []), s[y])) this.terminals_[b] && b > 2 && w.push("'" + this.terminals_[b] + "'");
+ (P = h.showPosition
+ ? "Parse error on line " +
+ (o + 1) +
+ ":\n" +
+ h.showPosition() +
+ "\nExpecting " +
+ w.join(", ") +
+ ", got '" +
+ (this.terminals_[x] || x) +
+ "'"
+ : "Parse error on line " + (o + 1) + ": Unexpected " + (1 == x ? "end of input" : "'" + (this.terminals_[x] || x) + "'")),
+ this.parseError(P, {
+ text: h.match,
+ token: this.terminals_[x] || x,
+ line: h.yylineno,
+ loc: g,
+ expected: w,
+ });
+ }
+ if (m[0] instanceof Array && m.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + y + ", token: " + x);
+ switch (m[0]) {
+ case 1:
+ e.push(x),
+ i.push(h.yytext),
+ r.push(h.yylloc),
+ e.push(m[1]),
+ (x = null),
+ (c = h.yyleng),
+ (n = h.yytext),
+ (o = h.yylineno),
+ (g = h.yylloc);
+ break;
+ case 2:
+ if (
+ ((T = this.productions_[m[1]][1]),
+ (v.$ = i[i.length - T]),
+ (v._$ = {
+ first_line: r[r.length - (T || 1)].first_line,
+ last_line: r[r.length - 1].last_line,
+ first_column: r[r.length - (T || 1)].first_column,
+ last_column: r[r.length - 1].last_column,
+ }),
+ u && (v._$.range = [r[r.length - (T || 1)].range[0], r[r.length - 1].range[1]]),
+ void 0 !== (f = this.performAction.apply(v, [n, c, o, d.yy, m[1], i, r].concat(l))))
+ )
+ return f;
+ T && ((e = e.slice(0, -1 * T * 2)), (i = i.slice(0, -1 * T)), (r = r.slice(0, -1 * T))),
+ e.push(this.productions_[m[1]][0]),
+ i.push(v.$),
+ r.push(v._$),
+ (E = s[e[e.length - 2]][e[e.length - 1]]),
+ e.push(E);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ U = {
+ EOF: 1,
+ parseError: function (t, e) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, e);
+ },
+ setInput: function (t, e) {
+ return (
+ (this.yy = e || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0,
+ }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var e = t.length,
+ a = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - e)), (this.offset -= e);
+ var i = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ a.length - 1 && (this.yylineno -= a.length - 1);
+ var r = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: a
+ ? (a.length === i.length ? this.yylloc.first_column : 0) + i[i.length - a.length].length - a[0].length
+ : this.yylloc.first_column - e,
+ }),
+ this.options.ranges && (this.yylloc.range = [r[0], r[0] + this.yyleng - e]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ e = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + e + "^";
+ },
+ test_match: function (t, e) {
+ var a, i, r;
+ if (
+ (this.options.backtrack_lexer &&
+ ((r = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (r.yylloc.range = this.yylloc.range.slice(0))),
+ (i = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += i.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: i ? i[i.length - 1].length - i[i.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (a = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ a)
+ )
+ return a;
+ if (this._backtrack) {
+ for (var s in r) this[s] = r[s];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, e, a, i;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var r = this._currentRules(), s = 0; s < r.length; s++)
+ if ((a = this._input.match(this.rules[r[s]])) && (!e || a[0].length > e[0].length)) {
+ if (((e = a), (i = s), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(a, r[s]))) return t;
+ if (this._backtrack) {
+ e = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return e
+ ? !1 !== (t = this.test_match(e, r[i])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { "case-insensitive": !0 },
+ performAction: function (t, e, a, i) {
+ switch (a) {
+ case 0:
+ return this.begin("open_directive"), 86;
+ case 1:
+ return this.begin("type_directive"), 87;
+ case 2:
+ return this.popState(), this.begin("arg_directive"), 17;
+ case 3:
+ return this.popState(), this.popState(), 89;
+ case 4:
+ return 88;
+ case 5:
+ case 56:
+ case 69:
+ return 5;
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ break;
+ case 11:
+ return 25;
+ case 12:
+ return this.begin("LINE"), 20;
+ case 13:
+ return this.begin("ID"), 56;
+ case 14:
+ return this.begin("ID"), 58;
+ case 15:
+ return 19;
+ case 16:
+ return this.begin("ID"), 59;
+ case 17:
+ return (e.yytext = e.yytext.trim()), this.begin("ALIAS"), 76;
+ case 18:
+ return this.popState(), this.popState(), this.begin("LINE"), 57;
+ case 19:
+ return this.popState(), this.popState(), 5;
+ case 20:
+ return this.begin("LINE"), 42;
+ case 21:
+ return this.begin("LINE"), 43;
+ case 22:
+ return this.begin("LINE"), 44;
+ case 23:
+ return this.begin("LINE"), 45;
+ case 24:
+ return this.begin("LINE"), 55;
+ case 25:
+ return this.begin("LINE"), 47;
+ case 26:
+ return this.begin("LINE"), 49;
+ case 27:
+ return this.begin("LINE"), 54;
+ case 28:
+ return this.begin("LINE"), 50;
+ case 29:
+ return this.begin("LINE"), 53;
+ case 30:
+ return this.begin("LINE"), 52;
+ case 31:
+ return this.popState(), 21;
+ case 32:
+ return 22;
+ case 33:
+ return 71;
+ case 34:
+ return 72;
+ case 35:
+ return 65;
+ case 36:
+ return 66;
+ case 37:
+ return 67;
+ case 38:
+ return 68;
+ case 39:
+ return 63;
+ case 40:
+ return 60;
+ case 41:
+ return this.begin("ID"), 27;
+ case 42:
+ return this.begin("ID"), 29;
+ case 43:
+ return 35;
+ case 44:
+ return 36;
+ case 45:
+ return this.begin("acc_title"), 37;
+ case 46:
+ return this.popState(), "acc_title_value";
+ case 47:
+ return this.begin("acc_descr"), 39;
+ case 48:
+ return this.popState(), "acc_descr_value";
+ case 49:
+ this.begin("acc_descr_multiline");
+ break;
+ case 50:
+ this.popState();
+ break;
+ case 51:
+ return "acc_descr_multiline_value";
+ case 52:
+ return 7;
+ case 53:
+ return 24;
+ case 54:
+ return 26;
+ case 55:
+ return 70;
+ case 57:
+ return (e.yytext = e.yytext.trim()), 76;
+ case 58:
+ return 79;
+ case 59:
+ return 80;
+ case 60:
+ return 77;
+ case 61:
+ return 78;
+ case 62:
+ return 81;
+ case 63:
+ return 82;
+ case 64:
+ return 83;
+ case 65:
+ return 84;
+ case 66:
+ return 85;
+ case 67:
+ return 74;
+ case 68:
+ return 75;
+ case 70:
+ return "INVALID";
+ }
+ },
+ rules: [
+ /^(?:%%\{)/i,
+ /^(?:((?:(?!\}%%)[^:.])*))/i,
+ /^(?::)/i,
+ /^(?:\}%%)/i,
+ /^(?:((?:(?!\}%%).|\n)*))/i,
+ /^(?:[\n]+)/i,
+ /^(?:\s+)/i,
+ /^(?:((?!\n)\s)+)/i,
+ /^(?:#[^\n]*)/i,
+ /^(?:%(?!\{)[^\n]*)/i,
+ /^(?:[^\}]%%[^\n]*)/i,
+ /^(?:[0-9]+(?=[ \n]+))/i,
+ /^(?:box\b)/i,
+ /^(?:participant\b)/i,
+ /^(?:actor\b)/i,
+ /^(?:create\b)/i,
+ /^(?:destroy\b)/i,
+ /^(?:[^\->:\n,;]+?([\-]*[^\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,
+ /^(?:as\b)/i,
+ /^(?:(?:))/i,
+ /^(?:loop\b)/i,
+ /^(?:rect\b)/i,
+ /^(?:opt\b)/i,
+ /^(?:alt\b)/i,
+ /^(?:else\b)/i,
+ /^(?:par\b)/i,
+ /^(?:par_over\b)/i,
+ /^(?:and\b)/i,
+ /^(?:critical\b)/i,
+ /^(?:option\b)/i,
+ /^(?:break\b)/i,
+ /^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,
+ /^(?:end\b)/i,
+ /^(?:left of\b)/i,
+ /^(?:right of\b)/i,
+ /^(?:links\b)/i,
+ /^(?:link\b)/i,
+ /^(?:properties\b)/i,
+ /^(?:details\b)/i,
+ /^(?:over\b)/i,
+ /^(?:note\b)/i,
+ /^(?:activate\b)/i,
+ /^(?:deactivate\b)/i,
+ /^(?:title\s[^#\n;]+)/i,
+ /^(?:title:\s[^#\n;]+)/i,
+ /^(?:accTitle\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*\{\s*)/i,
+ /^(?:[\}])/i,
+ /^(?:[^\}]*)/i,
+ /^(?:sequenceDiagram\b)/i,
+ /^(?:autonumber\b)/i,
+ /^(?:off\b)/i,
+ /^(?:,)/i,
+ /^(?:;)/i,
+ /^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,
+ /^(?:->>)/i,
+ /^(?:-->>)/i,
+ /^(?:->)/i,
+ /^(?:-->)/i,
+ /^(?:-[x])/i,
+ /^(?:--[x])/i,
+ /^(?:-[\)])/i,
+ /^(?:--[\)])/i,
+ /^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,
+ /^(?:\+)/i,
+ /^(?:-)/i,
+ /^(?:$)/i,
+ /^(?:.)/i,
+ ],
+ conditions: {
+ acc_descr_multiline: { rules: [50, 51], inclusive: !1 },
+ acc_descr: { rules: [48], inclusive: !1 },
+ acc_title: { rules: [46], inclusive: !1 },
+ open_directive: { rules: [1, 8], inclusive: !1 },
+ type_directive: { rules: [2, 3, 8], inclusive: !1 },
+ arg_directive: { rules: [3, 4, 8], inclusive: !1 },
+ ID: { rules: [7, 8, 17], inclusive: !1 },
+ ALIAS: { rules: [7, 8, 18, 19], inclusive: !1 },
+ LINE: { rules: [7, 8, 31], inclusive: !1 },
+ INITIAL: {
+ rules: [
+ 0, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 47, 49, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ ],
+ inclusive: !0,
+ },
+ },
+ };
+ function j() {
+ this.yy = {};
+ }
+ return (H.lexer = U), (j.prototype = H), (H.Parser = j), new j();
+ })());
+ o.parser = o;
+ const c = o;
+ let l,
+ h,
+ d,
+ p,
+ g,
+ u = {},
+ x = {},
+ y = {},
+ m = [],
+ f = [],
+ b = !1;
+ const T = function (t, e, a, i) {
+ let r = d;
+ const s = u[t];
+ if (s) {
+ if (d && s.box && d !== s.box)
+ throw new Error(
+ "A same participant should only be defined in one Box: " +
+ s.name +
+ " can't be in '" +
+ s.box.name +
+ "' and in '" +
+ d.name +
+ "' at the same time.",
+ );
+ if (((r = s.box ? s.box : d), (s.box = r), s && e === s.name && null == a)) return;
+ }
+ (null != a && null != a.text) || (a = { text: e, wrap: null, type: i }),
+ (null != i && null != a.text) || (a = { text: e, wrap: null, type: i }),
+ (u[t] = {
+ box: r,
+ name: e,
+ description: a.text,
+ wrap: (void 0 === a.wrap && _()) || !!a.wrap,
+ prevActor: l,
+ links: {},
+ properties: {},
+ actorCnt: null,
+ rectData: null,
+ type: i || "participant",
+ }),
+ l && u[l] && (u[l].nextActor = t),
+ d && d.actorKeys.push(t),
+ (l = t);
+ },
+ E = function (t, e, a = { text: void 0, wrap: void 0 }, i) {
+ if (
+ i === v.ACTIVE_END &&
+ ((t) => {
+ let e,
+ a = 0;
+ for (e = 0; e < f.length; e++)
+ f[e].type === v.ACTIVE_START && f[e].from.actor === t && a++, f[e].type === v.ACTIVE_END && f[e].from.actor === t && a--;
+ return a;
+ })(t.actor) < 1
+ ) {
+ let e = new Error("Trying to inactivate an inactive participant (" + t.actor + ")");
+ throw (
+ ((e.hash = {
+ text: "->>-",
+ token: "->>-",
+ line: "1",
+ loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },
+ expected: ["'ACTIVE_PARTICIPANT'"],
+ }),
+ e)
+ );
+ }
+ return (
+ f.push({
+ from: t,
+ to: e,
+ message: a.text,
+ wrap: (void 0 === a.wrap && _()) || !!a.wrap,
+ type: i,
+ }),
+ !0
+ );
+ },
+ w = function (t) {
+ return u[t];
+ },
+ _ = () => (void 0 !== h ? h : (0, i.c)().sequence.wrap),
+ v = {
+ SOLID: 0,
+ DOTTED: 1,
+ NOTE: 2,
+ SOLID_CROSS: 3,
+ DOTTED_CROSS: 4,
+ SOLID_OPEN: 5,
+ DOTTED_OPEN: 6,
+ LOOP_START: 10,
+ LOOP_END: 11,
+ ALT_START: 12,
+ ALT_ELSE: 13,
+ ALT_END: 14,
+ OPT_START: 15,
+ OPT_END: 16,
+ ACTIVE_START: 17,
+ ACTIVE_END: 18,
+ PAR_START: 19,
+ PAR_AND: 20,
+ PAR_END: 21,
+ RECT_START: 22,
+ RECT_END: 23,
+ SOLID_POINT: 24,
+ DOTTED_POINT: 25,
+ AUTONUMBER: 26,
+ CRITICAL_START: 27,
+ CRITICAL_OPTION: 28,
+ CRITICAL_END: 29,
+ BREAK_START: 30,
+ BREAK_END: 31,
+ PAR_OVER_START: 32,
+ },
+ P = function (t, e, a) {
+ a.text, (void 0 === a.wrap && _()) || a.wrap;
+ const i = [].concat(t, t);
+ f.push({
+ from: i[0],
+ to: i[1],
+ message: a.text,
+ wrap: (void 0 === a.wrap && _()) || !!a.wrap,
+ type: v.NOTE,
+ placement: e,
+ });
+ },
+ k = function (t, e) {
+ const a = w(t);
+ try {
+ let t = (0, i.d)(e.text, (0, i.c)());
+ (t = t.replace(/&/g, "&")), (t = t.replace(/=/g, "=")), L(a, JSON.parse(t));
+ } catch (t) {
+ i.l.error("error while parsing actor link text", t);
+ }
+ };
+ function L(t, e) {
+ if (null == t.links) t.links = e;
+ else for (let a in e) t.links[a] = e[a];
+ }
+ const I = function (t, e) {
+ const a = w(t);
+ try {
+ let t = (0, i.d)(e.text, (0, i.c)());
+ M(a, JSON.parse(t));
+ } catch (t) {
+ i.l.error("error while parsing actor properties text", t);
+ }
+ };
+ function M(t, e) {
+ if (null == t.properties) t.properties = e;
+ else for (let a in e) t.properties[a] = e[a];
+ }
+ const N = function (t, e) {
+ const a = w(t),
+ r = document.getElementById(e.text);
+ try {
+ const t = r.innerHTML,
+ e = JSON.parse(t);
+ e.properties && M(a, e.properties), e.links && L(a, e.links);
+ } catch (t) {
+ i.l.error("error while parsing actor details text", t);
+ }
+ },
+ A = function (t) {
+ if (Array.isArray(t))
+ t.forEach(function (t) {
+ A(t);
+ });
+ else
+ switch (t.type) {
+ case "sequenceIndex":
+ f.push({
+ from: void 0,
+ to: void 0,
+ message: {
+ start: t.sequenceIndex,
+ step: t.sequenceIndexStep,
+ visible: t.sequenceVisible,
+ },
+ wrap: !1,
+ type: t.signalType,
+ });
+ break;
+ case "addParticipant":
+ T(t.actor, t.actor, t.description, t.draw);
+ break;
+ case "createParticipant":
+ if (u[t.actor])
+ throw new Error(
+ "It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior",
+ );
+ (p = t.actor), T(t.actor, t.actor, t.description, t.draw), (x[t.actor] = f.length);
+ break;
+ case "destroyParticipant":
+ (g = t.actor), (y[t.actor] = f.length);
+ break;
+ case "activeStart":
+ case "activeEnd":
+ E(t.actor, void 0, void 0, t.signalType);
+ break;
+ case "addNote":
+ P(t.actor, t.placement, t.text);
+ break;
+ case "addLinks":
+ k(t.actor, t.text);
+ break;
+ case "addALink":
+ !(function (t, e) {
+ const a = w(t);
+ try {
+ const t = {};
+ let o = (0, i.d)(e.text, (0, i.c)());
+ var r = o.indexOf("@");
+ (o = o.replace(/&/g, "&")), (o = o.replace(/=/g, "="));
+ var s = o.slice(0, r - 1).trim(),
+ n = o.slice(r + 1).trim();
+ (t[s] = n), L(a, t);
+ } catch (t) {
+ i.l.error("error while parsing actor link text", t);
+ }
+ })(t.actor, t.text);
+ break;
+ case "addProperties":
+ I(t.actor, t.text);
+ break;
+ case "addDetails":
+ N(t.actor, t.text);
+ break;
+ case "addMessage":
+ if (p) {
+ if (t.to !== p)
+ throw new Error(
+ "The created participant " +
+ p +
+ " does not have an associated creating message after its declaration. Please check the sequence diagram.",
+ );
+ p = void 0;
+ } else if (g) {
+ if (t.to !== g && t.from !== g)
+ throw new Error(
+ "The destroyed participant " +
+ g +
+ " does not have an associated destroying message after its declaration. Please check the sequence diagram.",
+ );
+ g = void 0;
+ }
+ E(t.from, t.to, t.msg, t.signalType);
+ break;
+ case "boxStart":
+ (e = t.boxData),
+ m.push({
+ name: e.text,
+ wrap: (void 0 === e.wrap && _()) || !!e.wrap,
+ fill: e.color,
+ actorKeys: [],
+ }),
+ (d = m.slice(-1)[0]);
+ break;
+ case "boxEnd":
+ d = void 0;
+ break;
+ case "loopStart":
+ E(void 0, void 0, t.loopText, t.signalType);
+ break;
+ case "loopEnd":
+ case "rectEnd":
+ case "optEnd":
+ case "altEnd":
+ case "parEnd":
+ case "criticalEnd":
+ case "breakEnd":
+ E(void 0, void 0, void 0, t.signalType);
+ break;
+ case "rectStart":
+ E(void 0, void 0, t.color, t.signalType);
+ break;
+ case "optStart":
+ E(void 0, void 0, t.optText, t.signalType);
+ break;
+ case "altStart":
+ case "else":
+ E(void 0, void 0, t.altText, t.signalType);
+ break;
+ case "setAccTitle":
+ (0, i.s)(t.text);
+ break;
+ case "parStart":
+ case "and":
+ E(void 0, void 0, t.parText, t.signalType);
+ break;
+ case "criticalStart":
+ E(void 0, void 0, t.criticalText, t.signalType);
+ break;
+ case "option":
+ E(void 0, void 0, t.optionText, t.signalType);
+ break;
+ case "breakStart":
+ E(void 0, void 0, t.breakText, t.signalType);
+ }
+ var e;
+ },
+ S = {
+ addActor: T,
+ addMessage: function (t, e, a, i) {
+ f.push({
+ from: t,
+ to: e,
+ message: a.text,
+ wrap: (void 0 === a.wrap && _()) || !!a.wrap,
+ answer: i,
+ });
+ },
+ addSignal: E,
+ addLinks: k,
+ addDetails: N,
+ addProperties: I,
+ autoWrap: _,
+ setWrap: function (t) {
+ h = t;
+ },
+ enableSequenceNumbers: function () {
+ b = !0;
+ },
+ disableSequenceNumbers: function () {
+ b = !1;
+ },
+ showSequenceNumbers: () => b,
+ getMessages: function () {
+ return f;
+ },
+ getActors: function () {
+ return u;
+ },
+ getCreatedActors: function () {
+ return x;
+ },
+ getDestroyedActors: function () {
+ return y;
+ },
+ getActor: w,
+ getActorKeys: function () {
+ return Object.keys(u);
+ },
+ getActorProperty: function (t, e) {
+ if (void 0 !== t && void 0 !== t.properties) return t.properties[e];
+ },
+ getAccTitle: i.g,
+ getBoxes: function () {
+ return m;
+ },
+ getDiagramTitle: i.t,
+ setDiagramTitle: i.r,
+ parseDirective: function (t, e, a) {
+ i.m.parseDirective(this, t, e, a);
+ },
+ getConfig: () => (0, i.c)().sequence,
+ clear: function () {
+ (u = {}), (x = {}), (y = {}), (m = []), (f = []), (b = !1), (0, i.v)();
+ },
+ parseMessage: function (t) {
+ const e = t.trim(),
+ a = {
+ text: e.replace(/^:?(?:no)?wrap:/, "").trim(),
+ wrap: null !== e.match(/^:?wrap:/) || (null === e.match(/^:?nowrap:/) && void 0),
+ };
+ return i.l.debug("parseMessage:", a), a;
+ },
+ parseBoxData: function (t) {
+ const e = t.match(/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/);
+ let a = null != e && e[1] ? e[1].trim() : "transparent",
+ r = null != e && e[2] ? e[2].trim() : void 0;
+ if (window && window.CSS) window.CSS.supports("color", a) || ((a = "transparent"), (r = t.trim()));
+ else {
+ const e = new Option().style;
+ (e.color = a), e.color !== a && ((a = "transparent"), (r = t.trim()));
+ }
+ return {
+ color: a,
+ text: void 0 !== r ? (0, i.d)(r.replace(/^:?(?:no)?wrap:/, ""), (0, i.c)()) : void 0,
+ wrap: void 0 !== r ? null !== r.match(/^:?wrap:/) || (null === r.match(/^:?nowrap:/) && void 0) : void 0,
+ };
+ },
+ LINETYPE: v,
+ ARROWTYPE: { FILLED: 0, OPEN: 1 },
+ PLACEMENT: { LEFTOF: 0, RIGHTOF: 1, OVER: 2 },
+ addNote: P,
+ setAccTitle: i.s,
+ apply: A,
+ setAccDescription: i.b,
+ getAccDescription: i.a,
+ hasAtLeastOneBox: function () {
+ return m.length > 0;
+ },
+ hasAtLeastOneBoxWithTitle: function () {
+ return m.some((t) => t.name);
+ },
+ },
+ O = function (t, e) {
+ return (0, s.d)(t, e);
+ },
+ D = (t, e) => {
+ (0, i.H)(() => {
+ const a = document.querySelectorAll(t);
+ 0 !== a.length &&
+ (a[0].addEventListener("mouseover", function () {
+ R("actor" + e + "_popup");
+ }),
+ a[0].addEventListener("mouseout", function () {
+ Y("actor" + e + "_popup");
+ }));
+ });
+ },
+ R = function (t) {
+ var e = document.getElementById(t);
+ null != e && (e.style.display = "block");
+ },
+ Y = function (t) {
+ var e = document.getElementById(t);
+ null != e && (e.style.display = "none");
+ },
+ $ = function (t, e) {
+ let a = 0,
+ r = 0;
+ const s = e.text.split(i.e.lineBreakRegex),
+ [n, o] = (0, i.F)(e.fontSize);
+ let c = [],
+ l = 0,
+ h = () => e.y;
+ if (void 0 !== e.valign && void 0 !== e.textMargin && e.textMargin > 0)
+ switch (e.valign) {
+ case "top":
+ case "start":
+ h = () => Math.round(e.y + e.textMargin);
+ break;
+ case "middle":
+ case "center":
+ h = () => Math.round(e.y + (a + r + e.textMargin) / 2);
+ break;
+ case "bottom":
+ case "end":
+ h = () => Math.round(e.y + (a + r + 2 * e.textMargin) - e.textMargin);
+ }
+ if (void 0 !== e.anchor && void 0 !== e.textMargin && void 0 !== e.width)
+ switch (e.anchor) {
+ case "left":
+ case "start":
+ (e.x = Math.round(e.x + e.textMargin)), (e.anchor = "start"), (e.dominantBaseline = "middle"), (e.alignmentBaseline = "middle");
+ break;
+ case "middle":
+ case "center":
+ (e.x = Math.round(e.x + e.width / 2)), (e.anchor = "middle"), (e.dominantBaseline = "middle"), (e.alignmentBaseline = "middle");
+ break;
+ case "right":
+ case "end":
+ (e.x = Math.round(e.x + e.width - e.textMargin)),
+ (e.anchor = "end"),
+ (e.dominantBaseline = "middle"),
+ (e.alignmentBaseline = "middle");
+ }
+ for (let [d, p] of s.entries()) {
+ void 0 !== e.textMargin && 0 === e.textMargin && void 0 !== n && (l = d * n);
+ const s = t.append("text");
+ s.attr("x", e.x),
+ s.attr("y", h()),
+ void 0 !== e.anchor &&
+ s.attr("text-anchor", e.anchor).attr("dominant-baseline", e.dominantBaseline).attr("alignment-baseline", e.alignmentBaseline),
+ void 0 !== e.fontFamily && s.style("font-family", e.fontFamily),
+ void 0 !== o && s.style("font-size", o),
+ void 0 !== e.fontWeight && s.style("font-weight", e.fontWeight),
+ void 0 !== e.fill && s.attr("fill", e.fill),
+ void 0 !== e.class && s.attr("class", e.class),
+ void 0 !== e.dy ? s.attr("dy", e.dy) : 0 !== l && s.attr("dy", l);
+ const g = p || i.Z;
+ if (e.tspan) {
+ const t = s.append("tspan");
+ t.attr("x", e.x), void 0 !== e.fill && t.attr("fill", e.fill), t.text(g);
+ } else s.text(g);
+ void 0 !== e.valign && void 0 !== e.textMargin && e.textMargin > 0 && ((r += (s._groups || s)[0][0].getBBox().height), (a = r)),
+ c.push(s);
+ }
+ return c;
+ },
+ C = function (t, e) {
+ const a = t.append("polygon");
+ var i, r, s, n;
+ return (
+ a.attr(
+ "points",
+ (i = e.x) +
+ "," +
+ (r = e.y) +
+ " " +
+ (i + (s = e.width)) +
+ "," +
+ r +
+ " " +
+ (i + s) +
+ "," +
+ (r + (n = e.height) - 7) +
+ " " +
+ (i + s - 8.4) +
+ "," +
+ (r + n) +
+ " " +
+ i +
+ "," +
+ (r + n),
+ ),
+ a.attr("class", "labelBox"),
+ (e.y = e.y + e.height / 2),
+ $(t, e),
+ a
+ );
+ };
+ let V = -1;
+ const B = (t, e, a, i) => {
+ t.select &&
+ a.forEach((a) => {
+ const r = e[a],
+ s = t.select("#actor" + r.actorCnt);
+ !i.mirrorActors && r.stopy ? s.attr("y2", r.stopy + r.height / 2) : i.mirrorActors && s.attr("y2", r.stopy);
+ });
+ },
+ F = function (t, e) {
+ (0, s.a)(t, e);
+ },
+ W = (function () {
+ function t(t, e, a, i, s, n, o) {
+ r(
+ e
+ .append("text")
+ .attr("x", a + s / 2)
+ .attr("y", i + n / 2 + 5)
+ .style("text-anchor", "middle")
+ .text(t),
+ o,
+ );
+ }
+ function e(t, e, a, s, n, o, c, l) {
+ const { actorFontSize: h, actorFontFamily: d, actorFontWeight: p } = l,
+ [g, u] = (0, i.F)(h),
+ x = t.split(i.e.lineBreakRegex);
+ for (let t = 0; t < x.length; t++) {
+ const i = t * g - (g * (x.length - 1)) / 2,
+ l = e
+ .append("text")
+ .attr("x", a + n / 2)
+ .attr("y", s)
+ .style("text-anchor", "middle")
+ .style("font-size", u)
+ .style("font-weight", p)
+ .style("font-family", d);
+ l
+ .append("tspan")
+ .attr("x", a + n / 2)
+ .attr("dy", i)
+ .text(x[t]),
+ l
+ .attr("y", s + o / 2)
+ .attr("dominant-baseline", "central")
+ .attr("alignment-baseline", "central"),
+ r(l, c);
+ }
+ }
+ function a(t, a, i, s, n, o, c, l) {
+ const h = a.append("switch"),
+ d = h
+ .append("foreignObject")
+ .attr("x", i)
+ .attr("y", s)
+ .attr("width", n)
+ .attr("height", o)
+ .append("xhtml:div")
+ .style("display", "table")
+ .style("height", "100%")
+ .style("width", "100%");
+ d.append("div").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(t),
+ e(t, h, i, s, n, o, c, l),
+ r(d, c);
+ }
+ function r(t, e) {
+ for (const a in e) e.hasOwnProperty(a) && t.attr(a, e[a]);
+ }
+ return function (i) {
+ return "fo" === i.textPlacement ? a : "old" === i.textPlacement ? t : e;
+ };
+ })(),
+ q = (function () {
+ function t(t, e, a, i, s, n, o) {
+ r(e.append("text").attr("x", a).attr("y", i).style("text-anchor", "start").text(t), o);
+ }
+ function e(t, e, a, s, n, o, c, l) {
+ const { actorFontSize: h, actorFontFamily: d, actorFontWeight: p } = l,
+ g = t.split(i.e.lineBreakRegex);
+ for (let t = 0; t < g.length; t++) {
+ const i = t * h - (h * (g.length - 1)) / 2,
+ n = e
+ .append("text")
+ .attr("x", a)
+ .attr("y", s)
+ .style("text-anchor", "start")
+ .style("font-size", h)
+ .style("font-weight", p)
+ .style("font-family", d);
+ n.append("tspan").attr("x", a).attr("dy", i).text(g[t]),
+ n
+ .attr("y", s + o / 2)
+ .attr("dominant-baseline", "central")
+ .attr("alignment-baseline", "central"),
+ r(n, c);
+ }
+ }
+ function a(t, a, i, s, n, o, c, l) {
+ const h = a.append("switch"),
+ d = h
+ .append("foreignObject")
+ .attr("x", i)
+ .attr("y", s)
+ .attr("width", n)
+ .attr("height", o)
+ .append("xhtml:div")
+ .style("display", "table")
+ .style("height", "100%")
+ .style("width", "100%");
+ d.append("div").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(t),
+ e(t, h, i, s, 0, o, c, l),
+ r(d, c);
+ }
+ function r(t, e) {
+ for (const a in e) e.hasOwnProperty(a) && t.attr(a, e[a]);
+ }
+ return function (i) {
+ return "fo" === i.textPlacement ? a : "old" === i.textPlacement ? t : e;
+ };
+ })(),
+ z = O,
+ H = function (t, e, a, i) {
+ switch (e.type) {
+ case "actor":
+ return (function (t, e, a, i) {
+ const r = i ? e.stopy : e.starty,
+ n = e.x + e.width / 2,
+ o = r + 80;
+ t.lower(),
+ i ||
+ (V++,
+ t
+ .append("line")
+ .attr("id", "actor" + V)
+ .attr("x1", n)
+ .attr("y1", o)
+ .attr("x2", n)
+ .attr("y2", 2e3)
+ .attr("class", "actor-line")
+ .attr("class", "200")
+ .attr("stroke-width", "0.5px")
+ .attr("stroke", "#999"),
+ (e.actorCnt = V));
+ const c = t.append("g");
+ c.attr("class", "actor-man");
+ const l = (0, s.g)();
+ (l.x = e.x),
+ (l.y = r),
+ (l.fill = "#eaeaea"),
+ (l.width = e.width),
+ (l.height = e.height),
+ (l.class = "actor"),
+ (l.rx = 3),
+ (l.ry = 3),
+ c
+ .append("line")
+ .attr("id", "actor-man-torso" + V)
+ .attr("x1", n)
+ .attr("y1", r + 25)
+ .attr("x2", n)
+ .attr("y2", r + 45),
+ c
+ .append("line")
+ .attr("id", "actor-man-arms" + V)
+ .attr("x1", n - 18)
+ .attr("y1", r + 33)
+ .attr("x2", n + 18)
+ .attr("y2", r + 33),
+ c
+ .append("line")
+ .attr("x1", n - 18)
+ .attr("y1", r + 60)
+ .attr("x2", n)
+ .attr("y2", r + 45),
+ c
+ .append("line")
+ .attr("x1", n)
+ .attr("y1", r + 45)
+ .attr("x2", n + 18 - 2)
+ .attr("y2", r + 60);
+ const h = c.append("circle");
+ h.attr("cx", e.x + e.width / 2), h.attr("cy", r + 10), h.attr("r", 15), h.attr("width", e.width), h.attr("height", e.height);
+ const d = c.node().getBBox();
+ return (e.height = d.height), W(a)(e.description, c, l.x, l.y + 35, l.width, l.height, { class: "actor" }, a), e.height;
+ })(t, e, a, i);
+ case "participant":
+ return (function (t, e, a, i) {
+ const r = i ? e.stopy : e.starty,
+ n = e.x + e.width / 2,
+ o = r + 5,
+ c = t.append("g").lower();
+ var l = c;
+ i ||
+ (V++,
+ l
+ .append("line")
+ .attr("id", "actor" + V)
+ .attr("x1", n)
+ .attr("y1", o)
+ .attr("x2", n)
+ .attr("y2", 2e3)
+ .attr("class", "actor-line")
+ .attr("class", "200")
+ .attr("stroke-width", "0.5px")
+ .attr("stroke", "#999"),
+ (l = c.append("g")),
+ (e.actorCnt = V),
+ null != e.links && (l.attr("id", "root-" + V), D("#root-" + V, V)));
+ const h = (0, s.g)();
+ var d = "actor";
+ null != e.properties && e.properties.class ? (d = e.properties.class) : (h.fill = "#eaeaea"),
+ (h.x = e.x),
+ (h.y = r),
+ (h.width = e.width),
+ (h.height = e.height),
+ (h.class = d),
+ (h.rx = 3),
+ (h.ry = 3);
+ const p = O(l, h);
+ if (((e.rectData = h), null != e.properties && e.properties.icon)) {
+ const t = e.properties.icon.trim();
+ "@" === t.charAt(0) ? (0, s.b)(l, h.x + h.width - 20, h.y + 10, t.substr(1)) : (0, s.c)(l, h.x + h.width - 20, h.y + 10, t);
+ }
+ W(a)(e.description, l, h.x, h.y, h.width, h.height, { class: "actor" }, a);
+ let g = e.height;
+ if (p.node) {
+ const t = p.node().getBBox();
+ (e.height = t.height), (g = t.height);
+ }
+ return g;
+ })(t, e, a, i);
+ }
+ },
+ U = function (t, e, a) {
+ const i = t.append("g");
+ F(i, e), e.name && W(a)(e.name, i, e.x, e.y + (e.textMaxHeight || 0) / 2, e.width, 0, { class: "text" }, a), i.lower();
+ },
+ j = function (t, e, a, i, r) {
+ if (void 0 === e.links || null === e.links || 0 === Object.keys(e.links).length) return { height: 0, width: 0 };
+ const s = e.links,
+ o = e.actorCnt,
+ c = e.rectData;
+ var l = "none";
+ r && (l = "block !important");
+ const h = t.append("g");
+ h.attr("id", "actor" + o + "_popup"), h.attr("class", "actorPopupMenu"), h.attr("display", l), D("#actor" + o + "_popup", o);
+ var d = "";
+ void 0 !== c.class && (d = " " + c.class);
+ let p = c.width > a ? c.width : a;
+ const g = h.append("rect");
+ if (
+ (g.attr("class", "actorPopupMenuPanel" + d),
+ g.attr("x", c.x),
+ g.attr("y", c.height),
+ g.attr("fill", c.fill),
+ g.attr("stroke", c.stroke),
+ g.attr("width", p),
+ g.attr("height", c.height),
+ g.attr("rx", c.rx),
+ g.attr("ry", c.ry),
+ null != s)
+ ) {
+ var u = 20;
+ for (let t in s) {
+ var x = h.append("a"),
+ y = (0, n.Nm)(s[t]);
+ x.attr("xlink:href", y), x.attr("target", "_blank"), q(i)(t, x, c.x + 10, c.height + u, p, 20, { class: "actor" }, i), (u += 30);
+ }
+ }
+ return g.attr("height", u), { height: c.height + u, width: p };
+ },
+ K = function (t) {
+ return t.append("g");
+ },
+ X = function (t, e, a, i, r) {
+ const n = (0, s.g)(),
+ o = e.anchored;
+ (n.x = e.startx), (n.y = e.starty), (n.class = "activation" + (r % 3)), (n.width = e.stopx - e.startx), (n.height = a - e.starty), O(o, n);
+ },
+ G = function (t, e, a, i) {
+ const {
+ boxMargin: r,
+ boxTextMargin: n,
+ labelBoxHeight: o,
+ labelBoxWidth: c,
+ messageFontFamily: l,
+ messageFontSize: h,
+ messageFontWeight: d,
+ } = i,
+ p = t.append("g"),
+ g = function (t, e, a, i) {
+ return p.append("line").attr("x1", t).attr("y1", e).attr("x2", a).attr("y2", i).attr("class", "loopLine");
+ };
+ g(e.startx, e.starty, e.stopx, e.starty),
+ g(e.stopx, e.starty, e.stopx, e.stopy),
+ g(e.startx, e.stopy, e.stopx, e.stopy),
+ g(e.startx, e.starty, e.startx, e.stopy),
+ void 0 !== e.sections &&
+ e.sections.forEach(function (t) {
+ g(e.startx, t.y, e.stopx, t.y).style("stroke-dasharray", "3, 3");
+ });
+ let u = (0, s.e)();
+ (u.text = a),
+ (u.x = e.startx),
+ (u.y = e.starty),
+ (u.fontFamily = l),
+ (u.fontSize = h),
+ (u.fontWeight = d),
+ (u.anchor = "middle"),
+ (u.valign = "middle"),
+ (u.tspan = !1),
+ (u.width = c || 50),
+ (u.height = o || 20),
+ (u.textMargin = n),
+ (u.class = "labelText"),
+ C(p, u),
+ (u = {
+ x: 0,
+ y: 0,
+ fill: void 0,
+ anchor: void 0,
+ style: "#666",
+ width: void 0,
+ height: void 0,
+ textMargin: 0,
+ rx: 0,
+ ry: 0,
+ tspan: !0,
+ valign: void 0,
+ }),
+ (u.text = e.title),
+ (u.x = e.startx + c / 2 + (e.stopx - e.startx) / 2),
+ (u.y = e.starty + r + n),
+ (u.anchor = "middle"),
+ (u.valign = "middle"),
+ (u.textMargin = n),
+ (u.class = "loopText"),
+ (u.fontFamily = l),
+ (u.fontSize = h),
+ (u.fontWeight = d),
+ (u.wrap = !0);
+ let x = $(p, u);
+ return (
+ void 0 !== e.sectionTitles &&
+ e.sectionTitles.forEach(function (t, a) {
+ if (t.message) {
+ (u.text = t.message),
+ (u.x = e.startx + (e.stopx - e.startx) / 2),
+ (u.y = e.sections[a].y + r + n),
+ (u.class = "loopText"),
+ (u.anchor = "middle"),
+ (u.valign = "middle"),
+ (u.tspan = !1),
+ (u.fontFamily = l),
+ (u.fontSize = h),
+ (u.fontWeight = d),
+ (u.wrap = e.wrap),
+ (x = $(p, u));
+ let i = Math.round(x.map((t) => (t._groups || t)[0][0].getBBox().height).reduce((t, e) => t + e));
+ e.sections[a].height += i - (r + n);
+ }
+ }),
+ (e.height = Math.round(e.stopy - e.starty)),
+ p
+ );
+ },
+ J = F,
+ Z = function (t) {
+ t.append("defs")
+ .append("marker")
+ .attr("id", "arrowhead")
+ .attr("refX", 9)
+ .attr("refY", 5)
+ .attr("markerUnits", "userSpaceOnUse")
+ .attr("markerWidth", 12)
+ .attr("markerHeight", 12)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 0 0 L 10 5 L 0 10 z");
+ },
+ Q = function (t) {
+ t.append("defs")
+ .append("marker")
+ .attr("id", "filled-head")
+ .attr("refX", 18)
+ .attr("refY", 7)
+ .attr("markerWidth", 20)
+ .attr("markerHeight", 28)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
+ },
+ tt = function (t) {
+ t.append("defs")
+ .append("marker")
+ .attr("id", "sequencenumber")
+ .attr("refX", 15)
+ .attr("refY", 15)
+ .attr("markerWidth", 60)
+ .attr("markerHeight", 40)
+ .attr("orient", "auto")
+ .append("circle")
+ .attr("cx", 15)
+ .attr("cy", 15)
+ .attr("r", 6);
+ },
+ et = function (t) {
+ t.append("defs")
+ .append("marker")
+ .attr("id", "crosshead")
+ .attr("markerWidth", 15)
+ .attr("markerHeight", 8)
+ .attr("orient", "auto")
+ .attr("refX", 4)
+ .attr("refY", 5)
+ .append("path")
+ .attr("fill", "none")
+ .attr("stroke", "#000000")
+ .style("stroke-dasharray", "0, 0")
+ .attr("stroke-width", "1pt")
+ .attr("d", "M 1,2 L 6,7 M 6,2 L 1,7");
+ },
+ at = function (t) {
+ t.append("defs")
+ .append("symbol")
+ .attr("id", "database")
+ .attr("fill-rule", "evenodd")
+ .attr("clip-rule", "evenodd")
+ .append("path")
+ .attr("transform", "scale(.5)")
+ .attr(
+ "d",
+ "M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z",
+ );
+ },
+ it = function (t) {
+ t.append("defs")
+ .append("symbol")
+ .attr("id", "computer")
+ .attr("width", "24")
+ .attr("height", "24")
+ .append("path")
+ .attr("transform", "scale(.5)")
+ .attr(
+ "d",
+ "M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z",
+ );
+ },
+ rt = function (t) {
+ t.append("defs")
+ .append("symbol")
+ .attr("id", "clock")
+ .attr("width", "24")
+ .attr("height", "24")
+ .append("path")
+ .attr("transform", "scale(.5)")
+ .attr(
+ "d",
+ "M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z",
+ );
+ };
+ n.Nm;
+ let st = {};
+ const nt = {
+ data: { startx: void 0, stopx: void 0, starty: void 0, stopy: void 0 },
+ verticalPos: 0,
+ sequenceItems: [],
+ activations: [],
+ models: {
+ getHeight: function () {
+ return (
+ Math.max.apply(null, 0 === this.actors.length ? [0] : this.actors.map((t) => t.height || 0)) +
+ (0 === this.loops.length ? 0 : this.loops.map((t) => t.height || 0).reduce((t, e) => t + e)) +
+ (0 === this.messages.length ? 0 : this.messages.map((t) => t.height || 0).reduce((t, e) => t + e)) +
+ (0 === this.notes.length ? 0 : this.notes.map((t) => t.height || 0).reduce((t, e) => t + e))
+ );
+ },
+ clear: function () {
+ (this.actors = []), (this.boxes = []), (this.loops = []), (this.messages = []), (this.notes = []);
+ },
+ addBox: function (t) {
+ this.boxes.push(t);
+ },
+ addActor: function (t) {
+ this.actors.push(t);
+ },
+ addLoop: function (t) {
+ this.loops.push(t);
+ },
+ addMessage: function (t) {
+ this.messages.push(t);
+ },
+ addNote: function (t) {
+ this.notes.push(t);
+ },
+ lastActor: function () {
+ return this.actors[this.actors.length - 1];
+ },
+ lastLoop: function () {
+ return this.loops[this.loops.length - 1];
+ },
+ lastMessage: function () {
+ return this.messages[this.messages.length - 1];
+ },
+ lastNote: function () {
+ return this.notes[this.notes.length - 1];
+ },
+ actors: [],
+ boxes: [],
+ loops: [],
+ messages: [],
+ notes: [],
+ },
+ init: function () {
+ (this.sequenceItems = []),
+ (this.activations = []),
+ this.models.clear(),
+ (this.data = { startx: void 0, stopx: void 0, starty: void 0, stopy: void 0 }),
+ (this.verticalPos = 0),
+ pt((0, i.c)());
+ },
+ updateVal: function (t, e, a, i) {
+ void 0 === t[e] ? (t[e] = a) : (t[e] = i(a, t[e]));
+ },
+ updateBounds: function (t, e, a, i) {
+ const r = this;
+ let s = 0;
+ function n(n) {
+ return function (o) {
+ s++;
+ const c = r.sequenceItems.length - s + 1;
+ r.updateVal(o, "starty", e - c * st.boxMargin, Math.min),
+ r.updateVal(o, "stopy", i + c * st.boxMargin, Math.max),
+ r.updateVal(nt.data, "startx", t - c * st.boxMargin, Math.min),
+ r.updateVal(nt.data, "stopx", a + c * st.boxMargin, Math.max),
+ "activation" !== n &&
+ (r.updateVal(o, "startx", t - c * st.boxMargin, Math.min),
+ r.updateVal(o, "stopx", a + c * st.boxMargin, Math.max),
+ r.updateVal(nt.data, "starty", e - c * st.boxMargin, Math.min),
+ r.updateVal(nt.data, "stopy", i + c * st.boxMargin, Math.max));
+ };
+ }
+ this.sequenceItems.forEach(n()), this.activations.forEach(n("activation"));
+ },
+ insert: function (t, e, a, r) {
+ const s = i.e.getMin(t, a),
+ n = i.e.getMax(t, a),
+ o = i.e.getMin(e, r),
+ c = i.e.getMax(e, r);
+ this.updateVal(nt.data, "startx", s, Math.min),
+ this.updateVal(nt.data, "starty", o, Math.min),
+ this.updateVal(nt.data, "stopx", n, Math.max),
+ this.updateVal(nt.data, "stopy", c, Math.max),
+ this.updateBounds(s, o, n, c);
+ },
+ newActivation: function (t, e, a) {
+ const i = a[t.from.actor],
+ r = gt(t.from.actor).length || 0,
+ s = i.x + i.width / 2 + ((r - 1) * st.activationWidth) / 2;
+ this.activations.push({
+ startx: s,
+ starty: this.verticalPos + 2,
+ stopx: s + st.activationWidth,
+ stopy: void 0,
+ actor: t.from.actor,
+ anchored: K(e),
+ });
+ },
+ endActivation: function (t) {
+ const e = this.activations
+ .map(function (t) {
+ return t.actor;
+ })
+ .lastIndexOf(t.from.actor);
+ return this.activations.splice(e, 1)[0];
+ },
+ createLoop: function (t = { message: void 0, wrap: !1, width: void 0 }, e) {
+ return {
+ startx: void 0,
+ starty: this.verticalPos,
+ stopx: void 0,
+ stopy: void 0,
+ title: t.message,
+ wrap: t.wrap,
+ width: t.width,
+ height: 0,
+ fill: e,
+ };
+ },
+ newLoop: function (t = { message: void 0, wrap: !1, width: void 0 }, e) {
+ this.sequenceItems.push(this.createLoop(t, e));
+ },
+ endLoop: function () {
+ return this.sequenceItems.pop();
+ },
+ isLoopOverlap: function () {
+ return !!this.sequenceItems.length && this.sequenceItems[this.sequenceItems.length - 1].overlap;
+ },
+ addSectionToLoop: function (t) {
+ const e = this.sequenceItems.pop();
+ (e.sections = e.sections || []),
+ (e.sectionTitles = e.sectionTitles || []),
+ e.sections.push({ y: nt.getVerticalPos(), height: 0 }),
+ e.sectionTitles.push(t),
+ this.sequenceItems.push(e);
+ },
+ saveVerticalPos: function () {
+ this.isLoopOverlap() && (this.savedVerticalPos = this.verticalPos);
+ },
+ resetVerticalPos: function () {
+ this.isLoopOverlap() && (this.verticalPos = this.savedVerticalPos);
+ },
+ bumpVerticalPos: function (t) {
+ (this.verticalPos = this.verticalPos + t), (this.data.stopy = i.e.getMax(this.data.stopy, this.verticalPos));
+ },
+ getVerticalPos: function () {
+ return this.verticalPos;
+ },
+ getBounds: function () {
+ return { bounds: this.data, models: this.models };
+ },
+ },
+ ot = (t) => ({
+ fontFamily: t.messageFontFamily,
+ fontSize: t.messageFontSize,
+ fontWeight: t.messageFontWeight,
+ }),
+ ct = (t) => ({
+ fontFamily: t.noteFontFamily,
+ fontSize: t.noteFontSize,
+ fontWeight: t.noteFontWeight,
+ }),
+ lt = (t) => ({
+ fontFamily: t.actorFontFamily,
+ fontSize: t.actorFontSize,
+ fontWeight: t.actorFontWeight,
+ }),
+ ht = function (t, e, a, r) {
+ if (r) {
+ let r = 0;
+ nt.bumpVerticalPos(2 * st.boxMargin);
+ for (const s of a) {
+ const a = e[s];
+ a.stopy || (a.stopy = nt.getVerticalPos());
+ const n = H(t, a, st, !0);
+ r = i.e.getMax(r, n);
+ }
+ nt.bumpVerticalPos(r + st.boxMargin);
+ } else
+ for (const i of a) {
+ const a = e[i];
+ H(t, a, st, !1);
+ }
+ },
+ dt = function (t, e, a, i) {
+ let r = 0,
+ s = 0;
+ for (const n of a) {
+ const a = e[n],
+ o = yt(a),
+ c = j(t, a, o, st, st.forceMenus, i);
+ c.height > r && (r = c.height), c.width + a.x > s && (s = c.width + a.x);
+ }
+ return { maxHeight: r, maxWidth: s };
+ },
+ pt = function (t) {
+ (0, i.f)(st, t),
+ t.fontFamily && (st.actorFontFamily = st.noteFontFamily = st.messageFontFamily = t.fontFamily),
+ t.fontSize && (st.actorFontSize = st.noteFontSize = st.messageFontSize = t.fontSize),
+ t.fontWeight && (st.actorFontWeight = st.noteFontWeight = st.messageFontWeight = t.fontWeight);
+ },
+ gt = function (t) {
+ return nt.activations.filter(function (e) {
+ return e.actor === t;
+ });
+ },
+ ut = function (t, e) {
+ const a = e[t],
+ r = gt(t);
+ return [
+ r.reduce(
+ function (t, e) {
+ return i.e.getMin(t, e.startx);
+ },
+ a.x + a.width / 2,
+ ),
+ r.reduce(
+ function (t, e) {
+ return i.e.getMax(t, e.stopx);
+ },
+ a.x + a.width / 2,
+ ),
+ ];
+ };
+ function xt(t, e, a, r, s) {
+ nt.bumpVerticalPos(a);
+ let n = r;
+ if (e.id && e.message && t[e.id]) {
+ const a = t[e.id].width,
+ s = ot(st);
+ (e.message = i.u.wrapLabel(`[${e.message}]`, a - 2 * st.wrapPadding, s)), (e.width = a), (e.wrap = !0);
+ const o = i.u.calculateTextDimensions(e.message, s),
+ c = i.e.getMax(o.height, st.labelBoxHeight);
+ (n = r + c), i.l.debug(`${c} - ${e.message}`);
+ }
+ s(e), nt.bumpVerticalPos(n);
+ }
+ const yt = function (t) {
+ let e = 0;
+ const a = lt(st);
+ for (const r in t.links) {
+ const t = i.u.calculateTextDimensions(r, a).width + 2 * st.wrapPadding + 2 * st.boxMargin;
+ e < t && (e = t);
+ }
+ return e;
+ },
+ mt = {
+ parser: c,
+ db: S,
+ renderer: {
+ bounds: nt,
+ drawActors: ht,
+ drawActorsPopup: dt,
+ setConf: pt,
+ draw: function (t, e, a, n) {
+ const { securityLevel: o, sequence: c } = (0, i.c)();
+ let l;
+ (st = c), "sandbox" === o && (l = (0, r.Ys)("#i" + e));
+ const h = "sandbox" === o ? (0, r.Ys)(l.nodes()[0].contentDocument.body) : (0, r.Ys)("body"),
+ d = "sandbox" === o ? l.nodes()[0].contentDocument : document;
+ nt.init(), i.l.debug(n.db);
+ const p = "sandbox" === o ? h.select(`[id="${e}"]`) : (0, r.Ys)(`[id="${e}"]`),
+ g = n.db.getActors(),
+ u = n.db.getCreatedActors(),
+ x = n.db.getDestroyedActors(),
+ y = n.db.getBoxes();
+ let m = n.db.getActorKeys();
+ const f = n.db.getMessages(),
+ b = n.db.getDiagramTitle(),
+ T = n.db.hasAtLeastOneBox(),
+ E = n.db.hasAtLeastOneBoxWithTitle(),
+ w = (function (t, e, a) {
+ const r = {};
+ return (
+ e.forEach(function (e) {
+ if (t[e.to] && t[e.from]) {
+ const s = t[e.to];
+ if (e.placement === a.db.PLACEMENT.LEFTOF && !s.prevActor) return;
+ if (e.placement === a.db.PLACEMENT.RIGHTOF && !s.nextActor) return;
+ const n = void 0 !== e.placement,
+ o = !n,
+ c = n ? ct(st) : ot(st),
+ l = e.wrap ? i.u.wrapLabel(e.message, st.width - 2 * st.wrapPadding, c) : e.message,
+ h = i.u.calculateTextDimensions(l, c).width + 2 * st.wrapPadding;
+ o && e.from === s.nextActor
+ ? (r[e.to] = i.e.getMax(r[e.to] || 0, h))
+ : o && e.from === s.prevActor
+ ? (r[e.from] = i.e.getMax(r[e.from] || 0, h))
+ : o && e.from === e.to
+ ? ((r[e.from] = i.e.getMax(r[e.from] || 0, h / 2)), (r[e.to] = i.e.getMax(r[e.to] || 0, h / 2)))
+ : e.placement === a.db.PLACEMENT.RIGHTOF
+ ? (r[e.from] = i.e.getMax(r[e.from] || 0, h))
+ : e.placement === a.db.PLACEMENT.LEFTOF
+ ? (r[s.prevActor] = i.e.getMax(r[s.prevActor] || 0, h))
+ : e.placement === a.db.PLACEMENT.OVER &&
+ (s.prevActor && (r[s.prevActor] = i.e.getMax(r[s.prevActor] || 0, h / 2)),
+ s.nextActor && (r[e.from] = i.e.getMax(r[e.from] || 0, h / 2)));
+ }
+ }),
+ i.l.debug("maxMessageWidthPerActor:", r),
+ r
+ );
+ })(g, f, n);
+ if (
+ ((st.height = (function (t, e, a) {
+ let r = 0;
+ Object.keys(t).forEach((e) => {
+ const a = t[e];
+ a.wrap && (a.description = i.u.wrapLabel(a.description, st.width - 2 * st.wrapPadding, lt(st)));
+ const s = i.u.calculateTextDimensions(a.description, lt(st));
+ (a.width = a.wrap ? st.width : i.e.getMax(st.width, s.width + 2 * st.wrapPadding)),
+ (a.height = a.wrap ? i.e.getMax(s.height, st.height) : st.height),
+ (r = i.e.getMax(r, a.height));
+ });
+ for (const a in e) {
+ const r = t[a];
+ if (!r) continue;
+ const s = t[r.nextActor];
+ if (!s) {
+ const t = e[a] + st.actorMargin - r.width / 2;
+ r.margin = i.e.getMax(t, st.actorMargin);
+ continue;
+ }
+ const n = e[a] + st.actorMargin - r.width / 2 - s.width / 2;
+ r.margin = i.e.getMax(n, st.actorMargin);
+ }
+ let s = 0;
+ return (
+ a.forEach((e) => {
+ const a = ot(st);
+ let r = e.actorKeys.reduce((e, a) => e + (t[a].width + (t[a].margin || 0)), 0);
+ (r -= 2 * st.boxTextMargin), e.wrap && (e.name = i.u.wrapLabel(e.name, r - 2 * st.wrapPadding, a));
+ const n = i.u.calculateTextDimensions(e.name, a);
+ s = i.e.getMax(n.height, s);
+ const o = i.e.getMax(r, n.width + 2 * st.wrapPadding);
+ if (((e.margin = st.boxTextMargin), r < o)) {
+ const t = (o - r) / 2;
+ e.margin += t;
+ }
+ }),
+ a.forEach((t) => (t.textMaxHeight = s)),
+ i.e.getMax(r, st.height)
+ );
+ })(g, w, y)),
+ it(p),
+ at(p),
+ rt(p),
+ T && (nt.bumpVerticalPos(st.boxMargin), E && nt.bumpVerticalPos(y[0].textMaxHeight)),
+ !0 === st.hideUnusedParticipants)
+ ) {
+ const t = new Set();
+ f.forEach((e) => {
+ t.add(e.from), t.add(e.to);
+ }),
+ (m = m.filter((e) => t.has(e)));
+ }
+ !(function (t, e, a, r, s, n, o) {
+ let c,
+ l = 0,
+ h = 0,
+ d = 0;
+ for (const t of r) {
+ const r = e[t],
+ s = r.box;
+ c && c != s && (nt.models.addBox(c), (h += st.boxMargin + c.margin)),
+ s && s != c && ((s.x = l + h), (s.y = 0), (h += s.margin)),
+ (r.width = r.width || st.width),
+ (r.height = i.e.getMax(r.height || st.height, st.height)),
+ (r.margin = r.margin || st.actorMargin),
+ (d = i.e.getMax(d, r.height)),
+ a[r.name] && (h += r.width / 2),
+ (r.x = l + h),
+ (r.starty = nt.getVerticalPos()),
+ nt.insert(r.x, 0, r.x + r.width, r.height),
+ (l += r.width + h),
+ r.box && (r.box.width = l + s.margin - r.box.x),
+ (h = r.margin),
+ (c = r.box),
+ nt.models.addActor(r);
+ }
+ c && nt.models.addBox(c), nt.bumpVerticalPos(d);
+ })(0, g, u, m);
+ const _ = (function (t, e, a, r) {
+ const s = {},
+ n = [];
+ let o, c, l;
+ return (
+ t.forEach(function (t) {
+ switch (((t.id = i.u.random({ length: 10 })), t.type)) {
+ case r.db.LINETYPE.LOOP_START:
+ case r.db.LINETYPE.ALT_START:
+ case r.db.LINETYPE.OPT_START:
+ case r.db.LINETYPE.PAR_START:
+ case r.db.LINETYPE.PAR_OVER_START:
+ case r.db.LINETYPE.CRITICAL_START:
+ case r.db.LINETYPE.BREAK_START:
+ n.push({
+ id: t.id,
+ msg: t.message,
+ from: Number.MAX_SAFE_INTEGER,
+ to: Number.MIN_SAFE_INTEGER,
+ width: 0,
+ });
+ break;
+ case r.db.LINETYPE.ALT_ELSE:
+ case r.db.LINETYPE.PAR_AND:
+ case r.db.LINETYPE.CRITICAL_OPTION:
+ t.message && ((o = n.pop()), (s[o.id] = o), (s[t.id] = o), n.push(o));
+ break;
+ case r.db.LINETYPE.LOOP_END:
+ case r.db.LINETYPE.ALT_END:
+ case r.db.LINETYPE.OPT_END:
+ case r.db.LINETYPE.PAR_END:
+ case r.db.LINETYPE.CRITICAL_END:
+ case r.db.LINETYPE.BREAK_END:
+ (o = n.pop()), (s[o.id] = o);
+ break;
+ case r.db.LINETYPE.ACTIVE_START:
+ {
+ const a = e[t.from ? t.from.actor : t.to.actor],
+ i = gt(t.from ? t.from.actor : t.to.actor).length,
+ r = a.x + a.width / 2 + ((i - 1) * st.activationWidth) / 2,
+ s = {
+ startx: r,
+ stopx: r + st.activationWidth,
+ actor: t.from.actor,
+ enabled: !0,
+ };
+ nt.activations.push(s);
+ }
+ break;
+ case r.db.LINETYPE.ACTIVE_END: {
+ const e = nt.activations.map((t) => t.actor).lastIndexOf(t.from.actor);
+ delete nt.activations.splice(e, 1)[0];
+ }
+ }
+ void 0 !== t.placement
+ ? ((c = (function (t, e, a) {
+ const r = e[t.from].x,
+ s = e[t.to].x,
+ n = t.wrap && t.message;
+ let o = i.u.calculateTextDimensions(n ? i.u.wrapLabel(t.message, st.width, ct(st)) : t.message, ct(st));
+ const c = {
+ width: n ? st.width : i.e.getMax(st.width, o.width + 2 * st.noteMargin),
+ height: 0,
+ startx: e[t.from].x,
+ stopx: 0,
+ starty: 0,
+ stopy: 0,
+ message: t.message,
+ };
+ return (
+ t.placement === a.db.PLACEMENT.RIGHTOF
+ ? ((c.width = n
+ ? i.e.getMax(st.width, o.width)
+ : i.e.getMax(e[t.from].width / 2 + e[t.to].width / 2, o.width + 2 * st.noteMargin)),
+ (c.startx = r + (e[t.from].width + st.actorMargin) / 2))
+ : t.placement === a.db.PLACEMENT.LEFTOF
+ ? ((c.width = n
+ ? i.e.getMax(st.width, o.width + 2 * st.noteMargin)
+ : i.e.getMax(e[t.from].width / 2 + e[t.to].width / 2, o.width + 2 * st.noteMargin)),
+ (c.startx = r - c.width + (e[t.from].width - st.actorMargin) / 2))
+ : t.to === t.from
+ ? ((o = i.u.calculateTextDimensions(
+ n ? i.u.wrapLabel(t.message, i.e.getMax(st.width, e[t.from].width), ct(st)) : t.message,
+ ct(st),
+ )),
+ (c.width = n
+ ? i.e.getMax(st.width, e[t.from].width)
+ : i.e.getMax(e[t.from].width, st.width, o.width + 2 * st.noteMargin)),
+ (c.startx = r + (e[t.from].width - c.width) / 2))
+ : ((c.width = Math.abs(r + e[t.from].width / 2 - (s + e[t.to].width / 2)) + st.actorMargin),
+ (c.startx = r < s ? r + e[t.from].width / 2 - st.actorMargin / 2 : s + e[t.to].width / 2 - st.actorMargin / 2)),
+ n && (c.message = i.u.wrapLabel(t.message, c.width - 2 * st.wrapPadding, ct(st))),
+ i.l.debug(`NM:[${c.startx},${c.stopx},${c.starty},${c.stopy}:${c.width},${c.height}=${t.message}]`),
+ c
+ );
+ })(t, e, r)),
+ (t.noteModel = c),
+ n.forEach((t) => {
+ (o = t),
+ (o.from = i.e.getMin(o.from, c.startx)),
+ (o.to = i.e.getMax(o.to, c.startx + c.width)),
+ (o.width = i.e.getMax(o.width, Math.abs(o.from - o.to)) - st.labelBoxWidth);
+ }))
+ : ((l = (function (t, e, a) {
+ let r = !1;
+ if (
+ ([
+ a.db.LINETYPE.SOLID_OPEN,
+ a.db.LINETYPE.DOTTED_OPEN,
+ a.db.LINETYPE.SOLID,
+ a.db.LINETYPE.DOTTED,
+ a.db.LINETYPE.SOLID_CROSS,
+ a.db.LINETYPE.DOTTED_CROSS,
+ a.db.LINETYPE.SOLID_POINT,
+ a.db.LINETYPE.DOTTED_POINT,
+ ].includes(t.type) && (r = !0),
+ !r)
+ )
+ return {};
+ const s = ut(t.from, e),
+ n = ut(t.to, e),
+ o = s[0] <= n[0] ? 1 : 0,
+ c = s[0] < n[0] ? 0 : 1,
+ l = [...s, ...n],
+ h = Math.abs(n[c] - s[o]);
+ t.wrap && t.message && (t.message = i.u.wrapLabel(t.message, i.e.getMax(h + 2 * st.wrapPadding, st.width), ot(st)));
+ const d = i.u.calculateTextDimensions(t.message, ot(st));
+ return {
+ width: i.e.getMax(t.wrap ? 0 : d.width + 2 * st.wrapPadding, h + 2 * st.wrapPadding, st.width),
+ height: 0,
+ startx: s[o],
+ stopx: n[c],
+ starty: 0,
+ stopy: 0,
+ message: t.message,
+ type: t.type,
+ wrap: t.wrap,
+ fromBounds: Math.min.apply(null, l),
+ toBounds: Math.max.apply(null, l),
+ };
+ })(t, e, r)),
+ (t.msgModel = l),
+ l.startx &&
+ l.stopx &&
+ n.length > 0 &&
+ n.forEach((a) => {
+ if (((o = a), l.startx === l.stopx)) {
+ const a = e[t.from],
+ r = e[t.to];
+ (o.from = i.e.getMin(a.x - l.width / 2, a.x - a.width / 2, o.from)),
+ (o.to = i.e.getMax(r.x + l.width / 2, r.x + a.width / 2, o.to)),
+ (o.width = i.e.getMax(o.width, Math.abs(o.to - o.from)) - st.labelBoxWidth);
+ } else
+ (o.from = i.e.getMin(l.startx, o.from)),
+ (o.to = i.e.getMax(l.stopx, o.to)),
+ (o.width = i.e.getMax(o.width, l.width) - st.labelBoxWidth);
+ }));
+ }),
+ (nt.activations = []),
+ i.l.debug("Loop type widths:", s),
+ s
+ );
+ })(f, g, 0, n);
+ Z(p), et(p), Q(p), tt(p);
+ let v = 1,
+ P = 1;
+ const k = [],
+ L = [];
+ f.forEach(function (t, e) {
+ let a, r, o;
+ switch (t.type) {
+ case n.db.LINETYPE.NOTE:
+ nt.resetVerticalPos(),
+ (r = t.noteModel),
+ (function (t, e) {
+ nt.bumpVerticalPos(st.boxMargin), (e.height = st.boxMargin), (e.starty = nt.getVerticalPos());
+ const a = (0, s.g)();
+ (a.x = e.startx), (a.y = e.starty), (a.width = e.width || st.width), (a.class = "note");
+ const i = t.append("g"),
+ r = z(i, a),
+ n = (0, s.e)();
+ (n.x = e.startx),
+ (n.y = e.starty),
+ (n.width = a.width),
+ (n.dy = "1em"),
+ (n.text = e.message),
+ (n.class = "noteText"),
+ (n.fontFamily = st.noteFontFamily),
+ (n.fontSize = st.noteFontSize),
+ (n.fontWeight = st.noteFontWeight),
+ (n.anchor = st.noteAlign),
+ (n.textMargin = st.noteMargin),
+ (n.valign = "center");
+ const o = $(i, n),
+ c = Math.round(o.map((t) => (t._groups || t)[0][0].getBBox().height).reduce((t, e) => t + e));
+ r.attr("height", c + 2 * st.noteMargin),
+ (e.height += c + 2 * st.noteMargin),
+ nt.bumpVerticalPos(c + 2 * st.noteMargin),
+ (e.stopy = e.starty + c + 2 * st.noteMargin),
+ (e.stopx = e.startx + a.width),
+ nt.insert(e.startx, e.starty, e.stopx, e.stopy),
+ nt.models.addNote(e);
+ })(p, r);
+ break;
+ case n.db.LINETYPE.ACTIVE_START:
+ nt.newActivation(t, p, g);
+ break;
+ case n.db.LINETYPE.ACTIVE_END:
+ !(function (t, e) {
+ const a = nt.endActivation(t);
+ a.starty + 18 > e && ((a.starty = e - 6), (e += 12)),
+ X(p, a, e, st, gt(t.from.actor).length),
+ nt.insert(a.startx, e - 10, a.stopx, e);
+ })(t, nt.getVerticalPos());
+ break;
+ case n.db.LINETYPE.LOOP_START:
+ xt(_, t, st.boxMargin, st.boxMargin + st.boxTextMargin, (t) => nt.newLoop(t));
+ break;
+ case n.db.LINETYPE.LOOP_END:
+ (a = nt.endLoop()), G(p, a, "loop", st), nt.bumpVerticalPos(a.stopy - nt.getVerticalPos()), nt.models.addLoop(a);
+ break;
+ case n.db.LINETYPE.RECT_START:
+ xt(_, t, st.boxMargin, st.boxMargin, (t) => nt.newLoop(void 0, t.message));
+ break;
+ case n.db.LINETYPE.RECT_END:
+ (a = nt.endLoop()), L.push(a), nt.models.addLoop(a), nt.bumpVerticalPos(a.stopy - nt.getVerticalPos());
+ break;
+ case n.db.LINETYPE.OPT_START:
+ xt(_, t, st.boxMargin, st.boxMargin + st.boxTextMargin, (t) => nt.newLoop(t));
+ break;
+ case n.db.LINETYPE.OPT_END:
+ (a = nt.endLoop()), G(p, a, "opt", st), nt.bumpVerticalPos(a.stopy - nt.getVerticalPos()), nt.models.addLoop(a);
+ break;
+ case n.db.LINETYPE.ALT_START:
+ xt(_, t, st.boxMargin, st.boxMargin + st.boxTextMargin, (t) => nt.newLoop(t));
+ break;
+ case n.db.LINETYPE.ALT_ELSE:
+ xt(_, t, st.boxMargin + st.boxTextMargin, st.boxMargin, (t) => nt.addSectionToLoop(t));
+ break;
+ case n.db.LINETYPE.ALT_END:
+ (a = nt.endLoop()), G(p, a, "alt", st), nt.bumpVerticalPos(a.stopy - nt.getVerticalPos()), nt.models.addLoop(a);
+ break;
+ case n.db.LINETYPE.PAR_START:
+ case n.db.LINETYPE.PAR_OVER_START:
+ xt(_, t, st.boxMargin, st.boxMargin + st.boxTextMargin, (t) => nt.newLoop(t)), nt.saveVerticalPos();
+ break;
+ case n.db.LINETYPE.PAR_AND:
+ xt(_, t, st.boxMargin + st.boxTextMargin, st.boxMargin, (t) => nt.addSectionToLoop(t));
+ break;
+ case n.db.LINETYPE.PAR_END:
+ (a = nt.endLoop()), G(p, a, "par", st), nt.bumpVerticalPos(a.stopy - nt.getVerticalPos()), nt.models.addLoop(a);
+ break;
+ case n.db.LINETYPE.AUTONUMBER:
+ (v = t.message.start || v),
+ (P = t.message.step || P),
+ t.message.visible ? n.db.enableSequenceNumbers() : n.db.disableSequenceNumbers();
+ break;
+ case n.db.LINETYPE.CRITICAL_START:
+ xt(_, t, st.boxMargin, st.boxMargin + st.boxTextMargin, (t) => nt.newLoop(t));
+ break;
+ case n.db.LINETYPE.CRITICAL_OPTION:
+ xt(_, t, st.boxMargin + st.boxTextMargin, st.boxMargin, (t) => nt.addSectionToLoop(t));
+ break;
+ case n.db.LINETYPE.CRITICAL_END:
+ (a = nt.endLoop()), G(p, a, "critical", st), nt.bumpVerticalPos(a.stopy - nt.getVerticalPos()), nt.models.addLoop(a);
+ break;
+ case n.db.LINETYPE.BREAK_START:
+ xt(_, t, st.boxMargin, st.boxMargin + st.boxTextMargin, (t) => nt.newLoop(t));
+ break;
+ case n.db.LINETYPE.BREAK_END:
+ (a = nt.endLoop()), G(p, a, "break", st), nt.bumpVerticalPos(a.stopy - nt.getVerticalPos()), nt.models.addLoop(a);
+ break;
+ default:
+ try {
+ (o = t.msgModel), (o.starty = nt.getVerticalPos()), (o.sequenceIndex = v), (o.sequenceVisible = n.db.showSequenceNumbers());
+ const a = (function (t, e) {
+ nt.bumpVerticalPos(10);
+ const { startx: a, stopx: r, message: s } = e,
+ n = i.e.splitBreaks(s).length,
+ o = i.u.calculateTextDimensions(s, ot(st)),
+ c = o.height / n;
+ let l;
+ (e.height += c), nt.bumpVerticalPos(c);
+ let h = o.height - 10;
+ const d = o.width;
+ if (a === r) {
+ (l = nt.getVerticalPos() + h), st.rightAngles || ((h += st.boxMargin), (l = nt.getVerticalPos() + h)), (h += 30);
+ const t = i.e.getMax(d / 2, st.width / 2);
+ nt.insert(a - t, nt.getVerticalPos() - 10 + h, r + t, nt.getVerticalPos() + 30 + h);
+ } else (h += st.boxMargin), (l = nt.getVerticalPos() + h), nt.insert(a, l - 10, r, l);
+ return (
+ nt.bumpVerticalPos(h),
+ (e.height += h),
+ (e.stopy = e.starty + e.height),
+ nt.insert(e.fromBounds, e.starty, e.toBounds, e.stopy),
+ l
+ );
+ })(0, o);
+ !(function (t, e, a, i, r, s, n) {
+ function o(a, i) {
+ a.x < r[t.from].x
+ ? (nt.insert(e.stopx - i, e.starty, e.startx, e.stopy + a.height / 2 + st.noteMargin), (e.stopx = e.stopx + i))
+ : (nt.insert(e.startx, e.starty, e.stopx + i, e.stopy + a.height / 2 + st.noteMargin), (e.stopx = e.stopx - i));
+ }
+ if (s[t.to] == i) {
+ const e = r[t.to];
+ o(e, "actor" == e.type ? 21 : e.width / 2 + 3), (e.starty = a - e.height / 2), nt.bumpVerticalPos(e.height / 2);
+ } else if (n[t.from] == i) {
+ const i = r[t.from];
+ st.mirrorActors &&
+ (function (a, i) {
+ a.x < r[t.to].x
+ ? (nt.insert(e.startx - i, e.starty, e.stopx, e.stopy + a.height / 2 + st.noteMargin), (e.startx = e.startx + i))
+ : (nt.insert(e.stopx, e.starty, e.startx + i, e.stopy + a.height / 2 + st.noteMargin), (e.startx = e.startx - i));
+ })(i, "actor" == i.type ? 18 : i.width / 2),
+ (i.stopy = a - i.height / 2),
+ nt.bumpVerticalPos(i.height / 2);
+ } else if (n[t.to] == i) {
+ const e = r[t.to];
+ st.mirrorActors && o(e, "actor" == e.type ? 21 : e.width / 2 + 3),
+ (e.stopy = a - e.height / 2),
+ nt.bumpVerticalPos(e.height / 2);
+ }
+ })(t, o, a, e, g, u, x),
+ k.push({ messageModel: o, lineStartY: a }),
+ nt.models.addMessage(o);
+ } catch (t) {
+ i.l.error("error while drawing message", t);
+ }
+ }
+ [
+ n.db.LINETYPE.SOLID_OPEN,
+ n.db.LINETYPE.DOTTED_OPEN,
+ n.db.LINETYPE.SOLID,
+ n.db.LINETYPE.DOTTED,
+ n.db.LINETYPE.SOLID_CROSS,
+ n.db.LINETYPE.DOTTED_CROSS,
+ n.db.LINETYPE.SOLID_POINT,
+ n.db.LINETYPE.DOTTED_POINT,
+ ].includes(t.type) && (v += P);
+ }),
+ i.l.debug("createdActors", u),
+ i.l.debug("destroyedActors", x),
+ ht(p, g, m, !1),
+ k.forEach((t) =>
+ (function (t, e, a, r) {
+ const { startx: n, stopx: o, starty: c, message: l, type: h, sequenceIndex: d, sequenceVisible: p } = e,
+ g = i.u.calculateTextDimensions(l, ot(st)),
+ u = (0, s.e)();
+ (u.x = n),
+ (u.y = c + 10),
+ (u.width = o - n),
+ (u.class = "messageText"),
+ (u.dy = "1em"),
+ (u.text = l),
+ (u.fontFamily = st.messageFontFamily),
+ (u.fontSize = st.messageFontSize),
+ (u.fontWeight = st.messageFontWeight),
+ (u.anchor = st.messageAlign),
+ (u.valign = "center"),
+ (u.textMargin = st.wrapPadding),
+ (u.tspan = !1),
+ $(t, u);
+ const x = g.width;
+ let y;
+ n === o
+ ? (y = st.rightAngles
+ ? t.append("path").attr("d", `M ${n},${a} H ${n + i.e.getMax(st.width / 2, x / 2)} V ${a + 25} H ${n}`)
+ : t
+ .append("path")
+ .attr(
+ "d",
+ "M " + n + "," + a + " C " + (n + 60) + "," + (a - 10) + " " + (n + 60) + "," + (a + 30) + " " + n + "," + (a + 20),
+ ))
+ : ((y = t.append("line")), y.attr("x1", n), y.attr("y1", a), y.attr("x2", o), y.attr("y2", a)),
+ h === r.db.LINETYPE.DOTTED ||
+ h === r.db.LINETYPE.DOTTED_CROSS ||
+ h === r.db.LINETYPE.DOTTED_POINT ||
+ h === r.db.LINETYPE.DOTTED_OPEN
+ ? (y.style("stroke-dasharray", "3, 3"), y.attr("class", "messageLine1"))
+ : y.attr("class", "messageLine0");
+ let m = "";
+ st.arrowMarkerAbsolute &&
+ ((m = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search),
+ (m = m.replace(/\(/g, "\\(")),
+ (m = m.replace(/\)/g, "\\)"))),
+ y.attr("stroke-width", 2),
+ y.attr("stroke", "none"),
+ y.style("fill", "none"),
+ (h !== r.db.LINETYPE.SOLID && h !== r.db.LINETYPE.DOTTED) || y.attr("marker-end", "url(" + m + "#arrowhead)"),
+ (h !== r.db.LINETYPE.SOLID_POINT && h !== r.db.LINETYPE.DOTTED_POINT) || y.attr("marker-end", "url(" + m + "#filled-head)"),
+ (h !== r.db.LINETYPE.SOLID_CROSS && h !== r.db.LINETYPE.DOTTED_CROSS) || y.attr("marker-end", "url(" + m + "#crosshead)"),
+ (p || st.showSequenceNumbers) &&
+ (y.attr("marker-start", "url(" + m + "#sequencenumber)"),
+ t
+ .append("text")
+ .attr("x", n)
+ .attr("y", a + 4)
+ .attr("font-family", "sans-serif")
+ .attr("font-size", "12px")
+ .attr("text-anchor", "middle")
+ .attr("class", "sequenceNumber")
+ .text(d));
+ })(p, t.messageModel, t.lineStartY, n),
+ ),
+ st.mirrorActors && ht(p, g, m, !0),
+ L.forEach((t) => J(p, t)),
+ B(p, g, m, st),
+ nt.models.boxes.forEach(function (t) {
+ (t.height = nt.getVerticalPos() - t.y),
+ nt.insert(t.x, t.y, t.x + t.width, t.height),
+ (t.startx = t.x),
+ (t.starty = t.y),
+ (t.stopx = t.startx + t.width),
+ (t.stopy = t.starty + t.height),
+ (t.stroke = "rgb(0,0,0, 0.5)"),
+ U(p, t, st);
+ }),
+ T && nt.bumpVerticalPos(st.boxMargin);
+ const I = dt(p, g, m, d),
+ { bounds: M } = nt.getBounds();
+ let N = M.stopy - M.starty;
+ N < I.maxHeight && (N = I.maxHeight);
+ let A = N + 2 * st.diagramMarginY;
+ st.mirrorActors && (A = A - st.boxMargin + st.bottomMarginAdj);
+ let S = M.stopx - M.startx;
+ S < I.maxWidth && (S = I.maxWidth);
+ const O = S + 2 * st.diagramMarginX;
+ b &&
+ p
+ .append("text")
+ .text(b)
+ .attr("x", (M.stopx - M.startx) / 2 - 2 * st.diagramMarginX)
+ .attr("y", -25),
+ (0, i.i)(p, A, O, st.useMaxWidth);
+ const D = b ? 40 : 0;
+ p.attr("viewBox", M.startx - st.diagramMarginX + " -" + (st.diagramMarginY + D) + " " + O + " " + (A + D)),
+ i.l.debug("models:", nt.models);
+ },
+ },
+ styles: (t) =>
+ `.actor {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${t.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${t.actorLineColor};\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${t.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${t.signalColor};\n }\n\n #arrowhead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .sequenceNumber {\n fill: ${t.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${t.signalColor};\n }\n\n #crosshead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .messageText {\n fill: ${t.signalTextColor};\n stroke: none;\n }\n\n .labelBox {\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${t.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${t.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${t.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation1 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation2 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${t.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n .actor-man circle, line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n stroke-width: 2px;\n }\n`,
+ };
+ },
+ 8252: function (t, e, a) {
+ a.d(e, {
+ a: function () {
+ return n;
+ },
+ b: function () {
+ return l;
+ },
+ c: function () {
+ return c;
+ },
+ d: function () {
+ return s;
+ },
+ e: function () {
+ return d;
+ },
+ f: function () {
+ return o;
+ },
+ g: function () {
+ return h;
+ },
+ });
+ var i = a(7967),
+ r = a(9339);
+ const s = (t, e) => {
+ const a = t.append("rect");
+ if (
+ (a.attr("x", e.x),
+ a.attr("y", e.y),
+ a.attr("fill", e.fill),
+ a.attr("stroke", e.stroke),
+ a.attr("width", e.width),
+ a.attr("height", e.height),
+ void 0 !== e.rx && a.attr("rx", e.rx),
+ void 0 !== e.ry && a.attr("ry", e.ry),
+ void 0 !== e.attrs)
+ )
+ for (const t in e.attrs) a.attr(t, e.attrs[t]);
+ return void 0 !== e.class && a.attr("class", e.class), a;
+ },
+ n = (t, e) => {
+ const a = {
+ x: e.startx,
+ y: e.starty,
+ width: e.stopx - e.startx,
+ height: e.stopy - e.starty,
+ fill: e.fill,
+ stroke: e.stroke,
+ class: "rect",
+ };
+ s(t, a).lower();
+ },
+ o = (t, e) => {
+ const a = e.text.replace(r.J, " "),
+ i = t.append("text");
+ i.attr("x", e.x),
+ i.attr("y", e.y),
+ i.attr("class", "legend"),
+ i.style("text-anchor", e.anchor),
+ void 0 !== e.class && i.attr("class", e.class);
+ const s = i.append("tspan");
+ return s.attr("x", e.x + 2 * e.textMargin), s.text(a), i;
+ },
+ c = (t, e, a, r) => {
+ const s = t.append("image");
+ s.attr("x", e), s.attr("y", a);
+ const n = (0, i.Nm)(r);
+ s.attr("xlink:href", n);
+ },
+ l = (t, e, a, r) => {
+ const s = t.append("use");
+ s.attr("x", e), s.attr("y", a);
+ const n = (0, i.Nm)(r);
+ s.attr("xlink:href", `#${n}`);
+ },
+ h = () => ({
+ x: 0,
+ y: 0,
+ width: 100,
+ height: 100,
+ fill: "#EDF2AE",
+ stroke: "#666",
+ anchor: "start",
+ rx: 0,
+ ry: 0,
+ }),
+ d = () => ({
+ x: 0,
+ y: 0,
+ width: 100,
+ height: 100,
+ "text-anchor": "start",
+ style: "#666",
+ textMargin: 0,
+ rx: 0,
+ ry: 0,
+ tspan: !0,
+ });
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/423-897d7f17.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/423-897d7f17.chunk.min.js
new file mode 100644
index 000000000..bb145817c
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/423-897d7f17.chunk.min.js
@@ -0,0 +1,1865 @@
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [423],
+ {
+ 1423: function (e, t, n) {
+ n.d(t, {
+ d: function () {
+ return b;
+ },
+ p: function () {
+ return r;
+ },
+ s: function () {
+ return D;
+ },
+ });
+ var s = n(7274),
+ i = n(9339),
+ u = (function () {
+ var e = function (e, t, n, s) {
+ for (n = n || {}, s = e.length; s--; n[e[s]] = t);
+ return n;
+ },
+ t = [1, 34],
+ n = [1, 35],
+ s = [1, 36],
+ i = [1, 37],
+ u = [1, 9],
+ r = [1, 8],
+ a = [1, 19],
+ c = [1, 20],
+ o = [1, 21],
+ l = [1, 40],
+ h = [1, 41],
+ A = [1, 27],
+ p = [1, 25],
+ d = [1, 26],
+ y = [1, 32],
+ E = [1, 33],
+ C = [1, 28],
+ m = [1, 29],
+ k = [1, 30],
+ g = [1, 31],
+ F = [1, 45],
+ f = [1, 42],
+ b = [1, 43],
+ D = [1, 44],
+ _ = [1, 46],
+ B = [1, 24],
+ T = [1, 16, 24],
+ S = [1, 60],
+ N = [1, 61],
+ v = [1, 62],
+ L = [1, 63],
+ $ = [1, 64],
+ I = [1, 65],
+ O = [1, 66],
+ x = [1, 16, 24, 52],
+ R = [1, 77],
+ P = [1, 16, 24, 27, 28, 36, 50, 52, 55, 68, 69, 70, 71, 72, 73, 74, 79, 81],
+ w = [1, 16, 24, 27, 28, 34, 36, 50, 52, 55, 59, 68, 69, 70, 71, 72, 73, 74, 79, 81, 94, 96, 97, 98, 99],
+ G = [1, 86],
+ M = [28, 94, 96, 97, 98, 99],
+ U = [28, 73, 74, 94, 96, 97, 98, 99],
+ Y = [28, 68, 69, 70, 71, 72, 94, 96, 97, 98, 99],
+ K = [1, 99],
+ z = [1, 16, 24, 50, 52, 55],
+ Q = [1, 16, 24, 36],
+ j = [8, 9, 10, 11, 19, 23, 44, 46, 48, 53, 57, 58, 60, 61, 63, 65, 75, 76, 78, 82, 94, 96, 97, 98, 99],
+ X = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ mermaidDoc: 4,
+ directive: 5,
+ statements: 6,
+ direction: 7,
+ direction_tb: 8,
+ direction_bt: 9,
+ direction_rl: 10,
+ direction_lr: 11,
+ graphConfig: 12,
+ openDirective: 13,
+ typeDirective: 14,
+ closeDirective: 15,
+ NEWLINE: 16,
+ ":": 17,
+ argDirective: 18,
+ open_directive: 19,
+ type_directive: 20,
+ arg_directive: 21,
+ close_directive: 22,
+ CLASS_DIAGRAM: 23,
+ EOF: 24,
+ statement: 25,
+ classLabel: 26,
+ SQS: 27,
+ STR: 28,
+ SQE: 29,
+ namespaceName: 30,
+ alphaNumToken: 31,
+ className: 32,
+ classLiteralName: 33,
+ GENERICTYPE: 34,
+ relationStatement: 35,
+ LABEL: 36,
+ namespaceStatement: 37,
+ classStatement: 38,
+ methodStatement: 39,
+ annotationStatement: 40,
+ clickStatement: 41,
+ cssClassStatement: 42,
+ noteStatement: 43,
+ acc_title: 44,
+ acc_title_value: 45,
+ acc_descr: 46,
+ acc_descr_value: 47,
+ acc_descr_multiline_value: 48,
+ namespaceIdentifier: 49,
+ STRUCT_START: 50,
+ classStatements: 51,
+ STRUCT_STOP: 52,
+ NAMESPACE: 53,
+ classIdentifier: 54,
+ STYLE_SEPARATOR: 55,
+ members: 56,
+ CLASS: 57,
+ ANNOTATION_START: 58,
+ ANNOTATION_END: 59,
+ MEMBER: 60,
+ SEPARATOR: 61,
+ relation: 62,
+ NOTE_FOR: 63,
+ noteText: 64,
+ NOTE: 65,
+ relationType: 66,
+ lineType: 67,
+ AGGREGATION: 68,
+ EXTENSION: 69,
+ COMPOSITION: 70,
+ DEPENDENCY: 71,
+ LOLLIPOP: 72,
+ LINE: 73,
+ DOTTED_LINE: 74,
+ CALLBACK: 75,
+ LINK: 76,
+ LINK_TARGET: 77,
+ CLICK: 78,
+ CALLBACK_NAME: 79,
+ CALLBACK_ARGS: 80,
+ HREF: 81,
+ CSSCLASS: 82,
+ commentToken: 83,
+ textToken: 84,
+ graphCodeTokens: 85,
+ textNoTagsToken: 86,
+ TAGSTART: 87,
+ TAGEND: 88,
+ "==": 89,
+ "--": 90,
+ PCT: 91,
+ DEFAULT: 92,
+ SPACE: 93,
+ MINUS: 94,
+ keywords: 95,
+ UNICODE_TEXT: 96,
+ NUM: 97,
+ ALPHA: 98,
+ BQUOTE_STR: 99,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 8: "direction_tb",
+ 9: "direction_bt",
+ 10: "direction_rl",
+ 11: "direction_lr",
+ 16: "NEWLINE",
+ 17: ":",
+ 19: "open_directive",
+ 20: "type_directive",
+ 21: "arg_directive",
+ 22: "close_directive",
+ 23: "CLASS_DIAGRAM",
+ 24: "EOF",
+ 27: "SQS",
+ 28: "STR",
+ 29: "SQE",
+ 34: "GENERICTYPE",
+ 36: "LABEL",
+ 44: "acc_title",
+ 45: "acc_title_value",
+ 46: "acc_descr",
+ 47: "acc_descr_value",
+ 48: "acc_descr_multiline_value",
+ 50: "STRUCT_START",
+ 52: "STRUCT_STOP",
+ 53: "NAMESPACE",
+ 55: "STYLE_SEPARATOR",
+ 57: "CLASS",
+ 58: "ANNOTATION_START",
+ 59: "ANNOTATION_END",
+ 60: "MEMBER",
+ 61: "SEPARATOR",
+ 63: "NOTE_FOR",
+ 65: "NOTE",
+ 68: "AGGREGATION",
+ 69: "EXTENSION",
+ 70: "COMPOSITION",
+ 71: "DEPENDENCY",
+ 72: "LOLLIPOP",
+ 73: "LINE",
+ 74: "DOTTED_LINE",
+ 75: "CALLBACK",
+ 76: "LINK",
+ 77: "LINK_TARGET",
+ 78: "CLICK",
+ 79: "CALLBACK_NAME",
+ 80: "CALLBACK_ARGS",
+ 81: "HREF",
+ 82: "CSSCLASS",
+ 85: "graphCodeTokens",
+ 87: "TAGSTART",
+ 88: "TAGEND",
+ 89: "==",
+ 90: "--",
+ 91: "PCT",
+ 92: "DEFAULT",
+ 93: "SPACE",
+ 94: "MINUS",
+ 95: "keywords",
+ 96: "UNICODE_TEXT",
+ 97: "NUM",
+ 98: "ALPHA",
+ 99: "BQUOTE_STR",
+ },
+ productions_: [
+ 0,
+ [3, 1],
+ [3, 2],
+ [3, 1],
+ [7, 1],
+ [7, 1],
+ [7, 1],
+ [7, 1],
+ [4, 1],
+ [5, 4],
+ [5, 6],
+ [13, 1],
+ [14, 1],
+ [18, 1],
+ [15, 1],
+ [12, 4],
+ [6, 1],
+ [6, 2],
+ [6, 3],
+ [26, 3],
+ [30, 1],
+ [30, 2],
+ [32, 1],
+ [32, 1],
+ [32, 2],
+ [32, 2],
+ [32, 2],
+ [25, 1],
+ [25, 2],
+ [25, 1],
+ [25, 1],
+ [25, 1],
+ [25, 1],
+ [25, 1],
+ [25, 1],
+ [25, 1],
+ [25, 1],
+ [25, 2],
+ [25, 2],
+ [25, 1],
+ [37, 4],
+ [37, 5],
+ [49, 2],
+ [51, 1],
+ [51, 2],
+ [51, 3],
+ [38, 1],
+ [38, 3],
+ [38, 4],
+ [38, 6],
+ [54, 2],
+ [54, 3],
+ [40, 4],
+ [56, 1],
+ [56, 2],
+ [39, 1],
+ [39, 2],
+ [39, 1],
+ [39, 1],
+ [35, 3],
+ [35, 4],
+ [35, 4],
+ [35, 5],
+ [43, 3],
+ [43, 2],
+ [62, 3],
+ [62, 2],
+ [62, 2],
+ [62, 1],
+ [66, 1],
+ [66, 1],
+ [66, 1],
+ [66, 1],
+ [66, 1],
+ [67, 1],
+ [67, 1],
+ [41, 3],
+ [41, 4],
+ [41, 3],
+ [41, 4],
+ [41, 4],
+ [41, 5],
+ [41, 3],
+ [41, 4],
+ [41, 4],
+ [41, 5],
+ [41, 4],
+ [41, 5],
+ [41, 5],
+ [41, 6],
+ [42, 3],
+ [83, 1],
+ [83, 1],
+ [84, 1],
+ [84, 1],
+ [84, 1],
+ [84, 1],
+ [84, 1],
+ [84, 1],
+ [84, 1],
+ [86, 1],
+ [86, 1],
+ [86, 1],
+ [86, 1],
+ [31, 1],
+ [31, 1],
+ [31, 1],
+ [31, 1],
+ [33, 1],
+ [64, 1],
+ ],
+ performAction: function (e, t, n, s, i, u, r) {
+ var a = u.length - 1;
+ switch (i) {
+ case 4:
+ s.setDirection("TB");
+ break;
+ case 5:
+ s.setDirection("BT");
+ break;
+ case 6:
+ s.setDirection("RL");
+ break;
+ case 7:
+ s.setDirection("LR");
+ break;
+ case 11:
+ s.parseDirective("%%{", "open_directive");
+ break;
+ case 12:
+ s.parseDirective(u[a], "type_directive");
+ break;
+ case 13:
+ (u[a] = u[a].trim().replace(/'/g, '"')), s.parseDirective(u[a], "arg_directive");
+ break;
+ case 14:
+ s.parseDirective("}%%", "close_directive", "class");
+ break;
+ case 19:
+ this.$ = u[a - 1];
+ break;
+ case 20:
+ case 22:
+ case 23:
+ this.$ = u[a];
+ break;
+ case 21:
+ case 24:
+ this.$ = u[a - 1] + u[a];
+ break;
+ case 25:
+ case 26:
+ this.$ = u[a - 1] + "~" + u[a] + "~";
+ break;
+ case 27:
+ s.addRelation(u[a]);
+ break;
+ case 28:
+ (u[a - 1].title = s.cleanupLabel(u[a])), s.addRelation(u[a - 1]);
+ break;
+ case 37:
+ (this.$ = u[a].trim()), s.setAccTitle(this.$);
+ break;
+ case 38:
+ case 39:
+ (this.$ = u[a].trim()), s.setAccDescription(this.$);
+ break;
+ case 40:
+ s.addClassesToNamespace(u[a - 3], u[a - 1]);
+ break;
+ case 41:
+ s.addClassesToNamespace(u[a - 4], u[a - 1]);
+ break;
+ case 42:
+ (this.$ = u[a]), s.addNamespace(u[a]);
+ break;
+ case 43:
+ case 53:
+ this.$ = [u[a]];
+ break;
+ case 44:
+ this.$ = [u[a - 1]];
+ break;
+ case 45:
+ u[a].unshift(u[a - 2]), (this.$ = u[a]);
+ break;
+ case 47:
+ s.setCssClass(u[a - 2], u[a]);
+ break;
+ case 48:
+ s.addMembers(u[a - 3], u[a - 1]);
+ break;
+ case 49:
+ s.setCssClass(u[a - 5], u[a - 3]), s.addMembers(u[a - 5], u[a - 1]);
+ break;
+ case 50:
+ (this.$ = u[a]), s.addClass(u[a]);
+ break;
+ case 51:
+ (this.$ = u[a - 1]), s.addClass(u[a - 1]), s.setClassLabel(u[a - 1], u[a]);
+ break;
+ case 52:
+ s.addAnnotation(u[a], u[a - 2]);
+ break;
+ case 54:
+ u[a].push(u[a - 1]), (this.$ = u[a]);
+ break;
+ case 55:
+ case 57:
+ case 58:
+ break;
+ case 56:
+ s.addMember(u[a - 1], s.cleanupLabel(u[a]));
+ break;
+ case 59:
+ this.$ = {
+ id1: u[a - 2],
+ id2: u[a],
+ relation: u[a - 1],
+ relationTitle1: "none",
+ relationTitle2: "none",
+ };
+ break;
+ case 60:
+ this.$ = {
+ id1: u[a - 3],
+ id2: u[a],
+ relation: u[a - 1],
+ relationTitle1: u[a - 2],
+ relationTitle2: "none",
+ };
+ break;
+ case 61:
+ this.$ = {
+ id1: u[a - 3],
+ id2: u[a],
+ relation: u[a - 2],
+ relationTitle1: "none",
+ relationTitle2: u[a - 1],
+ };
+ break;
+ case 62:
+ this.$ = {
+ id1: u[a - 4],
+ id2: u[a],
+ relation: u[a - 2],
+ relationTitle1: u[a - 3],
+ relationTitle2: u[a - 1],
+ };
+ break;
+ case 63:
+ s.addNote(u[a], u[a - 1]);
+ break;
+ case 64:
+ s.addNote(u[a]);
+ break;
+ case 65:
+ this.$ = { type1: u[a - 2], type2: u[a], lineType: u[a - 1] };
+ break;
+ case 66:
+ this.$ = { type1: "none", type2: u[a], lineType: u[a - 1] };
+ break;
+ case 67:
+ this.$ = { type1: u[a - 1], type2: "none", lineType: u[a] };
+ break;
+ case 68:
+ this.$ = { type1: "none", type2: "none", lineType: u[a] };
+ break;
+ case 69:
+ this.$ = s.relationType.AGGREGATION;
+ break;
+ case 70:
+ this.$ = s.relationType.EXTENSION;
+ break;
+ case 71:
+ this.$ = s.relationType.COMPOSITION;
+ break;
+ case 72:
+ this.$ = s.relationType.DEPENDENCY;
+ break;
+ case 73:
+ this.$ = s.relationType.LOLLIPOP;
+ break;
+ case 74:
+ this.$ = s.lineType.LINE;
+ break;
+ case 75:
+ this.$ = s.lineType.DOTTED_LINE;
+ break;
+ case 76:
+ case 82:
+ (this.$ = u[a - 2]), s.setClickEvent(u[a - 1], u[a]);
+ break;
+ case 77:
+ case 83:
+ (this.$ = u[a - 3]), s.setClickEvent(u[a - 2], u[a - 1]), s.setTooltip(u[a - 2], u[a]);
+ break;
+ case 78:
+ (this.$ = u[a - 2]), s.setLink(u[a - 1], u[a]);
+ break;
+ case 79:
+ (this.$ = u[a - 3]), s.setLink(u[a - 2], u[a - 1], u[a]);
+ break;
+ case 80:
+ (this.$ = u[a - 3]), s.setLink(u[a - 2], u[a - 1]), s.setTooltip(u[a - 2], u[a]);
+ break;
+ case 81:
+ (this.$ = u[a - 4]), s.setLink(u[a - 3], u[a - 2], u[a]), s.setTooltip(u[a - 3], u[a - 1]);
+ break;
+ case 84:
+ (this.$ = u[a - 3]), s.setClickEvent(u[a - 2], u[a - 1], u[a]);
+ break;
+ case 85:
+ (this.$ = u[a - 4]), s.setClickEvent(u[a - 3], u[a - 2], u[a - 1]), s.setTooltip(u[a - 3], u[a]);
+ break;
+ case 86:
+ (this.$ = u[a - 3]), s.setLink(u[a - 2], u[a]);
+ break;
+ case 87:
+ (this.$ = u[a - 4]), s.setLink(u[a - 3], u[a - 1], u[a]);
+ break;
+ case 88:
+ (this.$ = u[a - 4]), s.setLink(u[a - 3], u[a - 1]), s.setTooltip(u[a - 3], u[a]);
+ break;
+ case 89:
+ (this.$ = u[a - 5]), s.setLink(u[a - 4], u[a - 2], u[a]), s.setTooltip(u[a - 4], u[a - 1]);
+ break;
+ case 90:
+ s.setCssClass(u[a - 1], u[a]);
+ }
+ },
+ table: [
+ {
+ 3: 1,
+ 4: 2,
+ 5: 3,
+ 6: 4,
+ 7: 18,
+ 8: t,
+ 9: n,
+ 10: s,
+ 11: i,
+ 12: 5,
+ 13: 6,
+ 19: u,
+ 23: r,
+ 25: 7,
+ 31: 38,
+ 32: 22,
+ 33: 39,
+ 35: 10,
+ 37: 11,
+ 38: 12,
+ 39: 13,
+ 40: 14,
+ 41: 15,
+ 42: 16,
+ 43: 17,
+ 44: a,
+ 46: c,
+ 48: o,
+ 49: 23,
+ 53: l,
+ 54: 24,
+ 57: h,
+ 58: A,
+ 60: p,
+ 61: d,
+ 63: y,
+ 65: E,
+ 75: C,
+ 76: m,
+ 78: k,
+ 82: g,
+ 94: F,
+ 96: f,
+ 97: b,
+ 98: D,
+ 99: _,
+ },
+ { 1: [3] },
+ { 1: [2, 1] },
+ {
+ 3: 47,
+ 4: 2,
+ 5: 3,
+ 6: 4,
+ 7: 18,
+ 8: t,
+ 9: n,
+ 10: s,
+ 11: i,
+ 12: 5,
+ 13: 6,
+ 19: u,
+ 23: r,
+ 25: 7,
+ 31: 38,
+ 32: 22,
+ 33: 39,
+ 35: 10,
+ 37: 11,
+ 38: 12,
+ 39: 13,
+ 40: 14,
+ 41: 15,
+ 42: 16,
+ 43: 17,
+ 44: a,
+ 46: c,
+ 48: o,
+ 49: 23,
+ 53: l,
+ 54: 24,
+ 57: h,
+ 58: A,
+ 60: p,
+ 61: d,
+ 63: y,
+ 65: E,
+ 75: C,
+ 76: m,
+ 78: k,
+ 82: g,
+ 94: F,
+ 96: f,
+ 97: b,
+ 98: D,
+ 99: _,
+ },
+ { 1: [2, 3] },
+ { 1: [2, 8] },
+ { 14: 48, 20: [1, 49] },
+ e(B, [2, 16], { 16: [1, 50] }),
+ { 16: [1, 51] },
+ { 20: [2, 11] },
+ e(T, [2, 27], { 36: [1, 52] }),
+ e(T, [2, 29]),
+ e(T, [2, 30]),
+ e(T, [2, 31]),
+ e(T, [2, 32]),
+ e(T, [2, 33]),
+ e(T, [2, 34]),
+ e(T, [2, 35]),
+ e(T, [2, 36]),
+ { 45: [1, 53] },
+ { 47: [1, 54] },
+ e(T, [2, 39]),
+ e(T, [2, 55], {
+ 62: 55,
+ 66: 58,
+ 67: 59,
+ 28: [1, 56],
+ 36: [1, 57],
+ 68: S,
+ 69: N,
+ 70: v,
+ 71: L,
+ 72: $,
+ 73: I,
+ 74: O,
+ }),
+ { 50: [1, 67] },
+ e(x, [2, 46], { 50: [1, 69], 55: [1, 68] }),
+ e(T, [2, 57]),
+ e(T, [2, 58]),
+ { 31: 70, 94: F, 96: f, 97: b, 98: D },
+ { 31: 38, 32: 71, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ { 31: 38, 32: 72, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ { 31: 38, 32: 73, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ { 28: [1, 74] },
+ { 31: 38, 32: 75, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ { 28: R, 64: 76 },
+ e(T, [2, 4]),
+ e(T, [2, 5]),
+ e(T, [2, 6]),
+ e(T, [2, 7]),
+ e(P, [2, 22], {
+ 31: 38,
+ 33: 39,
+ 32: 78,
+ 34: [1, 79],
+ 94: F,
+ 96: f,
+ 97: b,
+ 98: D,
+ 99: _,
+ }),
+ e(P, [2, 23], { 34: [1, 80] }),
+ { 30: 81, 31: 82, 94: F, 96: f, 97: b, 98: D },
+ { 31: 38, 32: 83, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ e(w, [2, 104]),
+ e(w, [2, 105]),
+ e(w, [2, 106]),
+ e(w, [2, 107]),
+ e([1, 16, 24, 27, 28, 34, 36, 50, 52, 55, 68, 69, 70, 71, 72, 73, 74, 79, 81], [2, 108]),
+ { 1: [2, 2] },
+ { 15: 84, 17: [1, 85], 22: G },
+ e([17, 22], [2, 12]),
+ e(B, [2, 17], {
+ 25: 7,
+ 35: 10,
+ 37: 11,
+ 38: 12,
+ 39: 13,
+ 40: 14,
+ 41: 15,
+ 42: 16,
+ 43: 17,
+ 7: 18,
+ 32: 22,
+ 49: 23,
+ 54: 24,
+ 31: 38,
+ 33: 39,
+ 6: 87,
+ 8: t,
+ 9: n,
+ 10: s,
+ 11: i,
+ 44: a,
+ 46: c,
+ 48: o,
+ 53: l,
+ 57: h,
+ 58: A,
+ 60: p,
+ 61: d,
+ 63: y,
+ 65: E,
+ 75: C,
+ 76: m,
+ 78: k,
+ 82: g,
+ 94: F,
+ 96: f,
+ 97: b,
+ 98: D,
+ 99: _,
+ }),
+ {
+ 6: 88,
+ 7: 18,
+ 8: t,
+ 9: n,
+ 10: s,
+ 11: i,
+ 25: 7,
+ 31: 38,
+ 32: 22,
+ 33: 39,
+ 35: 10,
+ 37: 11,
+ 38: 12,
+ 39: 13,
+ 40: 14,
+ 41: 15,
+ 42: 16,
+ 43: 17,
+ 44: a,
+ 46: c,
+ 48: o,
+ 49: 23,
+ 53: l,
+ 54: 24,
+ 57: h,
+ 58: A,
+ 60: p,
+ 61: d,
+ 63: y,
+ 65: E,
+ 75: C,
+ 76: m,
+ 78: k,
+ 82: g,
+ 94: F,
+ 96: f,
+ 97: b,
+ 98: D,
+ 99: _,
+ },
+ e(T, [2, 28]),
+ e(T, [2, 37]),
+ e(T, [2, 38]),
+ { 28: [1, 90], 31: 38, 32: 89, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ { 62: 91, 66: 58, 67: 59, 68: S, 69: N, 70: v, 71: L, 72: $, 73: I, 74: O },
+ e(T, [2, 56]),
+ { 67: 92, 73: I, 74: O },
+ e(M, [2, 68], { 66: 93, 68: S, 69: N, 70: v, 71: L, 72: $ }),
+ e(U, [2, 69]),
+ e(U, [2, 70]),
+ e(U, [2, 71]),
+ e(U, [2, 72]),
+ e(U, [2, 73]),
+ e(Y, [2, 74]),
+ e(Y, [2, 75]),
+ { 16: [1, 95], 38: 96, 51: 94, 54: 24, 57: h },
+ { 31: 97, 94: F, 96: f, 97: b, 98: D },
+ { 56: 98, 60: K },
+ { 59: [1, 100] },
+ { 28: [1, 101] },
+ { 28: [1, 102] },
+ { 79: [1, 103], 81: [1, 104] },
+ { 31: 105, 94: F, 96: f, 97: b, 98: D },
+ { 28: R, 64: 106 },
+ e(T, [2, 64]),
+ e(T, [2, 109]),
+ e(P, [2, 24]),
+ e(P, [2, 25]),
+ e(P, [2, 26]),
+ { 50: [2, 42] },
+ { 30: 107, 31: 82, 50: [2, 20], 94: F, 96: f, 97: b, 98: D },
+ e(z, [2, 50], { 26: 108, 27: [1, 109] }),
+ { 16: [1, 110] },
+ { 18: 111, 21: [1, 112] },
+ { 16: [2, 14] },
+ e(B, [2, 18]),
+ { 24: [1, 113] },
+ e(Q, [2, 59]),
+ { 31: 38, 32: 114, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ { 28: [1, 116], 31: 38, 32: 115, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ e(M, [2, 67], { 66: 117, 68: S, 69: N, 70: v, 71: L, 72: $ }),
+ e(M, [2, 66]),
+ { 52: [1, 118] },
+ { 38: 96, 51: 119, 54: 24, 57: h },
+ { 16: [1, 120], 52: [2, 43] },
+ e(x, [2, 47], { 50: [1, 121] }),
+ { 52: [1, 122] },
+ { 52: [2, 53], 56: 123, 60: K },
+ { 31: 38, 32: 124, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ e(T, [2, 76], { 28: [1, 125] }),
+ e(T, [2, 78], { 28: [1, 127], 77: [1, 126] }),
+ e(T, [2, 82], { 28: [1, 128], 80: [1, 129] }),
+ { 28: [1, 130] },
+ e(T, [2, 90]),
+ e(T, [2, 63]),
+ { 50: [2, 21] },
+ e(z, [2, 51]),
+ { 28: [1, 131] },
+ e(j, [2, 9]),
+ { 15: 132, 22: G },
+ { 22: [2, 13] },
+ { 1: [2, 15] },
+ e(Q, [2, 61]),
+ e(Q, [2, 60]),
+ { 31: 38, 32: 133, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ e(M, [2, 65]),
+ e(T, [2, 40]),
+ { 52: [1, 134] },
+ { 38: 96, 51: 135, 52: [2, 44], 54: 24, 57: h },
+ { 56: 136, 60: K },
+ e(x, [2, 48]),
+ { 52: [2, 54] },
+ e(T, [2, 52]),
+ e(T, [2, 77]),
+ e(T, [2, 79]),
+ e(T, [2, 80], { 77: [1, 137] }),
+ e(T, [2, 83]),
+ e(T, [2, 84], { 28: [1, 138] }),
+ e(T, [2, 86], { 28: [1, 140], 77: [1, 139] }),
+ { 29: [1, 141] },
+ { 16: [1, 142] },
+ e(Q, [2, 62]),
+ e(T, [2, 41]),
+ { 52: [2, 45] },
+ { 52: [1, 143] },
+ e(T, [2, 81]),
+ e(T, [2, 85]),
+ e(T, [2, 87]),
+ e(T, [2, 88], { 77: [1, 144] }),
+ e(z, [2, 19]),
+ e(j, [2, 10]),
+ e(x, [2, 49]),
+ e(T, [2, 89]),
+ ],
+ defaultActions: {
+ 2: [2, 1],
+ 4: [2, 3],
+ 5: [2, 8],
+ 9: [2, 11],
+ 47: [2, 2],
+ 81: [2, 42],
+ 86: [2, 14],
+ 107: [2, 21],
+ 112: [2, 13],
+ 113: [2, 15],
+ 123: [2, 54],
+ 135: [2, 45],
+ },
+ parseError: function (e, t) {
+ if (!t.recoverable) {
+ var n = new Error(e);
+ throw ((n.hash = t), n);
+ }
+ this.trace(e);
+ },
+ parse: function (e) {
+ var t = [0],
+ n = [],
+ s = [null],
+ i = [],
+ u = this.table,
+ r = "",
+ a = 0,
+ c = 0,
+ o = i.slice.call(arguments, 1),
+ l = Object.create(this.lexer),
+ h = { yy: {} };
+ for (var A in this.yy) Object.prototype.hasOwnProperty.call(this.yy, A) && (h.yy[A] = this.yy[A]);
+ l.setInput(e, h.yy), (h.yy.lexer = l), (h.yy.parser = this), void 0 === l.yylloc && (l.yylloc = {});
+ var p = l.yylloc;
+ i.push(p);
+ var d = l.options && l.options.ranges;
+ "function" == typeof h.yy.parseError
+ ? (this.parseError = h.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var y, E, C, m, k, g, F, f, b, D = {}; ; ) {
+ if (
+ ((E = t[t.length - 1]),
+ this.defaultActions[E]
+ ? (C = this.defaultActions[E])
+ : (null == y &&
+ ((b = void 0),
+ "number" != typeof (b = n.pop() || l.lex() || 1) &&
+ (b instanceof Array && (b = (n = b).pop()), (b = this.symbols_[b] || b)),
+ (y = b)),
+ (C = u[E] && u[E][y])),
+ void 0 === C || !C.length || !C[0])
+ ) {
+ var _;
+ for (k in ((f = []), u[E])) this.terminals_[k] && k > 2 && f.push("'" + this.terminals_[k] + "'");
+ (_ = l.showPosition
+ ? "Parse error on line " +
+ (a + 1) +
+ ":\n" +
+ l.showPosition() +
+ "\nExpecting " +
+ f.join(", ") +
+ ", got '" +
+ (this.terminals_[y] || y) +
+ "'"
+ : "Parse error on line " + (a + 1) + ": Unexpected " + (1 == y ? "end of input" : "'" + (this.terminals_[y] || y) + "'")),
+ this.parseError(_, {
+ text: l.match,
+ token: this.terminals_[y] || y,
+ line: l.yylineno,
+ loc: p,
+ expected: f,
+ });
+ }
+ if (C[0] instanceof Array && C.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + E + ", token: " + y);
+ switch (C[0]) {
+ case 1:
+ t.push(y),
+ s.push(l.yytext),
+ i.push(l.yylloc),
+ t.push(C[1]),
+ (y = null),
+ (c = l.yyleng),
+ (r = l.yytext),
+ (a = l.yylineno),
+ (p = l.yylloc);
+ break;
+ case 2:
+ if (
+ ((g = this.productions_[C[1]][1]),
+ (D.$ = s[s.length - g]),
+ (D._$ = {
+ first_line: i[i.length - (g || 1)].first_line,
+ last_line: i[i.length - 1].last_line,
+ first_column: i[i.length - (g || 1)].first_column,
+ last_column: i[i.length - 1].last_column,
+ }),
+ d && (D._$.range = [i[i.length - (g || 1)].range[0], i[i.length - 1].range[1]]),
+ void 0 !== (m = this.performAction.apply(D, [r, c, a, h.yy, C[1], s, i].concat(o))))
+ )
+ return m;
+ g && ((t = t.slice(0, -1 * g * 2)), (s = s.slice(0, -1 * g)), (i = i.slice(0, -1 * g))),
+ t.push(this.productions_[C[1]][0]),
+ s.push(D.$),
+ i.push(D._$),
+ (F = u[t[t.length - 2]][t[t.length - 1]]),
+ t.push(F);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ W = {
+ EOF: 1,
+ parseError: function (e, t) {
+ if (!this.yy.parser) throw new Error(e);
+ this.yy.parser.parseError(e, t);
+ },
+ setInput: function (e, t) {
+ return (
+ (this.yy = t || this.yy || {}),
+ (this._input = e),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var e = this._input[0];
+ return (
+ (this.yytext += e),
+ this.yyleng++,
+ this.offset++,
+ (this.match += e),
+ (this.matched += e),
+ e.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ e
+ );
+ },
+ unput: function (e) {
+ var t = e.length,
+ n = e.split(/(?:\r\n?|\n)/g);
+ (this._input = e + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - t)), (this.offset -= t);
+ var s = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ n.length - 1 && (this.yylineno -= n.length - 1);
+ var i = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: n
+ ? (n.length === s.length ? this.yylloc.first_column : 0) + s[s.length - n.length].length - n[0].length
+ : this.yylloc.first_column - t,
+ }),
+ this.options.ranges && (this.yylloc.range = [i[0], i[0] + this.yyleng - t]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (e) {
+ this.unput(this.match.slice(e));
+ },
+ pastInput: function () {
+ var e = this.matched.substr(0, this.matched.length - this.match.length);
+ return (e.length > 20 ? "..." : "") + e.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var e = this.match;
+ return (
+ e.length < 20 && (e += this._input.substr(0, 20 - e.length)), (e.substr(0, 20) + (e.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var e = this.pastInput(),
+ t = new Array(e.length + 1).join("-");
+ return e + this.upcomingInput() + "\n" + t + "^";
+ },
+ test_match: function (e, t) {
+ var n, s, i;
+ if (
+ (this.options.backtrack_lexer &&
+ ((i = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (i.yylloc.range = this.yylloc.range.slice(0))),
+ (s = e[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += s.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: s ? s[s.length - 1].length - s[s.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + e[0].length,
+ }),
+ (this.yytext += e[0]),
+ (this.match += e[0]),
+ (this.matches = e),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(e[0].length)),
+ (this.matched += e[0]),
+ (n = this.performAction.call(this, this.yy, this, t, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ n)
+ )
+ return n;
+ if (this._backtrack) {
+ for (var u in i) this[u] = i[u];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var e, t, n, s;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var i = this._currentRules(), u = 0; u < i.length; u++)
+ if ((n = this._input.match(this.rules[i[u]])) && (!t || n[0].length > t[0].length)) {
+ if (((t = n), (s = u), this.options.backtrack_lexer)) {
+ if (!1 !== (e = this.test_match(n, i[u]))) return e;
+ if (this._backtrack) {
+ t = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return t
+ ? !1 !== (e = this.test_match(t, i[s])) && e
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (e) {
+ this.conditionStack.push(e);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (e) {
+ return (e = this.conditionStack.length - 1 - Math.abs(e || 0)) >= 0 ? this.conditionStack[e] : "INITIAL";
+ },
+ pushState: function (e) {
+ this.begin(e);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: {},
+ performAction: function (e, t, n, s) {
+ switch (n) {
+ case 0:
+ return this.begin("open_directive"), 19;
+ case 1:
+ return 8;
+ case 2:
+ return 9;
+ case 3:
+ return 10;
+ case 4:
+ return 11;
+ case 5:
+ return this.begin("type_directive"), 20;
+ case 6:
+ return this.popState(), this.begin("arg_directive"), 17;
+ case 7:
+ return this.popState(), this.popState(), 22;
+ case 8:
+ return 21;
+ case 9:
+ case 10:
+ case 19:
+ case 34:
+ case 39:
+ case 43:
+ case 50:
+ break;
+ case 11:
+ return this.begin("acc_title"), 44;
+ case 12:
+ return this.popState(), "acc_title_value";
+ case 13:
+ return this.begin("acc_descr"), 46;
+ case 14:
+ return this.popState(), "acc_descr_value";
+ case 15:
+ this.begin("acc_descr_multiline");
+ break;
+ case 16:
+ case 24:
+ case 27:
+ case 29:
+ case 61:
+ case 64:
+ this.popState();
+ break;
+ case 17:
+ return "acc_descr_multiline_value";
+ case 18:
+ case 38:
+ return 16;
+ case 20:
+ case 21:
+ return 23;
+ case 22:
+ case 40:
+ case 48:
+ return "EDGE_STATE";
+ case 23:
+ this.begin("callback_name");
+ break;
+ case 25:
+ this.popState(), this.begin("callback_args");
+ break;
+ case 26:
+ return 79;
+ case 28:
+ return 80;
+ case 30:
+ return "STR";
+ case 31:
+ this.begin("string");
+ break;
+ case 32:
+ return this.begin("namespace"), 53;
+ case 33:
+ case 42:
+ return this.popState(), 16;
+ case 35:
+ return this.begin("namespace-body"), 50;
+ case 36:
+ case 46:
+ return this.popState(), 52;
+ case 37:
+ case 47:
+ return "EOF_IN_STRUCT";
+ case 41:
+ return this.begin("class"), 57;
+ case 44:
+ return this.popState(), this.popState(), 52;
+ case 45:
+ return this.begin("class-body"), 50;
+ case 49:
+ return "OPEN_IN_STRUCT";
+ case 51:
+ return "MEMBER";
+ case 52:
+ return 82;
+ case 53:
+ return 75;
+ case 54:
+ return 76;
+ case 55:
+ return 78;
+ case 56:
+ return 63;
+ case 57:
+ return 65;
+ case 58:
+ return 58;
+ case 59:
+ return 59;
+ case 60:
+ return 81;
+ case 62:
+ return "GENERICTYPE";
+ case 63:
+ this.begin("generic");
+ break;
+ case 65:
+ return "BQUOTE_STR";
+ case 66:
+ this.begin("bqstring");
+ break;
+ case 67:
+ case 68:
+ case 69:
+ case 70:
+ return 77;
+ case 71:
+ case 72:
+ return 69;
+ case 73:
+ case 74:
+ return 71;
+ case 75:
+ return 70;
+ case 76:
+ return 68;
+ case 77:
+ return 72;
+ case 78:
+ return 73;
+ case 79:
+ return 74;
+ case 80:
+ return 36;
+ case 81:
+ return 55;
+ case 82:
+ return 94;
+ case 83:
+ return "DOT";
+ case 84:
+ return "PLUS";
+ case 85:
+ return 91;
+ case 86:
+ case 87:
+ return "EQUALS";
+ case 88:
+ return 98;
+ case 89:
+ return 27;
+ case 90:
+ return 29;
+ case 91:
+ return "PUNCTUATION";
+ case 92:
+ return 97;
+ case 93:
+ return 96;
+ case 94:
+ return 93;
+ case 95:
+ return 24;
+ }
+ },
+ rules: [
+ /^(?:%%\{)/,
+ /^(?:.*direction\s+TB[^\n]*)/,
+ /^(?:.*direction\s+BT[^\n]*)/,
+ /^(?:.*direction\s+RL[^\n]*)/,
+ /^(?:.*direction\s+LR[^\n]*)/,
+ /^(?:((?:(?!\}%%)[^:.])*))/,
+ /^(?::)/,
+ /^(?:\}%%)/,
+ /^(?:((?:(?!\}%%).|\n)*))/,
+ /^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,
+ /^(?:%%[^\n]*(\r?\n)*)/,
+ /^(?:accTitle\s*:\s*)/,
+ /^(?:(?!\n||)*[^\n]*)/,
+ /^(?:accDescr\s*:\s*)/,
+ /^(?:(?!\n||)*[^\n]*)/,
+ /^(?:accDescr\s*\{\s*)/,
+ /^(?:[\}])/,
+ /^(?:[^\}]*)/,
+ /^(?:\s*(\r?\n)+)/,
+ /^(?:\s+)/,
+ /^(?:classDiagram-v2\b)/,
+ /^(?:classDiagram\b)/,
+ /^(?:\[\*\])/,
+ /^(?:call[\s]+)/,
+ /^(?:\([\s]*\))/,
+ /^(?:\()/,
+ /^(?:[^(]*)/,
+ /^(?:\))/,
+ /^(?:[^)]*)/,
+ /^(?:["])/,
+ /^(?:[^"]*)/,
+ /^(?:["])/,
+ /^(?:namespace\b)/,
+ /^(?:\s*(\r?\n)+)/,
+ /^(?:\s+)/,
+ /^(?:[{])/,
+ /^(?:[}])/,
+ /^(?:$)/,
+ /^(?:\s*(\r?\n)+)/,
+ /^(?:\s+)/,
+ /^(?:\[\*\])/,
+ /^(?:class\b)/,
+ /^(?:\s*(\r?\n)+)/,
+ /^(?:\s+)/,
+ /^(?:[}])/,
+ /^(?:[{])/,
+ /^(?:[}])/,
+ /^(?:$)/,
+ /^(?:\[\*\])/,
+ /^(?:[{])/,
+ /^(?:[\n])/,
+ /^(?:[^{}\n]*)/,
+ /^(?:cssClass\b)/,
+ /^(?:callback\b)/,
+ /^(?:link\b)/,
+ /^(?:click\b)/,
+ /^(?:note for\b)/,
+ /^(?:note\b)/,
+ /^(?:<<)/,
+ /^(?:>>)/,
+ /^(?:href\b)/,
+ /^(?:[~])/,
+ /^(?:[^~]*)/,
+ /^(?:~)/,
+ /^(?:[`])/,
+ /^(?:[^`]+)/,
+ /^(?:[`])/,
+ /^(?:_self\b)/,
+ /^(?:_blank\b)/,
+ /^(?:_parent\b)/,
+ /^(?:_top\b)/,
+ /^(?:\s*<\|)/,
+ /^(?:\s*\|>)/,
+ /^(?:\s*>)/,
+ /^(?:\s*<)/,
+ /^(?:\s*\*)/,
+ /^(?:\s*o\b)/,
+ /^(?:\s*\(\))/,
+ /^(?:--)/,
+ /^(?:\.\.)/,
+ /^(?::{1}[^:\n;]+)/,
+ /^(?::{3})/,
+ /^(?:-)/,
+ /^(?:\.)/,
+ /^(?:\+)/,
+ /^(?:%)/,
+ /^(?:=)/,
+ /^(?:=)/,
+ /^(?:\w+)/,
+ /^(?:\[)/,
+ /^(?:\])/,
+ /^(?:[!"#$%&'*+,-.`?\\/])/,
+ /^(?:[0-9]+)/,
+ /^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,
+ /^(?:\s)/,
+ /^(?:$)/,
+ ],
+ conditions: {
+ "namespace-body": {
+ rules: [
+ 31, 36, 37, 38, 39, 40, 41, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ namespace: {
+ rules: [
+ 31, 32, 33, 34, 35, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ "class-body": {
+ rules: [
+ 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ class: {
+ rules: [
+ 31, 42, 43, 44, 45, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ acc_descr_multiline: {
+ rules: [
+ 16, 17, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ acc_descr: {
+ rules: [
+ 14, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ acc_title: {
+ rules: [
+ 12, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ arg_directive: {
+ rules: [
+ 7, 8, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ type_directive: {
+ rules: [
+ 6, 7, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ open_directive: {
+ rules: [
+ 5, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ callback_args: {
+ rules: [
+ 27, 28, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ callback_name: {
+ rules: [
+ 24, 25, 26, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ href: {
+ rules: [
+ 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ struct: {
+ rules: [
+ 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ generic: {
+ rules: [
+ 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ bqstring: {
+ rules: [
+ 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ string: {
+ rules: [
+ 29, 30, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ INITIAL: {
+ rules: [
+ 0, 1, 2, 3, 4, 9, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 31, 32, 41, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !0,
+ },
+ },
+ };
+ function H() {
+ this.yy = {};
+ }
+ return (X.lexer = W), (H.prototype = X), (X.Parser = H), new H();
+ })();
+ u.parser = u;
+ const r = u,
+ a = "classId-";
+ let c = [],
+ o = {},
+ l = [],
+ h = 0,
+ A = {},
+ p = 0,
+ d = [];
+ const y = (e) => i.e.sanitizeText(e, (0, i.c)()),
+ E = function (e) {
+ let t = "",
+ n = e;
+ if (e.indexOf("~") > 0) {
+ const s = e.split("~");
+ (n = y(s[0])), (t = y(s[1]));
+ }
+ return { className: n, type: t };
+ },
+ C = function (e) {
+ const t = E(e);
+ void 0 === o[t.className] &&
+ ((o[t.className] = {
+ id: t.className,
+ type: t.type,
+ label: t.className,
+ cssClasses: [],
+ methods: [],
+ members: [],
+ annotations: [],
+ domId: a + t.className + "-" + h,
+ }),
+ h++);
+ },
+ m = function (e) {
+ if (e in o) return o[e].domId;
+ throw new Error("Class not found: " + e);
+ },
+ k = function (e, t) {
+ const n = E(e).className,
+ s = o[n];
+ if ("string" == typeof t) {
+ const e = t.trim();
+ e.startsWith("<<") && e.endsWith(">>")
+ ? s.annotations.push(y(e.substring(2, e.length - 2)))
+ : e.indexOf(")") > 0
+ ? s.methods.push(y(e))
+ : e && s.members.push(y(e));
+ }
+ },
+ g = function (e, t) {
+ e.split(",").forEach(function (e) {
+ let n = e;
+ e[0].match(/\d/) && (n = a + n), void 0 !== o[n] && o[n].cssClasses.push(t);
+ });
+ },
+ F = function (e) {
+ let t = (0, s.Ys)(".mermaidTooltip");
+ null === (t._groups || t)[0][0] && (t = (0, s.Ys)("body").append("div").attr("class", "mermaidTooltip").style("opacity", 0)),
+ (0, s.Ys)(e)
+ .select("svg")
+ .selectAll("g.node")
+ .on("mouseover", function () {
+ const e = (0, s.Ys)(this);
+ if (null === e.attr("title")) return;
+ const n = this.getBoundingClientRect();
+ t.transition().duration(200).style("opacity", ".9"),
+ t
+ .text(e.attr("title"))
+ .style("left", window.scrollX + n.left + (n.right - n.left) / 2 + "px")
+ .style("top", window.scrollY + n.top - 14 + document.body.scrollTop + "px"),
+ t.html(t.html().replace(/<br\/>/g, "
")),
+ e.classed("hover", !0);
+ })
+ .on("mouseout", function () {
+ t.transition().duration(500).style("opacity", 0), (0, s.Ys)(this).classed("hover", !1);
+ });
+ };
+ d.push(F);
+ let f = "TB";
+ const b = {
+ parseDirective: function (e, t, n) {
+ i.m.parseDirective(this, e, t, n);
+ },
+ setAccTitle: i.s,
+ getAccTitle: i.g,
+ getAccDescription: i.a,
+ setAccDescription: i.b,
+ getConfig: () => (0, i.c)().class,
+ addClass: C,
+ bindFunctions: function (e) {
+ d.forEach(function (t) {
+ t(e);
+ });
+ },
+ clear: function () {
+ (c = []), (o = {}), (l = []), (d = []), d.push(F), (A = {}), (p = 0), (0, i.v)();
+ },
+ getClass: function (e) {
+ return o[e];
+ },
+ getClasses: function () {
+ return o;
+ },
+ getNotes: function () {
+ return l;
+ },
+ addAnnotation: function (e, t) {
+ const n = E(e).className;
+ o[n].annotations.push(t);
+ },
+ addNote: function (e, t) {
+ const n = { id: `note${l.length}`, class: t, text: e };
+ l.push(n);
+ },
+ getRelations: function () {
+ return c;
+ },
+ addRelation: function (e) {
+ i.l.debug("Adding relation: " + JSON.stringify(e)),
+ C(e.id1),
+ C(e.id2),
+ (e.id1 = E(e.id1).className),
+ (e.id2 = E(e.id2).className),
+ (e.relationTitle1 = i.e.sanitizeText(e.relationTitle1.trim(), (0, i.c)())),
+ (e.relationTitle2 = i.e.sanitizeText(e.relationTitle2.trim(), (0, i.c)())),
+ c.push(e);
+ },
+ getDirection: () => f,
+ setDirection: (e) => {
+ f = e;
+ },
+ addMember: k,
+ addMembers: function (e, t) {
+ Array.isArray(t) && (t.reverse(), t.forEach((t) => k(e, t)));
+ },
+ cleanupLabel: function (e) {
+ return e.startsWith(":") && (e = e.substring(1)), y(e.trim());
+ },
+ lineType: { LINE: 0, DOTTED_LINE: 1 },
+ relationType: {
+ AGGREGATION: 0,
+ EXTENSION: 1,
+ COMPOSITION: 2,
+ DEPENDENCY: 3,
+ LOLLIPOP: 4,
+ },
+ setClickEvent: function (e, t, n) {
+ e.split(",").forEach(function (e) {
+ (function (e, t, n) {
+ if ("loose" !== (0, i.c)().securityLevel) return;
+ if (void 0 === t) return;
+ const s = e;
+ if (void 0 !== o[s]) {
+ const e = m(s);
+ let u = [];
+ if ("string" == typeof n) {
+ u = n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);
+ for (let e = 0; e < u.length; e++) {
+ let t = u[e].trim();
+ '"' === t.charAt(0) && '"' === t.charAt(t.length - 1) && (t = t.substr(1, t.length - 2)), (u[e] = t);
+ }
+ }
+ 0 === u.length && u.push(e),
+ d.push(function () {
+ const n = document.querySelector(`[id="${e}"]`);
+ null !== n &&
+ n.addEventListener(
+ "click",
+ function () {
+ i.u.runFunc(t, ...u);
+ },
+ !1,
+ );
+ });
+ }
+ })(e, t, n),
+ (o[e].haveCallback = !0);
+ }),
+ g(e, "clickable");
+ },
+ setCssClass: g,
+ setLink: function (e, t, n) {
+ const s = (0, i.c)();
+ e.split(",").forEach(function (e) {
+ let u = e;
+ e[0].match(/\d/) && (u = a + u),
+ void 0 !== o[u] &&
+ ((o[u].link = i.u.formatUrl(t, s)),
+ "sandbox" === s.securityLevel ? (o[u].linkTarget = "_top") : (o[u].linkTarget = "string" == typeof n ? y(n) : "_blank"));
+ }),
+ g(e, "clickable");
+ },
+ getTooltip: function (e, t) {
+ return t ? A[t].classes[e].tooltip : o[e].tooltip;
+ },
+ setTooltip: function (e, t) {
+ e.split(",").forEach(function (e) {
+ void 0 !== t && (o[e].tooltip = y(t));
+ });
+ },
+ lookUpDomId: m,
+ setDiagramTitle: i.r,
+ getDiagramTitle: i.t,
+ setClassLabel: function (e, t) {
+ t && (t = y(t));
+ const { className: n } = E(e);
+ o[n].label = t;
+ },
+ addNamespace: function (e) {
+ void 0 === A[e] && ((A[e] = { id: e, classes: {}, children: {}, domId: a + e + "-" + p }), p++);
+ },
+ addClassesToNamespace: function (e, t) {
+ void 0 !== A[e] &&
+ t.map((t) => {
+ (o[t].parent = e), (A[e].classes[t] = o[t]);
+ });
+ },
+ getNamespace: function (e) {
+ return A[e];
+ },
+ getNamespaces: function () {
+ return A;
+ },
+ },
+ D = (e) =>
+ `g.classGroup text {\n fill: ${e.nodeBorder};\n fill: ${e.classText};\n stroke: none;\n font-family: ${e.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${e.classText};\n}\n.edgeLabel .label rect {\n fill: ${e.mainBkg};\n}\n.label text {\n fill: ${e.classText};\n}\n.edgeLabel .label span {\n background: ${e.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${e.mainBkg};\n stroke: ${e.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${e.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${e.mainBkg};\n stroke: ${e.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${e.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${e.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${e.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${e.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n#compositionStart, .composition {\n fill: ${e.lineColor} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${e.lineColor} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${e.lineColor} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${e.lineColor} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${e.textColor};\n}\n`;
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/430-cc171d93.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/430-cc171d93.chunk.min.js
new file mode 100644
index 000000000..d6ac88548
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/430-cc171d93.chunk.min.js
@@ -0,0 +1,1566 @@
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [430],
+ {
+ 4430: function (t, e, r) {
+ r.d(e, {
+ diagram: function () {
+ return v;
+ },
+ });
+ var i = r(9339),
+ a = r(5625),
+ n = r(7274),
+ s = r(3771);
+ const o = [];
+ for (let t = 0; t < 256; ++t) o.push((t + 256).toString(16).slice(1));
+ var c = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,
+ l = function (t) {
+ if (
+ !(function (t) {
+ return "string" == typeof t && c.test(t);
+ })(t)
+ )
+ throw TypeError("Invalid UUID");
+ let e;
+ const r = new Uint8Array(16);
+ return (
+ (r[0] = (e = parseInt(t.slice(0, 8), 16)) >>> 24),
+ (r[1] = (e >>> 16) & 255),
+ (r[2] = (e >>> 8) & 255),
+ (r[3] = 255 & e),
+ (r[4] = (e = parseInt(t.slice(9, 13), 16)) >>> 8),
+ (r[5] = 255 & e),
+ (r[6] = (e = parseInt(t.slice(14, 18), 16)) >>> 8),
+ (r[7] = 255 & e),
+ (r[8] = (e = parseInt(t.slice(19, 23), 16)) >>> 8),
+ (r[9] = 255 & e),
+ (r[10] = ((e = parseInt(t.slice(24, 36), 16)) / 1099511627776) & 255),
+ (r[11] = (e / 4294967296) & 255),
+ (r[12] = (e >>> 24) & 255),
+ (r[13] = (e >>> 16) & 255),
+ (r[14] = (e >>> 8) & 255),
+ (r[15] = 255 & e),
+ r
+ );
+ };
+ function h(t, e, r, i) {
+ switch (t) {
+ case 0:
+ return (e & r) ^ (~e & i);
+ case 1:
+ case 3:
+ return e ^ r ^ i;
+ case 2:
+ return (e & r) ^ (e & i) ^ (r & i);
+ }
+ }
+ function d(t, e) {
+ return (t << e) | (t >>> (32 - e));
+ }
+ var u = (function (t, e, r) {
+ function i(t, e, r, i) {
+ var a;
+ if (
+ ("string" == typeof t &&
+ (t = (function (t) {
+ t = unescape(encodeURIComponent(t));
+ const e = [];
+ for (let r = 0; r < t.length; ++r) e.push(t.charCodeAt(r));
+ return e;
+ })(t)),
+ "string" == typeof e && (e = l(e)),
+ 16 !== (null === (a = e) || void 0 === a ? void 0 : a.length))
+ )
+ throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");
+ let n = new Uint8Array(16 + t.length);
+ if (
+ (n.set(e),
+ n.set(t, e.length),
+ (n = (function (t) {
+ const e = [1518500249, 1859775393, 2400959708, 3395469782],
+ r = [1732584193, 4023233417, 2562383102, 271733878, 3285377520];
+ if ("string" == typeof t) {
+ const e = unescape(encodeURIComponent(t));
+ t = [];
+ for (let r = 0; r < e.length; ++r) t.push(e.charCodeAt(r));
+ } else Array.isArray(t) || (t = Array.prototype.slice.call(t));
+ t.push(128);
+ const i = t.length / 4 + 2,
+ a = Math.ceil(i / 16),
+ n = new Array(a);
+ for (let e = 0; e < a; ++e) {
+ const r = new Uint32Array(16);
+ for (let i = 0; i < 16; ++i)
+ r[i] = (t[64 * e + 4 * i] << 24) | (t[64 * e + 4 * i + 1] << 16) | (t[64 * e + 4 * i + 2] << 8) | t[64 * e + 4 * i + 3];
+ n[e] = r;
+ }
+ (n[a - 1][14] = (8 * (t.length - 1)) / Math.pow(2, 32)),
+ (n[a - 1][14] = Math.floor(n[a - 1][14])),
+ (n[a - 1][15] = (8 * (t.length - 1)) & 4294967295);
+ for (let t = 0; t < a; ++t) {
+ const i = new Uint32Array(80);
+ for (let e = 0; e < 16; ++e) i[e] = n[t][e];
+ for (let t = 16; t < 80; ++t) i[t] = d(i[t - 3] ^ i[t - 8] ^ i[t - 14] ^ i[t - 16], 1);
+ let a = r[0],
+ s = r[1],
+ o = r[2],
+ c = r[3],
+ l = r[4];
+ for (let t = 0; t < 80; ++t) {
+ const r = Math.floor(t / 20),
+ n = (d(a, 5) + h(r, s, o, c) + l + e[r] + i[t]) >>> 0;
+ (l = c), (c = o), (o = d(s, 30) >>> 0), (s = a), (a = n);
+ }
+ (r[0] = (r[0] + a) >>> 0),
+ (r[1] = (r[1] + s) >>> 0),
+ (r[2] = (r[2] + o) >>> 0),
+ (r[3] = (r[3] + c) >>> 0),
+ (r[4] = (r[4] + l) >>> 0);
+ }
+ return [
+ (r[0] >> 24) & 255,
+ (r[0] >> 16) & 255,
+ (r[0] >> 8) & 255,
+ 255 & r[0],
+ (r[1] >> 24) & 255,
+ (r[1] >> 16) & 255,
+ (r[1] >> 8) & 255,
+ 255 & r[1],
+ (r[2] >> 24) & 255,
+ (r[2] >> 16) & 255,
+ (r[2] >> 8) & 255,
+ 255 & r[2],
+ (r[3] >> 24) & 255,
+ (r[3] >> 16) & 255,
+ (r[3] >> 8) & 255,
+ 255 & r[3],
+ (r[4] >> 24) & 255,
+ (r[4] >> 16) & 255,
+ (r[4] >> 8) & 255,
+ 255 & r[4],
+ ];
+ })(n)),
+ (n[6] = (15 & n[6]) | 80),
+ (n[8] = (63 & n[8]) | 128),
+ r)
+ ) {
+ i = i || 0;
+ for (let t = 0; t < 16; ++t) r[i + t] = n[t];
+ return r;
+ }
+ return (function (t, e = 0) {
+ return (
+ o[t[e + 0]] +
+ o[t[e + 1]] +
+ o[t[e + 2]] +
+ o[t[e + 3]] +
+ "-" +
+ o[t[e + 4]] +
+ o[t[e + 5]] +
+ "-" +
+ o[t[e + 6]] +
+ o[t[e + 7]] +
+ "-" +
+ o[t[e + 8]] +
+ o[t[e + 9]] +
+ "-" +
+ o[t[e + 10]] +
+ o[t[e + 11]] +
+ o[t[e + 12]] +
+ o[t[e + 13]] +
+ o[t[e + 14]] +
+ o[t[e + 15]]
+ ).toLowerCase();
+ })(n);
+ }
+ try {
+ i.name = "v5";
+ } catch (t) {}
+ return (i.DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"), (i.URL = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"), i;
+ })(),
+ y =
+ (r(7484),
+ r(7967),
+ r(7856),
+ (function () {
+ var t = function (t, e, r, i) {
+ for (r = r || {}, i = t.length; i--; r[t[i]] = e);
+ return r;
+ },
+ e = [1, 2],
+ r = [1, 5],
+ i = [6, 9, 11, 23, 25, 27, 29, 30, 31, 52],
+ a = [1, 17],
+ n = [1, 18],
+ s = [1, 19],
+ o = [1, 20],
+ c = [1, 21],
+ l = [1, 22],
+ h = [1, 25],
+ d = [1, 30],
+ u = [1, 31],
+ y = [1, 32],
+ p = [1, 33],
+ _ = [1, 34],
+ f = [6, 9, 11, 15, 20, 23, 25, 27, 29, 30, 31, 44, 45, 46, 47, 48, 52],
+ g = [1, 46],
+ m = [30, 31, 49, 50],
+ E = [4, 6, 9, 11, 23, 25, 27, 29, 30, 31, 52],
+ O = [44, 45, 46, 47, 48],
+ b = [22, 37],
+ k = [1, 66],
+ R = [1, 65],
+ N = [22, 37, 39, 41],
+ T = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ ER_DIAGRAM: 4,
+ document: 5,
+ EOF: 6,
+ directive: 7,
+ line: 8,
+ SPACE: 9,
+ statement: 10,
+ NEWLINE: 11,
+ openDirective: 12,
+ typeDirective: 13,
+ closeDirective: 14,
+ ":": 15,
+ argDirective: 16,
+ entityName: 17,
+ relSpec: 18,
+ role: 19,
+ BLOCK_START: 20,
+ attributes: 21,
+ BLOCK_STOP: 22,
+ title: 23,
+ title_value: 24,
+ acc_title: 25,
+ acc_title_value: 26,
+ acc_descr: 27,
+ acc_descr_value: 28,
+ acc_descr_multiline_value: 29,
+ ALPHANUM: 30,
+ ENTITY_NAME: 31,
+ attribute: 32,
+ attributeType: 33,
+ attributeName: 34,
+ attributeKeyTypeList: 35,
+ attributeComment: 36,
+ ATTRIBUTE_WORD: 37,
+ attributeKeyType: 38,
+ COMMA: 39,
+ ATTRIBUTE_KEY: 40,
+ COMMENT: 41,
+ cardinality: 42,
+ relType: 43,
+ ZERO_OR_ONE: 44,
+ ZERO_OR_MORE: 45,
+ ONE_OR_MORE: 46,
+ ONLY_ONE: 47,
+ MD_PARENT: 48,
+ NON_IDENTIFYING: 49,
+ IDENTIFYING: 50,
+ WORD: 51,
+ open_directive: 52,
+ type_directive: 53,
+ arg_directive: 54,
+ close_directive: 55,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 4: "ER_DIAGRAM",
+ 6: "EOF",
+ 9: "SPACE",
+ 11: "NEWLINE",
+ 15: ":",
+ 20: "BLOCK_START",
+ 22: "BLOCK_STOP",
+ 23: "title",
+ 24: "title_value",
+ 25: "acc_title",
+ 26: "acc_title_value",
+ 27: "acc_descr",
+ 28: "acc_descr_value",
+ 29: "acc_descr_multiline_value",
+ 30: "ALPHANUM",
+ 31: "ENTITY_NAME",
+ 37: "ATTRIBUTE_WORD",
+ 39: "COMMA",
+ 40: "ATTRIBUTE_KEY",
+ 41: "COMMENT",
+ 44: "ZERO_OR_ONE",
+ 45: "ZERO_OR_MORE",
+ 46: "ONE_OR_MORE",
+ 47: "ONLY_ONE",
+ 48: "MD_PARENT",
+ 49: "NON_IDENTIFYING",
+ 50: "IDENTIFYING",
+ 51: "WORD",
+ 52: "open_directive",
+ 53: "type_directive",
+ 54: "arg_directive",
+ 55: "close_directive",
+ },
+ productions_: [
+ 0,
+ [3, 3],
+ [3, 2],
+ [5, 0],
+ [5, 2],
+ [8, 2],
+ [8, 1],
+ [8, 1],
+ [8, 1],
+ [7, 4],
+ [7, 6],
+ [10, 1],
+ [10, 5],
+ [10, 4],
+ [10, 3],
+ [10, 1],
+ [10, 2],
+ [10, 2],
+ [10, 2],
+ [10, 1],
+ [17, 1],
+ [17, 1],
+ [21, 1],
+ [21, 2],
+ [32, 2],
+ [32, 3],
+ [32, 3],
+ [32, 4],
+ [33, 1],
+ [34, 1],
+ [35, 1],
+ [35, 3],
+ [38, 1],
+ [36, 1],
+ [18, 3],
+ [42, 1],
+ [42, 1],
+ [42, 1],
+ [42, 1],
+ [42, 1],
+ [43, 1],
+ [43, 1],
+ [19, 1],
+ [19, 1],
+ [19, 1],
+ [12, 1],
+ [13, 1],
+ [16, 1],
+ [14, 1],
+ ],
+ performAction: function (t, e, r, i, a, n, s) {
+ var o = n.length - 1;
+ switch (a) {
+ case 1:
+ break;
+ case 3:
+ case 7:
+ case 8:
+ this.$ = [];
+ break;
+ case 4:
+ n[o - 1].push(n[o]), (this.$ = n[o - 1]);
+ break;
+ case 5:
+ case 6:
+ case 20:
+ case 44:
+ case 28:
+ case 29:
+ case 32:
+ this.$ = n[o];
+ break;
+ case 12:
+ i.addEntity(n[o - 4]), i.addEntity(n[o - 2]), i.addRelationship(n[o - 4], n[o], n[o - 2], n[o - 3]);
+ break;
+ case 13:
+ i.addEntity(n[o - 3]), i.addAttributes(n[o - 3], n[o - 1]);
+ break;
+ case 14:
+ i.addEntity(n[o - 2]);
+ break;
+ case 15:
+ i.addEntity(n[o]);
+ break;
+ case 16:
+ case 17:
+ (this.$ = n[o].trim()), i.setAccTitle(this.$);
+ break;
+ case 18:
+ case 19:
+ (this.$ = n[o].trim()), i.setAccDescription(this.$);
+ break;
+ case 21:
+ case 42:
+ case 43:
+ case 33:
+ this.$ = n[o].replace(/"/g, "");
+ break;
+ case 22:
+ case 30:
+ this.$ = [n[o]];
+ break;
+ case 23:
+ n[o].push(n[o - 1]), (this.$ = n[o]);
+ break;
+ case 24:
+ this.$ = { attributeType: n[o - 1], attributeName: n[o] };
+ break;
+ case 25:
+ this.$ = {
+ attributeType: n[o - 2],
+ attributeName: n[o - 1],
+ attributeKeyTypeList: n[o],
+ };
+ break;
+ case 26:
+ this.$ = {
+ attributeType: n[o - 2],
+ attributeName: n[o - 1],
+ attributeComment: n[o],
+ };
+ break;
+ case 27:
+ this.$ = {
+ attributeType: n[o - 3],
+ attributeName: n[o - 2],
+ attributeKeyTypeList: n[o - 1],
+ attributeComment: n[o],
+ };
+ break;
+ case 31:
+ n[o - 2].push(n[o]), (this.$ = n[o - 2]);
+ break;
+ case 34:
+ this.$ = { cardA: n[o], relType: n[o - 1], cardB: n[o - 2] };
+ break;
+ case 35:
+ this.$ = i.Cardinality.ZERO_OR_ONE;
+ break;
+ case 36:
+ this.$ = i.Cardinality.ZERO_OR_MORE;
+ break;
+ case 37:
+ this.$ = i.Cardinality.ONE_OR_MORE;
+ break;
+ case 38:
+ this.$ = i.Cardinality.ONLY_ONE;
+ break;
+ case 39:
+ this.$ = i.Cardinality.MD_PARENT;
+ break;
+ case 40:
+ this.$ = i.Identification.NON_IDENTIFYING;
+ break;
+ case 41:
+ this.$ = i.Identification.IDENTIFYING;
+ break;
+ case 45:
+ i.parseDirective("%%{", "open_directive");
+ break;
+ case 46:
+ i.parseDirective(n[o], "type_directive");
+ break;
+ case 47:
+ (n[o] = n[o].trim().replace(/'/g, '"')), i.parseDirective(n[o], "arg_directive");
+ break;
+ case 48:
+ i.parseDirective("}%%", "close_directive", "er");
+ }
+ },
+ table: [
+ { 3: 1, 4: e, 7: 3, 12: 4, 52: r },
+ { 1: [3] },
+ t(i, [2, 3], { 5: 6 }),
+ { 3: 7, 4: e, 7: 3, 12: 4, 52: r },
+ { 13: 8, 53: [1, 9] },
+ { 53: [2, 45] },
+ {
+ 6: [1, 10],
+ 7: 15,
+ 8: 11,
+ 9: [1, 12],
+ 10: 13,
+ 11: [1, 14],
+ 12: 4,
+ 17: 16,
+ 23: a,
+ 25: n,
+ 27: s,
+ 29: o,
+ 30: c,
+ 31: l,
+ 52: r,
+ },
+ { 1: [2, 2] },
+ { 14: 23, 15: [1, 24], 55: h },
+ t([15, 55], [2, 46]),
+ t(i, [2, 8], { 1: [2, 1] }),
+ t(i, [2, 4]),
+ { 7: 15, 10: 26, 12: 4, 17: 16, 23: a, 25: n, 27: s, 29: o, 30: c, 31: l, 52: r },
+ t(i, [2, 6]),
+ t(i, [2, 7]),
+ t(i, [2, 11]),
+ t(i, [2, 15], { 18: 27, 42: 29, 20: [1, 28], 44: d, 45: u, 46: y, 47: p, 48: _ }),
+ { 24: [1, 35] },
+ { 26: [1, 36] },
+ { 28: [1, 37] },
+ t(i, [2, 19]),
+ t(f, [2, 20]),
+ t(f, [2, 21]),
+ { 11: [1, 38] },
+ { 16: 39, 54: [1, 40] },
+ { 11: [2, 48] },
+ t(i, [2, 5]),
+ { 17: 41, 30: c, 31: l },
+ { 21: 42, 22: [1, 43], 32: 44, 33: 45, 37: g },
+ { 43: 47, 49: [1, 48], 50: [1, 49] },
+ t(m, [2, 35]),
+ t(m, [2, 36]),
+ t(m, [2, 37]),
+ t(m, [2, 38]),
+ t(m, [2, 39]),
+ t(i, [2, 16]),
+ t(i, [2, 17]),
+ t(i, [2, 18]),
+ t(E, [2, 9]),
+ { 14: 50, 55: h },
+ { 55: [2, 47] },
+ { 15: [1, 51] },
+ { 22: [1, 52] },
+ t(i, [2, 14]),
+ { 21: 53, 22: [2, 22], 32: 44, 33: 45, 37: g },
+ { 34: 54, 37: [1, 55] },
+ { 37: [2, 28] },
+ { 42: 56, 44: d, 45: u, 46: y, 47: p, 48: _ },
+ t(O, [2, 40]),
+ t(O, [2, 41]),
+ { 11: [1, 57] },
+ { 19: 58, 30: [1, 61], 31: [1, 60], 51: [1, 59] },
+ t(i, [2, 13]),
+ { 22: [2, 23] },
+ t(b, [2, 24], { 35: 62, 36: 63, 38: 64, 40: k, 41: R }),
+ t([22, 37, 40, 41], [2, 29]),
+ t([30, 31], [2, 34]),
+ t(E, [2, 10]),
+ t(i, [2, 12]),
+ t(i, [2, 42]),
+ t(i, [2, 43]),
+ t(i, [2, 44]),
+ t(b, [2, 25], { 36: 67, 39: [1, 68], 41: R }),
+ t(b, [2, 26]),
+ t(N, [2, 30]),
+ t(b, [2, 33]),
+ t(N, [2, 32]),
+ t(b, [2, 27]),
+ { 38: 69, 40: k },
+ t(N, [2, 31]),
+ ],
+ defaultActions: {
+ 5: [2, 45],
+ 7: [2, 2],
+ 25: [2, 48],
+ 40: [2, 47],
+ 46: [2, 28],
+ 53: [2, 23],
+ },
+ parseError: function (t, e) {
+ if (!e.recoverable) {
+ var r = new Error(t);
+ throw ((r.hash = e), r);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var e = [0],
+ r = [],
+ i = [null],
+ a = [],
+ n = this.table,
+ s = "",
+ o = 0,
+ c = 0,
+ l = a.slice.call(arguments, 1),
+ h = Object.create(this.lexer),
+ d = { yy: {} };
+ for (var u in this.yy) Object.prototype.hasOwnProperty.call(this.yy, u) && (d.yy[u] = this.yy[u]);
+ h.setInput(t, d.yy), (d.yy.lexer = h), (d.yy.parser = this), void 0 === h.yylloc && (h.yylloc = {});
+ var y = h.yylloc;
+ a.push(y);
+ var p = h.options && h.options.ranges;
+ "function" == typeof d.yy.parseError
+ ? (this.parseError = d.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var _, f, g, m, E, O, b, k, R, N = {}; ; ) {
+ if (
+ ((f = e[e.length - 1]),
+ this.defaultActions[f]
+ ? (g = this.defaultActions[f])
+ : (null == _ &&
+ ((R = void 0),
+ "number" != typeof (R = r.pop() || h.lex() || 1) &&
+ (R instanceof Array && (R = (r = R).pop()), (R = this.symbols_[R] || R)),
+ (_ = R)),
+ (g = n[f] && n[f][_])),
+ void 0 === g || !g.length || !g[0])
+ ) {
+ var T;
+ for (E in ((k = []), n[f])) this.terminals_[E] && E > 2 && k.push("'" + this.terminals_[E] + "'");
+ (T = h.showPosition
+ ? "Parse error on line " +
+ (o + 1) +
+ ":\n" +
+ h.showPosition() +
+ "\nExpecting " +
+ k.join(", ") +
+ ", got '" +
+ (this.terminals_[_] || _) +
+ "'"
+ : "Parse error on line " + (o + 1) + ": Unexpected " + (1 == _ ? "end of input" : "'" + (this.terminals_[_] || _) + "'")),
+ this.parseError(T, {
+ text: h.match,
+ token: this.terminals_[_] || _,
+ line: h.yylineno,
+ loc: y,
+ expected: k,
+ });
+ }
+ if (g[0] instanceof Array && g.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + f + ", token: " + _);
+ switch (g[0]) {
+ case 1:
+ e.push(_),
+ i.push(h.yytext),
+ a.push(h.yylloc),
+ e.push(g[1]),
+ (_ = null),
+ (c = h.yyleng),
+ (s = h.yytext),
+ (o = h.yylineno),
+ (y = h.yylloc);
+ break;
+ case 2:
+ if (
+ ((O = this.productions_[g[1]][1]),
+ (N.$ = i[i.length - O]),
+ (N._$ = {
+ first_line: a[a.length - (O || 1)].first_line,
+ last_line: a[a.length - 1].last_line,
+ first_column: a[a.length - (O || 1)].first_column,
+ last_column: a[a.length - 1].last_column,
+ }),
+ p && (N._$.range = [a[a.length - (O || 1)].range[0], a[a.length - 1].range[1]]),
+ void 0 !== (m = this.performAction.apply(N, [s, c, o, d.yy, g[1], i, a].concat(l))))
+ )
+ return m;
+ O && ((e = e.slice(0, -1 * O * 2)), (i = i.slice(0, -1 * O)), (a = a.slice(0, -1 * O))),
+ e.push(this.productions_[g[1]][0]),
+ i.push(N.$),
+ a.push(N._$),
+ (b = n[e[e.length - 2]][e[e.length - 1]]),
+ e.push(b);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ x = {
+ EOF: 1,
+ parseError: function (t, e) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, e);
+ },
+ setInput: function (t, e) {
+ return (
+ (this.yy = e || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0,
+ }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var e = t.length,
+ r = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - e)), (this.offset -= e);
+ var i = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ r.length - 1 && (this.yylineno -= r.length - 1);
+ var a = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: r
+ ? (r.length === i.length ? this.yylloc.first_column : 0) + i[i.length - r.length].length - r[0].length
+ : this.yylloc.first_column - e,
+ }),
+ this.options.ranges && (this.yylloc.range = [a[0], a[0] + this.yyleng - e]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ e = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + e + "^";
+ },
+ test_match: function (t, e) {
+ var r, i, a;
+ if (
+ (this.options.backtrack_lexer &&
+ ((a = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (a.yylloc.range = this.yylloc.range.slice(0))),
+ (i = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += i.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: i ? i[i.length - 1].length - i[i.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (r = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ r)
+ )
+ return r;
+ if (this._backtrack) {
+ for (var n in a) this[n] = a[n];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, e, r, i;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var a = this._currentRules(), n = 0; n < a.length; n++)
+ if ((r = this._input.match(this.rules[a[n]])) && (!e || r[0].length > e[0].length)) {
+ if (((e = r), (i = n), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(r, a[n]))) return t;
+ if (this._backtrack) {
+ e = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return e
+ ? !1 !== (t = this.test_match(e, a[i])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { "case-insensitive": !0 },
+ performAction: function (t, e, r, i) {
+ switch (r) {
+ case 0:
+ return this.begin("acc_title"), 25;
+ case 1:
+ return this.popState(), "acc_title_value";
+ case 2:
+ return this.begin("acc_descr"), 27;
+ case 3:
+ return this.popState(), "acc_descr_value";
+ case 4:
+ this.begin("acc_descr_multiline");
+ break;
+ case 5:
+ this.popState();
+ break;
+ case 6:
+ return "acc_descr_multiline_value";
+ case 7:
+ return this.begin("open_directive"), 52;
+ case 8:
+ return this.begin("type_directive"), 53;
+ case 9:
+ return this.popState(), this.begin("arg_directive"), 15;
+ case 10:
+ return this.popState(), this.popState(), 55;
+ case 11:
+ return 54;
+ case 12:
+ return 11;
+ case 13:
+ case 20:
+ case 25:
+ break;
+ case 14:
+ return 9;
+ case 15:
+ return 31;
+ case 16:
+ return 51;
+ case 17:
+ return 4;
+ case 18:
+ return this.begin("block"), 20;
+ case 19:
+ return 39;
+ case 21:
+ return 40;
+ case 22:
+ case 23:
+ return 37;
+ case 24:
+ return 41;
+ case 26:
+ return this.popState(), 22;
+ case 27:
+ case 57:
+ return e.yytext[0];
+ case 28:
+ case 32:
+ case 33:
+ case 46:
+ return 44;
+ case 29:
+ case 30:
+ case 31:
+ case 39:
+ case 41:
+ case 48:
+ return 46;
+ case 34:
+ case 35:
+ case 36:
+ case 37:
+ case 38:
+ case 40:
+ case 47:
+ return 45;
+ case 42:
+ case 43:
+ case 44:
+ case 45:
+ return 47;
+ case 49:
+ return 48;
+ case 50:
+ case 53:
+ case 54:
+ case 55:
+ return 49;
+ case 51:
+ case 52:
+ return 50;
+ case 56:
+ return 30;
+ case 58:
+ return 6;
+ }
+ },
+ rules: [
+ /^(?:accTitle\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*\{\s*)/i,
+ /^(?:[\}])/i,
+ /^(?:[^\}]*)/i,
+ /^(?:%%\{)/i,
+ /^(?:((?:(?!\}%%)[^:.])*))/i,
+ /^(?::)/i,
+ /^(?:\}%%)/i,
+ /^(?:((?:(?!\}%%).|\n)*))/i,
+ /^(?:[\n]+)/i,
+ /^(?:\s+)/i,
+ /^(?:[\s]+)/i,
+ /^(?:"[^"%\r\n\v\b\\]+")/i,
+ /^(?:"[^"]*")/i,
+ /^(?:erDiagram\b)/i,
+ /^(?:\{)/i,
+ /^(?:,)/i,
+ /^(?:\s+)/i,
+ /^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,
+ /^(?:(.*?)[~](.*?)*[~])/i,
+ /^(?:[\*A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,
+ /^(?:"[^"]*")/i,
+ /^(?:[\n]+)/i,
+ /^(?:\})/i,
+ /^(?:.)/i,
+ /^(?:one or zero\b)/i,
+ /^(?:one or more\b)/i,
+ /^(?:one or many\b)/i,
+ /^(?:1\+)/i,
+ /^(?:\|o\b)/i,
+ /^(?:zero or one\b)/i,
+ /^(?:zero or more\b)/i,
+ /^(?:zero or many\b)/i,
+ /^(?:0\+)/i,
+ /^(?:\}o\b)/i,
+ /^(?:many\(0\))/i,
+ /^(?:many\(1\))/i,
+ /^(?:many\b)/i,
+ /^(?:\}\|)/i,
+ /^(?:one\b)/i,
+ /^(?:only one\b)/i,
+ /^(?:1\b)/i,
+ /^(?:\|\|)/i,
+ /^(?:o\|)/i,
+ /^(?:o\{)/i,
+ /^(?:\|\{)/i,
+ /^(?:\s*u\b)/i,
+ /^(?:\.\.)/i,
+ /^(?:--)/i,
+ /^(?:to\b)/i,
+ /^(?:optionally to\b)/i,
+ /^(?:\.-)/i,
+ /^(?:-\.)/i,
+ /^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,
+ /^(?:.)/i,
+ /^(?:$)/i,
+ ],
+ conditions: {
+ acc_descr_multiline: { rules: [5, 6], inclusive: !1 },
+ acc_descr: { rules: [3], inclusive: !1 },
+ acc_title: { rules: [1], inclusive: !1 },
+ open_directive: { rules: [8], inclusive: !1 },
+ type_directive: { rules: [9, 10], inclusive: !1 },
+ arg_directive: { rules: [10, 11], inclusive: !1 },
+ block: { rules: [19, 20, 21, 22, 23, 24, 25, 26, 27], inclusive: !1 },
+ INITIAL: {
+ rules: [
+ 0, 2, 4, 7, 12, 13, 14, 15, 16, 17, 18, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ ],
+ inclusive: !0,
+ },
+ },
+ };
+ function A() {
+ this.yy = {};
+ }
+ return (T.lexer = x), (A.prototype = T), (T.Parser = A), new A();
+ })());
+ y.parser = y;
+ const p = y;
+ let _ = {},
+ f = [];
+ const g = function (t) {
+ return void 0 === _[t] && ((_[t] = { attributes: [] }), i.l.info("Added new entity :", t)), _[t];
+ },
+ m = {
+ Cardinality: {
+ ZERO_OR_ONE: "ZERO_OR_ONE",
+ ZERO_OR_MORE: "ZERO_OR_MORE",
+ ONE_OR_MORE: "ONE_OR_MORE",
+ ONLY_ONE: "ONLY_ONE",
+ MD_PARENT: "MD_PARENT",
+ },
+ Identification: { NON_IDENTIFYING: "NON_IDENTIFYING", IDENTIFYING: "IDENTIFYING" },
+ parseDirective: function (t, e, r) {
+ i.m.parseDirective(this, t, e, r);
+ },
+ getConfig: () => (0, i.c)().er,
+ addEntity: g,
+ addAttributes: function (t, e) {
+ let r,
+ a = g(t);
+ for (r = e.length - 1; r >= 0; r--) a.attributes.push(e[r]), i.l.debug("Added attribute ", e[r].attributeName);
+ },
+ getEntities: () => _,
+ addRelationship: function (t, e, r, a) {
+ let n = { entityA: t, roleA: e, entityB: r, relSpec: a };
+ f.push(n), i.l.debug("Added new relationship :", n);
+ },
+ getRelationships: () => f,
+ clear: function () {
+ (_ = {}), (f = []), (0, i.v)();
+ },
+ setAccTitle: i.s,
+ getAccTitle: i.g,
+ setAccDescription: i.b,
+ getAccDescription: i.a,
+ setDiagramTitle: i.r,
+ getDiagramTitle: i.t,
+ },
+ E = {
+ ONLY_ONE_START: "ONLY_ONE_START",
+ ONLY_ONE_END: "ONLY_ONE_END",
+ ZERO_OR_ONE_START: "ZERO_OR_ONE_START",
+ ZERO_OR_ONE_END: "ZERO_OR_ONE_END",
+ ONE_OR_MORE_START: "ONE_OR_MORE_START",
+ ONE_OR_MORE_END: "ONE_OR_MORE_END",
+ ZERO_OR_MORE_START: "ZERO_OR_MORE_START",
+ ZERO_OR_MORE_END: "ZERO_OR_MORE_END",
+ MD_PARENT_END: "MD_PARENT_END",
+ MD_PARENT_START: "MD_PARENT_START",
+ },
+ O = E,
+ b = /[^\dA-Za-z](\W)*/g;
+ let k = {},
+ R = new Map();
+ const N = function (t) {
+ return (t.entityA + t.roleA + t.entityB).replace(/\s/g, "");
+ };
+ let T = 0;
+ const x = "28e9f9db-3c8d-5aa5-9faf-44286ae5937c";
+ function A(t = "") {
+ return t.length > 0 ? `${t}-` : "";
+ }
+ const v = {
+ parser: p,
+ db: m,
+ renderer: {
+ setConf: function (t) {
+ const e = Object.keys(t);
+ for (const r of e) k[r] = t[r];
+ },
+ draw: function (t, e, r, o) {
+ (k = (0, i.c)().er), i.l.info("Drawing ER diagram");
+ const c = (0, i.c)().securityLevel;
+ let l;
+ "sandbox" === c && (l = (0, n.Ys)("#i" + e));
+ const h = ("sandbox" === c ? (0, n.Ys)(l.nodes()[0].contentDocument.body) : (0, n.Ys)("body")).select(`[id='${e}']`);
+ let d;
+ (function (t, e) {
+ let r;
+ t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.MD_PARENT_START)
+ .attr("refX", 0)
+ .attr("refY", 7)
+ .attr("markerWidth", 190)
+ .attr("markerHeight", 240)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"),
+ t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.MD_PARENT_END)
+ .attr("refX", 19)
+ .attr("refY", 7)
+ .attr("markerWidth", 20)
+ .attr("markerHeight", 28)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"),
+ t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.ONLY_ONE_START)
+ .attr("refX", 0)
+ .attr("refY", 9)
+ .attr("markerWidth", 18)
+ .attr("markerHeight", 18)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("stroke", e.stroke)
+ .attr("fill", "none")
+ .attr("d", "M9,0 L9,18 M15,0 L15,18"),
+ t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.ONLY_ONE_END)
+ .attr("refX", 18)
+ .attr("refY", 9)
+ .attr("markerWidth", 18)
+ .attr("markerHeight", 18)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("stroke", e.stroke)
+ .attr("fill", "none")
+ .attr("d", "M3,0 L3,18 M9,0 L9,18"),
+ (r = t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.ZERO_OR_ONE_START)
+ .attr("refX", 0)
+ .attr("refY", 9)
+ .attr("markerWidth", 30)
+ .attr("markerHeight", 18)
+ .attr("orient", "auto")),
+ r.append("circle").attr("stroke", e.stroke).attr("fill", "white").attr("cx", 21).attr("cy", 9).attr("r", 6),
+ r.append("path").attr("stroke", e.stroke).attr("fill", "none").attr("d", "M9,0 L9,18"),
+ (r = t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.ZERO_OR_ONE_END)
+ .attr("refX", 30)
+ .attr("refY", 9)
+ .attr("markerWidth", 30)
+ .attr("markerHeight", 18)
+ .attr("orient", "auto")),
+ r.append("circle").attr("stroke", e.stroke).attr("fill", "white").attr("cx", 9).attr("cy", 9).attr("r", 6),
+ r.append("path").attr("stroke", e.stroke).attr("fill", "none").attr("d", "M21,0 L21,18"),
+ t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.ONE_OR_MORE_START)
+ .attr("refX", 18)
+ .attr("refY", 18)
+ .attr("markerWidth", 45)
+ .attr("markerHeight", 36)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("stroke", e.stroke)
+ .attr("fill", "none")
+ .attr("d", "M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),
+ t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.ONE_OR_MORE_END)
+ .attr("refX", 27)
+ .attr("refY", 18)
+ .attr("markerWidth", 45)
+ .attr("markerHeight", 36)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("stroke", e.stroke)
+ .attr("fill", "none")
+ .attr("d", "M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),
+ (r = t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.ZERO_OR_MORE_START)
+ .attr("refX", 18)
+ .attr("refY", 18)
+ .attr("markerWidth", 57)
+ .attr("markerHeight", 36)
+ .attr("orient", "auto")),
+ r.append("circle").attr("stroke", e.stroke).attr("fill", "white").attr("cx", 48).attr("cy", 18).attr("r", 6),
+ r.append("path").attr("stroke", e.stroke).attr("fill", "none").attr("d", "M0,18 Q18,0 36,18 Q18,36 0,18"),
+ (r = t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.ZERO_OR_MORE_END)
+ .attr("refX", 39)
+ .attr("refY", 18)
+ .attr("markerWidth", 57)
+ .attr("markerHeight", 36)
+ .attr("orient", "auto")),
+ r.append("circle").attr("stroke", e.stroke).attr("fill", "white").attr("cx", 9).attr("cy", 18).attr("r", 6),
+ r.append("path").attr("stroke", e.stroke).attr("fill", "none").attr("d", "M21,18 Q39,0 57,18 Q39,36 21,18");
+ })(h, k),
+ (d = new a.k({ multigraph: !0, directed: !0, compound: !1 })
+ .setGraph({
+ rankdir: k.layoutDirection,
+ marginx: 20,
+ marginy: 20,
+ nodesep: 100,
+ edgesep: 100,
+ ranksep: 100,
+ })
+ .setDefaultEdgeLabel(function () {
+ return {};
+ }));
+ const y = (function (t, e, r) {
+ let a;
+ return (
+ Object.keys(e).forEach(function (n) {
+ const s = (function (t = "", e = "") {
+ const r = t.replace(b, "");
+ return `${A(e)}${A(r)}${u(t, x)}`;
+ })(n, "entity");
+ R.set(n, s);
+ const o = t.append("g").attr("id", s);
+ a = void 0 === a ? s : a;
+ const c = "text-" + s,
+ l = o
+ .append("text")
+ .classed("er entityLabel", !0)
+ .attr("id", c)
+ .attr("x", 0)
+ .attr("y", 0)
+ .style("dominant-baseline", "middle")
+ .style("text-anchor", "middle")
+ .style("font-family", (0, i.c)().fontFamily)
+ .style("font-size", k.fontSize + "px")
+ .text(n),
+ { width: h, height: d } = ((t, e, r) => {
+ const a = k.entityPadding / 3,
+ n = k.entityPadding / 3,
+ s = 0.85 * k.fontSize,
+ o = e.node().getBBox(),
+ c = [];
+ let l = !1,
+ h = !1,
+ d = 0,
+ u = 0,
+ y = 0,
+ p = 0,
+ _ = o.height + 2 * a,
+ f = 1;
+ r.forEach((t) => {
+ void 0 !== t.attributeKeyTypeList && t.attributeKeyTypeList.length > 0 && (l = !0),
+ void 0 !== t.attributeComment && (h = !0);
+ }),
+ r.forEach((r) => {
+ const n = `${e.node().id}-attr-${f}`;
+ let o = 0;
+ const g = (0, i.x)(r.attributeType),
+ m = t
+ .append("text")
+ .classed("er entityLabel", !0)
+ .attr("id", `${n}-type`)
+ .attr("x", 0)
+ .attr("y", 0)
+ .style("dominant-baseline", "middle")
+ .style("text-anchor", "left")
+ .style("font-family", (0, i.c)().fontFamily)
+ .style("font-size", s + "px")
+ .text(g),
+ E = t
+ .append("text")
+ .classed("er entityLabel", !0)
+ .attr("id", `${n}-name`)
+ .attr("x", 0)
+ .attr("y", 0)
+ .style("dominant-baseline", "middle")
+ .style("text-anchor", "left")
+ .style("font-family", (0, i.c)().fontFamily)
+ .style("font-size", s + "px")
+ .text(r.attributeName),
+ O = {};
+ (O.tn = m), (O.nn = E);
+ const b = m.node().getBBox(),
+ k = E.node().getBBox();
+ if (((d = Math.max(d, b.width)), (u = Math.max(u, k.width)), (o = Math.max(b.height, k.height)), l)) {
+ const e = void 0 !== r.attributeKeyTypeList ? r.attributeKeyTypeList.join(",") : "",
+ a = t
+ .append("text")
+ .classed("er entityLabel", !0)
+ .attr("id", `${n}-key`)
+ .attr("x", 0)
+ .attr("y", 0)
+ .style("dominant-baseline", "middle")
+ .style("text-anchor", "left")
+ .style("font-family", (0, i.c)().fontFamily)
+ .style("font-size", s + "px")
+ .text(e);
+ O.kn = a;
+ const c = a.node().getBBox();
+ (y = Math.max(y, c.width)), (o = Math.max(o, c.height));
+ }
+ if (h) {
+ const e = t
+ .append("text")
+ .classed("er entityLabel", !0)
+ .attr("id", `${n}-comment`)
+ .attr("x", 0)
+ .attr("y", 0)
+ .style("dominant-baseline", "middle")
+ .style("text-anchor", "left")
+ .style("font-family", (0, i.c)().fontFamily)
+ .style("font-size", s + "px")
+ .text(r.attributeComment || "");
+ O.cn = e;
+ const a = e.node().getBBox();
+ (p = Math.max(p, a.width)), (o = Math.max(o, a.height));
+ }
+ (O.height = o), c.push(O), (_ += o + 2 * a), (f += 1);
+ });
+ let g = 4;
+ l && (g += 2), h && (g += 2);
+ const m = d + u + y + p,
+ E = {
+ width: Math.max(k.minEntityWidth, Math.max(o.width + 2 * k.entityPadding, m + n * g)),
+ height: r.length > 0 ? _ : Math.max(k.minEntityHeight, o.height + 2 * k.entityPadding),
+ };
+ if (r.length > 0) {
+ const r = Math.max(0, (E.width - m - n * g) / (g / 2));
+ e.attr("transform", "translate(" + E.width / 2 + "," + (a + o.height / 2) + ")");
+ let i = o.height + 2 * a,
+ s = "attributeBoxOdd";
+ c.forEach((e) => {
+ const o = i + a + e.height / 2;
+ e.tn.attr("transform", "translate(" + n + "," + o + ")");
+ const c = t
+ .insert("rect", "#" + e.tn.node().id)
+ .classed(`er ${s}`, !0)
+ .attr("x", 0)
+ .attr("y", i)
+ .attr("width", d + 2 * n + r)
+ .attr("height", e.height + 2 * a),
+ _ = parseFloat(c.attr("x")) + parseFloat(c.attr("width"));
+ e.nn.attr("transform", "translate(" + (_ + n) + "," + o + ")");
+ const f = t
+ .insert("rect", "#" + e.nn.node().id)
+ .classed(`er ${s}`, !0)
+ .attr("x", _)
+ .attr("y", i)
+ .attr("width", u + 2 * n + r)
+ .attr("height", e.height + 2 * a);
+ let g = parseFloat(f.attr("x")) + parseFloat(f.attr("width"));
+ if (l) {
+ e.kn.attr("transform", "translate(" + (g + n) + "," + o + ")");
+ const c = t
+ .insert("rect", "#" + e.kn.node().id)
+ .classed(`er ${s}`, !0)
+ .attr("x", g)
+ .attr("y", i)
+ .attr("width", y + 2 * n + r)
+ .attr("height", e.height + 2 * a);
+ g = parseFloat(c.attr("x")) + parseFloat(c.attr("width"));
+ }
+ h &&
+ (e.cn.attr("transform", "translate(" + (g + n) + "," + o + ")"),
+ t
+ .insert("rect", "#" + e.cn.node().id)
+ .classed(`er ${s}`, "true")
+ .attr("x", g)
+ .attr("y", i)
+ .attr("width", p + 2 * n + r)
+ .attr("height", e.height + 2 * a)),
+ (i += e.height + 2 * a),
+ (s = "attributeBoxOdd" === s ? "attributeBoxEven" : "attributeBoxOdd");
+ });
+ } else
+ (E.height = Math.max(k.minEntityHeight, _)), e.attr("transform", "translate(" + E.width / 2 + "," + E.height / 2 + ")");
+ return E;
+ })(o, l, e[n].attributes),
+ y = o
+ .insert("rect", "#" + c)
+ .classed("er entityBox", !0)
+ .attr("x", 0)
+ .attr("y", 0)
+ .attr("width", h)
+ .attr("height", d)
+ .node()
+ .getBBox();
+ r.setNode(s, { width: y.width, height: y.height, shape: "rect", id: s });
+ }),
+ a
+ );
+ })(h, o.db.getEntities(), d),
+ p = (function (t, e) {
+ return (
+ t.forEach(function (t) {
+ e.setEdge(R.get(t.entityA), R.get(t.entityB), { relationship: t }, N(t));
+ }),
+ t
+ );
+ })(o.db.getRelationships(), d);
+ var _, f;
+ (0, s.bK)(d),
+ (_ = h),
+ (f = d).nodes().forEach(function (t) {
+ void 0 !== t &&
+ void 0 !== f.node(t) &&
+ _.select("#" + t).attr(
+ "transform",
+ "translate(" + (f.node(t).x - f.node(t).width / 2) + "," + (f.node(t).y - f.node(t).height / 2) + " )",
+ );
+ }),
+ p.forEach(function (t) {
+ !(function (t, e, r, a, s) {
+ T++;
+ const o = r.edge(R.get(e.entityA), R.get(e.entityB), N(e)),
+ c = (0, n.jvg)()
+ .x(function (t) {
+ return t.x;
+ })
+ .y(function (t) {
+ return t.y;
+ })
+ .curve(n.$0Z),
+ l = t
+ .insert("path", "#" + a)
+ .classed("er relationshipLine", !0)
+ .attr("d", c(o.points))
+ .style("stroke", k.stroke)
+ .style("fill", "none");
+ e.relSpec.relType === s.db.Identification.NON_IDENTIFYING && l.attr("stroke-dasharray", "8,8");
+ let h = "";
+ switch (
+ (k.arrowMarkerAbsolute &&
+ ((h = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search),
+ (h = h.replace(/\(/g, "\\(")),
+ (h = h.replace(/\)/g, "\\)"))),
+ e.relSpec.cardA)
+ ) {
+ case s.db.Cardinality.ZERO_OR_ONE:
+ l.attr("marker-end", "url(" + h + "#" + O.ZERO_OR_ONE_END + ")");
+ break;
+ case s.db.Cardinality.ZERO_OR_MORE:
+ l.attr("marker-end", "url(" + h + "#" + O.ZERO_OR_MORE_END + ")");
+ break;
+ case s.db.Cardinality.ONE_OR_MORE:
+ l.attr("marker-end", "url(" + h + "#" + O.ONE_OR_MORE_END + ")");
+ break;
+ case s.db.Cardinality.ONLY_ONE:
+ l.attr("marker-end", "url(" + h + "#" + O.ONLY_ONE_END + ")");
+ break;
+ case s.db.Cardinality.MD_PARENT:
+ l.attr("marker-end", "url(" + h + "#" + O.MD_PARENT_END + ")");
+ }
+ switch (e.relSpec.cardB) {
+ case s.db.Cardinality.ZERO_OR_ONE:
+ l.attr("marker-start", "url(" + h + "#" + O.ZERO_OR_ONE_START + ")");
+ break;
+ case s.db.Cardinality.ZERO_OR_MORE:
+ l.attr("marker-start", "url(" + h + "#" + O.ZERO_OR_MORE_START + ")");
+ break;
+ case s.db.Cardinality.ONE_OR_MORE:
+ l.attr("marker-start", "url(" + h + "#" + O.ONE_OR_MORE_START + ")");
+ break;
+ case s.db.Cardinality.ONLY_ONE:
+ l.attr("marker-start", "url(" + h + "#" + O.ONLY_ONE_START + ")");
+ break;
+ case s.db.Cardinality.MD_PARENT:
+ l.attr("marker-start", "url(" + h + "#" + O.MD_PARENT_START + ")");
+ }
+ const d = l.node().getTotalLength(),
+ u = l.node().getPointAtLength(0.5 * d),
+ y = "rel" + T,
+ p = t
+ .append("text")
+ .classed("er relationshipLabel", !0)
+ .attr("id", y)
+ .attr("x", u.x)
+ .attr("y", u.y)
+ .style("text-anchor", "middle")
+ .style("dominant-baseline", "middle")
+ .style("font-family", (0, i.c)().fontFamily)
+ .style("font-size", k.fontSize + "px")
+ .text(e.roleA)
+ .node()
+ .getBBox();
+ t.insert("rect", "#" + y)
+ .classed("er relationshipLabelBox", !0)
+ .attr("x", u.x - p.width / 2)
+ .attr("y", u.y - p.height / 2)
+ .attr("width", p.width)
+ .attr("height", p.height);
+ })(h, t, d, y, o);
+ });
+ const g = k.diagramPadding;
+ i.u.insertTitle(h, "entityTitleText", k.titleTopMargin, o.db.getDiagramTitle());
+ const m = h.node().getBBox(),
+ v = m.width + 2 * g,
+ M = m.height + 2 * g;
+ (0, i.i)(h, M, v, k.useMaxWidth), h.attr("viewBox", `${m.x - g} ${m.y - g} ${v} ${M}`);
+ },
+ },
+ styles: (t) =>
+ `\n .entityBox {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n }\n\n .attributeBoxOdd {\n fill: ${t.attributeBackgroundColorOdd};\n stroke: ${t.nodeBorder};\n }\n\n .attributeBoxEven {\n fill: ${t.attributeBackgroundColorEven};\n stroke: ${t.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${t.tertiaryColor};\n opacity: 0.7;\n background-color: ${t.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${t.lineColor};\n }\n\n .entityTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n } \n #MD_PARENT_START {\n fill: #f5f5f5 !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n }\n #MD_PARENT_END {\n fill: #f5f5f5 !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n }\n \n`,
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/433-f2655a46.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/433-f2655a46.chunk.min.js
new file mode 100644
index 000000000..3ad7d7928
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/433-f2655a46.chunk.min.js
@@ -0,0 +1,418 @@
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [433],
+ {
+ 6433: function (t, i, n) {
+ n.d(i, {
+ diagram: function () {
+ return h;
+ },
+ });
+ var e = n(9339),
+ s =
+ (n(7484),
+ n(7967),
+ n(7274),
+ n(7856),
+ (function () {
+ var t = function (t, i, n, e) {
+ for (n = n || {}, e = t.length; e--; n[t[e]] = i);
+ return n;
+ },
+ i = [6, 9, 10],
+ n = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ info: 4,
+ document: 5,
+ EOF: 6,
+ line: 7,
+ statement: 8,
+ NL: 9,
+ showInfo: 10,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: { 2: "error", 4: "info", 6: "EOF", 9: "NL", 10: "showInfo" },
+ productions_: [0, [3, 3], [5, 0], [5, 2], [7, 1], [7, 1], [8, 1]],
+ performAction: function (t, i, n, e, s, r, h) {
+ switch ((r.length, s)) {
+ case 1:
+ return e;
+ case 4:
+ break;
+ case 6:
+ e.setInfo(!0);
+ }
+ },
+ table: [
+ { 3: 1, 4: [1, 2] },
+ { 1: [3] },
+ t(i, [2, 2], { 5: 3 }),
+ { 6: [1, 4], 7: 5, 8: 6, 9: [1, 7], 10: [1, 8] },
+ { 1: [2, 1] },
+ t(i, [2, 3]),
+ t(i, [2, 4]),
+ t(i, [2, 5]),
+ t(i, [2, 6]),
+ ],
+ defaultActions: { 4: [2, 1] },
+ parseError: function (t, i) {
+ if (!i.recoverable) {
+ var n = new Error(t);
+ throw ((n.hash = i), n);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var i = [0],
+ n = [],
+ e = [null],
+ s = [],
+ r = this.table,
+ h = "",
+ o = 0,
+ l = 0,
+ c = s.slice.call(arguments, 1),
+ a = Object.create(this.lexer),
+ y = { yy: {} };
+ for (var u in this.yy) Object.prototype.hasOwnProperty.call(this.yy, u) && (y.yy[u] = this.yy[u]);
+ a.setInput(t, y.yy), (y.yy.lexer = a), (y.yy.parser = this), void 0 === a.yylloc && (a.yylloc = {});
+ var p = a.yylloc;
+ s.push(p);
+ var f = a.options && a.options.ranges;
+ "function" == typeof y.yy.parseError
+ ? (this.parseError = y.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var g, _, m, d, k, x, b, v, w, I = {}; ; ) {
+ if (
+ ((_ = i[i.length - 1]),
+ this.defaultActions[_]
+ ? (m = this.defaultActions[_])
+ : (null == g &&
+ ((w = void 0),
+ "number" != typeof (w = n.pop() || a.lex() || 1) &&
+ (w instanceof Array && (w = (n = w).pop()), (w = this.symbols_[w] || w)),
+ (g = w)),
+ (m = r[_] && r[_][g])),
+ void 0 === m || !m.length || !m[0])
+ ) {
+ var S;
+ for (k in ((v = []), r[_])) this.terminals_[k] && k > 2 && v.push("'" + this.terminals_[k] + "'");
+ (S = a.showPosition
+ ? "Parse error on line " +
+ (o + 1) +
+ ":\n" +
+ a.showPosition() +
+ "\nExpecting " +
+ v.join(", ") +
+ ", got '" +
+ (this.terminals_[g] || g) +
+ "'"
+ : "Parse error on line " + (o + 1) + ": Unexpected " + (1 == g ? "end of input" : "'" + (this.terminals_[g] || g) + "'")),
+ this.parseError(S, {
+ text: a.match,
+ token: this.terminals_[g] || g,
+ line: a.yylineno,
+ loc: p,
+ expected: v,
+ });
+ }
+ if (m[0] instanceof Array && m.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + _ + ", token: " + g);
+ switch (m[0]) {
+ case 1:
+ i.push(g),
+ e.push(a.yytext),
+ s.push(a.yylloc),
+ i.push(m[1]),
+ (g = null),
+ (l = a.yyleng),
+ (h = a.yytext),
+ (o = a.yylineno),
+ (p = a.yylloc);
+ break;
+ case 2:
+ if (
+ ((x = this.productions_[m[1]][1]),
+ (I.$ = e[e.length - x]),
+ (I._$ = {
+ first_line: s[s.length - (x || 1)].first_line,
+ last_line: s[s.length - 1].last_line,
+ first_column: s[s.length - (x || 1)].first_column,
+ last_column: s[s.length - 1].last_column,
+ }),
+ f && (I._$.range = [s[s.length - (x || 1)].range[0], s[s.length - 1].range[1]]),
+ void 0 !== (d = this.performAction.apply(I, [h, l, o, y.yy, m[1], e, s].concat(c))))
+ )
+ return d;
+ x && ((i = i.slice(0, -1 * x * 2)), (e = e.slice(0, -1 * x)), (s = s.slice(0, -1 * x))),
+ i.push(this.productions_[m[1]][0]),
+ e.push(I.$),
+ s.push(I._$),
+ (b = r[i[i.length - 2]][i[i.length - 1]]),
+ i.push(b);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ e = {
+ EOF: 1,
+ parseError: function (t, i) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, i);
+ },
+ setInput: function (t, i) {
+ return (
+ (this.yy = i || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0,
+ }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var i = t.length,
+ n = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - i)), (this.offset -= i);
+ var e = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ n.length - 1 && (this.yylineno -= n.length - 1);
+ var s = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: n
+ ? (n.length === e.length ? this.yylloc.first_column : 0) + e[e.length - n.length].length - n[0].length
+ : this.yylloc.first_column - i,
+ }),
+ this.options.ranges && (this.yylloc.range = [s[0], s[0] + this.yyleng - i]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ i = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + i + "^";
+ },
+ test_match: function (t, i) {
+ var n, e, s;
+ if (
+ (this.options.backtrack_lexer &&
+ ((s = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (s.yylloc.range = this.yylloc.range.slice(0))),
+ (e = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += e.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: e ? e[e.length - 1].length - e[e.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (n = this.performAction.call(this, this.yy, this, i, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ n)
+ )
+ return n;
+ if (this._backtrack) {
+ for (var r in s) this[r] = s[r];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, i, n, e;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var s = this._currentRules(), r = 0; r < s.length; r++)
+ if ((n = this._input.match(this.rules[s[r]])) && (!i || n[0].length > i[0].length)) {
+ if (((i = n), (e = r), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(n, s[r]))) return t;
+ if (this._backtrack) {
+ i = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return i
+ ? !1 !== (t = this.test_match(i, s[e])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { "case-insensitive": !0 },
+ performAction: function (t, i, n, e) {
+ switch (n) {
+ case 0:
+ return 4;
+ case 1:
+ return 9;
+ case 2:
+ return "space";
+ case 3:
+ return 10;
+ case 4:
+ return 6;
+ case 5:
+ return "TXT";
+ }
+ },
+ rules: [/^(?:info\b)/i, /^(?:[\s\n\r]+)/i, /^(?:[\s]+)/i, /^(?:showInfo\b)/i, /^(?:$)/i, /^(?:.)/i],
+ conditions: { INITIAL: { rules: [0, 1, 2, 3, 4, 5], inclusive: !0 } },
+ };
+ function s() {
+ this.yy = {};
+ }
+ return (n.lexer = e), (s.prototype = n), (n.Parser = s), new s();
+ })());
+ s.parser = s;
+ let r = false;
+ const h = {
+ parser: s,
+ db: {
+ clear: () => {
+ r = false;
+ },
+ setInfo: (t) => {
+ r = t;
+ },
+ getInfo: () => r,
+ },
+ renderer: {
+ draw: (t, i, n) => {
+ e.l.debug("rendering info diagram\n" + t);
+ const s = (0, e.B)(i);
+ (0, e.i)(s, 100, 400, !0),
+ s
+ .append("g")
+ .append("text")
+ .attr("x", 100)
+ .attr("y", 40)
+ .attr("class", "version")
+ .attr("font-size", 32)
+ .style("text-anchor", "middle")
+ .text(`v${n}`);
+ },
+ },
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/438-760c9ed3.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/438-760c9ed3.chunk.min.js
new file mode 100644
index 000000000..a48cfa3f1
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/438-760c9ed3.chunk.min.js
@@ -0,0 +1,1149 @@
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [438],
+ {
+ 2438: function (t, e, n) {
+ n.d(e, {
+ diagram: function () {
+ return A;
+ },
+ });
+ var i = n(9339),
+ r = n(7274),
+ s = n(8252),
+ a =
+ (n(7484),
+ n(7967),
+ n(7856),
+ (function () {
+ var t = function (t, e, n, i) {
+ for (n = n || {}, i = t.length; i--; n[t[i]] = e);
+ return n;
+ },
+ e = [1, 2],
+ n = [1, 5],
+ i = [6, 9, 11, 17, 18, 20, 22, 23, 24, 26],
+ r = [1, 15],
+ s = [1, 16],
+ a = [1, 17],
+ o = [1, 18],
+ c = [1, 19],
+ l = [1, 20],
+ h = [1, 24],
+ u = [4, 6, 9, 11, 17, 18, 20, 22, 23, 24, 26],
+ y = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ journey: 4,
+ document: 5,
+ EOF: 6,
+ directive: 7,
+ line: 8,
+ SPACE: 9,
+ statement: 10,
+ NEWLINE: 11,
+ openDirective: 12,
+ typeDirective: 13,
+ closeDirective: 14,
+ ":": 15,
+ argDirective: 16,
+ title: 17,
+ acc_title: 18,
+ acc_title_value: 19,
+ acc_descr: 20,
+ acc_descr_value: 21,
+ acc_descr_multiline_value: 22,
+ section: 23,
+ taskName: 24,
+ taskData: 25,
+ open_directive: 26,
+ type_directive: 27,
+ arg_directive: 28,
+ close_directive: 29,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 4: "journey",
+ 6: "EOF",
+ 9: "SPACE",
+ 11: "NEWLINE",
+ 15: ":",
+ 17: "title",
+ 18: "acc_title",
+ 19: "acc_title_value",
+ 20: "acc_descr",
+ 21: "acc_descr_value",
+ 22: "acc_descr_multiline_value",
+ 23: "section",
+ 24: "taskName",
+ 25: "taskData",
+ 26: "open_directive",
+ 27: "type_directive",
+ 28: "arg_directive",
+ 29: "close_directive",
+ },
+ productions_: [
+ 0,
+ [3, 3],
+ [3, 2],
+ [5, 0],
+ [5, 2],
+ [8, 2],
+ [8, 1],
+ [8, 1],
+ [8, 1],
+ [7, 4],
+ [7, 6],
+ [10, 1],
+ [10, 2],
+ [10, 2],
+ [10, 1],
+ [10, 1],
+ [10, 2],
+ [10, 1],
+ [12, 1],
+ [13, 1],
+ [16, 1],
+ [14, 1],
+ ],
+ performAction: function (t, e, n, i, r, s, a) {
+ var o = s.length - 1;
+ switch (r) {
+ case 1:
+ return s[o - 1];
+ case 3:
+ case 7:
+ case 8:
+ this.$ = [];
+ break;
+ case 4:
+ s[o - 1].push(s[o]), (this.$ = s[o - 1]);
+ break;
+ case 5:
+ case 6:
+ this.$ = s[o];
+ break;
+ case 11:
+ i.setDiagramTitle(s[o].substr(6)), (this.$ = s[o].substr(6));
+ break;
+ case 12:
+ (this.$ = s[o].trim()), i.setAccTitle(this.$);
+ break;
+ case 13:
+ case 14:
+ (this.$ = s[o].trim()), i.setAccDescription(this.$);
+ break;
+ case 15:
+ i.addSection(s[o].substr(8)), (this.$ = s[o].substr(8));
+ break;
+ case 16:
+ i.addTask(s[o - 1], s[o]), (this.$ = "task");
+ break;
+ case 18:
+ i.parseDirective("%%{", "open_directive");
+ break;
+ case 19:
+ i.parseDirective(s[o], "type_directive");
+ break;
+ case 20:
+ (s[o] = s[o].trim().replace(/'/g, '"')), i.parseDirective(s[o], "arg_directive");
+ break;
+ case 21:
+ i.parseDirective("}%%", "close_directive", "journey");
+ }
+ },
+ table: [
+ { 3: 1, 4: e, 7: 3, 12: 4, 26: n },
+ { 1: [3] },
+ t(i, [2, 3], { 5: 6 }),
+ { 3: 7, 4: e, 7: 3, 12: 4, 26: n },
+ { 13: 8, 27: [1, 9] },
+ { 27: [2, 18] },
+ {
+ 6: [1, 10],
+ 7: 21,
+ 8: 11,
+ 9: [1, 12],
+ 10: 13,
+ 11: [1, 14],
+ 12: 4,
+ 17: r,
+ 18: s,
+ 20: a,
+ 22: o,
+ 23: c,
+ 24: l,
+ 26: n,
+ },
+ { 1: [2, 2] },
+ { 14: 22, 15: [1, 23], 29: h },
+ t([15, 29], [2, 19]),
+ t(i, [2, 8], { 1: [2, 1] }),
+ t(i, [2, 4]),
+ { 7: 21, 10: 25, 12: 4, 17: r, 18: s, 20: a, 22: o, 23: c, 24: l, 26: n },
+ t(i, [2, 6]),
+ t(i, [2, 7]),
+ t(i, [2, 11]),
+ { 19: [1, 26] },
+ { 21: [1, 27] },
+ t(i, [2, 14]),
+ t(i, [2, 15]),
+ { 25: [1, 28] },
+ t(i, [2, 17]),
+ { 11: [1, 29] },
+ { 16: 30, 28: [1, 31] },
+ { 11: [2, 21] },
+ t(i, [2, 5]),
+ t(i, [2, 12]),
+ t(i, [2, 13]),
+ t(i, [2, 16]),
+ t(u, [2, 9]),
+ { 14: 32, 29: h },
+ { 29: [2, 20] },
+ { 11: [1, 33] },
+ t(u, [2, 10]),
+ ],
+ defaultActions: { 5: [2, 18], 7: [2, 2], 24: [2, 21], 31: [2, 20] },
+ parseError: function (t, e) {
+ if (!e.recoverable) {
+ var n = new Error(t);
+ throw ((n.hash = e), n);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var e = [0],
+ n = [],
+ i = [null],
+ r = [],
+ s = this.table,
+ a = "",
+ o = 0,
+ c = 0,
+ l = r.slice.call(arguments, 1),
+ h = Object.create(this.lexer),
+ u = { yy: {} };
+ for (var y in this.yy) Object.prototype.hasOwnProperty.call(this.yy, y) && (u.yy[y] = this.yy[y]);
+ h.setInput(t, u.yy), (u.yy.lexer = h), (u.yy.parser = this), void 0 === h.yylloc && (h.yylloc = {});
+ var p = h.yylloc;
+ r.push(p);
+ var d = h.options && h.options.ranges;
+ "function" == typeof u.yy.parseError
+ ? (this.parseError = u.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var f, g, x, m, k, _, b, v, $, w = {}; ; ) {
+ if (
+ ((g = e[e.length - 1]),
+ this.defaultActions[g]
+ ? (x = this.defaultActions[g])
+ : (null == f &&
+ (($ = void 0),
+ "number" != typeof ($ = n.pop() || h.lex() || 1) &&
+ ($ instanceof Array && ($ = (n = $).pop()), ($ = this.symbols_[$] || $)),
+ (f = $)),
+ (x = s[g] && s[g][f])),
+ void 0 === x || !x.length || !x[0])
+ ) {
+ var M;
+ for (k in ((v = []), s[g])) this.terminals_[k] && k > 2 && v.push("'" + this.terminals_[k] + "'");
+ (M = h.showPosition
+ ? "Parse error on line " +
+ (o + 1) +
+ ":\n" +
+ h.showPosition() +
+ "\nExpecting " +
+ v.join(", ") +
+ ", got '" +
+ (this.terminals_[f] || f) +
+ "'"
+ : "Parse error on line " + (o + 1) + ": Unexpected " + (1 == f ? "end of input" : "'" + (this.terminals_[f] || f) + "'")),
+ this.parseError(M, {
+ text: h.match,
+ token: this.terminals_[f] || f,
+ line: h.yylineno,
+ loc: p,
+ expected: v,
+ });
+ }
+ if (x[0] instanceof Array && x.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + g + ", token: " + f);
+ switch (x[0]) {
+ case 1:
+ e.push(f),
+ i.push(h.yytext),
+ r.push(h.yylloc),
+ e.push(x[1]),
+ (f = null),
+ (c = h.yyleng),
+ (a = h.yytext),
+ (o = h.yylineno),
+ (p = h.yylloc);
+ break;
+ case 2:
+ if (
+ ((_ = this.productions_[x[1]][1]),
+ (w.$ = i[i.length - _]),
+ (w._$ = {
+ first_line: r[r.length - (_ || 1)].first_line,
+ last_line: r[r.length - 1].last_line,
+ first_column: r[r.length - (_ || 1)].first_column,
+ last_column: r[r.length - 1].last_column,
+ }),
+ d && (w._$.range = [r[r.length - (_ || 1)].range[0], r[r.length - 1].range[1]]),
+ void 0 !== (m = this.performAction.apply(w, [a, c, o, u.yy, x[1], i, r].concat(l))))
+ )
+ return m;
+ _ && ((e = e.slice(0, -1 * _ * 2)), (i = i.slice(0, -1 * _)), (r = r.slice(0, -1 * _))),
+ e.push(this.productions_[x[1]][0]),
+ i.push(w.$),
+ r.push(w._$),
+ (b = s[e[e.length - 2]][e[e.length - 1]]),
+ e.push(b);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ p = {
+ EOF: 1,
+ parseError: function (t, e) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, e);
+ },
+ setInput: function (t, e) {
+ return (
+ (this.yy = e || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0,
+ }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var e = t.length,
+ n = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - e)), (this.offset -= e);
+ var i = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ n.length - 1 && (this.yylineno -= n.length - 1);
+ var r = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: n
+ ? (n.length === i.length ? this.yylloc.first_column : 0) + i[i.length - n.length].length - n[0].length
+ : this.yylloc.first_column - e,
+ }),
+ this.options.ranges && (this.yylloc.range = [r[0], r[0] + this.yyleng - e]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ e = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + e + "^";
+ },
+ test_match: function (t, e) {
+ var n, i, r;
+ if (
+ (this.options.backtrack_lexer &&
+ ((r = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (r.yylloc.range = this.yylloc.range.slice(0))),
+ (i = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += i.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: i ? i[i.length - 1].length - i[i.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (n = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ n)
+ )
+ return n;
+ if (this._backtrack) {
+ for (var s in r) this[s] = r[s];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, e, n, i;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var r = this._currentRules(), s = 0; s < r.length; s++)
+ if ((n = this._input.match(this.rules[r[s]])) && (!e || n[0].length > e[0].length)) {
+ if (((e = n), (i = s), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(n, r[s]))) return t;
+ if (this._backtrack) {
+ e = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return e
+ ? !1 !== (t = this.test_match(e, r[i])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { "case-insensitive": !0 },
+ performAction: function (t, e, n, i) {
+ switch (n) {
+ case 0:
+ return this.begin("open_directive"), 26;
+ case 1:
+ return this.begin("type_directive"), 27;
+ case 2:
+ return this.popState(), this.begin("arg_directive"), 15;
+ case 3:
+ return this.popState(), this.popState(), 29;
+ case 4:
+ return 28;
+ case 5:
+ case 6:
+ case 8:
+ case 9:
+ break;
+ case 7:
+ return 11;
+ case 10:
+ return 4;
+ case 11:
+ return 17;
+ case 12:
+ return this.begin("acc_title"), 18;
+ case 13:
+ return this.popState(), "acc_title_value";
+ case 14:
+ return this.begin("acc_descr"), 20;
+ case 15:
+ return this.popState(), "acc_descr_value";
+ case 16:
+ this.begin("acc_descr_multiline");
+ break;
+ case 17:
+ this.popState();
+ break;
+ case 18:
+ return "acc_descr_multiline_value";
+ case 19:
+ return 23;
+ case 20:
+ return 24;
+ case 21:
+ return 25;
+ case 22:
+ return 15;
+ case 23:
+ return 6;
+ case 24:
+ return "INVALID";
+ }
+ },
+ rules: [
+ /^(?:%%\{)/i,
+ /^(?:((?:(?!\}%%)[^:.])*))/i,
+ /^(?::)/i,
+ /^(?:\}%%)/i,
+ /^(?:((?:(?!\}%%).|\n)*))/i,
+ /^(?:%(?!\{)[^\n]*)/i,
+ /^(?:[^\}]%%[^\n]*)/i,
+ /^(?:[\n]+)/i,
+ /^(?:\s+)/i,
+ /^(?:#[^\n]*)/i,
+ /^(?:journey\b)/i,
+ /^(?:title\s[^#\n;]+)/i,
+ /^(?:accTitle\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*\{\s*)/i,
+ /^(?:[\}])/i,
+ /^(?:[^\}]*)/i,
+ /^(?:section\s[^#:\n;]+)/i,
+ /^(?:[^#:\n;]+)/i,
+ /^(?::[^#\n;]+)/i,
+ /^(?::)/i,
+ /^(?:$)/i,
+ /^(?:.)/i,
+ ],
+ conditions: {
+ open_directive: { rules: [1], inclusive: !1 },
+ type_directive: { rules: [2, 3], inclusive: !1 },
+ arg_directive: { rules: [3, 4], inclusive: !1 },
+ acc_descr_multiline: { rules: [17, 18], inclusive: !1 },
+ acc_descr: { rules: [15], inclusive: !1 },
+ acc_title: { rules: [13], inclusive: !1 },
+ INITIAL: {
+ rules: [0, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 22, 23, 24],
+ inclusive: !0,
+ },
+ },
+ };
+ function d() {
+ this.yy = {};
+ }
+ return (y.lexer = p), (d.prototype = y), (y.Parser = d), new d();
+ })());
+ a.parser = a;
+ const o = a;
+ let c = "";
+ const l = [],
+ h = [],
+ u = [],
+ y = function () {
+ let t = !0;
+ for (const [e, n] of u.entries()) u[e].processed, (t = t && n.processed);
+ return t;
+ },
+ p = {
+ parseDirective: function (t, e, n) {
+ i.m.parseDirective(this, t, e, n);
+ },
+ getConfig: () => (0, i.c)().journey,
+ clear: function () {
+ (l.length = 0), (h.length = 0), (c = ""), (u.length = 0), (0, i.v)();
+ },
+ setDiagramTitle: i.r,
+ getDiagramTitle: i.t,
+ setAccTitle: i.s,
+ getAccTitle: i.g,
+ setAccDescription: i.b,
+ getAccDescription: i.a,
+ addSection: function (t) {
+ (c = t), l.push(t);
+ },
+ getSections: function () {
+ return l;
+ },
+ getTasks: function () {
+ let t = y(),
+ e = 0;
+ for (; !t && e < 100; ) (t = y()), e++;
+ return h.push(...u), h;
+ },
+ addTask: function (t, e) {
+ const n = e.substr(1).split(":");
+ let i = 0,
+ r = [];
+ 1 === n.length ? ((i = Number(n[0])), (r = [])) : ((i = Number(n[0])), (r = n[1].split(",")));
+ const s = r.map((t) => t.trim()),
+ a = { section: c, type: c, people: s, task: t, score: i };
+ u.push(a);
+ },
+ addTaskOrg: function (t) {
+ const e = { section: c, type: c, description: t, task: t, classes: [] };
+ h.push(e);
+ },
+ getActors: function () {
+ return (function () {
+ const t = [];
+ return (
+ h.forEach((e) => {
+ e.people && t.push(...e.people);
+ }),
+ [...new Set(t)].sort()
+ );
+ })();
+ },
+ },
+ d = function (t, e) {
+ return (0, s.d)(t, e);
+ },
+ f = function (t, e) {
+ const n = t.append("circle");
+ return (
+ n.attr("cx", e.cx),
+ n.attr("cy", e.cy),
+ n.attr("class", "actor-" + e.pos),
+ n.attr("fill", e.fill),
+ n.attr("stroke", e.stroke),
+ n.attr("r", e.r),
+ void 0 !== n.class && n.attr("class", n.class),
+ void 0 !== e.title && n.append("title").text(e.title),
+ n
+ );
+ };
+ let g = -1;
+ const x = (function () {
+ function t(t, e, n, r, s, a, o, c) {
+ i(
+ e
+ .append("text")
+ .attr("x", n + s / 2)
+ .attr("y", r + a / 2 + 5)
+ .style("font-color", c)
+ .style("text-anchor", "middle")
+ .text(t),
+ o,
+ );
+ }
+ function e(t, e, n, r, s, a, o, c, l) {
+ const { taskFontSize: h, taskFontFamily: u } = c,
+ y = t.split(/
/gi);
+ for (let t = 0; t < y.length; t++) {
+ const c = t * h - (h * (y.length - 1)) / 2,
+ p = e
+ .append("text")
+ .attr("x", n + s / 2)
+ .attr("y", r)
+ .attr("fill", l)
+ .style("text-anchor", "middle")
+ .style("font-size", h)
+ .style("font-family", u);
+ p
+ .append("tspan")
+ .attr("x", n + s / 2)
+ .attr("dy", c)
+ .text(y[t]),
+ p
+ .attr("y", r + a / 2)
+ .attr("dominant-baseline", "central")
+ .attr("alignment-baseline", "central"),
+ i(p, o);
+ }
+ }
+ function n(t, n, r, s, a, o, c, l) {
+ const h = n.append("switch"),
+ u = h
+ .append("foreignObject")
+ .attr("x", r)
+ .attr("y", s)
+ .attr("width", a)
+ .attr("height", o)
+ .attr("position", "fixed")
+ .append("xhtml:div")
+ .style("display", "table")
+ .style("height", "100%")
+ .style("width", "100%");
+ u
+ .append("div")
+ .attr("class", "label")
+ .style("display", "table-cell")
+ .style("text-align", "center")
+ .style("vertical-align", "middle")
+ .text(t),
+ e(t, h, r, s, a, o, c, l),
+ i(u, c);
+ }
+ function i(t, e) {
+ for (const n in e) n in e && t.attr(n, e[n]);
+ }
+ return function (i) {
+ return "fo" === i.textPlacement ? n : "old" === i.textPlacement ? t : e;
+ };
+ })(),
+ m = f,
+ k = function (t, e, n) {
+ const i = t.append("g"),
+ r = (0, s.g)();
+ (r.x = e.x),
+ (r.y = e.y),
+ (r.fill = e.fill),
+ (r.width = n.width * e.taskCount + n.diagramMarginX * (e.taskCount - 1)),
+ (r.height = n.height),
+ (r.class = "journey-section section-type-" + e.num),
+ (r.rx = 3),
+ (r.ry = 3),
+ d(i, r),
+ x(n)(e.text, i, r.x, r.y, r.width, r.height, { class: "journey-section section-type-" + e.num }, n, e.colour);
+ },
+ _ = function (t, e) {
+ return (0, s.f)(t, e);
+ },
+ b = function (t, e, n) {
+ const i = e.x + n.width / 2,
+ a = t.append("g");
+ g++,
+ a
+ .append("line")
+ .attr("id", "task" + g)
+ .attr("x1", i)
+ .attr("y1", e.y)
+ .attr("x2", i)
+ .attr("y2", 450)
+ .attr("class", "task-line")
+ .attr("stroke-width", "1px")
+ .attr("stroke-dasharray", "4 2")
+ .attr("stroke", "#666"),
+ (function (t, e) {
+ t.append("circle")
+ .attr("cx", e.cx)
+ .attr("cy", e.cy)
+ .attr("class", "face")
+ .attr("r", 15)
+ .attr("stroke-width", 2)
+ .attr("overflow", "visible");
+ const n = t.append("g");
+ n
+ .append("circle")
+ .attr("cx", e.cx - 5)
+ .attr("cy", e.cy - 5)
+ .attr("r", 1.5)
+ .attr("stroke-width", 2)
+ .attr("fill", "#666")
+ .attr("stroke", "#666"),
+ n
+ .append("circle")
+ .attr("cx", e.cx + 5)
+ .attr("cy", e.cy - 5)
+ .attr("r", 1.5)
+ .attr("stroke-width", 2)
+ .attr("fill", "#666")
+ .attr("stroke", "#666"),
+ e.score > 3
+ ? (function (t) {
+ const n = (0, r.Nb1)()
+ .startAngle(Math.PI / 2)
+ .endAngle((Math.PI / 2) * 3)
+ .innerRadius(7.5)
+ .outerRadius(15 / 2.2);
+ t.append("path")
+ .attr("class", "mouth")
+ .attr("d", n)
+ .attr("transform", "translate(" + e.cx + "," + (e.cy + 2) + ")");
+ })(n)
+ : e.score < 3
+ ? (function (t) {
+ const n = (0, r.Nb1)()
+ .startAngle((3 * Math.PI) / 2)
+ .endAngle((Math.PI / 2) * 5)
+ .innerRadius(7.5)
+ .outerRadius(15 / 2.2);
+ t.append("path")
+ .attr("class", "mouth")
+ .attr("d", n)
+ .attr("transform", "translate(" + e.cx + "," + (e.cy + 7) + ")");
+ })(n)
+ : n
+ .append("line")
+ .attr("class", "mouth")
+ .attr("stroke", 2)
+ .attr("x1", e.cx - 5)
+ .attr("y1", e.cy + 7)
+ .attr("x2", e.cx + 5)
+ .attr("y2", e.cy + 7)
+ .attr("class", "mouth")
+ .attr("stroke-width", "1px")
+ .attr("stroke", "#666");
+ })(a, { cx: i, cy: 300 + 30 * (5 - e.score), score: e.score });
+ const o = (0, s.g)();
+ (o.x = e.x),
+ (o.y = e.y),
+ (o.fill = e.fill),
+ (o.width = n.width),
+ (o.height = n.height),
+ (o.class = "task task-type-" + e.num),
+ (o.rx = 3),
+ (o.ry = 3),
+ d(a, o);
+ let c = e.x + 14;
+ e.people.forEach((t) => {
+ const n = e.actors[t].color,
+ i = {
+ cx: c,
+ cy: e.y,
+ r: 7,
+ fill: n,
+ stroke: "#000",
+ title: t,
+ pos: e.actors[t].position,
+ };
+ f(a, i), (c += 10);
+ }),
+ x(n)(e.task, a, o.x, o.y, o.width, o.height, { class: "task" }, n, e.colour);
+ },
+ v = {},
+ $ = (0, i.c)().journey,
+ w = $.leftMargin,
+ M = {
+ data: { startx: void 0, stopx: void 0, starty: void 0, stopy: void 0 },
+ verticalPos: 0,
+ sequenceItems: [],
+ init: function () {
+ (this.sequenceItems = []), (this.data = { startx: void 0, stopx: void 0, starty: void 0, stopy: void 0 }), (this.verticalPos = 0);
+ },
+ updateVal: function (t, e, n, i) {
+ void 0 === t[e] ? (t[e] = n) : (t[e] = i(n, t[e]));
+ },
+ updateBounds: function (t, e, n, r) {
+ const s = (0, i.c)().journey,
+ a = this;
+ let o = 0;
+ this.sequenceItems.forEach(function (i) {
+ o++;
+ const c = a.sequenceItems.length - o + 1;
+ a.updateVal(i, "starty", e - c * s.boxMargin, Math.min),
+ a.updateVal(i, "stopy", r + c * s.boxMargin, Math.max),
+ a.updateVal(M.data, "startx", t - c * s.boxMargin, Math.min),
+ a.updateVal(M.data, "stopx", n + c * s.boxMargin, Math.max),
+ a.updateVal(i, "startx", t - c * s.boxMargin, Math.min),
+ a.updateVal(i, "stopx", n + c * s.boxMargin, Math.max),
+ a.updateVal(M.data, "starty", e - c * s.boxMargin, Math.min),
+ a.updateVal(M.data, "stopy", r + c * s.boxMargin, Math.max);
+ });
+ },
+ insert: function (t, e, n, i) {
+ const r = Math.min(t, n),
+ s = Math.max(t, n),
+ a = Math.min(e, i),
+ o = Math.max(e, i);
+ this.updateVal(M.data, "startx", r, Math.min),
+ this.updateVal(M.data, "starty", a, Math.min),
+ this.updateVal(M.data, "stopx", s, Math.max),
+ this.updateVal(M.data, "stopy", o, Math.max),
+ this.updateBounds(r, a, s, o);
+ },
+ bumpVerticalPos: function (t) {
+ (this.verticalPos = this.verticalPos + t), (this.data.stopy = this.verticalPos);
+ },
+ getVerticalPos: function () {
+ return this.verticalPos;
+ },
+ getBounds: function () {
+ return this.data;
+ },
+ },
+ E = $.sectionFills,
+ S = $.sectionColours,
+ T = {
+ setConf: function (t) {
+ Object.keys(t).forEach(function (e) {
+ $[e] = t[e];
+ });
+ },
+ draw: function (t, e, n, s) {
+ const a = (0, i.c)().journey,
+ o = (0, i.c)().securityLevel;
+ let c;
+ "sandbox" === o && (c = (0, r.Ys)("#i" + e));
+ const l = "sandbox" === o ? (0, r.Ys)(c.nodes()[0].contentDocument.body) : (0, r.Ys)("body");
+ M.init();
+ const h = l.select("#" + e);
+ h.append("defs")
+ .append("marker")
+ .attr("id", "arrowhead")
+ .attr("refX", 5)
+ .attr("refY", 2)
+ .attr("markerWidth", 6)
+ .attr("markerHeight", 4)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 0,0 V 4 L6,2 Z");
+ const u = s.db.getTasks(),
+ y = s.db.getDiagramTitle(),
+ p = s.db.getActors();
+ for (const t in v) delete v[t];
+ let d = 0;
+ p.forEach((t) => {
+ (v[t] = { color: a.actorColours[d % a.actorColours.length], position: d }), d++;
+ }),
+ (function (t) {
+ const e = (0, i.c)().journey;
+ let n = 60;
+ Object.keys(v).forEach((i) => {
+ const r = v[i].color,
+ s = { cx: 20, cy: n, r: 7, fill: r, stroke: "#000", pos: v[i].position };
+ m(t, s);
+ const a = {
+ x: 40,
+ y: n + 7,
+ fill: "#666",
+ text: i,
+ textMargin: 5 | e.boxTextMargin,
+ };
+ _(t, a), (n += 20);
+ });
+ })(h),
+ M.insert(0, 0, w, 50 * Object.keys(v).length),
+ (function (t, e, n) {
+ const r = (0, i.c)().journey;
+ let s = "";
+ const a = n + (2 * r.height + r.diagramMarginY);
+ let o = 0,
+ c = "#CCC",
+ l = "black",
+ h = 0;
+ for (const [n, i] of e.entries()) {
+ if (s !== i.section) {
+ (c = E[o % E.length]), (h = o % E.length), (l = S[o % S.length]);
+ let a = 0;
+ const u = i.section;
+ for (let t = n; t < e.length && e[t].section == u; t++) a += 1;
+ const y = {
+ x: n * r.taskMargin + n * r.width + w,
+ y: 50,
+ text: i.section,
+ fill: c,
+ num: h,
+ colour: l,
+ taskCount: a,
+ };
+ k(t, y, r), (s = i.section), o++;
+ }
+ const u = i.people.reduce((t, e) => (v[e] && (t[e] = v[e]), t), {});
+ (i.x = n * r.taskMargin + n * r.width + w),
+ (i.y = a),
+ (i.width = r.diagramMarginX),
+ (i.height = r.diagramMarginY),
+ (i.colour = l),
+ (i.fill = c),
+ (i.num = h),
+ (i.actors = u),
+ b(t, i, r),
+ M.insert(i.x, i.y, i.x + i.width + r.taskMargin, 450);
+ }
+ })(h, u, 0);
+ const f = M.getBounds();
+ y && h.append("text").text(y).attr("x", w).attr("font-size", "4ex").attr("font-weight", "bold").attr("y", 25);
+ const g = f.stopy - f.starty + 2 * a.diagramMarginY,
+ x = w + f.stopx + 2 * a.diagramMarginX;
+ (0, i.i)(h, g, x, a.useMaxWidth),
+ h
+ .append("line")
+ .attr("x1", w)
+ .attr("y1", 4 * a.height)
+ .attr("x2", x - w - 4)
+ .attr("y2", 4 * a.height)
+ .attr("stroke-width", 4)
+ .attr("stroke", "black")
+ .attr("marker-end", "url(#arrowhead)");
+ const $ = y ? 70 : 0;
+ h.attr("viewBox", `${f.startx} -25 ${x} ${g + $}`), h.attr("preserveAspectRatio", "xMinYMin meet"), h.attr("height", g + $ + 25);
+ },
+ },
+ A = {
+ parser: o,
+ db: p,
+ renderer: T,
+ styles: (t) =>
+ `.label {\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n color: ${t.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${t.textColor}\n }\n\n .legend {\n fill: ${t.textColor};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${t.textColor}\n }\n\n .face {\n ${t.faceColor ? `fill: ${t.faceColor}` : "fill: #FFF8DC"};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${t.fillType0 ? `fill: ${t.fillType0}` : ""};\n }\n .task-type-1, .section-type-1 {\n ${t.fillType0 ? `fill: ${t.fillType1}` : ""};\n }\n .task-type-2, .section-type-2 {\n ${t.fillType0 ? `fill: ${t.fillType2}` : ""};\n }\n .task-type-3, .section-type-3 {\n ${t.fillType0 ? `fill: ${t.fillType3}` : ""};\n }\n .task-type-4, .section-type-4 {\n ${t.fillType0 ? `fill: ${t.fillType4}` : ""};\n }\n .task-type-5, .section-type-5 {\n ${t.fillType0 ? `fill: ${t.fillType5}` : ""};\n }\n .task-type-6, .section-type-6 {\n ${t.fillType0 ? `fill: ${t.fillType6}` : ""};\n }\n .task-type-7, .section-type-7 {\n ${t.fillType0 ? `fill: ${t.fillType7}` : ""};\n }\n\n .actor-0 {\n ${t.actor0 ? `fill: ${t.actor0}` : ""};\n }\n .actor-1 {\n ${t.actor1 ? `fill: ${t.actor1}` : ""};\n }\n .actor-2 {\n ${t.actor2 ? `fill: ${t.actor2}` : ""};\n }\n .actor-3 {\n ${t.actor3 ? `fill: ${t.actor3}` : ""};\n }\n .actor-4 {\n ${t.actor4 ? `fill: ${t.actor4}` : ""};\n }\n .actor-5 {\n ${t.actor5 ? `fill: ${t.actor5}` : ""};\n }\n`,
+ init: (t) => {
+ T.setConf(t.journey), p.clear();
+ },
+ };
+ },
+ 8252: function (t, e, n) {
+ n.d(e, {
+ a: function () {
+ return a;
+ },
+ b: function () {
+ return l;
+ },
+ c: function () {
+ return c;
+ },
+ d: function () {
+ return s;
+ },
+ e: function () {
+ return u;
+ },
+ f: function () {
+ return o;
+ },
+ g: function () {
+ return h;
+ },
+ });
+ var i = n(7967),
+ r = n(9339);
+ const s = (t, e) => {
+ const n = t.append("rect");
+ if (
+ (n.attr("x", e.x),
+ n.attr("y", e.y),
+ n.attr("fill", e.fill),
+ n.attr("stroke", e.stroke),
+ n.attr("width", e.width),
+ n.attr("height", e.height),
+ void 0 !== e.rx && n.attr("rx", e.rx),
+ void 0 !== e.ry && n.attr("ry", e.ry),
+ void 0 !== e.attrs)
+ )
+ for (const t in e.attrs) n.attr(t, e.attrs[t]);
+ return void 0 !== e.class && n.attr("class", e.class), n;
+ },
+ a = (t, e) => {
+ const n = {
+ x: e.startx,
+ y: e.starty,
+ width: e.stopx - e.startx,
+ height: e.stopy - e.starty,
+ fill: e.fill,
+ stroke: e.stroke,
+ class: "rect",
+ };
+ s(t, n).lower();
+ },
+ o = (t, e) => {
+ const n = e.text.replace(r.J, " "),
+ i = t.append("text");
+ i.attr("x", e.x),
+ i.attr("y", e.y),
+ i.attr("class", "legend"),
+ i.style("text-anchor", e.anchor),
+ void 0 !== e.class && i.attr("class", e.class);
+ const s = i.append("tspan");
+ return s.attr("x", e.x + 2 * e.textMargin), s.text(n), i;
+ },
+ c = (t, e, n, r) => {
+ const s = t.append("image");
+ s.attr("x", e), s.attr("y", n);
+ const a = (0, i.Nm)(r);
+ s.attr("xlink:href", a);
+ },
+ l = (t, e, n, r) => {
+ const s = t.append("use");
+ s.attr("x", e), s.attr("y", n);
+ const a = (0, i.Nm)(r);
+ s.attr("xlink:href", `#${a}`);
+ },
+ h = () => ({
+ x: 0,
+ y: 0,
+ width: 100,
+ height: 100,
+ fill: "#EDF2AE",
+ stroke: "#666",
+ anchor: "start",
+ rx: 0,
+ ry: 0,
+ }),
+ u = () => ({
+ x: 0,
+ y: 0,
+ width: 100,
+ height: 100,
+ "text-anchor": "start",
+ style: "#666",
+ textMargin: 0,
+ rx: 0,
+ ry: 0,
+ tspan: !0,
+ });
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/476-86e5cf96.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/476-86e5cf96.chunk.min.js
new file mode 100644
index 000000000..133025f0f
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/476-86e5cf96.chunk.min.js
@@ -0,0 +1,494 @@
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [476],
+ {
+ 9368: function (e, t, n) {
+ n.d(t, {
+ c: function () {
+ return o;
+ },
+ });
+ var r = n(9360),
+ i = n(9103),
+ a = function (e) {
+ return (0, i.Z)(e, 4);
+ },
+ d = n(3836);
+ function o(e) {
+ var t = {
+ options: {
+ directed: e.isDirected(),
+ multigraph: e.isMultigraph(),
+ compound: e.isCompound(),
+ },
+ nodes: l(e),
+ edges: s(e),
+ };
+ return r.Z(e.graph()) || (t.value = a(e.graph())), t;
+ }
+ function l(e) {
+ return d.Z(e.nodes(), function (t) {
+ var n = e.node(t),
+ i = e.parent(t),
+ a = { v: t };
+ return r.Z(n) || (a.value = n), r.Z(i) || (a.parent = i), a;
+ });
+ }
+ function s(e) {
+ return d.Z(e.edges(), function (t) {
+ var n = e.edge(t),
+ i = { v: t.v, w: t.w };
+ return r.Z(t.name) || (i.name = t.name), r.Z(n) || (i.value = n), i;
+ });
+ }
+ n(5351);
+ },
+ 6476: function (e, t, n) {
+ n.d(t, {
+ r: function () {
+ return X;
+ },
+ });
+ var r = n(3771),
+ i = n(9368),
+ a = n(6076),
+ d = n(9339),
+ o = n(5625),
+ l = n(3506),
+ s = n(7274);
+ let c = {},
+ h = {},
+ g = {};
+ const f = (e, t) => (d.l.trace("In isDecendant", t, " ", e, " = ", h[t].includes(e)), !!h[t].includes(e)),
+ u = (e, t, n, r) => {
+ d.l.warn("Copying children of ", e, "root", r, "data", t.node(e), r);
+ const i = t.children(e) || [];
+ e !== r && i.push(e),
+ d.l.warn("Copying (nodes) clusterId", e, "nodes", i),
+ i.forEach((i) => {
+ if (t.children(i).length > 0) u(i, t, n, r);
+ else {
+ const a = t.node(i);
+ d.l.info("cp ", i, " to ", r, " with parent ", e),
+ n.setNode(i, a),
+ r !== t.parent(i) && (d.l.warn("Setting parent", i, t.parent(i)), n.setParent(i, t.parent(i))),
+ e !== r && i !== e
+ ? (d.l.debug("Setting parent", i, e), n.setParent(i, e))
+ : (d.l.info("In copy ", e, "root", r, "data", t.node(e), r),
+ d.l.debug("Not Setting parent for node=", i, "cluster!==rootId", e !== r, "node!==clusterId", i !== e));
+ const o = t.edges(i);
+ d.l.debug("Copying Edges", o),
+ o.forEach((i) => {
+ d.l.info("Edge", i);
+ const a = t.edge(i.v, i.w, i.name);
+ d.l.info("Edge data", a, r);
+ try {
+ ((e, t) => (
+ d.l.info("Decendants of ", t, " is ", h[t]),
+ d.l.info("Edge is ", e),
+ e.v !== t &&
+ e.w !== t &&
+ (h[t]
+ ? h[t].includes(e.v) || f(e.v, t) || f(e.w, t) || h[t].includes(e.w)
+ : (d.l.debug("Tilt, ", t, ",not in decendants"), !1))
+ ))(i, r)
+ ? (d.l.info("Copying as ", i.v, i.w, a, i.name),
+ n.setEdge(i.v, i.w, a, i.name),
+ d.l.info("newGraph edges ", n.edges(), n.edge(n.edges()[0])))
+ : d.l.info("Skipping copy of edge ", i.v, "--\x3e", i.w, " rootId: ", r, " clusterId:", e);
+ } catch (e) {
+ d.l.error(e);
+ }
+ });
+ }
+ d.l.debug("Removing node", i), t.removeNode(i);
+ });
+ },
+ w = (e, t) => {
+ const n = t.children(e);
+ let r = [...n];
+ for (const i of n) (g[i] = e), (r = [...r, ...w(i, t)]);
+ return r;
+ },
+ p = (e, t) => {
+ d.l.trace("Searching", e);
+ const n = t.children(e);
+ if ((d.l.trace("Searching children of id ", e, n), n.length < 1)) return d.l.trace("This is a valid node", e), e;
+ for (const r of n) {
+ const n = p(r, t);
+ if (n) return d.l.trace("Found replacement for", e, " => ", n), n;
+ }
+ },
+ v = (e) => (c[e] && c[e].externalConnections && c[e] ? c[e].id : e),
+ y = (e, t) => {
+ if ((d.l.warn("extractor - ", t, i.c(e), e.children("D")), t > 10)) return void d.l.error("Bailing out");
+ let n = e.nodes(),
+ r = !1;
+ for (const t of n) {
+ const n = e.children(t);
+ r = r || n.length > 0;
+ }
+ if (r) {
+ d.l.debug("Nodes = ", n, t);
+ for (const r of n)
+ if (
+ (d.l.debug("Extracting node", r, c, c[r] && !c[r].externalConnections, !e.parent(r), e.node(r), e.children("D"), " Depth ", t), c[r])
+ )
+ if (!c[r].externalConnections && e.children(r) && e.children(r).length > 0) {
+ d.l.warn("Cluster without external connections, without a parent and with children", r, t);
+ let n = "TB" === e.graph().rankdir ? "LR" : "TB";
+ c[r] && c[r].clusterData && c[r].clusterData.dir && ((n = c[r].clusterData.dir), d.l.warn("Fixing dir", c[r].clusterData.dir, n));
+ const a = new o.k({ multigraph: !0, compound: !0 })
+ .setGraph({ rankdir: n, nodesep: 50, ranksep: 50, marginx: 8, marginy: 8 })
+ .setDefaultEdgeLabel(function () {
+ return {};
+ });
+ d.l.warn("Old graph before copy", i.c(e)),
+ u(r, e, a, r),
+ e.setNode(r, {
+ clusterNode: !0,
+ id: r,
+ clusterData: c[r].clusterData,
+ labelText: c[r].labelText,
+ graph: a,
+ }),
+ d.l.warn("New graph after copy node: (", r, ")", i.c(a)),
+ d.l.debug("Old graph after copy", i.c(e));
+ } else
+ d.l.warn(
+ "Cluster ** ",
+ r,
+ " **not meeting the criteria !externalConnections:",
+ !c[r].externalConnections,
+ " no parent: ",
+ !e.parent(r),
+ " children ",
+ e.children(r) && e.children(r).length > 0,
+ e.children("D"),
+ t,
+ ),
+ d.l.debug(c);
+ else d.l.debug("Not a cluster", r, t);
+ (n = e.nodes()), d.l.warn("New list of nodes", n);
+ for (const r of n) {
+ const n = e.node(r);
+ d.l.warn(" Now next level", r, n), n.clusterNode && y(n.graph, t + 1);
+ }
+ } else d.l.debug("Done, no node has children", e.nodes());
+ },
+ x = (e, t) => {
+ if (0 === t.length) return [];
+ let n = Object.assign(t);
+ return (
+ t.forEach((t) => {
+ const r = e.children(t),
+ i = x(e, r);
+ n = [...n, ...i];
+ }),
+ n
+ );
+ },
+ m = {
+ rect: (e, t) => {
+ d.l.info("Creating subgraph rect for ", t.id, t);
+ const n = e
+ .insert("g")
+ .attr("class", "cluster" + (t.class ? " " + t.class : ""))
+ .attr("id", t.id),
+ r = n.insert("rect", ":first-child"),
+ i = (0, d.n)((0, d.c)().flowchart.htmlLabels),
+ o = n.insert("g").attr("class", "cluster-label"),
+ c =
+ "markdown" === t.labelType
+ ? (0, l.c)(o, t.labelText, { style: t.labelStyle, useHtmlLabels: i })
+ : o.node().appendChild((0, a.c)(t.labelText, t.labelStyle, void 0, !0));
+ let h = c.getBBox();
+ if ((0, d.n)((0, d.c)().flowchart.htmlLabels)) {
+ const e = c.children[0],
+ t = (0, s.Ys)(c);
+ (h = e.getBoundingClientRect()), t.attr("width", h.width), t.attr("height", h.height);
+ }
+ const g = 0 * t.padding,
+ f = g / 2,
+ u = t.width <= h.width + g ? h.width + g : t.width;
+ t.width <= h.width + g ? (t.diff = (h.width - t.width) / 2 - t.padding / 2) : (t.diff = -t.padding / 2),
+ d.l.trace("Data ", t, JSON.stringify(t)),
+ r
+ .attr("style", t.style)
+ .attr("rx", t.rx)
+ .attr("ry", t.ry)
+ .attr("x", t.x - u / 2)
+ .attr("y", t.y - t.height / 2 - f)
+ .attr("width", u)
+ .attr("height", t.height + g),
+ i
+ ? o.attr("transform", "translate(" + (t.x - h.width / 2) + ", " + (t.y - t.height / 2) + ")")
+ : o.attr("transform", "translate(" + t.x + ", " + (t.y - t.height / 2) + ")");
+ const w = r.node().getBBox();
+ return (
+ (t.width = w.width),
+ (t.height = w.height),
+ (t.intersect = function (e) {
+ return (0, a.i)(t, e);
+ }),
+ n
+ );
+ },
+ roundedWithTitle: (e, t) => {
+ const n = e.insert("g").attr("class", t.classes).attr("id", t.id),
+ r = n.insert("rect", ":first-child"),
+ i = n.insert("g").attr("class", "cluster-label"),
+ o = n.append("rect"),
+ l = i.node().appendChild((0, a.c)(t.labelText, t.labelStyle, void 0, !0));
+ let c = l.getBBox();
+ if ((0, d.n)((0, d.c)().flowchart.htmlLabels)) {
+ const e = l.children[0],
+ t = (0, s.Ys)(l);
+ (c = e.getBoundingClientRect()), t.attr("width", c.width), t.attr("height", c.height);
+ }
+ c = l.getBBox();
+ const h = 0 * t.padding,
+ g = h / 2,
+ f = t.width <= c.width + t.padding ? c.width + t.padding : t.width;
+ t.width <= c.width + t.padding ? (t.diff = (c.width + 0 * t.padding - t.width) / 2) : (t.diff = -t.padding / 2),
+ r
+ .attr("class", "outer")
+ .attr("x", t.x - f / 2 - g)
+ .attr("y", t.y - t.height / 2 - g)
+ .attr("width", f + h)
+ .attr("height", t.height + h),
+ o
+ .attr("class", "inner")
+ .attr("x", t.x - f / 2 - g)
+ .attr("y", t.y - t.height / 2 - g + c.height - 1)
+ .attr("width", f + h)
+ .attr("height", t.height + h - c.height - 3),
+ i.attr(
+ "transform",
+ "translate(" +
+ (t.x - c.width / 2) +
+ ", " +
+ (t.y - t.height / 2 - t.padding / 3 + ((0, d.n)((0, d.c)().flowchart.htmlLabels) ? 5 : 3)) +
+ ")",
+ );
+ const u = r.node().getBBox();
+ return (
+ (t.height = u.height),
+ (t.intersect = function (e) {
+ return (0, a.i)(t, e);
+ }),
+ n
+ );
+ },
+ noteGroup: (e, t) => {
+ const n = e.insert("g").attr("class", "note-cluster").attr("id", t.id),
+ r = n.insert("rect", ":first-child"),
+ i = 0 * t.padding,
+ d = i / 2;
+ r.attr("rx", t.rx)
+ .attr("ry", t.ry)
+ .attr("x", t.x - t.width / 2 - d)
+ .attr("y", t.y - t.height / 2 - d)
+ .attr("width", t.width + i)
+ .attr("height", t.height + i)
+ .attr("fill", "none");
+ const o = r.node().getBBox();
+ return (
+ (t.width = o.width),
+ (t.height = o.height),
+ (t.intersect = function (e) {
+ return (0, a.i)(t, e);
+ }),
+ n
+ );
+ },
+ divider: (e, t) => {
+ const n = e.insert("g").attr("class", t.classes).attr("id", t.id),
+ r = n.insert("rect", ":first-child"),
+ i = 0 * t.padding,
+ d = i / 2;
+ r.attr("class", "divider")
+ .attr("x", t.x - t.width / 2 - d)
+ .attr("y", t.y - t.height / 2)
+ .attr("width", t.width + i)
+ .attr("height", t.height + i);
+ const o = r.node().getBBox();
+ return (
+ (t.width = o.width),
+ (t.height = o.height),
+ (t.diff = -t.padding / 2),
+ (t.intersect = function (e) {
+ return (0, a.i)(t, e);
+ }),
+ n
+ );
+ },
+ };
+ let b = {};
+ const N = async (e, t, n, o) => {
+ d.l.info("Graph in recursive render: XXX", i.c(t), o);
+ const l = t.graph().rankdir;
+ d.l.trace("Dir in recursive render - dir:", l);
+ const s = e.insert("g").attr("class", "root");
+ t.nodes() ? d.l.info("Recursive render XXX", t.nodes()) : d.l.info("No nodes found for", t),
+ t.edges().length > 0 && d.l.trace("Recursive edges", t.edge(t.edges()[0]));
+ const h = s.insert("g").attr("class", "clusters"),
+ g = s.insert("g").attr("class", "edgePaths"),
+ f = s.insert("g").attr("class", "edgeLabels"),
+ u = s.insert("g").attr("class", "nodes");
+ await Promise.all(
+ t.nodes().map(async function (e) {
+ const r = t.node(e);
+ if (void 0 !== o) {
+ const n = JSON.parse(JSON.stringify(o.clusterData));
+ d.l.info("Setting data for cluster XXX (", e, ") ", n, o),
+ t.setNode(o.id, n),
+ t.parent(e) || (d.l.trace("Setting parent", e, o.id), t.setParent(e, o.id, n));
+ }
+ if ((d.l.info("(Insert) Node XXX" + e + ": " + JSON.stringify(t.node(e))), r && r.clusterNode)) {
+ d.l.info("Cluster identified", e, r.width, t.node(e));
+ const i = await N(u, r.graph, n, t.node(e)),
+ o = i.elem;
+ (0, a.u)(r, o),
+ (r.diff = i.diff || 0),
+ d.l.info("Node bounds (abc123)", e, r, r.width, r.x, r.y),
+ (0, a.s)(o, r),
+ d.l.warn("Recursive render complete ", o, r);
+ } else
+ t.children(e).length > 0
+ ? (d.l.info("Cluster - the non recursive path XXX", e, r.id, r, t), d.l.info(p(r.id, t)), (c[r.id] = { id: p(r.id, t), node: r }))
+ : (d.l.info("Node - the non recursive path", e, r.id, r), await (0, a.e)(u, t.node(e), l));
+ }),
+ ),
+ t.edges().forEach(function (e) {
+ const n = t.edge(e.v, e.w, e.name);
+ d.l.info("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(e)),
+ d.l.info("Edge " + e.v + " -> " + e.w + ": ", e, " ", JSON.stringify(t.edge(e))),
+ d.l.info("Fix", c, "ids:", e.v, e.w, "Translateing: ", c[e.v], c[e.w]),
+ (0, a.f)(f, n);
+ }),
+ t.edges().forEach(function (e) {
+ d.l.info("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(e));
+ }),
+ d.l.info("#############################################"),
+ d.l.info("### Layout ###"),
+ d.l.info("#############################################"),
+ d.l.info(t),
+ (0, r.bK)(t),
+ d.l.info("Graph after layout:", i.c(t));
+ let w = 0;
+ return (
+ ((e) => x(e, e.children()))(t).forEach(function (e) {
+ const n = t.node(e);
+ d.l.info("Position " + e + ": " + JSON.stringify(t.node(e))),
+ d.l.info("Position " + e + ": (" + n.x, "," + n.y, ") width: ", n.width, " height: ", n.height),
+ n && n.clusterNode
+ ? (0, a.p)(n)
+ : t.children(e).length > 0
+ ? (((e, t) => {
+ d.l.trace("Inserting cluster");
+ const n = t.shape || "rect";
+ b[t.id] = m[n](e, t);
+ })(h, n),
+ (c[n.id].node = n))
+ : (0, a.p)(n);
+ }),
+ t.edges().forEach(function (e) {
+ const r = t.edge(e);
+ d.l.info("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(r), r);
+ const i = (0, a.g)(g, e, r, c, n, t);
+ (0, a.h)(r, i);
+ }),
+ t.nodes().forEach(function (e) {
+ const n = t.node(e);
+ d.l.info(e, n.type, n.diff), "group" === n.type && (w = n.diff);
+ }),
+ { elem: s, diff: w }
+ );
+ },
+ X = async (e, t, n, r, o) => {
+ (0, a.a)(e, n, r, o),
+ (0, a.b)(),
+ (0, a.d)(),
+ (b = {}),
+ (h = {}),
+ (g = {}),
+ (c = {}),
+ d.l.warn("Graph at first:", i.c(t)),
+ ((e, t) => {
+ e
+ ? (d.l.debug("Opting in, graph "),
+ e.nodes().forEach(function (t) {
+ e.children(t).length > 0 &&
+ (d.l.warn("Cluster identified", t, " Replacement id in edges: ", p(t, e)),
+ (h[t] = w(t, e)),
+ (c[t] = { id: p(t, e), clusterData: e.node(t) }));
+ }),
+ e.nodes().forEach(function (t) {
+ const n = e.children(t),
+ r = e.edges();
+ n.length > 0
+ ? (d.l.debug("Cluster identified", t, h),
+ r.forEach((e) => {
+ e.v !== t &&
+ e.w !== t &&
+ f(e.v, t) ^ f(e.w, t) &&
+ (d.l.warn("Edge: ", e, " leaves cluster ", t),
+ d.l.warn("Decendants of XXX ", t, ": ", h[t]),
+ (c[t].externalConnections = !0));
+ }))
+ : d.l.debug("Not a cluster ", t, h);
+ }),
+ e.edges().forEach(function (t) {
+ const n = e.edge(t);
+ d.l.warn("Edge " + t.v + " -> " + t.w + ": " + JSON.stringify(t)),
+ d.l.warn("Edge " + t.v + " -> " + t.w + ": " + JSON.stringify(e.edge(t)));
+ let r = t.v,
+ i = t.w;
+ if ((d.l.warn("Fix XXX", c, "ids:", t.v, t.w, "Translating: ", c[t.v], " --- ", c[t.w]), c[t.v] && c[t.w] && c[t.v] === c[t.w])) {
+ d.l.warn("Fixing and trixing link to self - removing XXX", t.v, t.w, t.name),
+ d.l.warn("Fixing and trixing - removing XXX", t.v, t.w, t.name),
+ (r = v(t.v)),
+ (i = v(t.w)),
+ e.removeEdge(t.v, t.w, t.name);
+ const a = t.w + "---" + t.v;
+ e.setNode(a, {
+ domId: a,
+ id: a,
+ labelStyle: "",
+ labelText: n.label,
+ padding: 0,
+ shape: "labelRect",
+ style: "",
+ });
+ const o = JSON.parse(JSON.stringify(n)),
+ l = JSON.parse(JSON.stringify(n));
+ (o.label = ""),
+ (o.arrowTypeEnd = "none"),
+ (l.label = ""),
+ (o.fromCluster = t.v),
+ (l.toCluster = t.v),
+ e.setEdge(r, a, o, t.name + "-cyclic-special"),
+ e.setEdge(a, i, l, t.name + "-cyclic-special");
+ } else
+ (c[t.v] || c[t.w]) &&
+ (d.l.warn("Fixing and trixing - removing XXX", t.v, t.w, t.name),
+ (r = v(t.v)),
+ (i = v(t.w)),
+ e.removeEdge(t.v, t.w, t.name),
+ r !== t.v && (n.fromCluster = t.v),
+ i !== t.w && (n.toCluster = t.w),
+ d.l.warn("Fix Replacing with XXX", r, i, t.name),
+ e.setEdge(r, i, n, t.name));
+ }),
+ d.l.warn("Adjusted Graph", i.c(e)),
+ y(e, 0),
+ d.l.trace(c))
+ : d.l.debug("Opting out, no graph ");
+ })(t),
+ d.l.warn("Graph after:", i.c(t)),
+ await N(e, t, r);
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/506-6950d52c.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/506-6950d52c.chunk.min.js
new file mode 100644
index 000000000..d0d6edf25
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/506-6950d52c.chunk.min.js
@@ -0,0 +1,2919 @@
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [506],
+ {
+ 3506: function (e, n, t) {
+ t.d(n, {
+ c: function () {
+ return on;
+ },
+ });
+ var r = {};
+ t.r(r),
+ t.d(r, {
+ attentionMarkers: function () {
+ return Le;
+ },
+ contentInitial: function () {
+ return Ce;
+ },
+ disable: function () {
+ return Me;
+ },
+ document: function () {
+ return we;
+ },
+ flow: function () {
+ return ze;
+ },
+ flowInitial: function () {
+ return Te;
+ },
+ insideSpan: function () {
+ return _e;
+ },
+ string: function () {
+ return De;
+ },
+ text: function () {
+ return Be;
+ },
+ });
+ var i = t(9339);
+ const u = {};
+ function o(e, n, t) {
+ if (
+ (function (e) {
+ return Boolean(e && "object" == typeof e);
+ })(e)
+ ) {
+ if ("value" in e) return "html" !== e.type || t ? e.value : "";
+ if (n && "alt" in e && e.alt) return e.alt;
+ if ("children" in e) return c(e.children, n, t);
+ }
+ return Array.isArray(e) ? c(e, n, t) : "";
+ }
+ function c(e, n, t) {
+ const r = [];
+ let i = -1;
+ for (; ++i < e.length; ) r[i] = o(e[i], n, t);
+ return r.join("");
+ }
+ function s(e, n, t, r) {
+ const i = e.length;
+ let u,
+ o = 0;
+ if (((n = n < 0 ? (-n > i ? 0 : i + n) : n > i ? i : n), (t = t > 0 ? t : 0), r.length < 1e4))
+ (u = Array.from(r)), u.unshift(n, t), e.splice(...u);
+ else for (t && e.splice(n, t); o < r.length; ) (u = r.slice(o, o + 1e4)), u.unshift(n, 0), e.splice(...u), (o += 1e4), (n += 1e4);
+ }
+ function l(e, n) {
+ return e.length > 0 ? (s(e, e.length, 0, n), e) : n;
+ }
+ const a = {}.hasOwnProperty;
+ function f(e, n) {
+ let t;
+ for (t in n) {
+ const r = (a.call(e, t) ? e[t] : void 0) || (e[t] = {}),
+ i = n[t];
+ let u;
+ if (i)
+ for (u in i) {
+ a.call(r, u) || (r[u] = []);
+ const e = i[u];
+ d(r[u], Array.isArray(e) ? e : e ? [e] : []);
+ }
+ }
+ }
+ function d(e, n) {
+ let t = -1;
+ const r = [];
+ for (; ++t < n.length; ) ("after" === n[t].add ? e : r).push(n[t]);
+ s(e, 0, 0, r);
+ }
+ const h = A(/[A-Za-z]/),
+ p = A(/[\dA-Za-z]/),
+ m = A(/[#-'*+\--9=?A-Z^-~]/);
+ function g(e) {
+ return null !== e && (e < 32 || 127 === e);
+ }
+ const x = A(/\d/),
+ k = A(/[\dA-Fa-f]/),
+ y = A(/[!-/:-@[-`{-~]/);
+ function F(e) {
+ return null !== e && e < -2;
+ }
+ function b(e) {
+ return null !== e && (e < 0 || 32 === e);
+ }
+ function v(e) {
+ return -2 === e || -1 === e || 32 === e;
+ }
+ const S = A(
+ /[!-\/:-@\[-`\{-~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/,
+ ),
+ E = A(/\s/);
+ function A(e) {
+ return function (n) {
+ return null !== n && e.test(String.fromCharCode(n));
+ };
+ }
+ function I(e, n, t, r) {
+ const i = r ? r - 1 : Number.POSITIVE_INFINITY;
+ let u = 0;
+ return function (r) {
+ return v(r) ? (e.enter(t), o(r)) : n(r);
+ };
+ function o(r) {
+ return v(r) && u++ < i ? (e.consume(r), o) : (e.exit(t), n(r));
+ }
+ }
+ const w = {
+ tokenize: function (e) {
+ const n = e.attempt(
+ this.parser.constructs.contentInitial,
+ function (t) {
+ if (null !== t) return e.enter("lineEnding"), e.consume(t), e.exit("lineEnding"), I(e, n, "linePrefix");
+ e.consume(t);
+ },
+ function (n) {
+ return e.enter("paragraph"), r(n);
+ },
+ );
+ let t;
+ return n;
+ function r(n) {
+ const r = e.enter("chunkText", { contentType: "text", previous: t });
+ return t && (t.next = r), (t = r), i(n);
+ }
+ function i(n) {
+ return null === n
+ ? (e.exit("chunkText"), e.exit("paragraph"), void e.consume(n))
+ : F(n)
+ ? (e.consume(n), e.exit("chunkText"), r)
+ : (e.consume(n), i);
+ }
+ },
+ },
+ C = {
+ tokenize: function (e) {
+ const n = this,
+ t = [];
+ let r,
+ i,
+ u,
+ o = 0;
+ return c;
+ function c(r) {
+ if (o < t.length) {
+ const i = t[o];
+ return (n.containerState = i[1]), e.attempt(i[0].continuation, l, a)(r);
+ }
+ return a(r);
+ }
+ function l(e) {
+ if ((o++, n.containerState._closeFlow)) {
+ (n.containerState._closeFlow = void 0), r && y();
+ const t = n.events.length;
+ let i,
+ u = t;
+ for (; u--; )
+ if ("exit" === n.events[u][0] && "chunkFlow" === n.events[u][1].type) {
+ i = n.events[u][1].end;
+ break;
+ }
+ k(o);
+ let c = t;
+ for (; c < n.events.length; ) (n.events[c][1].end = Object.assign({}, i)), c++;
+ return s(n.events, u + 1, 0, n.events.slice(t)), (n.events.length = c), a(e);
+ }
+ return c(e);
+ }
+ function a(i) {
+ if (o === t.length) {
+ if (!r) return h(i);
+ if (r.currentConstruct && r.currentConstruct.concrete) return m(i);
+ n.interrupt = Boolean(r.currentConstruct && !r._gfmTableDynamicInterruptHack);
+ }
+ return (n.containerState = {}), e.check(T, f, d)(i);
+ }
+ function f(e) {
+ return r && y(), k(o), h(e);
+ }
+ function d(e) {
+ return (n.parser.lazy[n.now().line] = o !== t.length), (u = n.now().offset), m(e);
+ }
+ function h(t) {
+ return (n.containerState = {}), e.attempt(T, p, m)(t);
+ }
+ function p(e) {
+ return o++, t.push([n.currentConstruct, n.containerState]), h(e);
+ }
+ function m(t) {
+ return null === t
+ ? (r && y(), k(0), void e.consume(t))
+ : ((r = r || n.parser.flow(n.now())), e.enter("chunkFlow", { contentType: "flow", previous: i, _tokenizer: r }), g(t));
+ }
+ function g(t) {
+ return null === t
+ ? (x(e.exit("chunkFlow"), !0), k(0), void e.consume(t))
+ : F(t)
+ ? (e.consume(t), x(e.exit("chunkFlow")), (o = 0), (n.interrupt = void 0), c)
+ : (e.consume(t), g);
+ }
+ function x(e, t) {
+ const c = n.sliceStream(e);
+ if ((t && c.push(null), (e.previous = i), i && (i.next = e), (i = e), r.defineSkip(e.start), r.write(c), n.parser.lazy[e.start.line])) {
+ let e = r.events.length;
+ for (; e--; ) if (r.events[e][1].start.offset < u && (!r.events[e][1].end || r.events[e][1].end.offset > u)) return;
+ const t = n.events.length;
+ let i,
+ c,
+ l = t;
+ for (; l--; )
+ if ("exit" === n.events[l][0] && "chunkFlow" === n.events[l][1].type) {
+ if (i) {
+ c = n.events[l][1].end;
+ break;
+ }
+ i = !0;
+ }
+ for (k(o), e = t; e < n.events.length; ) (n.events[e][1].end = Object.assign({}, c)), e++;
+ s(n.events, l + 1, 0, n.events.slice(t)), (n.events.length = e);
+ }
+ }
+ function k(r) {
+ let i = t.length;
+ for (; i-- > r; ) {
+ const r = t[i];
+ (n.containerState = r[1]), r[0].exit.call(n, e);
+ }
+ t.length = r;
+ }
+ function y() {
+ r.write([null]), (i = void 0), (r = void 0), (n.containerState._closeFlow = void 0);
+ }
+ },
+ },
+ T = {
+ tokenize: function (e, n, t) {
+ return I(
+ e,
+ e.attempt(this.parser.constructs.document, n, t),
+ "linePrefix",
+ this.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4,
+ );
+ },
+ },
+ z = {
+ tokenize: function (e, n, t) {
+ return function (n) {
+ return v(n) ? I(e, r, "linePrefix")(n) : r(n);
+ };
+ function r(e) {
+ return null === e || F(e) ? n(e) : t(e);
+ }
+ },
+ partial: !0,
+ };
+ function D(e) {
+ const n = {};
+ let t,
+ r,
+ i,
+ u,
+ o,
+ c,
+ l,
+ a = -1;
+ for (; ++a < e.length; ) {
+ for (; a in n; ) a = n[a];
+ if (
+ ((t = e[a]),
+ a &&
+ "chunkFlow" === t[1].type &&
+ "listItemPrefix" === e[a - 1][1].type &&
+ ((c = t[1]._tokenizer.events),
+ (i = 0),
+ i < c.length && "lineEndingBlank" === c[i][1].type && (i += 2),
+ i < c.length && "content" === c[i][1].type))
+ )
+ for (; ++i < c.length && "content" !== c[i][1].type; ) "chunkText" === c[i][1].type && ((c[i][1]._isInFirstContentOfListItem = !0), i++);
+ if ("enter" === t[0]) t[1].contentType && (Object.assign(n, B(e, a)), (a = n[a]), (l = !0));
+ else if (t[1]._container) {
+ for (i = a, r = void 0; i-- && ((u = e[i]), "lineEnding" === u[1].type || "lineEndingBlank" === u[1].type); )
+ "enter" === u[0] && (r && (e[r][1].type = "lineEndingBlank"), (u[1].type = "lineEnding"), (r = i));
+ r && ((t[1].end = Object.assign({}, e[r][1].start)), (o = e.slice(r, a)), o.unshift(t), s(e, r, a - r + 1, o));
+ }
+ }
+ return !l;
+ }
+ function B(e, n) {
+ const t = e[n][1],
+ r = e[n][2];
+ let i = n - 1;
+ const u = [],
+ o = t._tokenizer || r.parser[t.contentType](t.start),
+ c = o.events,
+ l = [],
+ a = {};
+ let f,
+ d,
+ h = -1,
+ p = t,
+ m = 0,
+ g = 0;
+ const x = [g];
+ for (; p; ) {
+ for (; e[++i][1] !== p; );
+ u.push(i),
+ p._tokenizer ||
+ ((f = r.sliceStream(p)),
+ p.next || f.push(null),
+ d && o.defineSkip(p.start),
+ p._isInFirstContentOfListItem && (o._gfmTasklistFirstContentOfListItem = !0),
+ o.write(f),
+ p._isInFirstContentOfListItem && (o._gfmTasklistFirstContentOfListItem = void 0)),
+ (d = p),
+ (p = p.next);
+ }
+ for (p = t; ++h < c.length; )
+ "exit" === c[h][0] &&
+ "enter" === c[h - 1][0] &&
+ c[h][1].type === c[h - 1][1].type &&
+ c[h][1].start.line !== c[h][1].end.line &&
+ ((g = h + 1), x.push(g), (p._tokenizer = void 0), (p.previous = void 0), (p = p.next));
+ for (o.events = [], p ? ((p._tokenizer = void 0), (p.previous = void 0)) : x.pop(), h = x.length; h--; ) {
+ const n = c.slice(x[h], x[h + 1]),
+ t = u.pop();
+ l.unshift([t, t + n.length - 1]), s(e, t, 2, n);
+ }
+ for (h = -1; ++h < l.length; ) (a[m + l[h][0]] = m + l[h][1]), (m += l[h][1] - l[h][0] - 1);
+ return a;
+ }
+ const _ = {
+ tokenize: function (e, n) {
+ let t;
+ return function (n) {
+ return e.enter("content"), (t = e.enter("chunkContent", { contentType: "content" })), r(n);
+ };
+ function r(n) {
+ return null === n ? i(n) : F(n) ? e.check(L, u, i)(n) : (e.consume(n), r);
+ }
+ function i(t) {
+ return e.exit("chunkContent"), e.exit("content"), n(t);
+ }
+ function u(n) {
+ return (
+ e.consume(n), e.exit("chunkContent"), (t.next = e.enter("chunkContent", { contentType: "content", previous: t })), (t = t.next), r
+ );
+ }
+ },
+ resolve: function (e) {
+ return D(e), e;
+ },
+ },
+ L = {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ return e.exit("chunkContent"), e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), I(e, i, "linePrefix");
+ };
+ function i(i) {
+ if (null === i || F(i)) return t(i);
+ const u = r.events[r.events.length - 1];
+ return !r.parser.constructs.disable.null.includes("codeIndented") &&
+ u &&
+ "linePrefix" === u[1].type &&
+ u[2].sliceSerialize(u[1], !0).length >= 4
+ ? n(i)
+ : e.interrupt(r.parser.constructs.flow, t, n)(i);
+ }
+ },
+ partial: !0,
+ },
+ M = {
+ tokenize: function (e) {
+ const n = this,
+ t = e.attempt(
+ z,
+ function (r) {
+ if (null !== r) return e.enter("lineEndingBlank"), e.consume(r), e.exit("lineEndingBlank"), (n.currentConstruct = void 0), t;
+ e.consume(r);
+ },
+ e.attempt(this.parser.constructs.flowInitial, r, I(e, e.attempt(this.parser.constructs.flow, r, e.attempt(_, r)), "linePrefix")),
+ );
+ return t;
+ function r(r) {
+ if (null !== r) return e.enter("lineEnding"), e.consume(r), e.exit("lineEnding"), (n.currentConstruct = void 0), t;
+ e.consume(r);
+ }
+ },
+ },
+ P = { resolveAll: R() },
+ O = H("string"),
+ j = H("text");
+ function H(e) {
+ return {
+ tokenize: function (n) {
+ const t = this,
+ r = this.parser.constructs[e],
+ i = n.attempt(r, u, o);
+ return u;
+ function u(e) {
+ return s(e) ? i(e) : o(e);
+ }
+ function o(e) {
+ if (null !== e) return n.enter("data"), n.consume(e), c;
+ n.consume(e);
+ }
+ function c(e) {
+ return s(e) ? (n.exit("data"), i(e)) : (n.consume(e), c);
+ }
+ function s(e) {
+ if (null === e) return !0;
+ const n = r[e];
+ let i = -1;
+ if (n)
+ for (; ++i < n.length; ) {
+ const e = n[i];
+ if (!e.previous || e.previous.call(t, t.previous)) return !0;
+ }
+ return !1;
+ }
+ },
+ resolveAll: R("text" === e ? q : void 0),
+ };
+ }
+ function R(e) {
+ return function (n, t) {
+ let r,
+ i = -1;
+ for (; ++i <= n.length; )
+ void 0 === r
+ ? n[i] && "data" === n[i][1].type && ((r = i), i++)
+ : (n[i] && "data" === n[i][1].type) ||
+ (i !== r + 2 && ((n[r][1].end = n[i - 1][1].end), n.splice(r + 2, i - r - 2), (i = r + 2)), (r = void 0));
+ return e ? e(n, t) : n;
+ };
+ }
+ function q(e, n) {
+ let t = 0;
+ for (; ++t <= e.length; )
+ if ((t === e.length || "lineEnding" === e[t][1].type) && "data" === e[t - 1][1].type) {
+ const r = e[t - 1][1],
+ i = n.sliceStream(r);
+ let u,
+ o = i.length,
+ c = -1,
+ s = 0;
+ for (; o--; ) {
+ const e = i[o];
+ if ("string" == typeof e) {
+ for (c = e.length; 32 === e.charCodeAt(c - 1); ) s++, c--;
+ if (c) break;
+ c = -1;
+ } else if (-2 === e) (u = !0), s++;
+ else if (-1 !== e) {
+ o++;
+ break;
+ }
+ }
+ if (s) {
+ const i = {
+ type: t === e.length || u || s < 2 ? "lineSuffix" : "hardBreakTrailing",
+ start: {
+ line: r.end.line,
+ column: r.end.column - s,
+ offset: r.end.offset - s,
+ _index: r.start._index + o,
+ _bufferIndex: o ? c : r.start._bufferIndex + c,
+ },
+ end: Object.assign({}, r.end),
+ };
+ (r.end = Object.assign({}, i.start)),
+ r.start.offset === r.end.offset ? Object.assign(r, i) : (e.splice(t, 0, ["enter", i, n], ["exit", i, n]), (t += 2));
+ }
+ t++;
+ }
+ return e;
+ }
+ function V(e, n, t) {
+ const r = [];
+ let i = -1;
+ for (; ++i < e.length; ) {
+ const u = e[i].resolveAll;
+ u && !r.includes(u) && ((n = u(n, t)), r.push(u));
+ }
+ return n;
+ }
+ function Q(e, n, t) {
+ let r = Object.assign(t ? Object.assign({}, t) : { line: 1, column: 1, offset: 0 }, {
+ _index: 0,
+ _bufferIndex: -1,
+ });
+ const i = {},
+ u = [];
+ let o = [],
+ c = [],
+ a = !0;
+ const f = {
+ consume: function (e) {
+ F(e) ? (r.line++, (r.column = 1), (r.offset += -3 === e ? 2 : 1), v()) : -1 !== e && (r.column++, r.offset++),
+ r._bufferIndex < 0 ? r._index++ : (r._bufferIndex++, r._bufferIndex === o[r._index].length && ((r._bufferIndex = -1), r._index++)),
+ (d.previous = e),
+ (a = !0);
+ },
+ enter: function (e, n) {
+ const t = n || {};
+ return (t.type = e), (t.start = g()), d.events.push(["enter", t, d]), c.push(t), t;
+ },
+ exit: function (e) {
+ const n = c.pop();
+ return (n.end = g()), d.events.push(["exit", n, d]), n;
+ },
+ attempt: y(function (e, n) {
+ b(e, n.from);
+ }),
+ check: y(k),
+ interrupt: y(k, { interrupt: !0 }),
+ },
+ d = {
+ previous: null,
+ code: null,
+ containerState: {},
+ events: [],
+ parser: e,
+ sliceStream: m,
+ sliceSerialize: function (e, n) {
+ return (function (e, n) {
+ let t = -1;
+ const r = [];
+ let i;
+ for (; ++t < e.length; ) {
+ const u = e[t];
+ let o;
+ if ("string" == typeof u) o = u;
+ else
+ switch (u) {
+ case -5:
+ o = "\r";
+ break;
+ case -4:
+ o = "\n";
+ break;
+ case -3:
+ o = "\r\n";
+ break;
+ case -2:
+ o = n ? " " : "\t";
+ break;
+ case -1:
+ if (!n && i) continue;
+ o = " ";
+ break;
+ default:
+ o = String.fromCharCode(u);
+ }
+ (i = -2 === u), r.push(o);
+ }
+ return r.join("");
+ })(m(e), n);
+ },
+ now: g,
+ defineSkip: function (e) {
+ (i[e.line] = e.column), v();
+ },
+ write: function (e) {
+ return (
+ (o = l(o, e)),
+ (function () {
+ let e;
+ for (; r._index < o.length; ) {
+ const n = o[r._index];
+ if ("string" == typeof n)
+ for (e = r._index, r._bufferIndex < 0 && (r._bufferIndex = 0); r._index === e && r._bufferIndex < n.length; )
+ x(n.charCodeAt(r._bufferIndex));
+ else x(n);
+ }
+ })(),
+ null !== o[o.length - 1] ? [] : (b(n, 0), (d.events = V(u, d.events, d)), d.events)
+ );
+ },
+ };
+ let h,
+ p = n.tokenize.call(d, f);
+ return n.resolveAll && u.push(n), d;
+ function m(e) {
+ return (function (e, n) {
+ const t = n.start._index,
+ r = n.start._bufferIndex,
+ i = n.end._index,
+ u = n.end._bufferIndex;
+ let o;
+ if (t === i) o = [e[t].slice(r, u)];
+ else {
+ if (((o = e.slice(t, i)), r > -1)) {
+ const e = o[0];
+ "string" == typeof e ? (o[0] = e.slice(r)) : o.shift();
+ }
+ u > 0 && o.push(e[i].slice(0, u));
+ }
+ return o;
+ })(o, e);
+ }
+ function g() {
+ const { line: e, column: n, offset: t, _index: i, _bufferIndex: u } = r;
+ return { line: e, column: n, offset: t, _index: i, _bufferIndex: u };
+ }
+ function x(e) {
+ (a = void 0), (h = e), (p = p(e));
+ }
+ function k(e, n) {
+ n.restore();
+ }
+ function y(e, n) {
+ return function (t, i, u) {
+ let o, s, l, h;
+ return Array.isArray(t)
+ ? m(t)
+ : "tokenize" in t
+ ? m([t])
+ : ((p = t),
+ function (e) {
+ const n = null !== e && p[e],
+ t = null !== e && p.null;
+ return m([...(Array.isArray(n) ? n : n ? [n] : []), ...(Array.isArray(t) ? t : t ? [t] : [])])(e);
+ });
+ var p;
+ function m(e) {
+ return (o = e), (s = 0), 0 === e.length ? u : x(e[s]);
+ }
+ function x(e) {
+ return function (t) {
+ return (
+ (h = (function () {
+ const e = g(),
+ n = d.previous,
+ t = d.currentConstruct,
+ i = d.events.length,
+ u = Array.from(c);
+ return {
+ restore: function () {
+ (r = e), (d.previous = n), (d.currentConstruct = t), (d.events.length = i), (c = u), v();
+ },
+ from: i,
+ };
+ })()),
+ (l = e),
+ e.partial || (d.currentConstruct = e),
+ e.name && d.parser.constructs.disable.null.includes(e.name)
+ ? y()
+ : e.tokenize.call(n ? Object.assign(Object.create(d), n) : d, f, k, y)(t)
+ );
+ };
+ }
+ function k(n) {
+ return (a = !0), e(l, h), i;
+ }
+ function y(e) {
+ return (a = !0), h.restore(), ++s < o.length ? x(o[s]) : u;
+ }
+ };
+ }
+ function b(e, n) {
+ e.resolveAll && !u.includes(e) && u.push(e),
+ e.resolve && s(d.events, n, d.events.length - n, e.resolve(d.events.slice(n), d)),
+ e.resolveTo && (d.events = e.resolveTo(d.events, d));
+ }
+ function v() {
+ r.line in i && r.column < 2 && ((r.column = i[r.line]), (r.offset += i[r.line] - 1));
+ }
+ }
+ const N = {
+ name: "thematicBreak",
+ tokenize: function (e, n, t) {
+ let r,
+ i = 0;
+ return function (n) {
+ return (
+ e.enter("thematicBreak"),
+ (function (e) {
+ return (r = e), u(e);
+ })(n)
+ );
+ };
+ function u(u) {
+ return u === r ? (e.enter("thematicBreakSequence"), o(u)) : i >= 3 && (null === u || F(u)) ? (e.exit("thematicBreak"), n(u)) : t(u);
+ }
+ function o(n) {
+ return n === r ? (e.consume(n), i++, o) : (e.exit("thematicBreakSequence"), v(n) ? I(e, u, "whitespace")(n) : u(n));
+ }
+ },
+ },
+ U = {
+ name: "list",
+ tokenize: function (e, n, t) {
+ const r = this,
+ i = r.events[r.events.length - 1];
+ let u = i && "linePrefix" === i[1].type ? i[2].sliceSerialize(i[1], !0).length : 0,
+ o = 0;
+ return function (n) {
+ const i = r.containerState.type || (42 === n || 43 === n || 45 === n ? "listUnordered" : "listOrdered");
+ if ("listUnordered" === i ? !r.containerState.marker || n === r.containerState.marker : x(n)) {
+ if ((r.containerState.type || ((r.containerState.type = i), e.enter(i, { _container: !0 })), "listUnordered" === i))
+ return e.enter("listItemPrefix"), 42 === n || 45 === n ? e.check(N, t, s)(n) : s(n);
+ if (!r.interrupt || 49 === n) return e.enter("listItemPrefix"), e.enter("listItemValue"), c(n);
+ }
+ return t(n);
+ };
+ function c(n) {
+ return x(n) && ++o < 10
+ ? (e.consume(n), c)
+ : (!r.interrupt || o < 2) && (r.containerState.marker ? n === r.containerState.marker : 41 === n || 46 === n)
+ ? (e.exit("listItemValue"), s(n))
+ : t(n);
+ }
+ function s(n) {
+ return (
+ e.enter("listItemMarker"),
+ e.consume(n),
+ e.exit("listItemMarker"),
+ (r.containerState.marker = r.containerState.marker || n),
+ e.check(z, r.interrupt ? t : l, e.attempt($, f, a))
+ );
+ }
+ function l(e) {
+ return (r.containerState.initialBlankLine = !0), u++, f(e);
+ }
+ function a(n) {
+ return v(n) ? (e.enter("listItemPrefixWhitespace"), e.consume(n), e.exit("listItemPrefixWhitespace"), f) : t(n);
+ }
+ function f(t) {
+ return (r.containerState.size = u + r.sliceSerialize(e.exit("listItemPrefix"), !0).length), n(t);
+ }
+ },
+ continuation: {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return (
+ (r.containerState._closeFlow = void 0),
+ e.check(
+ z,
+ function (t) {
+ return (
+ (r.containerState.furtherBlankLines = r.containerState.furtherBlankLines || r.containerState.initialBlankLine),
+ I(e, n, "listItemIndent", r.containerState.size + 1)(t)
+ );
+ },
+ function (t) {
+ return r.containerState.furtherBlankLines || !v(t)
+ ? ((r.containerState.furtherBlankLines = void 0), (r.containerState.initialBlankLine = void 0), i(t))
+ : ((r.containerState.furtherBlankLines = void 0), (r.containerState.initialBlankLine = void 0), e.attempt(W, n, i)(t));
+ },
+ )
+ );
+ function i(i) {
+ return (
+ (r.containerState._closeFlow = !0),
+ (r.interrupt = void 0),
+ I(e, e.attempt(U, n, t), "linePrefix", r.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4)(i)
+ );
+ }
+ },
+ },
+ exit: function (e) {
+ e.exit(this.containerState.type);
+ },
+ },
+ $ = {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return I(
+ e,
+ function (e) {
+ const i = r.events[r.events.length - 1];
+ return !v(e) && i && "listItemPrefixWhitespace" === i[1].type ? n(e) : t(e);
+ },
+ "listItemPrefixWhitespace",
+ r.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 5,
+ );
+ },
+ partial: !0,
+ },
+ W = {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return I(
+ e,
+ function (e) {
+ const i = r.events[r.events.length - 1];
+ return i && "listItemIndent" === i[1].type && i[2].sliceSerialize(i[1], !0).length === r.containerState.size ? n(e) : t(e);
+ },
+ "listItemIndent",
+ r.containerState.size + 1,
+ );
+ },
+ partial: !0,
+ },
+ Z = {
+ name: "blockQuote",
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ if (62 === n) {
+ const t = r.containerState;
+ return (
+ t.open || (e.enter("blockQuote", { _container: !0 }), (t.open = !0)),
+ e.enter("blockQuotePrefix"),
+ e.enter("blockQuoteMarker"),
+ e.consume(n),
+ e.exit("blockQuoteMarker"),
+ i
+ );
+ }
+ return t(n);
+ };
+ function i(t) {
+ return v(t)
+ ? (e.enter("blockQuotePrefixWhitespace"), e.consume(t), e.exit("blockQuotePrefixWhitespace"), e.exit("blockQuotePrefix"), n)
+ : (e.exit("blockQuotePrefix"), n(t));
+ }
+ },
+ continuation: {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ return v(n) ? I(e, i, "linePrefix", r.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4)(n) : i(n);
+ };
+ function i(r) {
+ return e.attempt(Z, n, t)(r);
+ }
+ },
+ },
+ exit: function (e) {
+ e.exit("blockQuote");
+ },
+ };
+ function Y(e, n, t, r, i, u, o, c, s) {
+ const l = s || Number.POSITIVE_INFINITY;
+ let a = 0;
+ return function (n) {
+ return 60 === n
+ ? (e.enter(r), e.enter(i), e.enter(u), e.consume(n), e.exit(u), f)
+ : null === n || 32 === n || 41 === n || g(n)
+ ? t(n)
+ : (e.enter(r), e.enter(o), e.enter(c), e.enter("chunkString", { contentType: "string" }), p(n));
+ };
+ function f(t) {
+ return 62 === t
+ ? (e.enter(u), e.consume(t), e.exit(u), e.exit(i), e.exit(r), n)
+ : (e.enter(c), e.enter("chunkString", { contentType: "string" }), d(t));
+ }
+ function d(n) {
+ return 62 === n ? (e.exit("chunkString"), e.exit(c), f(n)) : null === n || 60 === n || F(n) ? t(n) : (e.consume(n), 92 === n ? h : d);
+ }
+ function h(n) {
+ return 60 === n || 62 === n || 92 === n ? (e.consume(n), d) : d(n);
+ }
+ function p(i) {
+ return a || (null !== i && 41 !== i && !b(i))
+ ? a < l && 40 === i
+ ? (e.consume(i), a++, p)
+ : 41 === i
+ ? (e.consume(i), a--, p)
+ : null === i || 32 === i || 40 === i || g(i)
+ ? t(i)
+ : (e.consume(i), 92 === i ? m : p)
+ : (e.exit("chunkString"), e.exit(c), e.exit(o), e.exit(r), n(i));
+ }
+ function m(n) {
+ return 40 === n || 41 === n || 92 === n ? (e.consume(n), p) : p(n);
+ }
+ }
+ function G(e, n, t, r, i, u) {
+ const o = this;
+ let c,
+ s = 0;
+ return function (n) {
+ return e.enter(r), e.enter(i), e.consume(n), e.exit(i), e.enter(u), l;
+ };
+ function l(f) {
+ return s > 999 || null === f || 91 === f || (93 === f && !c) || (94 === f && !s && "_hiddenFootnoteSupport" in o.parser.constructs)
+ ? t(f)
+ : 93 === f
+ ? (e.exit(u), e.enter(i), e.consume(f), e.exit(i), e.exit(r), n)
+ : F(f)
+ ? (e.enter("lineEnding"), e.consume(f), e.exit("lineEnding"), l)
+ : (e.enter("chunkString", { contentType: "string" }), a(f));
+ }
+ function a(n) {
+ return null === n || 91 === n || 93 === n || F(n) || s++ > 999
+ ? (e.exit("chunkString"), l(n))
+ : (e.consume(n), c || (c = !v(n)), 92 === n ? f : a);
+ }
+ function f(n) {
+ return 91 === n || 92 === n || 93 === n ? (e.consume(n), s++, a) : a(n);
+ }
+ }
+ function J(e, n, t, r, i, u) {
+ let o;
+ return function (n) {
+ return 34 === n || 39 === n || 40 === n ? (e.enter(r), e.enter(i), e.consume(n), e.exit(i), (o = 40 === n ? 41 : n), c) : t(n);
+ };
+ function c(t) {
+ return t === o ? (e.enter(i), e.consume(t), e.exit(i), e.exit(r), n) : (e.enter(u), s(t));
+ }
+ function s(n) {
+ return n === o
+ ? (e.exit(u), c(o))
+ : null === n
+ ? t(n)
+ : F(n)
+ ? (e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), I(e, s, "linePrefix"))
+ : (e.enter("chunkString", { contentType: "string" }), l(n));
+ }
+ function l(n) {
+ return n === o || null === n || F(n) ? (e.exit("chunkString"), s(n)) : (e.consume(n), 92 === n ? a : l);
+ }
+ function a(n) {
+ return n === o || 92 === n ? (e.consume(n), l) : l(n);
+ }
+ }
+ function K(e, n) {
+ let t;
+ return function r(i) {
+ return F(i)
+ ? (e.enter("lineEnding"), e.consume(i), e.exit("lineEnding"), (t = !0), r)
+ : v(i)
+ ? I(e, r, t ? "linePrefix" : "lineSuffix")(i)
+ : n(i);
+ };
+ }
+ function X(e) {
+ return e
+ .replace(/[\t\n\r ]+/g, " ")
+ .replace(/^ | $/g, "")
+ .toLowerCase()
+ .toUpperCase();
+ }
+ const ee = {
+ name: "definition",
+ tokenize: function (e, n, t) {
+ const r = this;
+ let i;
+ return function (n) {
+ return (
+ e.enter("definition"),
+ (function (n) {
+ return G.call(r, e, u, t, "definitionLabel", "definitionLabelMarker", "definitionLabelString")(n);
+ })(n)
+ );
+ };
+ function u(n) {
+ return (
+ (i = X(r.sliceSerialize(r.events[r.events.length - 1][1]).slice(1, -1))),
+ 58 === n ? (e.enter("definitionMarker"), e.consume(n), e.exit("definitionMarker"), o) : t(n)
+ );
+ }
+ function o(n) {
+ return b(n) ? K(e, c)(n) : c(n);
+ }
+ function c(n) {
+ return Y(
+ e,
+ s,
+ t,
+ "definitionDestination",
+ "definitionDestinationLiteral",
+ "definitionDestinationLiteralMarker",
+ "definitionDestinationRaw",
+ "definitionDestinationString",
+ )(n);
+ }
+ function s(n) {
+ return e.attempt(ne, l, l)(n);
+ }
+ function l(n) {
+ return v(n) ? I(e, a, "whitespace")(n) : a(n);
+ }
+ function a(u) {
+ return null === u || F(u) ? (e.exit("definition"), r.parser.defined.push(i), n(u)) : t(u);
+ }
+ },
+ },
+ ne = {
+ tokenize: function (e, n, t) {
+ return function (n) {
+ return b(n) ? K(e, r)(n) : t(n);
+ };
+ function r(n) {
+ return J(e, i, t, "definitionTitle", "definitionTitleMarker", "definitionTitleString")(n);
+ }
+ function i(n) {
+ return v(n) ? I(e, u, "whitespace")(n) : u(n);
+ }
+ function u(e) {
+ return null === e || F(e) ? n(e) : t(e);
+ }
+ },
+ partial: !0,
+ },
+ te = {
+ name: "codeIndented",
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ return e.enter("codeIndented"), I(e, i, "linePrefix", 5)(n);
+ };
+ function i(e) {
+ const n = r.events[r.events.length - 1];
+ return n && "linePrefix" === n[1].type && n[2].sliceSerialize(n[1], !0).length >= 4 ? u(e) : t(e);
+ }
+ function u(n) {
+ return null === n ? c(n) : F(n) ? e.attempt(re, u, c)(n) : (e.enter("codeFlowValue"), o(n));
+ }
+ function o(n) {
+ return null === n || F(n) ? (e.exit("codeFlowValue"), u(n)) : (e.consume(n), o);
+ }
+ function c(t) {
+ return e.exit("codeIndented"), n(t);
+ }
+ },
+ },
+ re = {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return i;
+ function i(n) {
+ return r.parser.lazy[r.now().line]
+ ? t(n)
+ : F(n)
+ ? (e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), i)
+ : I(e, u, "linePrefix", 5)(n);
+ }
+ function u(e) {
+ const u = r.events[r.events.length - 1];
+ return u && "linePrefix" === u[1].type && u[2].sliceSerialize(u[1], !0).length >= 4 ? n(e) : F(e) ? i(e) : t(e);
+ }
+ },
+ partial: !0,
+ },
+ ie = {
+ name: "headingAtx",
+ tokenize: function (e, n, t) {
+ let r = 0;
+ return function (n) {
+ return (
+ e.enter("atxHeading"),
+ (function (n) {
+ return e.enter("atxHeadingSequence"), i(n);
+ })(n)
+ );
+ };
+ function i(n) {
+ return 35 === n && r++ < 6 ? (e.consume(n), i) : null === n || b(n) ? (e.exit("atxHeadingSequence"), u(n)) : t(n);
+ }
+ function u(t) {
+ return 35 === t
+ ? (e.enter("atxHeadingSequence"), o(t))
+ : null === t || F(t)
+ ? (e.exit("atxHeading"), n(t))
+ : v(t)
+ ? I(e, u, "whitespace")(t)
+ : (e.enter("atxHeadingText"), c(t));
+ }
+ function o(n) {
+ return 35 === n ? (e.consume(n), o) : (e.exit("atxHeadingSequence"), u(n));
+ }
+ function c(n) {
+ return null === n || 35 === n || b(n) ? (e.exit("atxHeadingText"), u(n)) : (e.consume(n), c);
+ }
+ },
+ resolve: function (e, n) {
+ let t,
+ r,
+ i = e.length - 2,
+ u = 3;
+ return (
+ "whitespace" === e[u][1].type && (u += 2),
+ i - 2 > u && "whitespace" === e[i][1].type && (i -= 2),
+ "atxHeadingSequence" === e[i][1].type &&
+ (u === i - 1 || (i - 4 > u && "whitespace" === e[i - 2][1].type)) &&
+ (i -= u + 1 === i ? 2 : 4),
+ i > u &&
+ ((t = { type: "atxHeadingText", start: e[u][1].start, end: e[i][1].end }),
+ (r = {
+ type: "chunkText",
+ start: e[u][1].start,
+ end: e[i][1].end,
+ contentType: "text",
+ }),
+ s(e, u, i - u + 1, [
+ ["enter", t, n],
+ ["enter", r, n],
+ ["exit", r, n],
+ ["exit", t, n],
+ ])),
+ e
+ );
+ },
+ },
+ ue = {
+ name: "setextUnderline",
+ tokenize: function (e, n, t) {
+ const r = this;
+ let i;
+ return function (n) {
+ let o,
+ c = r.events.length;
+ for (; c--; )
+ if ("lineEnding" !== r.events[c][1].type && "linePrefix" !== r.events[c][1].type && "content" !== r.events[c][1].type) {
+ o = "paragraph" === r.events[c][1].type;
+ break;
+ }
+ return r.parser.lazy[r.now().line] || (!r.interrupt && !o)
+ ? t(n)
+ : (e.enter("setextHeadingLine"),
+ (i = n),
+ (function (n) {
+ return e.enter("setextHeadingLineSequence"), u(n);
+ })(n));
+ };
+ function u(n) {
+ return n === i ? (e.consume(n), u) : (e.exit("setextHeadingLineSequence"), v(n) ? I(e, o, "lineSuffix")(n) : o(n));
+ }
+ function o(r) {
+ return null === r || F(r) ? (e.exit("setextHeadingLine"), n(r)) : t(r);
+ }
+ },
+ resolveTo: function (e, n) {
+ let t,
+ r,
+ i,
+ u = e.length;
+ for (; u--; )
+ if ("enter" === e[u][0]) {
+ if ("content" === e[u][1].type) {
+ t = u;
+ break;
+ }
+ "paragraph" === e[u][1].type && (r = u);
+ } else "content" === e[u][1].type && e.splice(u, 1), i || "definition" !== e[u][1].type || (i = u);
+ const o = {
+ type: "setextHeading",
+ start: Object.assign({}, e[r][1].start),
+ end: Object.assign({}, e[e.length - 1][1].end),
+ };
+ return (
+ (e[r][1].type = "setextHeadingText"),
+ i
+ ? (e.splice(r, 0, ["enter", o, n]), e.splice(i + 1, 0, ["exit", e[t][1], n]), (e[t][1].end = Object.assign({}, e[i][1].end)))
+ : (e[t][1] = o),
+ e.push(["exit", o, n]),
+ e
+ );
+ },
+ },
+ oe = [
+ "address",
+ "article",
+ "aside",
+ "base",
+ "basefont",
+ "blockquote",
+ "body",
+ "caption",
+ "center",
+ "col",
+ "colgroup",
+ "dd",
+ "details",
+ "dialog",
+ "dir",
+ "div",
+ "dl",
+ "dt",
+ "fieldset",
+ "figcaption",
+ "figure",
+ "footer",
+ "form",
+ "frame",
+ "frameset",
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "h6",
+ "head",
+ "header",
+ "hr",
+ "html",
+ "iframe",
+ "legend",
+ "li",
+ "link",
+ "main",
+ "menu",
+ "menuitem",
+ "nav",
+ "noframes",
+ "ol",
+ "optgroup",
+ "option",
+ "p",
+ "param",
+ "search",
+ "section",
+ "summary",
+ "table",
+ "tbody",
+ "td",
+ "tfoot",
+ "th",
+ "thead",
+ "title",
+ "tr",
+ "track",
+ "ul",
+ ],
+ ce = ["pre", "script", "style", "textarea"],
+ se = {
+ name: "htmlFlow",
+ tokenize: function (e, n, t) {
+ const r = this;
+ let i, u, o, c, s;
+ return function (n) {
+ return (function (n) {
+ return e.enter("htmlFlow"), e.enter("htmlFlowData"), e.consume(n), l;
+ })(n);
+ };
+ function l(c) {
+ return 33 === c
+ ? (e.consume(c), a)
+ : 47 === c
+ ? (e.consume(c), (u = !0), m)
+ : 63 === c
+ ? (e.consume(c), (i = 3), r.interrupt ? n : H)
+ : h(c)
+ ? (e.consume(c), (o = String.fromCharCode(c)), g)
+ : t(c);
+ }
+ function a(u) {
+ return 45 === u
+ ? (e.consume(u), (i = 2), f)
+ : 91 === u
+ ? (e.consume(u), (i = 5), (c = 0), d)
+ : h(u)
+ ? (e.consume(u), (i = 4), r.interrupt ? n : H)
+ : t(u);
+ }
+ function f(i) {
+ return 45 === i ? (e.consume(i), r.interrupt ? n : H) : t(i);
+ }
+ function d(i) {
+ return i === "CDATA[".charCodeAt(c++) ? (e.consume(i), 6 === c ? (r.interrupt ? n : D) : d) : t(i);
+ }
+ function m(n) {
+ return h(n) ? (e.consume(n), (o = String.fromCharCode(n)), g) : t(n);
+ }
+ function g(c) {
+ if (null === c || 47 === c || 62 === c || b(c)) {
+ const s = 47 === c,
+ l = o.toLowerCase();
+ return s || u || !ce.includes(l)
+ ? oe.includes(o.toLowerCase())
+ ? ((i = 6), s ? (e.consume(c), x) : r.interrupt ? n(c) : D(c))
+ : ((i = 7), r.interrupt && !r.parser.lazy[r.now().line] ? t(c) : u ? k(c) : y(c))
+ : ((i = 1), r.interrupt ? n(c) : D(c));
+ }
+ return 45 === c || p(c) ? (e.consume(c), (o += String.fromCharCode(c)), g) : t(c);
+ }
+ function x(i) {
+ return 62 === i ? (e.consume(i), r.interrupt ? n : D) : t(i);
+ }
+ function k(n) {
+ return v(n) ? (e.consume(n), k) : T(n);
+ }
+ function y(n) {
+ return 47 === n ? (e.consume(n), T) : 58 === n || 95 === n || h(n) ? (e.consume(n), S) : v(n) ? (e.consume(n), y) : T(n);
+ }
+ function S(n) {
+ return 45 === n || 46 === n || 58 === n || 95 === n || p(n) ? (e.consume(n), S) : E(n);
+ }
+ function E(n) {
+ return 61 === n ? (e.consume(n), A) : v(n) ? (e.consume(n), E) : y(n);
+ }
+ function A(n) {
+ return null === n || 60 === n || 61 === n || 62 === n || 96 === n
+ ? t(n)
+ : 34 === n || 39 === n
+ ? (e.consume(n), (s = n), I)
+ : v(n)
+ ? (e.consume(n), A)
+ : w(n);
+ }
+ function I(n) {
+ return n === s ? (e.consume(n), (s = null), C) : null === n || F(n) ? t(n) : (e.consume(n), I);
+ }
+ function w(n) {
+ return null === n || 34 === n || 39 === n || 47 === n || 60 === n || 61 === n || 62 === n || 96 === n || b(n)
+ ? E(n)
+ : (e.consume(n), w);
+ }
+ function C(e) {
+ return 47 === e || 62 === e || v(e) ? y(e) : t(e);
+ }
+ function T(n) {
+ return 62 === n ? (e.consume(n), z) : t(n);
+ }
+ function z(n) {
+ return null === n || F(n) ? D(n) : v(n) ? (e.consume(n), z) : t(n);
+ }
+ function D(n) {
+ return 45 === n && 2 === i
+ ? (e.consume(n), M)
+ : 60 === n && 1 === i
+ ? (e.consume(n), P)
+ : 62 === n && 4 === i
+ ? (e.consume(n), R)
+ : 63 === n && 3 === i
+ ? (e.consume(n), H)
+ : 93 === n && 5 === i
+ ? (e.consume(n), j)
+ : !F(n) || (6 !== i && 7 !== i)
+ ? null === n || F(n)
+ ? (e.exit("htmlFlowData"), B(n))
+ : (e.consume(n), D)
+ : (e.exit("htmlFlowData"), e.check(le, q, B)(n));
+ }
+ function B(n) {
+ return e.check(ae, _, q)(n);
+ }
+ function _(n) {
+ return e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), L;
+ }
+ function L(n) {
+ return null === n || F(n) ? B(n) : (e.enter("htmlFlowData"), D(n));
+ }
+ function M(n) {
+ return 45 === n ? (e.consume(n), H) : D(n);
+ }
+ function P(n) {
+ return 47 === n ? (e.consume(n), (o = ""), O) : D(n);
+ }
+ function O(n) {
+ if (62 === n) {
+ const t = o.toLowerCase();
+ return ce.includes(t) ? (e.consume(n), R) : D(n);
+ }
+ return h(n) && o.length < 8 ? (e.consume(n), (o += String.fromCharCode(n)), O) : D(n);
+ }
+ function j(n) {
+ return 93 === n ? (e.consume(n), H) : D(n);
+ }
+ function H(n) {
+ return 62 === n ? (e.consume(n), R) : 45 === n && 2 === i ? (e.consume(n), H) : D(n);
+ }
+ function R(n) {
+ return null === n || F(n) ? (e.exit("htmlFlowData"), q(n)) : (e.consume(n), R);
+ }
+ function q(t) {
+ return e.exit("htmlFlow"), n(t);
+ }
+ },
+ resolveTo: function (e) {
+ let n = e.length;
+ for (; n-- && ("enter" !== e[n][0] || "htmlFlow" !== e[n][1].type); );
+ return (
+ n > 1 &&
+ "linePrefix" === e[n - 2][1].type &&
+ ((e[n][1].start = e[n - 2][1].start), (e[n + 1][1].start = e[n - 2][1].start), e.splice(n - 2, 2)),
+ e
+ );
+ },
+ concrete: !0,
+ },
+ le = {
+ tokenize: function (e, n, t) {
+ return function (r) {
+ return e.enter("lineEnding"), e.consume(r), e.exit("lineEnding"), e.attempt(z, n, t);
+ };
+ },
+ partial: !0,
+ },
+ ae = {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ return F(n) ? (e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), i) : t(n);
+ };
+ function i(e) {
+ return r.parser.lazy[r.now().line] ? t(e) : n(e);
+ }
+ },
+ partial: !0,
+ },
+ fe = {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ return null === n ? t(n) : (e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), i);
+ };
+ function i(e) {
+ return r.parser.lazy[r.now().line] ? t(e) : n(e);
+ }
+ },
+ partial: !0,
+ },
+ de = {
+ name: "codeFenced",
+ tokenize: function (e, n, t) {
+ const r = this,
+ i = {
+ tokenize: function (e, n, t) {
+ let i = 0;
+ return function (n) {
+ return e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), o;
+ };
+ function o(n) {
+ return (
+ e.enter("codeFencedFence"),
+ v(n) ? I(e, s, "linePrefix", r.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4)(n) : s(n)
+ );
+ }
+ function s(n) {
+ return n === u ? (e.enter("codeFencedFenceSequence"), l(n)) : t(n);
+ }
+ function l(n) {
+ return n === u
+ ? (i++, e.consume(n), l)
+ : i >= c
+ ? (e.exit("codeFencedFenceSequence"), v(n) ? I(e, a, "whitespace")(n) : a(n))
+ : t(n);
+ }
+ function a(r) {
+ return null === r || F(r) ? (e.exit("codeFencedFence"), n(r)) : t(r);
+ }
+ },
+ partial: !0,
+ };
+ let u,
+ o = 0,
+ c = 0;
+ return function (n) {
+ return (function (n) {
+ const t = r.events[r.events.length - 1];
+ return (
+ (o = t && "linePrefix" === t[1].type ? t[2].sliceSerialize(t[1], !0).length : 0),
+ (u = n),
+ e.enter("codeFenced"),
+ e.enter("codeFencedFence"),
+ e.enter("codeFencedFenceSequence"),
+ s(n)
+ );
+ })(n);
+ };
+ function s(n) {
+ return n === u ? (c++, e.consume(n), s) : c < 3 ? t(n) : (e.exit("codeFencedFenceSequence"), v(n) ? I(e, l, "whitespace")(n) : l(n));
+ }
+ function l(t) {
+ return null === t || F(t)
+ ? (e.exit("codeFencedFence"), r.interrupt ? n(t) : e.check(fe, h, k)(t))
+ : (e.enter("codeFencedFenceInfo"), e.enter("chunkString", { contentType: "string" }), a(t));
+ }
+ function a(n) {
+ return null === n || F(n)
+ ? (e.exit("chunkString"), e.exit("codeFencedFenceInfo"), l(n))
+ : v(n)
+ ? (e.exit("chunkString"), e.exit("codeFencedFenceInfo"), I(e, f, "whitespace")(n))
+ : 96 === n && n === u
+ ? t(n)
+ : (e.consume(n), a);
+ }
+ function f(n) {
+ return null === n || F(n) ? l(n) : (e.enter("codeFencedFenceMeta"), e.enter("chunkString", { contentType: "string" }), d(n));
+ }
+ function d(n) {
+ return null === n || F(n)
+ ? (e.exit("chunkString"), e.exit("codeFencedFenceMeta"), l(n))
+ : 96 === n && n === u
+ ? t(n)
+ : (e.consume(n), d);
+ }
+ function h(n) {
+ return e.attempt(i, k, p)(n);
+ }
+ function p(n) {
+ return e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), m;
+ }
+ function m(n) {
+ return o > 0 && v(n) ? I(e, g, "linePrefix", o + 1)(n) : g(n);
+ }
+ function g(n) {
+ return null === n || F(n) ? e.check(fe, h, k)(n) : (e.enter("codeFlowValue"), x(n));
+ }
+ function x(n) {
+ return null === n || F(n) ? (e.exit("codeFlowValue"), g(n)) : (e.consume(n), x);
+ }
+ function k(t) {
+ return e.exit("codeFenced"), n(t);
+ }
+ },
+ concrete: !0,
+ },
+ he = document.createElement("i");
+ function pe(e) {
+ const n = "&" + e + ";";
+ he.innerHTML = n;
+ const t = he.textContent;
+ return (59 !== t.charCodeAt(t.length - 1) || "semi" === e) && t !== n && t;
+ }
+ const me = {
+ name: "characterReference",
+ tokenize: function (e, n, t) {
+ const r = this;
+ let i,
+ u,
+ o = 0;
+ return function (n) {
+ return e.enter("characterReference"), e.enter("characterReferenceMarker"), e.consume(n), e.exit("characterReferenceMarker"), c;
+ };
+ function c(n) {
+ return 35 === n
+ ? (e.enter("characterReferenceMarkerNumeric"), e.consume(n), e.exit("characterReferenceMarkerNumeric"), s)
+ : (e.enter("characterReferenceValue"), (i = 31), (u = p), l(n));
+ }
+ function s(n) {
+ return 88 === n || 120 === n
+ ? (e.enter("characterReferenceMarkerHexadecimal"),
+ e.consume(n),
+ e.exit("characterReferenceMarkerHexadecimal"),
+ e.enter("characterReferenceValue"),
+ (i = 6),
+ (u = k),
+ l)
+ : (e.enter("characterReferenceValue"), (i = 7), (u = x), l(n));
+ }
+ function l(c) {
+ if (59 === c && o) {
+ const i = e.exit("characterReferenceValue");
+ return u !== p || pe(r.sliceSerialize(i))
+ ? (e.enter("characterReferenceMarker"), e.consume(c), e.exit("characterReferenceMarker"), e.exit("characterReference"), n)
+ : t(c);
+ }
+ return u(c) && o++ < i ? (e.consume(c), l) : t(c);
+ }
+ },
+ },
+ ge = {
+ name: "characterEscape",
+ tokenize: function (e, n, t) {
+ return function (n) {
+ return e.enter("characterEscape"), e.enter("escapeMarker"), e.consume(n), e.exit("escapeMarker"), r;
+ };
+ function r(r) {
+ return y(r) ? (e.enter("characterEscapeValue"), e.consume(r), e.exit("characterEscapeValue"), e.exit("characterEscape"), n) : t(r);
+ }
+ },
+ },
+ xe = {
+ name: "lineEnding",
+ tokenize: function (e, n) {
+ return function (t) {
+ return e.enter("lineEnding"), e.consume(t), e.exit("lineEnding"), I(e, n, "linePrefix");
+ };
+ },
+ },
+ ke = {
+ name: "labelEnd",
+ tokenize: function (e, n, t) {
+ const r = this;
+ let i,
+ u,
+ o = r.events.length;
+ for (; o--; )
+ if (("labelImage" === r.events[o][1].type || "labelLink" === r.events[o][1].type) && !r.events[o][1]._balanced) {
+ i = r.events[o][1];
+ break;
+ }
+ return function (n) {
+ return i
+ ? i._inactive
+ ? a(n)
+ : ((u = r.parser.defined.includes(X(r.sliceSerialize({ start: i.end, end: r.now() })))),
+ e.enter("labelEnd"),
+ e.enter("labelMarker"),
+ e.consume(n),
+ e.exit("labelMarker"),
+ e.exit("labelEnd"),
+ c)
+ : t(n);
+ };
+ function c(n) {
+ return 40 === n ? e.attempt(ye, l, u ? l : a)(n) : 91 === n ? e.attempt(Fe, l, u ? s : a)(n) : u ? l(n) : a(n);
+ }
+ function s(n) {
+ return e.attempt(be, l, a)(n);
+ }
+ function l(e) {
+ return n(e);
+ }
+ function a(e) {
+ return (i._balanced = !0), t(e);
+ }
+ },
+ resolveTo: function (e, n) {
+ let t,
+ r,
+ i,
+ u,
+ o = e.length,
+ c = 0;
+ for (; o--; )
+ if (((t = e[o][1]), r)) {
+ if ("link" === t.type || ("labelLink" === t.type && t._inactive)) break;
+ "enter" === e[o][0] && "labelLink" === t.type && (t._inactive = !0);
+ } else if (i) {
+ if ("enter" === e[o][0] && ("labelImage" === t.type || "labelLink" === t.type) && !t._balanced && ((r = o), "labelLink" !== t.type)) {
+ c = 2;
+ break;
+ }
+ } else "labelEnd" === t.type && (i = o);
+ const a = {
+ type: "labelLink" === e[r][1].type ? "link" : "image",
+ start: Object.assign({}, e[r][1].start),
+ end: Object.assign({}, e[e.length - 1][1].end),
+ },
+ f = {
+ type: "label",
+ start: Object.assign({}, e[r][1].start),
+ end: Object.assign({}, e[i][1].end),
+ },
+ d = {
+ type: "labelText",
+ start: Object.assign({}, e[r + c + 2][1].end),
+ end: Object.assign({}, e[i - 2][1].start),
+ };
+ return (
+ (u = [
+ ["enter", a, n],
+ ["enter", f, n],
+ ]),
+ (u = l(u, e.slice(r + 1, r + c + 3))),
+ (u = l(u, [["enter", d, n]])),
+ (u = l(u, V(n.parser.constructs.insideSpan.null, e.slice(r + c + 4, i - 3), n))),
+ (u = l(u, [["exit", d, n], e[i - 2], e[i - 1], ["exit", f, n]])),
+ (u = l(u, e.slice(i + 1))),
+ (u = l(u, [["exit", a, n]])),
+ s(e, r, e.length, u),
+ e
+ );
+ },
+ resolveAll: function (e) {
+ let n = -1;
+ for (; ++n < e.length; ) {
+ const t = e[n][1];
+ ("labelImage" !== t.type && "labelLink" !== t.type && "labelEnd" !== t.type) ||
+ (e.splice(n + 1, "labelImage" === t.type ? 4 : 2), (t.type = "data"), n++);
+ }
+ return e;
+ },
+ },
+ ye = {
+ tokenize: function (e, n, t) {
+ return function (n) {
+ return e.enter("resource"), e.enter("resourceMarker"), e.consume(n), e.exit("resourceMarker"), r;
+ };
+ function r(n) {
+ return b(n) ? K(e, i)(n) : i(n);
+ }
+ function i(n) {
+ return 41 === n
+ ? l(n)
+ : Y(
+ e,
+ u,
+ o,
+ "resourceDestination",
+ "resourceDestinationLiteral",
+ "resourceDestinationLiteralMarker",
+ "resourceDestinationRaw",
+ "resourceDestinationString",
+ 32,
+ )(n);
+ }
+ function u(n) {
+ return b(n) ? K(e, c)(n) : l(n);
+ }
+ function o(e) {
+ return t(e);
+ }
+ function c(n) {
+ return 34 === n || 39 === n || 40 === n ? J(e, s, t, "resourceTitle", "resourceTitleMarker", "resourceTitleString")(n) : l(n);
+ }
+ function s(n) {
+ return b(n) ? K(e, l)(n) : l(n);
+ }
+ function l(r) {
+ return 41 === r ? (e.enter("resourceMarker"), e.consume(r), e.exit("resourceMarker"), e.exit("resource"), n) : t(r);
+ }
+ },
+ },
+ Fe = {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ return G.call(r, e, i, u, "reference", "referenceMarker", "referenceString")(n);
+ };
+ function i(e) {
+ return r.parser.defined.includes(X(r.sliceSerialize(r.events[r.events.length - 1][1]).slice(1, -1))) ? n(e) : t(e);
+ }
+ function u(e) {
+ return t(e);
+ }
+ },
+ },
+ be = {
+ tokenize: function (e, n, t) {
+ return function (n) {
+ return e.enter("reference"), e.enter("referenceMarker"), e.consume(n), e.exit("referenceMarker"), r;
+ };
+ function r(r) {
+ return 93 === r ? (e.enter("referenceMarker"), e.consume(r), e.exit("referenceMarker"), e.exit("reference"), n) : t(r);
+ }
+ },
+ };
+ function ve(e) {
+ return null === e || b(e) || E(e) ? 1 : S(e) ? 2 : void 0;
+ }
+ const Se = {
+ name: "attention",
+ tokenize: function (e, n) {
+ const t = this.parser.constructs.attentionMarkers.null,
+ r = this.previous,
+ i = ve(r);
+ let u;
+ return function (n) {
+ return (u = n), e.enter("attentionSequence"), o(n);
+ };
+ function o(c) {
+ if (c === u) return e.consume(c), o;
+ const s = e.exit("attentionSequence"),
+ l = ve(c),
+ a = !l || (2 === l && i) || t.includes(c),
+ f = !i || (2 === i && l) || t.includes(r);
+ return (s._open = Boolean(42 === u ? a : a && (i || !f))), (s._close = Boolean(42 === u ? f : f && (l || !a))), n(c);
+ }
+ },
+ resolveAll: function (e, n) {
+ let t,
+ r,
+ i,
+ u,
+ o,
+ c,
+ a,
+ f,
+ d = -1;
+ for (; ++d < e.length; )
+ if ("enter" === e[d][0] && "attentionSequence" === e[d][1].type && e[d][1]._close)
+ for (t = d; t--; )
+ if (
+ "exit" === e[t][0] &&
+ "attentionSequence" === e[t][1].type &&
+ e[t][1]._open &&
+ n.sliceSerialize(e[t][1]).charCodeAt(0) === n.sliceSerialize(e[d][1]).charCodeAt(0)
+ ) {
+ if (
+ (e[t][1]._close || e[d][1]._open) &&
+ (e[d][1].end.offset - e[d][1].start.offset) % 3 &&
+ !((e[t][1].end.offset - e[t][1].start.offset + e[d][1].end.offset - e[d][1].start.offset) % 3)
+ )
+ continue;
+ c = e[t][1].end.offset - e[t][1].start.offset > 1 && e[d][1].end.offset - e[d][1].start.offset > 1 ? 2 : 1;
+ const h = Object.assign({}, e[t][1].end),
+ p = Object.assign({}, e[d][1].start);
+ Ee(h, -c),
+ Ee(p, c),
+ (u = {
+ type: c > 1 ? "strongSequence" : "emphasisSequence",
+ start: h,
+ end: Object.assign({}, e[t][1].end),
+ }),
+ (o = {
+ type: c > 1 ? "strongSequence" : "emphasisSequence",
+ start: Object.assign({}, e[d][1].start),
+ end: p,
+ }),
+ (i = {
+ type: c > 1 ? "strongText" : "emphasisText",
+ start: Object.assign({}, e[t][1].end),
+ end: Object.assign({}, e[d][1].start),
+ }),
+ (r = {
+ type: c > 1 ? "strong" : "emphasis",
+ start: Object.assign({}, u.start),
+ end: Object.assign({}, o.end),
+ }),
+ (e[t][1].end = Object.assign({}, u.start)),
+ (e[d][1].start = Object.assign({}, o.end)),
+ (a = []),
+ e[t][1].end.offset - e[t][1].start.offset &&
+ (a = l(a, [
+ ["enter", e[t][1], n],
+ ["exit", e[t][1], n],
+ ])),
+ (a = l(a, [
+ ["enter", r, n],
+ ["enter", u, n],
+ ["exit", u, n],
+ ["enter", i, n],
+ ])),
+ (a = l(a, V(n.parser.constructs.insideSpan.null, e.slice(t + 1, d), n))),
+ (a = l(a, [
+ ["exit", i, n],
+ ["enter", o, n],
+ ["exit", o, n],
+ ["exit", r, n],
+ ])),
+ e[d][1].end.offset - e[d][1].start.offset
+ ? ((f = 2),
+ (a = l(a, [
+ ["enter", e[d][1], n],
+ ["exit", e[d][1], n],
+ ])))
+ : (f = 0),
+ s(e, t - 1, d - t + 3, a),
+ (d = t + a.length - f - 2);
+ break;
+ }
+ for (d = -1; ++d < e.length; ) "attentionSequence" === e[d][1].type && (e[d][1].type = "data");
+ return e;
+ },
+ };
+ function Ee(e, n) {
+ (e.column += n), (e.offset += n), (e._bufferIndex += n);
+ }
+ const Ae = {
+ name: "htmlText",
+ tokenize: function (e, n, t) {
+ const r = this;
+ let i, u, o;
+ return function (n) {
+ return e.enter("htmlText"), e.enter("htmlTextData"), e.consume(n), c;
+ };
+ function c(n) {
+ return 33 === n ? (e.consume(n), s) : 47 === n ? (e.consume(n), A) : 63 === n ? (e.consume(n), S) : h(n) ? (e.consume(n), T) : t(n);
+ }
+ function s(n) {
+ return 45 === n ? (e.consume(n), l) : 91 === n ? (e.consume(n), (u = 0), m) : h(n) ? (e.consume(n), y) : t(n);
+ }
+ function l(n) {
+ return 45 === n ? (e.consume(n), d) : t(n);
+ }
+ function a(n) {
+ return null === n ? t(n) : 45 === n ? (e.consume(n), f) : F(n) ? ((o = a), j(n)) : (e.consume(n), a);
+ }
+ function f(n) {
+ return 45 === n ? (e.consume(n), d) : a(n);
+ }
+ function d(e) {
+ return 62 === e ? O(e) : 45 === e ? f(e) : a(e);
+ }
+ function m(n) {
+ return n === "CDATA[".charCodeAt(u++) ? (e.consume(n), 6 === u ? g : m) : t(n);
+ }
+ function g(n) {
+ return null === n ? t(n) : 93 === n ? (e.consume(n), x) : F(n) ? ((o = g), j(n)) : (e.consume(n), g);
+ }
+ function x(n) {
+ return 93 === n ? (e.consume(n), k) : g(n);
+ }
+ function k(n) {
+ return 62 === n ? O(n) : 93 === n ? (e.consume(n), k) : g(n);
+ }
+ function y(n) {
+ return null === n || 62 === n ? O(n) : F(n) ? ((o = y), j(n)) : (e.consume(n), y);
+ }
+ function S(n) {
+ return null === n ? t(n) : 63 === n ? (e.consume(n), E) : F(n) ? ((o = S), j(n)) : (e.consume(n), S);
+ }
+ function E(e) {
+ return 62 === e ? O(e) : S(e);
+ }
+ function A(n) {
+ return h(n) ? (e.consume(n), w) : t(n);
+ }
+ function w(n) {
+ return 45 === n || p(n) ? (e.consume(n), w) : C(n);
+ }
+ function C(n) {
+ return F(n) ? ((o = C), j(n)) : v(n) ? (e.consume(n), C) : O(n);
+ }
+ function T(n) {
+ return 45 === n || p(n) ? (e.consume(n), T) : 47 === n || 62 === n || b(n) ? z(n) : t(n);
+ }
+ function z(n) {
+ return 47 === n
+ ? (e.consume(n), O)
+ : 58 === n || 95 === n || h(n)
+ ? (e.consume(n), D)
+ : F(n)
+ ? ((o = z), j(n))
+ : v(n)
+ ? (e.consume(n), z)
+ : O(n);
+ }
+ function D(n) {
+ return 45 === n || 46 === n || 58 === n || 95 === n || p(n) ? (e.consume(n), D) : B(n);
+ }
+ function B(n) {
+ return 61 === n ? (e.consume(n), _) : F(n) ? ((o = B), j(n)) : v(n) ? (e.consume(n), B) : z(n);
+ }
+ function _(n) {
+ return null === n || 60 === n || 61 === n || 62 === n || 96 === n
+ ? t(n)
+ : 34 === n || 39 === n
+ ? (e.consume(n), (i = n), L)
+ : F(n)
+ ? ((o = _), j(n))
+ : v(n)
+ ? (e.consume(n), _)
+ : (e.consume(n), M);
+ }
+ function L(n) {
+ return n === i ? (e.consume(n), (i = void 0), P) : null === n ? t(n) : F(n) ? ((o = L), j(n)) : (e.consume(n), L);
+ }
+ function M(n) {
+ return null === n || 34 === n || 39 === n || 60 === n || 61 === n || 96 === n
+ ? t(n)
+ : 47 === n || 62 === n || b(n)
+ ? z(n)
+ : (e.consume(n), M);
+ }
+ function P(e) {
+ return 47 === e || 62 === e || b(e) ? z(e) : t(e);
+ }
+ function O(r) {
+ return 62 === r ? (e.consume(r), e.exit("htmlTextData"), e.exit("htmlText"), n) : t(r);
+ }
+ function j(n) {
+ return e.exit("htmlTextData"), e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), H;
+ }
+ function H(n) {
+ return v(n) ? I(e, R, "linePrefix", r.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4)(n) : R(n);
+ }
+ function R(n) {
+ return e.enter("htmlTextData"), o(n);
+ }
+ },
+ },
+ Ie = {
+ name: "codeText",
+ tokenize: function (e, n, t) {
+ let r,
+ i,
+ u = 0;
+ return function (n) {
+ return e.enter("codeText"), e.enter("codeTextSequence"), o(n);
+ };
+ function o(n) {
+ return 96 === n ? (e.consume(n), u++, o) : (e.exit("codeTextSequence"), c(n));
+ }
+ function c(n) {
+ return null === n
+ ? t(n)
+ : 32 === n
+ ? (e.enter("space"), e.consume(n), e.exit("space"), c)
+ : 96 === n
+ ? ((i = e.enter("codeTextSequence")), (r = 0), l(n))
+ : F(n)
+ ? (e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), c)
+ : (e.enter("codeTextData"), s(n));
+ }
+ function s(n) {
+ return null === n || 32 === n || 96 === n || F(n) ? (e.exit("codeTextData"), c(n)) : (e.consume(n), s);
+ }
+ function l(t) {
+ return 96 === t
+ ? (e.consume(t), r++, l)
+ : r === u
+ ? (e.exit("codeTextSequence"), e.exit("codeText"), n(t))
+ : ((i.type = "codeTextData"), s(t));
+ }
+ },
+ resolve: function (e) {
+ let n,
+ t,
+ r = e.length - 4,
+ i = 3;
+ if (!(("lineEnding" !== e[i][1].type && "space" !== e[i][1].type) || ("lineEnding" !== e[r][1].type && "space" !== e[r][1].type)))
+ for (n = i; ++n < r; )
+ if ("codeTextData" === e[n][1].type) {
+ (e[i][1].type = "codeTextPadding"), (e[r][1].type = "codeTextPadding"), (i += 2), (r -= 2);
+ break;
+ }
+ for (n = i - 1, r++; ++n <= r; )
+ void 0 === t
+ ? n !== r && "lineEnding" !== e[n][1].type && (t = n)
+ : (n !== r && "lineEnding" !== e[n][1].type) ||
+ ((e[t][1].type = "codeTextData"),
+ n !== t + 2 && ((e[t][1].end = e[n - 1][1].end), e.splice(t + 2, n - t - 2), (r -= n - t - 2), (n = t + 2)),
+ (t = void 0));
+ return e;
+ },
+ previous: function (e) {
+ return 96 !== e || "characterEscape" === this.events[this.events.length - 1][1].type;
+ },
+ },
+ we = {
+ 42: U,
+ 43: U,
+ 45: U,
+ 48: U,
+ 49: U,
+ 50: U,
+ 51: U,
+ 52: U,
+ 53: U,
+ 54: U,
+ 55: U,
+ 56: U,
+ 57: U,
+ 62: Z,
+ },
+ Ce = { 91: ee },
+ Te = { [-2]: te, [-1]: te, 32: te },
+ ze = { 35: ie, 42: N, 45: [ue, N], 60: se, 61: ue, 95: N, 96: de, 126: de },
+ De = { 38: me, 92: ge },
+ Be = {
+ [-5]: xe,
+ [-4]: xe,
+ [-3]: xe,
+ 33: {
+ name: "labelStartImage",
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ return e.enter("labelImage"), e.enter("labelImageMarker"), e.consume(n), e.exit("labelImageMarker"), i;
+ };
+ function i(n) {
+ return 91 === n ? (e.enter("labelMarker"), e.consume(n), e.exit("labelMarker"), e.exit("labelImage"), u) : t(n);
+ }
+ function u(e) {
+ return 94 === e && "_hiddenFootnoteSupport" in r.parser.constructs ? t(e) : n(e);
+ }
+ },
+ resolveAll: ke.resolveAll,
+ },
+ 38: me,
+ 42: Se,
+ 60: [
+ {
+ name: "autolink",
+ tokenize: function (e, n, t) {
+ let r = 0;
+ return function (n) {
+ return e.enter("autolink"), e.enter("autolinkMarker"), e.consume(n), e.exit("autolinkMarker"), e.enter("autolinkProtocol"), i;
+ };
+ function i(n) {
+ return h(n) ? (e.consume(n), u) : s(n);
+ }
+ function u(e) {
+ return 43 === e || 45 === e || 46 === e || p(e) ? ((r = 1), o(e)) : s(e);
+ }
+ function o(n) {
+ return 58 === n
+ ? (e.consume(n), (r = 0), c)
+ : (43 === n || 45 === n || 46 === n || p(n)) && r++ < 32
+ ? (e.consume(n), o)
+ : ((r = 0), s(n));
+ }
+ function c(r) {
+ return 62 === r
+ ? (e.exit("autolinkProtocol"), e.enter("autolinkMarker"), e.consume(r), e.exit("autolinkMarker"), e.exit("autolink"), n)
+ : null === r || 32 === r || 60 === r || g(r)
+ ? t(r)
+ : (e.consume(r), c);
+ }
+ function s(n) {
+ return 64 === n ? (e.consume(n), l) : m(n) ? (e.consume(n), s) : t(n);
+ }
+ function l(e) {
+ return p(e) ? a(e) : t(e);
+ }
+ function a(t) {
+ return 46 === t
+ ? (e.consume(t), (r = 0), l)
+ : 62 === t
+ ? ((e.exit("autolinkProtocol").type = "autolinkEmail"),
+ e.enter("autolinkMarker"),
+ e.consume(t),
+ e.exit("autolinkMarker"),
+ e.exit("autolink"),
+ n)
+ : f(t);
+ }
+ function f(n) {
+ if ((45 === n || p(n)) && r++ < 63) {
+ const t = 45 === n ? f : a;
+ return e.consume(n), t;
+ }
+ return t(n);
+ }
+ },
+ },
+ Ae,
+ ],
+ 91: {
+ name: "labelStartLink",
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ return e.enter("labelLink"), e.enter("labelMarker"), e.consume(n), e.exit("labelMarker"), e.exit("labelLink"), i;
+ };
+ function i(e) {
+ return 94 === e && "_hiddenFootnoteSupport" in r.parser.constructs ? t(e) : n(e);
+ }
+ },
+ resolveAll: ke.resolveAll,
+ },
+ 92: [
+ {
+ name: "hardBreakEscape",
+ tokenize: function (e, n, t) {
+ return function (n) {
+ return e.enter("hardBreakEscape"), e.consume(n), r;
+ };
+ function r(r) {
+ return F(r) ? (e.exit("hardBreakEscape"), n(r)) : t(r);
+ }
+ },
+ },
+ ge,
+ ],
+ 93: ke,
+ 95: Se,
+ 96: Ie,
+ },
+ _e = { null: [Se, P] },
+ Le = { null: [42, 95] },
+ Me = { null: [] };
+ const Pe = /[\0\t\n\r]/g;
+ function Oe(e, n) {
+ const t = Number.parseInt(e, n);
+ return t < 9 ||
+ 11 === t ||
+ (t > 13 && t < 32) ||
+ (t > 126 && t < 160) ||
+ (t > 55295 && t < 57344) ||
+ (t > 64975 && t < 65008) ||
+ 65535 == (65535 & t) ||
+ 65534 == (65535 & t) ||
+ t > 1114111
+ ? "�"
+ : String.fromCharCode(t);
+ }
+ const je = /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;
+ function He(e, n, t) {
+ if (n) return n;
+ if (35 === t.charCodeAt(0)) {
+ const e = t.charCodeAt(1),
+ n = 120 === e || 88 === e;
+ return Oe(t.slice(n ? 2 : 1), n ? 16 : 10);
+ }
+ return pe(t) || e;
+ }
+ function Re(e) {
+ return e && "object" == typeof e
+ ? "position" in e || "type" in e
+ ? Ve(e.position)
+ : "start" in e || "end" in e
+ ? Ve(e)
+ : "line" in e || "column" in e
+ ? qe(e)
+ : ""
+ : "";
+ }
+ function qe(e) {
+ return Qe(e && e.line) + ":" + Qe(e && e.column);
+ }
+ function Ve(e) {
+ return qe(e && e.start) + "-" + qe(e && e.end);
+ }
+ function Qe(e) {
+ return e && "number" == typeof e ? e : 1;
+ }
+ const Ne = {}.hasOwnProperty,
+ Ue = function (e, n, t) {
+ return (
+ "string" != typeof n && ((t = n), (n = void 0)),
+ (function (e) {
+ const n = {
+ transforms: [],
+ canContainEols: ["emphasis", "fragment", "heading", "paragraph", "strong"],
+ enter: {
+ autolink: s(v),
+ autolinkProtocol: p,
+ autolinkEmail: p,
+ atxHeading: s(y),
+ blockQuote: s(function () {
+ return { type: "blockquote", children: [] };
+ }),
+ characterEscape: p,
+ characterReference: p,
+ codeFenced: s(k),
+ codeFencedFenceInfo: l,
+ codeFencedFenceMeta: l,
+ codeIndented: s(k, l),
+ codeText: s(function () {
+ return { type: "inlineCode", value: "" };
+ }, l),
+ codeTextData: p,
+ data: p,
+ codeFlowValue: p,
+ definition: s(function () {
+ return {
+ type: "definition",
+ identifier: "",
+ label: null,
+ title: null,
+ url: "",
+ };
+ }),
+ definitionDestinationString: l,
+ definitionLabelString: l,
+ definitionTitleString: l,
+ emphasis: s(function () {
+ return { type: "emphasis", children: [] };
+ }),
+ hardBreakEscape: s(F),
+ hardBreakTrailing: s(F),
+ htmlFlow: s(b, l),
+ htmlFlowData: p,
+ htmlText: s(b, l),
+ htmlTextData: p,
+ image: s(function () {
+ return { type: "image", title: null, url: "", alt: null };
+ }),
+ label: l,
+ link: s(v),
+ listItem: s(function (e) {
+ return { type: "listItem", spread: e._spread, checked: null, children: [] };
+ }),
+ listItemValue: function (e) {
+ c("expectingFirstListItemValue") &&
+ ((this.stack[this.stack.length - 2].start = Number.parseInt(this.sliceSerialize(e), 10)), i("expectingFirstListItemValue"));
+ },
+ listOrdered: s(S, function () {
+ i("expectingFirstListItemValue", !0);
+ }),
+ listUnordered: s(S),
+ paragraph: s(function () {
+ return { type: "paragraph", children: [] };
+ }),
+ reference: function () {
+ i("referenceType", "collapsed");
+ },
+ referenceString: l,
+ resourceDestinationString: l,
+ resourceTitleString: l,
+ setextHeading: s(y),
+ strong: s(function () {
+ return { type: "strong", children: [] };
+ }),
+ thematicBreak: s(function () {
+ return { type: "thematicBreak" };
+ }),
+ },
+ exit: {
+ atxHeading: f(),
+ atxHeadingSequence: function (e) {
+ const n = this.stack[this.stack.length - 1];
+ if (!n.depth) {
+ const t = this.sliceSerialize(e).length;
+ n.depth = t;
+ }
+ },
+ autolink: f(),
+ autolinkEmail: function (e) {
+ m.call(this, e), (this.stack[this.stack.length - 1].url = "mailto:" + this.sliceSerialize(e));
+ },
+ autolinkProtocol: function (e) {
+ m.call(this, e), (this.stack[this.stack.length - 1].url = this.sliceSerialize(e));
+ },
+ blockQuote: f(),
+ characterEscapeValue: m,
+ characterReferenceMarkerHexadecimal: x,
+ characterReferenceMarkerNumeric: x,
+ characterReferenceValue: function (e) {
+ const n = this.sliceSerialize(e),
+ t = c("characterReferenceType");
+ let r;
+ t ? ((r = Oe(n, "characterReferenceMarkerNumeric" === t ? 10 : 16)), i("characterReferenceType")) : (r = pe(n));
+ const u = this.stack.pop();
+ (u.value += r), (u.position.end = $e(e.end));
+ },
+ codeFenced: f(function () {
+ const e = this.resume();
+ (this.stack[this.stack.length - 1].value = e.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g, "")), i("flowCodeInside");
+ }),
+ codeFencedFence: function () {
+ c("flowCodeInside") || (this.buffer(), i("flowCodeInside", !0));
+ },
+ codeFencedFenceInfo: function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].lang = e;
+ },
+ codeFencedFenceMeta: function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].meta = e;
+ },
+ codeFlowValue: m,
+ codeIndented: f(function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].value = e.replace(/(\r?\n|\r)$/g, "");
+ }),
+ codeText: f(function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].value = e;
+ }),
+ codeTextData: m,
+ data: m,
+ definition: f(),
+ definitionDestinationString: function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].url = e;
+ },
+ definitionLabelString: function (e) {
+ const n = this.resume(),
+ t = this.stack[this.stack.length - 1];
+ (t.label = n), (t.identifier = X(this.sliceSerialize(e)).toLowerCase());
+ },
+ definitionTitleString: function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].title = e;
+ },
+ emphasis: f(),
+ hardBreakEscape: f(g),
+ hardBreakTrailing: f(g),
+ htmlFlow: f(function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].value = e;
+ }),
+ htmlFlowData: m,
+ htmlText: f(function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].value = e;
+ }),
+ htmlTextData: m,
+ image: f(function () {
+ const e = this.stack[this.stack.length - 1];
+ if (c("inReference")) {
+ const n = c("referenceType") || "shortcut";
+ (e.type += "Reference"), (e.referenceType = n), delete e.url, delete e.title;
+ } else delete e.identifier, delete e.label;
+ i("referenceType");
+ }),
+ label: function () {
+ const e = this.stack[this.stack.length - 1],
+ n = this.resume(),
+ t = this.stack[this.stack.length - 1];
+ if ((i("inReference", !0), "link" === t.type)) {
+ const n = e.children;
+ t.children = n;
+ } else t.alt = n;
+ },
+ labelText: function (e) {
+ const n = this.sliceSerialize(e),
+ t = this.stack[this.stack.length - 2];
+ (t.label = (function (e) {
+ return e.replace(je, He);
+ })(n)),
+ (t.identifier = X(n).toLowerCase());
+ },
+ lineEnding: function (e) {
+ const t = this.stack[this.stack.length - 1];
+ if (c("atHardBreak")) return (t.children[t.children.length - 1].position.end = $e(e.end)), void i("atHardBreak");
+ !c("setextHeadingSlurpLineEnding") && n.canContainEols.includes(t.type) && (p.call(this, e), m.call(this, e));
+ },
+ link: f(function () {
+ const e = this.stack[this.stack.length - 1];
+ if (c("inReference")) {
+ const n = c("referenceType") || "shortcut";
+ (e.type += "Reference"), (e.referenceType = n), delete e.url, delete e.title;
+ } else delete e.identifier, delete e.label;
+ i("referenceType");
+ }),
+ listItem: f(),
+ listOrdered: f(),
+ listUnordered: f(),
+ paragraph: f(),
+ referenceString: function (e) {
+ const n = this.resume(),
+ t = this.stack[this.stack.length - 1];
+ (t.label = n), (t.identifier = X(this.sliceSerialize(e)).toLowerCase()), i("referenceType", "full");
+ },
+ resourceDestinationString: function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].url = e;
+ },
+ resourceTitleString: function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].title = e;
+ },
+ resource: function () {
+ i("inReference");
+ },
+ setextHeading: f(function () {
+ i("setextHeadingSlurpLineEnding");
+ }),
+ setextHeadingLineSequence: function (e) {
+ this.stack[this.stack.length - 1].depth = 61 === this.sliceSerialize(e).charCodeAt(0) ? 1 : 2;
+ },
+ setextHeadingText: function () {
+ i("setextHeadingSlurpLineEnding", !0);
+ },
+ strong: f(),
+ thematicBreak: f(),
+ },
+ };
+ We(n, (e || {}).mdastExtensions || []);
+ const t = {};
+ return function (e) {
+ let t = { type: "root", children: [] };
+ const u = {
+ stack: [t],
+ tokenStack: [],
+ config: n,
+ enter: a,
+ exit: d,
+ buffer: l,
+ resume: h,
+ setData: i,
+ getData: c,
+ },
+ o = [];
+ let s = -1;
+ for (; ++s < e.length; )
+ ("listOrdered" !== e[s][1].type && "listUnordered" !== e[s][1].type) || ("enter" === e[s][0] ? o.push(s) : (s = r(e, o.pop(), s)));
+ for (s = -1; ++s < e.length; ) {
+ const t = n[e[s][0]];
+ Ne.call(t, e[s][1].type) && t[e[s][1].type].call(Object.assign({ sliceSerialize: e[s][2].sliceSerialize }, u), e[s][1]);
+ }
+ if (u.tokenStack.length > 0) {
+ const e = u.tokenStack[u.tokenStack.length - 1];
+ (e[1] || Ye).call(u, void 0, e[0]);
+ }
+ for (
+ t.position = {
+ start: $e(e.length > 0 ? e[0][1].start : { line: 1, column: 1, offset: 0 }),
+ end: $e(e.length > 0 ? e[e.length - 2][1].end : { line: 1, column: 1, offset: 0 }),
+ },
+ s = -1;
+ ++s < n.transforms.length;
+
+ )
+ t = n.transforms[s](t) || t;
+ return t;
+ };
+ function r(e, n, t) {
+ let r,
+ i,
+ u,
+ o,
+ c = n - 1,
+ s = -1,
+ l = !1;
+ for (; ++c <= t; ) {
+ const n = e[c];
+ if (
+ ("listUnordered" === n[1].type || "listOrdered" === n[1].type || "blockQuote" === n[1].type
+ ? ("enter" === n[0] ? s++ : s--, (o = void 0))
+ : "lineEndingBlank" === n[1].type
+ ? "enter" === n[0] && (!r || o || s || u || (u = c), (o = void 0))
+ : "linePrefix" === n[1].type ||
+ "listItemValue" === n[1].type ||
+ "listItemMarker" === n[1].type ||
+ "listItemPrefix" === n[1].type ||
+ "listItemPrefixWhitespace" === n[1].type ||
+ (o = void 0),
+ (!s && "enter" === n[0] && "listItemPrefix" === n[1].type) ||
+ (-1 === s && "exit" === n[0] && ("listUnordered" === n[1].type || "listOrdered" === n[1].type)))
+ ) {
+ if (r) {
+ let o = c;
+ for (i = void 0; o--; ) {
+ const n = e[o];
+ if ("lineEnding" === n[1].type || "lineEndingBlank" === n[1].type) {
+ if ("exit" === n[0]) continue;
+ i && ((e[i][1].type = "lineEndingBlank"), (l = !0)), (n[1].type = "lineEnding"), (i = o);
+ } else if (
+ "linePrefix" !== n[1].type &&
+ "blockQuotePrefix" !== n[1].type &&
+ "blockQuotePrefixWhitespace" !== n[1].type &&
+ "blockQuoteMarker" !== n[1].type &&
+ "listItemIndent" !== n[1].type
+ )
+ break;
+ }
+ u && (!i || u < i) && (r._spread = !0),
+ (r.end = Object.assign({}, i ? e[i][1].start : n[1].end)),
+ e.splice(i || c, 0, ["exit", r, n[2]]),
+ c++,
+ t++;
+ }
+ "listItemPrefix" === n[1].type &&
+ ((r = {
+ type: "listItem",
+ _spread: !1,
+ start: Object.assign({}, n[1].start),
+ end: void 0,
+ }),
+ e.splice(c, 0, ["enter", r, n[2]]),
+ c++,
+ t++,
+ (u = void 0),
+ (o = !0));
+ }
+ }
+ return (e[n][1]._spread = l), t;
+ }
+ function i(e, n) {
+ t[e] = n;
+ }
+ function c(e) {
+ return t[e];
+ }
+ function s(e, n) {
+ return function (t) {
+ a.call(this, e(t), t), n && n.call(this, t);
+ };
+ }
+ function l() {
+ this.stack.push({ type: "fragment", children: [] });
+ }
+ function a(e, n, t) {
+ return (
+ this.stack[this.stack.length - 1].children.push(e),
+ this.stack.push(e),
+ this.tokenStack.push([n, t]),
+ (e.position = { start: $e(n.start) }),
+ e
+ );
+ }
+ function f(e) {
+ return function (n) {
+ e && e.call(this, n), d.call(this, n);
+ };
+ }
+ function d(e, n) {
+ const t = this.stack.pop(),
+ r = this.tokenStack.pop();
+ if (!r) throw new Error("Cannot close `" + e.type + "` (" + Re({ start: e.start, end: e.end }) + "): it’s not open");
+ return r[0].type !== e.type && (n ? n.call(this, e, r[0]) : (r[1] || Ye).call(this, e, r[0])), (t.position.end = $e(e.end)), t;
+ }
+ function h() {
+ return (function (e, n) {
+ return o(e, "boolean" != typeof u.includeImageAlt || u.includeImageAlt, "boolean" != typeof u.includeHtml || u.includeHtml);
+ })(this.stack.pop());
+ }
+ function p(e) {
+ const n = this.stack[this.stack.length - 1];
+ let t = n.children[n.children.length - 1];
+ (t && "text" === t.type) || ((t = { type: "text", value: "" }), (t.position = { start: $e(e.start) }), n.children.push(t)),
+ this.stack.push(t);
+ }
+ function m(e) {
+ const n = this.stack.pop();
+ (n.value += this.sliceSerialize(e)), (n.position.end = $e(e.end));
+ }
+ function g() {
+ i("atHardBreak", !0);
+ }
+ function x(e) {
+ i("characterReferenceType", e.type);
+ }
+ function k() {
+ return { type: "code", lang: null, meta: null, value: "" };
+ }
+ function y() {
+ return { type: "heading", depth: void 0, children: [] };
+ }
+ function F() {
+ return { type: "break" };
+ }
+ function b() {
+ return { type: "html", value: "" };
+ }
+ function v() {
+ return { type: "link", title: null, url: "", children: [] };
+ }
+ function S(e) {
+ return {
+ type: "list",
+ ordered: "listOrdered" === e.type,
+ start: null,
+ spread: e._spread,
+ children: [],
+ };
+ }
+ })(t)(
+ (function (e) {
+ for (; !D(e); );
+ return e;
+ })(
+ (function (e) {
+ const n = (function (e) {
+ const n = {};
+ let t = -1;
+ for (; ++t < e.length; ) f(n, e[t]);
+ return n;
+ })([r, ...((e || {}).extensions || [])]),
+ t = {
+ defined: [],
+ lazy: {},
+ constructs: n,
+ content: i(w),
+ document: i(C),
+ flow: i(M),
+ string: i(O),
+ text: i(j),
+ };
+ return t;
+ function i(e) {
+ return function (n) {
+ return Q(t, e, n);
+ };
+ }
+ })(t)
+ .document()
+ .write(
+ (function () {
+ let e,
+ n = 1,
+ t = "",
+ r = !0;
+ return function (i, u, o) {
+ const c = [];
+ let s, l, a, f, d;
+ for (i = t + i.toString(u), a = 0, t = "", r && (65279 === i.charCodeAt(0) && a++, (r = void 0)); a < i.length; ) {
+ if (((Pe.lastIndex = a), (s = Pe.exec(i)), (f = s && void 0 !== s.index ? s.index : i.length), (d = i.charCodeAt(f)), !s)) {
+ t = i.slice(a);
+ break;
+ }
+ if (10 === d && a === f && e) c.push(-3), (e = void 0);
+ else
+ switch ((e && (c.push(-5), (e = void 0)), a < f && (c.push(i.slice(a, f)), (n += f - a)), d)) {
+ case 0:
+ c.push(65533), n++;
+ break;
+ case 9:
+ for (l = 4 * Math.ceil(n / 4), c.push(-2); n++ < l; ) c.push(-1);
+ break;
+ case 10:
+ c.push(-4), (n = 1);
+ break;
+ default:
+ (e = !0), (n = 1);
+ }
+ a = f + 1;
+ }
+ return o && (e && c.push(-5), t && c.push(t), c.push(null)), c;
+ };
+ })()(e, n, !0),
+ ),
+ ),
+ )
+ );
+ };
+ function $e(e) {
+ return { line: e.line, column: e.column, offset: e.offset };
+ }
+ function We(e, n) {
+ let t = -1;
+ for (; ++t < n.length; ) {
+ const r = n[t];
+ Array.isArray(r) ? We(e, r) : Ze(e, r);
+ }
+ }
+ function Ze(e, n) {
+ let t;
+ for (t in n)
+ if (Ne.call(n, t))
+ if ("canContainEols" === t) {
+ const r = n[t];
+ r && e[t].push(...r);
+ } else if ("transforms" === t) {
+ const r = n[t];
+ r && e[t].push(...r);
+ } else if ("enter" === t || "exit" === t) {
+ const r = n[t];
+ r && Object.assign(e[t], r);
+ }
+ }
+ function Ye(e, n) {
+ throw e
+ ? new Error(
+ "Cannot close `" +
+ e.type +
+ "` (" +
+ Re({ start: e.start, end: e.end }) +
+ "): a different token (`" +
+ n.type +
+ "`, " +
+ Re({ start: n.start, end: n.end }) +
+ ") is open",
+ )
+ : new Error("Cannot close document, a token (`" + n.type + "`, " + Re({ start: n.start, end: n.end }) + ") is still open");
+ }
+ var Ge = t(8464);
+ function Je(e) {
+ const n = (function (e) {
+ const n = e.replace(/\n{2,}/g, "\n");
+ return (0, Ge.Z)(n);
+ })(e),
+ { children: t } = Ue(n),
+ r = [[]];
+ let i = 0;
+ function u(e, n = "normal") {
+ "text" === e.type
+ ? e.value.split("\n").forEach((e, t) => {
+ 0 !== t && (i++, r.push([])),
+ e.split(" ").forEach((e) => {
+ e && r[i].push({ content: e, type: n });
+ });
+ })
+ : ("strong" !== e.type && "emphasis" !== e.type) ||
+ e.children.forEach((n) => {
+ u(n, e.type);
+ });
+ }
+ return (
+ t.forEach((e) => {
+ "paragraph" === e.type &&
+ e.children.forEach((e) => {
+ u(e);
+ });
+ }),
+ r
+ );
+ }
+ function Ke(e, n) {
+ var t;
+ return Xe(e, [], ((t = n.content), Intl.Segmenter ? [...new Intl.Segmenter().segment(t)].map((e) => e.segment) : [...t]), n.type);
+ }
+ function Xe(e, n, t, r) {
+ if (0 === t.length)
+ return [
+ { content: n.join(""), type: r },
+ { content: "", type: r },
+ ];
+ const [i, ...u] = t,
+ o = [...n, i];
+ return e([{ content: o.join(""), type: r }])
+ ? Xe(e, o, u, r)
+ : (0 === n.length && i && (n.push(i), t.shift()),
+ [
+ { content: n.join(""), type: r },
+ { content: t.join(""), type: r },
+ ]);
+ }
+ function en(e, n) {
+ if (e.some(({ content: e }) => e.includes("\n"))) throw new Error("splitLineToFitWidth does not support newlines in the line");
+ return nn(e, n);
+ }
+ function nn(e, n, t = [], r = []) {
+ if (0 === e.length) return r.length > 0 && t.push(r), t.length > 0 ? t : [];
+ let i = "";
+ " " === e[0].content && ((i = " "), e.shift());
+ const u = e.shift() ?? { content: " ", type: "normal" },
+ o = [...r];
+ if (("" !== i && o.push({ content: i, type: "normal" }), o.push(u), n(o))) return nn(e, n, t, o);
+ if (r.length > 0) t.push(r), e.unshift(u);
+ else if (u.content) {
+ const [r, i] = Ke(n, u);
+ t.push([r]), i.content && e.unshift(i);
+ }
+ return nn(e, n, t);
+ }
+ function tn(e, n, t) {
+ return e
+ .append("tspan")
+ .attr("class", "text-outer-tspan")
+ .attr("x", 0)
+ .attr("y", n * t - 0.1 + "em")
+ .attr("dy", t + "em");
+ }
+ function rn(e, n, t) {
+ const r = e.append("text"),
+ i = tn(r, 1, n);
+ un(i, t);
+ const u = i.node().getComputedTextLength();
+ return r.remove(), u;
+ }
+ function un(e, n) {
+ e.text(""),
+ n.forEach((n, t) => {
+ const r = e
+ .append("tspan")
+ .attr("font-style", "emphasis" === n.type ? "italic" : "normal")
+ .attr("class", "text-inner-tspan")
+ .attr("font-weight", "strong" === n.type ? "bold" : "normal");
+ 0 === t ? r.text(n.content) : r.text(" " + n.content);
+ });
+ }
+ const on = (
+ e,
+ n = "",
+ { style: t = "", isTitle: r = !1, classes: u = "", useHtmlLabels: o = !0, isNode: c = !0, width: s = 200, addSvgBackground: l = !1 } = {},
+ ) => {
+ if ((i.l.info("createText", n, t, r, u, o, c, l), o)) {
+ const r = (function (e) {
+ const { children: n } = Ue(e);
+ return n
+ .map(function e(n) {
+ return "text" === n.type
+ ? n.value.replace(/\n/g, "
")
+ : "strong" === n.type
+ ? `${n.children.map(e).join("")}`
+ : "emphasis" === n.type
+ ? `${n.children.map(e).join("")}`
+ : "paragraph" === n.type
+ ? `${n.children.map(e).join("")}
`
+ : `Unsupported markdown: ${n.type}`;
+ })
+ .join("");
+ })(n),
+ o = (function (e, n, t, r, i = !1) {
+ const u = e.append("foreignObject"),
+ o = u.append("xhtml:div"),
+ c = n.label,
+ s = n.isNode ? "nodeLabel" : "edgeLabel";
+ var l, a;
+ o.html(`\n " + c + ""),
+ (l = o),
+ (a = n.labelStyle) && l.attr("style", a),
+ o.style("display", "table-cell"),
+ o.style("white-space", "nowrap"),
+ o.style("max-width", t + "px"),
+ o.attr("xmlns", "http://www.w3.org/1999/xhtml"),
+ i && o.attr("class", "labelBkg");
+ let f = o.node().getBoundingClientRect();
+ return (
+ f.width === t &&
+ (o.style("display", "table"),
+ o.style("white-space", "break-spaces"),
+ o.style("width", t + "px"),
+ (f = o.node().getBoundingClientRect())),
+ u.style("width", f.width),
+ u.style("height", f.height),
+ u.node()
+ );
+ })(
+ e,
+ {
+ isNode: c,
+ label: (0, i.L)(r).replace(/fa[blrs]?:fa-[\w-]+/g, (e) => ``),
+ labelStyle: t.replace("fill:", "color:"),
+ },
+ s,
+ u,
+ l,
+ );
+ return o;
+ }
+ {
+ const t = (function (e, n, t, r = !1) {
+ const i = n.append("g"),
+ u = i.insert("rect").attr("class", "background"),
+ o = i.append("text").attr("y", "-10.1");
+ let c = 0;
+ for (const n of t) {
+ const t = (n) => rn(i, 1.1, n) <= e,
+ r = t(n) ? [n] : en(n, t);
+ for (const e of r) un(tn(o, c, 1.1), e), c++;
+ }
+ if (r) {
+ const e = o.node().getBBox(),
+ n = 2;
+ return (
+ u
+ .attr("x", -n)
+ .attr("y", -n)
+ .attr("width", e.width + 2 * n)
+ .attr("height", e.height + 2 * n),
+ i.node()
+ );
+ }
+ return o.node();
+ })(s, e, Je(n), l);
+ return t;
+ }
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/519-8d0cec7f.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/519-8d0cec7f.chunk.min.js
new file mode 100644
index 000000000..bee8e3e85
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/519-8d0cec7f.chunk.min.js
@@ -0,0 +1,463 @@
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [519],
+ {
+ 9519: function (t, e, a) {
+ a.d(e, {
+ diagram: function () {
+ return g;
+ },
+ });
+ var r = a(1423),
+ n = a(7274),
+ i = a(3771),
+ d = a(5625),
+ o = a(9339),
+ s = a(7863);
+ a(7484), a(7967), a(7856);
+ let l = {};
+ const p = function (t) {
+ const e = Object.entries(l).find((e) => e[1].label === t);
+ if (e) return e[0];
+ },
+ c = {
+ draw: function (t, e, a, r) {
+ const c = (0, o.c)().class;
+ (l = {}), o.l.info("Rendering diagram " + t);
+ const g = (0, o.c)().securityLevel;
+ let h;
+ "sandbox" === g && (h = (0, n.Ys)("#i" + e));
+ const f = "sandbox" === g ? (0, n.Ys)(h.nodes()[0].contentDocument.body) : (0, n.Ys)("body"),
+ u = f.select(`[id='${e}']`);
+ var x;
+ (x = u)
+ .append("defs")
+ .append("marker")
+ .attr("id", "extensionStart")
+ .attr("class", "extension")
+ .attr("refX", 0)
+ .attr("refY", 7)
+ .attr("markerWidth", 190)
+ .attr("markerHeight", 240)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 1,7 L18,13 V 1 Z"),
+ x
+ .append("defs")
+ .append("marker")
+ .attr("id", "extensionEnd")
+ .attr("refX", 19)
+ .attr("refY", 7)
+ .attr("markerWidth", 20)
+ .attr("markerHeight", 28)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 1,1 V 13 L18,7 Z"),
+ x
+ .append("defs")
+ .append("marker")
+ .attr("id", "compositionStart")
+ .attr("class", "extension")
+ .attr("refX", 0)
+ .attr("refY", 7)
+ .attr("markerWidth", 190)
+ .attr("markerHeight", 240)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"),
+ x
+ .append("defs")
+ .append("marker")
+ .attr("id", "compositionEnd")
+ .attr("refX", 19)
+ .attr("refY", 7)
+ .attr("markerWidth", 20)
+ .attr("markerHeight", 28)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"),
+ x
+ .append("defs")
+ .append("marker")
+ .attr("id", "aggregationStart")
+ .attr("class", "extension")
+ .attr("refX", 0)
+ .attr("refY", 7)
+ .attr("markerWidth", 190)
+ .attr("markerHeight", 240)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"),
+ x
+ .append("defs")
+ .append("marker")
+ .attr("id", "aggregationEnd")
+ .attr("refX", 19)
+ .attr("refY", 7)
+ .attr("markerWidth", 20)
+ .attr("markerHeight", 28)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"),
+ x
+ .append("defs")
+ .append("marker")
+ .attr("id", "dependencyStart")
+ .attr("class", "extension")
+ .attr("refX", 0)
+ .attr("refY", 7)
+ .attr("markerWidth", 190)
+ .attr("markerHeight", 240)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 5,7 L9,13 L1,7 L9,1 Z"),
+ x
+ .append("defs")
+ .append("marker")
+ .attr("id", "dependencyEnd")
+ .attr("refX", 19)
+ .attr("refY", 7)
+ .attr("markerWidth", 20)
+ .attr("markerHeight", 28)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
+ const y = new d.k({ multigraph: !0 });
+ y.setGraph({ isMultiGraph: !0 }),
+ y.setDefaultEdgeLabel(function () {
+ return {};
+ });
+ const b = r.db.getClasses(),
+ m = Object.keys(b);
+ for (const t of m) {
+ const e = b[t],
+ a = s.s.drawClass(u, e, c, r);
+ (l[a.id] = a), y.setNode(a.id, a), o.l.info("Org height: " + a.height);
+ }
+ r.db.getRelations().forEach(function (t) {
+ o.l.info("tjoho" + p(t.id1) + p(t.id2) + JSON.stringify(t)), y.setEdge(p(t.id1), p(t.id2), { relation: t }, t.title || "DEFAULT");
+ }),
+ r.db.getNotes().forEach(function (t) {
+ o.l.debug(`Adding note: ${JSON.stringify(t)}`);
+ const e = s.s.drawNote(u, t, c, r);
+ (l[e.id] = e),
+ y.setNode(e.id, e),
+ t.class &&
+ t.class in b &&
+ y.setEdge(
+ t.id,
+ p(t.class),
+ {
+ relation: {
+ id1: t.id,
+ id2: t.class,
+ relation: { type1: "none", type2: "none", lineType: 10 },
+ },
+ },
+ "DEFAULT",
+ );
+ }),
+ (0, i.bK)(y),
+ y.nodes().forEach(function (t) {
+ void 0 !== t &&
+ void 0 !== y.node(t) &&
+ (o.l.debug("Node " + t + ": " + JSON.stringify(y.node(t))),
+ f
+ .select("#" + (r.db.lookUpDomId(t) || t))
+ .attr("transform", "translate(" + (y.node(t).x - y.node(t).width / 2) + "," + (y.node(t).y - y.node(t).height / 2) + " )"));
+ }),
+ y.edges().forEach(function (t) {
+ void 0 !== t &&
+ void 0 !== y.edge(t) &&
+ (o.l.debug("Edge " + t.v + " -> " + t.w + ": " + JSON.stringify(y.edge(t))), s.s.drawEdge(u, y.edge(t), y.edge(t).relation, c, r));
+ });
+ const w = u.node().getBBox(),
+ k = w.width + 40,
+ E = w.height + 40;
+ (0, o.i)(u, E, k, c.useMaxWidth);
+ const L = `${w.x - 20} ${w.y - 20} ${k} ${E}`;
+ o.l.debug(`viewBox ${L}`), u.attr("viewBox", L);
+ },
+ },
+ g = {
+ parser: r.p,
+ db: r.d,
+ renderer: c,
+ styles: r.s,
+ init: (t) => {
+ t.class || (t.class = {}), (t.class.arrowMarkerAbsolute = t.arrowMarkerAbsolute), r.d.clear();
+ },
+ };
+ },
+ 7863: function (t, e, a) {
+ a.d(e, {
+ p: function () {
+ return o;
+ },
+ s: function () {
+ return p;
+ },
+ });
+ var r = a(7274),
+ n = a(9339);
+ let i = 0;
+ const d = function (t) {
+ let e = t.id;
+ return t.type && (e += "<" + t.type + ">"), e;
+ },
+ o = function (t) {
+ let e = "",
+ a = "",
+ r = "",
+ i = "",
+ d = t.substring(0, 1),
+ o = t.substring(t.length - 1, t.length);
+ d.match(/[#+~-]/) && (i = d);
+ let s = /[\s\w)~]/;
+ o.match(s) || (a = l(o));
+ const p = "" === i ? 0 : 1;
+ let c = "" === a ? t.length : t.length - 1;
+ const g = (t = t.substring(p, c)).indexOf("("),
+ h = t.indexOf(")");
+ if (g > 1 && h > g && h <= t.length) {
+ let d = t.substring(0, g).trim();
+ const o = t.substring(g + 1, h);
+ if (((e = i + d + "(" + (0, n.x)(o.trim()) + ")"), h < t.length)) {
+ let i = t.substring(h + 1, h + 2);
+ "" !== a || i.match(s) ? (r = t.substring(h + 1).trim()) : ((a = l(i)), (r = t.substring(h + 2).trim())),
+ "" !== r && (":" === r.charAt(0) && (r = r.substring(1).trim()), (r = " : " + (0, n.x)(r)), (e += r));
+ }
+ } else e = i + (0, n.x)(t);
+ return { displayText: e, cssStyle: a };
+ },
+ s = function (t, e, a, r) {
+ let n = o(e);
+ const i = t.append("tspan").attr("x", r.padding).text(n.displayText);
+ "" !== n.cssStyle && i.attr("style", n.cssStyle), a || i.attr("dy", r.textHeight);
+ },
+ l = function (t) {
+ switch (t) {
+ case "*":
+ return "font-style:italic;";
+ case "$":
+ return "text-decoration:underline;";
+ default:
+ return "";
+ }
+ },
+ p = {
+ getClassTitleString: d,
+ drawClass: function (t, e, a, r) {
+ n.l.debug("Rendering class ", e, a);
+ const i = e.id,
+ o = { id: i, label: e.id, width: 0, height: 0 },
+ l = t.append("g").attr("id", r.db.lookUpDomId(i)).attr("class", "classGroup");
+ let p;
+ p = e.link
+ ? l
+ .append("svg:a")
+ .attr("xlink:href", e.link)
+ .attr("target", e.linkTarget)
+ .append("text")
+ .attr("y", a.textHeight + a.padding)
+ .attr("x", 0)
+ : l
+ .append("text")
+ .attr("y", a.textHeight + a.padding)
+ .attr("x", 0);
+ let c = !0;
+ e.annotations.forEach(function (t) {
+ const e = p.append("tspan").text("«" + t + "»");
+ c || e.attr("dy", a.textHeight), (c = !1);
+ });
+ let g = d(e);
+ const h = p.append("tspan").text(g).attr("class", "title");
+ c || h.attr("dy", a.textHeight);
+ const f = p.node().getBBox().height,
+ u = l
+ .append("line")
+ .attr("x1", 0)
+ .attr("y1", a.padding + f + a.dividerMargin / 2)
+ .attr("y2", a.padding + f + a.dividerMargin / 2),
+ x = l
+ .append("text")
+ .attr("x", a.padding)
+ .attr("y", f + a.dividerMargin + a.textHeight)
+ .attr("fill", "white")
+ .attr("class", "classText");
+ (c = !0),
+ e.members.forEach(function (t) {
+ s(x, t, c, a), (c = !1);
+ });
+ const y = x.node().getBBox(),
+ b = l
+ .append("line")
+ .attr("x1", 0)
+ .attr("y1", a.padding + f + a.dividerMargin + y.height)
+ .attr("y2", a.padding + f + a.dividerMargin + y.height),
+ m = l
+ .append("text")
+ .attr("x", a.padding)
+ .attr("y", f + 2 * a.dividerMargin + y.height + a.textHeight)
+ .attr("fill", "white")
+ .attr("class", "classText");
+ (c = !0),
+ e.methods.forEach(function (t) {
+ s(m, t, c, a), (c = !1);
+ });
+ const w = l.node().getBBox();
+ var k = " ";
+ e.cssClasses.length > 0 && (k += e.cssClasses.join(" "));
+ const E = l
+ .insert("rect", ":first-child")
+ .attr("x", 0)
+ .attr("y", 0)
+ .attr("width", w.width + 2 * a.padding)
+ .attr("height", w.height + a.padding + 0.5 * a.dividerMargin)
+ .attr("class", k)
+ .node()
+ .getBBox().width;
+ return (
+ p.node().childNodes.forEach(function (t) {
+ t.setAttribute("x", (E - t.getBBox().width) / 2);
+ }),
+ e.tooltip && p.insert("title").text(e.tooltip),
+ u.attr("x2", E),
+ b.attr("x2", E),
+ (o.width = E),
+ (o.height = w.height + a.padding + 0.5 * a.dividerMargin),
+ o
+ );
+ },
+ drawEdge: function (t, e, a, d, o) {
+ const s = function (t) {
+ switch (t) {
+ case o.db.relationType.AGGREGATION:
+ return "aggregation";
+ case o.db.relationType.EXTENSION:
+ return "extension";
+ case o.db.relationType.COMPOSITION:
+ return "composition";
+ case o.db.relationType.DEPENDENCY:
+ return "dependency";
+ case o.db.relationType.LOLLIPOP:
+ return "lollipop";
+ }
+ };
+ e.points = e.points.filter((t) => !Number.isNaN(t.y));
+ const l = e.points,
+ p = (0, r.jvg)()
+ .x(function (t) {
+ return t.x;
+ })
+ .y(function (t) {
+ return t.y;
+ })
+ .curve(r.$0Z),
+ c = t
+ .append("path")
+ .attr("d", p(l))
+ .attr("id", "edge" + i)
+ .attr("class", "relation");
+ let g,
+ h,
+ f = "";
+ d.arrowMarkerAbsolute &&
+ ((f = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search),
+ (f = f.replace(/\(/g, "\\(")),
+ (f = f.replace(/\)/g, "\\)"))),
+ 1 == a.relation.lineType && c.attr("class", "relation dashed-line"),
+ 10 == a.relation.lineType && c.attr("class", "relation dotted-line"),
+ "none" !== a.relation.type1 && c.attr("marker-start", "url(" + f + "#" + s(a.relation.type1) + "Start)"),
+ "none" !== a.relation.type2 && c.attr("marker-end", "url(" + f + "#" + s(a.relation.type2) + "End)");
+ const u = e.points.length;
+ let x,
+ y,
+ b,
+ m,
+ w = n.u.calcLabelPosition(e.points);
+ if (((g = w.x), (h = w.y), u % 2 != 0 && u > 1)) {
+ let t = n.u.calcCardinalityPosition("none" !== a.relation.type1, e.points, e.points[0]),
+ r = n.u.calcCardinalityPosition("none" !== a.relation.type2, e.points, e.points[u - 1]);
+ n.l.debug("cardinality_1_point " + JSON.stringify(t)),
+ n.l.debug("cardinality_2_point " + JSON.stringify(r)),
+ (x = t.x),
+ (y = t.y),
+ (b = r.x),
+ (m = r.y);
+ }
+ if (void 0 !== a.title) {
+ const e = t.append("g").attr("class", "classLabel"),
+ r = e.append("text").attr("class", "label").attr("x", g).attr("y", h).attr("fill", "red").attr("text-anchor", "middle").text(a.title);
+ window.label = r;
+ const n = r.node().getBBox();
+ e.insert("rect", ":first-child")
+ .attr("class", "box")
+ .attr("x", n.x - d.padding / 2)
+ .attr("y", n.y - d.padding / 2)
+ .attr("width", n.width + d.padding)
+ .attr("height", n.height + d.padding);
+ }
+ n.l.info("Rendering relation " + JSON.stringify(a)),
+ void 0 !== a.relationTitle1 &&
+ "none" !== a.relationTitle1 &&
+ t
+ .append("g")
+ .attr("class", "cardinality")
+ .append("text")
+ .attr("class", "type1")
+ .attr("x", x)
+ .attr("y", y)
+ .attr("fill", "black")
+ .attr("font-size", "6")
+ .text(a.relationTitle1),
+ void 0 !== a.relationTitle2 &&
+ "none" !== a.relationTitle2 &&
+ t
+ .append("g")
+ .attr("class", "cardinality")
+ .append("text")
+ .attr("class", "type2")
+ .attr("x", b)
+ .attr("y", m)
+ .attr("fill", "black")
+ .attr("font-size", "6")
+ .text(a.relationTitle2),
+ i++;
+ },
+ drawNote: function (t, e, a, r) {
+ n.l.debug("Rendering note ", e, a);
+ const i = e.id,
+ d = { id: i, text: e.text, width: 0, height: 0 },
+ o = t.append("g").attr("id", i).attr("class", "classGroup");
+ let s = o
+ .append("text")
+ .attr("y", a.textHeight + a.padding)
+ .attr("x", 0);
+ const l = JSON.parse(`"${e.text}"`).split("\n");
+ l.forEach(function (t) {
+ n.l.debug(`Adding line: ${t}`), s.append("tspan").text(t).attr("class", "title").attr("dy", a.textHeight);
+ });
+ const p = o.node().getBBox(),
+ c = o
+ .insert("rect", ":first-child")
+ .attr("x", 0)
+ .attr("y", 0)
+ .attr("width", p.width + 2 * a.padding)
+ .attr("height", p.height + l.length * a.textHeight + a.padding + 0.5 * a.dividerMargin)
+ .node()
+ .getBBox().width;
+ return (
+ s.node().childNodes.forEach(function (t) {
+ t.setAttribute("x", (c - t.getBBox().width) / 2);
+ }),
+ (d.width = c),
+ (d.height = p.height + l.length * a.textHeight + a.padding + 0.5 * a.dividerMargin),
+ d
+ );
+ },
+ parseMember: o,
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/535-dcead599.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/535-dcead599.chunk.min.js
new file mode 100644
index 000000000..64fce02f0
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/535-dcead599.chunk.min.js
@@ -0,0 +1,1379 @@
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [535],
+ {
+ 1535: function (t, e, i) {
+ i.d(e, {
+ D: function () {
+ return l;
+ },
+ S: function () {
+ return c;
+ },
+ a: function () {
+ return h;
+ },
+ b: function () {
+ return a;
+ },
+ c: function () {
+ return o;
+ },
+ d: function () {
+ return B;
+ },
+ p: function () {
+ return r;
+ },
+ s: function () {
+ return P;
+ },
+ });
+ var s = i(9339),
+ n = (function () {
+ var t = function (t, e, i, s) {
+ for (i = i || {}, s = t.length; s--; i[t[s]] = e);
+ return i;
+ },
+ e = [1, 2],
+ i = [1, 3],
+ s = [1, 5],
+ n = [1, 7],
+ r = [2, 5],
+ o = [1, 15],
+ a = [1, 17],
+ c = [1, 21],
+ l = [1, 22],
+ h = [1, 23],
+ u = [1, 24],
+ d = [1, 37],
+ p = [1, 25],
+ y = [1, 26],
+ f = [1, 27],
+ g = [1, 28],
+ m = [1, 29],
+ _ = [1, 32],
+ S = [1, 33],
+ k = [1, 34],
+ T = [1, 35],
+ b = [1, 36],
+ E = [1, 39],
+ v = [1, 40],
+ x = [1, 41],
+ D = [1, 42],
+ C = [1, 38],
+ $ = [1, 45],
+ A = [1, 4, 5, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 50, 51, 52, 53, 56, 60],
+ L = [1, 4, 5, 14, 15, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 50, 51, 52, 53, 56, 60],
+ I = [1, 4, 5, 7, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 50, 51, 52, 53, 56, 60],
+ O = [4, 5, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 50, 51, 52, 53, 56, 60],
+ N = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ SPACE: 4,
+ NL: 5,
+ directive: 6,
+ SD: 7,
+ document: 8,
+ line: 9,
+ statement: 10,
+ classDefStatement: 11,
+ cssClassStatement: 12,
+ idStatement: 13,
+ DESCR: 14,
+ "--\x3e": 15,
+ HIDE_EMPTY: 16,
+ scale: 17,
+ WIDTH: 18,
+ COMPOSIT_STATE: 19,
+ STRUCT_START: 20,
+ STRUCT_STOP: 21,
+ STATE_DESCR: 22,
+ AS: 23,
+ ID: 24,
+ FORK: 25,
+ JOIN: 26,
+ CHOICE: 27,
+ CONCURRENT: 28,
+ note: 29,
+ notePosition: 30,
+ NOTE_TEXT: 31,
+ direction: 32,
+ acc_title: 33,
+ acc_title_value: 34,
+ acc_descr: 35,
+ acc_descr_value: 36,
+ acc_descr_multiline_value: 37,
+ classDef: 38,
+ CLASSDEF_ID: 39,
+ CLASSDEF_STYLEOPTS: 40,
+ DEFAULT: 41,
+ class: 42,
+ CLASSENTITY_IDS: 43,
+ STYLECLASS: 44,
+ openDirective: 45,
+ typeDirective: 46,
+ closeDirective: 47,
+ ":": 48,
+ argDirective: 49,
+ direction_tb: 50,
+ direction_bt: 51,
+ direction_rl: 52,
+ direction_lr: 53,
+ eol: 54,
+ ";": 55,
+ EDGE_STATE: 56,
+ STYLE_SEPARATOR: 57,
+ left_of: 58,
+ right_of: 59,
+ open_directive: 60,
+ type_directive: 61,
+ arg_directive: 62,
+ close_directive: 63,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 4: "SPACE",
+ 5: "NL",
+ 7: "SD",
+ 14: "DESCR",
+ 15: "--\x3e",
+ 16: "HIDE_EMPTY",
+ 17: "scale",
+ 18: "WIDTH",
+ 19: "COMPOSIT_STATE",
+ 20: "STRUCT_START",
+ 21: "STRUCT_STOP",
+ 22: "STATE_DESCR",
+ 23: "AS",
+ 24: "ID",
+ 25: "FORK",
+ 26: "JOIN",
+ 27: "CHOICE",
+ 28: "CONCURRENT",
+ 29: "note",
+ 31: "NOTE_TEXT",
+ 33: "acc_title",
+ 34: "acc_title_value",
+ 35: "acc_descr",
+ 36: "acc_descr_value",
+ 37: "acc_descr_multiline_value",
+ 38: "classDef",
+ 39: "CLASSDEF_ID",
+ 40: "CLASSDEF_STYLEOPTS",
+ 41: "DEFAULT",
+ 42: "class",
+ 43: "CLASSENTITY_IDS",
+ 44: "STYLECLASS",
+ 48: ":",
+ 50: "direction_tb",
+ 51: "direction_bt",
+ 52: "direction_rl",
+ 53: "direction_lr",
+ 55: ";",
+ 56: "EDGE_STATE",
+ 57: "STYLE_SEPARATOR",
+ 58: "left_of",
+ 59: "right_of",
+ 60: "open_directive",
+ 61: "type_directive",
+ 62: "arg_directive",
+ 63: "close_directive",
+ },
+ productions_: [
+ 0,
+ [3, 2],
+ [3, 2],
+ [3, 2],
+ [3, 2],
+ [8, 0],
+ [8, 2],
+ [9, 2],
+ [9, 1],
+ [9, 1],
+ [10, 1],
+ [10, 1],
+ [10, 1],
+ [10, 2],
+ [10, 3],
+ [10, 4],
+ [10, 1],
+ [10, 2],
+ [10, 1],
+ [10, 4],
+ [10, 3],
+ [10, 6],
+ [10, 1],
+ [10, 1],
+ [10, 1],
+ [10, 1],
+ [10, 4],
+ [10, 4],
+ [10, 1],
+ [10, 1],
+ [10, 2],
+ [10, 2],
+ [10, 1],
+ [11, 3],
+ [11, 3],
+ [12, 3],
+ [6, 3],
+ [6, 5],
+ [32, 1],
+ [32, 1],
+ [32, 1],
+ [32, 1],
+ [54, 1],
+ [54, 1],
+ [13, 1],
+ [13, 1],
+ [13, 3],
+ [13, 3],
+ [30, 1],
+ [30, 1],
+ [45, 1],
+ [46, 1],
+ [49, 1],
+ [47, 1],
+ ],
+ performAction: function (t, e, i, s, n, r, o) {
+ var a = r.length - 1;
+ switch (n) {
+ case 4:
+ return s.setRootDoc(r[a]), r[a];
+ case 5:
+ this.$ = [];
+ break;
+ case 6:
+ "nl" != r[a] && (r[a - 1].push(r[a]), (this.$ = r[a - 1]));
+ break;
+ case 7:
+ case 8:
+ case 12:
+ this.$ = r[a];
+ break;
+ case 9:
+ this.$ = "nl";
+ break;
+ case 13:
+ const t = r[a - 1];
+ (t.description = s.trimColon(r[a])), (this.$ = t);
+ break;
+ case 14:
+ this.$ = { stmt: "relation", state1: r[a - 2], state2: r[a] };
+ break;
+ case 15:
+ const e = s.trimColon(r[a]);
+ this.$ = {
+ stmt: "relation",
+ state1: r[a - 3],
+ state2: r[a - 1],
+ description: e,
+ };
+ break;
+ case 19:
+ this.$ = {
+ stmt: "state",
+ id: r[a - 3],
+ type: "default",
+ description: "",
+ doc: r[a - 1],
+ };
+ break;
+ case 20:
+ var c = r[a],
+ l = r[a - 2].trim();
+ if (r[a].match(":")) {
+ var h = r[a].split(":");
+ (c = h[0]), (l = [l, h[1]]);
+ }
+ this.$ = { stmt: "state", id: c, type: "default", description: l };
+ break;
+ case 21:
+ this.$ = {
+ stmt: "state",
+ id: r[a - 3],
+ type: "default",
+ description: r[a - 5],
+ doc: r[a - 1],
+ };
+ break;
+ case 22:
+ this.$ = { stmt: "state", id: r[a], type: "fork" };
+ break;
+ case 23:
+ this.$ = { stmt: "state", id: r[a], type: "join" };
+ break;
+ case 24:
+ this.$ = { stmt: "state", id: r[a], type: "choice" };
+ break;
+ case 25:
+ this.$ = { stmt: "state", id: s.getDividerId(), type: "divider" };
+ break;
+ case 26:
+ this.$ = {
+ stmt: "state",
+ id: r[a - 1].trim(),
+ note: { position: r[a - 2].trim(), text: r[a].trim() },
+ };
+ break;
+ case 30:
+ (this.$ = r[a].trim()), s.setAccTitle(this.$);
+ break;
+ case 31:
+ case 32:
+ (this.$ = r[a].trim()), s.setAccDescription(this.$);
+ break;
+ case 33:
+ case 34:
+ this.$ = { stmt: "classDef", id: r[a - 1].trim(), classes: r[a].trim() };
+ break;
+ case 35:
+ this.$ = { stmt: "applyClass", id: r[a - 1].trim(), styleClass: r[a].trim() };
+ break;
+ case 38:
+ s.setDirection("TB"), (this.$ = { stmt: "dir", value: "TB" });
+ break;
+ case 39:
+ s.setDirection("BT"), (this.$ = { stmt: "dir", value: "BT" });
+ break;
+ case 40:
+ s.setDirection("RL"), (this.$ = { stmt: "dir", value: "RL" });
+ break;
+ case 41:
+ s.setDirection("LR"), (this.$ = { stmt: "dir", value: "LR" });
+ break;
+ case 44:
+ case 45:
+ this.$ = { stmt: "state", id: r[a].trim(), type: "default", description: "" };
+ break;
+ case 46:
+ case 47:
+ this.$ = {
+ stmt: "state",
+ id: r[a - 2].trim(),
+ classes: [r[a].trim()],
+ type: "default",
+ description: "",
+ };
+ break;
+ case 50:
+ s.parseDirective("%%{", "open_directive");
+ break;
+ case 51:
+ s.parseDirective(r[a], "type_directive");
+ break;
+ case 52:
+ (r[a] = r[a].trim().replace(/'/g, '"')), s.parseDirective(r[a], "arg_directive");
+ break;
+ case 53:
+ s.parseDirective("}%%", "close_directive", "state");
+ }
+ },
+ table: [
+ { 3: 1, 4: e, 5: i, 6: 4, 7: s, 45: 6, 60: n },
+ { 1: [3] },
+ { 3: 8, 4: e, 5: i, 6: 4, 7: s, 45: 6, 60: n },
+ { 3: 9, 4: e, 5: i, 6: 4, 7: s, 45: 6, 60: n },
+ { 3: 10, 4: e, 5: i, 6: 4, 7: s, 45: 6, 60: n },
+ t([1, 4, 5, 16, 17, 19, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 50, 51, 52, 53, 56, 60], r, { 8: 11 }),
+ { 46: 12, 61: [1, 13] },
+ { 61: [2, 50] },
+ { 1: [2, 1] },
+ { 1: [2, 2] },
+ { 1: [2, 3] },
+ {
+ 1: [2, 4],
+ 4: o,
+ 5: a,
+ 6: 30,
+ 9: 14,
+ 10: 16,
+ 11: 18,
+ 12: 19,
+ 13: 20,
+ 16: c,
+ 17: l,
+ 19: h,
+ 22: u,
+ 24: d,
+ 25: p,
+ 26: y,
+ 27: f,
+ 28: g,
+ 29: m,
+ 32: 31,
+ 33: _,
+ 35: S,
+ 37: k,
+ 38: T,
+ 42: b,
+ 45: 6,
+ 50: E,
+ 51: v,
+ 52: x,
+ 53: D,
+ 56: C,
+ 60: n,
+ },
+ { 47: 43, 48: [1, 44], 63: $ },
+ t([48, 63], [2, 51]),
+ t(A, [2, 6]),
+ {
+ 6: 30,
+ 10: 46,
+ 11: 18,
+ 12: 19,
+ 13: 20,
+ 16: c,
+ 17: l,
+ 19: h,
+ 22: u,
+ 24: d,
+ 25: p,
+ 26: y,
+ 27: f,
+ 28: g,
+ 29: m,
+ 32: 31,
+ 33: _,
+ 35: S,
+ 37: k,
+ 38: T,
+ 42: b,
+ 45: 6,
+ 50: E,
+ 51: v,
+ 52: x,
+ 53: D,
+ 56: C,
+ 60: n,
+ },
+ t(A, [2, 8]),
+ t(A, [2, 9]),
+ t(A, [2, 10]),
+ t(A, [2, 11]),
+ t(A, [2, 12], { 14: [1, 47], 15: [1, 48] }),
+ t(A, [2, 16]),
+ { 18: [1, 49] },
+ t(A, [2, 18], { 20: [1, 50] }),
+ { 23: [1, 51] },
+ t(A, [2, 22]),
+ t(A, [2, 23]),
+ t(A, [2, 24]),
+ t(A, [2, 25]),
+ { 30: 52, 31: [1, 53], 58: [1, 54], 59: [1, 55] },
+ t(A, [2, 28]),
+ t(A, [2, 29]),
+ { 34: [1, 56] },
+ { 36: [1, 57] },
+ t(A, [2, 32]),
+ { 39: [1, 58], 41: [1, 59] },
+ { 43: [1, 60] },
+ t(L, [2, 44], { 57: [1, 61] }),
+ t(L, [2, 45], { 57: [1, 62] }),
+ t(A, [2, 38]),
+ t(A, [2, 39]),
+ t(A, [2, 40]),
+ t(A, [2, 41]),
+ t(I, [2, 36]),
+ { 49: 63, 62: [1, 64] },
+ t(I, [2, 53]),
+ t(A, [2, 7]),
+ t(A, [2, 13]),
+ { 13: 65, 24: d, 56: C },
+ t(A, [2, 17]),
+ t(O, r, { 8: 66 }),
+ { 24: [1, 67] },
+ { 24: [1, 68] },
+ { 23: [1, 69] },
+ { 24: [2, 48] },
+ { 24: [2, 49] },
+ t(A, [2, 30]),
+ t(A, [2, 31]),
+ { 40: [1, 70] },
+ { 40: [1, 71] },
+ { 44: [1, 72] },
+ { 24: [1, 73] },
+ { 24: [1, 74] },
+ { 47: 75, 63: $ },
+ { 63: [2, 52] },
+ t(A, [2, 14], { 14: [1, 76] }),
+ {
+ 4: o,
+ 5: a,
+ 6: 30,
+ 9: 14,
+ 10: 16,
+ 11: 18,
+ 12: 19,
+ 13: 20,
+ 16: c,
+ 17: l,
+ 19: h,
+ 21: [1, 77],
+ 22: u,
+ 24: d,
+ 25: p,
+ 26: y,
+ 27: f,
+ 28: g,
+ 29: m,
+ 32: 31,
+ 33: _,
+ 35: S,
+ 37: k,
+ 38: T,
+ 42: b,
+ 45: 6,
+ 50: E,
+ 51: v,
+ 52: x,
+ 53: D,
+ 56: C,
+ 60: n,
+ },
+ t(A, [2, 20], { 20: [1, 78] }),
+ { 31: [1, 79] },
+ { 24: [1, 80] },
+ t(A, [2, 33]),
+ t(A, [2, 34]),
+ t(A, [2, 35]),
+ t(L, [2, 46]),
+ t(L, [2, 47]),
+ t(I, [2, 37]),
+ t(A, [2, 15]),
+ t(A, [2, 19]),
+ t(O, r, { 8: 81 }),
+ t(A, [2, 26]),
+ t(A, [2, 27]),
+ {
+ 4: o,
+ 5: a,
+ 6: 30,
+ 9: 14,
+ 10: 16,
+ 11: 18,
+ 12: 19,
+ 13: 20,
+ 16: c,
+ 17: l,
+ 19: h,
+ 21: [1, 82],
+ 22: u,
+ 24: d,
+ 25: p,
+ 26: y,
+ 27: f,
+ 28: g,
+ 29: m,
+ 32: 31,
+ 33: _,
+ 35: S,
+ 37: k,
+ 38: T,
+ 42: b,
+ 45: 6,
+ 50: E,
+ 51: v,
+ 52: x,
+ 53: D,
+ 56: C,
+ 60: n,
+ },
+ t(A, [2, 21]),
+ ],
+ defaultActions: {
+ 7: [2, 50],
+ 8: [2, 1],
+ 9: [2, 2],
+ 10: [2, 3],
+ 54: [2, 48],
+ 55: [2, 49],
+ 64: [2, 52],
+ },
+ parseError: function (t, e) {
+ if (!e.recoverable) {
+ var i = new Error(t);
+ throw ((i.hash = e), i);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var e = [0],
+ i = [],
+ s = [null],
+ n = [],
+ r = this.table,
+ o = "",
+ a = 0,
+ c = 0,
+ l = n.slice.call(arguments, 1),
+ h = Object.create(this.lexer),
+ u = { yy: {} };
+ for (var d in this.yy) Object.prototype.hasOwnProperty.call(this.yy, d) && (u.yy[d] = this.yy[d]);
+ h.setInput(t, u.yy), (u.yy.lexer = h), (u.yy.parser = this), void 0 === h.yylloc && (h.yylloc = {});
+ var p = h.yylloc;
+ n.push(p);
+ var y = h.options && h.options.ranges;
+ "function" == typeof u.yy.parseError
+ ? (this.parseError = u.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var f, g, m, _, S, k, T, b, E, v = {}; ; ) {
+ if (
+ ((g = e[e.length - 1]),
+ this.defaultActions[g]
+ ? (m = this.defaultActions[g])
+ : (null == f &&
+ ((E = void 0),
+ "number" != typeof (E = i.pop() || h.lex() || 1) &&
+ (E instanceof Array && (E = (i = E).pop()), (E = this.symbols_[E] || E)),
+ (f = E)),
+ (m = r[g] && r[g][f])),
+ void 0 === m || !m.length || !m[0])
+ ) {
+ var x;
+ for (S in ((b = []), r[g])) this.terminals_[S] && S > 2 && b.push("'" + this.terminals_[S] + "'");
+ (x = h.showPosition
+ ? "Parse error on line " +
+ (a + 1) +
+ ":\n" +
+ h.showPosition() +
+ "\nExpecting " +
+ b.join(", ") +
+ ", got '" +
+ (this.terminals_[f] || f) +
+ "'"
+ : "Parse error on line " + (a + 1) + ": Unexpected " + (1 == f ? "end of input" : "'" + (this.terminals_[f] || f) + "'")),
+ this.parseError(x, {
+ text: h.match,
+ token: this.terminals_[f] || f,
+ line: h.yylineno,
+ loc: p,
+ expected: b,
+ });
+ }
+ if (m[0] instanceof Array && m.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + g + ", token: " + f);
+ switch (m[0]) {
+ case 1:
+ e.push(f),
+ s.push(h.yytext),
+ n.push(h.yylloc),
+ e.push(m[1]),
+ (f = null),
+ (c = h.yyleng),
+ (o = h.yytext),
+ (a = h.yylineno),
+ (p = h.yylloc);
+ break;
+ case 2:
+ if (
+ ((k = this.productions_[m[1]][1]),
+ (v.$ = s[s.length - k]),
+ (v._$ = {
+ first_line: n[n.length - (k || 1)].first_line,
+ last_line: n[n.length - 1].last_line,
+ first_column: n[n.length - (k || 1)].first_column,
+ last_column: n[n.length - 1].last_column,
+ }),
+ y && (v._$.range = [n[n.length - (k || 1)].range[0], n[n.length - 1].range[1]]),
+ void 0 !== (_ = this.performAction.apply(v, [o, c, a, u.yy, m[1], s, n].concat(l))))
+ )
+ return _;
+ k && ((e = e.slice(0, -1 * k * 2)), (s = s.slice(0, -1 * k)), (n = n.slice(0, -1 * k))),
+ e.push(this.productions_[m[1]][0]),
+ s.push(v.$),
+ n.push(v._$),
+ (T = r[e[e.length - 2]][e[e.length - 1]]),
+ e.push(T);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ R = {
+ EOF: 1,
+ parseError: function (t, e) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, e);
+ },
+ setInput: function (t, e) {
+ return (
+ (this.yy = e || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var e = t.length,
+ i = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - e)), (this.offset -= e);
+ var s = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ i.length - 1 && (this.yylineno -= i.length - 1);
+ var n = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: i
+ ? (i.length === s.length ? this.yylloc.first_column : 0) + s[s.length - i.length].length - i[0].length
+ : this.yylloc.first_column - e,
+ }),
+ this.options.ranges && (this.yylloc.range = [n[0], n[0] + this.yyleng - e]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ e = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + e + "^";
+ },
+ test_match: function (t, e) {
+ var i, s, n;
+ if (
+ (this.options.backtrack_lexer &&
+ ((n = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (n.yylloc.range = this.yylloc.range.slice(0))),
+ (s = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += s.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: s ? s[s.length - 1].length - s[s.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (i = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ i)
+ )
+ return i;
+ if (this._backtrack) {
+ for (var r in n) this[r] = n[r];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, e, i, s;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var n = this._currentRules(), r = 0; r < n.length; r++)
+ if ((i = this._input.match(this.rules[n[r]])) && (!e || i[0].length > e[0].length)) {
+ if (((e = i), (s = r), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(i, n[r]))) return t;
+ if (this._backtrack) {
+ e = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return e
+ ? !1 !== (t = this.test_match(e, n[s])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { "case-insensitive": !0 },
+ performAction: function (t, e, i, s) {
+ switch (i) {
+ case 0:
+ return 41;
+ case 1:
+ case 44:
+ return 50;
+ case 2:
+ case 45:
+ return 51;
+ case 3:
+ case 46:
+ return 52;
+ case 4:
+ case 47:
+ return 53;
+ case 5:
+ return this.begin("open_directive"), 60;
+ case 6:
+ return this.begin("type_directive"), 61;
+ case 7:
+ return this.popState(), this.begin("arg_directive"), 48;
+ case 8:
+ return this.popState(), this.popState(), 63;
+ case 9:
+ return 62;
+ case 10:
+ case 11:
+ case 13:
+ case 14:
+ case 15:
+ case 16:
+ case 56:
+ case 58:
+ case 64:
+ break;
+ case 12:
+ case 79:
+ return 5;
+ case 17:
+ case 34:
+ return this.pushState("SCALE"), 17;
+ case 18:
+ case 35:
+ return 18;
+ case 19:
+ case 25:
+ case 36:
+ case 51:
+ case 54:
+ this.popState();
+ break;
+ case 20:
+ return this.begin("acc_title"), 33;
+ case 21:
+ return this.popState(), "acc_title_value";
+ case 22:
+ return this.begin("acc_descr"), 35;
+ case 23:
+ return this.popState(), "acc_descr_value";
+ case 24:
+ this.begin("acc_descr_multiline");
+ break;
+ case 26:
+ return "acc_descr_multiline_value";
+ case 27:
+ return this.pushState("CLASSDEF"), 38;
+ case 28:
+ return this.popState(), this.pushState("CLASSDEFID"), "DEFAULT_CLASSDEF_ID";
+ case 29:
+ return this.popState(), this.pushState("CLASSDEFID"), 39;
+ case 30:
+ return this.popState(), 40;
+ case 31:
+ return this.pushState("CLASS"), 42;
+ case 32:
+ return this.popState(), this.pushState("CLASS_STYLE"), 43;
+ case 33:
+ return this.popState(), 44;
+ case 37:
+ this.pushState("STATE");
+ break;
+ case 38:
+ case 41:
+ return this.popState(), (e.yytext = e.yytext.slice(0, -8).trim()), 25;
+ case 39:
+ case 42:
+ return this.popState(), (e.yytext = e.yytext.slice(0, -8).trim()), 26;
+ case 40:
+ case 43:
+ return this.popState(), (e.yytext = e.yytext.slice(0, -10).trim()), 27;
+ case 48:
+ this.pushState("STATE_STRING");
+ break;
+ case 49:
+ return this.pushState("STATE_ID"), "AS";
+ case 50:
+ case 66:
+ return this.popState(), "ID";
+ case 52:
+ return "STATE_DESCR";
+ case 53:
+ return 19;
+ case 55:
+ return this.popState(), this.pushState("struct"), 20;
+ case 57:
+ return this.popState(), 21;
+ case 59:
+ return this.begin("NOTE"), 29;
+ case 60:
+ return this.popState(), this.pushState("NOTE_ID"), 58;
+ case 61:
+ return this.popState(), this.pushState("NOTE_ID"), 59;
+ case 62:
+ this.popState(), this.pushState("FLOATING_NOTE");
+ break;
+ case 63:
+ return this.popState(), this.pushState("FLOATING_NOTE_ID"), "AS";
+ case 65:
+ return "NOTE_TEXT";
+ case 67:
+ return this.popState(), this.pushState("NOTE_TEXT"), 24;
+ case 68:
+ return this.popState(), (e.yytext = e.yytext.substr(2).trim()), 31;
+ case 69:
+ return this.popState(), (e.yytext = e.yytext.slice(0, -8).trim()), 31;
+ case 70:
+ case 71:
+ return 7;
+ case 72:
+ return 16;
+ case 73:
+ return 56;
+ case 74:
+ return 24;
+ case 75:
+ return (e.yytext = e.yytext.trim()), 14;
+ case 76:
+ return 15;
+ case 77:
+ return 28;
+ case 78:
+ return 57;
+ case 80:
+ return "INVALID";
+ }
+ },
+ rules: [
+ /^(?:default\b)/i,
+ /^(?:.*direction\s+TB[^\n]*)/i,
+ /^(?:.*direction\s+BT[^\n]*)/i,
+ /^(?:.*direction\s+RL[^\n]*)/i,
+ /^(?:.*direction\s+LR[^\n]*)/i,
+ /^(?:%%\{)/i,
+ /^(?:((?:(?!\}%%)[^:.])*))/i,
+ /^(?::)/i,
+ /^(?:\}%%)/i,
+ /^(?:((?:(?!\}%%).|\n)*))/i,
+ /^(?:%%(?!\{)[^\n]*)/i,
+ /^(?:[^\}]%%[^\n]*)/i,
+ /^(?:[\n]+)/i,
+ /^(?:[\s]+)/i,
+ /^(?:((?!\n)\s)+)/i,
+ /^(?:#[^\n]*)/i,
+ /^(?:%[^\n]*)/i,
+ /^(?:scale\s+)/i,
+ /^(?:\d+)/i,
+ /^(?:\s+width\b)/i,
+ /^(?:accTitle\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*\{\s*)/i,
+ /^(?:[\}])/i,
+ /^(?:[^\}]*)/i,
+ /^(?:classDef\s+)/i,
+ /^(?:DEFAULT\s+)/i,
+ /^(?:\w+\s+)/i,
+ /^(?:[^\n]*)/i,
+ /^(?:class\s+)/i,
+ /^(?:(\w+)+((,\s*\w+)*))/i,
+ /^(?:[^\n]*)/i,
+ /^(?:scale\s+)/i,
+ /^(?:\d+)/i,
+ /^(?:\s+width\b)/i,
+ /^(?:state\s+)/i,
+ /^(?:.*<>)/i,
+ /^(?:.*<>)/i,
+ /^(?:.*<>)/i,
+ /^(?:.*\[\[fork\]\])/i,
+ /^(?:.*\[\[join\]\])/i,
+ /^(?:.*\[\[choice\]\])/i,
+ /^(?:.*direction\s+TB[^\n]*)/i,
+ /^(?:.*direction\s+BT[^\n]*)/i,
+ /^(?:.*direction\s+RL[^\n]*)/i,
+ /^(?:.*direction\s+LR[^\n]*)/i,
+ /^(?:["])/i,
+ /^(?:\s*as\s+)/i,
+ /^(?:[^\n\{]*)/i,
+ /^(?:["])/i,
+ /^(?:[^"]*)/i,
+ /^(?:[^\n\s\{]+)/i,
+ /^(?:\n)/i,
+ /^(?:\{)/i,
+ /^(?:%%(?!\{)[^\n]*)/i,
+ /^(?:\})/i,
+ /^(?:[\n])/i,
+ /^(?:note\s+)/i,
+ /^(?:left of\b)/i,
+ /^(?:right of\b)/i,
+ /^(?:")/i,
+ /^(?:\s*as\s*)/i,
+ /^(?:["])/i,
+ /^(?:[^"]*)/i,
+ /^(?:[^\n]*)/i,
+ /^(?:\s*[^:\n\s\-]+)/i,
+ /^(?:\s*:[^:\n;]+)/i,
+ /^(?:[\s\S]*?end note\b)/i,
+ /^(?:stateDiagram\s+)/i,
+ /^(?:stateDiagram-v2\s+)/i,
+ /^(?:hide empty description\b)/i,
+ /^(?:\[\*\])/i,
+ /^(?:[^:\n\s\-\{]+)/i,
+ /^(?:\s*:[^:\n;]+)/i,
+ /^(?:-->)/i,
+ /^(?:--)/i,
+ /^(?::::)/i,
+ /^(?:$)/i,
+ /^(?:.)/i,
+ ],
+ conditions: {
+ LINE: { rules: [14, 15], inclusive: !1 },
+ close_directive: { rules: [14, 15], inclusive: !1 },
+ arg_directive: { rules: [8, 9, 14, 15], inclusive: !1 },
+ type_directive: { rules: [7, 8, 14, 15], inclusive: !1 },
+ open_directive: { rules: [6, 14, 15], inclusive: !1 },
+ struct: {
+ rules: [14, 15, 27, 31, 37, 44, 45, 46, 47, 56, 57, 58, 59, 73, 74, 75, 76, 77],
+ inclusive: !1,
+ },
+ FLOATING_NOTE_ID: { rules: [66], inclusive: !1 },
+ FLOATING_NOTE: { rules: [63, 64, 65], inclusive: !1 },
+ NOTE_TEXT: { rules: [68, 69], inclusive: !1 },
+ NOTE_ID: { rules: [67], inclusive: !1 },
+ NOTE: { rules: [60, 61, 62], inclusive: !1 },
+ CLASS_STYLE: { rules: [33], inclusive: !1 },
+ CLASS: { rules: [32], inclusive: !1 },
+ CLASSDEFID: { rules: [30], inclusive: !1 },
+ CLASSDEF: { rules: [28, 29], inclusive: !1 },
+ acc_descr_multiline: { rules: [25, 26], inclusive: !1 },
+ acc_descr: { rules: [23], inclusive: !1 },
+ acc_title: { rules: [21], inclusive: !1 },
+ SCALE: { rules: [18, 19, 35, 36], inclusive: !1 },
+ ALIAS: { rules: [], inclusive: !1 },
+ STATE_ID: { rules: [50], inclusive: !1 },
+ STATE_STRING: { rules: [51, 52], inclusive: !1 },
+ FORK_STATE: { rules: [], inclusive: !1 },
+ STATE: {
+ rules: [14, 15, 38, 39, 40, 41, 42, 43, 48, 49, 53, 54, 55],
+ inclusive: !1,
+ },
+ ID: { rules: [14, 15], inclusive: !1 },
+ INITIAL: {
+ rules: [0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 15, 16, 17, 20, 22, 24, 27, 31, 34, 37, 55, 59, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80],
+ inclusive: !0,
+ },
+ },
+ };
+ function w() {
+ this.yy = {};
+ }
+ return (N.lexer = R), (w.prototype = N), (N.Parser = w), new w();
+ })();
+ n.parser = n;
+ const r = n,
+ o = "TB",
+ a = "state",
+ c = "relation",
+ l = "default",
+ h = "divider",
+ u = "[*]",
+ d = "start",
+ p = u,
+ y = "color",
+ f = "fill";
+ let g = "LR",
+ m = [],
+ _ = {},
+ S = { root: { relations: [], states: {}, documents: {} } },
+ k = S.root,
+ T = 0,
+ b = 0;
+ const E = (t) => JSON.parse(JSON.stringify(t)),
+ v = (t, e, i) => {
+ if (e.stmt === c) v(t, e.state1, !0), v(t, e.state2, !1);
+ else if ((e.stmt === a && ("[*]" === e.id ? ((e.id = i ? t.id + "_start" : t.id + "_end"), (e.start = i)) : (e.id = e.id.trim())), e.doc)) {
+ const t = [];
+ let i,
+ n = [];
+ for (i = 0; i < e.doc.length; i++)
+ if (e.doc[i].type === h) {
+ const s = E(e.doc[i]);
+ (s.doc = E(n)), t.push(s), (n = []);
+ } else n.push(e.doc[i]);
+ if (t.length > 0 && n.length > 0) {
+ const i = { stmt: a, id: (0, s.I)(), type: "divider", doc: E(n) };
+ t.push(E(i)), (e.doc = t);
+ }
+ e.doc.forEach((t) => v(e, t, !0));
+ }
+ },
+ x = function (t, e = l, i = null, n = null, r = null, o = null, a = null, c = null) {
+ const h = null == t ? void 0 : t.trim();
+ void 0 === k.states[h]
+ ? (s.l.info("Adding state ", h, n),
+ (k.states[h] = {
+ id: h,
+ descriptions: [],
+ type: e,
+ doc: i,
+ note: r,
+ classes: [],
+ styles: [],
+ textStyles: [],
+ }))
+ : (k.states[h].doc || (k.states[h].doc = i), k.states[h].type || (k.states[h].type = e)),
+ n &&
+ (s.l.info("Setting state description", h, n),
+ "string" == typeof n && I(h, n.trim()),
+ "object" == typeof n && n.forEach((t) => I(h, t.trim()))),
+ r && ((k.states[h].note = r), (k.states[h].note.text = s.e.sanitizeText(k.states[h].note.text, (0, s.c)()))),
+ o && (s.l.info("Setting state classes", h, o), ("string" == typeof o ? [o] : o).forEach((t) => N(h, t.trim()))),
+ a && (s.l.info("Setting state styles", h, a), ("string" == typeof a ? [a] : a).forEach((t) => R(h, t.trim()))),
+ c && (s.l.info("Setting state styles", h, a), ("string" == typeof c ? [c] : c).forEach((t) => w(h, t.trim())));
+ },
+ D = function (t) {
+ (S = { root: { relations: [], states: {}, documents: {} } }), (k = S.root), (T = 0), (_ = {}), t || (0, s.v)();
+ },
+ C = function (t) {
+ return k.states[t];
+ };
+ function $(t = "") {
+ let e = t;
+ return t === u && (T++, (e = `${d}${T}`)), e;
+ }
+ function A(t = "", e = l) {
+ return t === u ? d : e;
+ }
+ const L = function (t, e, i) {
+ if ("object" == typeof t)
+ !(function (t, e, i) {
+ let n = $(t.id.trim()),
+ r = A(t.id.trim(), t.type),
+ o = $(e.id.trim()),
+ a = A(e.id.trim(), e.type);
+ x(n, r, t.doc, t.description, t.note, t.classes, t.styles, t.textStyles),
+ x(o, a, e.doc, e.description, e.note, e.classes, e.styles, e.textStyles),
+ k.relations.push({
+ id1: n,
+ id2: o,
+ relationTitle: s.e.sanitizeText(i, (0, s.c)()),
+ });
+ })(t, e, i);
+ else {
+ const n = $(t.trim()),
+ r = A(t),
+ o = (function (t = "") {
+ let e = t;
+ return t === p && (T++, (e = `end${T}`)), e;
+ })(e.trim()),
+ a = (function (t = "", e = l) {
+ return t === p ? "end" : e;
+ })(e);
+ x(n, r), x(o, a), k.relations.push({ id1: n, id2: o, title: s.e.sanitizeText(i, (0, s.c)()) });
+ }
+ },
+ I = function (t, e) {
+ const i = k.states[t],
+ n = e.startsWith(":") ? e.replace(":", "").trim() : e;
+ i.descriptions.push(s.e.sanitizeText(n, (0, s.c)()));
+ },
+ O = function (t, e = "") {
+ void 0 === _[t] && (_[t] = { id: t, styles: [], textStyles: [] });
+ const i = _[t];
+ null != e &&
+ e.split(",").forEach((t) => {
+ const e = t.replace(/([^;]*);/, "$1").trim();
+ if (t.match(y)) {
+ const t = e.replace(f, "bgFill").replace(y, f);
+ i.textStyles.push(t);
+ }
+ i.styles.push(e);
+ });
+ },
+ N = function (t, e) {
+ t.split(",").forEach(function (t) {
+ let i = C(t);
+ if (void 0 === i) {
+ const e = t.trim();
+ x(e), (i = C(e));
+ }
+ i.classes.push(e);
+ });
+ },
+ R = function (t, e) {
+ const i = C(t);
+ void 0 !== i && i.textStyles.push(e);
+ },
+ w = function (t, e) {
+ const i = C(t);
+ void 0 !== i && i.textStyles.push(e);
+ },
+ B = {
+ parseDirective: function (t, e, i) {
+ s.m.parseDirective(this, t, e, i);
+ },
+ getConfig: () => (0, s.c)().state,
+ addState: x,
+ clear: D,
+ getState: C,
+ getStates: function () {
+ return k.states;
+ },
+ getRelations: function () {
+ return k.relations;
+ },
+ getClasses: function () {
+ return _;
+ },
+ getDirection: () => g,
+ addRelation: L,
+ getDividerId: () => (b++, "divider-id-" + b),
+ setDirection: (t) => {
+ g = t;
+ },
+ cleanupLabel: function (t) {
+ return ":" === t.substring(0, 1) ? t.substr(2).trim() : t.trim();
+ },
+ lineType: { LINE: 0, DOTTED_LINE: 1 },
+ relationType: { AGGREGATION: 0, EXTENSION: 1, COMPOSITION: 2, DEPENDENCY: 3 },
+ logDocuments: function () {
+ s.l.info("Documents = ", S);
+ },
+ getRootDoc: () => m,
+ setRootDoc: (t) => {
+ s.l.info("Setting root doc", t), (m = t);
+ },
+ getRootDocV2: () => (v({ id: "root" }, { id: "root", doc: m }, !0), { id: "root", doc: m }),
+ extract: (t) => {
+ let e;
+ (e = t.doc ? t.doc : t),
+ s.l.info(e),
+ D(!0),
+ s.l.info("Extract", e),
+ e.forEach((t) => {
+ switch (t.stmt) {
+ case a:
+ x(t.id.trim(), t.type, t.doc, t.description, t.note, t.classes, t.styles, t.textStyles);
+ break;
+ case c:
+ L(t.state1, t.state2, t.description);
+ break;
+ case "classDef":
+ O(t.id.trim(), t.classes);
+ break;
+ case "applyClass":
+ N(t.id.trim(), t.styleClass);
+ }
+ });
+ },
+ trimColon: (t) => (t && ":" === t[0] ? t.substr(1).trim() : t.trim()),
+ getAccTitle: s.g,
+ setAccTitle: s.s,
+ getAccDescription: s.a,
+ setAccDescription: s.b,
+ addStyleClass: O,
+ setCssClass: N,
+ addDescription: I,
+ setDiagramTitle: s.r,
+ getDiagramTitle: s.t,
+ },
+ P = (t) =>
+ `\ndefs #statediagram-barbEnd {\n fill: ${t.transitionColor};\n stroke: ${t.transitionColor};\n }\ng.stateGroup text {\n fill: ${t.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${t.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${t.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${t.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${t.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n\n text {\n fill: ${t.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${t.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel .label text {\n fill: ${t.transitionLabelColor || t.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${t.transitionLabelColor || t.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${t.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${t.innerEndBackground};\n stroke: ${t.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${t.compositeBackground || t.background};\n // stroke: ${t.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${t.stateBkg || t.mainBkg};\n stroke: ${t.stateBorder || t.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${t.mainBkg};\n stroke: ${t.stateBorder || t.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${t.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${t.compositeTitleBackground};\n stroke: ${t.stateBorder || t.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${t.stateLabelColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${t.stateBorder || t.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${t.compositeBackground || t.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${t.altBackground ? t.altBackground : "#efefef"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${t.altBackground ? t.altBackground : "#efefef"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${t.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${t.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${t.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${t.lineColor};\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n`;
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/545-8e970b03.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/545-8e970b03.chunk.min.js
new file mode 100644
index 000000000..aff23f83f
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/545-8e970b03.chunk.min.js
@@ -0,0 +1,3019 @@
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [545],
+ {
+ 4545: function (t, e, n) {
+ n.d(e, {
+ diagram: function () {
+ return Q;
+ },
+ });
+ var i = n(9339),
+ a = n(7274),
+ s = n(8252),
+ r = n(7967),
+ l =
+ (n(7484),
+ n(7856),
+ (function () {
+ var t = function (t, e, n, i) {
+ for (n = n || {}, i = t.length; i--; n[t[i]] = e);
+ return n;
+ },
+ e = [1, 6],
+ n = [1, 7],
+ i = [1, 8],
+ a = [1, 9],
+ s = [1, 16],
+ r = [1, 11],
+ l = [1, 12],
+ o = [1, 13],
+ h = [1, 14],
+ d = [1, 15],
+ u = [1, 27],
+ p = [1, 33],
+ y = [1, 34],
+ f = [1, 35],
+ b = [1, 36],
+ g = [1, 37],
+ _ = [1, 72],
+ x = [1, 73],
+ m = [1, 74],
+ E = [1, 75],
+ A = [1, 76],
+ S = [1, 77],
+ v = [1, 78],
+ C = [1, 38],
+ k = [1, 39],
+ O = [1, 40],
+ T = [1, 41],
+ w = [1, 42],
+ D = [1, 43],
+ R = [1, 44],
+ N = [1, 45],
+ P = [1, 46],
+ M = [1, 47],
+ j = [1, 48],
+ B = [1, 49],
+ Y = [1, 50],
+ L = [1, 51],
+ I = [1, 52],
+ U = [1, 53],
+ F = [1, 54],
+ X = [1, 55],
+ z = [1, 56],
+ Q = [1, 57],
+ W = [1, 59],
+ $ = [1, 60],
+ q = [1, 61],
+ V = [1, 62],
+ G = [1, 63],
+ H = [1, 64],
+ K = [1, 65],
+ J = [1, 66],
+ Z = [1, 67],
+ tt = [1, 68],
+ et = [1, 69],
+ nt = [24, 52],
+ it = [
+ 24, 44, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84,
+ ],
+ at = [
+ 15, 24, 44, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84,
+ ],
+ st = [1, 94],
+ rt = [1, 95],
+ lt = [1, 96],
+ ot = [1, 97],
+ ct = [15, 24, 52],
+ ht = [7, 8, 9, 10, 18, 22, 25, 26, 27, 28],
+ dt = [15, 24, 43, 52],
+ ut = [15, 24, 43, 52, 86, 87, 89, 90],
+ pt = [15, 43],
+ yt = [
+ 44, 46, 47, 48, 49, 50, 51, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84,
+ ],
+ ft = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ mermaidDoc: 4,
+ direction: 5,
+ directive: 6,
+ direction_tb: 7,
+ direction_bt: 8,
+ direction_rl: 9,
+ direction_lr: 10,
+ graphConfig: 11,
+ openDirective: 12,
+ typeDirective: 13,
+ closeDirective: 14,
+ NEWLINE: 15,
+ ":": 16,
+ argDirective: 17,
+ open_directive: 18,
+ type_directive: 19,
+ arg_directive: 20,
+ close_directive: 21,
+ C4_CONTEXT: 22,
+ statements: 23,
+ EOF: 24,
+ C4_CONTAINER: 25,
+ C4_COMPONENT: 26,
+ C4_DYNAMIC: 27,
+ C4_DEPLOYMENT: 28,
+ otherStatements: 29,
+ diagramStatements: 30,
+ otherStatement: 31,
+ title: 32,
+ accDescription: 33,
+ acc_title: 34,
+ acc_title_value: 35,
+ acc_descr: 36,
+ acc_descr_value: 37,
+ acc_descr_multiline_value: 38,
+ boundaryStatement: 39,
+ boundaryStartStatement: 40,
+ boundaryStopStatement: 41,
+ boundaryStart: 42,
+ LBRACE: 43,
+ ENTERPRISE_BOUNDARY: 44,
+ attributes: 45,
+ SYSTEM_BOUNDARY: 46,
+ BOUNDARY: 47,
+ CONTAINER_BOUNDARY: 48,
+ NODE: 49,
+ NODE_L: 50,
+ NODE_R: 51,
+ RBRACE: 52,
+ diagramStatement: 53,
+ PERSON: 54,
+ PERSON_EXT: 55,
+ SYSTEM: 56,
+ SYSTEM_DB: 57,
+ SYSTEM_QUEUE: 58,
+ SYSTEM_EXT: 59,
+ SYSTEM_EXT_DB: 60,
+ SYSTEM_EXT_QUEUE: 61,
+ CONTAINER: 62,
+ CONTAINER_DB: 63,
+ CONTAINER_QUEUE: 64,
+ CONTAINER_EXT: 65,
+ CONTAINER_EXT_DB: 66,
+ CONTAINER_EXT_QUEUE: 67,
+ COMPONENT: 68,
+ COMPONENT_DB: 69,
+ COMPONENT_QUEUE: 70,
+ COMPONENT_EXT: 71,
+ COMPONENT_EXT_DB: 72,
+ COMPONENT_EXT_QUEUE: 73,
+ REL: 74,
+ BIREL: 75,
+ REL_U: 76,
+ REL_D: 77,
+ REL_L: 78,
+ REL_R: 79,
+ REL_B: 80,
+ REL_INDEX: 81,
+ UPDATE_EL_STYLE: 82,
+ UPDATE_REL_STYLE: 83,
+ UPDATE_LAYOUT_CONFIG: 84,
+ attribute: 85,
+ STR: 86,
+ STR_KEY: 87,
+ STR_VALUE: 88,
+ ATTRIBUTE: 89,
+ ATTRIBUTE_EMPTY: 90,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 7: "direction_tb",
+ 8: "direction_bt",
+ 9: "direction_rl",
+ 10: "direction_lr",
+ 15: "NEWLINE",
+ 16: ":",
+ 18: "open_directive",
+ 19: "type_directive",
+ 20: "arg_directive",
+ 21: "close_directive",
+ 22: "C4_CONTEXT",
+ 24: "EOF",
+ 25: "C4_CONTAINER",
+ 26: "C4_COMPONENT",
+ 27: "C4_DYNAMIC",
+ 28: "C4_DEPLOYMENT",
+ 32: "title",
+ 33: "accDescription",
+ 34: "acc_title",
+ 35: "acc_title_value",
+ 36: "acc_descr",
+ 37: "acc_descr_value",
+ 38: "acc_descr_multiline_value",
+ 43: "LBRACE",
+ 44: "ENTERPRISE_BOUNDARY",
+ 46: "SYSTEM_BOUNDARY",
+ 47: "BOUNDARY",
+ 48: "CONTAINER_BOUNDARY",
+ 49: "NODE",
+ 50: "NODE_L",
+ 51: "NODE_R",
+ 52: "RBRACE",
+ 54: "PERSON",
+ 55: "PERSON_EXT",
+ 56: "SYSTEM",
+ 57: "SYSTEM_DB",
+ 58: "SYSTEM_QUEUE",
+ 59: "SYSTEM_EXT",
+ 60: "SYSTEM_EXT_DB",
+ 61: "SYSTEM_EXT_QUEUE",
+ 62: "CONTAINER",
+ 63: "CONTAINER_DB",
+ 64: "CONTAINER_QUEUE",
+ 65: "CONTAINER_EXT",
+ 66: "CONTAINER_EXT_DB",
+ 67: "CONTAINER_EXT_QUEUE",
+ 68: "COMPONENT",
+ 69: "COMPONENT_DB",
+ 70: "COMPONENT_QUEUE",
+ 71: "COMPONENT_EXT",
+ 72: "COMPONENT_EXT_DB",
+ 73: "COMPONENT_EXT_QUEUE",
+ 74: "REL",
+ 75: "BIREL",
+ 76: "REL_U",
+ 77: "REL_D",
+ 78: "REL_L",
+ 79: "REL_R",
+ 80: "REL_B",
+ 81: "REL_INDEX",
+ 82: "UPDATE_EL_STYLE",
+ 83: "UPDATE_REL_STYLE",
+ 84: "UPDATE_LAYOUT_CONFIG",
+ 86: "STR",
+ 87: "STR_KEY",
+ 88: "STR_VALUE",
+ 89: "ATTRIBUTE",
+ 90: "ATTRIBUTE_EMPTY",
+ },
+ productions_: [
+ 0,
+ [3, 1],
+ [3, 1],
+ [3, 2],
+ [5, 1],
+ [5, 1],
+ [5, 1],
+ [5, 1],
+ [4, 1],
+ [6, 4],
+ [6, 6],
+ [12, 1],
+ [13, 1],
+ [17, 1],
+ [14, 1],
+ [11, 4],
+ [11, 4],
+ [11, 4],
+ [11, 4],
+ [11, 4],
+ [23, 1],
+ [23, 1],
+ [23, 2],
+ [29, 1],
+ [29, 2],
+ [29, 3],
+ [31, 1],
+ [31, 1],
+ [31, 2],
+ [31, 2],
+ [31, 1],
+ [39, 3],
+ [40, 3],
+ [40, 3],
+ [40, 4],
+ [42, 2],
+ [42, 2],
+ [42, 2],
+ [42, 2],
+ [42, 2],
+ [42, 2],
+ [42, 2],
+ [41, 1],
+ [30, 1],
+ [30, 2],
+ [30, 3],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 1],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [45, 1],
+ [45, 2],
+ [85, 1],
+ [85, 2],
+ [85, 1],
+ [85, 1],
+ ],
+ performAction: function (t, e, n, i, a, s, r) {
+ var l = s.length - 1;
+ switch (a) {
+ case 4:
+ i.setDirection("TB");
+ break;
+ case 5:
+ i.setDirection("BT");
+ break;
+ case 6:
+ i.setDirection("RL");
+ break;
+ case 7:
+ i.setDirection("LR");
+ break;
+ case 11:
+ i.parseDirective("%%{", "open_directive");
+ break;
+ case 12:
+ break;
+ case 13:
+ (s[l] = s[l].trim().replace(/'/g, '"')), i.parseDirective(s[l], "arg_directive");
+ break;
+ case 14:
+ i.parseDirective("}%%", "close_directive", "c4Context");
+ break;
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ i.setC4Type(s[l - 3]);
+ break;
+ case 26:
+ i.setTitle(s[l].substring(6)), (this.$ = s[l].substring(6));
+ break;
+ case 27:
+ i.setAccDescription(s[l].substring(15)), (this.$ = s[l].substring(15));
+ break;
+ case 28:
+ (this.$ = s[l].trim()), i.setTitle(this.$);
+ break;
+ case 29:
+ case 30:
+ (this.$ = s[l].trim()), i.setAccDescription(this.$);
+ break;
+ case 35:
+ case 36:
+ s[l].splice(2, 0, "ENTERPRISE"), i.addPersonOrSystemBoundary(...s[l]), (this.$ = s[l]);
+ break;
+ case 37:
+ i.addPersonOrSystemBoundary(...s[l]), (this.$ = s[l]);
+ break;
+ case 38:
+ s[l].splice(2, 0, "CONTAINER"), i.addContainerBoundary(...s[l]), (this.$ = s[l]);
+ break;
+ case 39:
+ i.addDeploymentNode("node", ...s[l]), (this.$ = s[l]);
+ break;
+ case 40:
+ i.addDeploymentNode("nodeL", ...s[l]), (this.$ = s[l]);
+ break;
+ case 41:
+ i.addDeploymentNode("nodeR", ...s[l]), (this.$ = s[l]);
+ break;
+ case 42:
+ i.popBoundaryParseStack();
+ break;
+ case 46:
+ i.addPersonOrSystem("person", ...s[l]), (this.$ = s[l]);
+ break;
+ case 47:
+ i.addPersonOrSystem("external_person", ...s[l]), (this.$ = s[l]);
+ break;
+ case 48:
+ i.addPersonOrSystem("system", ...s[l]), (this.$ = s[l]);
+ break;
+ case 49:
+ i.addPersonOrSystem("system_db", ...s[l]), (this.$ = s[l]);
+ break;
+ case 50:
+ i.addPersonOrSystem("system_queue", ...s[l]), (this.$ = s[l]);
+ break;
+ case 51:
+ i.addPersonOrSystem("external_system", ...s[l]), (this.$ = s[l]);
+ break;
+ case 52:
+ i.addPersonOrSystem("external_system_db", ...s[l]), (this.$ = s[l]);
+ break;
+ case 53:
+ i.addPersonOrSystem("external_system_queue", ...s[l]), (this.$ = s[l]);
+ break;
+ case 54:
+ i.addContainer("container", ...s[l]), (this.$ = s[l]);
+ break;
+ case 55:
+ i.addContainer("container_db", ...s[l]), (this.$ = s[l]);
+ break;
+ case 56:
+ i.addContainer("container_queue", ...s[l]), (this.$ = s[l]);
+ break;
+ case 57:
+ i.addContainer("external_container", ...s[l]), (this.$ = s[l]);
+ break;
+ case 58:
+ i.addContainer("external_container_db", ...s[l]), (this.$ = s[l]);
+ break;
+ case 59:
+ i.addContainer("external_container_queue", ...s[l]), (this.$ = s[l]);
+ break;
+ case 60:
+ i.addComponent("component", ...s[l]), (this.$ = s[l]);
+ break;
+ case 61:
+ i.addComponent("component_db", ...s[l]), (this.$ = s[l]);
+ break;
+ case 62:
+ i.addComponent("component_queue", ...s[l]), (this.$ = s[l]);
+ break;
+ case 63:
+ i.addComponent("external_component", ...s[l]), (this.$ = s[l]);
+ break;
+ case 64:
+ i.addComponent("external_component_db", ...s[l]), (this.$ = s[l]);
+ break;
+ case 65:
+ i.addComponent("external_component_queue", ...s[l]), (this.$ = s[l]);
+ break;
+ case 67:
+ i.addRel("rel", ...s[l]), (this.$ = s[l]);
+ break;
+ case 68:
+ i.addRel("birel", ...s[l]), (this.$ = s[l]);
+ break;
+ case 69:
+ i.addRel("rel_u", ...s[l]), (this.$ = s[l]);
+ break;
+ case 70:
+ i.addRel("rel_d", ...s[l]), (this.$ = s[l]);
+ break;
+ case 71:
+ i.addRel("rel_l", ...s[l]), (this.$ = s[l]);
+ break;
+ case 72:
+ i.addRel("rel_r", ...s[l]), (this.$ = s[l]);
+ break;
+ case 73:
+ i.addRel("rel_b", ...s[l]), (this.$ = s[l]);
+ break;
+ case 74:
+ s[l].splice(0, 1), i.addRel("rel", ...s[l]), (this.$ = s[l]);
+ break;
+ case 75:
+ i.updateElStyle("update_el_style", ...s[l]), (this.$ = s[l]);
+ break;
+ case 76:
+ i.updateRelStyle("update_rel_style", ...s[l]), (this.$ = s[l]);
+ break;
+ case 77:
+ i.updateLayoutConfig("update_layout_config", ...s[l]), (this.$ = s[l]);
+ break;
+ case 78:
+ this.$ = [s[l]];
+ break;
+ case 79:
+ s[l].unshift(s[l - 1]), (this.$ = s[l]);
+ break;
+ case 80:
+ case 82:
+ this.$ = s[l].trim();
+ break;
+ case 81:
+ let t = {};
+ (t[s[l - 1].trim()] = s[l].trim()), (this.$ = t);
+ break;
+ case 83:
+ this.$ = "";
+ }
+ },
+ table: [
+ {
+ 3: 1,
+ 4: 2,
+ 5: 3,
+ 6: 4,
+ 7: e,
+ 8: n,
+ 9: i,
+ 10: a,
+ 11: 5,
+ 12: 10,
+ 18: s,
+ 22: r,
+ 25: l,
+ 26: o,
+ 27: h,
+ 28: d,
+ },
+ { 1: [3] },
+ { 1: [2, 1] },
+ { 1: [2, 2] },
+ {
+ 3: 17,
+ 4: 2,
+ 5: 3,
+ 6: 4,
+ 7: e,
+ 8: n,
+ 9: i,
+ 10: a,
+ 11: 5,
+ 12: 10,
+ 18: s,
+ 22: r,
+ 25: l,
+ 26: o,
+ 27: h,
+ 28: d,
+ },
+ { 1: [2, 8] },
+ { 1: [2, 4] },
+ { 1: [2, 5] },
+ { 1: [2, 6] },
+ { 1: [2, 7] },
+ { 13: 18, 19: [1, 19] },
+ { 15: [1, 20] },
+ { 15: [1, 21] },
+ { 15: [1, 22] },
+ { 15: [1, 23] },
+ { 15: [1, 24] },
+ { 19: [2, 11] },
+ { 1: [2, 3] },
+ { 14: 25, 16: [1, 26], 21: u },
+ t([16, 21], [2, 12]),
+ {
+ 23: 28,
+ 29: 29,
+ 30: 30,
+ 31: 31,
+ 32: p,
+ 33: y,
+ 34: f,
+ 36: b,
+ 38: g,
+ 39: 58,
+ 40: 70,
+ 42: 71,
+ 44: _,
+ 46: x,
+ 47: m,
+ 48: E,
+ 49: A,
+ 50: S,
+ 51: v,
+ 53: 32,
+ 54: C,
+ 55: k,
+ 56: O,
+ 57: T,
+ 58: w,
+ 59: D,
+ 60: R,
+ 61: N,
+ 62: P,
+ 63: M,
+ 64: j,
+ 65: B,
+ 66: Y,
+ 67: L,
+ 68: I,
+ 69: U,
+ 70: F,
+ 71: X,
+ 72: z,
+ 73: Q,
+ 74: W,
+ 75: $,
+ 76: q,
+ 77: V,
+ 78: G,
+ 79: H,
+ 80: K,
+ 81: J,
+ 82: Z,
+ 83: tt,
+ 84: et,
+ },
+ {
+ 23: 79,
+ 29: 29,
+ 30: 30,
+ 31: 31,
+ 32: p,
+ 33: y,
+ 34: f,
+ 36: b,
+ 38: g,
+ 39: 58,
+ 40: 70,
+ 42: 71,
+ 44: _,
+ 46: x,
+ 47: m,
+ 48: E,
+ 49: A,
+ 50: S,
+ 51: v,
+ 53: 32,
+ 54: C,
+ 55: k,
+ 56: O,
+ 57: T,
+ 58: w,
+ 59: D,
+ 60: R,
+ 61: N,
+ 62: P,
+ 63: M,
+ 64: j,
+ 65: B,
+ 66: Y,
+ 67: L,
+ 68: I,
+ 69: U,
+ 70: F,
+ 71: X,
+ 72: z,
+ 73: Q,
+ 74: W,
+ 75: $,
+ 76: q,
+ 77: V,
+ 78: G,
+ 79: H,
+ 80: K,
+ 81: J,
+ 82: Z,
+ 83: tt,
+ 84: et,
+ },
+ {
+ 23: 80,
+ 29: 29,
+ 30: 30,
+ 31: 31,
+ 32: p,
+ 33: y,
+ 34: f,
+ 36: b,
+ 38: g,
+ 39: 58,
+ 40: 70,
+ 42: 71,
+ 44: _,
+ 46: x,
+ 47: m,
+ 48: E,
+ 49: A,
+ 50: S,
+ 51: v,
+ 53: 32,
+ 54: C,
+ 55: k,
+ 56: O,
+ 57: T,
+ 58: w,
+ 59: D,
+ 60: R,
+ 61: N,
+ 62: P,
+ 63: M,
+ 64: j,
+ 65: B,
+ 66: Y,
+ 67: L,
+ 68: I,
+ 69: U,
+ 70: F,
+ 71: X,
+ 72: z,
+ 73: Q,
+ 74: W,
+ 75: $,
+ 76: q,
+ 77: V,
+ 78: G,
+ 79: H,
+ 80: K,
+ 81: J,
+ 82: Z,
+ 83: tt,
+ 84: et,
+ },
+ {
+ 23: 81,
+ 29: 29,
+ 30: 30,
+ 31: 31,
+ 32: p,
+ 33: y,
+ 34: f,
+ 36: b,
+ 38: g,
+ 39: 58,
+ 40: 70,
+ 42: 71,
+ 44: _,
+ 46: x,
+ 47: m,
+ 48: E,
+ 49: A,
+ 50: S,
+ 51: v,
+ 53: 32,
+ 54: C,
+ 55: k,
+ 56: O,
+ 57: T,
+ 58: w,
+ 59: D,
+ 60: R,
+ 61: N,
+ 62: P,
+ 63: M,
+ 64: j,
+ 65: B,
+ 66: Y,
+ 67: L,
+ 68: I,
+ 69: U,
+ 70: F,
+ 71: X,
+ 72: z,
+ 73: Q,
+ 74: W,
+ 75: $,
+ 76: q,
+ 77: V,
+ 78: G,
+ 79: H,
+ 80: K,
+ 81: J,
+ 82: Z,
+ 83: tt,
+ 84: et,
+ },
+ {
+ 23: 82,
+ 29: 29,
+ 30: 30,
+ 31: 31,
+ 32: p,
+ 33: y,
+ 34: f,
+ 36: b,
+ 38: g,
+ 39: 58,
+ 40: 70,
+ 42: 71,
+ 44: _,
+ 46: x,
+ 47: m,
+ 48: E,
+ 49: A,
+ 50: S,
+ 51: v,
+ 53: 32,
+ 54: C,
+ 55: k,
+ 56: O,
+ 57: T,
+ 58: w,
+ 59: D,
+ 60: R,
+ 61: N,
+ 62: P,
+ 63: M,
+ 64: j,
+ 65: B,
+ 66: Y,
+ 67: L,
+ 68: I,
+ 69: U,
+ 70: F,
+ 71: X,
+ 72: z,
+ 73: Q,
+ 74: W,
+ 75: $,
+ 76: q,
+ 77: V,
+ 78: G,
+ 79: H,
+ 80: K,
+ 81: J,
+ 82: Z,
+ 83: tt,
+ 84: et,
+ },
+ { 15: [1, 83] },
+ { 17: 84, 20: [1, 85] },
+ { 15: [2, 14] },
+ { 24: [1, 86] },
+ t(nt, [2, 20], {
+ 53: 32,
+ 39: 58,
+ 40: 70,
+ 42: 71,
+ 30: 87,
+ 44: _,
+ 46: x,
+ 47: m,
+ 48: E,
+ 49: A,
+ 50: S,
+ 51: v,
+ 54: C,
+ 55: k,
+ 56: O,
+ 57: T,
+ 58: w,
+ 59: D,
+ 60: R,
+ 61: N,
+ 62: P,
+ 63: M,
+ 64: j,
+ 65: B,
+ 66: Y,
+ 67: L,
+ 68: I,
+ 69: U,
+ 70: F,
+ 71: X,
+ 72: z,
+ 73: Q,
+ 74: W,
+ 75: $,
+ 76: q,
+ 77: V,
+ 78: G,
+ 79: H,
+ 80: K,
+ 81: J,
+ 82: Z,
+ 83: tt,
+ 84: et,
+ }),
+ t(nt, [2, 21]),
+ t(it, [2, 23], { 15: [1, 88] }),
+ t(nt, [2, 43], { 15: [1, 89] }),
+ t(at, [2, 26]),
+ t(at, [2, 27]),
+ { 35: [1, 90] },
+ { 37: [1, 91] },
+ t(at, [2, 30]),
+ { 45: 92, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 98, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 99, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 100, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 101, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 102, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 103, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 104, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 105, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 106, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 107, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 108, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 109, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 110, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 111, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 112, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 113, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 114, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 115, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 116, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ t(ct, [2, 66]),
+ { 45: 117, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 118, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 119, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 120, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 121, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 122, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 123, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 124, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 125, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 126, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 127, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ {
+ 30: 128,
+ 39: 58,
+ 40: 70,
+ 42: 71,
+ 44: _,
+ 46: x,
+ 47: m,
+ 48: E,
+ 49: A,
+ 50: S,
+ 51: v,
+ 53: 32,
+ 54: C,
+ 55: k,
+ 56: O,
+ 57: T,
+ 58: w,
+ 59: D,
+ 60: R,
+ 61: N,
+ 62: P,
+ 63: M,
+ 64: j,
+ 65: B,
+ 66: Y,
+ 67: L,
+ 68: I,
+ 69: U,
+ 70: F,
+ 71: X,
+ 72: z,
+ 73: Q,
+ 74: W,
+ 75: $,
+ 76: q,
+ 77: V,
+ 78: G,
+ 79: H,
+ 80: K,
+ 81: J,
+ 82: Z,
+ 83: tt,
+ 84: et,
+ },
+ { 15: [1, 130], 43: [1, 129] },
+ { 45: 131, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 132, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 133, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 134, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 135, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 136, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 137, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 24: [1, 138] },
+ { 24: [1, 139] },
+ { 24: [1, 140] },
+ { 24: [1, 141] },
+ t(ht, [2, 9]),
+ { 14: 142, 21: u },
+ { 21: [2, 13] },
+ { 1: [2, 15] },
+ t(nt, [2, 22]),
+ t(it, [2, 24], { 31: 31, 29: 143, 32: p, 33: y, 34: f, 36: b, 38: g }),
+ t(nt, [2, 44], {
+ 29: 29,
+ 30: 30,
+ 31: 31,
+ 53: 32,
+ 39: 58,
+ 40: 70,
+ 42: 71,
+ 23: 144,
+ 32: p,
+ 33: y,
+ 34: f,
+ 36: b,
+ 38: g,
+ 44: _,
+ 46: x,
+ 47: m,
+ 48: E,
+ 49: A,
+ 50: S,
+ 51: v,
+ 54: C,
+ 55: k,
+ 56: O,
+ 57: T,
+ 58: w,
+ 59: D,
+ 60: R,
+ 61: N,
+ 62: P,
+ 63: M,
+ 64: j,
+ 65: B,
+ 66: Y,
+ 67: L,
+ 68: I,
+ 69: U,
+ 70: F,
+ 71: X,
+ 72: z,
+ 73: Q,
+ 74: W,
+ 75: $,
+ 76: q,
+ 77: V,
+ 78: G,
+ 79: H,
+ 80: K,
+ 81: J,
+ 82: Z,
+ 83: tt,
+ 84: et,
+ }),
+ t(at, [2, 28]),
+ t(at, [2, 29]),
+ t(ct, [2, 46]),
+ t(dt, [2, 78], { 85: 93, 45: 145, 86: st, 87: rt, 89: lt, 90: ot }),
+ t(ut, [2, 80]),
+ { 88: [1, 146] },
+ t(ut, [2, 82]),
+ t(ut, [2, 83]),
+ t(ct, [2, 47]),
+ t(ct, [2, 48]),
+ t(ct, [2, 49]),
+ t(ct, [2, 50]),
+ t(ct, [2, 51]),
+ t(ct, [2, 52]),
+ t(ct, [2, 53]),
+ t(ct, [2, 54]),
+ t(ct, [2, 55]),
+ t(ct, [2, 56]),
+ t(ct, [2, 57]),
+ t(ct, [2, 58]),
+ t(ct, [2, 59]),
+ t(ct, [2, 60]),
+ t(ct, [2, 61]),
+ t(ct, [2, 62]),
+ t(ct, [2, 63]),
+ t(ct, [2, 64]),
+ t(ct, [2, 65]),
+ t(ct, [2, 67]),
+ t(ct, [2, 68]),
+ t(ct, [2, 69]),
+ t(ct, [2, 70]),
+ t(ct, [2, 71]),
+ t(ct, [2, 72]),
+ t(ct, [2, 73]),
+ t(ct, [2, 74]),
+ t(ct, [2, 75]),
+ t(ct, [2, 76]),
+ t(ct, [2, 77]),
+ { 41: 147, 52: [1, 148] },
+ { 15: [1, 149] },
+ { 43: [1, 150] },
+ t(pt, [2, 35]),
+ t(pt, [2, 36]),
+ t(pt, [2, 37]),
+ t(pt, [2, 38]),
+ t(pt, [2, 39]),
+ t(pt, [2, 40]),
+ t(pt, [2, 41]),
+ { 1: [2, 16] },
+ { 1: [2, 17] },
+ { 1: [2, 18] },
+ { 1: [2, 19] },
+ { 15: [1, 151] },
+ t(it, [2, 25]),
+ t(nt, [2, 45]),
+ t(dt, [2, 79]),
+ t(ut, [2, 81]),
+ t(ct, [2, 31]),
+ t(ct, [2, 42]),
+ t(yt, [2, 32]),
+ t(yt, [2, 33], { 15: [1, 152] }),
+ t(ht, [2, 10]),
+ t(yt, [2, 34]),
+ ],
+ defaultActions: {
+ 2: [2, 1],
+ 3: [2, 2],
+ 5: [2, 8],
+ 6: [2, 4],
+ 7: [2, 5],
+ 8: [2, 6],
+ 9: [2, 7],
+ 16: [2, 11],
+ 17: [2, 3],
+ 27: [2, 14],
+ 85: [2, 13],
+ 86: [2, 15],
+ 138: [2, 16],
+ 139: [2, 17],
+ 140: [2, 18],
+ 141: [2, 19],
+ },
+ parseError: function (t, e) {
+ if (!e.recoverable) {
+ var n = new Error(t);
+ throw ((n.hash = e), n);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var e = [0],
+ n = [],
+ i = [null],
+ a = [],
+ s = this.table,
+ r = "",
+ l = 0,
+ o = 0,
+ c = a.slice.call(arguments, 1),
+ h = Object.create(this.lexer),
+ d = { yy: {} };
+ for (var u in this.yy) Object.prototype.hasOwnProperty.call(this.yy, u) && (d.yy[u] = this.yy[u]);
+ h.setInput(t, d.yy), (d.yy.lexer = h), (d.yy.parser = this), void 0 === h.yylloc && (h.yylloc = {});
+ var p = h.yylloc;
+ a.push(p);
+ var y = h.options && h.options.ranges;
+ "function" == typeof d.yy.parseError
+ ? (this.parseError = d.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var f, b, g, _, x, m, E, A, S, v = {}; ; ) {
+ if (
+ ((b = e[e.length - 1]),
+ this.defaultActions[b]
+ ? (g = this.defaultActions[b])
+ : (null == f &&
+ ((S = void 0),
+ "number" != typeof (S = n.pop() || h.lex() || 1) &&
+ (S instanceof Array && (S = (n = S).pop()), (S = this.symbols_[S] || S)),
+ (f = S)),
+ (g = s[b] && s[b][f])),
+ void 0 === g || !g.length || !g[0])
+ ) {
+ var C;
+ for (x in ((A = []), s[b])) this.terminals_[x] && x > 2 && A.push("'" + this.terminals_[x] + "'");
+ (C = h.showPosition
+ ? "Parse error on line " +
+ (l + 1) +
+ ":\n" +
+ h.showPosition() +
+ "\nExpecting " +
+ A.join(", ") +
+ ", got '" +
+ (this.terminals_[f] || f) +
+ "'"
+ : "Parse error on line " + (l + 1) + ": Unexpected " + (1 == f ? "end of input" : "'" + (this.terminals_[f] || f) + "'")),
+ this.parseError(C, {
+ text: h.match,
+ token: this.terminals_[f] || f,
+ line: h.yylineno,
+ loc: p,
+ expected: A,
+ });
+ }
+ if (g[0] instanceof Array && g.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + b + ", token: " + f);
+ switch (g[0]) {
+ case 1:
+ e.push(f),
+ i.push(h.yytext),
+ a.push(h.yylloc),
+ e.push(g[1]),
+ (f = null),
+ (o = h.yyleng),
+ (r = h.yytext),
+ (l = h.yylineno),
+ (p = h.yylloc);
+ break;
+ case 2:
+ if (
+ ((m = this.productions_[g[1]][1]),
+ (v.$ = i[i.length - m]),
+ (v._$ = {
+ first_line: a[a.length - (m || 1)].first_line,
+ last_line: a[a.length - 1].last_line,
+ first_column: a[a.length - (m || 1)].first_column,
+ last_column: a[a.length - 1].last_column,
+ }),
+ y && (v._$.range = [a[a.length - (m || 1)].range[0], a[a.length - 1].range[1]]),
+ void 0 !== (_ = this.performAction.apply(v, [r, o, l, d.yy, g[1], i, a].concat(c))))
+ )
+ return _;
+ m && ((e = e.slice(0, -1 * m * 2)), (i = i.slice(0, -1 * m)), (a = a.slice(0, -1 * m))),
+ e.push(this.productions_[g[1]][0]),
+ i.push(v.$),
+ a.push(v._$),
+ (E = s[e[e.length - 2]][e[e.length - 1]]),
+ e.push(E);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ bt = {
+ EOF: 1,
+ parseError: function (t, e) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, e);
+ },
+ setInput: function (t, e) {
+ return (
+ (this.yy = e || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0,
+ }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var e = t.length,
+ n = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - e)), (this.offset -= e);
+ var i = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ n.length - 1 && (this.yylineno -= n.length - 1);
+ var a = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: n
+ ? (n.length === i.length ? this.yylloc.first_column : 0) + i[i.length - n.length].length - n[0].length
+ : this.yylloc.first_column - e,
+ }),
+ this.options.ranges && (this.yylloc.range = [a[0], a[0] + this.yyleng - e]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ e = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + e + "^";
+ },
+ test_match: function (t, e) {
+ var n, i, a;
+ if (
+ (this.options.backtrack_lexer &&
+ ((a = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (a.yylloc.range = this.yylloc.range.slice(0))),
+ (i = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += i.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: i ? i[i.length - 1].length - i[i.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (n = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ n)
+ )
+ return n;
+ if (this._backtrack) {
+ for (var s in a) this[s] = a[s];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, e, n, i;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var a = this._currentRules(), s = 0; s < a.length; s++)
+ if ((n = this._input.match(this.rules[a[s]])) && (!e || n[0].length > e[0].length)) {
+ if (((e = n), (i = s), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(n, a[s]))) return t;
+ if (this._backtrack) {
+ e = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return e
+ ? !1 !== (t = this.test_match(e, a[i])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: {},
+ performAction: function (t, e, n, i) {
+ switch (n) {
+ case 0:
+ return this.begin("open_directive"), 18;
+ case 1:
+ return 7;
+ case 2:
+ return 8;
+ case 3:
+ return 9;
+ case 4:
+ return 10;
+ case 5:
+ return this.begin("type_directive"), 19;
+ case 6:
+ return this.popState(), this.begin("arg_directive"), 16;
+ case 7:
+ return this.popState(), this.popState(), 21;
+ case 8:
+ return 20;
+ case 9:
+ return 32;
+ case 10:
+ return 33;
+ case 11:
+ return this.begin("acc_title"), 34;
+ case 12:
+ return this.popState(), "acc_title_value";
+ case 13:
+ return this.begin("acc_descr"), 36;
+ case 14:
+ return this.popState(), "acc_descr_value";
+ case 15:
+ this.begin("acc_descr_multiline");
+ break;
+ case 16:
+ case 78:
+ this.popState();
+ break;
+ case 17:
+ return "acc_descr_multiline_value";
+ case 18:
+ case 21:
+ case 75:
+ break;
+ case 19:
+ c;
+ break;
+ case 20:
+ return 15;
+ case 22:
+ return 22;
+ case 23:
+ return 25;
+ case 24:
+ return 26;
+ case 25:
+ return 27;
+ case 26:
+ return 28;
+ case 27:
+ return this.begin("person_ext"), 55;
+ case 28:
+ return this.begin("person"), 54;
+ case 29:
+ return this.begin("system_ext_queue"), 61;
+ case 30:
+ return this.begin("system_ext_db"), 60;
+ case 31:
+ return this.begin("system_ext"), 59;
+ case 32:
+ return this.begin("system_queue"), 58;
+ case 33:
+ return this.begin("system_db"), 57;
+ case 34:
+ return this.begin("system"), 56;
+ case 35:
+ return this.begin("boundary"), 47;
+ case 36:
+ return this.begin("enterprise_boundary"), 44;
+ case 37:
+ return this.begin("system_boundary"), 46;
+ case 38:
+ return this.begin("container_ext_queue"), 67;
+ case 39:
+ return this.begin("container_ext_db"), 66;
+ case 40:
+ return this.begin("container_ext"), 65;
+ case 41:
+ return this.begin("container_queue"), 64;
+ case 42:
+ return this.begin("container_db"), 63;
+ case 43:
+ return this.begin("container"), 62;
+ case 44:
+ return this.begin("container_boundary"), 48;
+ case 45:
+ return this.begin("component_ext_queue"), 73;
+ case 46:
+ return this.begin("component_ext_db"), 72;
+ case 47:
+ return this.begin("component_ext"), 71;
+ case 48:
+ return this.begin("component_queue"), 70;
+ case 49:
+ return this.begin("component_db"), 69;
+ case 50:
+ return this.begin("component"), 68;
+ case 51:
+ case 52:
+ return this.begin("node"), 49;
+ case 53:
+ return this.begin("node_l"), 50;
+ case 54:
+ return this.begin("node_r"), 51;
+ case 55:
+ return this.begin("rel"), 74;
+ case 56:
+ return this.begin("birel"), 75;
+ case 57:
+ case 58:
+ return this.begin("rel_u"), 76;
+ case 59:
+ case 60:
+ return this.begin("rel_d"), 77;
+ case 61:
+ case 62:
+ return this.begin("rel_l"), 78;
+ case 63:
+ case 64:
+ return this.begin("rel_r"), 79;
+ case 65:
+ return this.begin("rel_b"), 80;
+ case 66:
+ return this.begin("rel_index"), 81;
+ case 67:
+ return this.begin("update_el_style"), 82;
+ case 68:
+ return this.begin("update_rel_style"), 83;
+ case 69:
+ return this.begin("update_layout_config"), 84;
+ case 70:
+ return "EOF_IN_STRUCT";
+ case 71:
+ return this.begin("attribute"), "ATTRIBUTE_EMPTY";
+ case 72:
+ this.begin("attribute");
+ break;
+ case 73:
+ case 84:
+ this.popState(), this.popState();
+ break;
+ case 74:
+ case 76:
+ return 90;
+ case 77:
+ this.begin("string");
+ break;
+ case 79:
+ case 85:
+ return "STR";
+ case 80:
+ this.begin("string_kv");
+ break;
+ case 81:
+ return this.begin("string_kv_key"), "STR_KEY";
+ case 82:
+ this.popState(), this.begin("string_kv_value");
+ break;
+ case 83:
+ return "STR_VALUE";
+ case 86:
+ return "LBRACE";
+ case 87:
+ return "RBRACE";
+ case 88:
+ return "SPACE";
+ case 89:
+ return "EOL";
+ case 90:
+ return 24;
+ }
+ },
+ rules: [
+ /^(?:%%\{)/,
+ /^(?:.*direction\s+TB[^\n]*)/,
+ /^(?:.*direction\s+BT[^\n]*)/,
+ /^(?:.*direction\s+RL[^\n]*)/,
+ /^(?:.*direction\s+LR[^\n]*)/,
+ /^(?:((?:(?!\}%%)[^:.])*))/,
+ /^(?::)/,
+ /^(?:\}%%)/,
+ /^(?:((?:(?!\}%%).|\n)*))/,
+ /^(?:title\s[^#\n;]+)/,
+ /^(?:accDescription\s[^#\n;]+)/,
+ /^(?:accTitle\s*:\s*)/,
+ /^(?:(?!\n||)*[^\n]*)/,
+ /^(?:accDescr\s*:\s*)/,
+ /^(?:(?!\n||)*[^\n]*)/,
+ /^(?:accDescr\s*\{\s*)/,
+ /^(?:[\}])/,
+ /^(?:[^\}]*)/,
+ /^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,
+ /^(?:%%[^\n]*(\r?\n)*)/,
+ /^(?:\s*(\r?\n)+)/,
+ /^(?:\s+)/,
+ /^(?:C4Context\b)/,
+ /^(?:C4Container\b)/,
+ /^(?:C4Component\b)/,
+ /^(?:C4Dynamic\b)/,
+ /^(?:C4Deployment\b)/,
+ /^(?:Person_Ext\b)/,
+ /^(?:Person\b)/,
+ /^(?:SystemQueue_Ext\b)/,
+ /^(?:SystemDb_Ext\b)/,
+ /^(?:System_Ext\b)/,
+ /^(?:SystemQueue\b)/,
+ /^(?:SystemDb\b)/,
+ /^(?:System\b)/,
+ /^(?:Boundary\b)/,
+ /^(?:Enterprise_Boundary\b)/,
+ /^(?:System_Boundary\b)/,
+ /^(?:ContainerQueue_Ext\b)/,
+ /^(?:ContainerDb_Ext\b)/,
+ /^(?:Container_Ext\b)/,
+ /^(?:ContainerQueue\b)/,
+ /^(?:ContainerDb\b)/,
+ /^(?:Container\b)/,
+ /^(?:Container_Boundary\b)/,
+ /^(?:ComponentQueue_Ext\b)/,
+ /^(?:ComponentDb_Ext\b)/,
+ /^(?:Component_Ext\b)/,
+ /^(?:ComponentQueue\b)/,
+ /^(?:ComponentDb\b)/,
+ /^(?:Component\b)/,
+ /^(?:Deployment_Node\b)/,
+ /^(?:Node\b)/,
+ /^(?:Node_L\b)/,
+ /^(?:Node_R\b)/,
+ /^(?:Rel\b)/,
+ /^(?:BiRel\b)/,
+ /^(?:Rel_Up\b)/,
+ /^(?:Rel_U\b)/,
+ /^(?:Rel_Down\b)/,
+ /^(?:Rel_D\b)/,
+ /^(?:Rel_Left\b)/,
+ /^(?:Rel_L\b)/,
+ /^(?:Rel_Right\b)/,
+ /^(?:Rel_R\b)/,
+ /^(?:Rel_Back\b)/,
+ /^(?:RelIndex\b)/,
+ /^(?:UpdateElementStyle\b)/,
+ /^(?:UpdateRelStyle\b)/,
+ /^(?:UpdateLayoutConfig\b)/,
+ /^(?:$)/,
+ /^(?:[(][ ]*[,])/,
+ /^(?:[(])/,
+ /^(?:[)])/,
+ /^(?:,,)/,
+ /^(?:,)/,
+ /^(?:[ ]*["]["])/,
+ /^(?:[ ]*["])/,
+ /^(?:["])/,
+ /^(?:[^"]*)/,
+ /^(?:[ ]*[\$])/,
+ /^(?:[^=]*)/,
+ /^(?:[=][ ]*["])/,
+ /^(?:[^"]+)/,
+ /^(?:["])/,
+ /^(?:[^,]+)/,
+ /^(?:\{)/,
+ /^(?:\})/,
+ /^(?:[\s]+)/,
+ /^(?:[\n\r]+)/,
+ /^(?:$)/,
+ ],
+ conditions: {
+ acc_descr_multiline: { rules: [16, 17], inclusive: !1 },
+ acc_descr: { rules: [14], inclusive: !1 },
+ acc_title: { rules: [12], inclusive: !1 },
+ close_directive: { rules: [], inclusive: !1 },
+ arg_directive: { rules: [7, 8], inclusive: !1 },
+ type_directive: { rules: [6, 7], inclusive: !1 },
+ open_directive: { rules: [5], inclusive: !1 },
+ string_kv_value: { rules: [83, 84], inclusive: !1 },
+ string_kv_key: { rules: [82], inclusive: !1 },
+ string_kv: { rules: [81], inclusive: !1 },
+ string: { rules: [78, 79], inclusive: !1 },
+ attribute: { rules: [73, 74, 75, 76, 77, 80, 85], inclusive: !1 },
+ update_layout_config: { rules: [70, 71, 72, 73], inclusive: !1 },
+ update_rel_style: { rules: [70, 71, 72, 73], inclusive: !1 },
+ update_el_style: { rules: [70, 71, 72, 73], inclusive: !1 },
+ rel_b: { rules: [70, 71, 72, 73], inclusive: !1 },
+ rel_r: { rules: [70, 71, 72, 73], inclusive: !1 },
+ rel_l: { rules: [70, 71, 72, 73], inclusive: !1 },
+ rel_d: { rules: [70, 71, 72, 73], inclusive: !1 },
+ rel_u: { rules: [70, 71, 72, 73], inclusive: !1 },
+ rel_bi: { rules: [], inclusive: !1 },
+ rel: { rules: [70, 71, 72, 73], inclusive: !1 },
+ node_r: { rules: [70, 71, 72, 73], inclusive: !1 },
+ node_l: { rules: [70, 71, 72, 73], inclusive: !1 },
+ node: { rules: [70, 71, 72, 73], inclusive: !1 },
+ index: { rules: [], inclusive: !1 },
+ rel_index: { rules: [70, 71, 72, 73], inclusive: !1 },
+ component_ext_queue: { rules: [], inclusive: !1 },
+ component_ext_db: { rules: [70, 71, 72, 73], inclusive: !1 },
+ component_ext: { rules: [70, 71, 72, 73], inclusive: !1 },
+ component_queue: { rules: [70, 71, 72, 73], inclusive: !1 },
+ component_db: { rules: [70, 71, 72, 73], inclusive: !1 },
+ component: { rules: [70, 71, 72, 73], inclusive: !1 },
+ container_boundary: { rules: [70, 71, 72, 73], inclusive: !1 },
+ container_ext_queue: { rules: [70, 71, 72, 73], inclusive: !1 },
+ container_ext_db: { rules: [70, 71, 72, 73], inclusive: !1 },
+ container_ext: { rules: [70, 71, 72, 73], inclusive: !1 },
+ container_queue: { rules: [70, 71, 72, 73], inclusive: !1 },
+ container_db: { rules: [70, 71, 72, 73], inclusive: !1 },
+ container: { rules: [70, 71, 72, 73], inclusive: !1 },
+ birel: { rules: [70, 71, 72, 73], inclusive: !1 },
+ system_boundary: { rules: [70, 71, 72, 73], inclusive: !1 },
+ enterprise_boundary: { rules: [70, 71, 72, 73], inclusive: !1 },
+ boundary: { rules: [70, 71, 72, 73], inclusive: !1 },
+ system_ext_queue: { rules: [70, 71, 72, 73], inclusive: !1 },
+ system_ext_db: { rules: [70, 71, 72, 73], inclusive: !1 },
+ system_ext: { rules: [70, 71, 72, 73], inclusive: !1 },
+ system_queue: { rules: [70, 71, 72, 73], inclusive: !1 },
+ system_db: { rules: [70, 71, 72, 73], inclusive: !1 },
+ system: { rules: [70, 71, 72, 73], inclusive: !1 },
+ person_ext: { rules: [70, 71, 72, 73], inclusive: !1 },
+ person: { rules: [70, 71, 72, 73], inclusive: !1 },
+ INITIAL: {
+ rules: [
+ 0, 1, 2, 3, 4, 9, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 86, 87, 88,
+ 89, 90,
+ ],
+ inclusive: !0,
+ },
+ },
+ };
+ function gt() {
+ this.yy = {};
+ }
+ return (ft.lexer = bt), (gt.prototype = ft), (ft.Parser = gt), new gt();
+ })());
+ l.parser = l;
+ const o = l;
+ let h = [],
+ d = [""],
+ u = "global",
+ p = "",
+ y = [
+ {
+ alias: "global",
+ label: { text: "global" },
+ type: { text: "global" },
+ tags: null,
+ link: null,
+ parentBoundary: "",
+ },
+ ],
+ f = [],
+ b = "",
+ g = !1,
+ _ = 4,
+ x = 2;
+ var m;
+ const E = function (t) {
+ return null == t ? h : h.filter((e) => e.parentBoundary === t);
+ },
+ A = function () {
+ return g;
+ },
+ S = {
+ addPersonOrSystem: function (t, e, n, i, a, s, r) {
+ if (null === e || null === n) return;
+ let l = {};
+ const o = h.find((t) => t.alias === e);
+ if ((o && e === o.alias ? (l = o) : ((l.alias = e), h.push(l)), (l.label = null == n ? { text: "" } : { text: n }), null == i))
+ l.descr = { text: "" };
+ else if ("object" == typeof i) {
+ let [t, e] = Object.entries(i)[0];
+ l[t] = { text: e };
+ } else l.descr = { text: i };
+ if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ l[t] = e;
+ } else l.sprite = a;
+ if ("object" == typeof s) {
+ let [t, e] = Object.entries(s)[0];
+ l[t] = e;
+ } else l.tags = s;
+ if ("object" == typeof r) {
+ let [t, e] = Object.entries(r)[0];
+ l[t] = e;
+ } else l.link = r;
+ (l.typeC4Shape = { text: t }), (l.parentBoundary = u), (l.wrap = A());
+ },
+ addPersonOrSystemBoundary: function (t, e, n, i, a) {
+ if (null === t || null === e) return;
+ let s = {};
+ const r = y.find((e) => e.alias === t);
+ if ((r && t === r.alias ? (s = r) : ((s.alias = t), y.push(s)), (s.label = null == e ? { text: "" } : { text: e }), null == n))
+ s.type = { text: "system" };
+ else if ("object" == typeof n) {
+ let [t, e] = Object.entries(n)[0];
+ s[t] = { text: e };
+ } else s.type = { text: n };
+ if ("object" == typeof i) {
+ let [t, e] = Object.entries(i)[0];
+ s[t] = e;
+ } else s.tags = i;
+ if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ s[t] = e;
+ } else s.link = a;
+ (s.parentBoundary = u), (s.wrap = A()), (p = u), (u = t), d.push(p);
+ },
+ addContainer: function (t, e, n, i, a, s, r, l) {
+ if (null === e || null === n) return;
+ let o = {};
+ const c = h.find((t) => t.alias === e);
+ if ((c && e === c.alias ? (o = c) : ((o.alias = e), h.push(o)), (o.label = null == n ? { text: "" } : { text: n }), null == i))
+ o.techn = { text: "" };
+ else if ("object" == typeof i) {
+ let [t, e] = Object.entries(i)[0];
+ o[t] = { text: e };
+ } else o.techn = { text: i };
+ if (null == a) o.descr = { text: "" };
+ else if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ o[t] = { text: e };
+ } else o.descr = { text: a };
+ if ("object" == typeof s) {
+ let [t, e] = Object.entries(s)[0];
+ o[t] = e;
+ } else o.sprite = s;
+ if ("object" == typeof r) {
+ let [t, e] = Object.entries(r)[0];
+ o[t] = e;
+ } else o.tags = r;
+ if ("object" == typeof l) {
+ let [t, e] = Object.entries(l)[0];
+ o[t] = e;
+ } else o.link = l;
+ (o.wrap = A()), (o.typeC4Shape = { text: t }), (o.parentBoundary = u);
+ },
+ addContainerBoundary: function (t, e, n, i, a) {
+ if (null === t || null === e) return;
+ let s = {};
+ const r = y.find((e) => e.alias === t);
+ if ((r && t === r.alias ? (s = r) : ((s.alias = t), y.push(s)), (s.label = null == e ? { text: "" } : { text: e }), null == n))
+ s.type = { text: "container" };
+ else if ("object" == typeof n) {
+ let [t, e] = Object.entries(n)[0];
+ s[t] = { text: e };
+ } else s.type = { text: n };
+ if ("object" == typeof i) {
+ let [t, e] = Object.entries(i)[0];
+ s[t] = e;
+ } else s.tags = i;
+ if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ s[t] = e;
+ } else s.link = a;
+ (s.parentBoundary = u), (s.wrap = A()), (p = u), (u = t), d.push(p);
+ },
+ addComponent: function (t, e, n, i, a, s, r, l) {
+ if (null === e || null === n) return;
+ let o = {};
+ const c = h.find((t) => t.alias === e);
+ if ((c && e === c.alias ? (o = c) : ((o.alias = e), h.push(o)), (o.label = null == n ? { text: "" } : { text: n }), null == i))
+ o.techn = { text: "" };
+ else if ("object" == typeof i) {
+ let [t, e] = Object.entries(i)[0];
+ o[t] = { text: e };
+ } else o.techn = { text: i };
+ if (null == a) o.descr = { text: "" };
+ else if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ o[t] = { text: e };
+ } else o.descr = { text: a };
+ if ("object" == typeof s) {
+ let [t, e] = Object.entries(s)[0];
+ o[t] = e;
+ } else o.sprite = s;
+ if ("object" == typeof r) {
+ let [t, e] = Object.entries(r)[0];
+ o[t] = e;
+ } else o.tags = r;
+ if ("object" == typeof l) {
+ let [t, e] = Object.entries(l)[0];
+ o[t] = e;
+ } else o.link = l;
+ (o.wrap = A()), (o.typeC4Shape = { text: t }), (o.parentBoundary = u);
+ },
+ addDeploymentNode: function (t, e, n, i, a, s, r, l) {
+ if (null === e || null === n) return;
+ let o = {};
+ const c = y.find((t) => t.alias === e);
+ if ((c && e === c.alias ? (o = c) : ((o.alias = e), y.push(o)), (o.label = null == n ? { text: "" } : { text: n }), null == i))
+ o.type = { text: "node" };
+ else if ("object" == typeof i) {
+ let [t, e] = Object.entries(i)[0];
+ o[t] = { text: e };
+ } else o.type = { text: i };
+ if (null == a) o.descr = { text: "" };
+ else if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ o[t] = { text: e };
+ } else o.descr = { text: a };
+ if ("object" == typeof r) {
+ let [t, e] = Object.entries(r)[0];
+ o[t] = e;
+ } else o.tags = r;
+ if ("object" == typeof l) {
+ let [t, e] = Object.entries(l)[0];
+ o[t] = e;
+ } else o.link = l;
+ (o.nodeType = t), (o.parentBoundary = u), (o.wrap = A()), (p = u), (u = e), d.push(p);
+ },
+ popBoundaryParseStack: function () {
+ (u = p), d.pop(), (p = d.pop()), d.push(p);
+ },
+ addRel: function (t, e, n, i, a, s, r, l, o) {
+ if (null == t || null == e || null == n || null == i) return;
+ let c = {};
+ const h = f.find((t) => t.from === e && t.to === n);
+ if ((h ? (c = h) : f.push(c), (c.type = t), (c.from = e), (c.to = n), (c.label = { text: i }), null == a)) c.techn = { text: "" };
+ else if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ c[t] = { text: e };
+ } else c.techn = { text: a };
+ if (null == s) c.descr = { text: "" };
+ else if ("object" == typeof s) {
+ let [t, e] = Object.entries(s)[0];
+ c[t] = { text: e };
+ } else c.descr = { text: s };
+ if ("object" == typeof r) {
+ let [t, e] = Object.entries(r)[0];
+ c[t] = e;
+ } else c.sprite = r;
+ if ("object" == typeof l) {
+ let [t, e] = Object.entries(l)[0];
+ c[t] = e;
+ } else c.tags = l;
+ if ("object" == typeof o) {
+ let [t, e] = Object.entries(o)[0];
+ c[t] = e;
+ } else c.link = o;
+ c.wrap = A();
+ },
+ updateElStyle: function (t, e, n, i, a, s, r, l, o, c, d) {
+ let u = h.find((t) => t.alias === e);
+ if (void 0 !== u || ((u = y.find((t) => t.alias === e)), void 0 !== u)) {
+ if (null != n)
+ if ("object" == typeof n) {
+ let [t, e] = Object.entries(n)[0];
+ u[t] = e;
+ } else u.bgColor = n;
+ if (null != i)
+ if ("object" == typeof i) {
+ let [t, e] = Object.entries(i)[0];
+ u[t] = e;
+ } else u.fontColor = i;
+ if (null != a)
+ if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ u[t] = e;
+ } else u.borderColor = a;
+ if (null != s)
+ if ("object" == typeof s) {
+ let [t, e] = Object.entries(s)[0];
+ u[t] = e;
+ } else u.shadowing = s;
+ if (null != r)
+ if ("object" == typeof r) {
+ let [t, e] = Object.entries(r)[0];
+ u[t] = e;
+ } else u.shape = r;
+ if (null != l)
+ if ("object" == typeof l) {
+ let [t, e] = Object.entries(l)[0];
+ u[t] = e;
+ } else u.sprite = l;
+ if (null != o)
+ if ("object" == typeof o) {
+ let [t, e] = Object.entries(o)[0];
+ u[t] = e;
+ } else u.techn = o;
+ if (null != c)
+ if ("object" == typeof c) {
+ let [t, e] = Object.entries(c)[0];
+ u[t] = e;
+ } else u.legendText = c;
+ if (null != d)
+ if ("object" == typeof d) {
+ let [t, e] = Object.entries(d)[0];
+ u[t] = e;
+ } else u.legendSprite = d;
+ }
+ },
+ updateRelStyle: function (t, e, n, i, a, s, r) {
+ const l = f.find((t) => t.from === e && t.to === n);
+ if (void 0 !== l) {
+ if (null != i)
+ if ("object" == typeof i) {
+ let [t, e] = Object.entries(i)[0];
+ l[t] = e;
+ } else l.textColor = i;
+ if (null != a)
+ if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ l[t] = e;
+ } else l.lineColor = a;
+ if (null != s)
+ if ("object" == typeof s) {
+ let [t, e] = Object.entries(s)[0];
+ l[t] = parseInt(e);
+ } else l.offsetX = parseInt(s);
+ if (null != r)
+ if ("object" == typeof r) {
+ let [t, e] = Object.entries(r)[0];
+ l[t] = parseInt(e);
+ } else l.offsetY = parseInt(r);
+ }
+ },
+ updateLayoutConfig: function (t, e, n) {
+ let i = _,
+ a = x;
+ if ("object" == typeof e) {
+ const t = Object.values(e)[0];
+ i = parseInt(t);
+ } else i = parseInt(e);
+ if ("object" == typeof n) {
+ const t = Object.values(n)[0];
+ a = parseInt(t);
+ } else a = parseInt(n);
+ i >= 1 && (_ = i), a >= 1 && (x = a);
+ },
+ autoWrap: A,
+ setWrap: function (t) {
+ g = t;
+ },
+ getC4ShapeArray: E,
+ getC4Shape: function (t) {
+ return h.find((e) => e.alias === t);
+ },
+ getC4ShapeKeys: function (t) {
+ return Object.keys(E(t));
+ },
+ getBoundarys: function (t) {
+ return null == t ? y : y.filter((e) => e.parentBoundary === t);
+ },
+ getCurrentBoundaryParse: function () {
+ return u;
+ },
+ getParentBoundaryParse: function () {
+ return p;
+ },
+ getRels: function () {
+ return f;
+ },
+ getTitle: function () {
+ return b;
+ },
+ getC4Type: function () {
+ return m;
+ },
+ getC4ShapeInRow: function () {
+ return _;
+ },
+ getC4BoundaryInRow: function () {
+ return x;
+ },
+ setAccTitle: i.s,
+ getAccTitle: i.g,
+ getAccDescription: i.a,
+ setAccDescription: i.b,
+ parseDirective: function (t, e, n) {
+ i.m.parseDirective(this, t, e, n);
+ },
+ getConfig: () => (0, i.c)().c4,
+ clear: function () {
+ (h = []),
+ (y = [
+ {
+ alias: "global",
+ label: { text: "global" },
+ type: { text: "global" },
+ tags: null,
+ link: null,
+ parentBoundary: "",
+ },
+ ]),
+ (p = ""),
+ (u = "global"),
+ (d = [""]),
+ (f = []),
+ (d = [""]),
+ (b = ""),
+ (g = !1),
+ (_ = 4),
+ (x = 2);
+ },
+ LINETYPE: {
+ SOLID: 0,
+ DOTTED: 1,
+ NOTE: 2,
+ SOLID_CROSS: 3,
+ DOTTED_CROSS: 4,
+ SOLID_OPEN: 5,
+ DOTTED_OPEN: 6,
+ LOOP_START: 10,
+ LOOP_END: 11,
+ ALT_START: 12,
+ ALT_ELSE: 13,
+ ALT_END: 14,
+ OPT_START: 15,
+ OPT_END: 16,
+ ACTIVE_START: 17,
+ ACTIVE_END: 18,
+ PAR_START: 19,
+ PAR_AND: 20,
+ PAR_END: 21,
+ RECT_START: 22,
+ RECT_END: 23,
+ SOLID_POINT: 24,
+ DOTTED_POINT: 25,
+ },
+ ARROWTYPE: { FILLED: 0, OPEN: 1 },
+ PLACEMENT: { LEFTOF: 0, RIGHTOF: 1, OVER: 2 },
+ setTitle: function (t) {
+ let e = (0, i.d)(t, (0, i.c)());
+ b = e;
+ },
+ setC4Type: function (t) {
+ let e = (0, i.d)(t, (0, i.c)());
+ m = e;
+ },
+ },
+ v = function (t, e) {
+ return (0, s.d)(t, e);
+ },
+ C = (function () {
+ function t(t, e, n, i, s, r, l) {
+ a(
+ e
+ .append("text")
+ .attr("x", n + s / 2)
+ .attr("y", i + r / 2 + 5)
+ .style("text-anchor", "middle")
+ .text(t),
+ l,
+ );
+ }
+ function e(t, e, n, s, r, l, o, c) {
+ const { fontSize: h, fontFamily: d, fontWeight: u } = c,
+ p = t.split(i.e.lineBreakRegex);
+ for (let t = 0; t < p.length; t++) {
+ const i = t * h - (h * (p.length - 1)) / 2,
+ l = e
+ .append("text")
+ .attr("x", n + r / 2)
+ .attr("y", s)
+ .style("text-anchor", "middle")
+ .attr("dominant-baseline", "middle")
+ .style("font-size", h)
+ .style("font-weight", u)
+ .style("font-family", d);
+ l.append("tspan").attr("dy", i).text(p[t]).attr("alignment-baseline", "mathematical"), a(l, o);
+ }
+ }
+ function n(t, n, i, s, r, l, o, c) {
+ const h = n.append("switch"),
+ d = h
+ .append("foreignObject")
+ .attr("x", i)
+ .attr("y", s)
+ .attr("width", r)
+ .attr("height", l)
+ .append("xhtml:div")
+ .style("display", "table")
+ .style("height", "100%")
+ .style("width", "100%");
+ d.append("div").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(t),
+ e(t, h, i, s, r, 0, o, c),
+ a(d, o);
+ }
+ function a(t, e) {
+ for (const n in e) e.hasOwnProperty(n) && t.attr(n, e[n]);
+ }
+ return function (i) {
+ return "fo" === i.textPlacement ? n : "old" === i.textPlacement ? t : e;
+ };
+ })(),
+ k = function (t, e, n) {
+ var i;
+ let a = e.bgColor ? e.bgColor : n[e.typeC4Shape.text + "_bg_color"],
+ l = e.borderColor ? e.borderColor : n[e.typeC4Shape.text + "_border_color"],
+ o = e.fontColor ? e.fontColor : "#FFFFFF",
+ c =
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";
+ switch (e.typeC4Shape.text) {
+ case "person":
+ c =
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";
+ break;
+ case "external_person":
+ c =
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";
+ }
+ const h = t.append("g");
+ h.attr("class", "person-man");
+ const d = (0, s.g)();
+ switch (e.typeC4Shape.text) {
+ case "person":
+ case "external_person":
+ case "system":
+ case "external_system":
+ case "container":
+ case "external_container":
+ case "component":
+ case "external_component":
+ (d.x = e.x),
+ (d.y = e.y),
+ (d.fill = a),
+ (d.width = e.width),
+ (d.height = e.height),
+ (d.stroke = l),
+ (d.rx = 2.5),
+ (d.ry = 2.5),
+ (d.attrs = { "stroke-width": 0.5 }),
+ v(h, d);
+ break;
+ case "system_db":
+ case "external_system_db":
+ case "container_db":
+ case "external_container_db":
+ case "component_db":
+ case "external_component_db":
+ h
+ .append("path")
+ .attr("fill", a)
+ .attr("stroke-width", "0.5")
+ .attr("stroke", l)
+ .attr(
+ "d",
+ "Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height"
+ .replaceAll("startx", e.x)
+ .replaceAll("starty", e.y)
+ .replaceAll("half", e.width / 2)
+ .replaceAll("height", e.height),
+ ),
+ h
+ .append("path")
+ .attr("fill", "none")
+ .attr("stroke-width", "0.5")
+ .attr("stroke", l)
+ .attr(
+ "d",
+ "Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10"
+ .replaceAll("startx", e.x)
+ .replaceAll("starty", e.y)
+ .replaceAll("half", e.width / 2),
+ );
+ break;
+ case "system_queue":
+ case "external_system_queue":
+ case "container_queue":
+ case "external_container_queue":
+ case "component_queue":
+ case "external_component_queue":
+ h
+ .append("path")
+ .attr("fill", a)
+ .attr("stroke-width", "0.5")
+ .attr("stroke", l)
+ .attr(
+ "d",
+ "Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half"
+ .replaceAll("startx", e.x)
+ .replaceAll("starty", e.y)
+ .replaceAll("width", e.width)
+ .replaceAll("half", e.height / 2),
+ ),
+ h
+ .append("path")
+ .attr("fill", "none")
+ .attr("stroke-width", "0.5")
+ .attr("stroke", l)
+ .attr(
+ "d",
+ "Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half"
+ .replaceAll("startx", e.x + e.width)
+ .replaceAll("starty", e.y)
+ .replaceAll("half", e.height / 2),
+ );
+ }
+ let u =
+ ((p = n),
+ (y = e.typeC4Shape.text),
+ {
+ fontFamily: p[y + "FontFamily"],
+ fontSize: p[y + "FontSize"],
+ fontWeight: p[y + "FontWeight"],
+ });
+ var p, y;
+ switch (
+ (h
+ .append("text")
+ .attr("fill", o)
+ .attr("font-family", u.fontFamily)
+ .attr("font-size", u.fontSize - 2)
+ .attr("font-style", "italic")
+ .attr("lengthAdjust", "spacing")
+ .attr("textLength", e.typeC4Shape.width)
+ .attr("x", e.x + e.width / 2 - e.typeC4Shape.width / 2)
+ .attr("y", e.y + e.typeC4Shape.Y)
+ .text("<<" + e.typeC4Shape.text + ">>"),
+ e.typeC4Shape.text)
+ ) {
+ case "person":
+ case "external_person":
+ !(function (t, e, n, i, a, s) {
+ const l = t.append("image");
+ l.attr("width", e), l.attr("height", n), l.attr("x", i), l.attr("y", a);
+ let o = s.startsWith("data:image/png;base64") ? s : (0, r.Nm)(s);
+ l.attr("xlink:href", o);
+ })(h, 48, 48, e.x + e.width / 2 - 24, e.y + e.image.Y, c);
+ }
+ let f = n[e.typeC4Shape.text + "Font"]();
+ return (
+ (f.fontWeight = "bold"),
+ (f.fontSize = f.fontSize + 2),
+ (f.fontColor = o),
+ C(n)(e.label.text, h, e.x, e.y + e.label.Y, e.width, e.height, { fill: o }, f),
+ (f = n[e.typeC4Shape.text + "Font"]()),
+ (f.fontColor = o),
+ e.techn && "" !== (null == (i = e.techn) ? void 0 : i.text)
+ ? C(n)(e.techn.text, h, e.x, e.y + e.techn.Y, e.width, e.height, { fill: o, "font-style": "italic" }, f)
+ : e.type && "" !== e.type.text && C(n)(e.type.text, h, e.x, e.y + e.type.Y, e.width, e.height, { fill: o, "font-style": "italic" }, f),
+ e.descr &&
+ "" !== e.descr.text &&
+ ((f = n.personFont()), (f.fontColor = o), C(n)(e.descr.text, h, e.x, e.y + e.descr.Y, e.width, e.height, { fill: o }, f)),
+ e.height
+ );
+ };
+ let O = 0,
+ T = 0,
+ w = 4,
+ D = 2;
+ l.yy = S;
+ let R = {};
+ class N {
+ constructor(t) {
+ (this.name = ""),
+ (this.data = {}),
+ (this.data.startx = void 0),
+ (this.data.stopx = void 0),
+ (this.data.starty = void 0),
+ (this.data.stopy = void 0),
+ (this.data.widthLimit = void 0),
+ (this.nextData = {}),
+ (this.nextData.startx = void 0),
+ (this.nextData.stopx = void 0),
+ (this.nextData.starty = void 0),
+ (this.nextData.stopy = void 0),
+ (this.nextData.cnt = 0),
+ P(t.db.getConfig());
+ }
+ setData(t, e, n, i) {
+ (this.nextData.startx = this.data.startx = t),
+ (this.nextData.stopx = this.data.stopx = e),
+ (this.nextData.starty = this.data.starty = n),
+ (this.nextData.stopy = this.data.stopy = i);
+ }
+ updateVal(t, e, n, i) {
+ void 0 === t[e] ? (t[e] = n) : (t[e] = i(n, t[e]));
+ }
+ insert(t) {
+ this.nextData.cnt = this.nextData.cnt + 1;
+ let e = this.nextData.startx === this.nextData.stopx ? this.nextData.stopx + t.margin : this.nextData.stopx + 2 * t.margin,
+ n = e + t.width,
+ i = this.nextData.starty + 2 * t.margin,
+ a = i + t.height;
+ (e >= this.data.widthLimit || n >= this.data.widthLimit || this.nextData.cnt > w) &&
+ ((e = this.nextData.startx + t.margin + R.nextLinePaddingX),
+ (i = this.nextData.stopy + 2 * t.margin),
+ (this.nextData.stopx = n = e + t.width),
+ (this.nextData.starty = this.nextData.stopy),
+ (this.nextData.stopy = a = i + t.height),
+ (this.nextData.cnt = 1)),
+ (t.x = e),
+ (t.y = i),
+ this.updateVal(this.data, "startx", e, Math.min),
+ this.updateVal(this.data, "starty", i, Math.min),
+ this.updateVal(this.data, "stopx", n, Math.max),
+ this.updateVal(this.data, "stopy", a, Math.max),
+ this.updateVal(this.nextData, "startx", e, Math.min),
+ this.updateVal(this.nextData, "starty", i, Math.min),
+ this.updateVal(this.nextData, "stopx", n, Math.max),
+ this.updateVal(this.nextData, "stopy", a, Math.max);
+ }
+ init(t) {
+ (this.name = ""),
+ (this.data = {
+ startx: void 0,
+ stopx: void 0,
+ starty: void 0,
+ stopy: void 0,
+ widthLimit: void 0,
+ }),
+ (this.nextData = {
+ startx: void 0,
+ stopx: void 0,
+ starty: void 0,
+ stopy: void 0,
+ cnt: 0,
+ }),
+ P(t.db.getConfig());
+ }
+ bumpLastMargin(t) {
+ (this.data.stopx += t), (this.data.stopy += t);
+ }
+ }
+ const P = function (t) {
+ (0, i.f)(R, t),
+ t.fontFamily && (R.personFontFamily = R.systemFontFamily = R.messageFontFamily = t.fontFamily),
+ t.fontSize && (R.personFontSize = R.systemFontSize = R.messageFontSize = t.fontSize),
+ t.fontWeight && (R.personFontWeight = R.systemFontWeight = R.messageFontWeight = t.fontWeight);
+ },
+ M = (t, e) => ({
+ fontFamily: t[e + "FontFamily"],
+ fontSize: t[e + "FontSize"],
+ fontWeight: t[e + "FontWeight"],
+ }),
+ j = (t) => ({
+ fontFamily: t.boundaryFontFamily,
+ fontSize: t.boundaryFontSize,
+ fontWeight: t.boundaryFontWeight,
+ });
+ function B(t, e, n, a, s) {
+ if (!e[t].width)
+ if (n)
+ (e[t].text = (0, i.w)(e[t].text, s, a)),
+ (e[t].textLines = e[t].text.split(i.e.lineBreakRegex).length),
+ (e[t].width = s),
+ (e[t].height = (0, i.j)(e[t].text, a));
+ else {
+ let n = e[t].text.split(i.e.lineBreakRegex);
+ e[t].textLines = n.length;
+ let s = 0;
+ (e[t].height = 0), (e[t].width = 0);
+ for (const r of n) (e[t].width = Math.max((0, i.h)(r, a), e[t].width)), (s = (0, i.j)(r, a)), (e[t].height = e[t].height + s);
+ }
+ }
+ const Y = function (t, e, n) {
+ (e.x = n.data.startx),
+ (e.y = n.data.starty),
+ (e.width = n.data.stopx - n.data.startx),
+ (e.height = n.data.stopy - n.data.starty),
+ (e.label.y = R.c4ShapeMargin - 35);
+ let a = e.wrap && R.wrap,
+ s = j(R);
+ (s.fontSize = s.fontSize + 2),
+ (s.fontWeight = "bold"),
+ B("label", e, a, s, (0, i.h)(e.label.text, s)),
+ (function (t, e, n) {
+ const i = t.append("g");
+ let a = e.bgColor ? e.bgColor : "none",
+ s = e.borderColor ? e.borderColor : "#444444",
+ r = e.fontColor ? e.fontColor : "black",
+ l = { "stroke-width": 1, "stroke-dasharray": "7.0,7.0" };
+ e.nodeType && (l = { "stroke-width": 1 });
+ let o = {
+ x: e.x,
+ y: e.y,
+ fill: a,
+ stroke: s,
+ width: e.width,
+ height: e.height,
+ rx: 2.5,
+ ry: 2.5,
+ attrs: l,
+ };
+ v(i, o);
+ let c = n.boundaryFont();
+ (c.fontWeight = "bold"),
+ (c.fontSize = c.fontSize + 2),
+ (c.fontColor = r),
+ C(n)(e.label.text, i, e.x, e.y + e.label.Y, e.width, e.height, { fill: "#444444" }, c),
+ e.type &&
+ "" !== e.type.text &&
+ ((c = n.boundaryFont()), (c.fontColor = r), C(n)(e.type.text, i, e.x, e.y + e.type.Y, e.width, e.height, { fill: "#444444" }, c)),
+ e.descr &&
+ "" !== e.descr.text &&
+ ((c = n.boundaryFont()),
+ (c.fontSize = c.fontSize - 2),
+ (c.fontColor = r),
+ C(n)(e.descr.text, i, e.x, e.y + e.descr.Y, e.width, e.height, { fill: "#444444" }, c));
+ })(t, e, R);
+ },
+ L = function (t, e, n, a) {
+ let s = 0;
+ for (const r of a) {
+ s = 0;
+ const a = n[r];
+ let l = M(R, a.typeC4Shape.text);
+ switch (
+ ((l.fontSize = l.fontSize - 2),
+ (a.typeC4Shape.width = (0, i.h)("«" + a.typeC4Shape.text + "»", l)),
+ (a.typeC4Shape.height = l.fontSize + 2),
+ (a.typeC4Shape.Y = R.c4ShapePadding),
+ (s = a.typeC4Shape.Y + a.typeC4Shape.height - 4),
+ (a.image = { width: 0, height: 0, Y: 0 }),
+ a.typeC4Shape.text)
+ ) {
+ case "person":
+ case "external_person":
+ (a.image.width = 48), (a.image.height = 48), (a.image.Y = s), (s = a.image.Y + a.image.height);
+ }
+ a.sprite && ((a.image.width = 48), (a.image.height = 48), (a.image.Y = s), (s = a.image.Y + a.image.height));
+ let o = a.wrap && R.wrap,
+ c = R.width - 2 * R.c4ShapePadding,
+ h = M(R, a.typeC4Shape.text);
+ (h.fontSize = h.fontSize + 2),
+ (h.fontWeight = "bold"),
+ B("label", a, o, h, c),
+ (a.label.Y = s + 8),
+ (s = a.label.Y + a.label.height),
+ a.type && "" !== a.type.text
+ ? ((a.type.text = "[" + a.type.text + "]"),
+ B("type", a, o, M(R, a.typeC4Shape.text), c),
+ (a.type.Y = s + 5),
+ (s = a.type.Y + a.type.height))
+ : a.techn &&
+ "" !== a.techn.text &&
+ ((a.techn.text = "[" + a.techn.text + "]"),
+ B("techn", a, o, M(R, a.techn.text), c),
+ (a.techn.Y = s + 5),
+ (s = a.techn.Y + a.techn.height));
+ let d = s,
+ u = a.label.width;
+ a.descr &&
+ "" !== a.descr.text &&
+ (B("descr", a, o, M(R, a.typeC4Shape.text), c),
+ (a.descr.Y = s + 20),
+ (s = a.descr.Y + a.descr.height),
+ (u = Math.max(a.label.width, a.descr.width)),
+ (d = s - 5 * a.descr.textLines)),
+ (u += R.c4ShapePadding),
+ (a.width = Math.max(a.width || R.width, u, R.width)),
+ (a.height = Math.max(a.height || R.height, d, R.height)),
+ (a.margin = a.margin || R.c4ShapeMargin),
+ t.insert(a),
+ k(e, a, R);
+ }
+ t.bumpLastMargin(R.c4ShapeMargin);
+ };
+ class I {
+ constructor(t, e) {
+ (this.x = t), (this.y = e);
+ }
+ }
+ let U = function (t, e) {
+ let n = t.x,
+ i = t.y,
+ a = e.x,
+ s = e.y,
+ r = n + t.width / 2,
+ l = i + t.height / 2,
+ o = Math.abs(n - a),
+ c = Math.abs(i - s),
+ h = c / o,
+ d = t.height / t.width,
+ u = null;
+ return (
+ i == s && n < a
+ ? (u = new I(n + t.width, l))
+ : i == s && n > a
+ ? (u = new I(n, l))
+ : n == a && i < s
+ ? (u = new I(r, i + t.height))
+ : n == a && i > s && (u = new I(r, i)),
+ n > a && i < s
+ ? (u = d >= h ? new I(n, l + (h * t.width) / 2) : new I(r - ((o / c) * t.height) / 2, i + t.height))
+ : n < a && i < s
+ ? (u = d >= h ? new I(n + t.width, l + (h * t.width) / 2) : new I(r + ((o / c) * t.height) / 2, i + t.height))
+ : n < a && i > s
+ ? (u = d >= h ? new I(n + t.width, l - (h * t.width) / 2) : new I(r + ((t.height / 2) * o) / c, i))
+ : n > a && i > s && (u = d >= h ? new I(n, l - (t.width / 2) * h) : new I(r - ((t.height / 2) * o) / c, i)),
+ u
+ );
+ },
+ F = function (t, e) {
+ let n = { x: 0, y: 0 };
+ (n.x = e.x + e.width / 2), (n.y = e.y + e.height / 2);
+ let i = U(t, n);
+ return (n.x = t.x + t.width / 2), (n.y = t.y + t.height / 2), { startPoint: i, endPoint: U(e, n) };
+ };
+ function X(t, e, n, i, a) {
+ let s = new N(a);
+ s.data.widthLimit = n.data.widthLimit / Math.min(D, i.length);
+ for (let [r, l] of i.entries()) {
+ let i = 0;
+ (l.image = { width: 0, height: 0, Y: 0 }),
+ l.sprite && ((l.image.width = 48), (l.image.height = 48), (l.image.Y = i), (i = l.image.Y + l.image.height));
+ let o = l.wrap && R.wrap,
+ c = j(R);
+ if (
+ ((c.fontSize = c.fontSize + 2),
+ (c.fontWeight = "bold"),
+ B("label", l, o, c, s.data.widthLimit),
+ (l.label.Y = i + 8),
+ (i = l.label.Y + l.label.height),
+ l.type &&
+ "" !== l.type.text &&
+ ((l.type.text = "[" + l.type.text + "]"), B("type", l, o, j(R), s.data.widthLimit), (l.type.Y = i + 5), (i = l.type.Y + l.type.height)),
+ l.descr && "" !== l.descr.text)
+ ) {
+ let t = j(R);
+ (t.fontSize = t.fontSize - 2), B("descr", l, o, t, s.data.widthLimit), (l.descr.Y = i + 20), (i = l.descr.Y + l.descr.height);
+ }
+ if (0 == r || r % D == 0) {
+ let t = n.data.startx + R.diagramMarginX,
+ e = n.data.stopy + R.diagramMarginY + i;
+ s.setData(t, t, e, e);
+ } else {
+ let t = s.data.stopx !== s.data.startx ? s.data.stopx + R.diagramMarginX : s.data.startx,
+ e = s.data.starty;
+ s.setData(t, t, e, e);
+ }
+ s.name = l.alias;
+ let h = a.db.getC4ShapeArray(l.alias),
+ d = a.db.getC4ShapeKeys(l.alias);
+ d.length > 0 && L(s, t, h, d), (e = l.alias);
+ let u = a.db.getBoundarys(e);
+ u.length > 0 && X(t, e, s, u, a),
+ "global" !== l.alias && Y(t, l, s),
+ (n.data.stopy = Math.max(s.data.stopy + R.c4ShapeMargin, n.data.stopy)),
+ (n.data.stopx = Math.max(s.data.stopx + R.c4ShapeMargin, n.data.stopx)),
+ (O = Math.max(O, n.data.stopx)),
+ (T = Math.max(T, n.data.stopy));
+ }
+ }
+ const z = {
+ drawPersonOrSystemArray: L,
+ drawBoundary: Y,
+ setConf: P,
+ draw: function (t, e, n, s) {
+ R = (0, i.c)().c4;
+ const r = (0, i.c)().securityLevel;
+ let l;
+ "sandbox" === r && (l = (0, a.Ys)("#i" + e));
+ const o = "sandbox" === r ? (0, a.Ys)(l.nodes()[0].contentDocument.body) : (0, a.Ys)("body");
+ let c = s.db;
+ s.db.setWrap(R.wrap), (w = c.getC4ShapeInRow()), (D = c.getC4BoundaryInRow()), i.l.debug(`C:${JSON.stringify(R, null, 2)}`);
+ const h = "sandbox" === r ? o.select(`[id="${e}"]`) : (0, a.Ys)(`[id="${e}"]`);
+ h
+ .append("defs")
+ .append("symbol")
+ .attr("id", "computer")
+ .attr("width", "24")
+ .attr("height", "24")
+ .append("path")
+ .attr("transform", "scale(.5)")
+ .attr(
+ "d",
+ "M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z",
+ ),
+ (function (t) {
+ t.append("defs")
+ .append("symbol")
+ .attr("id", "database")
+ .attr("fill-rule", "evenodd")
+ .attr("clip-rule", "evenodd")
+ .append("path")
+ .attr("transform", "scale(.5)")
+ .attr(
+ "d",
+ "M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z",
+ );
+ })(h),
+ (function (t) {
+ t.append("defs")
+ .append("symbol")
+ .attr("id", "clock")
+ .attr("width", "24")
+ .attr("height", "24")
+ .append("path")
+ .attr("transform", "scale(.5)")
+ .attr(
+ "d",
+ "M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z",
+ );
+ })(h);
+ let d = new N(s);
+ d.setData(R.diagramMarginX, R.diagramMarginX, R.diagramMarginY, R.diagramMarginY),
+ (d.data.widthLimit = screen.availWidth),
+ (O = R.diagramMarginX),
+ (T = R.diagramMarginY);
+ const u = s.db.getTitle();
+ X(h, "", d, s.db.getBoundarys(""), s),
+ (function (t) {
+ t.append("defs")
+ .append("marker")
+ .attr("id", "arrowhead")
+ .attr("refX", 9)
+ .attr("refY", 5)
+ .attr("markerUnits", "userSpaceOnUse")
+ .attr("markerWidth", 12)
+ .attr("markerHeight", 12)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 0 0 L 10 5 L 0 10 z");
+ })(h),
+ (function (t) {
+ t.append("defs")
+ .append("marker")
+ .attr("id", "arrowend")
+ .attr("refX", 1)
+ .attr("refY", 5)
+ .attr("markerUnits", "userSpaceOnUse")
+ .attr("markerWidth", 12)
+ .attr("markerHeight", 12)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 10 0 L 0 5 L 10 10 z");
+ })(h),
+ (function (t) {
+ const e = t
+ .append("defs")
+ .append("marker")
+ .attr("id", "crosshead")
+ .attr("markerWidth", 15)
+ .attr("markerHeight", 8)
+ .attr("orient", "auto")
+ .attr("refX", 16)
+ .attr("refY", 4);
+ e
+ .append("path")
+ .attr("fill", "black")
+ .attr("stroke", "#000000")
+ .style("stroke-dasharray", "0, 0")
+ .attr("stroke-width", "1px")
+ .attr("d", "M 9,2 V 6 L16,4 Z"),
+ e
+ .append("path")
+ .attr("fill", "none")
+ .attr("stroke", "#000000")
+ .style("stroke-dasharray", "0, 0")
+ .attr("stroke-width", "1px")
+ .attr("d", "M 0,1 L 6,7 M 6,1 L 0,7");
+ })(h),
+ (function (t) {
+ t.append("defs")
+ .append("marker")
+ .attr("id", "filled-head")
+ .attr("refX", 18)
+ .attr("refY", 7)
+ .attr("markerWidth", 20)
+ .attr("markerHeight", 28)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
+ })(h),
+ (function (t, e, n, a) {
+ let s = 0;
+ for (let t of e) {
+ s += 1;
+ let e = t.wrap && R.wrap,
+ l = {
+ fontFamily: (r = R).messageFontFamily,
+ fontSize: r.messageFontSize,
+ fontWeight: r.messageFontWeight,
+ };
+ "C4Dynamic" === a.db.getC4Type() && (t.label.text = s + ": " + t.label.text);
+ let o = (0, i.h)(t.label.text, l);
+ B("label", t, e, l, o),
+ t.techn && "" !== t.techn.text && ((o = (0, i.h)(t.techn.text, l)), B("techn", t, e, l, o)),
+ t.descr && "" !== t.descr.text && ((o = (0, i.h)(t.descr.text, l)), B("descr", t, e, l, o));
+ let c = n(t.from),
+ h = n(t.to),
+ d = F(c, h);
+ (t.startPoint = d.startPoint), (t.endPoint = d.endPoint);
+ }
+ var r;
+ ((t, e, n) => {
+ const i = t.append("g");
+ let a = 0;
+ for (let t of e) {
+ let e = t.textColor ? t.textColor : "#444444",
+ s = t.lineColor ? t.lineColor : "#444444",
+ r = t.offsetX ? parseInt(t.offsetX) : 0,
+ l = t.offsetY ? parseInt(t.offsetY) : 0,
+ o = "";
+ if (0 === a) {
+ let e = i.append("line");
+ e.attr("x1", t.startPoint.x),
+ e.attr("y1", t.startPoint.y),
+ e.attr("x2", t.endPoint.x),
+ e.attr("y2", t.endPoint.y),
+ e.attr("stroke-width", "1"),
+ e.attr("stroke", s),
+ e.style("fill", "none"),
+ "rel_b" !== t.type && e.attr("marker-end", "url(" + o + "#arrowhead)"),
+ ("birel" !== t.type && "rel_b" !== t.type) || e.attr("marker-start", "url(" + o + "#arrowend)"),
+ (a = -1);
+ } else {
+ let e = i.append("path");
+ e
+ .attr("fill", "none")
+ .attr("stroke-width", "1")
+ .attr("stroke", s)
+ .attr(
+ "d",
+ "Mstartx,starty Qcontrolx,controly stopx,stopy "
+ .replaceAll("startx", t.startPoint.x)
+ .replaceAll("starty", t.startPoint.y)
+ .replaceAll("controlx", t.startPoint.x + (t.endPoint.x - t.startPoint.x) / 2 - (t.endPoint.x - t.startPoint.x) / 4)
+ .replaceAll("controly", t.startPoint.y + (t.endPoint.y - t.startPoint.y) / 2)
+ .replaceAll("stopx", t.endPoint.x)
+ .replaceAll("stopy", t.endPoint.y),
+ ),
+ "rel_b" !== t.type && e.attr("marker-end", "url(" + o + "#arrowhead)"),
+ ("birel" !== t.type && "rel_b" !== t.type) || e.attr("marker-start", "url(" + o + "#arrowend)");
+ }
+ let c = n.messageFont();
+ C(n)(
+ t.label.text,
+ i,
+ Math.min(t.startPoint.x, t.endPoint.x) + Math.abs(t.endPoint.x - t.startPoint.x) / 2 + r,
+ Math.min(t.startPoint.y, t.endPoint.y) + Math.abs(t.endPoint.y - t.startPoint.y) / 2 + l,
+ t.label.width,
+ t.label.height,
+ { fill: e },
+ c,
+ ),
+ t.techn &&
+ "" !== t.techn.text &&
+ ((c = n.messageFont()),
+ C(n)(
+ "[" + t.techn.text + "]",
+ i,
+ Math.min(t.startPoint.x, t.endPoint.x) + Math.abs(t.endPoint.x - t.startPoint.x) / 2 + r,
+ Math.min(t.startPoint.y, t.endPoint.y) + Math.abs(t.endPoint.y - t.startPoint.y) / 2 + n.messageFontSize + 5 + l,
+ Math.max(t.label.width, t.techn.width),
+ t.techn.height,
+ { fill: e, "font-style": "italic" },
+ c,
+ ));
+ }
+ })(t, e, R);
+ })(h, s.db.getRels(), s.db.getC4Shape, s),
+ (d.data.stopx = O),
+ (d.data.stopy = T);
+ const p = d.data;
+ let y = p.stopy - p.starty + 2 * R.diagramMarginY;
+ const f = p.stopx - p.startx + 2 * R.diagramMarginX;
+ u &&
+ h
+ .append("text")
+ .text(u)
+ .attr("x", (p.stopx - p.startx) / 2 - 4 * R.diagramMarginX)
+ .attr("y", p.starty + R.diagramMarginY),
+ (0, i.i)(h, y, f, R.useMaxWidth);
+ const b = u ? 60 : 0;
+ h.attr("viewBox", p.startx - R.diagramMarginX + " -" + (R.diagramMarginY + b) + " " + f + " " + (y + b)), i.l.debug("models:", p);
+ },
+ },
+ Q = {
+ parser: o,
+ db: S,
+ renderer: z,
+ styles: (t) => `.person {\n stroke: ${t.personBorder};\n fill: ${t.personBkg};\n }\n`,
+ init: (t) => {
+ z.setConf(t.c4);
+ },
+ };
+ },
+ 8252: function (t, e, n) {
+ n.d(e, {
+ a: function () {
+ return r;
+ },
+ b: function () {
+ return c;
+ },
+ c: function () {
+ return o;
+ },
+ d: function () {
+ return s;
+ },
+ e: function () {
+ return d;
+ },
+ f: function () {
+ return l;
+ },
+ g: function () {
+ return h;
+ },
+ });
+ var i = n(7967),
+ a = n(9339);
+ const s = (t, e) => {
+ const n = t.append("rect");
+ if (
+ (n.attr("x", e.x),
+ n.attr("y", e.y),
+ n.attr("fill", e.fill),
+ n.attr("stroke", e.stroke),
+ n.attr("width", e.width),
+ n.attr("height", e.height),
+ void 0 !== e.rx && n.attr("rx", e.rx),
+ void 0 !== e.ry && n.attr("ry", e.ry),
+ void 0 !== e.attrs)
+ )
+ for (const t in e.attrs) n.attr(t, e.attrs[t]);
+ return void 0 !== e.class && n.attr("class", e.class), n;
+ },
+ r = (t, e) => {
+ const n = {
+ x: e.startx,
+ y: e.starty,
+ width: e.stopx - e.startx,
+ height: e.stopy - e.starty,
+ fill: e.fill,
+ stroke: e.stroke,
+ class: "rect",
+ };
+ s(t, n).lower();
+ },
+ l = (t, e) => {
+ const n = e.text.replace(a.J, " "),
+ i = t.append("text");
+ i.attr("x", e.x),
+ i.attr("y", e.y),
+ i.attr("class", "legend"),
+ i.style("text-anchor", e.anchor),
+ void 0 !== e.class && i.attr("class", e.class);
+ const s = i.append("tspan");
+ return s.attr("x", e.x + 2 * e.textMargin), s.text(n), i;
+ },
+ o = (t, e, n, a) => {
+ const s = t.append("image");
+ s.attr("x", e), s.attr("y", n);
+ const r = (0, i.Nm)(a);
+ s.attr("xlink:href", r);
+ },
+ c = (t, e, n, a) => {
+ const s = t.append("use");
+ s.attr("x", e), s.attr("y", n);
+ const r = (0, i.Nm)(a);
+ s.attr("xlink:href", `#${r}`);
+ },
+ h = () => ({
+ x: 0,
+ y: 0,
+ width: 100,
+ height: 100,
+ fill: "#EDF2AE",
+ stroke: "#666",
+ anchor: "start",
+ rx: 0,
+ ry: 0,
+ }),
+ d = () => ({
+ x: 0,
+ y: 0,
+ width: 100,
+ height: 100,
+ "text-anchor": "start",
+ style: "#666",
+ textMargin: 0,
+ rx: 0,
+ ry: 0,
+ tspan: !0,
+ });
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/546-560b35c2.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/546-560b35c2.chunk.min.js
new file mode 100644
index 000000000..d2c25727e
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/546-560b35c2.chunk.min.js
@@ -0,0 +1,745 @@
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [546],
+ {
+ 3546: function (t, e, i) {
+ i.d(e, {
+ diagram: function () {
+ return y;
+ },
+ });
+ var n = i(9339),
+ s = i(7274),
+ r =
+ (i(7484),
+ i(7967),
+ i(7856),
+ (function () {
+ var t = function (t, e, i, n) {
+ for (i = i || {}, n = t.length; n--; i[t[n]] = e);
+ return i;
+ },
+ e = [1, 4],
+ i = [1, 5],
+ n = [1, 6],
+ s = [1, 7],
+ r = [1, 9],
+ c = [1, 11, 13, 15, 17, 19, 20, 26, 27, 28, 29],
+ l = [2, 5],
+ a = [1, 6, 11, 13, 15, 17, 19, 20, 26, 27, 28, 29],
+ o = [26, 27, 28],
+ h = [2, 8],
+ u = [1, 18],
+ y = [1, 19],
+ p = [1, 20],
+ d = [1, 21],
+ g = [1, 22],
+ _ = [1, 23],
+ f = [1, 28],
+ m = [6, 26, 27, 28, 29],
+ v = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ eol: 4,
+ directive: 5,
+ PIE: 6,
+ document: 7,
+ showData: 8,
+ line: 9,
+ statement: 10,
+ txt: 11,
+ value: 12,
+ title: 13,
+ title_value: 14,
+ acc_title: 15,
+ acc_title_value: 16,
+ acc_descr: 17,
+ acc_descr_value: 18,
+ acc_descr_multiline_value: 19,
+ section: 20,
+ openDirective: 21,
+ typeDirective: 22,
+ closeDirective: 23,
+ ":": 24,
+ argDirective: 25,
+ NEWLINE: 26,
+ ";": 27,
+ EOF: 28,
+ open_directive: 29,
+ type_directive: 30,
+ arg_directive: 31,
+ close_directive: 32,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 6: "PIE",
+ 8: "showData",
+ 11: "txt",
+ 12: "value",
+ 13: "title",
+ 14: "title_value",
+ 15: "acc_title",
+ 16: "acc_title_value",
+ 17: "acc_descr",
+ 18: "acc_descr_value",
+ 19: "acc_descr_multiline_value",
+ 20: "section",
+ 24: ":",
+ 26: "NEWLINE",
+ 27: ";",
+ 28: "EOF",
+ 29: "open_directive",
+ 30: "type_directive",
+ 31: "arg_directive",
+ 32: "close_directive",
+ },
+ productions_: [
+ 0,
+ [3, 2],
+ [3, 2],
+ [3, 2],
+ [3, 3],
+ [7, 0],
+ [7, 2],
+ [9, 2],
+ [10, 0],
+ [10, 2],
+ [10, 2],
+ [10, 2],
+ [10, 2],
+ [10, 1],
+ [10, 1],
+ [10, 1],
+ [5, 3],
+ [5, 5],
+ [4, 1],
+ [4, 1],
+ [4, 1],
+ [21, 1],
+ [22, 1],
+ [25, 1],
+ [23, 1],
+ ],
+ performAction: function (t, e, i, n, s, r, c) {
+ var l = r.length - 1;
+ switch (s) {
+ case 4:
+ n.setShowData(!0);
+ break;
+ case 7:
+ this.$ = r[l - 1];
+ break;
+ case 9:
+ n.addSection(r[l - 1], n.cleanupValue(r[l]));
+ break;
+ case 10:
+ (this.$ = r[l].trim()), n.setDiagramTitle(this.$);
+ break;
+ case 11:
+ (this.$ = r[l].trim()), n.setAccTitle(this.$);
+ break;
+ case 12:
+ case 13:
+ (this.$ = r[l].trim()), n.setAccDescription(this.$);
+ break;
+ case 14:
+ n.addSection(r[l].substr(8)), (this.$ = r[l].substr(8));
+ break;
+ case 21:
+ n.parseDirective("%%{", "open_directive");
+ break;
+ case 22:
+ n.parseDirective(r[l], "type_directive");
+ break;
+ case 23:
+ (r[l] = r[l].trim().replace(/'/g, '"')), n.parseDirective(r[l], "arg_directive");
+ break;
+ case 24:
+ n.parseDirective("}%%", "close_directive", "pie");
+ }
+ },
+ table: [
+ { 3: 1, 4: 2, 5: 3, 6: e, 21: 8, 26: i, 27: n, 28: s, 29: r },
+ { 1: [3] },
+ { 3: 10, 4: 2, 5: 3, 6: e, 21: 8, 26: i, 27: n, 28: s, 29: r },
+ { 3: 11, 4: 2, 5: 3, 6: e, 21: 8, 26: i, 27: n, 28: s, 29: r },
+ t(c, l, { 7: 12, 8: [1, 13] }),
+ t(a, [2, 18]),
+ t(a, [2, 19]),
+ t(a, [2, 20]),
+ { 22: 14, 30: [1, 15] },
+ { 30: [2, 21] },
+ { 1: [2, 1] },
+ { 1: [2, 2] },
+ t(o, h, {
+ 21: 8,
+ 9: 16,
+ 10: 17,
+ 5: 24,
+ 1: [2, 3],
+ 11: u,
+ 13: y,
+ 15: p,
+ 17: d,
+ 19: g,
+ 20: _,
+ 29: r,
+ }),
+ t(c, l, { 7: 25 }),
+ { 23: 26, 24: [1, 27], 32: f },
+ t([24, 32], [2, 22]),
+ t(c, [2, 6]),
+ { 4: 29, 26: i, 27: n, 28: s },
+ { 12: [1, 30] },
+ { 14: [1, 31] },
+ { 16: [1, 32] },
+ { 18: [1, 33] },
+ t(o, [2, 13]),
+ t(o, [2, 14]),
+ t(o, [2, 15]),
+ t(o, h, {
+ 21: 8,
+ 9: 16,
+ 10: 17,
+ 5: 24,
+ 1: [2, 4],
+ 11: u,
+ 13: y,
+ 15: p,
+ 17: d,
+ 19: g,
+ 20: _,
+ 29: r,
+ }),
+ t(m, [2, 16]),
+ { 25: 34, 31: [1, 35] },
+ t(m, [2, 24]),
+ t(c, [2, 7]),
+ t(o, [2, 9]),
+ t(o, [2, 10]),
+ t(o, [2, 11]),
+ t(o, [2, 12]),
+ { 23: 36, 32: f },
+ { 32: [2, 23] },
+ t(m, [2, 17]),
+ ],
+ defaultActions: { 9: [2, 21], 10: [2, 1], 11: [2, 2], 35: [2, 23] },
+ parseError: function (t, e) {
+ if (!e.recoverable) {
+ var i = new Error(t);
+ throw ((i.hash = e), i);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var e = [0],
+ i = [],
+ n = [null],
+ s = [],
+ r = this.table,
+ c = "",
+ l = 0,
+ a = 0,
+ o = s.slice.call(arguments, 1),
+ h = Object.create(this.lexer),
+ u = { yy: {} };
+ for (var y in this.yy) Object.prototype.hasOwnProperty.call(this.yy, y) && (u.yy[y] = this.yy[y]);
+ h.setInput(t, u.yy), (u.yy.lexer = h), (u.yy.parser = this), void 0 === h.yylloc && (h.yylloc = {});
+ var p = h.yylloc;
+ s.push(p);
+ var d = h.options && h.options.ranges;
+ "function" == typeof u.yy.parseError
+ ? (this.parseError = u.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var g, _, f, m, v, b, k, x, S, w = {}; ; ) {
+ if (
+ ((_ = e[e.length - 1]),
+ this.defaultActions[_]
+ ? (f = this.defaultActions[_])
+ : (null == g &&
+ ((S = void 0),
+ "number" != typeof (S = i.pop() || h.lex() || 1) &&
+ (S instanceof Array && (S = (i = S).pop()), (S = this.symbols_[S] || S)),
+ (g = S)),
+ (f = r[_] && r[_][g])),
+ void 0 === f || !f.length || !f[0])
+ ) {
+ var $;
+ for (v in ((x = []), r[_])) this.terminals_[v] && v > 2 && x.push("'" + this.terminals_[v] + "'");
+ ($ = h.showPosition
+ ? "Parse error on line " +
+ (l + 1) +
+ ":\n" +
+ h.showPosition() +
+ "\nExpecting " +
+ x.join(", ") +
+ ", got '" +
+ (this.terminals_[g] || g) +
+ "'"
+ : "Parse error on line " + (l + 1) + ": Unexpected " + (1 == g ? "end of input" : "'" + (this.terminals_[g] || g) + "'")),
+ this.parseError($, {
+ text: h.match,
+ token: this.terminals_[g] || g,
+ line: h.yylineno,
+ loc: p,
+ expected: x,
+ });
+ }
+ if (f[0] instanceof Array && f.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + _ + ", token: " + g);
+ switch (f[0]) {
+ case 1:
+ e.push(g),
+ n.push(h.yytext),
+ s.push(h.yylloc),
+ e.push(f[1]),
+ (g = null),
+ (a = h.yyleng),
+ (c = h.yytext),
+ (l = h.yylineno),
+ (p = h.yylloc);
+ break;
+ case 2:
+ if (
+ ((b = this.productions_[f[1]][1]),
+ (w.$ = n[n.length - b]),
+ (w._$ = {
+ first_line: s[s.length - (b || 1)].first_line,
+ last_line: s[s.length - 1].last_line,
+ first_column: s[s.length - (b || 1)].first_column,
+ last_column: s[s.length - 1].last_column,
+ }),
+ d && (w._$.range = [s[s.length - (b || 1)].range[0], s[s.length - 1].range[1]]),
+ void 0 !== (m = this.performAction.apply(w, [c, a, l, u.yy, f[1], n, s].concat(o))))
+ )
+ return m;
+ b && ((e = e.slice(0, -1 * b * 2)), (n = n.slice(0, -1 * b)), (s = s.slice(0, -1 * b))),
+ e.push(this.productions_[f[1]][0]),
+ n.push(w.$),
+ s.push(w._$),
+ (k = r[e[e.length - 2]][e[e.length - 1]]),
+ e.push(k);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ b = {
+ EOF: 1,
+ parseError: function (t, e) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, e);
+ },
+ setInput: function (t, e) {
+ return (
+ (this.yy = e || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0,
+ }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var e = t.length,
+ i = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - e)), (this.offset -= e);
+ var n = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ i.length - 1 && (this.yylineno -= i.length - 1);
+ var s = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: i
+ ? (i.length === n.length ? this.yylloc.first_column : 0) + n[n.length - i.length].length - i[0].length
+ : this.yylloc.first_column - e,
+ }),
+ this.options.ranges && (this.yylloc.range = [s[0], s[0] + this.yyleng - e]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ e = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + e + "^";
+ },
+ test_match: function (t, e) {
+ var i, n, s;
+ if (
+ (this.options.backtrack_lexer &&
+ ((s = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (s.yylloc.range = this.yylloc.range.slice(0))),
+ (n = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += n.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: n ? n[n.length - 1].length - n[n.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (i = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ i)
+ )
+ return i;
+ if (this._backtrack) {
+ for (var r in s) this[r] = s[r];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, e, i, n;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var s = this._currentRules(), r = 0; r < s.length; r++)
+ if ((i = this._input.match(this.rules[s[r]])) && (!e || i[0].length > e[0].length)) {
+ if (((e = i), (n = r), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(i, s[r]))) return t;
+ if (this._backtrack) {
+ e = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return e
+ ? !1 !== (t = this.test_match(e, s[n])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { "case-insensitive": !0 },
+ performAction: function (t, e, i, n) {
+ switch (i) {
+ case 0:
+ return this.begin("open_directive"), 29;
+ case 1:
+ return this.begin("type_directive"), 30;
+ case 2:
+ return this.popState(), this.begin("arg_directive"), 24;
+ case 3:
+ return this.popState(), this.popState(), 32;
+ case 4:
+ return 31;
+ case 5:
+ case 6:
+ case 8:
+ case 9:
+ break;
+ case 7:
+ return 26;
+ case 10:
+ return this.begin("title"), 13;
+ case 11:
+ return this.popState(), "title_value";
+ case 12:
+ return this.begin("acc_title"), 15;
+ case 13:
+ return this.popState(), "acc_title_value";
+ case 14:
+ return this.begin("acc_descr"), 17;
+ case 15:
+ return this.popState(), "acc_descr_value";
+ case 16:
+ this.begin("acc_descr_multiline");
+ break;
+ case 17:
+ case 20:
+ this.popState();
+ break;
+ case 18:
+ return "acc_descr_multiline_value";
+ case 19:
+ this.begin("string");
+ break;
+ case 21:
+ return "txt";
+ case 22:
+ return 6;
+ case 23:
+ return 8;
+ case 24:
+ return "value";
+ case 25:
+ return 28;
+ }
+ },
+ rules: [
+ /^(?:%%\{)/i,
+ /^(?:((?:(?!\}%%)[^:.])*))/i,
+ /^(?::)/i,
+ /^(?:\}%%)/i,
+ /^(?:((?:(?!\}%%).|\n)*))/i,
+ /^(?:%%(?!\{)[^\n]*)/i,
+ /^(?:[^\}]%%[^\n]*)/i,
+ /^(?:[\n\r]+)/i,
+ /^(?:%%[^\n]*)/i,
+ /^(?:[\s]+)/i,
+ /^(?:title\b)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accTitle\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*\{\s*)/i,
+ /^(?:[\}])/i,
+ /^(?:[^\}]*)/i,
+ /^(?:["])/i,
+ /^(?:["])/i,
+ /^(?:[^"]*)/i,
+ /^(?:pie\b)/i,
+ /^(?:showData\b)/i,
+ /^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,
+ /^(?:$)/i,
+ ],
+ conditions: {
+ acc_descr_multiline: { rules: [17, 18], inclusive: !1 },
+ acc_descr: { rules: [15], inclusive: !1 },
+ acc_title: { rules: [13], inclusive: !1 },
+ close_directive: { rules: [], inclusive: !1 },
+ arg_directive: { rules: [3, 4], inclusive: !1 },
+ type_directive: { rules: [2, 3], inclusive: !1 },
+ open_directive: { rules: [1], inclusive: !1 },
+ title: { rules: [11], inclusive: !1 },
+ string: { rules: [20, 21], inclusive: !1 },
+ INITIAL: {
+ rules: [0, 5, 6, 7, 8, 9, 10, 12, 14, 16, 19, 22, 23, 24, 25],
+ inclusive: !0,
+ },
+ },
+ };
+ function k() {
+ this.yy = {};
+ }
+ return (v.lexer = b), (k.prototype = v), (v.Parser = k), new k();
+ })());
+ r.parser = r;
+ const c = r,
+ l = n.C.pie,
+ a = {};
+ let o = a,
+ h = false;
+ const u = structuredClone(l),
+ y = {
+ parser: c,
+ db: {
+ getConfig: () => structuredClone(u),
+ parseDirective: (t, e, i) => {
+ (0, n.D)(void 0, t, e, i);
+ },
+ clear: () => {
+ (o = structuredClone(a)), (h = false), (0, n.v)();
+ },
+ setDiagramTitle: n.r,
+ getDiagramTitle: n.t,
+ setAccTitle: n.s,
+ getAccTitle: n.g,
+ setAccDescription: n.b,
+ getAccDescription: n.a,
+ addSection: (t, e) => {
+ (t = (0, n.d)(t, (0, n.c)())), void 0 === o[t] && ((o[t] = e), n.l.debug(`added new section: ${t}, with value: ${e}`));
+ },
+ getSections: () => o,
+ cleanupValue: (t) => (":" === t.substring(0, 1) && (t = t.substring(1).trim()), Number(t.trim())),
+ setShowData: (t) => {
+ h = t;
+ },
+ getShowData: () => h,
+ },
+ renderer: {
+ draw: (t, e, i, r) => {
+ var c, l;
+ n.l.debug("rendering pie chart\n" + t);
+ const a = r.db,
+ o = (0, n.c)(),
+ h = (0, n.E)(a.getConfig(), o.pie),
+ u = (null == (l = null == (c = document.getElementById(e)) ? void 0 : c.parentElement) ? void 0 : l.offsetWidth) ?? h.useWidth,
+ y = (0, n.B)(e);
+ y.attr("viewBox", `0 0 ${u} 450`), (0, n.i)(y, 450, u, h.useMaxWidth);
+ const p = y.append("g");
+ p.attr("transform", "translate(" + u / 2 + ",225)");
+ const { themeVariables: d } = o;
+ let [g] = (0, n.F)(d.pieOuterStrokeWidth);
+ g ?? (g = 2);
+ const _ = h.textPosition,
+ f = Math.min(u, 450) / 2 - 40,
+ m = (0, s.Nb1)().innerRadius(0).outerRadius(f),
+ v = (0, s.Nb1)()
+ .innerRadius(f * _)
+ .outerRadius(f * _);
+ p.append("circle")
+ .attr("cx", 0)
+ .attr("cy", 0)
+ .attr("r", f + g / 2)
+ .attr("class", "pieOuterCircle");
+ const b = a.getSections(),
+ k = ((t) => {
+ const e = Object.entries(t).map((t) => ({ label: t[0], value: t[1] }));
+ return (0, s.ve8)().value((t) => t.value)(e);
+ })(b),
+ x = [d.pie1, d.pie2, d.pie3, d.pie4, d.pie5, d.pie6, d.pie7, d.pie8, d.pie9, d.pie10, d.pie11, d.pie12],
+ S = (0, s.PKp)(x);
+ p.selectAll("mySlices")
+ .data(k)
+ .enter()
+ .append("path")
+ .attr("d", m)
+ .attr("fill", (t) => S(t.data.label))
+ .attr("class", "pieCircle");
+ let w = 0;
+ Object.keys(b).forEach((t) => {
+ w += b[t];
+ }),
+ p
+ .selectAll("mySlices")
+ .data(k)
+ .enter()
+ .append("text")
+ .text((t) => ((t.data.value / w) * 100).toFixed(0) + "%")
+ .attr("transform", (t) => "translate(" + v.centroid(t) + ")")
+ .style("text-anchor", "middle")
+ .attr("class", "slice"),
+ p.append("text").text(a.getDiagramTitle()).attr("x", 0).attr("y", -200).attr("class", "pieTitleText");
+ const $ = p
+ .selectAll(".legend")
+ .data(S.domain())
+ .enter()
+ .append("g")
+ .attr("class", "legend")
+ .attr("transform", (t, e) => "translate(216," + (22 * e - (22 * S.domain().length) / 2) + ")");
+ $.append("rect").attr("width", 18).attr("height", 18).style("fill", S).style("stroke", S),
+ $.data(k)
+ .append("text")
+ .attr("x", 22)
+ .attr("y", 14)
+ .text((t) => {
+ const { label: e, value: i } = t.data;
+ return a.getShowData() ? `${e} [${i}]` : e;
+ });
+ },
+ },
+ styles: (t) =>
+ `\n .pieCircle{\n stroke: ${t.pieStrokeColor};\n stroke-width : ${t.pieStrokeWidth};\n opacity : ${t.pieOpacity};\n }\n .pieOuterCircle{\n stroke: ${t.pieOuterStrokeColor};\n stroke-width: ${t.pieOuterStrokeWidth};\n fill: none;\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${t.pieTitleTextSize};\n fill: ${t.pieTitleTextColor};\n font-family: ${t.fontFamily};\n }\n .slice {\n font-family: ${t.fontFamily};\n fill: ${t.pieSectionTextColor};\n font-size:${t.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${t.pieLegendTextColor};\n font-family: ${t.fontFamily};\n font-size: ${t.pieLegendTextSize};\n }\n`,
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/579-9222afff.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/579-9222afff.chunk.min.js
new file mode 100644
index 000000000..ce91a9c73
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/579-9222afff.chunk.min.js
@@ -0,0 +1,1098 @@
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [579],
+ {
+ 8579: function (t, n, e) {
+ e.d(n, {
+ diagram: function () {
+ return R;
+ },
+ });
+ var i = e(9339),
+ s = e(7274);
+ function r(t, n) {
+ let e;
+ if (void 0 === n) for (const n of t) null != n && (e > n || (void 0 === e && n >= n)) && (e = n);
+ else {
+ let i = -1;
+ for (let s of t) null != (s = n(s, ++i, t)) && (e > s || (void 0 === e && s >= s)) && (e = s);
+ }
+ return e;
+ }
+ function o(t) {
+ return t.target.depth;
+ }
+ function c(t, n) {
+ return t.sourceLinks.length ? t.depth : n - 1;
+ }
+ function l(t, n) {
+ let e = 0;
+ if (void 0 === n) for (let n of t) (n = +n) && (e += n);
+ else {
+ let i = -1;
+ for (let s of t) (s = +n(s, ++i, t)) && (e += s);
+ }
+ return e;
+ }
+ function h(t, n) {
+ let e;
+ if (void 0 === n) for (const n of t) null != n && (e < n || (void 0 === e && n >= n)) && (e = n);
+ else {
+ let i = -1;
+ for (let s of t) null != (s = n(s, ++i, t)) && (e < s || (void 0 === e && s >= s)) && (e = s);
+ }
+ return e;
+ }
+ function a(t) {
+ return function () {
+ return t;
+ };
+ }
+ function u(t, n) {
+ return y(t.source, n.source) || t.index - n.index;
+ }
+ function f(t, n) {
+ return y(t.target, n.target) || t.index - n.index;
+ }
+ function y(t, n) {
+ return t.y0 - n.y0;
+ }
+ function d(t) {
+ return t.value;
+ }
+ function p(t) {
+ return t.index;
+ }
+ function g(t) {
+ return t.nodes;
+ }
+ function _(t) {
+ return t.links;
+ }
+ function k(t, n) {
+ const e = t.get(n);
+ if (!e) throw new Error("missing: " + n);
+ return e;
+ }
+ function x({ nodes: t }) {
+ for (const n of t) {
+ let t = n.y0,
+ e = t;
+ for (const e of n.sourceLinks) (e.y0 = t + e.width / 2), (t += e.width);
+ for (const t of n.targetLinks) (t.y1 = e + t.width / 2), (e += t.width);
+ }
+ }
+ var m = Math.PI,
+ v = 2 * m,
+ b = 1e-6,
+ w = v - b;
+ function E() {
+ (this._x0 = this._y0 = this._x1 = this._y1 = null), (this._ = "");
+ }
+ function L() {
+ return new E();
+ }
+ E.prototype = L.prototype = {
+ constructor: E,
+ moveTo: function (t, n) {
+ this._ += "M" + (this._x0 = this._x1 = +t) + "," + (this._y0 = this._y1 = +n);
+ },
+ closePath: function () {
+ null !== this._x1 && ((this._x1 = this._x0), (this._y1 = this._y0), (this._ += "Z"));
+ },
+ lineTo: function (t, n) {
+ this._ += "L" + (this._x1 = +t) + "," + (this._y1 = +n);
+ },
+ quadraticCurveTo: function (t, n, e, i) {
+ this._ += "Q" + +t + "," + +n + "," + (this._x1 = +e) + "," + (this._y1 = +i);
+ },
+ bezierCurveTo: function (t, n, e, i, s, r) {
+ this._ += "C" + +t + "," + +n + "," + +e + "," + +i + "," + (this._x1 = +s) + "," + (this._y1 = +r);
+ },
+ arcTo: function (t, n, e, i, s) {
+ (t = +t), (n = +n), (e = +e), (i = +i), (s = +s);
+ var r = this._x1,
+ o = this._y1,
+ c = e - t,
+ l = i - n,
+ h = r - t,
+ a = o - n,
+ u = h * h + a * a;
+ if (s < 0) throw new Error("negative radius: " + s);
+ if (null === this._x1) this._ += "M" + (this._x1 = t) + "," + (this._y1 = n);
+ else if (u > b)
+ if (Math.abs(a * c - l * h) > b && s) {
+ var f = e - r,
+ y = i - o,
+ d = c * c + l * l,
+ p = f * f + y * y,
+ g = Math.sqrt(d),
+ _ = Math.sqrt(u),
+ k = s * Math.tan((m - Math.acos((d + u - p) / (2 * g * _))) / 2),
+ x = k / _,
+ v = k / g;
+ Math.abs(x - 1) > b && (this._ += "L" + (t + x * h) + "," + (n + x * a)),
+ (this._ += "A" + s + "," + s + ",0,0," + +(a * f > h * y) + "," + (this._x1 = t + v * c) + "," + (this._y1 = n + v * l));
+ } else this._ += "L" + (this._x1 = t) + "," + (this._y1 = n);
+ },
+ arc: function (t, n, e, i, s, r) {
+ (t = +t), (n = +n), (r = !!r);
+ var o = (e = +e) * Math.cos(i),
+ c = e * Math.sin(i),
+ l = t + o,
+ h = n + c,
+ a = 1 ^ r,
+ u = r ? i - s : s - i;
+ if (e < 0) throw new Error("negative radius: " + e);
+ null === this._x1
+ ? (this._ += "M" + l + "," + h)
+ : (Math.abs(this._x1 - l) > b || Math.abs(this._y1 - h) > b) && (this._ += "L" + l + "," + h),
+ e &&
+ (u < 0 && (u = (u % v) + v),
+ u > w
+ ? (this._ +=
+ "A" +
+ e +
+ "," +
+ e +
+ ",0,1," +
+ a +
+ "," +
+ (t - o) +
+ "," +
+ (n - c) +
+ "A" +
+ e +
+ "," +
+ e +
+ ",0,1," +
+ a +
+ "," +
+ (this._x1 = l) +
+ "," +
+ (this._y1 = h))
+ : u > b &&
+ (this._ +=
+ "A" +
+ e +
+ "," +
+ e +
+ ",0," +
+ +(u >= m) +
+ "," +
+ a +
+ "," +
+ (this._x1 = t + e * Math.cos(s)) +
+ "," +
+ (this._y1 = n + e * Math.sin(s))));
+ },
+ rect: function (t, n, e, i) {
+ this._ += "M" + (this._x0 = this._x1 = +t) + "," + (this._y0 = this._y1 = +n) + "h" + +e + "v" + +i + "h" + -e + "Z";
+ },
+ toString: function () {
+ return this._;
+ },
+ };
+ var A = L,
+ S = Array.prototype.slice;
+ function M(t) {
+ return function () {
+ return t;
+ };
+ }
+ function I(t) {
+ return t[0];
+ }
+ function T(t) {
+ return t[1];
+ }
+ function O(t) {
+ return t.source;
+ }
+ function P(t) {
+ return t.target;
+ }
+ function C(t, n, e, i, s) {
+ t.moveTo(n, e), t.bezierCurveTo((n = (n + i) / 2), e, n, s, i, s);
+ }
+ function D(t) {
+ return [t.source.x1, t.y0];
+ }
+ function N(t) {
+ return [t.target.x0, t.y1];
+ }
+ function $() {
+ return (function (t) {
+ var n = O,
+ e = P,
+ i = I,
+ s = T,
+ r = null;
+ function o() {
+ var o,
+ c = S.call(arguments),
+ l = n.apply(this, c),
+ h = e.apply(this, c);
+ if ((r || (r = o = A()), t(r, +i.apply(this, ((c[0] = l), c)), +s.apply(this, c), +i.apply(this, ((c[0] = h), c)), +s.apply(this, c)), o))
+ return (r = null), o + "" || null;
+ }
+ return (
+ (o.source = function (t) {
+ return arguments.length ? ((n = t), o) : n;
+ }),
+ (o.target = function (t) {
+ return arguments.length ? ((e = t), o) : e;
+ }),
+ (o.x = function (t) {
+ return arguments.length ? ((i = "function" == typeof t ? t : M(+t)), o) : i;
+ }),
+ (o.y = function (t) {
+ return arguments.length ? ((s = "function" == typeof t ? t : M(+t)), o) : s;
+ }),
+ (o.context = function (t) {
+ return arguments.length ? ((r = null == t ? null : t), o) : r;
+ }),
+ o
+ );
+ })(C)
+ .source(D)
+ .target(N);
+ }
+ e(7484), e(7967), e(7856);
+ var j = (function () {
+ var t = function (t, n, e, i) {
+ for (e = e || {}, i = t.length; i--; e[t[i]] = n);
+ return e;
+ },
+ n = [1, 9],
+ e = [1, 10],
+ i = [1, 5, 10, 12],
+ s = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ SANKEY: 4,
+ NEWLINE: 5,
+ csv: 6,
+ opt_eof: 7,
+ record: 8,
+ csv_tail: 9,
+ EOF: 10,
+ "field[source]": 11,
+ COMMA: 12,
+ "field[target]": 13,
+ "field[value]": 14,
+ field: 15,
+ escaped: 16,
+ non_escaped: 17,
+ DQUOTE: 18,
+ ESCAPED_TEXT: 19,
+ NON_ESCAPED_TEXT: 20,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 4: "SANKEY",
+ 5: "NEWLINE",
+ 10: "EOF",
+ 11: "field[source]",
+ 12: "COMMA",
+ 13: "field[target]",
+ 14: "field[value]",
+ 18: "DQUOTE",
+ 19: "ESCAPED_TEXT",
+ 20: "NON_ESCAPED_TEXT",
+ },
+ productions_: [0, [3, 4], [6, 2], [9, 2], [9, 0], [7, 1], [7, 0], [8, 5], [15, 1], [15, 1], [16, 3], [17, 1]],
+ performAction: function (t, n, e, i, s, r, o) {
+ var c = r.length - 1;
+ switch (s) {
+ case 7:
+ const t = i.findOrCreateNode(r[c - 4].trim().replaceAll('""', '"')),
+ n = i.findOrCreateNode(r[c - 2].trim().replaceAll('""', '"')),
+ e = parseFloat(r[c].trim());
+ i.addLink(t, n, e);
+ break;
+ case 8:
+ case 9:
+ case 11:
+ this.$ = r[c];
+ break;
+ case 10:
+ this.$ = r[c - 1];
+ }
+ },
+ table: [
+ { 3: 1, 4: [1, 2] },
+ { 1: [3] },
+ { 5: [1, 3] },
+ { 6: 4, 8: 5, 15: 6, 16: 7, 17: 8, 18: n, 20: e },
+ { 1: [2, 6], 7: 11, 10: [1, 12] },
+ t(e, [2, 4], { 9: 13, 5: [1, 14] }),
+ { 12: [1, 15] },
+ t(i, [2, 8]),
+ t(i, [2, 9]),
+ { 19: [1, 16] },
+ t(i, [2, 11]),
+ { 1: [2, 1] },
+ { 1: [2, 5] },
+ t(e, [2, 2]),
+ { 6: 17, 8: 5, 15: 6, 16: 7, 17: 8, 18: n, 20: e },
+ { 15: 18, 16: 7, 17: 8, 18: n, 20: e },
+ { 18: [1, 19] },
+ t(e, [2, 3]),
+ { 12: [1, 20] },
+ t(i, [2, 10]),
+ { 15: 21, 16: 7, 17: 8, 18: n, 20: e },
+ t([1, 5, 10], [2, 7]),
+ ],
+ defaultActions: { 11: [2, 1], 12: [2, 5] },
+ parseError: function (t, n) {
+ if (!n.recoverable) {
+ var e = new Error(t);
+ throw ((e.hash = n), e);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var n = [0],
+ e = [],
+ i = [null],
+ s = [],
+ r = this.table,
+ o = "",
+ c = 0,
+ l = 0,
+ h = s.slice.call(arguments, 1),
+ a = Object.create(this.lexer),
+ u = { yy: {} };
+ for (var f in this.yy) Object.prototype.hasOwnProperty.call(this.yy, f) && (u.yy[f] = this.yy[f]);
+ a.setInput(t, u.yy), (u.yy.lexer = a), (u.yy.parser = this), void 0 === a.yylloc && (a.yylloc = {});
+ var y = a.yylloc;
+ s.push(y);
+ var d = a.options && a.options.ranges;
+ "function" == typeof u.yy.parseError ? (this.parseError = u.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var p, g, _, k, x, m, v, b, w, E = {}; ; ) {
+ if (
+ ((g = n[n.length - 1]),
+ this.defaultActions[g]
+ ? (_ = this.defaultActions[g])
+ : (null == p &&
+ ((w = void 0),
+ "number" != typeof (w = e.pop() || a.lex() || 1) && (w instanceof Array && (w = (e = w).pop()), (w = this.symbols_[w] || w)),
+ (p = w)),
+ (_ = r[g] && r[g][p])),
+ void 0 === _ || !_.length || !_[0])
+ ) {
+ var L;
+ for (x in ((b = []), r[g])) this.terminals_[x] && x > 2 && b.push("'" + this.terminals_[x] + "'");
+ (L = a.showPosition
+ ? "Parse error on line " +
+ (c + 1) +
+ ":\n" +
+ a.showPosition() +
+ "\nExpecting " +
+ b.join(", ") +
+ ", got '" +
+ (this.terminals_[p] || p) +
+ "'"
+ : "Parse error on line " + (c + 1) + ": Unexpected " + (1 == p ? "end of input" : "'" + (this.terminals_[p] || p) + "'")),
+ this.parseError(L, {
+ text: a.match,
+ token: this.terminals_[p] || p,
+ line: a.yylineno,
+ loc: y,
+ expected: b,
+ });
+ }
+ if (_[0] instanceof Array && _.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + g + ", token: " + p);
+ switch (_[0]) {
+ case 1:
+ n.push(p),
+ i.push(a.yytext),
+ s.push(a.yylloc),
+ n.push(_[1]),
+ (p = null),
+ (l = a.yyleng),
+ (o = a.yytext),
+ (c = a.yylineno),
+ (y = a.yylloc);
+ break;
+ case 2:
+ if (
+ ((m = this.productions_[_[1]][1]),
+ (E.$ = i[i.length - m]),
+ (E._$ = {
+ first_line: s[s.length - (m || 1)].first_line,
+ last_line: s[s.length - 1].last_line,
+ first_column: s[s.length - (m || 1)].first_column,
+ last_column: s[s.length - 1].last_column,
+ }),
+ d && (E._$.range = [s[s.length - (m || 1)].range[0], s[s.length - 1].range[1]]),
+ void 0 !== (k = this.performAction.apply(E, [o, l, c, u.yy, _[1], i, s].concat(h))))
+ )
+ return k;
+ m && ((n = n.slice(0, -1 * m * 2)), (i = i.slice(0, -1 * m)), (s = s.slice(0, -1 * m))),
+ n.push(this.productions_[_[1]][0]),
+ i.push(E.$),
+ s.push(E._$),
+ (v = r[n[n.length - 2]][n[n.length - 1]]),
+ n.push(v);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ r = {
+ EOF: 1,
+ parseError: function (t, n) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, n);
+ },
+ setInput: function (t, n) {
+ return (
+ (this.yy = n || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var n = t.length,
+ e = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - n)), (this.offset -= n);
+ var i = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ e.length - 1 && (this.yylineno -= e.length - 1);
+ var s = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: e
+ ? (e.length === i.length ? this.yylloc.first_column : 0) + i[i.length - e.length].length - e[0].length
+ : this.yylloc.first_column - n,
+ }),
+ this.options.ranges && (this.yylloc.range = [s[0], s[0] + this.yyleng - n]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ n = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + n + "^";
+ },
+ test_match: function (t, n) {
+ var e, i, s;
+ if (
+ (this.options.backtrack_lexer &&
+ ((s = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (s.yylloc.range = this.yylloc.range.slice(0))),
+ (i = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += i.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: i ? i[i.length - 1].length - i[i.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (e = this.performAction.call(this, this.yy, this, n, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ e)
+ )
+ return e;
+ if (this._backtrack) {
+ for (var r in s) this[r] = s[r];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, n, e, i;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var s = this._currentRules(), r = 0; r < s.length; r++)
+ if ((e = this._input.match(this.rules[s[r]])) && (!n || e[0].length > n[0].length)) {
+ if (((n = e), (i = r), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(e, s[r]))) return t;
+ if (this._backtrack) {
+ n = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return n
+ ? !1 !== (t = this.test_match(n, s[i])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { easy_keword_rules: !0 },
+ performAction: function (t, n, e, i) {
+ switch (e) {
+ case 0:
+ return this.pushState("csv"), 4;
+ case 1:
+ return 10;
+ case 2:
+ return 5;
+ case 3:
+ return 12;
+ case 4:
+ return this.pushState("escaped_text"), 18;
+ case 5:
+ return 20;
+ case 6:
+ return this.popState("escaped_text"), 18;
+ case 7:
+ return 19;
+ }
+ },
+ rules: [
+ /^(?:sankey-beta\b)/,
+ /^(?:$)/,
+ /^(?:((\u000D\u000A)|(\u000A)))/,
+ /^(?:(\u002C))/,
+ /^(?:(\u0022))/,
+ /^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/,
+ /^(?:(\u0022)(?!(\u0022)))/,
+ /^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/,
+ ],
+ conditions: {
+ csv: { rules: [1, 2, 3, 4, 5, 6, 7], inclusive: !1 },
+ escaped_text: { rules: [6, 7], inclusive: !1 },
+ INITIAL: { rules: [0, 1, 2, 3, 4, 5, 6, 7], inclusive: !0 },
+ },
+ };
+ function o() {
+ this.yy = {};
+ }
+ return (s.lexer = r), (o.prototype = s), (s.Parser = o), new o();
+ })();
+ j.parser = j;
+ const z = j;
+ let Y = [],
+ F = [],
+ U = {};
+ class W {
+ constructor(t, n, e = 0) {
+ (this.source = t), (this.target = n), (this.value = e);
+ }
+ }
+ class K {
+ constructor(t) {
+ this.ID = t;
+ }
+ }
+ const G = {
+ nodesMap: U,
+ getConfig: () => (0, i.c)().sankey,
+ getNodes: () => F,
+ getLinks: () => Y,
+ getGraph: () => ({
+ nodes: F.map((t) => ({ id: t.ID })),
+ links: Y.map((t) => ({ source: t.source.ID, target: t.target.ID, value: t.value })),
+ }),
+ addLink: (t, n, e) => {
+ Y.push(new W(t, n, e));
+ },
+ findOrCreateNode: (t) => ((t = i.e.sanitizeText(t, (0, i.c)())), U[t] || ((U[t] = new K(t)), F.push(U[t])), U[t]),
+ getAccTitle: i.g,
+ setAccTitle: i.s,
+ getAccDescription: i.a,
+ setAccDescription: i.b,
+ getDiagramTitle: i.t,
+ setDiagramTitle: i.r,
+ clear: () => {
+ (Y = []), (F = []), (U = {}), (0, i.v)();
+ },
+ },
+ V = class {
+ static next(t) {
+ return new V(t + ++V.count);
+ }
+ constructor(t) {
+ (this.id = t), (this.href = `#${t}`);
+ }
+ toString() {
+ return "url(" + this.href + ")";
+ }
+ };
+ let X = V;
+ X.count = 0;
+ const q = {
+ left: function (t) {
+ return t.depth;
+ },
+ right: function (t, n) {
+ return n - 1 - t.height;
+ },
+ center: function (t) {
+ return t.targetLinks.length ? t.depth : t.sourceLinks.length ? r(t.sourceLinks, o) - 1 : 0;
+ },
+ justify: c,
+ },
+ Q = {
+ draw: function (t, n, e, o) {
+ const { securityLevel: m, sankey: v } = (0, i.c)(),
+ b = i.K.sankey;
+ let w;
+ "sandbox" === m && (w = (0, s.Ys)("#i" + n));
+ const E = "sandbox" === m ? (0, s.Ys)(w.nodes()[0].contentDocument.body) : (0, s.Ys)("body"),
+ L = "sandbox" === m ? E.select(`[id="${n}"]`) : (0, s.Ys)(`[id="${n}"]`),
+ A = (null == v ? void 0 : v.width) ?? b.width,
+ S = (null == v ? void 0 : v.height) ?? b.width,
+ M = (null == v ? void 0 : v.useMaxWidth) ?? b.useMaxWidth,
+ I = (null == v ? void 0 : v.nodeAlignment) ?? b.nodeAlignment,
+ T = (null == v ? void 0 : v.prefix) ?? b.prefix,
+ O = (null == v ? void 0 : v.suffix) ?? b.suffix,
+ P = (null == v ? void 0 : v.showValues) ?? b.showValues;
+ (0, i.i)(L, S, A, M);
+ const C = o.db.getGraph(),
+ D = q[I];
+ (function () {
+ let t,
+ n,
+ e,
+ i = 0,
+ s = 0,
+ o = 1,
+ m = 1,
+ v = 24,
+ b = 8,
+ w = p,
+ E = c,
+ L = g,
+ A = _,
+ S = 6;
+ function M() {
+ const c = { nodes: L.apply(null, arguments), links: A.apply(null, arguments) };
+ return (
+ (function ({ nodes: t, links: n }) {
+ for (const [n, e] of t.entries()) (e.index = n), (e.sourceLinks = []), (e.targetLinks = []);
+ const i = new Map(t.map((n, e) => [w(n, e, t), n]));
+ for (const [t, e] of n.entries()) {
+ e.index = t;
+ let { source: n, target: s } = e;
+ "object" != typeof n && (n = e.source = k(i, n)),
+ "object" != typeof s && (s = e.target = k(i, s)),
+ n.sourceLinks.push(e),
+ s.targetLinks.push(e);
+ }
+ if (null != e) for (const { sourceLinks: n, targetLinks: i } of t) n.sort(e), i.sort(e);
+ })(c),
+ (function ({ nodes: t }) {
+ for (const n of t) n.value = void 0 === n.fixedValue ? Math.max(l(n.sourceLinks, d), l(n.targetLinks, d)) : n.fixedValue;
+ })(c),
+ (function ({ nodes: t }) {
+ const n = t.length;
+ let e = new Set(t),
+ i = new Set(),
+ s = 0;
+ for (; e.size; ) {
+ for (const t of e) {
+ t.depth = s;
+ for (const { target: n } of t.sourceLinks) i.add(n);
+ }
+ if (++s > n) throw new Error("circular link");
+ (e = i), (i = new Set());
+ }
+ })(c),
+ (function ({ nodes: t }) {
+ const n = t.length;
+ let e = new Set(t),
+ i = new Set(),
+ s = 0;
+ for (; e.size; ) {
+ for (const t of e) {
+ t.height = s;
+ for (const { source: n } of t.targetLinks) i.add(n);
+ }
+ if (++s > n) throw new Error("circular link");
+ (e = i), (i = new Set());
+ }
+ })(c),
+ (function (e) {
+ const c = (function ({ nodes: t }) {
+ const e = h(t, (t) => t.depth) + 1,
+ s = (o - i - v) / (e - 1),
+ r = new Array(e);
+ for (const n of t) {
+ const t = Math.max(0, Math.min(e - 1, Math.floor(E.call(null, n, e))));
+ (n.layer = t), (n.x0 = i + t * s), (n.x1 = n.x0 + v), r[t] ? r[t].push(n) : (r[t] = [n]);
+ }
+ if (n) for (const t of r) t.sort(n);
+ return r;
+ })(e);
+ (t = Math.min(b, (m - s) / (h(c, (t) => t.length) - 1))),
+ (function (n) {
+ const e = r(n, (n) => (m - s - (n.length - 1) * t) / l(n, d));
+ for (const i of n) {
+ let n = s;
+ for (const s of i) {
+ (s.y0 = n), (s.y1 = n + s.value * e), (n = s.y1 + t);
+ for (const t of s.sourceLinks) t.width = t.value * e;
+ }
+ n = (m - n + t) / (i.length + 1);
+ for (let t = 0; t < i.length; ++t) {
+ const e = i[t];
+ (e.y0 += n * (t + 1)), (e.y1 += n * (t + 1));
+ }
+ N(i);
+ }
+ })(c);
+ for (let t = 0; t < S; ++t) {
+ const n = Math.pow(0.99, t),
+ e = Math.max(1 - n, (t + 1) / S);
+ T(c, n, e), I(c, n, e);
+ }
+ })(c),
+ x(c),
+ c
+ );
+ }
+ function I(t, e, i) {
+ for (let s = 1, r = t.length; s < r; ++s) {
+ const r = t[s];
+ for (const t of r) {
+ let n = 0,
+ i = 0;
+ for (const { source: e, value: s } of t.targetLinks) {
+ let r = s * (t.layer - e.layer);
+ (n += $(e, t) * r), (i += r);
+ }
+ if (!(i > 0)) continue;
+ let s = (n / i - t.y0) * e;
+ (t.y0 += s), (t.y1 += s), D(t);
+ }
+ void 0 === n && r.sort(y), O(r, i);
+ }
+ }
+ function T(t, e, i) {
+ for (let s = t.length - 2; s >= 0; --s) {
+ const r = t[s];
+ for (const t of r) {
+ let n = 0,
+ i = 0;
+ for (const { target: e, value: s } of t.sourceLinks) {
+ let r = s * (e.layer - t.layer);
+ (n += j(t, e) * r), (i += r);
+ }
+ if (!(i > 0)) continue;
+ let s = (n / i - t.y0) * e;
+ (t.y0 += s), (t.y1 += s), D(t);
+ }
+ void 0 === n && r.sort(y), O(r, i);
+ }
+ }
+ function O(n, e) {
+ const i = n.length >> 1,
+ r = n[i];
+ C(n, r.y0 - t, i - 1, e), P(n, r.y1 + t, i + 1, e), C(n, m, n.length - 1, e), P(n, s, 0, e);
+ }
+ function P(n, e, i, s) {
+ for (; i < n.length; ++i) {
+ const r = n[i],
+ o = (e - r.y0) * s;
+ o > 1e-6 && ((r.y0 += o), (r.y1 += o)), (e = r.y1 + t);
+ }
+ }
+ function C(n, e, i, s) {
+ for (; i >= 0; --i) {
+ const r = n[i],
+ o = (r.y1 - e) * s;
+ o > 1e-6 && ((r.y0 -= o), (r.y1 -= o)), (e = r.y0 - t);
+ }
+ }
+ function D({ sourceLinks: t, targetLinks: n }) {
+ if (void 0 === e) {
+ for (const {
+ source: { sourceLinks: t },
+ } of n)
+ t.sort(f);
+ for (const {
+ target: { targetLinks: n },
+ } of t)
+ n.sort(u);
+ }
+ }
+ function N(t) {
+ if (void 0 === e) for (const { sourceLinks: n, targetLinks: e } of t) n.sort(f), e.sort(u);
+ }
+ function $(n, e) {
+ let i = n.y0 - ((n.sourceLinks.length - 1) * t) / 2;
+ for (const { target: s, width: r } of n.sourceLinks) {
+ if (s === e) break;
+ i += r + t;
+ }
+ for (const { source: t, width: s } of e.targetLinks) {
+ if (t === n) break;
+ i -= s;
+ }
+ return i;
+ }
+ function j(n, e) {
+ let i = e.y0 - ((e.targetLinks.length - 1) * t) / 2;
+ for (const { source: s, width: r } of e.targetLinks) {
+ if (s === n) break;
+ i += r + t;
+ }
+ for (const { target: t, width: s } of n.sourceLinks) {
+ if (t === e) break;
+ i -= s;
+ }
+ return i;
+ }
+ return (
+ (M.update = function (t) {
+ return x(t), t;
+ }),
+ (M.nodeId = function (t) {
+ return arguments.length ? ((w = "function" == typeof t ? t : a(t)), M) : w;
+ }),
+ (M.nodeAlign = function (t) {
+ return arguments.length ? ((E = "function" == typeof t ? t : a(t)), M) : E;
+ }),
+ (M.nodeSort = function (t) {
+ return arguments.length ? ((n = t), M) : n;
+ }),
+ (M.nodeWidth = function (t) {
+ return arguments.length ? ((v = +t), M) : v;
+ }),
+ (M.nodePadding = function (n) {
+ return arguments.length ? ((b = t = +n), M) : b;
+ }),
+ (M.nodes = function (t) {
+ return arguments.length ? ((L = "function" == typeof t ? t : a(t)), M) : L;
+ }),
+ (M.links = function (t) {
+ return arguments.length ? ((A = "function" == typeof t ? t : a(t)), M) : A;
+ }),
+ (M.linkSort = function (t) {
+ return arguments.length ? ((e = t), M) : e;
+ }),
+ (M.size = function (t) {
+ return arguments.length ? ((i = s = 0), (o = +t[0]), (m = +t[1]), M) : [o - i, m - s];
+ }),
+ (M.extent = function (t) {
+ return arguments.length
+ ? ((i = +t[0][0]), (o = +t[1][0]), (s = +t[0][1]), (m = +t[1][1]), M)
+ : [
+ [i, s],
+ [o, m],
+ ];
+ }),
+ (M.iterations = function (t) {
+ return arguments.length ? ((S = +t), M) : S;
+ }),
+ M
+ );
+ })()
+ .nodeId((t) => t.id)
+ .nodeWidth(10)
+ .nodePadding(10 + (P ? 15 : 0))
+ .nodeAlign(D)
+ .extent([
+ [0, 0],
+ [A, S],
+ ])(C);
+ const N = (0, s.PKp)(s.K2I);
+ L.append("g")
+ .attr("class", "nodes")
+ .selectAll(".node")
+ .data(C.nodes)
+ .join("g")
+ .attr("class", "node")
+ .attr("id", (t) => (t.uid = X.next("node-")).id)
+ .attr("transform", function (t) {
+ return "translate(" + t.x0 + "," + t.y0 + ")";
+ })
+ .attr("x", (t) => t.x0)
+ .attr("y", (t) => t.y0)
+ .append("rect")
+ .attr("height", (t) => t.y1 - t.y0)
+ .attr("width", (t) => t.x1 - t.x0)
+ .attr("fill", (t) => N(t.id)),
+ L.append("g")
+ .attr("class", "node-labels")
+ .attr("font-family", "sans-serif")
+ .attr("font-size", 14)
+ .selectAll("text")
+ .data(C.nodes)
+ .join("text")
+ .attr("x", (t) => (t.x0 < A / 2 ? t.x1 + 6 : t.x0 - 6))
+ .attr("y", (t) => (t.y1 + t.y0) / 2)
+ .attr("dy", (P ? "0" : "0.35") + "em")
+ .attr("text-anchor", (t) => (t.x0 < A / 2 ? "start" : "end"))
+ .text(({ id: t, value: n }) => (P ? `${t}\n${T}${Math.round(100 * n) / 100}${O}` : t));
+ const j = L.append("g")
+ .attr("class", "links")
+ .attr("fill", "none")
+ .attr("stroke-opacity", 0.5)
+ .selectAll(".link")
+ .data(C.links)
+ .join("g")
+ .attr("class", "link")
+ .style("mix-blend-mode", "multiply"),
+ z = (null == v ? void 0 : v.linkColor) || "gradient";
+ if ("gradient" === z) {
+ const t = j
+ .append("linearGradient")
+ .attr("id", (t) => (t.uid = X.next("linearGradient-")).id)
+ .attr("gradientUnits", "userSpaceOnUse")
+ .attr("x1", (t) => t.source.x1)
+ .attr("x2", (t) => t.target.x0);
+ t
+ .append("stop")
+ .attr("offset", "0%")
+ .attr("stop-color", (t) => N(t.source.id)),
+ t
+ .append("stop")
+ .attr("offset", "100%")
+ .attr("stop-color", (t) => N(t.target.id));
+ }
+ let Y;
+ switch (z) {
+ case "gradient":
+ Y = (t) => t.uid;
+ break;
+ case "source":
+ Y = (t) => N(t.source.id);
+ break;
+ case "target":
+ Y = (t) => N(t.target.id);
+ break;
+ default:
+ Y = z;
+ }
+ j.append("path")
+ .attr("d", $())
+ .attr("stroke", Y)
+ .attr("stroke-width", (t) => Math.max(1, t.width));
+ },
+ },
+ B = z.parse.bind(z);
+ z.parse = (t) =>
+ B(
+ ((t) =>
+ t
+ .replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g, "")
+ .replaceAll(/([\n\r])+/g, "\n")
+ .trim())(t),
+ );
+ const R = { parser: z, db: G, renderer: Q };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/626-1706197a.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/626-1706197a.chunk.min.js
new file mode 100644
index 000000000..4feb3951b
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/626-1706197a.chunk.min.js
@@ -0,0 +1,230 @@
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [626],
+ {
+ 1626: function (e, t, s) {
+ s.d(t, {
+ diagram: function () {
+ return N;
+ },
+ });
+ var o = s(1535),
+ i = s(5625),
+ a = s(7274),
+ r = s(9339),
+ n = s(6476);
+ s(7484), s(7967), s(7856), s(3771), s(9368);
+ const d = "rect",
+ c = "rectWithTitle",
+ l = "statediagram",
+ p = `${l}-state`,
+ g = "transition",
+ b = `${g} note-edge`,
+ h = `${l}-note`,
+ u = `${l}-cluster`,
+ y = `${l}-cluster-alt`,
+ f = "parent",
+ w = "note",
+ x = "----",
+ $ = `${x}${w}`,
+ m = `${x}${f}`,
+ T = "fill:none",
+ k = "fill: #333",
+ S = "text",
+ D = "normal";
+ let A = {},
+ v = 0;
+ function B(e = "", t = 0, s = "", o = x) {
+ return `state-${e}${null !== s && s.length > 0 ? `${o}${s}` : ""}-${t}`;
+ }
+ const C = (e, t, s, i, a, n) => {
+ const l = s.id,
+ g = null == (x = i[l]) ? "" : x.classes ? x.classes.join(" ") : "";
+ var x;
+ if ("root" !== l) {
+ let t = d;
+ !0 === s.start && (t = "start"),
+ !1 === s.start && (t = "end"),
+ s.type !== o.D && (t = s.type),
+ A[l] ||
+ (A[l] = {
+ id: l,
+ shape: t,
+ description: r.e.sanitizeText(l, (0, r.c)()),
+ classes: `${g} ${p}`,
+ });
+ const i = A[l];
+ s.description &&
+ (Array.isArray(i.description)
+ ? ((i.shape = c), i.description.push(s.description))
+ : i.description.length > 0
+ ? ((i.shape = c), i.description === l ? (i.description = [s.description]) : (i.description = [i.description, s.description]))
+ : ((i.shape = d), (i.description = s.description)),
+ (i.description = r.e.sanitizeTextOrArray(i.description, (0, r.c)()))),
+ 1 === i.description.length && i.shape === c && (i.shape = d),
+ !i.type &&
+ s.doc &&
+ (r.l.info("Setting cluster for ", l, R(s)),
+ (i.type = "group"),
+ (i.dir = R(s)),
+ (i.shape = s.type === o.a ? "divider" : "roundedWithTitle"),
+ (i.classes = i.classes + " " + u + " " + (n ? y : "")));
+ const a = {
+ labelStyle: "",
+ shape: i.shape,
+ labelText: i.description,
+ classes: i.classes,
+ style: "",
+ id: l,
+ dir: i.dir,
+ domId: B(l, v),
+ type: i.type,
+ padding: 15,
+ centerLabel: !0,
+ };
+ if (s.note) {
+ const t = {
+ labelStyle: "",
+ shape: "note",
+ labelText: s.note.text,
+ classes: h,
+ style: "",
+ id: l + $ + "-" + v,
+ domId: B(l, v, w),
+ type: i.type,
+ padding: 15,
+ },
+ o = {
+ labelStyle: "",
+ shape: "noteGroup",
+ labelText: s.note.text,
+ classes: i.classes,
+ style: "",
+ id: l + m,
+ domId: B(l, v, f),
+ type: "group",
+ padding: 0,
+ };
+ v++;
+ const r = l + m;
+ e.setNode(r, o), e.setNode(t.id, t), e.setNode(l, a), e.setParent(l, r), e.setParent(t.id, r);
+ let n = l,
+ d = t.id;
+ "left of" === s.note.position && ((n = t.id), (d = l)),
+ e.setEdge(n, d, {
+ arrowhead: "none",
+ arrowType: "",
+ style: T,
+ labelStyle: "",
+ classes: b,
+ arrowheadStyle: k,
+ labelpos: "c",
+ labelType: S,
+ thickness: D,
+ });
+ } else e.setNode(l, a);
+ }
+ t && "root" !== t.id && (r.l.trace("Setting node ", l, " to be child of its parent ", t.id), e.setParent(l, t.id)),
+ s.doc && (r.l.trace("Adding nodes children "), E(e, s, s.doc, i, a, !n));
+ },
+ E = (e, t, s, i, a, n) => {
+ r.l.trace("items", s),
+ s.forEach((s) => {
+ switch (s.stmt) {
+ case o.b:
+ case o.D:
+ C(e, t, s, i, a, n);
+ break;
+ case o.S: {
+ C(e, t, s.state1, i, a, n), C(e, t, s.state2, i, a, n);
+ const o = {
+ id: "edge" + v,
+ arrowhead: "normal",
+ arrowTypeEnd: "arrow_barb",
+ style: T,
+ labelStyle: "",
+ label: r.e.sanitizeText(s.description, (0, r.c)()),
+ arrowheadStyle: k,
+ labelpos: "c",
+ labelType: S,
+ thickness: D,
+ classes: g,
+ };
+ e.setEdge(s.state1.id, s.state2.id, o, v), v++;
+ }
+ }
+ });
+ },
+ R = (e, t = o.c) => {
+ let s = t;
+ if (e.doc)
+ for (let t = 0; t < e.doc.length; t++) {
+ const o = e.doc[t];
+ "dir" === o.stmt && (s = o.value);
+ }
+ return s;
+ },
+ V = {
+ setConf: function (e) {
+ const t = Object.keys(e);
+ for (const s of t) e[s];
+ },
+ getClasses: function (e, t) {
+ return t.db.extract(t.db.getRootDocV2()), t.db.getClasses();
+ },
+ draw: async function (e, t, s, o) {
+ r.l.info("Drawing state diagram (v2)", t), (A = {}), o.db.getDirection();
+ const { securityLevel: c, state: p } = (0, r.c)(),
+ g = p.nodeSpacing || 50,
+ b = p.rankSpacing || 50;
+ r.l.info(o.db.getRootDocV2()), o.db.extract(o.db.getRootDocV2()), r.l.info(o.db.getRootDocV2());
+ const h = o.db.getStates(),
+ u = new i.k({ multigraph: !0, compound: !0 })
+ .setGraph({
+ rankdir: R(o.db.getRootDocV2()),
+ nodesep: g,
+ ranksep: b,
+ marginx: 8,
+ marginy: 8,
+ })
+ .setDefaultEdgeLabel(function () {
+ return {};
+ });
+ let y;
+ C(u, void 0, o.db.getRootDocV2(), h, o.db, !0), "sandbox" === c && (y = (0, a.Ys)("#i" + t));
+ const f = "sandbox" === c ? (0, a.Ys)(y.nodes()[0].contentDocument.body) : (0, a.Ys)("body"),
+ w = f.select(`[id="${t}"]`),
+ x = f.select("#" + t + " g");
+ await (0, n.r)(x, u, ["barb"], l, t), r.u.insertTitle(w, "statediagramTitleText", p.titleTopMargin, o.db.getDiagramTitle());
+ const $ = w.node().getBBox(),
+ m = $.width + 16,
+ T = $.height + 16;
+ w.attr("class", l);
+ const k = w.node().getBBox();
+ (0, r.i)(w, T, m, p.useMaxWidth);
+ const S = `${k.x - 8} ${k.y - 8} ${m} ${T}`;
+ r.l.debug(`viewBox ${S}`), w.attr("viewBox", S);
+ const D = document.querySelectorAll('[id="' + t + '"] .edgeLabel .label');
+ for (const e of D) {
+ const t = e.getBBox(),
+ s = document.createElementNS("http://www.w3.org/2000/svg", d);
+ s.setAttribute("rx", 0),
+ s.setAttribute("ry", 0),
+ s.setAttribute("width", t.width),
+ s.setAttribute("height", t.height),
+ e.insertBefore(s, e.firstChild);
+ }
+ },
+ },
+ N = {
+ parser: o.p,
+ db: o.d,
+ renderer: V,
+ styles: o.s,
+ init: (e) => {
+ e.state || (e.state = {}), (e.state.arrowMarkerAbsolute = e.arrowMarkerAbsolute), o.d.clear();
+ },
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/637-86fbbecd.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/637-86fbbecd.chunk.min.js
new file mode 100644
index 000000000..76f9f0361
--- /dev/null
+++ b/docs/themes/hugo-geekdoc/static/js/637-86fbbecd.chunk.min.js
@@ -0,0 +1,13646 @@
+/*! For license information please see 637-86fbbecd.chunk.min.js.LICENSE.txt */
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [637],
+ {
+ 7967: function (t, e) {
+ "use strict";
+ e.Nm = e.Rq = void 0;
+ var i = /^([^\w]*)(javascript|data|vbscript)/im,
+ r = /(\w+)(^\w|;)?/g,
+ n = /&(newline|tab);/gi,
+ o = /[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,
+ a = /^.+(:|:)/gim,
+ s = [".", "/"];
+ (e.Rq = "about:blank"),
+ (e.Nm = function (t) {
+ if (!t) return e.Rq;
+ var l,
+ h = ((l = t),
+ l.replace(o, "").replace(r, function (t, e) {
+ return String.fromCharCode(e);
+ }))
+ .replace(n, "")
+ .replace(o, "")
+ .trim();
+ if (!h) return e.Rq;
+ if (
+ (function (t) {
+ return s.indexOf(t[0]) > -1;
+ })(h)
+ )
+ return h;
+ var c = h.match(a);
+ if (!c) return h;
+ var u = c[0];
+ return i.test(u) ? e.Rq : h;
+ });
+ },
+ 7484: function (t) {
+ t.exports = (function () {
+ "use strict";
+ var t = 6e4,
+ e = 36e5,
+ i = "millisecond",
+ r = "second",
+ n = "minute",
+ o = "hour",
+ a = "day",
+ s = "week",
+ l = "month",
+ h = "quarter",
+ c = "year",
+ u = "date",
+ f = "Invalid Date",
+ d = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,
+ p = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,
+ g = {
+ name: "en",
+ weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
+ months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
+ ordinal: function (t) {
+ var e = ["th", "st", "nd", "rd"],
+ i = t % 100;
+ return "[" + t + (e[(i - 20) % 10] || e[i] || e[0]) + "]";
+ },
+ },
+ m = function (t, e, i) {
+ var r = String(t);
+ return !r || r.length >= e ? t : "" + Array(e + 1 - r.length).join(i) + t;
+ },
+ y = {
+ s: m,
+ z: function (t) {
+ var e = -t.utcOffset(),
+ i = Math.abs(e),
+ r = Math.floor(i / 60),
+ n = i % 60;
+ return (e <= 0 ? "+" : "-") + m(r, 2, "0") + ":" + m(n, 2, "0");
+ },
+ m: function t(e, i) {
+ if (e.date() < i.date()) return -t(i, e);
+ var r = 12 * (i.year() - e.year()) + (i.month() - e.month()),
+ n = e.clone().add(r, l),
+ o = i - n < 0,
+ a = e.clone().add(r + (o ? -1 : 1), l);
+ return +(-(r + (i - n) / (o ? n - a : a - n)) || 0);
+ },
+ a: function (t) {
+ return t < 0 ? Math.ceil(t) || 0 : Math.floor(t);
+ },
+ p: function (t) {
+ return (
+ { M: l, y: c, w: s, d: a, D: u, h: o, m: n, s: r, ms: i, Q: h }[t] ||
+ String(t || "")
+ .toLowerCase()
+ .replace(/s$/, "")
+ );
+ },
+ u: function (t) {
+ return void 0 === t;
+ },
+ },
+ _ = "en",
+ b = {};
+ b[_] = g;
+ var C = function (t) {
+ return t instanceof T;
+ },
+ x = function t(e, i, r) {
+ var n;
+ if (!e) return _;
+ if ("string" == typeof e) {
+ var o = e.toLowerCase();
+ b[o] && (n = o), i && ((b[o] = i), (n = o));
+ var a = e.split("-");
+ if (!n && a.length > 1) return t(a[0]);
+ } else {
+ var s = e.name;
+ (b[s] = e), (n = s);
+ }
+ return !r && n && (_ = n), n || (!r && _);
+ },
+ v = function (t, e) {
+ if (C(t)) return t.clone();
+ var i = "object" == typeof e ? e : {};
+ return (i.date = t), (i.args = arguments), new T(i);
+ },
+ k = y;
+ (k.l = x),
+ (k.i = C),
+ (k.w = function (t, e) {
+ return v(t, { locale: e.$L, utc: e.$u, x: e.$x, $offset: e.$offset });
+ });
+ var T = (function () {
+ function g(t) {
+ (this.$L = x(t.locale, null, !0)), this.parse(t);
+ }
+ var m = g.prototype;
+ return (
+ (m.parse = function (t) {
+ (this.$d = (function (t) {
+ var e = t.date,
+ i = t.utc;
+ if (null === e) return new Date(NaN);
+ if (k.u(e)) return new Date();
+ if (e instanceof Date) return new Date(e);
+ if ("string" == typeof e && !/Z$/i.test(e)) {
+ var r = e.match(d);
+ if (r) {
+ var n = r[2] - 1 || 0,
+ o = (r[7] || "0").substring(0, 3);
+ return i
+ ? new Date(Date.UTC(r[1], n, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, o))
+ : new Date(r[1], n, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, o);
+ }
+ }
+ return new Date(e);
+ })(t)),
+ (this.$x = t.x || {}),
+ this.init();
+ }),
+ (m.init = function () {
+ var t = this.$d;
+ (this.$y = t.getFullYear()),
+ (this.$M = t.getMonth()),
+ (this.$D = t.getDate()),
+ (this.$W = t.getDay()),
+ (this.$H = t.getHours()),
+ (this.$m = t.getMinutes()),
+ (this.$s = t.getSeconds()),
+ (this.$ms = t.getMilliseconds());
+ }),
+ (m.$utils = function () {
+ return k;
+ }),
+ (m.isValid = function () {
+ return !(this.$d.toString() === f);
+ }),
+ (m.isSame = function (t, e) {
+ var i = v(t);
+ return this.startOf(e) <= i && i <= this.endOf(e);
+ }),
+ (m.isAfter = function (t, e) {
+ return v(t) < this.startOf(e);
+ }),
+ (m.isBefore = function (t, e) {
+ return this.endOf(e) < v(t);
+ }),
+ (m.$g = function (t, e, i) {
+ return k.u(t) ? this[e] : this.set(i, t);
+ }),
+ (m.unix = function () {
+ return Math.floor(this.valueOf() / 1e3);
+ }),
+ (m.valueOf = function () {
+ return this.$d.getTime();
+ }),
+ (m.startOf = function (t, e) {
+ var i = this,
+ h = !!k.u(e) || e,
+ f = k.p(t),
+ d = function (t, e) {
+ var r = k.w(i.$u ? Date.UTC(i.$y, e, t) : new Date(i.$y, e, t), i);
+ return h ? r : r.endOf(a);
+ },
+ p = function (t, e) {
+ return k.w(i.toDate()[t].apply(i.toDate("s"), (h ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e)), i);
+ },
+ g = this.$W,
+ m = this.$M,
+ y = this.$D,
+ _ = "set" + (this.$u ? "UTC" : "");
+ switch (f) {
+ case c:
+ return h ? d(1, 0) : d(31, 11);
+ case l:
+ return h ? d(1, m) : d(0, m + 1);
+ case s:
+ var b = this.$locale().weekStart || 0,
+ C = (g < b ? g + 7 : g) - b;
+ return d(h ? y - C : y + (6 - C), m);
+ case a:
+ case u:
+ return p(_ + "Hours", 0);
+ case o:
+ return p(_ + "Minutes", 1);
+ case n:
+ return p(_ + "Seconds", 2);
+ case r:
+ return p(_ + "Milliseconds", 3);
+ default:
+ return this.clone();
+ }
+ }),
+ (m.endOf = function (t) {
+ return this.startOf(t, !1);
+ }),
+ (m.$set = function (t, e) {
+ var s,
+ h = k.p(t),
+ f = "set" + (this.$u ? "UTC" : ""),
+ d = ((s = {}),
+ (s[a] = f + "Date"),
+ (s[u] = f + "Date"),
+ (s[l] = f + "Month"),
+ (s[c] = f + "FullYear"),
+ (s[o] = f + "Hours"),
+ (s[n] = f + "Minutes"),
+ (s[r] = f + "Seconds"),
+ (s[i] = f + "Milliseconds"),
+ s)[h],
+ p = h === a ? this.$D + (e - this.$W) : e;
+ if (h === l || h === c) {
+ var g = this.clone().set(u, 1);
+ g.$d[d](p), g.init(), (this.$d = g.set(u, Math.min(this.$D, g.daysInMonth())).$d);
+ } else d && this.$d[d](p);
+ return this.init(), this;
+ }),
+ (m.set = function (t, e) {
+ return this.clone().$set(t, e);
+ }),
+ (m.get = function (t) {
+ return this[k.p(t)]();
+ }),
+ (m.add = function (i, h) {
+ var u,
+ f = this;
+ i = Number(i);
+ var d = k.p(h),
+ p = function (t) {
+ var e = v(f);
+ return k.w(e.date(e.date() + Math.round(t * i)), f);
+ };
+ if (d === l) return this.set(l, this.$M + i);
+ if (d === c) return this.set(c, this.$y + i);
+ if (d === a) return p(1);
+ if (d === s) return p(7);
+ var g = ((u = {}), (u[n] = t), (u[o] = e), (u[r] = 1e3), u)[d] || 1,
+ m = this.$d.getTime() + i * g;
+ return k.w(m, this);
+ }),
+ (m.subtract = function (t, e) {
+ return this.add(-1 * t, e);
+ }),
+ (m.format = function (t) {
+ var e = this,
+ i = this.$locale();
+ if (!this.isValid()) return i.invalidDate || f;
+ var r = t || "YYYY-MM-DDTHH:mm:ssZ",
+ n = k.z(this),
+ o = this.$H,
+ a = this.$m,
+ s = this.$M,
+ l = i.weekdays,
+ h = i.months,
+ c = i.meridiem,
+ u = function (t, i, n, o) {
+ return (t && (t[i] || t(e, r))) || n[i].slice(0, o);
+ },
+ d = function (t) {
+ return k.s(o % 12 || 12, t, "0");
+ },
+ g =
+ c ||
+ function (t, e, i) {
+ var r = t < 12 ? "AM" : "PM";
+ return i ? r.toLowerCase() : r;
+ };
+ return r.replace(p, function (t, r) {
+ return (
+ r ||
+ (function (t) {
+ switch (t) {
+ case "YY":
+ return String(e.$y).slice(-2);
+ case "YYYY":
+ return k.s(e.$y, 4, "0");
+ case "M":
+ return s + 1;
+ case "MM":
+ return k.s(s + 1, 2, "0");
+ case "MMM":
+ return u(i.monthsShort, s, h, 3);
+ case "MMMM":
+ return u(h, s);
+ case "D":
+ return e.$D;
+ case "DD":
+ return k.s(e.$D, 2, "0");
+ case "d":
+ return String(e.$W);
+ case "dd":
+ return u(i.weekdaysMin, e.$W, l, 2);
+ case "ddd":
+ return u(i.weekdaysShort, e.$W, l, 3);
+ case "dddd":
+ return l[e.$W];
+ case "H":
+ return String(o);
+ case "HH":
+ return k.s(o, 2, "0");
+ case "h":
+ return d(1);
+ case "hh":
+ return d(2);
+ case "a":
+ return g(o, a, !0);
+ case "A":
+ return g(o, a, !1);
+ case "m":
+ return String(a);
+ case "mm":
+ return k.s(a, 2, "0");
+ case "s":
+ return String(e.$s);
+ case "ss":
+ return k.s(e.$s, 2, "0");
+ case "SSS":
+ return k.s(e.$ms, 3, "0");
+ case "Z":
+ return n;
+ }
+ return null;
+ })(t) ||
+ n.replace(":", "")
+ );
+ });
+ }),
+ (m.utcOffset = function () {
+ return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
+ }),
+ (m.diff = function (i, u, f) {
+ var d,
+ p = this,
+ g = k.p(u),
+ m = v(i),
+ y = (m.utcOffset() - this.utcOffset()) * t,
+ _ = this - m,
+ b = function () {
+ return k.m(p, m);
+ };
+ switch (g) {
+ case c:
+ d = b() / 12;
+ break;
+ case l:
+ d = b();
+ break;
+ case h:
+ d = b() / 3;
+ break;
+ case s:
+ d = (_ - y) / 6048e5;
+ break;
+ case a:
+ d = (_ - y) / 864e5;
+ break;
+ case o:
+ d = _ / e;
+ break;
+ case n:
+ d = _ / t;
+ break;
+ case r:
+ d = _ / 1e3;
+ break;
+ default:
+ d = _;
+ }
+ return f ? d : k.a(d);
+ }),
+ (m.daysInMonth = function () {
+ return this.endOf(l).$D;
+ }),
+ (m.$locale = function () {
+ return b[this.$L];
+ }),
+ (m.locale = function (t, e) {
+ if (!t) return this.$L;
+ var i = this.clone(),
+ r = x(t, e, !0);
+ return r && (i.$L = r), i;
+ }),
+ (m.clone = function () {
+ return k.w(this.$d, this);
+ }),
+ (m.toDate = function () {
+ return new Date(this.valueOf());
+ }),
+ (m.toJSON = function () {
+ return this.isValid() ? this.toISOString() : null;
+ }),
+ (m.toISOString = function () {
+ return this.$d.toISOString();
+ }),
+ (m.toString = function () {
+ return this.$d.toUTCString();
+ }),
+ g
+ );
+ })(),
+ w = T.prototype;
+ return (
+ (v.prototype = w),
+ [
+ ["$ms", i],
+ ["$s", r],
+ ["$m", n],
+ ["$H", o],
+ ["$W", a],
+ ["$M", l],
+ ["$y", c],
+ ["$D", u],
+ ].forEach(function (t) {
+ w[t[1]] = function (e) {
+ return this.$g(e, t[0], t[1]);
+ };
+ }),
+ (v.extend = function (t, e) {
+ return t.$i || (t(e, T, v), (t.$i = !0)), v;
+ }),
+ (v.locale = x),
+ (v.isDayjs = C),
+ (v.unix = function (t) {
+ return v(1e3 * t);
+ }),
+ (v.en = b[_]),
+ (v.Ls = b),
+ (v.p = {}),
+ v
+ );
+ })();
+ },
+ 7856: function (t) {
+ t.exports = (function () {
+ "use strict";
+ const { entries: t, setPrototypeOf: e, isFrozen: i, getPrototypeOf: r, getOwnPropertyDescriptor: n } = Object;
+ let { freeze: o, seal: a, create: s } = Object,
+ { apply: l, construct: h } = "undefined" != typeof Reflect && Reflect;
+ l ||
+ (l = function (t, e, i) {
+ return t.apply(e, i);
+ }),
+ o ||
+ (o = function (t) {
+ return t;
+ }),
+ a ||
+ (a = function (t) {
+ return t;
+ }),
+ h ||
+ (h = function (t, e) {
+ return new t(...e);
+ });
+ const c = v(Array.prototype.forEach),
+ u = v(Array.prototype.pop),
+ f = v(Array.prototype.push),
+ d = v(String.prototype.toLowerCase),
+ p = v(String.prototype.toString),
+ g = v(String.prototype.match),
+ m = v(String.prototype.replace),
+ y = v(String.prototype.indexOf),
+ _ = v(String.prototype.trim),
+ b = v(RegExp.prototype.test),
+ C =
+ ((x = TypeError),
+ function () {
+ for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++) e[i] = arguments[i];
+ return h(x, e);
+ });
+ var x;
+ function v(t) {
+ return function (e) {
+ for (var i = arguments.length, r = new Array(i > 1 ? i - 1 : 0), n = 1; n < i; n++) r[n - 1] = arguments[n];
+ return l(t, e, r);
+ };
+ }
+ function k(t, r, n) {
+ var o;
+ (n = null !== (o = n) && void 0 !== o ? o : d), e && e(t, null);
+ let a = r.length;
+ for (; a--; ) {
+ let e = r[a];
+ if ("string" == typeof e) {
+ const t = n(e);
+ t !== e && (i(r) || (r[a] = t), (e = t));
+ }
+ t[e] = !0;
+ }
+ return t;
+ }
+ function T(e) {
+ const i = s(null);
+ for (const [r, n] of t(e)) i[r] = n;
+ return i;
+ }
+ function w(t, e) {
+ for (; null !== t; ) {
+ const i = n(t, e);
+ if (i) {
+ if (i.get) return v(i.get);
+ if ("function" == typeof i.value) return v(i.value);
+ }
+ t = r(t);
+ }
+ return function (t) {
+ return console.warn("fallback value for", t), null;
+ };
+ }
+ const S = o([
+ "a",
+ "abbr",
+ "acronym",
+ "address",
+ "area",
+ "article",
+ "aside",
+ "audio",
+ "b",
+ "bdi",
+ "bdo",
+ "big",
+ "blink",
+ "blockquote",
+ "body",
+ "br",
+ "button",
+ "canvas",
+ "caption",
+ "center",
+ "cite",
+ "code",
+ "col",
+ "colgroup",
+ "content",
+ "data",
+ "datalist",
+ "dd",
+ "decorator",
+ "del",
+ "details",
+ "dfn",
+ "dialog",
+ "dir",
+ "div",
+ "dl",
+ "dt",
+ "element",
+ "em",
+ "fieldset",
+ "figcaption",
+ "figure",
+ "font",
+ "footer",
+ "form",
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "h6",
+ "head",
+ "header",
+ "hgroup",
+ "hr",
+ "html",
+ "i",
+ "img",
+ "input",
+ "ins",
+ "kbd",
+ "label",
+ "legend",
+ "li",
+ "main",
+ "map",
+ "mark",
+ "marquee",
+ "menu",
+ "menuitem",
+ "meter",
+ "nav",
+ "nobr",
+ "ol",
+ "optgroup",
+ "option",
+ "output",
+ "p",
+ "picture",
+ "pre",
+ "progress",
+ "q",
+ "rp",
+ "rt",
+ "ruby",
+ "s",
+ "samp",
+ "section",
+ "select",
+ "shadow",
+ "small",
+ "source",
+ "spacer",
+ "span",
+ "strike",
+ "strong",
+ "style",
+ "sub",
+ "summary",
+ "sup",
+ "table",
+ "tbody",
+ "td",
+ "template",
+ "textarea",
+ "tfoot",
+ "th",
+ "thead",
+ "time",
+ "tr",
+ "track",
+ "tt",
+ "u",
+ "ul",
+ "var",
+ "video",
+ "wbr",
+ ]),
+ B = o([
+ "svg",
+ "a",
+ "altglyph",
+ "altglyphdef",
+ "altglyphitem",
+ "animatecolor",
+ "animatemotion",
+ "animatetransform",
+ "circle",
+ "clippath",
+ "defs",
+ "desc",
+ "ellipse",
+ "filter",
+ "font",
+ "g",
+ "glyph",
+ "glyphref",
+ "hkern",
+ "image",
+ "line",
+ "lineargradient",
+ "marker",
+ "mask",
+ "metadata",
+ "mpath",
+ "path",
+ "pattern",
+ "polygon",
+ "polyline",
+ "radialgradient",
+ "rect",
+ "stop",
+ "style",
+ "switch",
+ "symbol",
+ "text",
+ "textpath",
+ "title",
+ "tref",
+ "tspan",
+ "view",
+ "vkern",
+ ]),
+ F = o([
+ "feBlend",
+ "feColorMatrix",
+ "feComponentTransfer",
+ "feComposite",
+ "feConvolveMatrix",
+ "feDiffuseLighting",
+ "feDisplacementMap",
+ "feDistantLight",
+ "feDropShadow",
+ "feFlood",
+ "feFuncA",
+ "feFuncB",
+ "feFuncG",
+ "feFuncR",
+ "feGaussianBlur",
+ "feImage",
+ "feMerge",
+ "feMergeNode",
+ "feMorphology",
+ "feOffset",
+ "fePointLight",
+ "feSpecularLighting",
+ "feSpotLight",
+ "feTile",
+ "feTurbulence",
+ ]),
+ L = o([
+ "animate",
+ "color-profile",
+ "cursor",
+ "discard",
+ "font-face",
+ "font-face-format",
+ "font-face-name",
+ "font-face-src",
+ "font-face-uri",
+ "foreignobject",
+ "hatch",
+ "hatchpath",
+ "mesh",
+ "meshgradient",
+ "meshpatch",
+ "meshrow",
+ "missing-glyph",
+ "script",
+ "set",
+ "solidcolor",
+ "unknown",
+ "use",
+ ]),
+ M = o([
+ "math",
+ "menclose",
+ "merror",
+ "mfenced",
+ "mfrac",
+ "mglyph",
+ "mi",
+ "mlabeledtr",
+ "mmultiscripts",
+ "mn",
+ "mo",
+ "mover",
+ "mpadded",
+ "mphantom",
+ "mroot",
+ "mrow",
+ "ms",
+ "mspace",
+ "msqrt",
+ "mstyle",
+ "msub",
+ "msup",
+ "msubsup",
+ "mtable",
+ "mtd",
+ "mtext",
+ "mtr",
+ "munder",
+ "munderover",
+ "mprescripts",
+ ]),
+ A = o([
+ "maction",
+ "maligngroup",
+ "malignmark",
+ "mlongdiv",
+ "mscarries",
+ "mscarry",
+ "msgroup",
+ "mstack",
+ "msline",
+ "msrow",
+ "semantics",
+ "annotation",
+ "annotation-xml",
+ "mprescripts",
+ "none",
+ ]),
+ E = o(["#text"]),
+ Z = o([
+ "accept",
+ "action",
+ "align",
+ "alt",
+ "autocapitalize",
+ "autocomplete",
+ "autopictureinpicture",
+ "autoplay",
+ "background",
+ "bgcolor",
+ "border",
+ "capture",
+ "cellpadding",
+ "cellspacing",
+ "checked",
+ "cite",
+ "class",
+ "clear",
+ "color",
+ "cols",
+ "colspan",
+ "controls",
+ "controlslist",
+ "coords",
+ "crossorigin",
+ "datetime",
+ "decoding",
+ "default",
+ "dir",
+ "disabled",
+ "disablepictureinpicture",
+ "disableremoteplayback",
+ "download",
+ "draggable",
+ "enctype",
+ "enterkeyhint",
+ "face",
+ "for",
+ "headers",
+ "height",
+ "hidden",
+ "high",
+ "href",
+ "hreflang",
+ "id",
+ "inputmode",
+ "integrity",
+ "ismap",
+ "kind",
+ "label",
+ "lang",
+ "list",
+ "loading",
+ "loop",
+ "low",
+ "max",
+ "maxlength",
+ "media",
+ "method",
+ "min",
+ "minlength",
+ "multiple",
+ "muted",
+ "name",
+ "nonce",
+ "noshade",
+ "novalidate",
+ "nowrap",
+ "open",
+ "optimum",
+ "pattern",
+ "placeholder",
+ "playsinline",
+ "poster",
+ "preload",
+ "pubdate",
+ "radiogroup",
+ "readonly",
+ "rel",
+ "required",
+ "rev",
+ "reversed",
+ "role",
+ "rows",
+ "rowspan",
+ "spellcheck",
+ "scope",
+ "selected",
+ "shape",
+ "size",
+ "sizes",
+ "span",
+ "srclang",
+ "start",
+ "src",
+ "srcset",
+ "step",
+ "style",
+ "summary",
+ "tabindex",
+ "title",
+ "translate",
+ "type",
+ "usemap",
+ "valign",
+ "value",
+ "width",
+ "xmlns",
+ "slot",
+ ]),
+ O = o([
+ "accent-height",
+ "accumulate",
+ "additive",
+ "alignment-baseline",
+ "ascent",
+ "attributename",
+ "attributetype",
+ "azimuth",
+ "basefrequency",
+ "baseline-shift",
+ "begin",
+ "bias",
+ "by",
+ "class",
+ "clip",
+ "clippathunits",
+ "clip-path",
+ "clip-rule",
+ "color",
+ "color-interpolation",
+ "color-interpolation-filters",
+ "color-profile",
+ "color-rendering",
+ "cx",
+ "cy",
+ "d",
+ "dx",
+ "dy",
+ "diffuseconstant",
+ "direction",
+ "display",
+ "divisor",
+ "dur",
+ "edgemode",
+ "elevation",
+ "end",
+ "fill",
+ "fill-opacity",
+ "fill-rule",
+ "filter",
+ "filterunits",
+ "flood-color",
+ "flood-opacity",
+ "font-family",
+ "font-size",
+ "font-size-adjust",
+ "font-stretch",
+ "font-style",
+ "font-variant",
+ "font-weight",
+ "fx",
+ "fy",
+ "g1",
+ "g2",
+ "glyph-name",
+ "glyphref",
+ "gradientunits",
+ "gradienttransform",
+ "height",
+ "href",
+ "id",
+ "image-rendering",
+ "in",
+ "in2",
+ "k",
+ "k1",
+ "k2",
+ "k3",
+ "k4",
+ "kerning",
+ "keypoints",
+ "keysplines",
+ "keytimes",
+ "lang",
+ "lengthadjust",
+ "letter-spacing",
+ "kernelmatrix",
+ "kernelunitlength",
+ "lighting-color",
+ "local",
+ "marker-end",
+ "marker-mid",
+ "marker-start",
+ "markerheight",
+ "markerunits",
+ "markerwidth",
+ "maskcontentunits",
+ "maskunits",
+ "max",
+ "mask",
+ "media",
+ "method",
+ "mode",
+ "min",
+ "name",
+ "numoctaves",
+ "offset",
+ "operator",
+ "opacity",
+ "order",
+ "orient",
+ "orientation",
+ "origin",
+ "overflow",
+ "paint-order",
+ "path",
+ "pathlength",
+ "patterncontentunits",
+ "patterntransform",
+ "patternunits",
+ "points",
+ "preservealpha",
+ "preserveaspectratio",
+ "primitiveunits",
+ "r",
+ "rx",
+ "ry",
+ "radius",
+ "refx",
+ "refy",
+ "repeatcount",
+ "repeatdur",
+ "restart",
+ "result",
+ "rotate",
+ "scale",
+ "seed",
+ "shape-rendering",
+ "specularconstant",
+ "specularexponent",
+ "spreadmethod",
+ "startoffset",
+ "stddeviation",
+ "stitchtiles",
+ "stop-color",
+ "stop-opacity",
+ "stroke-dasharray",
+ "stroke-dashoffset",
+ "stroke-linecap",
+ "stroke-linejoin",
+ "stroke-miterlimit",
+ "stroke-opacity",
+ "stroke",
+ "stroke-width",
+ "style",
+ "surfacescale",
+ "systemlanguage",
+ "tabindex",
+ "targetx",
+ "targety",
+ "transform",
+ "transform-origin",
+ "text-anchor",
+ "text-decoration",
+ "text-rendering",
+ "textlength",
+ "type",
+ "u1",
+ "u2",
+ "unicode",
+ "values",
+ "viewbox",
+ "visibility",
+ "version",
+ "vert-adv-y",
+ "vert-origin-x",
+ "vert-origin-y",
+ "width",
+ "word-spacing",
+ "wrap",
+ "writing-mode",
+ "xchannelselector",
+ "ychannelselector",
+ "x",
+ "x1",
+ "x2",
+ "xmlns",
+ "y",
+ "y1",
+ "y2",
+ "z",
+ "zoomandpan",
+ ]),
+ q = o([
+ "accent",
+ "accentunder",
+ "align",
+ "bevelled",
+ "close",
+ "columnsalign",
+ "columnlines",
+ "columnspan",
+ "denomalign",
+ "depth",
+ "dir",
+ "display",
+ "displaystyle",
+ "encoding",
+ "fence",
+ "frame",
+ "height",
+ "href",
+ "id",
+ "largeop",
+ "length",
+ "linethickness",
+ "lspace",
+ "lquote",
+ "mathbackground",
+ "mathcolor",
+ "mathsize",
+ "mathvariant",
+ "maxsize",
+ "minsize",
+ "movablelimits",
+ "notation",
+ "numalign",
+ "open",
+ "rowalign",
+ "rowlines",
+ "rowspacing",
+ "rowspan",
+ "rspace",
+ "rquote",
+ "scriptlevel",
+ "scriptminsize",
+ "scriptsizemultiplier",
+ "selection",
+ "separator",
+ "separators",
+ "stretchy",
+ "subscriptshift",
+ "supscriptshift",
+ "symmetric",
+ "voffset",
+ "width",
+ "xmlns",
+ ]),
+ I = o(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]),
+ N = a(/\{\{[\w\W]*|[\w\W]*\}\}/gm),
+ D = a(/<%[\w\W]*|[\w\W]*%>/gm),
+ $ = a(/\${[\w\W]*}/gm),
+ z = a(/^data-[\-\w.\u00B7-\uFFFF]/),
+ j = a(/^aria-[\-\w]+$/),
+ P = a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),
+ R = a(/^(?:\w+script|data):/i),
+ W = a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),
+ U = a(/^html$/i);
+ var H = Object.freeze({
+ __proto__: null,
+ MUSTACHE_EXPR: N,
+ ERB_EXPR: D,
+ TMPLIT_EXPR: $,
+ DATA_ATTR: z,
+ ARIA_ATTR: j,
+ IS_ALLOWED_URI: P,
+ IS_SCRIPT_OR_DATA: R,
+ ATTR_WHITESPACE: W,
+ DOCTYPE_NAME: U,
+ });
+ const Y = () => ("undefined" == typeof window ? null : window);
+ return (function e() {
+ let i = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : Y();
+ const r = (t) => e(t);
+ if (((r.version = "3.0.5"), (r.removed = []), !i || !i.document || 9 !== i.document.nodeType)) return (r.isSupported = !1), r;
+ const n = i.document,
+ a = n.currentScript;
+ let { document: s } = i;
+ const {
+ DocumentFragment: l,
+ HTMLTemplateElement: h,
+ Node: x,
+ Element: v,
+ NodeFilter: N,
+ NamedNodeMap: D = i.NamedNodeMap || i.MozNamedAttrMap,
+ HTMLFormElement: $,
+ DOMParser: z,
+ trustedTypes: j,
+ } = i,
+ R = v.prototype,
+ W = w(R, "cloneNode"),
+ V = w(R, "nextSibling"),
+ G = w(R, "childNodes"),
+ X = w(R, "parentNode");
+ if ("function" == typeof h) {
+ const t = s.createElement("template");
+ t.content && t.content.ownerDocument && (s = t.content.ownerDocument);
+ }
+ let J,
+ Q = "";
+ const { implementation: K, createNodeIterator: tt, createDocumentFragment: et, getElementsByTagName: it } = s,
+ { importNode: rt } = n;
+ let nt = {};
+ r.isSupported = "function" == typeof t && "function" == typeof X && K && void 0 !== K.createHTMLDocument;
+ const { MUSTACHE_EXPR: ot, ERB_EXPR: at, TMPLIT_EXPR: st, DATA_ATTR: lt, ARIA_ATTR: ht, IS_SCRIPT_OR_DATA: ct, ATTR_WHITESPACE: ut } = H;
+ let { IS_ALLOWED_URI: ft } = H,
+ dt = null;
+ const pt = k({}, [...S, ...B, ...F, ...M, ...E]);
+ let gt = null;
+ const mt = k({}, [...Z, ...O, ...q, ...I]);
+ let yt = Object.seal(
+ Object.create(null, {
+ tagNameCheck: { writable: !0, configurable: !1, enumerable: !0, value: null },
+ attributeNameCheck: { writable: !0, configurable: !1, enumerable: !0, value: null },
+ allowCustomizedBuiltInElements: {
+ writable: !0,
+ configurable: !1,
+ enumerable: !0,
+ value: !1,
+ },
+ }),
+ ),
+ _t = null,
+ bt = null,
+ Ct = !0,
+ xt = !0,
+ vt = !1,
+ kt = !0,
+ Tt = !1,
+ wt = !1,
+ St = !1,
+ Bt = !1,
+ Ft = !1,
+ Lt = !1,
+ Mt = !1,
+ At = !0,
+ Et = !1,
+ Zt = !0,
+ Ot = !1,
+ qt = {},
+ It = null;
+ const Nt = k({}, [
+ "annotation-xml",
+ "audio",
+ "colgroup",
+ "desc",
+ "foreignobject",
+ "head",
+ "iframe",
+ "math",
+ "mi",
+ "mn",
+ "mo",
+ "ms",
+ "mtext",
+ "noembed",
+ "noframes",
+ "noscript",
+ "plaintext",
+ "script",
+ "style",
+ "svg",
+ "template",
+ "thead",
+ "title",
+ "video",
+ "xmp",
+ ]);
+ let Dt = null;
+ const $t = k({}, ["audio", "video", "img", "source", "image", "track"]);
+ let zt = null;
+ const jt = k({}, [
+ "alt",
+ "class",
+ "for",
+ "id",
+ "label",
+ "name",
+ "pattern",
+ "placeholder",
+ "role",
+ "summary",
+ "title",
+ "value",
+ "style",
+ "xmlns",
+ ]),
+ Pt = "http://www.w3.org/1998/Math/MathML",
+ Rt = "http://www.w3.org/2000/svg",
+ Wt = "http://www.w3.org/1999/xhtml";
+ let Ut = Wt,
+ Ht = !1,
+ Yt = null;
+ const Vt = k({}, [Pt, Rt, Wt], p);
+ let Gt;
+ const Xt = ["application/xhtml+xml", "text/html"];
+ let Jt,
+ Qt = null;
+ const Kt = s.createElement("form"),
+ te = function (t) {
+ return t instanceof RegExp || t instanceof Function;
+ },
+ ee = function (t) {
+ if (!Qt || Qt !== t) {
+ if (
+ ((t && "object" == typeof t) || (t = {}),
+ (t = T(t)),
+ (Gt = Gt = -1 === Xt.indexOf(t.PARSER_MEDIA_TYPE) ? "text/html" : t.PARSER_MEDIA_TYPE),
+ (Jt = "application/xhtml+xml" === Gt ? p : d),
+ (dt = "ALLOWED_TAGS" in t ? k({}, t.ALLOWED_TAGS, Jt) : pt),
+ (gt = "ALLOWED_ATTR" in t ? k({}, t.ALLOWED_ATTR, Jt) : mt),
+ (Yt = "ALLOWED_NAMESPACES" in t ? k({}, t.ALLOWED_NAMESPACES, p) : Vt),
+ (zt = "ADD_URI_SAFE_ATTR" in t ? k(T(jt), t.ADD_URI_SAFE_ATTR, Jt) : jt),
+ (Dt = "ADD_DATA_URI_TAGS" in t ? k(T($t), t.ADD_DATA_URI_TAGS, Jt) : $t),
+ (It = "FORBID_CONTENTS" in t ? k({}, t.FORBID_CONTENTS, Jt) : Nt),
+ (_t = "FORBID_TAGS" in t ? k({}, t.FORBID_TAGS, Jt) : {}),
+ (bt = "FORBID_ATTR" in t ? k({}, t.FORBID_ATTR, Jt) : {}),
+ (qt = "USE_PROFILES" in t && t.USE_PROFILES),
+ (Ct = !1 !== t.ALLOW_ARIA_ATTR),
+ (xt = !1 !== t.ALLOW_DATA_ATTR),
+ (vt = t.ALLOW_UNKNOWN_PROTOCOLS || !1),
+ (kt = !1 !== t.ALLOW_SELF_CLOSE_IN_ATTR),
+ (Tt = t.SAFE_FOR_TEMPLATES || !1),
+ (wt = t.WHOLE_DOCUMENT || !1),
+ (Ft = t.RETURN_DOM || !1),
+ (Lt = t.RETURN_DOM_FRAGMENT || !1),
+ (Mt = t.RETURN_TRUSTED_TYPE || !1),
+ (Bt = t.FORCE_BODY || !1),
+ (At = !1 !== t.SANITIZE_DOM),
+ (Et = t.SANITIZE_NAMED_PROPS || !1),
+ (Zt = !1 !== t.KEEP_CONTENT),
+ (Ot = t.IN_PLACE || !1),
+ (ft = t.ALLOWED_URI_REGEXP || P),
+ (Ut = t.NAMESPACE || Wt),
+ (yt = t.CUSTOM_ELEMENT_HANDLING || {}),
+ t.CUSTOM_ELEMENT_HANDLING &&
+ te(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck) &&
+ (yt.tagNameCheck = t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),
+ t.CUSTOM_ELEMENT_HANDLING &&
+ te(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck) &&
+ (yt.attributeNameCheck = t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),
+ t.CUSTOM_ELEMENT_HANDLING &&
+ "boolean" == typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&
+ (yt.allowCustomizedBuiltInElements = t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),
+ Tt && (xt = !1),
+ Lt && (Ft = !0),
+ qt &&
+ ((dt = k({}, [...E])),
+ (gt = []),
+ !0 === qt.html && (k(dt, S), k(gt, Z)),
+ !0 === qt.svg && (k(dt, B), k(gt, O), k(gt, I)),
+ !0 === qt.svgFilters && (k(dt, F), k(gt, O), k(gt, I)),
+ !0 === qt.mathMl && (k(dt, M), k(gt, q), k(gt, I))),
+ t.ADD_TAGS && (dt === pt && (dt = T(dt)), k(dt, t.ADD_TAGS, Jt)),
+ t.ADD_ATTR && (gt === mt && (gt = T(gt)), k(gt, t.ADD_ATTR, Jt)),
+ t.ADD_URI_SAFE_ATTR && k(zt, t.ADD_URI_SAFE_ATTR, Jt),
+ t.FORBID_CONTENTS && (It === Nt && (It = T(It)), k(It, t.FORBID_CONTENTS, Jt)),
+ Zt && (dt["#text"] = !0),
+ wt && k(dt, ["html", "head", "body"]),
+ dt.table && (k(dt, ["tbody"]), delete _t.tbody),
+ t.TRUSTED_TYPES_POLICY)
+ ) {
+ if ("function" != typeof t.TRUSTED_TYPES_POLICY.createHTML)
+ throw C('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
+ if ("function" != typeof t.TRUSTED_TYPES_POLICY.createScriptURL)
+ throw C('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
+ (J = t.TRUSTED_TYPES_POLICY), (Q = J.createHTML(""));
+ } else
+ void 0 === J &&
+ (J = (function (t, e) {
+ if ("object" != typeof t || "function" != typeof t.createPolicy) return null;
+ let i = null;
+ const r = "data-tt-policy-suffix";
+ e && e.hasAttribute(r) && (i = e.getAttribute(r));
+ const n = "dompurify" + (i ? "#" + i : "");
+ try {
+ return t.createPolicy(n, {
+ createHTML(t) {
+ return t;
+ },
+ createScriptURL(t) {
+ return t;
+ },
+ });
+ } catch (t) {
+ return console.warn("TrustedTypes policy " + n + " could not be created."), null;
+ }
+ })(j, a)),
+ null !== J && "string" == typeof Q && (Q = J.createHTML(""));
+ o && o(t), (Qt = t);
+ }
+ },
+ ie = k({}, ["mi", "mo", "mn", "ms", "mtext"]),
+ re = k({}, ["foreignobject", "desc", "title", "annotation-xml"]),
+ ne = k({}, ["title", "style", "font", "a", "script"]),
+ oe = k({}, B);
+ k(oe, F), k(oe, L);
+ const ae = k({}, M);
+ k(ae, A);
+ const se = function (t) {
+ f(r.removed, { element: t });
+ try {
+ t.parentNode.removeChild(t);
+ } catch (e) {
+ t.remove();
+ }
+ },
+ le = function (t, e) {
+ try {
+ f(r.removed, { attribute: e.getAttributeNode(t), from: e });
+ } catch (t) {
+ f(r.removed, { attribute: null, from: e });
+ }
+ if ((e.removeAttribute(t), "is" === t && !gt[t]))
+ if (Ft || Lt)
+ try {
+ se(e);
+ } catch (t) {}
+ else
+ try {
+ e.setAttribute(t, "");
+ } catch (t) {}
+ },
+ he = function (t) {
+ let e, i;
+ if (Bt) t = " " + t;
+ else {
+ const e = g(t, /^[\r\n\t ]+/);
+ i = e && e[0];
+ }
+ "application/xhtml+xml" === Gt &&
+ Ut === Wt &&
+ (t = '' + t + "");
+ const r = J ? J.createHTML(t) : t;
+ if (Ut === Wt)
+ try {
+ e = new z().parseFromString(r, Gt);
+ } catch (t) {}
+ if (!e || !e.documentElement) {
+ e = K.createDocument(Ut, "template", null);
+ try {
+ e.documentElement.innerHTML = Ht ? Q : r;
+ } catch (t) {}
+ }
+ const n = e.body || e.documentElement;
+ return (
+ t && i && n.insertBefore(s.createTextNode(i), n.childNodes[0] || null),
+ Ut === Wt ? it.call(e, wt ? "html" : "body")[0] : wt ? e.documentElement : n
+ );
+ },
+ ce = function (t) {
+ return tt.call(t.ownerDocument || t, t, N.SHOW_ELEMENT | N.SHOW_COMMENT | N.SHOW_TEXT, null, !1);
+ },
+ ue = function (t) {
+ return "object" == typeof x
+ ? t instanceof x
+ : t && "object" == typeof t && "number" == typeof t.nodeType && "string" == typeof t.nodeName;
+ },
+ fe = function (t, e, i) {
+ nt[t] &&
+ c(nt[t], (t) => {
+ t.call(r, e, i, Qt);
+ });
+ },
+ de = function (t) {
+ let e;
+ if (
+ (fe("beforeSanitizeElements", t, null),
+ (i = t) instanceof $ &&
+ ("string" != typeof i.nodeName ||
+ "string" != typeof i.textContent ||
+ "function" != typeof i.removeChild ||
+ !(i.attributes instanceof D) ||
+ "function" != typeof i.removeAttribute ||
+ "function" != typeof i.setAttribute ||
+ "string" != typeof i.namespaceURI ||
+ "function" != typeof i.insertBefore ||
+ "function" != typeof i.hasChildNodes))
+ )
+ return se(t), !0;
+ var i;
+ const n = Jt(t.nodeName);
+ if (
+ (fe("uponSanitizeElement", t, { tagName: n, allowedTags: dt }),
+ t.hasChildNodes() &&
+ !ue(t.firstElementChild) &&
+ (!ue(t.content) || !ue(t.content.firstElementChild)) &&
+ b(/<[/\w]/g, t.innerHTML) &&
+ b(/<[/\w]/g, t.textContent))
+ )
+ return se(t), !0;
+ if (!dt[n] || _t[n]) {
+ if (!_t[n] && ge(n)) {
+ if (yt.tagNameCheck instanceof RegExp && b(yt.tagNameCheck, n)) return !1;
+ if (yt.tagNameCheck instanceof Function && yt.tagNameCheck(n)) return !1;
+ }
+ if (Zt && !It[n]) {
+ const e = X(t) || t.parentNode,
+ i = G(t) || t.childNodes;
+ if (i && e) for (let r = i.length - 1; r >= 0; --r) e.insertBefore(W(i[r], !0), V(t));
+ }
+ return se(t), !0;
+ }
+ return t instanceof v &&
+ !(function (t) {
+ let e = X(t);
+ (e && e.tagName) || (e = { namespaceURI: Ut, tagName: "template" });
+ const i = d(t.tagName),
+ r = d(e.tagName);
+ return (
+ !!Yt[t.namespaceURI] &&
+ (t.namespaceURI === Rt
+ ? e.namespaceURI === Wt
+ ? "svg" === i
+ : e.namespaceURI === Pt
+ ? "svg" === i && ("annotation-xml" === r || ie[r])
+ : Boolean(oe[i])
+ : t.namespaceURI === Pt
+ ? e.namespaceURI === Wt
+ ? "math" === i
+ : e.namespaceURI === Rt
+ ? "math" === i && re[r]
+ : Boolean(ae[i])
+ : t.namespaceURI === Wt
+ ? !(e.namespaceURI === Rt && !re[r]) && !(e.namespaceURI === Pt && !ie[r]) && !ae[i] && (ne[i] || !oe[i])
+ : !("application/xhtml+xml" !== Gt || !Yt[t.namespaceURI]))
+ );
+ })(t)
+ ? (se(t), !0)
+ : ("noscript" !== n && "noembed" !== n && "noframes" !== n) || !b(/<\/no(script|embed|frames)/i, t.innerHTML)
+ ? (Tt &&
+ 3 === t.nodeType &&
+ ((e = t.textContent),
+ (e = m(e, ot, " ")),
+ (e = m(e, at, " ")),
+ (e = m(e, st, " ")),
+ t.textContent !== e && (f(r.removed, { element: t.cloneNode() }), (t.textContent = e))),
+ fe("afterSanitizeElements", t, null),
+ !1)
+ : (se(t), !0);
+ },
+ pe = function (t, e, i) {
+ if (At && ("id" === e || "name" === e) && (i in s || i in Kt)) return !1;
+ if (xt && !bt[e] && b(lt, e));
+ else if (Ct && b(ht, e));
+ else if (!gt[e] || bt[e]) {
+ if (
+ !(
+ (ge(t) &&
+ ((yt.tagNameCheck instanceof RegExp && b(yt.tagNameCheck, t)) || (yt.tagNameCheck instanceof Function && yt.tagNameCheck(t))) &&
+ ((yt.attributeNameCheck instanceof RegExp && b(yt.attributeNameCheck, e)) ||
+ (yt.attributeNameCheck instanceof Function && yt.attributeNameCheck(e)))) ||
+ ("is" === e &&
+ yt.allowCustomizedBuiltInElements &&
+ ((yt.tagNameCheck instanceof RegExp && b(yt.tagNameCheck, i)) || (yt.tagNameCheck instanceof Function && yt.tagNameCheck(i))))
+ )
+ )
+ return !1;
+ } else if (zt[e]);
+ else if (b(ft, m(i, ut, "")));
+ else if (("src" !== e && "xlink:href" !== e && "href" !== e) || "script" === t || 0 !== y(i, "data:") || !Dt[t])
+ if (vt && !b(ct, m(i, ut, "")));
+ else if (i) return !1;
+ return !0;
+ },
+ ge = function (t) {
+ return t.indexOf("-") > 0;
+ },
+ me = function (t) {
+ let e, i, n, o;
+ fe("beforeSanitizeAttributes", t, null);
+ const { attributes: a } = t;
+ if (!a) return;
+ const s = { attrName: "", attrValue: "", keepAttr: !0, allowedAttributes: gt };
+ for (o = a.length; o--; ) {
+ e = a[o];
+ const { name: l, namespaceURI: h } = e;
+ if (
+ ((i = "value" === l ? e.value : _(e.value)),
+ (n = Jt(l)),
+ (s.attrName = n),
+ (s.attrValue = i),
+ (s.keepAttr = !0),
+ (s.forceKeepAttr = void 0),
+ fe("uponSanitizeAttribute", t, s),
+ (i = s.attrValue),
+ s.forceKeepAttr)
+ )
+ continue;
+ if ((le(l, t), !s.keepAttr)) continue;
+ if (!kt && b(/\/>/i, i)) {
+ le(l, t);
+ continue;
+ }
+ Tt && ((i = m(i, ot, " ")), (i = m(i, at, " ")), (i = m(i, st, " ")));
+ const c = Jt(t.nodeName);
+ if (pe(c, n, i)) {
+ if (
+ (!Et || ("id" !== n && "name" !== n) || (le(l, t), (i = "user-content-" + i)),
+ J && "object" == typeof j && "function" == typeof j.getAttributeType)
+ )
+ if (h);
+ else
+ switch (j.getAttributeType(c, n)) {
+ case "TrustedHTML":
+ i = J.createHTML(i);
+ break;
+ case "TrustedScriptURL":
+ i = J.createScriptURL(i);
+ }
+ try {
+ h ? t.setAttributeNS(h, l, i) : t.setAttribute(l, i), u(r.removed);
+ } catch (t) {}
+ }
+ }
+ fe("afterSanitizeAttributes", t, null);
+ },
+ ye = function t(e) {
+ let i;
+ const r = ce(e);
+ for (fe("beforeSanitizeShadowDOM", e, null); (i = r.nextNode()); )
+ fe("uponSanitizeShadowNode", i, null), de(i) || (i.content instanceof l && t(i.content), me(i));
+ fe("afterSanitizeShadowDOM", e, null);
+ };
+ return (
+ (r.sanitize = function (t) {
+ let e,
+ i,
+ o,
+ a,
+ s = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
+ if (((Ht = !t), Ht && (t = "\x3c!--\x3e"), "string" != typeof t && !ue(t))) {
+ if ("function" != typeof t.toString) throw C("toString is not a function");
+ if ("string" != typeof (t = t.toString())) throw C("dirty is not a string, aborting");
+ }
+ if (!r.isSupported) return t;
+ if ((St || ee(s), (r.removed = []), "string" == typeof t && (Ot = !1), Ot)) {
+ if (t.nodeName) {
+ const e = Jt(t.nodeName);
+ if (!dt[e] || _t[e]) throw C("root node is forbidden and cannot be sanitized in-place");
+ }
+ } else if (t instanceof x)
+ (e = he("\x3c!----\x3e")),
+ (i = e.ownerDocument.importNode(t, !0)),
+ (1 === i.nodeType && "BODY" === i.nodeName) || "HTML" === i.nodeName ? (e = i) : e.appendChild(i);
+ else {
+ if (!Ft && !Tt && !wt && -1 === t.indexOf("<")) return J && Mt ? J.createHTML(t) : t;
+ if (((e = he(t)), !e)) return Ft ? null : Mt ? Q : "";
+ }
+ e && Bt && se(e.firstChild);
+ const h = ce(Ot ? t : e);
+ for (; (o = h.nextNode()); ) de(o) || (o.content instanceof l && ye(o.content), me(o));
+ if (Ot) return t;
+ if (Ft) {
+ if (Lt) for (a = et.call(e.ownerDocument); e.firstChild; ) a.appendChild(e.firstChild);
+ else a = e;
+ return (gt.shadowroot || gt.shadowrootmode) && (a = rt.call(n, a, !0)), a;
+ }
+ let c = wt ? e.outerHTML : e.innerHTML;
+ return (
+ wt &&
+ dt["!doctype"] &&
+ e.ownerDocument &&
+ e.ownerDocument.doctype &&
+ e.ownerDocument.doctype.name &&
+ b(U, e.ownerDocument.doctype.name) &&
+ (c = "\n" + c),
+ Tt && ((c = m(c, ot, " ")), (c = m(c, at, " ")), (c = m(c, st, " "))),
+ J && Mt ? J.createHTML(c) : c
+ );
+ }),
+ (r.setConfig = function (t) {
+ ee(t), (St = !0);
+ }),
+ (r.clearConfig = function () {
+ (Qt = null), (St = !1);
+ }),
+ (r.isValidAttribute = function (t, e, i) {
+ Qt || ee({});
+ const r = Jt(t),
+ n = Jt(e);
+ return pe(r, n, i);
+ }),
+ (r.addHook = function (t, e) {
+ "function" == typeof e && ((nt[t] = nt[t] || []), f(nt[t], e));
+ }),
+ (r.removeHook = function (t) {
+ if (nt[t]) return u(nt[t]);
+ }),
+ (r.removeHooks = function (t) {
+ nt[t] && (nt[t] = []);
+ }),
+ (r.removeAllHooks = function () {
+ nt = {};
+ }),
+ r
+ );
+ })();
+ })();
+ },
+ 8464: function (t, e, i) {
+ "use strict";
+ function r(t) {
+ for (var e = [], i = 1; i < arguments.length; i++) e[i - 1] = arguments[i];
+ var r = Array.from("string" == typeof t ? [t] : t);
+ r[r.length - 1] = r[r.length - 1].replace(/\r?\n([\t ]*)$/, "");
+ var n = r.reduce(function (t, e) {
+ var i = e.match(/\n([\t ]+|(?!\s).)/g);
+ return i
+ ? t.concat(
+ i.map(function (t) {
+ var e, i;
+ return null !== (i = null === (e = t.match(/[\t ]/g)) || void 0 === e ? void 0 : e.length) && void 0 !== i ? i : 0;
+ }),
+ )
+ : t;
+ }, []);
+ if (n.length) {
+ var o = new RegExp("\n[\t ]{" + Math.min.apply(Math, n) + "}", "g");
+ r = r.map(function (t) {
+ return t.replace(o, "\n");
+ });
+ }
+ r[0] = r[0].replace(/^\r?\n/, "");
+ var a = r[0];
+ return (
+ e.forEach(function (t, e) {
+ var i = a.match(/(?:^|\n)( *)$/),
+ n = i ? i[1] : "",
+ o = t;
+ "string" == typeof t &&
+ t.includes("\n") &&
+ (o = String(t)
+ .split("\n")
+ .map(function (t, e) {
+ return 0 === e ? t : "" + n + t;
+ })
+ .join("\n")),
+ (a += o + r[e + 1]);
+ }),
+ a
+ );
+ }
+ i.d(e, {
+ Z: function () {
+ return r;
+ },
+ });
+ },
+ 7274: function (t, e, i) {
+ "use strict";
+ function r(t, e) {
+ let i;
+ if (void 0 === e) for (const e of t) null != e && (i < e || (void 0 === i && e >= e)) && (i = e);
+ else {
+ let r = -1;
+ for (let n of t) null != (n = e(n, ++r, t)) && (i < n || (void 0 === i && n >= n)) && (i = n);
+ }
+ return i;
+ }
+ function n(t, e) {
+ let i;
+ if (void 0 === e) for (const e of t) null != e && (i > e || (void 0 === i && e >= e)) && (i = e);
+ else {
+ let r = -1;
+ for (let n of t) null != (n = e(n, ++r, t)) && (i > n || (void 0 === i && n >= n)) && (i = n);
+ }
+ return i;
+ }
+ function o(t) {
+ return t;
+ }
+ i.d(e, {
+ Nb1: function () {
+ return Ya;
+ },
+ LLu: function () {
+ return _;
+ },
+ F5q: function () {
+ return y;
+ },
+ $0Z: function () {
+ return as;
+ },
+ Dts: function () {
+ return ls;
+ },
+ WQY: function () {
+ return cs;
+ },
+ qpX: function () {
+ return fs;
+ },
+ u93: function () {
+ return ds;
+ },
+ tFB: function () {
+ return gs;
+ },
+ YY7: function () {
+ return _s;
+ },
+ OvA: function () {
+ return Cs;
+ },
+ dCK: function () {
+ return vs;
+ },
+ zgE: function () {
+ return ws;
+ },
+ fGX: function () {
+ return Bs;
+ },
+ $m7: function () {
+ return Ls;
+ },
+ c_6: function () {
+ return Xa;
+ },
+ fxm: function () {
+ return As;
+ },
+ FdL: function () {
+ return $s;
+ },
+ ak_: function () {
+ return zs;
+ },
+ SxZ: function () {
+ return Rs;
+ },
+ eA_: function () {
+ return Us;
+ },
+ jsv: function () {
+ return Ys;
+ },
+ iJ: function () {
+ return Hs;
+ },
+ JHv: function () {
+ return or;
+ },
+ jvg: function () {
+ return Ka;
+ },
+ Fp7: function () {
+ return r;
+ },
+ VV$: function () {
+ return n;
+ },
+ ve8: function () {
+ return is;
+ },
+ BYU: function () {
+ return Gr;
+ },
+ PKp: function () {
+ return tn;
+ },
+ Xf: function () {
+ return ya;
+ },
+ K2I: function () {
+ return _a;
+ },
+ Ys: function () {
+ return ba;
+ },
+ td_: function () {
+ return Ca;
+ },
+ YPS: function () {
+ return $i;
+ },
+ rr1: function () {
+ return yn;
+ },
+ i$Z: function () {
+ return Gn;
+ },
+ y2j: function () {
+ return Sn;
+ },
+ WQD: function () {
+ return gn;
+ },
+ Z_i: function () {
+ return dn;
+ },
+ Ox9: function () {
+ return vn;
+ },
+ F0B: function () {
+ return In;
+ },
+ LqH: function () {
+ return Bn;
+ },
+ Zyz: function () {
+ return xn;
+ },
+ Igq: function () {
+ return wn;
+ },
+ YDX: function () {
+ return kn;
+ },
+ EFj: function () {
+ return Tn;
+ },
+ });
+ var a = 1,
+ s = 2,
+ l = 3,
+ h = 4,
+ c = 1e-6;
+ function u(t) {
+ return "translate(" + t + ",0)";
+ }
+ function f(t) {
+ return "translate(0," + t + ")";
+ }
+ function d(t) {
+ return (e) => +t(e);
+ }
+ function p(t, e) {
+ return (e = Math.max(0, t.bandwidth() - 2 * e) / 2), t.round() && (e = Math.round(e)), (i) => +t(i) + e;
+ }
+ function g() {
+ return !this.__axis;
+ }
+ function m(t, e) {
+ var i = [],
+ r = null,
+ n = null,
+ m = 6,
+ y = 6,
+ _ = 3,
+ b = "undefined" != typeof window && window.devicePixelRatio > 1 ? 0 : 0.5,
+ C = t === a || t === h ? -1 : 1,
+ x = t === h || t === s ? "x" : "y",
+ v = t === a || t === l ? u : f;
+ function k(u) {
+ var f = null == r ? (e.ticks ? e.ticks.apply(e, i) : e.domain()) : r,
+ k = null == n ? (e.tickFormat ? e.tickFormat.apply(e, i) : o) : n,
+ T = Math.max(m, 0) + _,
+ w = e.range(),
+ S = +w[0] + b,
+ B = +w[w.length - 1] + b,
+ F = (e.bandwidth ? p : d)(e.copy(), b),
+ L = u.selection ? u.selection() : u,
+ M = L.selectAll(".domain").data([null]),
+ A = L.selectAll(".tick").data(f, e).order(),
+ E = A.exit(),
+ Z = A.enter().append("g").attr("class", "tick"),
+ O = A.select("line"),
+ q = A.select("text");
+ (M = M.merge(M.enter().insert("path", ".tick").attr("class", "domain").attr("stroke", "currentColor"))),
+ (A = A.merge(Z)),
+ (O = O.merge(
+ Z.append("line")
+ .attr("stroke", "currentColor")
+ .attr(x + "2", C * m),
+ )),
+ (q = q.merge(
+ Z.append("text")
+ .attr("fill", "currentColor")
+ .attr(x, C * T)
+ .attr("dy", t === a ? "0em" : t === l ? "0.71em" : "0.32em"),
+ )),
+ u !== L &&
+ ((M = M.transition(u)),
+ (A = A.transition(u)),
+ (O = O.transition(u)),
+ (q = q.transition(u)),
+ (E = E.transition(u)
+ .attr("opacity", c)
+ .attr("transform", function (t) {
+ return isFinite((t = F(t))) ? v(t + b) : this.getAttribute("transform");
+ })),
+ Z.attr("opacity", c).attr("transform", function (t) {
+ var e = this.parentNode.__axis;
+ return v((e && isFinite((e = e(t))) ? e : F(t)) + b);
+ })),
+ E.remove(),
+ M.attr(
+ "d",
+ t === h || t === s
+ ? y
+ ? "M" + C * y + "," + S + "H" + b + "V" + B + "H" + C * y
+ : "M" + b + "," + S + "V" + B
+ : y
+ ? "M" + S + "," + C * y + "V" + b + "H" + B + "V" + C * y
+ : "M" + S + "," + b + "H" + B,
+ ),
+ A.attr("opacity", 1).attr("transform", function (t) {
+ return v(F(t) + b);
+ }),
+ O.attr(x + "2", C * m),
+ q.attr(x, C * T).text(k),
+ L.filter(g)
+ .attr("fill", "none")
+ .attr("font-size", 10)
+ .attr("font-family", "sans-serif")
+ .attr("text-anchor", t === s ? "start" : t === h ? "end" : "middle"),
+ L.each(function () {
+ this.__axis = F;
+ });
+ }
+ return (
+ (k.scale = function (t) {
+ return arguments.length ? ((e = t), k) : e;
+ }),
+ (k.ticks = function () {
+ return (i = Array.from(arguments)), k;
+ }),
+ (k.tickArguments = function (t) {
+ return arguments.length ? ((i = null == t ? [] : Array.from(t)), k) : i.slice();
+ }),
+ (k.tickValues = function (t) {
+ return arguments.length ? ((r = null == t ? null : Array.from(t)), k) : r && r.slice();
+ }),
+ (k.tickFormat = function (t) {
+ return arguments.length ? ((n = t), k) : n;
+ }),
+ (k.tickSize = function (t) {
+ return arguments.length ? ((m = y = +t), k) : m;
+ }),
+ (k.tickSizeInner = function (t) {
+ return arguments.length ? ((m = +t), k) : m;
+ }),
+ (k.tickSizeOuter = function (t) {
+ return arguments.length ? ((y = +t), k) : y;
+ }),
+ (k.tickPadding = function (t) {
+ return arguments.length ? ((_ = +t), k) : _;
+ }),
+ (k.offset = function (t) {
+ return arguments.length ? ((b = +t), k) : b;
+ }),
+ k
+ );
+ }
+ function y(t) {
+ return m(a, t);
+ }
+ function _(t) {
+ return m(l, t);
+ }
+ function b() {}
+ function C(t) {
+ return null == t
+ ? b
+ : function () {
+ return this.querySelector(t);
+ };
+ }
+ function x(t) {
+ return null == t ? [] : Array.isArray(t) ? t : Array.from(t);
+ }
+ function v() {
+ return [];
+ }
+ function k(t) {
+ return null == t
+ ? v
+ : function () {
+ return this.querySelectorAll(t);
+ };
+ }
+ function T(t) {
+ return function () {
+ return this.matches(t);
+ };
+ }
+ function w(t) {
+ return function (e) {
+ return e.matches(t);
+ };
+ }
+ var S = Array.prototype.find;
+ function B() {
+ return this.firstElementChild;
+ }
+ var F = Array.prototype.filter;
+ function L() {
+ return Array.from(this.children);
+ }
+ function M(t) {
+ return new Array(t.length);
+ }
+ function A(t, e) {
+ (this.ownerDocument = t.ownerDocument), (this.namespaceURI = t.namespaceURI), (this._next = null), (this._parent = t), (this.__data__ = e);
+ }
+ function E(t, e, i, r, n, o) {
+ for (var a, s = 0, l = e.length, h = o.length; s < h; ++s) (a = e[s]) ? ((a.__data__ = o[s]), (r[s] = a)) : (i[s] = new A(t, o[s]));
+ for (; s < l; ++s) (a = e[s]) && (n[s] = a);
+ }
+ function Z(t, e, i, r, n, o, a) {
+ var s,
+ l,
+ h,
+ c = new Map(),
+ u = e.length,
+ f = o.length,
+ d = new Array(u);
+ for (s = 0; s < u; ++s) (l = e[s]) && ((d[s] = h = a.call(l, l.__data__, s, e) + ""), c.has(h) ? (n[s] = l) : c.set(h, l));
+ for (s = 0; s < f; ++s)
+ (h = a.call(t, o[s], s, o) + ""), (l = c.get(h)) ? ((r[s] = l), (l.__data__ = o[s]), c.delete(h)) : (i[s] = new A(t, o[s]));
+ for (s = 0; s < u; ++s) (l = e[s]) && c.get(d[s]) === l && (n[s] = l);
+ }
+ function O(t) {
+ return t.__data__;
+ }
+ function q(t) {
+ return "object" == typeof t && "length" in t ? t : Array.from(t);
+ }
+ function I(t, e) {
+ return t < e ? -1 : t > e ? 1 : t >= e ? 0 : NaN;
+ }
+ A.prototype = {
+ constructor: A,
+ appendChild: function (t) {
+ return this._parent.insertBefore(t, this._next);
+ },
+ insertBefore: function (t, e) {
+ return this._parent.insertBefore(t, e);
+ },
+ querySelector: function (t) {
+ return this._parent.querySelector(t);
+ },
+ querySelectorAll: function (t) {
+ return this._parent.querySelectorAll(t);
+ },
+ };
+ var N = "http://www.w3.org/1999/xhtml",
+ D = {
+ svg: "http://www.w3.org/2000/svg",
+ xhtml: N,
+ xlink: "http://www.w3.org/1999/xlink",
+ xml: "http://www.w3.org/XML/1998/namespace",
+ xmlns: "http://www.w3.org/2000/xmlns/",
+ };
+ function $(t) {
+ var e = (t += ""),
+ i = e.indexOf(":");
+ return i >= 0 && "xmlns" !== (e = t.slice(0, i)) && (t = t.slice(i + 1)), D.hasOwnProperty(e) ? { space: D[e], local: t } : t;
+ }
+ function z(t) {
+ return function () {
+ this.removeAttribute(t);
+ };
+ }
+ function j(t) {
+ return function () {
+ this.removeAttributeNS(t.space, t.local);
+ };
+ }
+ function P(t, e) {
+ return function () {
+ this.setAttribute(t, e);
+ };
+ }
+ function R(t, e) {
+ return function () {
+ this.setAttributeNS(t.space, t.local, e);
+ };
+ }
+ function W(t, e) {
+ return function () {
+ var i = e.apply(this, arguments);
+ null == i ? this.removeAttribute(t) : this.setAttribute(t, i);
+ };
+ }
+ function U(t, e) {
+ return function () {
+ var i = e.apply(this, arguments);
+ null == i ? this.removeAttributeNS(t.space, t.local) : this.setAttributeNS(t.space, t.local, i);
+ };
+ }
+ function H(t) {
+ return (t.ownerDocument && t.ownerDocument.defaultView) || (t.document && t) || t.defaultView;
+ }
+ function Y(t) {
+ return function () {
+ this.style.removeProperty(t);
+ };
+ }
+ function V(t, e, i) {
+ return function () {
+ this.style.setProperty(t, e, i);
+ };
+ }
+ function G(t, e, i) {
+ return function () {
+ var r = e.apply(this, arguments);
+ null == r ? this.style.removeProperty(t) : this.style.setProperty(t, r, i);
+ };
+ }
+ function X(t, e) {
+ return t.style.getPropertyValue(e) || H(t).getComputedStyle(t, null).getPropertyValue(e);
+ }
+ function J(t) {
+ return function () {
+ delete this[t];
+ };
+ }
+ function Q(t, e) {
+ return function () {
+ this[t] = e;
+ };
+ }
+ function K(t, e) {
+ return function () {
+ var i = e.apply(this, arguments);
+ null == i ? delete this[t] : (this[t] = i);
+ };
+ }
+ function tt(t) {
+ return t.trim().split(/^|\s+/);
+ }
+ function et(t) {
+ return t.classList || new it(t);
+ }
+ function it(t) {
+ (this._node = t), (this._names = tt(t.getAttribute("class") || ""));
+ }
+ function rt(t, e) {
+ for (var i = et(t), r = -1, n = e.length; ++r < n; ) i.add(e[r]);
+ }
+ function nt(t, e) {
+ for (var i = et(t), r = -1, n = e.length; ++r < n; ) i.remove(e[r]);
+ }
+ function ot(t) {
+ return function () {
+ rt(this, t);
+ };
+ }
+ function at(t) {
+ return function () {
+ nt(this, t);
+ };
+ }
+ function st(t, e) {
+ return function () {
+ (e.apply(this, arguments) ? rt : nt)(this, t);
+ };
+ }
+ function lt() {
+ this.textContent = "";
+ }
+ function ht(t) {
+ return function () {
+ this.textContent = t;
+ };
+ }
+ function ct(t) {
+ return function () {
+ var e = t.apply(this, arguments);
+ this.textContent = null == e ? "" : e;
+ };
+ }
+ function ut() {
+ this.innerHTML = "";
+ }
+ function ft(t) {
+ return function () {
+ this.innerHTML = t;
+ };
+ }
+ function dt(t) {
+ return function () {
+ var e = t.apply(this, arguments);
+ this.innerHTML = null == e ? "" : e;
+ };
+ }
+ function pt() {
+ this.nextSibling && this.parentNode.appendChild(this);
+ }
+ function gt() {
+ this.previousSibling && this.parentNode.insertBefore(this, this.parentNode.firstChild);
+ }
+ function mt(t) {
+ return function () {
+ var e = this.ownerDocument,
+ i = this.namespaceURI;
+ return i === N && e.documentElement.namespaceURI === N ? e.createElement(t) : e.createElementNS(i, t);
+ };
+ }
+ function yt(t) {
+ return function () {
+ return this.ownerDocument.createElementNS(t.space, t.local);
+ };
+ }
+ function _t(t) {
+ var e = $(t);
+ return (e.local ? yt : mt)(e);
+ }
+ function bt() {
+ return null;
+ }
+ function Ct() {
+ var t = this.parentNode;
+ t && t.removeChild(this);
+ }
+ function xt() {
+ var t = this.cloneNode(!1),
+ e = this.parentNode;
+ return e ? e.insertBefore(t, this.nextSibling) : t;
+ }
+ function vt() {
+ var t = this.cloneNode(!0),
+ e = this.parentNode;
+ return e ? e.insertBefore(t, this.nextSibling) : t;
+ }
+ function kt(t) {
+ return function () {
+ var e = this.__on;
+ if (e) {
+ for (var i, r = 0, n = -1, o = e.length; r < o; ++r)
+ (i = e[r]), (t.type && i.type !== t.type) || i.name !== t.name ? (e[++n] = i) : this.removeEventListener(i.type, i.listener, i.options);
+ ++n ? (e.length = n) : delete this.__on;
+ }
+ };
+ }
+ function Tt(t, e, i) {
+ return function () {
+ var r,
+ n = this.__on,
+ o = (function (t) {
+ return function (e) {
+ t.call(this, e, this.__data__);
+ };
+ })(e);
+ if (n)
+ for (var a = 0, s = n.length; a < s; ++a)
+ if ((r = n[a]).type === t.type && r.name === t.name)
+ return (
+ this.removeEventListener(r.type, r.listener, r.options),
+ this.addEventListener(r.type, (r.listener = o), (r.options = i)),
+ void (r.value = e)
+ );
+ this.addEventListener(t.type, o, i),
+ (r = { type: t.type, name: t.name, value: e, listener: o, options: i }),
+ n ? n.push(r) : (this.__on = [r]);
+ };
+ }
+ function wt(t, e, i) {
+ var r = H(t),
+ n = r.CustomEvent;
+ "function" == typeof n
+ ? (n = new n(e, i))
+ : ((n = r.document.createEvent("Event")), i ? (n.initEvent(e, i.bubbles, i.cancelable), (n.detail = i.detail)) : n.initEvent(e, !1, !1)),
+ t.dispatchEvent(n);
+ }
+ function St(t, e) {
+ return function () {
+ return wt(this, t, e);
+ };
+ }
+ function Bt(t, e) {
+ return function () {
+ return wt(this, t, e.apply(this, arguments));
+ };
+ }
+ it.prototype = {
+ add: function (t) {
+ this._names.indexOf(t) < 0 && (this._names.push(t), this._node.setAttribute("class", this._names.join(" ")));
+ },
+ remove: function (t) {
+ var e = this._names.indexOf(t);
+ e >= 0 && (this._names.splice(e, 1), this._node.setAttribute("class", this._names.join(" ")));
+ },
+ contains: function (t) {
+ return this._names.indexOf(t) >= 0;
+ },
+ };
+ var Ft = [null];
+ function Lt(t, e) {
+ (this._groups = t), (this._parents = e);
+ }
+ function Mt() {
+ return new Lt([[document.documentElement]], Ft);
+ }
+ Lt.prototype = Mt.prototype = {
+ constructor: Lt,
+ select: function (t) {
+ "function" != typeof t && (t = C(t));
+ for (var e = this._groups, i = e.length, r = new Array(i), n = 0; n < i; ++n)
+ for (var o, a, s = e[n], l = s.length, h = (r[n] = new Array(l)), c = 0; c < l; ++c)
+ (o = s[c]) && (a = t.call(o, o.__data__, c, s)) && ("__data__" in o && (a.__data__ = o.__data__), (h[c] = a));
+ return new Lt(r, this._parents);
+ },
+ selectAll: function (t) {
+ t =
+ "function" == typeof t
+ ? (function (t) {
+ return function () {
+ return x(t.apply(this, arguments));
+ };
+ })(t)
+ : k(t);
+ for (var e = this._groups, i = e.length, r = [], n = [], o = 0; o < i; ++o)
+ for (var a, s = e[o], l = s.length, h = 0; h < l; ++h) (a = s[h]) && (r.push(t.call(a, a.__data__, h, s)), n.push(a));
+ return new Lt(r, n);
+ },
+ selectChild: function (t) {
+ return this.select(
+ null == t
+ ? B
+ : (function (t) {
+ return function () {
+ return S.call(this.children, t);
+ };
+ })("function" == typeof t ? t : w(t)),
+ );
+ },
+ selectChildren: function (t) {
+ return this.selectAll(
+ null == t
+ ? L
+ : (function (t) {
+ return function () {
+ return F.call(this.children, t);
+ };
+ })("function" == typeof t ? t : w(t)),
+ );
+ },
+ filter: function (t) {
+ "function" != typeof t && (t = T(t));
+ for (var e = this._groups, i = e.length, r = new Array(i), n = 0; n < i; ++n)
+ for (var o, a = e[n], s = a.length, l = (r[n] = []), h = 0; h < s; ++h) (o = a[h]) && t.call(o, o.__data__, h, a) && l.push(o);
+ return new Lt(r, this._parents);
+ },
+ data: function (t, e) {
+ if (!arguments.length) return Array.from(this, O);
+ var i,
+ r = e ? Z : E,
+ n = this._parents,
+ o = this._groups;
+ "function" != typeof t &&
+ ((i = t),
+ (t = function () {
+ return i;
+ }));
+ for (var a = o.length, s = new Array(a), l = new Array(a), h = new Array(a), c = 0; c < a; ++c) {
+ var u = n[c],
+ f = o[c],
+ d = f.length,
+ p = q(t.call(u, u && u.__data__, c, n)),
+ g = p.length,
+ m = (l[c] = new Array(g)),
+ y = (s[c] = new Array(g));
+ r(u, f, m, y, (h[c] = new Array(d)), p, e);
+ for (var _, b, C = 0, x = 0; C < g; ++C)
+ if ((_ = m[C])) {
+ for (C >= x && (x = C + 1); !(b = y[x]) && ++x < g; );
+ _._next = b || null;
+ }
+ }
+ return ((s = new Lt(s, n))._enter = l), (s._exit = h), s;
+ },
+ enter: function () {
+ return new Lt(this._enter || this._groups.map(M), this._parents);
+ },
+ exit: function () {
+ return new Lt(this._exit || this._groups.map(M), this._parents);
+ },
+ join: function (t, e, i) {
+ var r = this.enter(),
+ n = this,
+ o = this.exit();
+ return (
+ "function" == typeof t ? (r = t(r)) && (r = r.selection()) : (r = r.append(t + "")),
+ null != e && (n = e(n)) && (n = n.selection()),
+ null == i ? o.remove() : i(o),
+ r && n ? r.merge(n).order() : n
+ );
+ },
+ merge: function (t) {
+ for (
+ var e = t.selection ? t.selection() : t,
+ i = this._groups,
+ r = e._groups,
+ n = i.length,
+ o = r.length,
+ a = Math.min(n, o),
+ s = new Array(n),
+ l = 0;
+ l < a;
+ ++l
+ )
+ for (var h, c = i[l], u = r[l], f = c.length, d = (s[l] = new Array(f)), p = 0; p < f; ++p) (h = c[p] || u[p]) && (d[p] = h);
+ for (; l < n; ++l) s[l] = i[l];
+ return new Lt(s, this._parents);
+ },
+ selection: function () {
+ return this;
+ },
+ order: function () {
+ for (var t = this._groups, e = -1, i = t.length; ++e < i; )
+ for (var r, n = t[e], o = n.length - 1, a = n[o]; --o >= 0; )
+ (r = n[o]) && (a && 4 ^ r.compareDocumentPosition(a) && a.parentNode.insertBefore(r, a), (a = r));
+ return this;
+ },
+ sort: function (t) {
+ function e(e, i) {
+ return e && i ? t(e.__data__, i.__data__) : !e - !i;
+ }
+ t || (t = I);
+ for (var i = this._groups, r = i.length, n = new Array(r), o = 0; o < r; ++o) {
+ for (var a, s = i[o], l = s.length, h = (n[o] = new Array(l)), c = 0; c < l; ++c) (a = s[c]) && (h[c] = a);
+ h.sort(e);
+ }
+ return new Lt(n, this._parents).order();
+ },
+ call: function () {
+ var t = arguments[0];
+ return (arguments[0] = this), t.apply(null, arguments), this;
+ },
+ nodes: function () {
+ return Array.from(this);
+ },
+ node: function () {
+ for (var t = this._groups, e = 0, i = t.length; e < i; ++e)
+ for (var r = t[e], n = 0, o = r.length; n < o; ++n) {
+ var a = r[n];
+ if (a) return a;
+ }
+ return null;
+ },
+ size: function () {
+ let t = 0;
+ for (const e of this) ++t;
+ return t;
+ },
+ empty: function () {
+ return !this.node();
+ },
+ each: function (t) {
+ for (var e = this._groups, i = 0, r = e.length; i < r; ++i)
+ for (var n, o = e[i], a = 0, s = o.length; a < s; ++a) (n = o[a]) && t.call(n, n.__data__, a, o);
+ return this;
+ },
+ attr: function (t, e) {
+ var i = $(t);
+ if (arguments.length < 2) {
+ var r = this.node();
+ return i.local ? r.getAttributeNS(i.space, i.local) : r.getAttribute(i);
+ }
+ return this.each((null == e ? (i.local ? j : z) : "function" == typeof e ? (i.local ? U : W) : i.local ? R : P)(i, e));
+ },
+ style: function (t, e, i) {
+ return arguments.length > 1 ? this.each((null == e ? Y : "function" == typeof e ? G : V)(t, e, null == i ? "" : i)) : X(this.node(), t);
+ },
+ property: function (t, e) {
+ return arguments.length > 1 ? this.each((null == e ? J : "function" == typeof e ? K : Q)(t, e)) : this.node()[t];
+ },
+ classed: function (t, e) {
+ var i = tt(t + "");
+ if (arguments.length < 2) {
+ for (var r = et(this.node()), n = -1, o = i.length; ++n < o; ) if (!r.contains(i[n])) return !1;
+ return !0;
+ }
+ return this.each(("function" == typeof e ? st : e ? ot : at)(i, e));
+ },
+ text: function (t) {
+ return arguments.length ? this.each(null == t ? lt : ("function" == typeof t ? ct : ht)(t)) : this.node().textContent;
+ },
+ html: function (t) {
+ return arguments.length ? this.each(null == t ? ut : ("function" == typeof t ? dt : ft)(t)) : this.node().innerHTML;
+ },
+ raise: function () {
+ return this.each(pt);
+ },
+ lower: function () {
+ return this.each(gt);
+ },
+ append: function (t) {
+ var e = "function" == typeof t ? t : _t(t);
+ return this.select(function () {
+ return this.appendChild(e.apply(this, arguments));
+ });
+ },
+ insert: function (t, e) {
+ var i = "function" == typeof t ? t : _t(t),
+ r = null == e ? bt : "function" == typeof e ? e : C(e);
+ return this.select(function () {
+ return this.insertBefore(i.apply(this, arguments), r.apply(this, arguments) || null);
+ });
+ },
+ remove: function () {
+ return this.each(Ct);
+ },
+ clone: function (t) {
+ return this.select(t ? vt : xt);
+ },
+ datum: function (t) {
+ return arguments.length ? this.property("__data__", t) : this.node().__data__;
+ },
+ on: function (t, e, i) {
+ var r,
+ n,
+ o = (function (t) {
+ return t
+ .trim()
+ .split(/^|\s+/)
+ .map(function (t) {
+ var e = "",
+ i = t.indexOf(".");
+ return i >= 0 && ((e = t.slice(i + 1)), (t = t.slice(0, i))), { type: t, name: e };
+ });
+ })(t + ""),
+ a = o.length;
+ if (!(arguments.length < 2)) {
+ for (s = e ? Tt : kt, r = 0; r < a; ++r) this.each(s(o[r], e, i));
+ return this;
+ }
+ var s = this.node().__on;
+ if (s)
+ for (var l, h = 0, c = s.length; h < c; ++h)
+ for (r = 0, l = s[h]; r < a; ++r) if ((n = o[r]).type === l.type && n.name === l.name) return l.value;
+ },
+ dispatch: function (t, e) {
+ return this.each(("function" == typeof e ? Bt : St)(t, e));
+ },
+ [Symbol.iterator]: function* () {
+ for (var t = this._groups, e = 0, i = t.length; e < i; ++e) for (var r, n = t[e], o = 0, a = n.length; o < a; ++o) (r = n[o]) && (yield r);
+ },
+ };
+ var At = Mt,
+ Et = { value: () => {} };
+ function Zt() {
+ for (var t, e = 0, i = arguments.length, r = {}; e < i; ++e) {
+ if (!(t = arguments[e] + "") || t in r || /[\s.]/.test(t)) throw new Error("illegal type: " + t);
+ r[t] = [];
+ }
+ return new Ot(r);
+ }
+ function Ot(t) {
+ this._ = t;
+ }
+ function qt(t, e) {
+ for (var i, r = 0, n = t.length; r < n; ++r) if ((i = t[r]).name === e) return i.value;
+ }
+ function It(t, e, i) {
+ for (var r = 0, n = t.length; r < n; ++r)
+ if (t[r].name === e) {
+ (t[r] = Et), (t = t.slice(0, r).concat(t.slice(r + 1)));
+ break;
+ }
+ return null != i && t.push({ name: e, value: i }), t;
+ }
+ Ot.prototype = Zt.prototype = {
+ constructor: Ot,
+ on: function (t, e) {
+ var i,
+ r,
+ n = this._,
+ o =
+ ((r = n),
+ (t + "")
+ .trim()
+ .split(/^|\s+/)
+ .map(function (t) {
+ var e = "",
+ i = t.indexOf(".");
+ if ((i >= 0 && ((e = t.slice(i + 1)), (t = t.slice(0, i))), t && !r.hasOwnProperty(t))) throw new Error("unknown type: " + t);
+ return { type: t, name: e };
+ })),
+ a = -1,
+ s = o.length;
+ if (!(arguments.length < 2)) {
+ if (null != e && "function" != typeof e) throw new Error("invalid callback: " + e);
+ for (; ++a < s; )
+ if ((i = (t = o[a]).type)) n[i] = It(n[i], t.name, e);
+ else if (null == e) for (i in n) n[i] = It(n[i], t.name, null);
+ return this;
+ }
+ for (; ++a < s; ) if ((i = (t = o[a]).type) && (i = qt(n[i], t.name))) return i;
+ },
+ copy: function () {
+ var t = {},
+ e = this._;
+ for (var i in e) t[i] = e[i].slice();
+ return new Ot(t);
+ },
+ call: function (t, e) {
+ if ((i = arguments.length - 2) > 0) for (var i, r, n = new Array(i), o = 0; o < i; ++o) n[o] = arguments[o + 2];
+ if (!this._.hasOwnProperty(t)) throw new Error("unknown type: " + t);
+ for (o = 0, i = (r = this._[t]).length; o < i; ++o) r[o].value.apply(e, n);
+ },
+ apply: function (t, e, i) {
+ if (!this._.hasOwnProperty(t)) throw new Error("unknown type: " + t);
+ for (var r = this._[t], n = 0, o = r.length; n < o; ++n) r[n].value.apply(e, i);
+ },
+ };
+ var Nt,
+ Dt,
+ $t = Zt,
+ zt = 0,
+ jt = 0,
+ Pt = 0,
+ Rt = 1e3,
+ Wt = 0,
+ Ut = 0,
+ Ht = 0,
+ Yt = "object" == typeof performance && performance.now ? performance : Date,
+ Vt =
+ "object" == typeof window && window.requestAnimationFrame
+ ? window.requestAnimationFrame.bind(window)
+ : function (t) {
+ setTimeout(t, 17);
+ };
+ function Gt() {
+ return Ut || (Vt(Xt), (Ut = Yt.now() + Ht));
+ }
+ function Xt() {
+ Ut = 0;
+ }
+ function Jt() {
+ this._call = this._time = this._next = null;
+ }
+ function Qt(t, e, i) {
+ var r = new Jt();
+ return r.restart(t, e, i), r;
+ }
+ function Kt() {
+ (Ut = (Wt = Yt.now()) + Ht), (zt = jt = 0);
+ try {
+ !(function () {
+ Gt(), ++zt;
+ for (var t, e = Nt; e; ) (t = Ut - e._time) >= 0 && e._call.call(void 0, t), (e = e._next);
+ --zt;
+ })();
+ } finally {
+ (zt = 0),
+ (function () {
+ for (var t, e, i = Nt, r = 1 / 0; i; )
+ i._call
+ ? (r > i._time && (r = i._time), (t = i), (i = i._next))
+ : ((e = i._next), (i._next = null), (i = t ? (t._next = e) : (Nt = e)));
+ (Dt = t), ee(r);
+ })(),
+ (Ut = 0);
+ }
+ }
+ function te() {
+ var t = Yt.now(),
+ e = t - Wt;
+ e > Rt && ((Ht -= e), (Wt = t));
+ }
+ function ee(t) {
+ zt ||
+ (jt && (jt = clearTimeout(jt)),
+ t - Ut > 24
+ ? (t < 1 / 0 && (jt = setTimeout(Kt, t - Yt.now() - Ht)), Pt && (Pt = clearInterval(Pt)))
+ : (Pt || ((Wt = Yt.now()), (Pt = setInterval(te, Rt))), (zt = 1), Vt(Kt)));
+ }
+ function ie(t, e, i) {
+ var r = new Jt();
+ return (
+ (e = null == e ? 0 : +e),
+ r.restart(
+ (i) => {
+ r.stop(), t(i + e);
+ },
+ e,
+ i,
+ ),
+ r
+ );
+ }
+ Jt.prototype = Qt.prototype = {
+ constructor: Jt,
+ restart: function (t, e, i) {
+ if ("function" != typeof t) throw new TypeError("callback is not a function");
+ (i = (null == i ? Gt() : +i) + (null == e ? 0 : +e)),
+ this._next || Dt === this || (Dt ? (Dt._next = this) : (Nt = this), (Dt = this)),
+ (this._call = t),
+ (this._time = i),
+ ee();
+ },
+ stop: function () {
+ this._call && ((this._call = null), (this._time = 1 / 0), ee());
+ },
+ };
+ var re = $t("start", "end", "cancel", "interrupt"),
+ ne = [],
+ oe = 0,
+ ae = 3;
+ function se(t, e, i, r, n, o) {
+ var a = t.__transition;
+ if (a) {
+ if (i in a) return;
+ } else t.__transition = {};
+ !(function (t, e, i) {
+ var r,
+ n = t.__transition;
+ function o(l) {
+ var h, c, u, f;
+ if (1 !== i.state) return s();
+ for (h in n)
+ if ((f = n[h]).name === i.name) {
+ if (f.state === ae) return ie(o);
+ 4 === f.state
+ ? ((f.state = 6), f.timer.stop(), f.on.call("interrupt", t, t.__data__, f.index, f.group), delete n[h])
+ : +h < e && ((f.state = 6), f.timer.stop(), f.on.call("cancel", t, t.__data__, f.index, f.group), delete n[h]);
+ }
+ if (
+ (ie(function () {
+ i.state === ae && ((i.state = 4), i.timer.restart(a, i.delay, i.time), a(l));
+ }),
+ (i.state = 2),
+ i.on.call("start", t, t.__data__, i.index, i.group),
+ 2 === i.state)
+ ) {
+ for (i.state = ae, r = new Array((u = i.tween.length)), h = 0, c = -1; h < u; ++h)
+ (f = i.tween[h].value.call(t, t.__data__, i.index, i.group)) && (r[++c] = f);
+ r.length = c + 1;
+ }
+ }
+ function a(e) {
+ for (var n = e < i.duration ? i.ease.call(null, e / i.duration) : (i.timer.restart(s), (i.state = 5), 1), o = -1, a = r.length; ++o < a; )
+ r[o].call(t, n);
+ 5 === i.state && (i.on.call("end", t, t.__data__, i.index, i.group), s());
+ }
+ function s() {
+ for (var r in ((i.state = 6), i.timer.stop(), delete n[e], n)) return;
+ delete t.__transition;
+ }
+ (n[e] = i),
+ (i.timer = Qt(
+ function (t) {
+ (i.state = 1), i.timer.restart(o, i.delay, i.time), i.delay <= t && o(t - i.delay);
+ },
+ 0,
+ i.time,
+ ));
+ })(t, i, {
+ name: e,
+ index: r,
+ group: n,
+ on: re,
+ tween: ne,
+ time: o.time,
+ delay: o.delay,
+ duration: o.duration,
+ ease: o.ease,
+ timer: null,
+ state: oe,
+ });
+ }
+ function le(t, e) {
+ var i = ce(t, e);
+ if (i.state > oe) throw new Error("too late; already scheduled");
+ return i;
+ }
+ function he(t, e) {
+ var i = ce(t, e);
+ if (i.state > ae) throw new Error("too late; already running");
+ return i;
+ }
+ function ce(t, e) {
+ var i = t.__transition;
+ if (!i || !(i = i[e])) throw new Error("transition not found");
+ return i;
+ }
+ function ue(t, e) {
+ return (
+ (t = +t),
+ (e = +e),
+ function (i) {
+ return t * (1 - i) + e * i;
+ }
+ );
+ }
+ var fe,
+ de = 180 / Math.PI,
+ pe = { translateX: 0, translateY: 0, rotate: 0, skewX: 0, scaleX: 1, scaleY: 1 };
+ function ge(t, e, i, r, n, o) {
+ var a, s, l;
+ return (
+ (a = Math.sqrt(t * t + e * e)) && ((t /= a), (e /= a)),
+ (l = t * i + e * r) && ((i -= t * l), (r -= e * l)),
+ (s = Math.sqrt(i * i + r * r)) && ((i /= s), (r /= s), (l /= s)),
+ t * r < e * i && ((t = -t), (e = -e), (l = -l), (a = -a)),
+ {
+ translateX: n,
+ translateY: o,
+ rotate: Math.atan2(e, t) * de,
+ skewX: Math.atan(l) * de,
+ scaleX: a,
+ scaleY: s,
+ }
+ );
+ }
+ function me(t, e, i, r) {
+ function n(t) {
+ return t.length ? t.pop() + " " : "";
+ }
+ return function (o, a) {
+ var s = [],
+ l = [];
+ return (
+ (o = t(o)),
+ (a = t(a)),
+ (function (t, r, n, o, a, s) {
+ if (t !== n || r !== o) {
+ var l = a.push("translate(", null, e, null, i);
+ s.push({ i: l - 4, x: ue(t, n) }, { i: l - 2, x: ue(r, o) });
+ } else (n || o) && a.push("translate(" + n + e + o + i);
+ })(o.translateX, o.translateY, a.translateX, a.translateY, s, l),
+ (function (t, e, i, o) {
+ t !== e
+ ? (t - e > 180 ? (e += 360) : e - t > 180 && (t += 360), o.push({ i: i.push(n(i) + "rotate(", null, r) - 2, x: ue(t, e) }))
+ : e && i.push(n(i) + "rotate(" + e + r);
+ })(o.rotate, a.rotate, s, l),
+ (function (t, e, i, o) {
+ t !== e ? o.push({ i: i.push(n(i) + "skewX(", null, r) - 2, x: ue(t, e) }) : e && i.push(n(i) + "skewX(" + e + r);
+ })(o.skewX, a.skewX, s, l),
+ (function (t, e, i, r, o, a) {
+ if (t !== i || e !== r) {
+ var s = o.push(n(o) + "scale(", null, ",", null, ")");
+ a.push({ i: s - 4, x: ue(t, i) }, { i: s - 2, x: ue(e, r) });
+ } else (1 === i && 1 === r) || o.push(n(o) + "scale(" + i + "," + r + ")");
+ })(o.scaleX, o.scaleY, a.scaleX, a.scaleY, s, l),
+ (o = a = null),
+ function (t) {
+ for (var e, i = -1, r = l.length; ++i < r; ) s[(e = l[i]).i] = e.x(t);
+ return s.join("");
+ }
+ );
+ };
+ }
+ var ye = me(
+ function (t) {
+ const e = new ("function" == typeof DOMMatrix ? DOMMatrix : WebKitCSSMatrix)(t + "");
+ return e.isIdentity ? pe : ge(e.a, e.b, e.c, e.d, e.e, e.f);
+ },
+ "px, ",
+ "px)",
+ "deg)",
+ ),
+ _e = me(
+ function (t) {
+ return null == t
+ ? pe
+ : (fe || (fe = document.createElementNS("http://www.w3.org/2000/svg", "g")),
+ fe.setAttribute("transform", t),
+ (t = fe.transform.baseVal.consolidate()) ? ge((t = t.matrix).a, t.b, t.c, t.d, t.e, t.f) : pe);
+ },
+ ", ",
+ ")",
+ ")",
+ );
+ function be(t, e) {
+ var i, r;
+ return function () {
+ var n = he(this, t),
+ o = n.tween;
+ if (o !== i)
+ for (var a = 0, s = (r = i = o).length; a < s; ++a)
+ if (r[a].name === e) {
+ (r = r.slice()).splice(a, 1);
+ break;
+ }
+ n.tween = r;
+ };
+ }
+ function Ce(t, e, i) {
+ var r, n;
+ if ("function" != typeof i) throw new Error();
+ return function () {
+ var o = he(this, t),
+ a = o.tween;
+ if (a !== r) {
+ n = (r = a).slice();
+ for (var s = { name: e, value: i }, l = 0, h = n.length; l < h; ++l)
+ if (n[l].name === e) {
+ n[l] = s;
+ break;
+ }
+ l === h && n.push(s);
+ }
+ o.tween = n;
+ };
+ }
+ function xe(t, e, i) {
+ var r = t._id;
+ return (
+ t.each(function () {
+ var t = he(this, r);
+ (t.value || (t.value = {}))[e] = i.apply(this, arguments);
+ }),
+ function (t) {
+ return ce(t, r).value[e];
+ }
+ );
+ }
+ function ve(t, e, i) {
+ (t.prototype = e.prototype = i), (i.constructor = t);
+ }
+ function ke(t, e) {
+ var i = Object.create(t.prototype);
+ for (var r in e) i[r] = e[r];
+ return i;
+ }
+ function Te() {}
+ var we = 0.7,
+ Se = 1 / we,
+ Be = "\\s*([+-]?\\d+)\\s*",
+ Fe = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",
+ Le = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",
+ Me = /^#([0-9a-f]{3,8})$/,
+ Ae = new RegExp(`^rgb\\(${Be},${Be},${Be}\\)$`),
+ Ee = new RegExp(`^rgb\\(${Le},${Le},${Le}\\)$`),
+ Ze = new RegExp(`^rgba\\(${Be},${Be},${Be},${Fe}\\)$`),
+ Oe = new RegExp(`^rgba\\(${Le},${Le},${Le},${Fe}\\)$`),
+ qe = new RegExp(`^hsl\\(${Fe},${Le},${Le}\\)$`),
+ Ie = new RegExp(`^hsla\\(${Fe},${Le},${Le},${Fe}\\)$`),
+ Ne = {
+ aliceblue: 15792383,
+ antiquewhite: 16444375,
+ aqua: 65535,
+ aquamarine: 8388564,
+ azure: 15794175,
+ beige: 16119260,
+ bisque: 16770244,
+ black: 0,
+ blanchedalmond: 16772045,
+ blue: 255,
+ blueviolet: 9055202,
+ brown: 10824234,
+ burlywood: 14596231,
+ cadetblue: 6266528,
+ chartreuse: 8388352,
+ chocolate: 13789470,
+ coral: 16744272,
+ cornflowerblue: 6591981,
+ cornsilk: 16775388,
+ crimson: 14423100,
+ cyan: 65535,
+ darkblue: 139,
+ darkcyan: 35723,
+ darkgoldenrod: 12092939,
+ darkgray: 11119017,
+ darkgreen: 25600,
+ darkgrey: 11119017,
+ darkkhaki: 12433259,
+ darkmagenta: 9109643,
+ darkolivegreen: 5597999,
+ darkorange: 16747520,
+ darkorchid: 10040012,
+ darkred: 9109504,
+ darksalmon: 15308410,
+ darkseagreen: 9419919,
+ darkslateblue: 4734347,
+ darkslategray: 3100495,
+ darkslategrey: 3100495,
+ darkturquoise: 52945,
+ darkviolet: 9699539,
+ deeppink: 16716947,
+ deepskyblue: 49151,
+ dimgray: 6908265,
+ dimgrey: 6908265,
+ dodgerblue: 2003199,
+ firebrick: 11674146,
+ floralwhite: 16775920,
+ forestgreen: 2263842,
+ fuchsia: 16711935,
+ gainsboro: 14474460,
+ ghostwhite: 16316671,
+ gold: 16766720,
+ goldenrod: 14329120,
+ gray: 8421504,
+ green: 32768,
+ greenyellow: 11403055,
+ grey: 8421504,
+ honeydew: 15794160,
+ hotpink: 16738740,
+ indianred: 13458524,
+ indigo: 4915330,
+ ivory: 16777200,
+ khaki: 15787660,
+ lavender: 15132410,
+ lavenderblush: 16773365,
+ lawngreen: 8190976,
+ lemonchiffon: 16775885,
+ lightblue: 11393254,
+ lightcoral: 15761536,
+ lightcyan: 14745599,
+ lightgoldenrodyellow: 16448210,
+ lightgray: 13882323,
+ lightgreen: 9498256,
+ lightgrey: 13882323,
+ lightpink: 16758465,
+ lightsalmon: 16752762,
+ lightseagreen: 2142890,
+ lightskyblue: 8900346,
+ lightslategray: 7833753,
+ lightslategrey: 7833753,
+ lightsteelblue: 11584734,
+ lightyellow: 16777184,
+ lime: 65280,
+ limegreen: 3329330,
+ linen: 16445670,
+ magenta: 16711935,
+ maroon: 8388608,
+ mediumaquamarine: 6737322,
+ mediumblue: 205,
+ mediumorchid: 12211667,
+ mediumpurple: 9662683,
+ mediumseagreen: 3978097,
+ mediumslateblue: 8087790,
+ mediumspringgreen: 64154,
+ mediumturquoise: 4772300,
+ mediumvioletred: 13047173,
+ midnightblue: 1644912,
+ mintcream: 16121850,
+ mistyrose: 16770273,
+ moccasin: 16770229,
+ navajowhite: 16768685,
+ navy: 128,
+ oldlace: 16643558,
+ olive: 8421376,
+ olivedrab: 7048739,
+ orange: 16753920,
+ orangered: 16729344,
+ orchid: 14315734,
+ palegoldenrod: 15657130,
+ palegreen: 10025880,
+ paleturquoise: 11529966,
+ palevioletred: 14381203,
+ papayawhip: 16773077,
+ peachpuff: 16767673,
+ peru: 13468991,
+ pink: 16761035,
+ plum: 14524637,
+ powderblue: 11591910,
+ purple: 8388736,
+ rebeccapurple: 6697881,
+ red: 16711680,
+ rosybrown: 12357519,
+ royalblue: 4286945,
+ saddlebrown: 9127187,
+ salmon: 16416882,
+ sandybrown: 16032864,
+ seagreen: 3050327,
+ seashell: 16774638,
+ sienna: 10506797,
+ silver: 12632256,
+ skyblue: 8900331,
+ slateblue: 6970061,
+ slategray: 7372944,
+ slategrey: 7372944,
+ snow: 16775930,
+ springgreen: 65407,
+ steelblue: 4620980,
+ tan: 13808780,
+ teal: 32896,
+ thistle: 14204888,
+ tomato: 16737095,
+ turquoise: 4251856,
+ violet: 15631086,
+ wheat: 16113331,
+ white: 16777215,
+ whitesmoke: 16119285,
+ yellow: 16776960,
+ yellowgreen: 10145074,
+ };
+ function De() {
+ return this.rgb().formatHex();
+ }
+ function $e() {
+ return this.rgb().formatRgb();
+ }
+ function ze(t) {
+ var e, i;
+ return (
+ (t = (t + "").trim().toLowerCase()),
+ (e = Me.exec(t))
+ ? ((i = e[1].length),
+ (e = parseInt(e[1], 16)),
+ 6 === i
+ ? je(e)
+ : 3 === i
+ ? new Ue(((e >> 8) & 15) | ((e >> 4) & 240), ((e >> 4) & 15) | (240 & e), ((15 & e) << 4) | (15 & e), 1)
+ : 8 === i
+ ? Pe((e >> 24) & 255, (e >> 16) & 255, (e >> 8) & 255, (255 & e) / 255)
+ : 4 === i
+ ? Pe(
+ ((e >> 12) & 15) | ((e >> 8) & 240),
+ ((e >> 8) & 15) | ((e >> 4) & 240),
+ ((e >> 4) & 15) | (240 & e),
+ (((15 & e) << 4) | (15 & e)) / 255,
+ )
+ : null)
+ : (e = Ae.exec(t))
+ ? new Ue(e[1], e[2], e[3], 1)
+ : (e = Ee.exec(t))
+ ? new Ue((255 * e[1]) / 100, (255 * e[2]) / 100, (255 * e[3]) / 100, 1)
+ : (e = Ze.exec(t))
+ ? Pe(e[1], e[2], e[3], e[4])
+ : (e = Oe.exec(t))
+ ? Pe((255 * e[1]) / 100, (255 * e[2]) / 100, (255 * e[3]) / 100, e[4])
+ : (e = qe.exec(t))
+ ? Je(e[1], e[2] / 100, e[3] / 100, 1)
+ : (e = Ie.exec(t))
+ ? Je(e[1], e[2] / 100, e[3] / 100, e[4])
+ : Ne.hasOwnProperty(t)
+ ? je(Ne[t])
+ : "transparent" === t
+ ? new Ue(NaN, NaN, NaN, 0)
+ : null
+ );
+ }
+ function je(t) {
+ return new Ue((t >> 16) & 255, (t >> 8) & 255, 255 & t, 1);
+ }
+ function Pe(t, e, i, r) {
+ return r <= 0 && (t = e = i = NaN), new Ue(t, e, i, r);
+ }
+ function Re(t) {
+ return t instanceof Te || (t = ze(t)), t ? new Ue((t = t.rgb()).r, t.g, t.b, t.opacity) : new Ue();
+ }
+ function We(t, e, i, r) {
+ return 1 === arguments.length ? Re(t) : new Ue(t, e, i, null == r ? 1 : r);
+ }
+ function Ue(t, e, i, r) {
+ (this.r = +t), (this.g = +e), (this.b = +i), (this.opacity = +r);
+ }
+ function He() {
+ return `#${Xe(this.r)}${Xe(this.g)}${Xe(this.b)}`;
+ }
+ function Ye() {
+ const t = Ve(this.opacity);
+ return `${1 === t ? "rgb(" : "rgba("}${Ge(this.r)}, ${Ge(this.g)}, ${Ge(this.b)}${1 === t ? ")" : `, ${t})`}`;
+ }
+ function Ve(t) {
+ return isNaN(t) ? 1 : Math.max(0, Math.min(1, t));
+ }
+ function Ge(t) {
+ return Math.max(0, Math.min(255, Math.round(t) || 0));
+ }
+ function Xe(t) {
+ return ((t = Ge(t)) < 16 ? "0" : "") + t.toString(16);
+ }
+ function Je(t, e, i, r) {
+ return r <= 0 ? (t = e = i = NaN) : i <= 0 || i >= 1 ? (t = e = NaN) : e <= 0 && (t = NaN), new Ke(t, e, i, r);
+ }
+ function Qe(t) {
+ if (t instanceof Ke) return new Ke(t.h, t.s, t.l, t.opacity);
+ if ((t instanceof Te || (t = ze(t)), !t)) return new Ke();
+ if (t instanceof Ke) return t;
+ var e = (t = t.rgb()).r / 255,
+ i = t.g / 255,
+ r = t.b / 255,
+ n = Math.min(e, i, r),
+ o = Math.max(e, i, r),
+ a = NaN,
+ s = o - n,
+ l = (o + n) / 2;
+ return (
+ s
+ ? ((a = e === o ? (i - r) / s + 6 * (i < r) : i === o ? (r - e) / s + 2 : (e - i) / s + 4), (s /= l < 0.5 ? o + n : 2 - o - n), (a *= 60))
+ : (s = l > 0 && l < 1 ? 0 : a),
+ new Ke(a, s, l, t.opacity)
+ );
+ }
+ function Ke(t, e, i, r) {
+ (this.h = +t), (this.s = +e), (this.l = +i), (this.opacity = +r);
+ }
+ function ti(t) {
+ return (t = (t || 0) % 360) < 0 ? t + 360 : t;
+ }
+ function ei(t) {
+ return Math.max(0, Math.min(1, t || 0));
+ }
+ function ii(t, e, i) {
+ return 255 * (t < 60 ? e + ((i - e) * t) / 60 : t < 180 ? i : t < 240 ? e + ((i - e) * (240 - t)) / 60 : e);
+ }
+ function ri(t, e, i, r, n) {
+ var o = t * t,
+ a = o * t;
+ return ((1 - 3 * t + 3 * o - a) * e + (4 - 6 * o + 3 * a) * i + (1 + 3 * t + 3 * o - 3 * a) * r + a * n) / 6;
+ }
+ ve(Te, ze, {
+ copy(t) {
+ return Object.assign(new this.constructor(), this, t);
+ },
+ displayable() {
+ return this.rgb().displayable();
+ },
+ hex: De,
+ formatHex: De,
+ formatHex8: function () {
+ return this.rgb().formatHex8();
+ },
+ formatHsl: function () {
+ return Qe(this).formatHsl();
+ },
+ formatRgb: $e,
+ toString: $e,
+ }),
+ ve(
+ Ue,
+ We,
+ ke(Te, {
+ brighter(t) {
+ return (t = null == t ? Se : Math.pow(Se, t)), new Ue(this.r * t, this.g * t, this.b * t, this.opacity);
+ },
+ darker(t) {
+ return (t = null == t ? we : Math.pow(we, t)), new Ue(this.r * t, this.g * t, this.b * t, this.opacity);
+ },
+ rgb() {
+ return this;
+ },
+ clamp() {
+ return new Ue(Ge(this.r), Ge(this.g), Ge(this.b), Ve(this.opacity));
+ },
+ displayable() {
+ return (
+ -0.5 <= this.r &&
+ this.r < 255.5 &&
+ -0.5 <= this.g &&
+ this.g < 255.5 &&
+ -0.5 <= this.b &&
+ this.b < 255.5 &&
+ 0 <= this.opacity &&
+ this.opacity <= 1
+ );
+ },
+ hex: He,
+ formatHex: He,
+ formatHex8: function () {
+ return `#${Xe(this.r)}${Xe(this.g)}${Xe(this.b)}${Xe(255 * (isNaN(this.opacity) ? 1 : this.opacity))}`;
+ },
+ formatRgb: Ye,
+ toString: Ye,
+ }),
+ ),
+ ve(
+ Ke,
+ function (t, e, i, r) {
+ return 1 === arguments.length ? Qe(t) : new Ke(t, e, i, null == r ? 1 : r);
+ },
+ ke(Te, {
+ brighter(t) {
+ return (t = null == t ? Se : Math.pow(Se, t)), new Ke(this.h, this.s, this.l * t, this.opacity);
+ },
+ darker(t) {
+ return (t = null == t ? we : Math.pow(we, t)), new Ke(this.h, this.s, this.l * t, this.opacity);
+ },
+ rgb() {
+ var t = (this.h % 360) + 360 * (this.h < 0),
+ e = isNaN(t) || isNaN(this.s) ? 0 : this.s,
+ i = this.l,
+ r = i + (i < 0.5 ? i : 1 - i) * e,
+ n = 2 * i - r;
+ return new Ue(ii(t >= 240 ? t - 240 : t + 120, n, r), ii(t, n, r), ii(t < 120 ? t + 240 : t - 120, n, r), this.opacity);
+ },
+ clamp() {
+ return new Ke(ti(this.h), ei(this.s), ei(this.l), Ve(this.opacity));
+ },
+ displayable() {
+ return ((0 <= this.s && this.s <= 1) || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1;
+ },
+ formatHsl() {
+ const t = Ve(this.opacity);
+ return `${1 === t ? "hsl(" : "hsla("}${ti(this.h)}, ${100 * ei(this.s)}%, ${100 * ei(this.l)}%${1 === t ? ")" : `, ${t})`}`;
+ },
+ }),
+ );
+ var ni = (t) => () => t;
+ function oi(t, e) {
+ return function (i) {
+ return t + i * e;
+ };
+ }
+ function ai(t, e) {
+ var i = e - t;
+ return i ? oi(t, i) : ni(isNaN(t) ? e : t);
+ }
+ var si = (function t(e) {
+ var i = (function (t) {
+ return 1 == (t = +t)
+ ? ai
+ : function (e, i) {
+ return i - e
+ ? (function (t, e, i) {
+ return (
+ (t = Math.pow(t, i)),
+ (e = Math.pow(e, i) - t),
+ (i = 1 / i),
+ function (r) {
+ return Math.pow(t + r * e, i);
+ }
+ );
+ })(e, i, t)
+ : ni(isNaN(e) ? i : e);
+ };
+ })(e);
+ function r(t, e) {
+ var r = i((t = We(t)).r, (e = We(e)).r),
+ n = i(t.g, e.g),
+ o = i(t.b, e.b),
+ a = ai(t.opacity, e.opacity);
+ return function (e) {
+ return (t.r = r(e)), (t.g = n(e)), (t.b = o(e)), (t.opacity = a(e)), t + "";
+ };
+ }
+ return (r.gamma = t), r;
+ })(1);
+ function li(t) {
+ return function (e) {
+ var i,
+ r,
+ n = e.length,
+ o = new Array(n),
+ a = new Array(n),
+ s = new Array(n);
+ for (i = 0; i < n; ++i) (r = We(e[i])), (o[i] = r.r || 0), (a[i] = r.g || 0), (s[i] = r.b || 0);
+ return (
+ (o = t(o)),
+ (a = t(a)),
+ (s = t(s)),
+ (r.opacity = 1),
+ function (t) {
+ return (r.r = o(t)), (r.g = a(t)), (r.b = s(t)), r + "";
+ }
+ );
+ };
+ }
+ li(function (t) {
+ var e = t.length - 1;
+ return function (i) {
+ var r = i <= 0 ? (i = 0) : i >= 1 ? ((i = 1), e - 1) : Math.floor(i * e),
+ n = t[r],
+ o = t[r + 1],
+ a = r > 0 ? t[r - 1] : 2 * n - o,
+ s = r < e - 1 ? t[r + 2] : 2 * o - n;
+ return ri((i - r / e) * e, a, n, o, s);
+ };
+ }),
+ li(function (t) {
+ var e = t.length;
+ return function (i) {
+ var r = Math.floor(((i %= 1) < 0 ? ++i : i) * e),
+ n = t[(r + e - 1) % e],
+ o = t[r % e],
+ a = t[(r + 1) % e],
+ s = t[(r + 2) % e];
+ return ri((i - r / e) * e, n, o, a, s);
+ };
+ });
+ var hi = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,
+ ci = new RegExp(hi.source, "g");
+ function ui(t, e) {
+ var i,
+ r,
+ n,
+ o = (hi.lastIndex = ci.lastIndex = 0),
+ a = -1,
+ s = [],
+ l = [];
+ for (t += "", e += ""; (i = hi.exec(t)) && (r = ci.exec(e)); )
+ (n = r.index) > o && ((n = e.slice(o, n)), s[a] ? (s[a] += n) : (s[++a] = n)),
+ (i = i[0]) === (r = r[0]) ? (s[a] ? (s[a] += r) : (s[++a] = r)) : ((s[++a] = null), l.push({ i: a, x: ue(i, r) })),
+ (o = ci.lastIndex);
+ return (
+ o < e.length && ((n = e.slice(o)), s[a] ? (s[a] += n) : (s[++a] = n)),
+ s.length < 2
+ ? l[0]
+ ? (function (t) {
+ return function (e) {
+ return t(e) + "";
+ };
+ })(l[0].x)
+ : (function (t) {
+ return function () {
+ return t;
+ };
+ })(e)
+ : ((e = l.length),
+ function (t) {
+ for (var i, r = 0; r < e; ++r) s[(i = l[r]).i] = i.x(t);
+ return s.join("");
+ })
+ );
+ }
+ function fi(t, e) {
+ var i;
+ return ("number" == typeof e ? ue : e instanceof ze ? si : (i = ze(e)) ? ((e = i), si) : ui)(t, e);
+ }
+ function di(t) {
+ return function () {
+ this.removeAttribute(t);
+ };
+ }
+ function pi(t) {
+ return function () {
+ this.removeAttributeNS(t.space, t.local);
+ };
+ }
+ function gi(t, e, i) {
+ var r,
+ n,
+ o = i + "";
+ return function () {
+ var a = this.getAttribute(t);
+ return a === o ? null : a === r ? n : (n = e((r = a), i));
+ };
+ }
+ function mi(t, e, i) {
+ var r,
+ n,
+ o = i + "";
+ return function () {
+ var a = this.getAttributeNS(t.space, t.local);
+ return a === o ? null : a === r ? n : (n = e((r = a), i));
+ };
+ }
+ function yi(t, e, i) {
+ var r, n, o;
+ return function () {
+ var a,
+ s,
+ l = i(this);
+ if (null != l) return (a = this.getAttribute(t)) === (s = l + "") ? null : a === r && s === n ? o : ((n = s), (o = e((r = a), l)));
+ this.removeAttribute(t);
+ };
+ }
+ function _i(t, e, i) {
+ var r, n, o;
+ return function () {
+ var a,
+ s,
+ l = i(this);
+ if (null != l)
+ return (a = this.getAttributeNS(t.space, t.local)) === (s = l + "") ? null : a === r && s === n ? o : ((n = s), (o = e((r = a), l)));
+ this.removeAttributeNS(t.space, t.local);
+ };
+ }
+ function bi(t, e) {
+ var i, r;
+ function n() {
+ var n = e.apply(this, arguments);
+ return (
+ n !== r &&
+ (i =
+ (r = n) &&
+ (function (t, e) {
+ return function (i) {
+ this.setAttributeNS(t.space, t.local, e.call(this, i));
+ };
+ })(t, n)),
+ i
+ );
+ }
+ return (n._value = e), n;
+ }
+ function Ci(t, e) {
+ var i, r;
+ function n() {
+ var n = e.apply(this, arguments);
+ return (
+ n !== r &&
+ (i =
+ (r = n) &&
+ (function (t, e) {
+ return function (i) {
+ this.setAttribute(t, e.call(this, i));
+ };
+ })(t, n)),
+ i
+ );
+ }
+ return (n._value = e), n;
+ }
+ function xi(t, e) {
+ return function () {
+ le(this, t).delay = +e.apply(this, arguments);
+ };
+ }
+ function vi(t, e) {
+ return (
+ (e = +e),
+ function () {
+ le(this, t).delay = e;
+ }
+ );
+ }
+ function ki(t, e) {
+ return function () {
+ he(this, t).duration = +e.apply(this, arguments);
+ };
+ }
+ function Ti(t, e) {
+ return (
+ (e = +e),
+ function () {
+ he(this, t).duration = e;
+ }
+ );
+ }
+ var wi = At.prototype.constructor;
+ function Si(t) {
+ return function () {
+ this.style.removeProperty(t);
+ };
+ }
+ var Bi = 0;
+ function Fi(t, e, i, r) {
+ (this._groups = t), (this._parents = e), (this._name = i), (this._id = r);
+ }
+ function Li() {
+ return ++Bi;
+ }
+ var Mi = At.prototype;
+ Fi.prototype = function (t) {
+ return At().transition(t);
+ }.prototype = {
+ constructor: Fi,
+ select: function (t) {
+ var e = this._name,
+ i = this._id;
+ "function" != typeof t && (t = C(t));
+ for (var r = this._groups, n = r.length, o = new Array(n), a = 0; a < n; ++a)
+ for (var s, l, h = r[a], c = h.length, u = (o[a] = new Array(c)), f = 0; f < c; ++f)
+ (s = h[f]) &&
+ (l = t.call(s, s.__data__, f, h)) &&
+ ("__data__" in s && (l.__data__ = s.__data__), (u[f] = l), se(u[f], e, i, f, u, ce(s, i)));
+ return new Fi(o, this._parents, e, i);
+ },
+ selectAll: function (t) {
+ var e = this._name,
+ i = this._id;
+ "function" != typeof t && (t = k(t));
+ for (var r = this._groups, n = r.length, o = [], a = [], s = 0; s < n; ++s)
+ for (var l, h = r[s], c = h.length, u = 0; u < c; ++u)
+ if ((l = h[u])) {
+ for (var f, d = t.call(l, l.__data__, u, h), p = ce(l, i), g = 0, m = d.length; g < m; ++g) (f = d[g]) && se(f, e, i, g, d, p);
+ o.push(d), a.push(l);
+ }
+ return new Fi(o, a, e, i);
+ },
+ selectChild: Mi.selectChild,
+ selectChildren: Mi.selectChildren,
+ filter: function (t) {
+ "function" != typeof t && (t = T(t));
+ for (var e = this._groups, i = e.length, r = new Array(i), n = 0; n < i; ++n)
+ for (var o, a = e[n], s = a.length, l = (r[n] = []), h = 0; h < s; ++h) (o = a[h]) && t.call(o, o.__data__, h, a) && l.push(o);
+ return new Fi(r, this._parents, this._name, this._id);
+ },
+ merge: function (t) {
+ if (t._id !== this._id) throw new Error();
+ for (var e = this._groups, i = t._groups, r = e.length, n = i.length, o = Math.min(r, n), a = new Array(r), s = 0; s < o; ++s)
+ for (var l, h = e[s], c = i[s], u = h.length, f = (a[s] = new Array(u)), d = 0; d < u; ++d) (l = h[d] || c[d]) && (f[d] = l);
+ for (; s < r; ++s) a[s] = e[s];
+ return new Fi(a, this._parents, this._name, this._id);
+ },
+ selection: function () {
+ return new wi(this._groups, this._parents);
+ },
+ transition: function () {
+ for (var t = this._name, e = this._id, i = Li(), r = this._groups, n = r.length, o = 0; o < n; ++o)
+ for (var a, s = r[o], l = s.length, h = 0; h < l; ++h)
+ if ((a = s[h])) {
+ var c = ce(a, e);
+ se(a, t, i, h, s, {
+ time: c.time + c.delay + c.duration,
+ delay: 0,
+ duration: c.duration,
+ ease: c.ease,
+ });
+ }
+ return new Fi(r, this._parents, t, i);
+ },
+ call: Mi.call,
+ nodes: Mi.nodes,
+ node: Mi.node,
+ size: Mi.size,
+ empty: Mi.empty,
+ each: Mi.each,
+ on: function (t, e) {
+ var i = this._id;
+ return arguments.length < 2
+ ? ce(this.node(), i).on.on(t)
+ : this.each(
+ (function (t, e, i) {
+ var r,
+ n,
+ o = (function (t) {
+ return (t + "")
+ .trim()
+ .split(/^|\s+/)
+ .every(function (t) {
+ var e = t.indexOf(".");
+ return e >= 0 && (t = t.slice(0, e)), !t || "start" === t;
+ });
+ })(e)
+ ? le
+ : he;
+ return function () {
+ var a = o(this, t),
+ s = a.on;
+ s !== r && (n = (r = s).copy()).on(e, i), (a.on = n);
+ };
+ })(i, t, e),
+ );
+ },
+ attr: function (t, e) {
+ var i = $(t),
+ r = "transform" === i ? _e : fi;
+ return this.attrTween(
+ t,
+ "function" == typeof e
+ ? (i.local ? _i : yi)(i, r, xe(this, "attr." + t, e))
+ : null == e
+ ? (i.local ? pi : di)(i)
+ : (i.local ? mi : gi)(i, r, e),
+ );
+ },
+ attrTween: function (t, e) {
+ var i = "attr." + t;
+ if (arguments.length < 2) return (i = this.tween(i)) && i._value;
+ if (null == e) return this.tween(i, null);
+ if ("function" != typeof e) throw new Error();
+ var r = $(t);
+ return this.tween(i, (r.local ? bi : Ci)(r, e));
+ },
+ style: function (t, e, i) {
+ var r = "transform" == (t += "") ? ye : fi;
+ return null == e
+ ? this.styleTween(
+ t,
+ (function (t, e) {
+ var i, r, n;
+ return function () {
+ var o = X(this, t),
+ a = (this.style.removeProperty(t), X(this, t));
+ return o === a ? null : o === i && a === r ? n : (n = e((i = o), (r = a)));
+ };
+ })(t, r),
+ ).on("end.style." + t, Si(t))
+ : "function" == typeof e
+ ? this.styleTween(
+ t,
+ (function (t, e, i) {
+ var r, n, o;
+ return function () {
+ var a = X(this, t),
+ s = i(this),
+ l = s + "";
+ return (
+ null == s && (this.style.removeProperty(t), (l = s = X(this, t))),
+ a === l ? null : a === r && l === n ? o : ((n = l), (o = e((r = a), s)))
+ );
+ };
+ })(t, r, xe(this, "style." + t, e)),
+ ).each(
+ (function (t, e) {
+ var i,
+ r,
+ n,
+ o,
+ a = "style." + e,
+ s = "end." + a;
+ return function () {
+ var l = he(this, t),
+ h = l.on,
+ c = null == l.value[a] ? o || (o = Si(e)) : void 0;
+ (h === i && n === c) || (r = (i = h).copy()).on(s, (n = c)), (l.on = r);
+ };
+ })(this._id, t),
+ )
+ : this.styleTween(
+ t,
+ (function (t, e, i) {
+ var r,
+ n,
+ o = i + "";
+ return function () {
+ var a = X(this, t);
+ return a === o ? null : a === r ? n : (n = e((r = a), i));
+ };
+ })(t, r, e),
+ i,
+ ).on("end.style." + t, null);
+ },
+ styleTween: function (t, e, i) {
+ var r = "style." + (t += "");
+ if (arguments.length < 2) return (r = this.tween(r)) && r._value;
+ if (null == e) return this.tween(r, null);
+ if ("function" != typeof e) throw new Error();
+ return this.tween(
+ r,
+ (function (t, e, i) {
+ var r, n;
+ function o() {
+ var o = e.apply(this, arguments);
+ return (
+ o !== n &&
+ (r =
+ (n = o) &&
+ (function (t, e, i) {
+ return function (r) {
+ this.style.setProperty(t, e.call(this, r), i);
+ };
+ })(t, o, i)),
+ r
+ );
+ }
+ return (o._value = e), o;
+ })(t, e, null == i ? "" : i),
+ );
+ },
+ text: function (t) {
+ return this.tween(
+ "text",
+ "function" == typeof t
+ ? (function (t) {
+ return function () {
+ var e = t(this);
+ this.textContent = null == e ? "" : e;
+ };
+ })(xe(this, "text", t))
+ : (function (t) {
+ return function () {
+ this.textContent = t;
+ };
+ })(null == t ? "" : t + ""),
+ );
+ },
+ textTween: function (t) {
+ var e = "text";
+ if (arguments.length < 1) return (e = this.tween(e)) && e._value;
+ if (null == t) return this.tween(e, null);
+ if ("function" != typeof t) throw new Error();
+ return this.tween(
+ e,
+ (function (t) {
+ var e, i;
+ function r() {
+ var r = t.apply(this, arguments);
+ return (
+ r !== i &&
+ (e =
+ (i = r) &&
+ (function (t) {
+ return function (e) {
+ this.textContent = t.call(this, e);
+ };
+ })(r)),
+ e
+ );
+ }
+ return (r._value = t), r;
+ })(t),
+ );
+ },
+ remove: function () {
+ return this.on(
+ "end.remove",
+ (function (t) {
+ return function () {
+ var e = this.parentNode;
+ for (var i in this.__transition) if (+i !== t) return;
+ e && e.removeChild(this);
+ };
+ })(this._id),
+ );
+ },
+ tween: function (t, e) {
+ var i = this._id;
+ if (((t += ""), arguments.length < 2)) {
+ for (var r, n = ce(this.node(), i).tween, o = 0, a = n.length; o < a; ++o) if ((r = n[o]).name === t) return r.value;
+ return null;
+ }
+ return this.each((null == e ? be : Ce)(i, t, e));
+ },
+ delay: function (t) {
+ var e = this._id;
+ return arguments.length ? this.each(("function" == typeof t ? xi : vi)(e, t)) : ce(this.node(), e).delay;
+ },
+ duration: function (t) {
+ var e = this._id;
+ return arguments.length ? this.each(("function" == typeof t ? ki : Ti)(e, t)) : ce(this.node(), e).duration;
+ },
+ ease: function (t) {
+ var e = this._id;
+ return arguments.length
+ ? this.each(
+ (function (t, e) {
+ if ("function" != typeof e) throw new Error();
+ return function () {
+ he(this, t).ease = e;
+ };
+ })(e, t),
+ )
+ : ce(this.node(), e).ease;
+ },
+ easeVarying: function (t) {
+ if ("function" != typeof t) throw new Error();
+ return this.each(
+ (function (t, e) {
+ return function () {
+ var i = e.apply(this, arguments);
+ if ("function" != typeof i) throw new Error();
+ he(this, t).ease = i;
+ };
+ })(this._id, t),
+ );
+ },
+ end: function () {
+ var t,
+ e,
+ i = this,
+ r = i._id,
+ n = i.size();
+ return new Promise(function (o, a) {
+ var s = { value: a },
+ l = {
+ value: function () {
+ 0 == --n && o();
+ },
+ };
+ i.each(function () {
+ var i = he(this, r),
+ n = i.on;
+ n !== t && ((e = (t = n).copy())._.cancel.push(s), e._.interrupt.push(s), e._.end.push(l)), (i.on = e);
+ }),
+ 0 === n && o();
+ });
+ },
+ [Symbol.iterator]: Mi[Symbol.iterator],
+ };
+ var Ai = {
+ time: null,
+ delay: 0,
+ duration: 250,
+ ease: function (t) {
+ return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;
+ },
+ };
+ function Ei(t, e) {
+ for (var i; !(i = t.__transition) || !(i = i[e]); ) if (!(t = t.parentNode)) throw new Error(`transition ${e} not found`);
+ return i;
+ }
+ (At.prototype.interrupt = function (t) {
+ return this.each(function () {
+ !(function (t, e) {
+ var i,
+ r,
+ n,
+ o = t.__transition,
+ a = !0;
+ if (o) {
+ for (n in ((e = null == e ? null : e + ""), o))
+ (i = o[n]).name === e
+ ? ((r = i.state > 2 && i.state < 5),
+ (i.state = 6),
+ i.timer.stop(),
+ i.on.call(r ? "interrupt" : "cancel", t, t.__data__, i.index, i.group),
+ delete o[n])
+ : (a = !1);
+ a && delete t.__transition;
+ }
+ })(this, t);
+ });
+ }),
+ (At.prototype.transition = function (t) {
+ var e, i;
+ t instanceof Fi ? ((e = t._id), (t = t._name)) : ((e = Li()), ((i = Ai).time = Gt()), (t = null == t ? null : t + ""));
+ for (var r = this._groups, n = r.length, o = 0; o < n; ++o)
+ for (var a, s = r[o], l = s.length, h = 0; h < l; ++h) (a = s[h]) && se(a, t, e, h, s, i || Ei(a, e));
+ return new Fi(r, this._parents, t, e);
+ });
+ const { abs: Zi, max: Oi, min: qi } = Math;
+ function Ii(t) {
+ return { type: t };
+ }
+ function Ni(t) {
+ if (!t.ok) throw new Error(t.status + " " + t.statusText);
+ return t.text();
+ }
+ function Di(t) {
+ return (e, i) =>
+ (function (t, e) {
+ return fetch(t, e).then(Ni);
+ })(e, i).then((e) => new DOMParser().parseFromString(e, t));
+ }
+ ["w", "e"].map(Ii), ["n", "s"].map(Ii), ["n", "w", "e", "s", "nw", "ne", "sw", "se"].map(Ii), Di("application/xml"), Di("text/html");
+ var $i = Di("image/svg+xml");
+ const zi = Math.PI / 180,
+ ji = 180 / Math.PI,
+ Pi = 0.96422,
+ Ri = 1,
+ Wi = 0.82521,
+ Ui = 4 / 29,
+ Hi = 6 / 29,
+ Yi = 3 * Hi * Hi,
+ Vi = Hi * Hi * Hi;
+ function Gi(t) {
+ if (t instanceof Xi) return new Xi(t.l, t.a, t.b, t.opacity);
+ if (t instanceof ir) return rr(t);
+ t instanceof Ue || (t = Re(t));
+ var e,
+ i,
+ r = tr(t.r),
+ n = tr(t.g),
+ o = tr(t.b),
+ a = Ji((0.2225045 * r + 0.7168786 * n + 0.0606169 * o) / Ri);
+ return (
+ r === n && n === o
+ ? (e = i = a)
+ : ((e = Ji((0.4360747 * r + 0.3850649 * n + 0.1430804 * o) / Pi)), (i = Ji((0.0139322 * r + 0.0971045 * n + 0.7141733 * o) / Wi))),
+ new Xi(116 * a - 16, 500 * (e - a), 200 * (a - i), t.opacity)
+ );
+ }
+ function Xi(t, e, i, r) {
+ (this.l = +t), (this.a = +e), (this.b = +i), (this.opacity = +r);
+ }
+ function Ji(t) {
+ return t > Vi ? Math.pow(t, 1 / 3) : t / Yi + Ui;
+ }
+ function Qi(t) {
+ return t > Hi ? t * t * t : Yi * (t - Ui);
+ }
+ function Ki(t) {
+ return 255 * (t <= 0.0031308 ? 12.92 * t : 1.055 * Math.pow(t, 1 / 2.4) - 0.055);
+ }
+ function tr(t) {
+ return (t /= 255) <= 0.04045 ? t / 12.92 : Math.pow((t + 0.055) / 1.055, 2.4);
+ }
+ function er(t, e, i, r) {
+ return 1 === arguments.length
+ ? (function (t) {
+ if (t instanceof ir) return new ir(t.h, t.c, t.l, t.opacity);
+ if ((t instanceof Xi || (t = Gi(t)), 0 === t.a && 0 === t.b)) return new ir(NaN, 0 < t.l && t.l < 100 ? 0 : NaN, t.l, t.opacity);
+ var e = Math.atan2(t.b, t.a) * ji;
+ return new ir(e < 0 ? e + 360 : e, Math.sqrt(t.a * t.a + t.b * t.b), t.l, t.opacity);
+ })(t)
+ : new ir(t, e, i, null == r ? 1 : r);
+ }
+ function ir(t, e, i, r) {
+ (this.h = +t), (this.c = +e), (this.l = +i), (this.opacity = +r);
+ }
+ function rr(t) {
+ if (isNaN(t.h)) return new Xi(t.l, 0, 0, t.opacity);
+ var e = t.h * zi;
+ return new Xi(t.l, Math.cos(e) * t.c, Math.sin(e) * t.c, t.opacity);
+ }
+ function nr(t) {
+ return function (e, i) {
+ var r = t((e = er(e)).h, (i = er(i)).h),
+ n = ai(e.c, i.c),
+ o = ai(e.l, i.l),
+ a = ai(e.opacity, i.opacity);
+ return function (t) {
+ return (e.h = r(t)), (e.c = n(t)), (e.l = o(t)), (e.opacity = a(t)), e + "";
+ };
+ };
+ }
+ ve(
+ Xi,
+ function (t, e, i, r) {
+ return 1 === arguments.length ? Gi(t) : new Xi(t, e, i, null == r ? 1 : r);
+ },
+ ke(Te, {
+ brighter(t) {
+ return new Xi(this.l + 18 * (null == t ? 1 : t), this.a, this.b, this.opacity);
+ },
+ darker(t) {
+ return new Xi(this.l - 18 * (null == t ? 1 : t), this.a, this.b, this.opacity);
+ },
+ rgb() {
+ var t = (this.l + 16) / 116,
+ e = isNaN(this.a) ? t : t + this.a / 500,
+ i = isNaN(this.b) ? t : t - this.b / 200;
+ return new Ue(
+ Ki(3.1338561 * (e = Pi * Qi(e)) - 1.6168667 * (t = Ri * Qi(t)) - 0.4906146 * (i = Wi * Qi(i))),
+ Ki(-0.9787684 * e + 1.9161415 * t + 0.033454 * i),
+ Ki(0.0719453 * e - 0.2289914 * t + 1.4052427 * i),
+ this.opacity,
+ );
+ },
+ }),
+ ),
+ ve(
+ ir,
+ er,
+ ke(Te, {
+ brighter(t) {
+ return new ir(this.h, this.c, this.l + 18 * (null == t ? 1 : t), this.opacity);
+ },
+ darker(t) {
+ return new ir(this.h, this.c, this.l - 18 * (null == t ? 1 : t), this.opacity);
+ },
+ rgb() {
+ return rr(this).rgb();
+ },
+ }),
+ );
+ var or = nr(function (t, e) {
+ var i = e - t;
+ return i ? oi(t, i > 180 || i < -180 ? i - 360 * Math.round(i / 360) : i) : ni(isNaN(t) ? e : t);
+ });
+ nr(ai);
+ const ar = Math.sqrt(50),
+ sr = Math.sqrt(10),
+ lr = Math.sqrt(2);
+ function hr(t, e, i) {
+ const r = (e - t) / Math.max(0, i),
+ n = Math.floor(Math.log10(r)),
+ o = r / Math.pow(10, n),
+ a = o >= ar ? 10 : o >= sr ? 5 : o >= lr ? 2 : 1;
+ let s, l, h;
+ return (
+ n < 0
+ ? ((h = Math.pow(10, -n) / a), (s = Math.round(t * h)), (l = Math.round(e * h)), s / h < t && ++s, l / h > e && --l, (h = -h))
+ : ((h = Math.pow(10, n) * a), (s = Math.round(t / h)), (l = Math.round(e / h)), s * h < t && ++s, l * h > e && --l),
+ l < s && 0.5 <= i && i < 2 ? hr(t, e, 2 * i) : [s, l, h]
+ );
+ }
+ function cr(t, e, i) {
+ return hr((t = +t), (e = +e), (i = +i))[2];
+ }
+ function ur(t, e, i) {
+ i = +i;
+ const r = (e = +e) < (t = +t),
+ n = r ? cr(e, t, i) : cr(t, e, i);
+ return (r ? -1 : 1) * (n < 0 ? 1 / -n : n);
+ }
+ function fr(t, e) {
+ return null == t || null == e ? NaN : t < e ? -1 : t > e ? 1 : t >= e ? 0 : NaN;
+ }
+ function dr(t, e) {
+ return null == t || null == e ? NaN : e < t ? -1 : e > t ? 1 : e >= t ? 0 : NaN;
+ }
+ function pr(t) {
+ let e, i, r;
+ function n(t, r, n = 0, o = t.length) {
+ if (n < o) {
+ if (0 !== e(r, r)) return o;
+ do {
+ const e = (n + o) >>> 1;
+ i(t[e], r) < 0 ? (n = e + 1) : (o = e);
+ } while (n < o);
+ }
+ return n;
+ }
+ return (
+ 2 !== t.length
+ ? ((e = fr), (i = (e, i) => fr(t(e), i)), (r = (e, i) => t(e) - i))
+ : ((e = t === fr || t === dr ? t : gr), (i = t), (r = t)),
+ {
+ left: n,
+ center: function (t, e, i = 0, o = t.length) {
+ const a = n(t, e, i, o - 1);
+ return a > i && r(t[a - 1], e) > -r(t[a], e) ? a - 1 : a;
+ },
+ right: function (t, r, n = 0, o = t.length) {
+ if (n < o) {
+ if (0 !== e(r, r)) return o;
+ do {
+ const e = (n + o) >>> 1;
+ i(t[e], r) <= 0 ? (n = e + 1) : (o = e);
+ } while (n < o);
+ }
+ return n;
+ },
+ }
+ );
+ }
+ function gr() {
+ return 0;
+ }
+ const mr = pr(fr),
+ yr = mr.right;
+ mr.left,
+ pr(function (t) {
+ return null === t ? NaN : +t;
+ }).center;
+ var _r = yr;
+ function br(t, e) {
+ var i,
+ r = e ? e.length : 0,
+ n = t ? Math.min(r, t.length) : 0,
+ o = new Array(n),
+ a = new Array(r);
+ for (i = 0; i < n; ++i) o[i] = kr(t[i], e[i]);
+ for (; i < r; ++i) a[i] = e[i];
+ return function (t) {
+ for (i = 0; i < n; ++i) a[i] = o[i](t);
+ return a;
+ };
+ }
+ function Cr(t, e) {
+ var i = new Date();
+ return (
+ (t = +t),
+ (e = +e),
+ function (r) {
+ return i.setTime(t * (1 - r) + e * r), i;
+ }
+ );
+ }
+ function xr(t, e) {
+ var i,
+ r = {},
+ n = {};
+ for (i in ((null !== t && "object" == typeof t) || (t = {}), (null !== e && "object" == typeof e) || (e = {}), e))
+ i in t ? (r[i] = kr(t[i], e[i])) : (n[i] = e[i]);
+ return function (t) {
+ for (i in r) n[i] = r[i](t);
+ return n;
+ };
+ }
+ function vr(t, e) {
+ e || (e = []);
+ var i,
+ r = t ? Math.min(e.length, t.length) : 0,
+ n = e.slice();
+ return function (o) {
+ for (i = 0; i < r; ++i) n[i] = t[i] * (1 - o) + e[i] * o;
+ return n;
+ };
+ }
+ function kr(t, e) {
+ var i,
+ r,
+ n = typeof e;
+ return null == e || "boolean" === n
+ ? ni(e)
+ : ("number" === n
+ ? ue
+ : "string" === n
+ ? (i = ze(e))
+ ? ((e = i), si)
+ : ui
+ : e instanceof ze
+ ? si
+ : e instanceof Date
+ ? Cr
+ : ((r = e),
+ !ArrayBuffer.isView(r) || r instanceof DataView
+ ? Array.isArray(e)
+ ? br
+ : ("function" != typeof e.valueOf && "function" != typeof e.toString) || isNaN(e)
+ ? xr
+ : ue
+ : vr))(t, e);
+ }
+ function Tr(t, e) {
+ return (
+ (t = +t),
+ (e = +e),
+ function (i) {
+ return Math.round(t * (1 - i) + e * i);
+ }
+ );
+ }
+ function wr(t) {
+ return +t;
+ }
+ var Sr = [0, 1];
+ function Br(t) {
+ return t;
+ }
+ function Fr(t, e) {
+ return (e -= t = +t)
+ ? function (i) {
+ return (i - t) / e;
+ }
+ : ((i = isNaN(e) ? NaN : 0.5),
+ function () {
+ return i;
+ });
+ var i;
+ }
+ function Lr(t, e, i) {
+ var r = t[0],
+ n = t[1],
+ o = e[0],
+ a = e[1];
+ return (
+ n < r ? ((r = Fr(n, r)), (o = i(a, o))) : ((r = Fr(r, n)), (o = i(o, a))),
+ function (t) {
+ return o(r(t));
+ }
+ );
+ }
+ function Mr(t, e, i) {
+ var r = Math.min(t.length, e.length) - 1,
+ n = new Array(r),
+ o = new Array(r),
+ a = -1;
+ for (t[r] < t[0] && ((t = t.slice().reverse()), (e = e.slice().reverse())); ++a < r; )
+ (n[a] = Fr(t[a], t[a + 1])), (o[a] = i(e[a], e[a + 1]));
+ return function (e) {
+ var i = _r(t, e, 1, r) - 1;
+ return o[i](n[i](e));
+ };
+ }
+ function Ar(t, e) {
+ return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown());
+ }
+ function Er() {
+ return (function () {
+ var t,
+ e,
+ i,
+ r,
+ n,
+ o,
+ a = Sr,
+ s = Sr,
+ l = kr,
+ h = Br;
+ function c() {
+ var t,
+ e,
+ i,
+ l = Math.min(a.length, s.length);
+ return (
+ h !== Br &&
+ ((t = a[0]),
+ (e = a[l - 1]),
+ t > e && ((i = t), (t = e), (e = i)),
+ (h = function (i) {
+ return Math.max(t, Math.min(e, i));
+ })),
+ (r = l > 2 ? Mr : Lr),
+ (n = o = null),
+ u
+ );
+ }
+ function u(e) {
+ return null == e || isNaN((e = +e)) ? i : (n || (n = r(a.map(t), s, l)))(t(h(e)));
+ }
+ return (
+ (u.invert = function (i) {
+ return h(e((o || (o = r(s, a.map(t), ue)))(i)));
+ }),
+ (u.domain = function (t) {
+ return arguments.length ? ((a = Array.from(t, wr)), c()) : a.slice();
+ }),
+ (u.range = function (t) {
+ return arguments.length ? ((s = Array.from(t)), c()) : s.slice();
+ }),
+ (u.rangeRound = function (t) {
+ return (s = Array.from(t)), (l = Tr), c();
+ }),
+ (u.clamp = function (t) {
+ return arguments.length ? ((h = !!t || Br), c()) : h !== Br;
+ }),
+ (u.interpolate = function (t) {
+ return arguments.length ? ((l = t), c()) : l;
+ }),
+ (u.unknown = function (t) {
+ return arguments.length ? ((i = t), u) : i;
+ }),
+ function (i, r) {
+ return (t = i), (e = r), c();
+ }
+ );
+ })()(Br, Br);
+ }
+ function Zr(t, e) {
+ switch (arguments.length) {
+ case 0:
+ break;
+ case 1:
+ this.range(t);
+ break;
+ default:
+ this.range(e).domain(t);
+ }
+ return this;
+ }
+ var Or,
+ qr = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;
+ function Ir(t) {
+ if (!(e = qr.exec(t))) throw new Error("invalid format: " + t);
+ var e;
+ return new Nr({
+ fill: e[1],
+ align: e[2],
+ sign: e[3],
+ symbol: e[4],
+ zero: e[5],
+ width: e[6],
+ comma: e[7],
+ precision: e[8] && e[8].slice(1),
+ trim: e[9],
+ type: e[10],
+ });
+ }
+ function Nr(t) {
+ (this.fill = void 0 === t.fill ? " " : t.fill + ""),
+ (this.align = void 0 === t.align ? ">" : t.align + ""),
+ (this.sign = void 0 === t.sign ? "-" : t.sign + ""),
+ (this.symbol = void 0 === t.symbol ? "" : t.symbol + ""),
+ (this.zero = !!t.zero),
+ (this.width = void 0 === t.width ? void 0 : +t.width),
+ (this.comma = !!t.comma),
+ (this.precision = void 0 === t.precision ? void 0 : +t.precision),
+ (this.trim = !!t.trim),
+ (this.type = void 0 === t.type ? "" : t.type + "");
+ }
+ function Dr(t, e) {
+ if ((i = (t = e ? t.toExponential(e - 1) : t.toExponential()).indexOf("e")) < 0) return null;
+ var i,
+ r = t.slice(0, i);
+ return [r.length > 1 ? r[0] + r.slice(2) : r, +t.slice(i + 1)];
+ }
+ function $r(t) {
+ return (t = Dr(Math.abs(t))) ? t[1] : NaN;
+ }
+ function zr(t, e) {
+ var i = Dr(t, e);
+ if (!i) return t + "";
+ var r = i[0],
+ n = i[1];
+ return n < 0
+ ? "0." + new Array(-n).join("0") + r
+ : r.length > n + 1
+ ? r.slice(0, n + 1) + "." + r.slice(n + 1)
+ : r + new Array(n - r.length + 2).join("0");
+ }
+ (Ir.prototype = Nr.prototype),
+ (Nr.prototype.toString = function () {
+ return (
+ this.fill +
+ this.align +
+ this.sign +
+ this.symbol +
+ (this.zero ? "0" : "") +
+ (void 0 === this.width ? "" : Math.max(1, 0 | this.width)) +
+ (this.comma ? "," : "") +
+ (void 0 === this.precision ? "" : "." + Math.max(0, 0 | this.precision)) +
+ (this.trim ? "~" : "") +
+ this.type
+ );
+ });
+ var jr = {
+ "%": (t, e) => (100 * t).toFixed(e),
+ b: (t) => Math.round(t).toString(2),
+ c: (t) => t + "",
+ d: function (t) {
+ return Math.abs((t = Math.round(t))) >= 1e21 ? t.toLocaleString("en").replace(/,/g, "") : t.toString(10);
+ },
+ e: (t, e) => t.toExponential(e),
+ f: (t, e) => t.toFixed(e),
+ g: (t, e) => t.toPrecision(e),
+ o: (t) => Math.round(t).toString(8),
+ p: (t, e) => zr(100 * t, e),
+ r: zr,
+ s: function (t, e) {
+ var i = Dr(t, e);
+ if (!i) return t + "";
+ var r = i[0],
+ n = i[1],
+ o = n - (Or = 3 * Math.max(-8, Math.min(8, Math.floor(n / 3)))) + 1,
+ a = r.length;
+ return o === a
+ ? r
+ : o > a
+ ? r + new Array(o - a + 1).join("0")
+ : o > 0
+ ? r.slice(0, o) + "." + r.slice(o)
+ : "0." + new Array(1 - o).join("0") + Dr(t, Math.max(0, e + o - 1))[0];
+ },
+ X: (t) => Math.round(t).toString(16).toUpperCase(),
+ x: (t) => Math.round(t).toString(16),
+ };
+ function Pr(t) {
+ return t;
+ }
+ var Rr,
+ Wr,
+ Ur,
+ Hr = Array.prototype.map,
+ Yr = ["y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"];
+ function Vr(t) {
+ var e = t.domain;
+ return (
+ (t.ticks = function (t) {
+ var i = e();
+ return (function (t, e, i) {
+ if (!((i = +i) > 0)) return [];
+ if ((t = +t) == (e = +e)) return [t];
+ const r = e < t,
+ [n, o, a] = r ? hr(e, t, i) : hr(t, e, i);
+ if (!(o >= n)) return [];
+ const s = o - n + 1,
+ l = new Array(s);
+ if (r)
+ if (a < 0) for (let t = 0; t < s; ++t) l[t] = (o - t) / -a;
+ else for (let t = 0; t < s; ++t) l[t] = (o - t) * a;
+ else if (a < 0) for (let t = 0; t < s; ++t) l[t] = (n + t) / -a;
+ else for (let t = 0; t < s; ++t) l[t] = (n + t) * a;
+ return l;
+ })(i[0], i[i.length - 1], null == t ? 10 : t);
+ }),
+ (t.tickFormat = function (t, i) {
+ var r = e();
+ return (function (t, e, i, r) {
+ var n,
+ o = ur(t, e, i);
+ switch ((r = Ir(null == r ? ",f" : r)).type) {
+ case "s":
+ var a = Math.max(Math.abs(t), Math.abs(e));
+ return (
+ null != r.precision ||
+ isNaN(
+ (n = (function (t, e) {
+ return Math.max(0, 3 * Math.max(-8, Math.min(8, Math.floor($r(e) / 3))) - $r(Math.abs(t)));
+ })(o, a)),
+ ) ||
+ (r.precision = n),
+ Ur(r, a)
+ );
+ case "":
+ case "e":
+ case "g":
+ case "p":
+ case "r":
+ null != r.precision ||
+ isNaN(
+ (n = (function (t, e) {
+ return (t = Math.abs(t)), (e = Math.abs(e) - t), Math.max(0, $r(e) - $r(t)) + 1;
+ })(o, Math.max(Math.abs(t), Math.abs(e)))),
+ ) ||
+ (r.precision = n - ("e" === r.type));
+ break;
+ case "f":
+ case "%":
+ null != r.precision ||
+ isNaN(
+ (n = (function (t) {
+ return Math.max(0, -$r(Math.abs(t)));
+ })(o)),
+ ) ||
+ (r.precision = n - 2 * ("%" === r.type));
+ }
+ return Wr(r);
+ })(r[0], r[r.length - 1], null == t ? 10 : t, i);
+ }),
+ (t.nice = function (i) {
+ null == i && (i = 10);
+ var r,
+ n,
+ o = e(),
+ a = 0,
+ s = o.length - 1,
+ l = o[a],
+ h = o[s],
+ c = 10;
+ for (h < l && ((n = l), (l = h), (h = n), (n = a), (a = s), (s = n)); c-- > 0; ) {
+ if ((n = cr(l, h, i)) === r) return (o[a] = l), (o[s] = h), e(o);
+ if (n > 0) (l = Math.floor(l / n) * n), (h = Math.ceil(h / n) * n);
+ else {
+ if (!(n < 0)) break;
+ (l = Math.ceil(l * n) / n), (h = Math.floor(h * n) / n);
+ }
+ r = n;
+ }
+ return t;
+ }),
+ t
+ );
+ }
+ function Gr() {
+ var t = Er();
+ return (
+ (t.copy = function () {
+ return Ar(t, Gr());
+ }),
+ Zr.apply(t, arguments),
+ Vr(t)
+ );
+ }
+ (Rr = (function (t) {
+ var e,
+ i,
+ r =
+ void 0 === t.grouping || void 0 === t.thousands
+ ? Pr
+ : ((e = Hr.call(t.grouping, Number)),
+ (i = t.thousands + ""),
+ function (t, r) {
+ for (
+ var n = t.length, o = [], a = 0, s = e[0], l = 0;
+ n > 0 && s > 0 && (l + s + 1 > r && (s = Math.max(1, r - l)), o.push(t.substring((n -= s), n + s)), !((l += s + 1) > r));
+
+ )
+ s = e[(a = (a + 1) % e.length)];
+ return o.reverse().join(i);
+ }),
+ n = void 0 === t.currency ? "" : t.currency[0] + "",
+ o = void 0 === t.currency ? "" : t.currency[1] + "",
+ a = void 0 === t.decimal ? "." : t.decimal + "",
+ s =
+ void 0 === t.numerals
+ ? Pr
+ : (function (t) {
+ return function (e) {
+ return e.replace(/[0-9]/g, function (e) {
+ return t[+e];
+ });
+ };
+ })(Hr.call(t.numerals, String)),
+ l = void 0 === t.percent ? "%" : t.percent + "",
+ h = void 0 === t.minus ? "−" : t.minus + "",
+ c = void 0 === t.nan ? "NaN" : t.nan + "";
+ function u(t) {
+ var e = (t = Ir(t)).fill,
+ i = t.align,
+ u = t.sign,
+ f = t.symbol,
+ d = t.zero,
+ p = t.width,
+ g = t.comma,
+ m = t.precision,
+ y = t.trim,
+ _ = t.type;
+ "n" === _ ? ((g = !0), (_ = "g")) : jr[_] || (void 0 === m && (m = 12), (y = !0), (_ = "g")),
+ (d || ("0" === e && "=" === i)) && ((d = !0), (e = "0"), (i = "="));
+ var b = "$" === f ? n : "#" === f && /[boxX]/.test(_) ? "0" + _.toLowerCase() : "",
+ C = "$" === f ? o : /[%p]/.test(_) ? l : "",
+ x = jr[_],
+ v = /[defgprs%]/.test(_);
+ function k(t) {
+ var n,
+ o,
+ l,
+ f = b,
+ k = C;
+ if ("c" === _) (k = x(t) + k), (t = "");
+ else {
+ var T = (t = +t) < 0 || 1 / t < 0;
+ if (
+ ((t = isNaN(t) ? c : x(Math.abs(t), m)),
+ y &&
+ (t = (function (t) {
+ t: for (var e, i = t.length, r = 1, n = -1; r < i; ++r)
+ switch (t[r]) {
+ case ".":
+ n = e = r;
+ break;
+ case "0":
+ 0 === n && (n = r), (e = r);
+ break;
+ default:
+ if (!+t[r]) break t;
+ n > 0 && (n = 0);
+ }
+ return n > 0 ? t.slice(0, n) + t.slice(e + 1) : t;
+ })(t)),
+ T && 0 == +t && "+" !== u && (T = !1),
+ (f = (T ? ("(" === u ? u : h) : "-" === u || "(" === u ? "" : u) + f),
+ (k = ("s" === _ ? Yr[8 + Or / 3] : "") + k + (T && "(" === u ? ")" : "")),
+ v)
+ )
+ for (n = -1, o = t.length; ++n < o; )
+ if (48 > (l = t.charCodeAt(n)) || l > 57) {
+ (k = (46 === l ? a + t.slice(n + 1) : t.slice(n)) + k), (t = t.slice(0, n));
+ break;
+ }
+ }
+ g && !d && (t = r(t, 1 / 0));
+ var w = f.length + t.length + k.length,
+ S = w < p ? new Array(p - w + 1).join(e) : "";
+ switch ((g && d && ((t = r(S + t, S.length ? p - k.length : 1 / 0)), (S = "")), i)) {
+ case "<":
+ t = f + t + k + S;
+ break;
+ case "=":
+ t = f + S + t + k;
+ break;
+ case "^":
+ t = S.slice(0, (w = S.length >> 1)) + f + t + k + S.slice(w);
+ break;
+ default:
+ t = S + f + t + k;
+ }
+ return s(t);
+ }
+ return (
+ (m = void 0 === m ? 6 : /[gprs]/.test(_) ? Math.max(1, Math.min(21, m)) : Math.max(0, Math.min(20, m))),
+ (k.toString = function () {
+ return t + "";
+ }),
+ k
+ );
+ }
+ return {
+ format: u,
+ formatPrefix: function (t, e) {
+ var i = u((((t = Ir(t)).type = "f"), t)),
+ r = 3 * Math.max(-8, Math.min(8, Math.floor($r(e) / 3))),
+ n = Math.pow(10, -r),
+ o = Yr[8 + r / 3];
+ return function (t) {
+ return i(n * t) + o;
+ };
+ },
+ };
+ })({ thousands: ",", grouping: [3], currency: ["$", ""] })),
+ (Wr = Rr.format),
+ (Ur = Rr.formatPrefix);
+ class Xr extends Map {
+ constructor(t, e = Qr) {
+ if ((super(), Object.defineProperties(this, { _intern: { value: new Map() }, _key: { value: e } }), null != t))
+ for (const [e, i] of t) this.set(e, i);
+ }
+ get(t) {
+ return super.get(Jr(this, t));
+ }
+ has(t) {
+ return super.has(Jr(this, t));
+ }
+ set(t, e) {
+ return super.set(
+ (function ({ _intern: t, _key: e }, i) {
+ const r = e(i);
+ return t.has(r) ? t.get(r) : (t.set(r, i), i);
+ })(this, t),
+ e,
+ );
+ }
+ delete(t) {
+ return super.delete(
+ (function ({ _intern: t, _key: e }, i) {
+ const r = e(i);
+ return t.has(r) && ((i = t.get(r)), t.delete(r)), i;
+ })(this, t),
+ );
+ }
+ }
+ function Jr({ _intern: t, _key: e }, i) {
+ const r = e(i);
+ return t.has(r) ? t.get(r) : i;
+ }
+ function Qr(t) {
+ return null !== t && "object" == typeof t ? t.valueOf() : t;
+ }
+ const Kr = Symbol("implicit");
+ function tn() {
+ var t = new Xr(),
+ e = [],
+ i = [],
+ r = Kr;
+ function n(n) {
+ let o = t.get(n);
+ if (void 0 === o) {
+ if (r !== Kr) return r;
+ t.set(n, (o = e.push(n) - 1));
+ }
+ return i[o % i.length];
+ }
+ return (
+ (n.domain = function (i) {
+ if (!arguments.length) return e.slice();
+ (e = []), (t = new Xr());
+ for (const r of i) t.has(r) || t.set(r, e.push(r) - 1);
+ return n;
+ }),
+ (n.range = function (t) {
+ return arguments.length ? ((i = Array.from(t)), n) : i.slice();
+ }),
+ (n.unknown = function (t) {
+ return arguments.length ? ((r = t), n) : r;
+ }),
+ (n.copy = function () {
+ return tn(e, i).unknown(r);
+ }),
+ Zr.apply(n, arguments),
+ n
+ );
+ }
+ const en = 1e3,
+ rn = 6e4,
+ nn = 36e5,
+ on = 864e5,
+ an = 6048e5,
+ sn = 31536e6,
+ ln = new Date(),
+ hn = new Date();
+ function cn(t, e, i, r) {
+ function n(e) {
+ return t((e = 0 === arguments.length ? new Date() : new Date(+e))), e;
+ }
+ return (
+ (n.floor = (e) => (t((e = new Date(+e))), e)),
+ (n.ceil = (i) => (t((i = new Date(i - 1))), e(i, 1), t(i), i)),
+ (n.round = (t) => {
+ const e = n(t),
+ i = n.ceil(t);
+ return t - e < i - t ? e : i;
+ }),
+ (n.offset = (t, i) => (e((t = new Date(+t)), null == i ? 1 : Math.floor(i)), t)),
+ (n.range = (i, r, o) => {
+ const a = [];
+ if (((i = n.ceil(i)), (o = null == o ? 1 : Math.floor(o)), !(i < r && o > 0))) return a;
+ let s;
+ do {
+ a.push((s = new Date(+i))), e(i, o), t(i);
+ } while (s < i && i < r);
+ return a;
+ }),
+ (n.filter = (i) =>
+ cn(
+ (e) => {
+ if (e >= e) for (; t(e), !i(e); ) e.setTime(e - 1);
+ },
+ (t, r) => {
+ if (t >= t)
+ if (r < 0) for (; ++r <= 0; ) for (; e(t, -1), !i(t); );
+ else for (; --r >= 0; ) for (; e(t, 1), !i(t); );
+ },
+ )),
+ i &&
+ ((n.count = (e, r) => (ln.setTime(+e), hn.setTime(+r), t(ln), t(hn), Math.floor(i(ln, hn)))),
+ (n.every = (t) => (
+ (t = Math.floor(t)), isFinite(t) && t > 0 ? (t > 1 ? n.filter(r ? (e) => r(e) % t == 0 : (e) => n.count(0, e) % t == 0) : n) : null
+ ))),
+ n
+ );
+ }
+ const un = cn(
+ () => {},
+ (t, e) => {
+ t.setTime(+t + e);
+ },
+ (t, e) => e - t,
+ );
+ (un.every = (t) => (
+ (t = Math.floor(t)),
+ isFinite(t) && t > 0
+ ? t > 1
+ ? cn(
+ (e) => {
+ e.setTime(Math.floor(e / t) * t);
+ },
+ (e, i) => {
+ e.setTime(+e + i * t);
+ },
+ (e, i) => (i - e) / t,
+ )
+ : un
+ : null
+ )),
+ un.range;
+ const fn = cn(
+ (t) => {
+ t.setTime(t - t.getMilliseconds());
+ },
+ (t, e) => {
+ t.setTime(+t + e * en);
+ },
+ (t, e) => (e - t) / en,
+ (t) => t.getUTCSeconds(),
+ ),
+ dn =
+ (fn.range,
+ cn(
+ (t) => {
+ t.setTime(t - t.getMilliseconds() - t.getSeconds() * en);
+ },
+ (t, e) => {
+ t.setTime(+t + e * rn);
+ },
+ (t, e) => (e - t) / rn,
+ (t) => t.getMinutes(),
+ )),
+ pn =
+ (dn.range,
+ cn(
+ (t) => {
+ t.setUTCSeconds(0, 0);
+ },
+ (t, e) => {
+ t.setTime(+t + e * rn);
+ },
+ (t, e) => (e - t) / rn,
+ (t) => t.getUTCMinutes(),
+ )),
+ gn =
+ (pn.range,
+ cn(
+ (t) => {
+ t.setTime(t - t.getMilliseconds() - t.getSeconds() * en - t.getMinutes() * rn);
+ },
+ (t, e) => {
+ t.setTime(+t + e * nn);
+ },
+ (t, e) => (e - t) / nn,
+ (t) => t.getHours(),
+ )),
+ mn =
+ (gn.range,
+ cn(
+ (t) => {
+ t.setUTCMinutes(0, 0, 0);
+ },
+ (t, e) => {
+ t.setTime(+t + e * nn);
+ },
+ (t, e) => (e - t) / nn,
+ (t) => t.getUTCHours(),
+ )),
+ yn =
+ (mn.range,
+ cn(
+ (t) => t.setHours(0, 0, 0, 0),
+ (t, e) => t.setDate(t.getDate() + e),
+ (t, e) => (e - t - (e.getTimezoneOffset() - t.getTimezoneOffset()) * rn) / on,
+ (t) => t.getDate() - 1,
+ )),
+ _n =
+ (yn.range,
+ cn(
+ (t) => {
+ t.setUTCHours(0, 0, 0, 0);
+ },
+ (t, e) => {
+ t.setUTCDate(t.getUTCDate() + e);
+ },
+ (t, e) => (e - t) / on,
+ (t) => t.getUTCDate() - 1,
+ )),
+ bn =
+ (_n.range,
+ cn(
+ (t) => {
+ t.setUTCHours(0, 0, 0, 0);
+ },
+ (t, e) => {
+ t.setUTCDate(t.getUTCDate() + e);
+ },
+ (t, e) => (e - t) / on,
+ (t) => Math.floor(t / on),
+ ));
+ function Cn(t) {
+ return cn(
+ (e) => {
+ e.setDate(e.getDate() - ((e.getDay() + 7 - t) % 7)), e.setHours(0, 0, 0, 0);
+ },
+ (t, e) => {
+ t.setDate(t.getDate() + 7 * e);
+ },
+ (t, e) => (e - t - (e.getTimezoneOffset() - t.getTimezoneOffset()) * rn) / an,
+ );
+ }
+ bn.range;
+ const xn = Cn(0),
+ vn = Cn(1),
+ kn = Cn(2),
+ Tn = Cn(3),
+ wn = Cn(4),
+ Sn = Cn(5),
+ Bn = Cn(6);
+ function Fn(t) {
+ return cn(
+ (e) => {
+ e.setUTCDate(e.getUTCDate() - ((e.getUTCDay() + 7 - t) % 7)), e.setUTCHours(0, 0, 0, 0);
+ },
+ (t, e) => {
+ t.setUTCDate(t.getUTCDate() + 7 * e);
+ },
+ (t, e) => (e - t) / an,
+ );
+ }
+ xn.range, vn.range, kn.range, Tn.range, wn.range, Sn.range, Bn.range;
+ const Ln = Fn(0),
+ Mn = Fn(1),
+ An = Fn(2),
+ En = Fn(3),
+ Zn = Fn(4),
+ On = Fn(5),
+ qn = Fn(6),
+ In =
+ (Ln.range,
+ Mn.range,
+ An.range,
+ En.range,
+ Zn.range,
+ On.range,
+ qn.range,
+ cn(
+ (t) => {
+ t.setDate(1), t.setHours(0, 0, 0, 0);
+ },
+ (t, e) => {
+ t.setMonth(t.getMonth() + e);
+ },
+ (t, e) => e.getMonth() - t.getMonth() + 12 * (e.getFullYear() - t.getFullYear()),
+ (t) => t.getMonth(),
+ )),
+ Nn =
+ (In.range,
+ cn(
+ (t) => {
+ t.setUTCDate(1), t.setUTCHours(0, 0, 0, 0);
+ },
+ (t, e) => {
+ t.setUTCMonth(t.getUTCMonth() + e);
+ },
+ (t, e) => e.getUTCMonth() - t.getUTCMonth() + 12 * (e.getUTCFullYear() - t.getUTCFullYear()),
+ (t) => t.getUTCMonth(),
+ )),
+ Dn =
+ (Nn.range,
+ cn(
+ (t) => {
+ t.setMonth(0, 1), t.setHours(0, 0, 0, 0);
+ },
+ (t, e) => {
+ t.setFullYear(t.getFullYear() + e);
+ },
+ (t, e) => e.getFullYear() - t.getFullYear(),
+ (t) => t.getFullYear(),
+ ));
+ (Dn.every = (t) =>
+ isFinite((t = Math.floor(t))) && t > 0
+ ? cn(
+ (e) => {
+ e.setFullYear(Math.floor(e.getFullYear() / t) * t), e.setMonth(0, 1), e.setHours(0, 0, 0, 0);
+ },
+ (e, i) => {
+ e.setFullYear(e.getFullYear() + i * t);
+ },
+ )
+ : null),
+ Dn.range;
+ const $n = cn(
+ (t) => {
+ t.setUTCMonth(0, 1), t.setUTCHours(0, 0, 0, 0);
+ },
+ (t, e) => {
+ t.setUTCFullYear(t.getUTCFullYear() + e);
+ },
+ (t, e) => e.getUTCFullYear() - t.getUTCFullYear(),
+ (t) => t.getUTCFullYear(),
+ );
+ function zn(t, e, i, r, n, o) {
+ const a = [
+ [fn, 1, en],
+ [fn, 5, 5e3],
+ [fn, 15, 15e3],
+ [fn, 30, 3e4],
+ [o, 1, rn],
+ [o, 5, 3e5],
+ [o, 15, 9e5],
+ [o, 30, 18e5],
+ [n, 1, nn],
+ [n, 3, 108e5],
+ [n, 6, 216e5],
+ [n, 12, 432e5],
+ [r, 1, on],
+ [r, 2, 1728e5],
+ [i, 1, an],
+ [e, 1, 2592e6],
+ [e, 3, 7776e6],
+ [t, 1, sn],
+ ];
+ function s(e, i, r) {
+ const n = Math.abs(i - e) / r,
+ o = pr(([, , t]) => t).right(a, n);
+ if (o === a.length) return t.every(ur(e / sn, i / sn, r));
+ if (0 === o) return un.every(Math.max(ur(e, i, r), 1));
+ const [s, l] = a[n / a[o - 1][2] < a[o][2] / n ? o - 1 : o];
+ return s.every(l);
+ }
+ return [
+ function (t, e, i) {
+ const r = e < t;
+ r && ([t, e] = [e, t]);
+ const n = i && "function" == typeof i.range ? i : s(t, e, i),
+ o = n ? n.range(t, +e + 1) : [];
+ return r ? o.reverse() : o;
+ },
+ s,
+ ];
+ }
+ ($n.every = (t) =>
+ isFinite((t = Math.floor(t))) && t > 0
+ ? cn(
+ (e) => {
+ e.setUTCFullYear(Math.floor(e.getUTCFullYear() / t) * t), e.setUTCMonth(0, 1), e.setUTCHours(0, 0, 0, 0);
+ },
+ (e, i) => {
+ e.setUTCFullYear(e.getUTCFullYear() + i * t);
+ },
+ )
+ : null),
+ $n.range;
+ const [jn, Pn] = zn($n, Nn, Ln, bn, mn, pn),
+ [Rn, Wn] = zn(Dn, In, xn, yn, gn, dn);
+ function Un(t) {
+ if (0 <= t.y && t.y < 100) {
+ var e = new Date(-1, t.m, t.d, t.H, t.M, t.S, t.L);
+ return e.setFullYear(t.y), e;
+ }
+ return new Date(t.y, t.m, t.d, t.H, t.M, t.S, t.L);
+ }
+ function Hn(t) {
+ if (0 <= t.y && t.y < 100) {
+ var e = new Date(Date.UTC(-1, t.m, t.d, t.H, t.M, t.S, t.L));
+ return e.setUTCFullYear(t.y), e;
+ }
+ return new Date(Date.UTC(t.y, t.m, t.d, t.H, t.M, t.S, t.L));
+ }
+ function Yn(t, e, i) {
+ return { y: t, m: e, d: i, H: 0, M: 0, S: 0, L: 0 };
+ }
+ var Vn,
+ Gn,
+ Xn = { "-": "", _: " ", 0: "0" },
+ Jn = /^\s*\d+/,
+ Qn = /^%/,
+ Kn = /[\\^$*+?|[\]().{}]/g;
+ function to(t, e, i) {
+ var r = t < 0 ? "-" : "",
+ n = (r ? -t : t) + "",
+ o = n.length;
+ return r + (o < i ? new Array(i - o + 1).join(e) + n : n);
+ }
+ function eo(t) {
+ return t.replace(Kn, "\\$&");
+ }
+ function io(t) {
+ return new RegExp("^(?:" + t.map(eo).join("|") + ")", "i");
+ }
+ function ro(t) {
+ return new Map(t.map((t, e) => [t.toLowerCase(), e]));
+ }
+ function no(t, e, i) {
+ var r = Jn.exec(e.slice(i, i + 1));
+ return r ? ((t.w = +r[0]), i + r[0].length) : -1;
+ }
+ function oo(t, e, i) {
+ var r = Jn.exec(e.slice(i, i + 1));
+ return r ? ((t.u = +r[0]), i + r[0].length) : -1;
+ }
+ function ao(t, e, i) {
+ var r = Jn.exec(e.slice(i, i + 2));
+ return r ? ((t.U = +r[0]), i + r[0].length) : -1;
+ }
+ function so(t, e, i) {
+ var r = Jn.exec(e.slice(i, i + 2));
+ return r ? ((t.V = +r[0]), i + r[0].length) : -1;
+ }
+ function lo(t, e, i) {
+ var r = Jn.exec(e.slice(i, i + 2));
+ return r ? ((t.W = +r[0]), i + r[0].length) : -1;
+ }
+ function ho(t, e, i) {
+ var r = Jn.exec(e.slice(i, i + 4));
+ return r ? ((t.y = +r[0]), i + r[0].length) : -1;
+ }
+ function co(t, e, i) {
+ var r = Jn.exec(e.slice(i, i + 2));
+ return r ? ((t.y = +r[0] + (+r[0] > 68 ? 1900 : 2e3)), i + r[0].length) : -1;
+ }
+ function uo(t, e, i) {
+ var r = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(i, i + 6));
+ return r ? ((t.Z = r[1] ? 0 : -(r[2] + (r[3] || "00"))), i + r[0].length) : -1;
+ }
+ function fo(t, e, i) {
+ var r = Jn.exec(e.slice(i, i + 1));
+ return r ? ((t.q = 3 * r[0] - 3), i + r[0].length) : -1;
+ }
+ function po(t, e, i) {
+ var r = Jn.exec(e.slice(i, i + 2));
+ return r ? ((t.m = r[0] - 1), i + r[0].length) : -1;
+ }
+ function go(t, e, i) {
+ var r = Jn.exec(e.slice(i, i + 2));
+ return r ? ((t.d = +r[0]), i + r[0].length) : -1;
+ }
+ function mo(t, e, i) {
+ var r = Jn.exec(e.slice(i, i + 3));
+ return r ? ((t.m = 0), (t.d = +r[0]), i + r[0].length) : -1;
+ }
+ function yo(t, e, i) {
+ var r = Jn.exec(e.slice(i, i + 2));
+ return r ? ((t.H = +r[0]), i + r[0].length) : -1;
+ }
+ function _o(t, e, i) {
+ var r = Jn.exec(e.slice(i, i + 2));
+ return r ? ((t.M = +r[0]), i + r[0].length) : -1;
+ }
+ function bo(t, e, i) {
+ var r = Jn.exec(e.slice(i, i + 2));
+ return r ? ((t.S = +r[0]), i + r[0].length) : -1;
+ }
+ function Co(t, e, i) {
+ var r = Jn.exec(e.slice(i, i + 3));
+ return r ? ((t.L = +r[0]), i + r[0].length) : -1;
+ }
+ function xo(t, e, i) {
+ var r = Jn.exec(e.slice(i, i + 6));
+ return r ? ((t.L = Math.floor(r[0] / 1e3)), i + r[0].length) : -1;
+ }
+ function vo(t, e, i) {
+ var r = Qn.exec(e.slice(i, i + 1));
+ return r ? i + r[0].length : -1;
+ }
+ function ko(t, e, i) {
+ var r = Jn.exec(e.slice(i));
+ return r ? ((t.Q = +r[0]), i + r[0].length) : -1;
+ }
+ function To(t, e, i) {
+ var r = Jn.exec(e.slice(i));
+ return r ? ((t.s = +r[0]), i + r[0].length) : -1;
+ }
+ function wo(t, e) {
+ return to(t.getDate(), e, 2);
+ }
+ function So(t, e) {
+ return to(t.getHours(), e, 2);
+ }
+ function Bo(t, e) {
+ return to(t.getHours() % 12 || 12, e, 2);
+ }
+ function Fo(t, e) {
+ return to(1 + yn.count(Dn(t), t), e, 3);
+ }
+ function Lo(t, e) {
+ return to(t.getMilliseconds(), e, 3);
+ }
+ function Mo(t, e) {
+ return Lo(t, e) + "000";
+ }
+ function Ao(t, e) {
+ return to(t.getMonth() + 1, e, 2);
+ }
+ function Eo(t, e) {
+ return to(t.getMinutes(), e, 2);
+ }
+ function Zo(t, e) {
+ return to(t.getSeconds(), e, 2);
+ }
+ function Oo(t) {
+ var e = t.getDay();
+ return 0 === e ? 7 : e;
+ }
+ function qo(t, e) {
+ return to(xn.count(Dn(t) - 1, t), e, 2);
+ }
+ function Io(t) {
+ var e = t.getDay();
+ return e >= 4 || 0 === e ? wn(t) : wn.ceil(t);
+ }
+ function No(t, e) {
+ return (t = Io(t)), to(wn.count(Dn(t), t) + (4 === Dn(t).getDay()), e, 2);
+ }
+ function Do(t) {
+ return t.getDay();
+ }
+ function $o(t, e) {
+ return to(vn.count(Dn(t) - 1, t), e, 2);
+ }
+ function zo(t, e) {
+ return to(t.getFullYear() % 100, e, 2);
+ }
+ function jo(t, e) {
+ return to((t = Io(t)).getFullYear() % 100, e, 2);
+ }
+ function Po(t, e) {
+ return to(t.getFullYear() % 1e4, e, 4);
+ }
+ function Ro(t, e) {
+ var i = t.getDay();
+ return to((t = i >= 4 || 0 === i ? wn(t) : wn.ceil(t)).getFullYear() % 1e4, e, 4);
+ }
+ function Wo(t) {
+ var e = t.getTimezoneOffset();
+ return (e > 0 ? "-" : ((e *= -1), "+")) + to((e / 60) | 0, "0", 2) + to(e % 60, "0", 2);
+ }
+ function Uo(t, e) {
+ return to(t.getUTCDate(), e, 2);
+ }
+ function Ho(t, e) {
+ return to(t.getUTCHours(), e, 2);
+ }
+ function Yo(t, e) {
+ return to(t.getUTCHours() % 12 || 12, e, 2);
+ }
+ function Vo(t, e) {
+ return to(1 + _n.count($n(t), t), e, 3);
+ }
+ function Go(t, e) {
+ return to(t.getUTCMilliseconds(), e, 3);
+ }
+ function Xo(t, e) {
+ return Go(t, e) + "000";
+ }
+ function Jo(t, e) {
+ return to(t.getUTCMonth() + 1, e, 2);
+ }
+ function Qo(t, e) {
+ return to(t.getUTCMinutes(), e, 2);
+ }
+ function Ko(t, e) {
+ return to(t.getUTCSeconds(), e, 2);
+ }
+ function ta(t) {
+ var e = t.getUTCDay();
+ return 0 === e ? 7 : e;
+ }
+ function ea(t, e) {
+ return to(Ln.count($n(t) - 1, t), e, 2);
+ }
+ function ia(t) {
+ var e = t.getUTCDay();
+ return e >= 4 || 0 === e ? Zn(t) : Zn.ceil(t);
+ }
+ function ra(t, e) {
+ return (t = ia(t)), to(Zn.count($n(t), t) + (4 === $n(t).getUTCDay()), e, 2);
+ }
+ function na(t) {
+ return t.getUTCDay();
+ }
+ function oa(t, e) {
+ return to(Mn.count($n(t) - 1, t), e, 2);
+ }
+ function aa(t, e) {
+ return to(t.getUTCFullYear() % 100, e, 2);
+ }
+ function sa(t, e) {
+ return to((t = ia(t)).getUTCFullYear() % 100, e, 2);
+ }
+ function la(t, e) {
+ return to(t.getUTCFullYear() % 1e4, e, 4);
+ }
+ function ha(t, e) {
+ var i = t.getUTCDay();
+ return to((t = i >= 4 || 0 === i ? Zn(t) : Zn.ceil(t)).getUTCFullYear() % 1e4, e, 4);
+ }
+ function ca() {
+ return "+0000";
+ }
+ function ua() {
+ return "%";
+ }
+ function fa(t) {
+ return +t;
+ }
+ function da(t) {
+ return Math.floor(+t / 1e3);
+ }
+ function pa(t) {
+ return new Date(t);
+ }
+ function ga(t) {
+ return t instanceof Date ? +t : +new Date(+t);
+ }
+ function ma(t, e, i, r, n, o, a, s, l, h) {
+ var c = Er(),
+ u = c.invert,
+ f = c.domain,
+ d = h(".%L"),
+ p = h(":%S"),
+ g = h("%I:%M"),
+ m = h("%I %p"),
+ y = h("%a %d"),
+ _ = h("%b %d"),
+ b = h("%B"),
+ C = h("%Y");
+ function x(t) {
+ return (l(t) < t ? d : s(t) < t ? p : a(t) < t ? g : o(t) < t ? m : r(t) < t ? (n(t) < t ? y : _) : i(t) < t ? b : C)(t);
+ }
+ return (
+ (c.invert = function (t) {
+ return new Date(u(t));
+ }),
+ (c.domain = function (t) {
+ return arguments.length ? f(Array.from(t, ga)) : f().map(pa);
+ }),
+ (c.ticks = function (e) {
+ var i = f();
+ return t(i[0], i[i.length - 1], null == e ? 10 : e);
+ }),
+ (c.tickFormat = function (t, e) {
+ return null == e ? x : h(e);
+ }),
+ (c.nice = function (t) {
+ var i = f();
+ return (
+ (t && "function" == typeof t.range) || (t = e(i[0], i[i.length - 1], null == t ? 10 : t)),
+ t
+ ? f(
+ (function (t, e) {
+ var i,
+ r = 0,
+ n = (t = t.slice()).length - 1,
+ o = t[r],
+ a = t[n];
+ return a < o && ((i = r), (r = n), (n = i), (i = o), (o = a), (a = i)), (t[r] = e.floor(o)), (t[n] = e.ceil(a)), t;
+ })(i, t),
+ )
+ : c
+ );
+ }),
+ (c.copy = function () {
+ return Ar(c, ma(t, e, i, r, n, o, a, s, l, h));
+ }),
+ c
+ );
+ }
+ function ya() {
+ return Zr.apply(ma(Rn, Wn, Dn, In, xn, yn, gn, dn, fn, Gn).domain([new Date(2e3, 0, 1), new Date(2e3, 0, 2)]), arguments);
+ }
+ (Vn = (function (t) {
+ var e = t.dateTime,
+ i = t.date,
+ r = t.time,
+ n = t.periods,
+ o = t.days,
+ a = t.shortDays,
+ s = t.months,
+ l = t.shortMonths,
+ h = io(n),
+ c = ro(n),
+ u = io(o),
+ f = ro(o),
+ d = io(a),
+ p = ro(a),
+ g = io(s),
+ m = ro(s),
+ y = io(l),
+ _ = ro(l),
+ b = {
+ a: function (t) {
+ return a[t.getDay()];
+ },
+ A: function (t) {
+ return o[t.getDay()];
+ },
+ b: function (t) {
+ return l[t.getMonth()];
+ },
+ B: function (t) {
+ return s[t.getMonth()];
+ },
+ c: null,
+ d: wo,
+ e: wo,
+ f: Mo,
+ g: jo,
+ G: Ro,
+ H: So,
+ I: Bo,
+ j: Fo,
+ L: Lo,
+ m: Ao,
+ M: Eo,
+ p: function (t) {
+ return n[+(t.getHours() >= 12)];
+ },
+ q: function (t) {
+ return 1 + ~~(t.getMonth() / 3);
+ },
+ Q: fa,
+ s: da,
+ S: Zo,
+ u: Oo,
+ U: qo,
+ V: No,
+ w: Do,
+ W: $o,
+ x: null,
+ X: null,
+ y: zo,
+ Y: Po,
+ Z: Wo,
+ "%": ua,
+ },
+ C = {
+ a: function (t) {
+ return a[t.getUTCDay()];
+ },
+ A: function (t) {
+ return o[t.getUTCDay()];
+ },
+ b: function (t) {
+ return l[t.getUTCMonth()];
+ },
+ B: function (t) {
+ return s[t.getUTCMonth()];
+ },
+ c: null,
+ d: Uo,
+ e: Uo,
+ f: Xo,
+ g: sa,
+ G: ha,
+ H: Ho,
+ I: Yo,
+ j: Vo,
+ L: Go,
+ m: Jo,
+ M: Qo,
+ p: function (t) {
+ return n[+(t.getUTCHours() >= 12)];
+ },
+ q: function (t) {
+ return 1 + ~~(t.getUTCMonth() / 3);
+ },
+ Q: fa,
+ s: da,
+ S: Ko,
+ u: ta,
+ U: ea,
+ V: ra,
+ w: na,
+ W: oa,
+ x: null,
+ X: null,
+ y: aa,
+ Y: la,
+ Z: ca,
+ "%": ua,
+ },
+ x = {
+ a: function (t, e, i) {
+ var r = d.exec(e.slice(i));
+ return r ? ((t.w = p.get(r[0].toLowerCase())), i + r[0].length) : -1;
+ },
+ A: function (t, e, i) {
+ var r = u.exec(e.slice(i));
+ return r ? ((t.w = f.get(r[0].toLowerCase())), i + r[0].length) : -1;
+ },
+ b: function (t, e, i) {
+ var r = y.exec(e.slice(i));
+ return r ? ((t.m = _.get(r[0].toLowerCase())), i + r[0].length) : -1;
+ },
+ B: function (t, e, i) {
+ var r = g.exec(e.slice(i));
+ return r ? ((t.m = m.get(r[0].toLowerCase())), i + r[0].length) : -1;
+ },
+ c: function (t, i, r) {
+ return T(t, e, i, r);
+ },
+ d: go,
+ e: go,
+ f: xo,
+ g: co,
+ G: ho,
+ H: yo,
+ I: yo,
+ j: mo,
+ L: Co,
+ m: po,
+ M: _o,
+ p: function (t, e, i) {
+ var r = h.exec(e.slice(i));
+ return r ? ((t.p = c.get(r[0].toLowerCase())), i + r[0].length) : -1;
+ },
+ q: fo,
+ Q: ko,
+ s: To,
+ S: bo,
+ u: oo,
+ U: ao,
+ V: so,
+ w: no,
+ W: lo,
+ x: function (t, e, r) {
+ return T(t, i, e, r);
+ },
+ X: function (t, e, i) {
+ return T(t, r, e, i);
+ },
+ y: co,
+ Y: ho,
+ Z: uo,
+ "%": vo,
+ };
+ function v(t, e) {
+ return function (i) {
+ var r,
+ n,
+ o,
+ a = [],
+ s = -1,
+ l = 0,
+ h = t.length;
+ for (i instanceof Date || (i = new Date(+i)); ++s < h; )
+ 37 === t.charCodeAt(s) &&
+ (a.push(t.slice(l, s)),
+ null != (n = Xn[(r = t.charAt(++s))]) ? (r = t.charAt(++s)) : (n = "e" === r ? " " : "0"),
+ (o = e[r]) && (r = o(i, n)),
+ a.push(r),
+ (l = s + 1));
+ return a.push(t.slice(l, s)), a.join("");
+ };
+ }
+ function k(t, e) {
+ return function (i) {
+ var r,
+ n,
+ o = Yn(1900, void 0, 1);
+ if (T(o, t, (i += ""), 0) != i.length) return null;
+ if ("Q" in o) return new Date(o.Q);
+ if ("s" in o) return new Date(1e3 * o.s + ("L" in o ? o.L : 0));
+ if ((e && !("Z" in o) && (o.Z = 0), "p" in o && (o.H = (o.H % 12) + 12 * o.p), void 0 === o.m && (o.m = "q" in o ? o.q : 0), "V" in o)) {
+ if (o.V < 1 || o.V > 53) return null;
+ "w" in o || (o.w = 1),
+ "Z" in o
+ ? ((n = (r = Hn(Yn(o.y, 0, 1))).getUTCDay()),
+ (r = n > 4 || 0 === n ? Mn.ceil(r) : Mn(r)),
+ (r = _n.offset(r, 7 * (o.V - 1))),
+ (o.y = r.getUTCFullYear()),
+ (o.m = r.getUTCMonth()),
+ (o.d = r.getUTCDate() + ((o.w + 6) % 7)))
+ : ((n = (r = Un(Yn(o.y, 0, 1))).getDay()),
+ (r = n > 4 || 0 === n ? vn.ceil(r) : vn(r)),
+ (r = yn.offset(r, 7 * (o.V - 1))),
+ (o.y = r.getFullYear()),
+ (o.m = r.getMonth()),
+ (o.d = r.getDate() + ((o.w + 6) % 7)));
+ } else
+ ("W" in o || "U" in o) &&
+ ("w" in o || (o.w = "u" in o ? o.u % 7 : "W" in o ? 1 : 0),
+ (n = "Z" in o ? Hn(Yn(o.y, 0, 1)).getUTCDay() : Un(Yn(o.y, 0, 1)).getDay()),
+ (o.m = 0),
+ (o.d = "W" in o ? ((o.w + 6) % 7) + 7 * o.W - ((n + 5) % 7) : o.w + 7 * o.U - ((n + 6) % 7)));
+ return "Z" in o ? ((o.H += (o.Z / 100) | 0), (o.M += o.Z % 100), Hn(o)) : Un(o);
+ };
+ }
+ function T(t, e, i, r) {
+ for (var n, o, a = 0, s = e.length, l = i.length; a < s; ) {
+ if (r >= l) return -1;
+ if (37 === (n = e.charCodeAt(a++))) {
+ if (((n = e.charAt(a++)), !(o = x[n in Xn ? e.charAt(a++) : n]) || (r = o(t, i, r)) < 0)) return -1;
+ } else if (n != i.charCodeAt(r++)) return -1;
+ }
+ return r;
+ }
+ return (
+ (b.x = v(i, b)),
+ (b.X = v(r, b)),
+ (b.c = v(e, b)),
+ (C.x = v(i, C)),
+ (C.X = v(r, C)),
+ (C.c = v(e, C)),
+ {
+ format: function (t) {
+ var e = v((t += ""), b);
+ return (
+ (e.toString = function () {
+ return t;
+ }),
+ e
+ );
+ },
+ parse: function (t) {
+ var e = k((t += ""), !1);
+ return (
+ (e.toString = function () {
+ return t;
+ }),
+ e
+ );
+ },
+ utcFormat: function (t) {
+ var e = v((t += ""), C);
+ return (
+ (e.toString = function () {
+ return t;
+ }),
+ e
+ );
+ },
+ utcParse: function (t) {
+ var e = k((t += ""), !0);
+ return (
+ (e.toString = function () {
+ return t;
+ }),
+ e
+ );
+ },
+ }
+ );
+ })({
+ dateTime: "%x, %X",
+ date: "%-m/%-d/%Y",
+ time: "%-I:%M:%S %p",
+ periods: ["AM", "PM"],
+ days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+ shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+ months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+ shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+ })),
+ (Gn = Vn.format),
+ Vn.parse,
+ Vn.utcFormat,
+ Vn.utcParse;
+ var _a = (function (t) {
+ for (var e = new Array(10), i = 0; i < 10; ) e[i] = "#" + t.slice(6 * i, 6 * ++i);
+ return e;
+ })("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab");
+ function ba(t) {
+ return "string" == typeof t ? new Lt([[document.querySelector(t)]], [document.documentElement]) : new Lt([[t]], Ft);
+ }
+ function Ca(t) {
+ return "string" == typeof t ? new Lt([document.querySelectorAll(t)], [document.documentElement]) : new Lt([x(t)], Ft);
+ }
+ function xa(t) {
+ return function () {
+ return t;
+ };
+ }
+ const va = Math.abs,
+ ka = Math.atan2,
+ Ta = Math.cos,
+ wa = Math.max,
+ Sa = Math.min,
+ Ba = Math.sin,
+ Fa = Math.sqrt,
+ La = 1e-12,
+ Ma = Math.PI,
+ Aa = Ma / 2,
+ Ea = 2 * Ma;
+ function Za(t) {
+ return t >= 1 ? Aa : t <= -1 ? -Aa : Math.asin(t);
+ }
+ const Oa = Math.PI,
+ qa = 2 * Oa,
+ Ia = 1e-6,
+ Na = qa - Ia;
+ function Da(t) {
+ this._ += t[0];
+ for (let e = 1, i = t.length; e < i; ++e) this._ += arguments[e] + t[e];
+ }
+ class $a {
+ constructor(t) {
+ (this._x0 = this._y0 = this._x1 = this._y1 = null),
+ (this._ = ""),
+ (this._append =
+ null == t
+ ? Da
+ : (function (t) {
+ let e = Math.floor(t);
+ if (!(e >= 0)) throw new Error(`invalid digits: ${t}`);
+ if (e > 15) return Da;
+ const i = 10 ** e;
+ return function (t) {
+ this._ += t[0];
+ for (let e = 1, r = t.length; e < r; ++e) this._ += Math.round(arguments[e] * i) / i + t[e];
+ };
+ })(t));
+ }
+ moveTo(t, e) {
+ this._append`M${(this._x0 = this._x1 = +t)},${(this._y0 = this._y1 = +e)}`;
+ }
+ closePath() {
+ null !== this._x1 && ((this._x1 = this._x0), (this._y1 = this._y0), this._append`Z`);
+ }
+ lineTo(t, e) {
+ this._append`L${(this._x1 = +t)},${(this._y1 = +e)}`;
+ }
+ quadraticCurveTo(t, e, i, r) {
+ this._append`Q${+t},${+e},${(this._x1 = +i)},${(this._y1 = +r)}`;
+ }
+ bezierCurveTo(t, e, i, r, n, o) {
+ this._append`C${+t},${+e},${+i},${+r},${(this._x1 = +n)},${(this._y1 = +o)}`;
+ }
+ arcTo(t, e, i, r, n) {
+ if (((t = +t), (e = +e), (i = +i), (r = +r), (n = +n) < 0)) throw new Error(`negative radius: ${n}`);
+ let o = this._x1,
+ a = this._y1,
+ s = i - t,
+ l = r - e,
+ h = o - t,
+ c = a - e,
+ u = h * h + c * c;
+ if (null === this._x1) this._append`M${(this._x1 = t)},${(this._y1 = e)}`;
+ else if (u > Ia)
+ if (Math.abs(c * s - l * h) > Ia && n) {
+ let f = i - o,
+ d = r - a,
+ p = s * s + l * l,
+ g = f * f + d * d,
+ m = Math.sqrt(p),
+ y = Math.sqrt(u),
+ _ = n * Math.tan((Oa - Math.acos((p + u - g) / (2 * m * y))) / 2),
+ b = _ / y,
+ C = _ / m;
+ Math.abs(b - 1) > Ia && this._append`L${t + b * h},${e + b * c}`,
+ this._append`A${n},${n},0,0,${+(c * f > h * d)},${(this._x1 = t + C * s)},${(this._y1 = e + C * l)}`;
+ } else this._append`L${(this._x1 = t)},${(this._y1 = e)}`;
+ }
+ arc(t, e, i, r, n, o) {
+ if (((t = +t), (e = +e), (o = !!o), (i = +i) < 0)) throw new Error(`negative radius: ${i}`);
+ let a = i * Math.cos(r),
+ s = i * Math.sin(r),
+ l = t + a,
+ h = e + s,
+ c = 1 ^ o,
+ u = o ? r - n : n - r;
+ null === this._x1 ? this._append`M${l},${h}` : (Math.abs(this._x1 - l) > Ia || Math.abs(this._y1 - h) > Ia) && this._append`L${l},${h}`,
+ i &&
+ (u < 0 && (u = (u % qa) + qa),
+ u > Na
+ ? this._append`A${i},${i},0,1,${c},${t - a},${e - s}A${i},${i},0,1,${c},${(this._x1 = l)},${(this._y1 = h)}`
+ : u > Ia && this._append`A${i},${i},0,${+(u >= Oa)},${c},${(this._x1 = t + i * Math.cos(n))},${(this._y1 = e + i * Math.sin(n))}`);
+ }
+ rect(t, e, i, r) {
+ this._append`M${(this._x0 = this._x1 = +t)},${(this._y0 = this._y1 = +e)}h${(i = +i)}v${+r}h${-i}Z`;
+ }
+ toString() {
+ return this._;
+ }
+ }
+ function za(t) {
+ let e = 3;
+ return (
+ (t.digits = function (i) {
+ if (!arguments.length) return e;
+ if (null == i) e = null;
+ else {
+ const t = Math.floor(i);
+ if (!(t >= 0)) throw new RangeError(`invalid digits: ${i}`);
+ e = t;
+ }
+ return t;
+ }),
+ () => new $a(e)
+ );
+ }
+ function ja(t) {
+ return t.innerRadius;
+ }
+ function Pa(t) {
+ return t.outerRadius;
+ }
+ function Ra(t) {
+ return t.startAngle;
+ }
+ function Wa(t) {
+ return t.endAngle;
+ }
+ function Ua(t) {
+ return t && t.padAngle;
+ }
+ function Ha(t, e, i, r, n, o, a) {
+ var s = t - i,
+ l = e - r,
+ h = (a ? o : -o) / Fa(s * s + l * l),
+ c = h * l,
+ u = -h * s,
+ f = t + c,
+ d = e + u,
+ p = i + c,
+ g = r + u,
+ m = (f + p) / 2,
+ y = (d + g) / 2,
+ _ = p - f,
+ b = g - d,
+ C = _ * _ + b * b,
+ x = n - o,
+ v = f * g - p * d,
+ k = (b < 0 ? -1 : 1) * Fa(wa(0, x * x * C - v * v)),
+ T = (v * b - _ * k) / C,
+ w = (-v * _ - b * k) / C,
+ S = (v * b + _ * k) / C,
+ B = (-v * _ + b * k) / C,
+ F = T - m,
+ L = w - y,
+ M = S - m,
+ A = B - y;
+ return F * F + L * L > M * M + A * A && ((T = S), (w = B)), { cx: T, cy: w, x01: -c, y01: -u, x11: T * (n / x - 1), y11: w * (n / x - 1) };
+ }
+ function Ya() {
+ var t = ja,
+ e = Pa,
+ i = xa(0),
+ r = null,
+ n = Ra,
+ o = Wa,
+ a = Ua,
+ s = null,
+ l = za(h);
+ function h() {
+ var h,
+ c,
+ u,
+ f = +t.apply(this, arguments),
+ d = +e.apply(this, arguments),
+ p = n.apply(this, arguments) - Aa,
+ g = o.apply(this, arguments) - Aa,
+ m = va(g - p),
+ y = g > p;
+ if ((s || (s = h = l()), d < f && ((c = d), (d = f), (f = c)), d > La))
+ if (m > Ea - La)
+ s.moveTo(d * Ta(p), d * Ba(p)), s.arc(0, 0, d, p, g, !y), f > La && (s.moveTo(f * Ta(g), f * Ba(g)), s.arc(0, 0, f, g, p, y));
+ else {
+ var _,
+ b,
+ C = p,
+ x = g,
+ v = p,
+ k = g,
+ T = m,
+ w = m,
+ S = a.apply(this, arguments) / 2,
+ B = S > La && (r ? +r.apply(this, arguments) : Fa(f * f + d * d)),
+ F = Sa(va(d - f) / 2, +i.apply(this, arguments)),
+ L = F,
+ M = F;
+ if (B > La) {
+ var A = Za((B / f) * Ba(S)),
+ E = Za((B / d) * Ba(S));
+ (T -= 2 * A) > La ? ((v += A *= y ? 1 : -1), (k -= A)) : ((T = 0), (v = k = (p + g) / 2)),
+ (w -= 2 * E) > La ? ((C += E *= y ? 1 : -1), (x -= E)) : ((w = 0), (C = x = (p + g) / 2));
+ }
+ var Z = d * Ta(C),
+ O = d * Ba(C),
+ q = f * Ta(k),
+ I = f * Ba(k);
+ if (F > La) {
+ var N,
+ D = d * Ta(x),
+ $ = d * Ba(x),
+ z = f * Ta(v),
+ j = f * Ba(v);
+ if (m < Ma)
+ if (
+ (N = (function (t, e, i, r, n, o, a, s) {
+ var l = i - t,
+ h = r - e,
+ c = a - n,
+ u = s - o,
+ f = u * l - c * h;
+ if (!(f * f < La)) return [t + (f = (c * (e - o) - u * (t - n)) / f) * l, e + f * h];
+ })(Z, O, z, j, D, $, q, I))
+ ) {
+ var P = Z - N[0],
+ R = O - N[1],
+ W = D - N[0],
+ U = $ - N[1],
+ H = 1 / Ba(((u = (P * W + R * U) / (Fa(P * P + R * R) * Fa(W * W + U * U))) > 1 ? 0 : u < -1 ? Ma : Math.acos(u)) / 2),
+ Y = Fa(N[0] * N[0] + N[1] * N[1]);
+ (L = Sa(F, (f - Y) / (H - 1))), (M = Sa(F, (d - Y) / (H + 1)));
+ } else L = M = 0;
+ }
+ w > La
+ ? M > La
+ ? ((_ = Ha(z, j, Z, O, d, M, y)),
+ (b = Ha(D, $, q, I, d, M, y)),
+ s.moveTo(_.cx + _.x01, _.cy + _.y01),
+ M < F
+ ? s.arc(_.cx, _.cy, M, ka(_.y01, _.x01), ka(b.y01, b.x01), !y)
+ : (s.arc(_.cx, _.cy, M, ka(_.y01, _.x01), ka(_.y11, _.x11), !y),
+ s.arc(0, 0, d, ka(_.cy + _.y11, _.cx + _.x11), ka(b.cy + b.y11, b.cx + b.x11), !y),
+ s.arc(b.cx, b.cy, M, ka(b.y11, b.x11), ka(b.y01, b.x01), !y)))
+ : (s.moveTo(Z, O), s.arc(0, 0, d, C, x, !y))
+ : s.moveTo(Z, O),
+ f > La && T > La
+ ? L > La
+ ? ((_ = Ha(q, I, D, $, f, -L, y)),
+ (b = Ha(Z, O, z, j, f, -L, y)),
+ s.lineTo(_.cx + _.x01, _.cy + _.y01),
+ L < F
+ ? s.arc(_.cx, _.cy, L, ka(_.y01, _.x01), ka(b.y01, b.x01), !y)
+ : (s.arc(_.cx, _.cy, L, ka(_.y01, _.x01), ka(_.y11, _.x11), !y),
+ s.arc(0, 0, f, ka(_.cy + _.y11, _.cx + _.x11), ka(b.cy + b.y11, b.cx + b.x11), y),
+ s.arc(b.cx, b.cy, L, ka(b.y11, b.x11), ka(b.y01, b.x01), !y)))
+ : s.arc(0, 0, f, k, v, y)
+ : s.lineTo(q, I);
+ }
+ else s.moveTo(0, 0);
+ if ((s.closePath(), h)) return (s = null), h + "" || null;
+ }
+ return (
+ (h.centroid = function () {
+ var i = (+t.apply(this, arguments) + +e.apply(this, arguments)) / 2,
+ r = (+n.apply(this, arguments) + +o.apply(this, arguments)) / 2 - Ma / 2;
+ return [Ta(r) * i, Ba(r) * i];
+ }),
+ (h.innerRadius = function (e) {
+ return arguments.length ? ((t = "function" == typeof e ? e : xa(+e)), h) : t;
+ }),
+ (h.outerRadius = function (t) {
+ return arguments.length ? ((e = "function" == typeof t ? t : xa(+t)), h) : e;
+ }),
+ (h.cornerRadius = function (t) {
+ return arguments.length ? ((i = "function" == typeof t ? t : xa(+t)), h) : i;
+ }),
+ (h.padRadius = function (t) {
+ return arguments.length ? ((r = null == t ? null : "function" == typeof t ? t : xa(+t)), h) : r;
+ }),
+ (h.startAngle = function (t) {
+ return arguments.length ? ((n = "function" == typeof t ? t : xa(+t)), h) : n;
+ }),
+ (h.endAngle = function (t) {
+ return arguments.length ? ((o = "function" == typeof t ? t : xa(+t)), h) : o;
+ }),
+ (h.padAngle = function (t) {
+ return arguments.length ? ((a = "function" == typeof t ? t : xa(+t)), h) : a;
+ }),
+ (h.context = function (t) {
+ return arguments.length ? ((s = null == t ? null : t), h) : s;
+ }),
+ h
+ );
+ }
+ function Va(t) {
+ return "object" == typeof t && "length" in t ? t : Array.from(t);
+ }
+ function Ga(t) {
+ this._context = t;
+ }
+ function Xa(t) {
+ return new Ga(t);
+ }
+ function Ja(t) {
+ return t[0];
+ }
+ function Qa(t) {
+ return t[1];
+ }
+ function Ka(t, e) {
+ var i = xa(!0),
+ r = null,
+ n = Xa,
+ o = null,
+ a = za(s);
+ function s(s) {
+ var l,
+ h,
+ c,
+ u = (s = Va(s)).length,
+ f = !1;
+ for (null == r && (o = n((c = a()))), l = 0; l <= u; ++l)
+ !(l < u && i((h = s[l]), l, s)) === f && ((f = !f) ? o.lineStart() : o.lineEnd()), f && o.point(+t(h, l, s), +e(h, l, s));
+ if (c) return (o = null), c + "" || null;
+ }
+ return (
+ (t = "function" == typeof t ? t : void 0 === t ? Ja : xa(t)),
+ (e = "function" == typeof e ? e : void 0 === e ? Qa : xa(e)),
+ (s.x = function (e) {
+ return arguments.length ? ((t = "function" == typeof e ? e : xa(+e)), s) : t;
+ }),
+ (s.y = function (t) {
+ return arguments.length ? ((e = "function" == typeof t ? t : xa(+t)), s) : e;
+ }),
+ (s.defined = function (t) {
+ return arguments.length ? ((i = "function" == typeof t ? t : xa(!!t)), s) : i;
+ }),
+ (s.curve = function (t) {
+ return arguments.length ? ((n = t), null != r && (o = n(r)), s) : n;
+ }),
+ (s.context = function (t) {
+ return arguments.length ? (null == t ? (r = o = null) : (o = n((r = t))), s) : r;
+ }),
+ s
+ );
+ }
+ function ts(t, e) {
+ return e < t ? -1 : e > t ? 1 : e >= t ? 0 : NaN;
+ }
+ function es(t) {
+ return t;
+ }
+ function is() {
+ var t = es,
+ e = ts,
+ i = null,
+ r = xa(0),
+ n = xa(Ea),
+ o = xa(0);
+ function a(a) {
+ var s,
+ l,
+ h,
+ c,
+ u,
+ f = (a = Va(a)).length,
+ d = 0,
+ p = new Array(f),
+ g = new Array(f),
+ m = +r.apply(this, arguments),
+ y = Math.min(Ea, Math.max(-Ea, n.apply(this, arguments) - m)),
+ _ = Math.min(Math.abs(y) / f, o.apply(this, arguments)),
+ b = _ * (y < 0 ? -1 : 1);
+ for (s = 0; s < f; ++s) (u = g[(p[s] = s)] = +t(a[s], s, a)) > 0 && (d += u);
+ for (
+ null != e
+ ? p.sort(function (t, i) {
+ return e(g[t], g[i]);
+ })
+ : null != i &&
+ p.sort(function (t, e) {
+ return i(a[t], a[e]);
+ }),
+ s = 0,
+ h = d ? (y - f * b) / d : 0;
+ s < f;
+ ++s, m = c
+ )
+ (l = p[s]),
+ (c = m + ((u = g[l]) > 0 ? u * h : 0) + b),
+ (g[l] = { data: a[l], index: s, value: u, startAngle: m, endAngle: c, padAngle: _ });
+ return g;
+ }
+ return (
+ (a.value = function (e) {
+ return arguments.length ? ((t = "function" == typeof e ? e : xa(+e)), a) : t;
+ }),
+ (a.sortValues = function (t) {
+ return arguments.length ? ((e = t), (i = null), a) : e;
+ }),
+ (a.sort = function (t) {
+ return arguments.length ? ((i = t), (e = null), a) : i;
+ }),
+ (a.startAngle = function (t) {
+ return arguments.length ? ((r = "function" == typeof t ? t : xa(+t)), a) : r;
+ }),
+ (a.endAngle = function (t) {
+ return arguments.length ? ((n = "function" == typeof t ? t : xa(+t)), a) : n;
+ }),
+ (a.padAngle = function (t) {
+ return arguments.length ? ((o = "function" == typeof t ? t : xa(+t)), a) : o;
+ }),
+ a
+ );
+ }
+ function rs() {}
+ function ns(t, e, i) {
+ t._context.bezierCurveTo(
+ (2 * t._x0 + t._x1) / 3,
+ (2 * t._y0 + t._y1) / 3,
+ (t._x0 + 2 * t._x1) / 3,
+ (t._y0 + 2 * t._y1) / 3,
+ (t._x0 + 4 * t._x1 + e) / 6,
+ (t._y0 + 4 * t._y1 + i) / 6,
+ );
+ }
+ function os(t) {
+ this._context = t;
+ }
+ function as(t) {
+ return new os(t);
+ }
+ function ss(t) {
+ this._context = t;
+ }
+ function ls(t) {
+ return new ss(t);
+ }
+ function hs(t) {
+ this._context = t;
+ }
+ function cs(t) {
+ return new hs(t);
+ }
+ $a.prototype,
+ Array.prototype.slice,
+ (Ga.prototype = {
+ areaStart: function () {
+ this._line = 0;
+ },
+ areaEnd: function () {
+ this._line = NaN;
+ },
+ lineStart: function () {
+ this._point = 0;
+ },
+ lineEnd: function () {
+ (this._line || (0 !== this._line && 1 === this._point)) && this._context.closePath(), (this._line = 1 - this._line);
+ },
+ point: function (t, e) {
+ switch (((t = +t), (e = +e), this._point)) {
+ case 0:
+ (this._point = 1), this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e);
+ break;
+ case 1:
+ this._point = 2;
+ default:
+ this._context.lineTo(t, e);
+ }
+ },
+ }),
+ (os.prototype = {
+ areaStart: function () {
+ this._line = 0;
+ },
+ areaEnd: function () {
+ this._line = NaN;
+ },
+ lineStart: function () {
+ (this._x0 = this._x1 = this._y0 = this._y1 = NaN), (this._point = 0);
+ },
+ lineEnd: function () {
+ switch (this._point) {
+ case 3:
+ ns(this, this._x1, this._y1);
+ case 2:
+ this._context.lineTo(this._x1, this._y1);
+ }
+ (this._line || (0 !== this._line && 1 === this._point)) && this._context.closePath(), (this._line = 1 - this._line);
+ },
+ point: function (t, e) {
+ switch (((t = +t), (e = +e), this._point)) {
+ case 0:
+ (this._point = 1), this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e);
+ break;
+ case 1:
+ this._point = 2;
+ break;
+ case 2:
+ (this._point = 3), this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6);
+ default:
+ ns(this, t, e);
+ }
+ (this._x0 = this._x1), (this._x1 = t), (this._y0 = this._y1), (this._y1 = e);
+ },
+ }),
+ (ss.prototype = {
+ areaStart: rs,
+ areaEnd: rs,
+ lineStart: function () {
+ (this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN), (this._point = 0);
+ },
+ lineEnd: function () {
+ switch (this._point) {
+ case 1:
+ this._context.moveTo(this._x2, this._y2), this._context.closePath();
+ break;
+ case 2:
+ this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3),
+ this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3),
+ this._context.closePath();
+ break;
+ case 3:
+ this.point(this._x2, this._y2), this.point(this._x3, this._y3), this.point(this._x4, this._y4);
+ }
+ },
+ point: function (t, e) {
+ switch (((t = +t), (e = +e), this._point)) {
+ case 0:
+ (this._point = 1), (this._x2 = t), (this._y2 = e);
+ break;
+ case 1:
+ (this._point = 2), (this._x3 = t), (this._y3 = e);
+ break;
+ case 2:
+ (this._point = 3),
+ (this._x4 = t),
+ (this._y4 = e),
+ this._context.moveTo((this._x0 + 4 * this._x1 + t) / 6, (this._y0 + 4 * this._y1 + e) / 6);
+ break;
+ default:
+ ns(this, t, e);
+ }
+ (this._x0 = this._x1), (this._x1 = t), (this._y0 = this._y1), (this._y1 = e);
+ },
+ }),
+ (hs.prototype = {
+ areaStart: function () {
+ this._line = 0;
+ },
+ areaEnd: function () {
+ this._line = NaN;
+ },
+ lineStart: function () {
+ (this._x0 = this._x1 = this._y0 = this._y1 = NaN), (this._point = 0);
+ },
+ lineEnd: function () {
+ (this._line || (0 !== this._line && 3 === this._point)) && this._context.closePath(), (this._line = 1 - this._line);
+ },
+ point: function (t, e) {
+ switch (((t = +t), (e = +e), this._point)) {
+ case 0:
+ this._point = 1;
+ break;
+ case 1:
+ this._point = 2;
+ break;
+ case 2:
+ this._point = 3;
+ var i = (this._x0 + 4 * this._x1 + t) / 6,
+ r = (this._y0 + 4 * this._y1 + e) / 6;
+ this._line ? this._context.lineTo(i, r) : this._context.moveTo(i, r);
+ break;
+ case 3:
+ this._point = 4;
+ default:
+ ns(this, t, e);
+ }
+ (this._x0 = this._x1), (this._x1 = t), (this._y0 = this._y1), (this._y1 = e);
+ },
+ });
+ class us {
+ constructor(t, e) {
+ (this._context = t), (this._x = e);
+ }
+ areaStart() {
+ this._line = 0;
+ }
+ areaEnd() {
+ this._line = NaN;
+ }
+ lineStart() {
+ this._point = 0;
+ }
+ lineEnd() {
+ (this._line || (0 !== this._line && 1 === this._point)) && this._context.closePath(), (this._line = 1 - this._line);
+ }
+ point(t, e) {
+ switch (((t = +t), (e = +e), this._point)) {
+ case 0:
+ (this._point = 1), this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e);
+ break;
+ case 1:
+ this._point = 2;
+ default:
+ this._x
+ ? this._context.bezierCurveTo((this._x0 = (this._x0 + t) / 2), this._y0, this._x0, e, t, e)
+ : this._context.bezierCurveTo(this._x0, (this._y0 = (this._y0 + e) / 2), t, this._y0, t, e);
+ }
+ (this._x0 = t), (this._y0 = e);
+ }
+ }
+ function fs(t) {
+ return new us(t, !0);
+ }
+ function ds(t) {
+ return new us(t, !1);
+ }
+ function ps(t, e) {
+ (this._basis = new os(t)), (this._beta = e);
+ }
+ ps.prototype = {
+ lineStart: function () {
+ (this._x = []), (this._y = []), this._basis.lineStart();
+ },
+ lineEnd: function () {
+ var t = this._x,
+ e = this._y,
+ i = t.length - 1;
+ if (i > 0)
+ for (var r, n = t[0], o = e[0], a = t[i] - n, s = e[i] - o, l = -1; ++l <= i; )
+ (r = l / i), this._basis.point(this._beta * t[l] + (1 - this._beta) * (n + r * a), this._beta * e[l] + (1 - this._beta) * (o + r * s));
+ (this._x = this._y = null), this._basis.lineEnd();
+ },
+ point: function (t, e) {
+ this._x.push(+t), this._y.push(+e);
+ },
+ };
+ var gs = (function t(e) {
+ function i(t) {
+ return 1 === e ? new os(t) : new ps(t, e);
+ }
+ return (
+ (i.beta = function (e) {
+ return t(+e);
+ }),
+ i
+ );
+ })(0.85);
+ function ms(t, e, i) {
+ t._context.bezierCurveTo(
+ t._x1 + t._k * (t._x2 - t._x0),
+ t._y1 + t._k * (t._y2 - t._y0),
+ t._x2 + t._k * (t._x1 - e),
+ t._y2 + t._k * (t._y1 - i),
+ t._x2,
+ t._y2,
+ );
+ }
+ function ys(t, e) {
+ (this._context = t), (this._k = (1 - e) / 6);
+ }
+ ys.prototype = {
+ areaStart: function () {
+ this._line = 0;
+ },
+ areaEnd: function () {
+ this._line = NaN;
+ },
+ lineStart: function () {
+ (this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN), (this._point = 0);
+ },
+ lineEnd: function () {
+ switch (this._point) {
+ case 2:
+ this._context.lineTo(this._x2, this._y2);
+ break;
+ case 3:
+ ms(this, this._x1, this._y1);
+ }
+ (this._line || (0 !== this._line && 1 === this._point)) && this._context.closePath(), (this._line = 1 - this._line);
+ },
+ point: function (t, e) {
+ switch (((t = +t), (e = +e), this._point)) {
+ case 0:
+ (this._point = 1), this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e);
+ break;
+ case 1:
+ (this._point = 2), (this._x1 = t), (this._y1 = e);
+ break;
+ case 2:
+ this._point = 3;
+ default:
+ ms(this, t, e);
+ }
+ (this._x0 = this._x1), (this._x1 = this._x2), (this._x2 = t), (this._y0 = this._y1), (this._y1 = this._y2), (this._y2 = e);
+ },
+ };
+ var _s = (function t(e) {
+ function i(t) {
+ return new ys(t, e);
+ }
+ return (
+ (i.tension = function (e) {
+ return t(+e);
+ }),
+ i
+ );
+ })(0);
+ function bs(t, e) {
+ (this._context = t), (this._k = (1 - e) / 6);
+ }
+ bs.prototype = {
+ areaStart: rs,
+ areaEnd: rs,
+ lineStart: function () {
+ (this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN),
+ (this._point = 0);
+ },
+ lineEnd: function () {
+ switch (this._point) {
+ case 1:
+ this._context.moveTo(this._x3, this._y3), this._context.closePath();
+ break;
+ case 2:
+ this._context.lineTo(this._x3, this._y3), this._context.closePath();
+ break;
+ case 3:
+ this.point(this._x3, this._y3), this.point(this._x4, this._y4), this.point(this._x5, this._y5);
+ }
+ },
+ point: function (t, e) {
+ switch (((t = +t), (e = +e), this._point)) {
+ case 0:
+ (this._point = 1), (this._x3 = t), (this._y3 = e);
+ break;
+ case 1:
+ (this._point = 2), this._context.moveTo((this._x4 = t), (this._y4 = e));
+ break;
+ case 2:
+ (this._point = 3), (this._x5 = t), (this._y5 = e);
+ break;
+ default:
+ ms(this, t, e);
+ }
+ (this._x0 = this._x1), (this._x1 = this._x2), (this._x2 = t), (this._y0 = this._y1), (this._y1 = this._y2), (this._y2 = e);
+ },
+ };
+ var Cs = (function t(e) {
+ function i(t) {
+ return new bs(t, e);
+ }
+ return (
+ (i.tension = function (e) {
+ return t(+e);
+ }),
+ i
+ );
+ })(0);
+ function xs(t, e) {
+ (this._context = t), (this._k = (1 - e) / 6);
+ }
+ xs.prototype = {
+ areaStart: function () {
+ this._line = 0;
+ },
+ areaEnd: function () {
+ this._line = NaN;
+ },
+ lineStart: function () {
+ (this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN), (this._point = 0);
+ },
+ lineEnd: function () {
+ (this._line || (0 !== this._line && 3 === this._point)) && this._context.closePath(), (this._line = 1 - this._line);
+ },
+ point: function (t, e) {
+ switch (((t = +t), (e = +e), this._point)) {
+ case 0:
+ this._point = 1;
+ break;
+ case 1:
+ this._point = 2;
+ break;
+ case 2:
+ (this._point = 3), this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2);
+ break;
+ case 3:
+ this._point = 4;
+ default:
+ ms(this, t, e);
+ }
+ (this._x0 = this._x1), (this._x1 = this._x2), (this._x2 = t), (this._y0 = this._y1), (this._y1 = this._y2), (this._y2 = e);
+ },
+ };
+ var vs = (function t(e) {
+ function i(t) {
+ return new xs(t, e);
+ }
+ return (
+ (i.tension = function (e) {
+ return t(+e);
+ }),
+ i
+ );
+ })(0);
+ function ks(t, e, i) {
+ var r = t._x1,
+ n = t._y1,
+ o = t._x2,
+ a = t._y2;
+ if (t._l01_a > La) {
+ var s = 2 * t._l01_2a + 3 * t._l01_a * t._l12_a + t._l12_2a,
+ l = 3 * t._l01_a * (t._l01_a + t._l12_a);
+ (r = (r * s - t._x0 * t._l12_2a + t._x2 * t._l01_2a) / l), (n = (n * s - t._y0 * t._l12_2a + t._y2 * t._l01_2a) / l);
+ }
+ if (t._l23_a > La) {
+ var h = 2 * t._l23_2a + 3 * t._l23_a * t._l12_a + t._l12_2a,
+ c = 3 * t._l23_a * (t._l23_a + t._l12_a);
+ (o = (o * h + t._x1 * t._l23_2a - e * t._l12_2a) / c), (a = (a * h + t._y1 * t._l23_2a - i * t._l12_2a) / c);
+ }
+ t._context.bezierCurveTo(r, n, o, a, t._x2, t._y2);
+ }
+ function Ts(t, e) {
+ (this._context = t), (this._alpha = e);
+ }
+ Ts.prototype = {
+ areaStart: function () {
+ this._line = 0;
+ },
+ areaEnd: function () {
+ this._line = NaN;
+ },
+ lineStart: function () {
+ (this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN),
+ (this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0);
+ },
+ lineEnd: function () {
+ switch (this._point) {
+ case 2:
+ this._context.lineTo(this._x2, this._y2);
+ break;
+ case 3:
+ this.point(this._x2, this._y2);
+ }
+ (this._line || (0 !== this._line && 1 === this._point)) && this._context.closePath(), (this._line = 1 - this._line);
+ },
+ point: function (t, e) {
+ if (((t = +t), (e = +e), this._point)) {
+ var i = this._x2 - t,
+ r = this._y2 - e;
+ this._l23_a = Math.sqrt((this._l23_2a = Math.pow(i * i + r * r, this._alpha)));
+ }
+ switch (this._point) {
+ case 0:
+ (this._point = 1), this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e);
+ break;
+ case 1:
+ this._point = 2;
+ break;
+ case 2:
+ this._point = 3;
+ default:
+ ks(this, t, e);
+ }
+ (this._l01_a = this._l12_a),
+ (this._l12_a = this._l23_a),
+ (this._l01_2a = this._l12_2a),
+ (this._l12_2a = this._l23_2a),
+ (this._x0 = this._x1),
+ (this._x1 = this._x2),
+ (this._x2 = t),
+ (this._y0 = this._y1),
+ (this._y1 = this._y2),
+ (this._y2 = e);
+ },
+ };
+ var ws = (function t(e) {
+ function i(t) {
+ return e ? new Ts(t, e) : new ys(t, 0);
+ }
+ return (
+ (i.alpha = function (e) {
+ return t(+e);
+ }),
+ i
+ );
+ })(0.5);
+ function Ss(t, e) {
+ (this._context = t), (this._alpha = e);
+ }
+ Ss.prototype = {
+ areaStart: rs,
+ areaEnd: rs,
+ lineStart: function () {
+ (this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN),
+ (this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0);
+ },
+ lineEnd: function () {
+ switch (this._point) {
+ case 1:
+ this._context.moveTo(this._x3, this._y3), this._context.closePath();
+ break;
+ case 2:
+ this._context.lineTo(this._x3, this._y3), this._context.closePath();
+ break;
+ case 3:
+ this.point(this._x3, this._y3), this.point(this._x4, this._y4), this.point(this._x5, this._y5);
+ }
+ },
+ point: function (t, e) {
+ if (((t = +t), (e = +e), this._point)) {
+ var i = this._x2 - t,
+ r = this._y2 - e;
+ this._l23_a = Math.sqrt((this._l23_2a = Math.pow(i * i + r * r, this._alpha)));
+ }
+ switch (this._point) {
+ case 0:
+ (this._point = 1), (this._x3 = t), (this._y3 = e);
+ break;
+ case 1:
+ (this._point = 2), this._context.moveTo((this._x4 = t), (this._y4 = e));
+ break;
+ case 2:
+ (this._point = 3), (this._x5 = t), (this._y5 = e);
+ break;
+ default:
+ ks(this, t, e);
+ }
+ (this._l01_a = this._l12_a),
+ (this._l12_a = this._l23_a),
+ (this._l01_2a = this._l12_2a),
+ (this._l12_2a = this._l23_2a),
+ (this._x0 = this._x1),
+ (this._x1 = this._x2),
+ (this._x2 = t),
+ (this._y0 = this._y1),
+ (this._y1 = this._y2),
+ (this._y2 = e);
+ },
+ };
+ var Bs = (function t(e) {
+ function i(t) {
+ return e ? new Ss(t, e) : new bs(t, 0);
+ }
+ return (
+ (i.alpha = function (e) {
+ return t(+e);
+ }),
+ i
+ );
+ })(0.5);
+ function Fs(t, e) {
+ (this._context = t), (this._alpha = e);
+ }
+ Fs.prototype = {
+ areaStart: function () {
+ this._line = 0;
+ },
+ areaEnd: function () {
+ this._line = NaN;
+ },
+ lineStart: function () {
+ (this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN),
+ (this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0);
+ },
+ lineEnd: function () {
+ (this._line || (0 !== this._line && 3 === this._point)) && this._context.closePath(), (this._line = 1 - this._line);
+ },
+ point: function (t, e) {
+ if (((t = +t), (e = +e), this._point)) {
+ var i = this._x2 - t,
+ r = this._y2 - e;
+ this._l23_a = Math.sqrt((this._l23_2a = Math.pow(i * i + r * r, this._alpha)));
+ }
+ switch (this._point) {
+ case 0:
+ this._point = 1;
+ break;
+ case 1:
+ this._point = 2;
+ break;
+ case 2:
+ (this._point = 3), this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2);
+ break;
+ case 3:
+ this._point = 4;
+ default:
+ ks(this, t, e);
+ }
+ (this._l01_a = this._l12_a),
+ (this._l12_a = this._l23_a),
+ (this._l01_2a = this._l12_2a),
+ (this._l12_2a = this._l23_2a),
+ (this._x0 = this._x1),
+ (this._x1 = this._x2),
+ (this._x2 = t),
+ (this._y0 = this._y1),
+ (this._y1 = this._y2),
+ (this._y2 = e);
+ },
+ };
+ var Ls = (function t(e) {
+ function i(t) {
+ return e ? new Fs(t, e) : new xs(t, 0);
+ }
+ return (
+ (i.alpha = function (e) {
+ return t(+e);
+ }),
+ i
+ );
+ })(0.5);
+ function Ms(t) {
+ this._context = t;
+ }
+ function As(t) {
+ return new Ms(t);
+ }
+ function Es(t) {
+ return t < 0 ? -1 : 1;
+ }
+ function Zs(t, e, i) {
+ var r = t._x1 - t._x0,
+ n = e - t._x1,
+ o = (t._y1 - t._y0) / (r || (n < 0 && -0)),
+ a = (i - t._y1) / (n || (r < 0 && -0)),
+ s = (o * n + a * r) / (r + n);
+ return (Es(o) + Es(a)) * Math.min(Math.abs(o), Math.abs(a), 0.5 * Math.abs(s)) || 0;
+ }
+ function Os(t, e) {
+ var i = t._x1 - t._x0;
+ return i ? ((3 * (t._y1 - t._y0)) / i - e) / 2 : e;
+ }
+ function qs(t, e, i) {
+ var r = t._x0,
+ n = t._y0,
+ o = t._x1,
+ a = t._y1,
+ s = (o - r) / 3;
+ t._context.bezierCurveTo(r + s, n + s * e, o - s, a - s * i, o, a);
+ }
+ function Is(t) {
+ this._context = t;
+ }
+ function Ns(t) {
+ this._context = new Ds(t);
+ }
+ function Ds(t) {
+ this._context = t;
+ }
+ function $s(t) {
+ return new Is(t);
+ }
+ function zs(t) {
+ return new Ns(t);
+ }
+ function js(t) {
+ this._context = t;
+ }
+ function Ps(t) {
+ var e,
+ i,
+ r = t.length - 1,
+ n = new Array(r),
+ o = new Array(r),
+ a = new Array(r);
+ for (n[0] = 0, o[0] = 2, a[0] = t[0] + 2 * t[1], e = 1; e < r - 1; ++e) (n[e] = 1), (o[e] = 4), (a[e] = 4 * t[e] + 2 * t[e + 1]);
+ for (n[r - 1] = 2, o[r - 1] = 7, a[r - 1] = 8 * t[r - 1] + t[r], e = 1; e < r; ++e)
+ (i = n[e] / o[e - 1]), (o[e] -= i), (a[e] -= i * a[e - 1]);
+ for (n[r - 1] = a[r - 1] / o[r - 1], e = r - 2; e >= 0; --e) n[e] = (a[e] - n[e + 1]) / o[e];
+ for (o[r - 1] = (t[r] + n[r - 1]) / 2, e = 0; e < r - 1; ++e) o[e] = 2 * t[e + 1] - n[e + 1];
+ return [n, o];
+ }
+ function Rs(t) {
+ return new js(t);
+ }
+ function Ws(t, e) {
+ (this._context = t), (this._t = e);
+ }
+ function Us(t) {
+ return new Ws(t, 0.5);
+ }
+ function Hs(t) {
+ return new Ws(t, 0);
+ }
+ function Ys(t) {
+ return new Ws(t, 1);
+ }
+ function Vs(t, e, i) {
+ (this.k = t), (this.x = e), (this.y = i);
+ }
+ (Ms.prototype = {
+ areaStart: rs,
+ areaEnd: rs,
+ lineStart: function () {
+ this._point = 0;
+ },
+ lineEnd: function () {
+ this._point && this._context.closePath();
+ },
+ point: function (t, e) {
+ (t = +t), (e = +e), this._point ? this._context.lineTo(t, e) : ((this._point = 1), this._context.moveTo(t, e));
+ },
+ }),
+ (Is.prototype = {
+ areaStart: function () {
+ this._line = 0;
+ },
+ areaEnd: function () {
+ this._line = NaN;
+ },
+ lineStart: function () {
+ (this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN), (this._point = 0);
+ },
+ lineEnd: function () {
+ switch (this._point) {
+ case 2:
+ this._context.lineTo(this._x1, this._y1);
+ break;
+ case 3:
+ qs(this, this._t0, Os(this, this._t0));
+ }
+ (this._line || (0 !== this._line && 1 === this._point)) && this._context.closePath(), (this._line = 1 - this._line);
+ },
+ point: function (t, e) {
+ var i = NaN;
+ if (((e = +e), (t = +t) !== this._x1 || e !== this._y1)) {
+ switch (this._point) {
+ case 0:
+ (this._point = 1), this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e);
+ break;
+ case 1:
+ this._point = 2;
+ break;
+ case 2:
+ (this._point = 3), qs(this, Os(this, (i = Zs(this, t, e))), i);
+ break;
+ default:
+ qs(this, this._t0, (i = Zs(this, t, e)));
+ }
+ (this._x0 = this._x1), (this._x1 = t), (this._y0 = this._y1), (this._y1 = e), (this._t0 = i);
+ }
+ },
+ }),
+ ((Ns.prototype = Object.create(Is.prototype)).point = function (t, e) {
+ Is.prototype.point.call(this, e, t);
+ }),
+ (Ds.prototype = {
+ moveTo: function (t, e) {
+ this._context.moveTo(e, t);
+ },
+ closePath: function () {
+ this._context.closePath();
+ },
+ lineTo: function (t, e) {
+ this._context.lineTo(e, t);
+ },
+ bezierCurveTo: function (t, e, i, r, n, o) {
+ this._context.bezierCurveTo(e, t, r, i, o, n);
+ },
+ }),
+ (js.prototype = {
+ areaStart: function () {
+ this._line = 0;
+ },
+ areaEnd: function () {
+ this._line = NaN;
+ },
+ lineStart: function () {
+ (this._x = []), (this._y = []);
+ },
+ lineEnd: function () {
+ var t = this._x,
+ e = this._y,
+ i = t.length;
+ if (i)
+ if ((this._line ? this._context.lineTo(t[0], e[0]) : this._context.moveTo(t[0], e[0]), 2 === i)) this._context.lineTo(t[1], e[1]);
+ else
+ for (var r = Ps(t), n = Ps(e), o = 0, a = 1; a < i; ++o, ++a)
+ this._context.bezierCurveTo(r[0][o], n[0][o], r[1][o], n[1][o], t[a], e[a]);
+ (this._line || (0 !== this._line && 1 === i)) && this._context.closePath(), (this._line = 1 - this._line), (this._x = this._y = null);
+ },
+ point: function (t, e) {
+ this._x.push(+t), this._y.push(+e);
+ },
+ }),
+ (Ws.prototype = {
+ areaStart: function () {
+ this._line = 0;
+ },
+ areaEnd: function () {
+ this._line = NaN;
+ },
+ lineStart: function () {
+ (this._x = this._y = NaN), (this._point = 0);
+ },
+ lineEnd: function () {
+ 0 < this._t && this._t < 1 && 2 === this._point && this._context.lineTo(this._x, this._y),
+ (this._line || (0 !== this._line && 1 === this._point)) && this._context.closePath(),
+ this._line >= 0 && ((this._t = 1 - this._t), (this._line = 1 - this._line));
+ },
+ point: function (t, e) {
+ switch (((t = +t), (e = +e), this._point)) {
+ case 0:
+ (this._point = 1), this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e);
+ break;
+ case 1:
+ this._point = 2;
+ default:
+ if (this._t <= 0) this._context.lineTo(this._x, e), this._context.lineTo(t, e);
+ else {
+ var i = this._x * (1 - this._t) + t * this._t;
+ this._context.lineTo(i, this._y), this._context.lineTo(i, e);
+ }
+ }
+ (this._x = t), (this._y = e);
+ },
+ }),
+ (Vs.prototype = {
+ constructor: Vs,
+ scale: function (t) {
+ return 1 === t ? this : new Vs(this.k * t, this.x, this.y);
+ },
+ translate: function (t, e) {
+ return (0 === t) & (0 === e) ? this : new Vs(this.k, this.x + this.k * t, this.y + this.k * e);
+ },
+ apply: function (t) {
+ return [t[0] * this.k + this.x, t[1] * this.k + this.y];
+ },
+ applyX: function (t) {
+ return t * this.k + this.x;
+ },
+ applyY: function (t) {
+ return t * this.k + this.y;
+ },
+ invert: function (t) {
+ return [(t[0] - this.x) / this.k, (t[1] - this.y) / this.k];
+ },
+ invertX: function (t) {
+ return (t - this.x) / this.k;
+ },
+ invertY: function (t) {
+ return (t - this.y) / this.k;
+ },
+ rescaleX: function (t) {
+ return t.copy().domain(t.range().map(this.invertX, this).map(t.invert, t));
+ },
+ rescaleY: function (t) {
+ return t.copy().domain(t.range().map(this.invertY, this).map(t.invert, t));
+ },
+ toString: function () {
+ return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")";
+ },
+ }),
+ new Vs(1, 0, 0),
+ Vs.prototype;
+ },
+ 4549: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return o;
+ },
+ });
+ var r = i(5971),
+ n = i(2142),
+ o = new (class {
+ constructor(t, e) {
+ (this.color = e),
+ (this.changed = !1),
+ (this.data = t),
+ (this.type = new (class {
+ constructor() {
+ this.type = n.w.ALL;
+ }
+ get() {
+ return this.type;
+ }
+ set(t) {
+ if (this.type && this.type !== t) throw new Error("Cannot change both RGB and HSL channels at the same time");
+ this.type = t;
+ }
+ reset() {
+ this.type = n.w.ALL;
+ }
+ is(t) {
+ return this.type === t;
+ }
+ })());
+ }
+ set(t, e) {
+ return (this.color = e), (this.changed = !1), (this.data = t), (this.type.type = n.w.ALL), this;
+ }
+ _ensureHSL() {
+ const t = this.data,
+ { h: e, s: i, l: n } = t;
+ void 0 === e && (t.h = r.Z.channel.rgb2hsl(t, "h")),
+ void 0 === i && (t.s = r.Z.channel.rgb2hsl(t, "s")),
+ void 0 === n && (t.l = r.Z.channel.rgb2hsl(t, "l"));
+ }
+ _ensureRGB() {
+ const t = this.data,
+ { r: e, g: i, b: n } = t;
+ void 0 === e && (t.r = r.Z.channel.hsl2rgb(t, "r")),
+ void 0 === i && (t.g = r.Z.channel.hsl2rgb(t, "g")),
+ void 0 === n && (t.b = r.Z.channel.hsl2rgb(t, "b"));
+ }
+ get r() {
+ const t = this.data,
+ e = t.r;
+ return this.type.is(n.w.HSL) || void 0 === e ? (this._ensureHSL(), r.Z.channel.hsl2rgb(t, "r")) : e;
+ }
+ get g() {
+ const t = this.data,
+ e = t.g;
+ return this.type.is(n.w.HSL) || void 0 === e ? (this._ensureHSL(), r.Z.channel.hsl2rgb(t, "g")) : e;
+ }
+ get b() {
+ const t = this.data,
+ e = t.b;
+ return this.type.is(n.w.HSL) || void 0 === e ? (this._ensureHSL(), r.Z.channel.hsl2rgb(t, "b")) : e;
+ }
+ get h() {
+ const t = this.data,
+ e = t.h;
+ return this.type.is(n.w.RGB) || void 0 === e ? (this._ensureRGB(), r.Z.channel.rgb2hsl(t, "h")) : e;
+ }
+ get s() {
+ const t = this.data,
+ e = t.s;
+ return this.type.is(n.w.RGB) || void 0 === e ? (this._ensureRGB(), r.Z.channel.rgb2hsl(t, "s")) : e;
+ }
+ get l() {
+ const t = this.data,
+ e = t.l;
+ return this.type.is(n.w.RGB) || void 0 === e ? (this._ensureRGB(), r.Z.channel.rgb2hsl(t, "l")) : e;
+ }
+ get a() {
+ return this.data.a;
+ }
+ set r(t) {
+ this.type.set(n.w.RGB), (this.changed = !0), (this.data.r = t);
+ }
+ set g(t) {
+ this.type.set(n.w.RGB), (this.changed = !0), (this.data.g = t);
+ }
+ set b(t) {
+ this.type.set(n.w.RGB), (this.changed = !0), (this.data.b = t);
+ }
+ set h(t) {
+ this.type.set(n.w.HSL), (this.changed = !0), (this.data.h = t);
+ }
+ set s(t) {
+ this.type.set(n.w.HSL), (this.changed = !0), (this.data.s = t);
+ }
+ set l(t) {
+ this.type.set(n.w.HSL), (this.changed = !0), (this.data.l = t);
+ }
+ set a(t) {
+ (this.changed = !0), (this.data.a = t);
+ }
+ })({ r: 0, g: 0, b: 0, a: 0 }, "transparent");
+ },
+ 1767: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return g;
+ },
+ });
+ var r = i(4549),
+ n = i(2142);
+ const o = {
+ re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,
+ parse: (t) => {
+ if (35 !== t.charCodeAt(0)) return;
+ const e = t.match(o.re);
+ if (!e) return;
+ const i = e[1],
+ n = parseInt(i, 16),
+ a = i.length,
+ s = a % 4 == 0,
+ l = a > 4,
+ h = l ? 1 : 17,
+ c = l ? 8 : 4,
+ u = s ? 0 : -1,
+ f = l ? 255 : 15;
+ return r.Z.set(
+ {
+ r: ((n >> (c * (u + 3))) & f) * h,
+ g: ((n >> (c * (u + 2))) & f) * h,
+ b: ((n >> (c * (u + 1))) & f) * h,
+ a: s ? ((n & f) * h) / 255 : 1,
+ },
+ t,
+ );
+ },
+ stringify: (t) => {
+ const { r: e, g: i, b: r, a: o } = t;
+ return o < 1
+ ? `#${n.Q[Math.round(e)]}${n.Q[Math.round(i)]}${n.Q[Math.round(r)]}${n.Q[Math.round(255 * o)]}`
+ : `#${n.Q[Math.round(e)]}${n.Q[Math.round(i)]}${n.Q[Math.round(r)]}`;
+ },
+ };
+ var a = o,
+ s = i(5971);
+ const l = {
+ re: /^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,
+ hueRe: /^(.+?)(deg|grad|rad|turn)$/i,
+ _hue2deg: (t) => {
+ const e = t.match(l.hueRe);
+ if (e) {
+ const [, t, i] = e;
+ switch (i) {
+ case "grad":
+ return s.Z.channel.clamp.h(0.9 * parseFloat(t));
+ case "rad":
+ return s.Z.channel.clamp.h((180 * parseFloat(t)) / Math.PI);
+ case "turn":
+ return s.Z.channel.clamp.h(360 * parseFloat(t));
+ }
+ }
+ return s.Z.channel.clamp.h(parseFloat(t));
+ },
+ parse: (t) => {
+ const e = t.charCodeAt(0);
+ if (104 !== e && 72 !== e) return;
+ const i = t.match(l.re);
+ if (!i) return;
+ const [, n, o, a, h, c] = i;
+ return r.Z.set(
+ {
+ h: l._hue2deg(n),
+ s: s.Z.channel.clamp.s(parseFloat(o)),
+ l: s.Z.channel.clamp.l(parseFloat(a)),
+ a: h ? s.Z.channel.clamp.a(c ? parseFloat(h) / 100 : parseFloat(h)) : 1,
+ },
+ t,
+ );
+ },
+ stringify: (t) => {
+ const { h: e, s: i, l: r, a: n } = t;
+ return n < 1
+ ? `hsla(${s.Z.lang.round(e)}, ${s.Z.lang.round(i)}%, ${s.Z.lang.round(r)}%, ${n})`
+ : `hsl(${s.Z.lang.round(e)}, ${s.Z.lang.round(i)}%, ${s.Z.lang.round(r)}%)`;
+ },
+ };
+ var h = l;
+ const c = {
+ colors: {
+ aliceblue: "#f0f8ff",
+ antiquewhite: "#faebd7",
+ aqua: "#00ffff",
+ aquamarine: "#7fffd4",
+ azure: "#f0ffff",
+ beige: "#f5f5dc",
+ bisque: "#ffe4c4",
+ black: "#000000",
+ blanchedalmond: "#ffebcd",
+ blue: "#0000ff",
+ blueviolet: "#8a2be2",
+ brown: "#a52a2a",
+ burlywood: "#deb887",
+ cadetblue: "#5f9ea0",
+ chartreuse: "#7fff00",
+ chocolate: "#d2691e",
+ coral: "#ff7f50",
+ cornflowerblue: "#6495ed",
+ cornsilk: "#fff8dc",
+ crimson: "#dc143c",
+ cyanaqua: "#00ffff",
+ darkblue: "#00008b",
+ darkcyan: "#008b8b",
+ darkgoldenrod: "#b8860b",
+ darkgray: "#a9a9a9",
+ darkgreen: "#006400",
+ darkgrey: "#a9a9a9",
+ darkkhaki: "#bdb76b",
+ darkmagenta: "#8b008b",
+ darkolivegreen: "#556b2f",
+ darkorange: "#ff8c00",
+ darkorchid: "#9932cc",
+ darkred: "#8b0000",
+ darksalmon: "#e9967a",
+ darkseagreen: "#8fbc8f",
+ darkslateblue: "#483d8b",
+ darkslategray: "#2f4f4f",
+ darkslategrey: "#2f4f4f",
+ darkturquoise: "#00ced1",
+ darkviolet: "#9400d3",
+ deeppink: "#ff1493",
+ deepskyblue: "#00bfff",
+ dimgray: "#696969",
+ dimgrey: "#696969",
+ dodgerblue: "#1e90ff",
+ firebrick: "#b22222",
+ floralwhite: "#fffaf0",
+ forestgreen: "#228b22",
+ fuchsia: "#ff00ff",
+ gainsboro: "#dcdcdc",
+ ghostwhite: "#f8f8ff",
+ gold: "#ffd700",
+ goldenrod: "#daa520",
+ gray: "#808080",
+ green: "#008000",
+ greenyellow: "#adff2f",
+ grey: "#808080",
+ honeydew: "#f0fff0",
+ hotpink: "#ff69b4",
+ indianred: "#cd5c5c",
+ indigo: "#4b0082",
+ ivory: "#fffff0",
+ khaki: "#f0e68c",
+ lavender: "#e6e6fa",
+ lavenderblush: "#fff0f5",
+ lawngreen: "#7cfc00",
+ lemonchiffon: "#fffacd",
+ lightblue: "#add8e6",
+ lightcoral: "#f08080",
+ lightcyan: "#e0ffff",
+ lightgoldenrodyellow: "#fafad2",
+ lightgray: "#d3d3d3",
+ lightgreen: "#90ee90",
+ lightgrey: "#d3d3d3",
+ lightpink: "#ffb6c1",
+ lightsalmon: "#ffa07a",
+ lightseagreen: "#20b2aa",
+ lightskyblue: "#87cefa",
+ lightslategray: "#778899",
+ lightslategrey: "#778899",
+ lightsteelblue: "#b0c4de",
+ lightyellow: "#ffffe0",
+ lime: "#00ff00",
+ limegreen: "#32cd32",
+ linen: "#faf0e6",
+ magenta: "#ff00ff",
+ maroon: "#800000",
+ mediumaquamarine: "#66cdaa",
+ mediumblue: "#0000cd",
+ mediumorchid: "#ba55d3",
+ mediumpurple: "#9370db",
+ mediumseagreen: "#3cb371",
+ mediumslateblue: "#7b68ee",
+ mediumspringgreen: "#00fa9a",
+ mediumturquoise: "#48d1cc",
+ mediumvioletred: "#c71585",
+ midnightblue: "#191970",
+ mintcream: "#f5fffa",
+ mistyrose: "#ffe4e1",
+ moccasin: "#ffe4b5",
+ navajowhite: "#ffdead",
+ navy: "#000080",
+ oldlace: "#fdf5e6",
+ olive: "#808000",
+ olivedrab: "#6b8e23",
+ orange: "#ffa500",
+ orangered: "#ff4500",
+ orchid: "#da70d6",
+ palegoldenrod: "#eee8aa",
+ palegreen: "#98fb98",
+ paleturquoise: "#afeeee",
+ palevioletred: "#db7093",
+ papayawhip: "#ffefd5",
+ peachpuff: "#ffdab9",
+ peru: "#cd853f",
+ pink: "#ffc0cb",
+ plum: "#dda0dd",
+ powderblue: "#b0e0e6",
+ purple: "#800080",
+ rebeccapurple: "#663399",
+ red: "#ff0000",
+ rosybrown: "#bc8f8f",
+ royalblue: "#4169e1",
+ saddlebrown: "#8b4513",
+ salmon: "#fa8072",
+ sandybrown: "#f4a460",
+ seagreen: "#2e8b57",
+ seashell: "#fff5ee",
+ sienna: "#a0522d",
+ silver: "#c0c0c0",
+ skyblue: "#87ceeb",
+ slateblue: "#6a5acd",
+ slategray: "#708090",
+ slategrey: "#708090",
+ snow: "#fffafa",
+ springgreen: "#00ff7f",
+ tan: "#d2b48c",
+ teal: "#008080",
+ thistle: "#d8bfd8",
+ transparent: "#00000000",
+ turquoise: "#40e0d0",
+ violet: "#ee82ee",
+ wheat: "#f5deb3",
+ white: "#ffffff",
+ whitesmoke: "#f5f5f5",
+ yellow: "#ffff00",
+ yellowgreen: "#9acd32",
+ },
+ parse: (t) => {
+ t = t.toLowerCase();
+ const e = c.colors[t];
+ if (e) return a.parse(e);
+ },
+ stringify: (t) => {
+ const e = a.stringify(t);
+ for (const t in c.colors) if (c.colors[t] === e) return t;
+ },
+ };
+ var u = c;
+ const f = {
+ re: /^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,
+ parse: (t) => {
+ const e = t.charCodeAt(0);
+ if (114 !== e && 82 !== e) return;
+ const i = t.match(f.re);
+ if (!i) return;
+ const [, n, o, a, l, h, c, u, d] = i;
+ return r.Z.set(
+ {
+ r: s.Z.channel.clamp.r(o ? 2.55 * parseFloat(n) : parseFloat(n)),
+ g: s.Z.channel.clamp.g(l ? 2.55 * parseFloat(a) : parseFloat(a)),
+ b: s.Z.channel.clamp.b(c ? 2.55 * parseFloat(h) : parseFloat(h)),
+ a: u ? s.Z.channel.clamp.a(d ? parseFloat(u) / 100 : parseFloat(u)) : 1,
+ },
+ t,
+ );
+ },
+ stringify: (t) => {
+ const { r: e, g: i, b: r, a: n } = t;
+ return n < 1
+ ? `rgba(${s.Z.lang.round(e)}, ${s.Z.lang.round(i)}, ${s.Z.lang.round(r)}, ${s.Z.lang.round(n)})`
+ : `rgb(${s.Z.lang.round(e)}, ${s.Z.lang.round(i)}, ${s.Z.lang.round(r)})`;
+ },
+ };
+ var d = f;
+ const p = {
+ format: { keyword: c, hex: a, rgb: f, rgba: f, hsl: l, hsla: l },
+ parse: (t) => {
+ if ("string" != typeof t) return t;
+ const e = a.parse(t) || d.parse(t) || h.parse(t) || u.parse(t);
+ if (e) return e;
+ throw new Error(`Unsupported color format: "${t}"`);
+ },
+ stringify: (t) =>
+ !t.changed && t.color
+ ? t.color
+ : t.type.is(n.w.HSL) || void 0 === t.data.r
+ ? h.stringify(t)
+ : t.a < 1 || !Number.isInteger(t.r) || !Number.isInteger(t.g) || !Number.isInteger(t.b)
+ ? d.stringify(t)
+ : a.stringify(t),
+ };
+ var g = p;
+ },
+ 2142: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Q: function () {
+ return n;
+ },
+ w: function () {
+ return o;
+ },
+ });
+ var r = i(5971);
+ const n = {};
+ for (let t = 0; t <= 255; t++) n[t] = r.Z.unit.dec2hex(t);
+ const o = { ALL: 0, RGB: 1, HSL: 2 };
+ },
+ 6174: function (t, e, i) {
+ "use strict";
+ var r = i(5971),
+ n = i(1767);
+ e.Z = (t, e, i) => {
+ const o = n.Z.parse(t),
+ a = o[e],
+ s = r.Z.channel.clamp[e](a + i);
+ return a !== s && (o[e] = s), n.Z.stringify(o);
+ };
+ },
+ 3438: function (t, e, i) {
+ "use strict";
+ var r = i(5971),
+ n = i(1767);
+ e.Z = (t, e) => {
+ const i = n.Z.parse(t);
+ for (const t in e) i[t] = r.Z.channel.clamp[t](e[t]);
+ return n.Z.stringify(i);
+ };
+ },
+ 7201: function (t, e, i) {
+ "use strict";
+ var r = i(6174);
+ e.Z = (t, e) => (0, r.Z)(t, "l", -e);
+ },
+ 6500: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return a;
+ },
+ });
+ var r = i(5971),
+ n = i(1767),
+ o = (t) =>
+ ((t) => {
+ const { r: e, g: i, b: o } = n.Z.parse(t),
+ a = 0.2126 * r.Z.channel.toLinear(e) + 0.7152 * r.Z.channel.toLinear(i) + 0.0722 * r.Z.channel.toLinear(o);
+ return r.Z.lang.round(a);
+ })(t) >= 0.5,
+ a = (t) => !o(t);
+ },
+ 2281: function (t, e, i) {
+ "use strict";
+ var r = i(6174);
+ e.Z = (t, e) => (0, r.Z)(t, "l", e);
+ },
+ 1117: function (t, e, i) {
+ "use strict";
+ var r = i(5971),
+ n = i(4549),
+ o = i(1767),
+ a = i(3438);
+ e.Z = (t, e, i = 0, s = 1) => {
+ if ("number" != typeof t) return (0, a.Z)(t, { a: e });
+ const l = n.Z.set({
+ r: r.Z.channel.clamp.r(t),
+ g: r.Z.channel.clamp.g(e),
+ b: r.Z.channel.clamp.b(i),
+ a: r.Z.channel.clamp.a(s),
+ });
+ return o.Z.stringify(l);
+ };
+ },
+ 5971: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return n;
+ },
+ });
+ const r = {
+ min: { r: 0, g: 0, b: 0, s: 0, l: 0, a: 0 },
+ max: { r: 255, g: 255, b: 255, h: 360, s: 100, l: 100, a: 1 },
+ clamp: {
+ r: (t) => (t >= 255 ? 255 : t < 0 ? 0 : t),
+ g: (t) => (t >= 255 ? 255 : t < 0 ? 0 : t),
+ b: (t) => (t >= 255 ? 255 : t < 0 ? 0 : t),
+ h: (t) => t % 360,
+ s: (t) => (t >= 100 ? 100 : t < 0 ? 0 : t),
+ l: (t) => (t >= 100 ? 100 : t < 0 ? 0 : t),
+ a: (t) => (t >= 1 ? 1 : t < 0 ? 0 : t),
+ },
+ toLinear: (t) => {
+ const e = t / 255;
+ return t > 0.03928 ? Math.pow((e + 0.055) / 1.055, 2.4) : e / 12.92;
+ },
+ hue2rgb: (t, e, i) => (
+ i < 0 && (i += 1), i > 1 && (i -= 1), i < 1 / 6 ? t + 6 * (e - t) * i : i < 0.5 ? e : i < 2 / 3 ? t + (e - t) * (2 / 3 - i) * 6 : t
+ ),
+ hsl2rgb: ({ h: t, s: e, l: i }, n) => {
+ if (!e) return 2.55 * i;
+ (t /= 360), (e /= 100);
+ const o = (i /= 100) < 0.5 ? i * (1 + e) : i + e - i * e,
+ a = 2 * i - o;
+ switch (n) {
+ case "r":
+ return 255 * r.hue2rgb(a, o, t + 1 / 3);
+ case "g":
+ return 255 * r.hue2rgb(a, o, t);
+ case "b":
+ return 255 * r.hue2rgb(a, o, t - 1 / 3);
+ }
+ },
+ rgb2hsl: ({ r: t, g: e, b: i }, r) => {
+ (t /= 255), (e /= 255), (i /= 255);
+ const n = Math.max(t, e, i),
+ o = Math.min(t, e, i),
+ a = (n + o) / 2;
+ if ("l" === r) return 100 * a;
+ if (n === o) return 0;
+ const s = n - o;
+ if ("s" === r) return 100 * (a > 0.5 ? s / (2 - n - o) : s / (n + o));
+ switch (n) {
+ case t:
+ return 60 * ((e - i) / s + (e < i ? 6 : 0));
+ case e:
+ return 60 * ((i - t) / s + 2);
+ case i:
+ return 60 * ((t - e) / s + 4);
+ default:
+ return -1;
+ }
+ },
+ };
+ var n = {
+ channel: r,
+ lang: {
+ clamp: (t, e, i) => (e > i ? Math.min(e, Math.max(i, t)) : Math.min(i, Math.max(e, t))),
+ round: (t) => Math.round(1e10 * t) / 1e10,
+ },
+ unit: {
+ dec2hex: (t) => {
+ const e = Math.round(t).toString(16);
+ return e.length > 1 ? e : `0${e}`;
+ },
+ },
+ };
+ },
+ 2536: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return s;
+ },
+ });
+ var r = i(9651),
+ n = function (t, e) {
+ for (var i = t.length; i--; ) if ((0, r.Z)(t[i][0], e)) return i;
+ return -1;
+ },
+ o = Array.prototype.splice;
+ function a(t) {
+ var e = -1,
+ i = null == t ? 0 : t.length;
+ for (this.clear(); ++e < i; ) {
+ var r = t[e];
+ this.set(r[0], r[1]);
+ }
+ }
+ (a.prototype.clear = function () {
+ (this.__data__ = []), (this.size = 0);
+ }),
+ (a.prototype.delete = function (t) {
+ var e = this.__data__,
+ i = n(e, t);
+ return !(i < 0 || (i == e.length - 1 ? e.pop() : o.call(e, i, 1), --this.size, 0));
+ }),
+ (a.prototype.get = function (t) {
+ var e = this.__data__,
+ i = n(e, t);
+ return i < 0 ? void 0 : e[i][1];
+ }),
+ (a.prototype.has = function (t) {
+ return n(this.__data__, t) > -1;
+ }),
+ (a.prototype.set = function (t, e) {
+ var i = this.__data__,
+ r = n(i, t);
+ return r < 0 ? (++this.size, i.push([t, e])) : (i[r][1] = e), this;
+ });
+ var s = a;
+ },
+ 6183: function (t, e, i) {
+ "use strict";
+ var r = i(2119),
+ n = i(6092),
+ o = (0, r.Z)(n.Z, "Map");
+ e.Z = o;
+ },
+ 520: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return f;
+ },
+ });
+ var r = (0, i(2119).Z)(Object, "create"),
+ n = Object.prototype.hasOwnProperty,
+ o = Object.prototype.hasOwnProperty;
+ function a(t) {
+ var e = -1,
+ i = null == t ? 0 : t.length;
+ for (this.clear(); ++e < i; ) {
+ var r = t[e];
+ this.set(r[0], r[1]);
+ }
+ }
+ (a.prototype.clear = function () {
+ (this.__data__ = r ? r(null) : {}), (this.size = 0);
+ }),
+ (a.prototype.delete = function (t) {
+ var e = this.has(t) && delete this.__data__[t];
+ return (this.size -= e ? 1 : 0), e;
+ }),
+ (a.prototype.get = function (t) {
+ var e = this.__data__;
+ if (r) {
+ var i = e[t];
+ return "__lodash_hash_undefined__" === i ? void 0 : i;
+ }
+ return n.call(e, t) ? e[t] : void 0;
+ }),
+ (a.prototype.has = function (t) {
+ var e = this.__data__;
+ return r ? void 0 !== e[t] : o.call(e, t);
+ }),
+ (a.prototype.set = function (t, e) {
+ var i = this.__data__;
+ return (this.size += this.has(t) ? 0 : 1), (i[t] = r && void 0 === e ? "__lodash_hash_undefined__" : e), this;
+ });
+ var s = a,
+ l = i(2536),
+ h = i(6183),
+ c = function (t, e) {
+ var i,
+ r,
+ n = t.__data__;
+ return ("string" == (r = typeof (i = e)) || "number" == r || "symbol" == r || "boolean" == r ? "__proto__" !== i : null === i)
+ ? n["string" == typeof e ? "string" : "hash"]
+ : n.map;
+ };
+ function u(t) {
+ var e = -1,
+ i = null == t ? 0 : t.length;
+ for (this.clear(); ++e < i; ) {
+ var r = t[e];
+ this.set(r[0], r[1]);
+ }
+ }
+ (u.prototype.clear = function () {
+ (this.size = 0), (this.__data__ = { hash: new s(), map: new (h.Z || l.Z)(), string: new s() });
+ }),
+ (u.prototype.delete = function (t) {
+ var e = c(this, t).delete(t);
+ return (this.size -= e ? 1 : 0), e;
+ }),
+ (u.prototype.get = function (t) {
+ return c(this, t).get(t);
+ }),
+ (u.prototype.has = function (t) {
+ return c(this, t).has(t);
+ }),
+ (u.prototype.set = function (t, e) {
+ var i = c(this, t),
+ r = i.size;
+ return i.set(t, e), (this.size += i.size == r ? 0 : 1), this;
+ });
+ var f = u;
+ },
+ 3203: function (t, e, i) {
+ "use strict";
+ var r = i(2119),
+ n = i(6092),
+ o = (0, r.Z)(n.Z, "Set");
+ e.Z = o;
+ },
+ 5365: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return s;
+ },
+ });
+ var r = i(2536),
+ n = i(6183),
+ o = i(520);
+ function a(t) {
+ var e = (this.__data__ = new r.Z(t));
+ this.size = e.size;
+ }
+ (a.prototype.clear = function () {
+ (this.__data__ = new r.Z()), (this.size = 0);
+ }),
+ (a.prototype.delete = function (t) {
+ var e = this.__data__,
+ i = e.delete(t);
+ return (this.size = e.size), i;
+ }),
+ (a.prototype.get = function (t) {
+ return this.__data__.get(t);
+ }),
+ (a.prototype.has = function (t) {
+ return this.__data__.has(t);
+ }),
+ (a.prototype.set = function (t, e) {
+ var i = this.__data__;
+ if (i instanceof r.Z) {
+ var a = i.__data__;
+ if (!n.Z || a.length < 199) return a.push([t, e]), (this.size = ++i.size), this;
+ i = this.__data__ = new o.Z(a);
+ }
+ return i.set(t, e), (this.size = i.size), this;
+ });
+ var s = a;
+ },
+ 7685: function (t, e, i) {
+ "use strict";
+ var r = i(6092).Z.Symbol;
+ e.Z = r;
+ },
+ 4073: function (t, e, i) {
+ "use strict";
+ var r = i(6092).Z.Uint8Array;
+ e.Z = r;
+ },
+ 9001: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return h;
+ },
+ });
+ var r = i(4732),
+ n = i(7771),
+ o = i(6706),
+ a = i(6009),
+ s = i(7212),
+ l = Object.prototype.hasOwnProperty,
+ h = function (t, e) {
+ var i = (0, n.Z)(t),
+ h = !i && (0, r.Z)(t),
+ c = !i && !h && (0, o.Z)(t),
+ u = !i && !h && !c && (0, s.Z)(t),
+ f = i || h || c || u,
+ d = f
+ ? (function (t, e) {
+ for (var i = -1, r = Array(t); ++i < t; ) r[i] = e(i);
+ return r;
+ })(t.length, String)
+ : [],
+ p = d.length;
+ for (var g in t)
+ (!e && !l.call(t, g)) ||
+ (f &&
+ ("length" == g ||
+ (c && ("offset" == g || "parent" == g)) ||
+ (u && ("buffer" == g || "byteLength" == g || "byteOffset" == g)) ||
+ (0, a.Z)(g, p))) ||
+ d.push(g);
+ return d;
+ };
+ },
+ 2954: function (t, e, i) {
+ "use strict";
+ var r = i(4752),
+ n = i(9651),
+ o = Object.prototype.hasOwnProperty;
+ e.Z = function (t, e, i) {
+ var a = t[e];
+ (o.call(t, e) && (0, n.Z)(a, i) && (void 0 !== i || e in t)) || (0, r.Z)(t, e, i);
+ };
+ },
+ 4752: function (t, e, i) {
+ "use strict";
+ var r = i(7904);
+ e.Z = function (t, e, i) {
+ "__proto__" == e && r.Z ? (0, r.Z)(t, e, { configurable: !0, enumerable: !0, value: i, writable: !0 }) : (t[e] = i);
+ };
+ },
+ 5381: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return r;
+ },
+ });
+ var r = function (t, e, i) {
+ for (var r = -1, n = Object(t), o = i(t), a = o.length; a--; ) {
+ var s = o[++r];
+ if (!1 === e(n[s], s, n)) break;
+ }
+ return t;
+ };
+ },
+ 1922: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return c;
+ },
+ });
+ var r = i(7685),
+ n = Object.prototype,
+ o = n.hasOwnProperty,
+ a = n.toString,
+ s = r.Z ? r.Z.toStringTag : void 0,
+ l = Object.prototype.toString,
+ h = r.Z ? r.Z.toStringTag : void 0,
+ c = function (t) {
+ return null == t
+ ? void 0 === t
+ ? "[object Undefined]"
+ : "[object Null]"
+ : h && h in Object(t)
+ ? (function (t) {
+ var e = o.call(t, s),
+ i = t[s];
+ try {
+ t[s] = void 0;
+ var r = !0;
+ } catch (t) {}
+ var n = a.call(t);
+ return r && (e ? (t[s] = i) : delete t[s]), n;
+ })(t)
+ : (function (t) {
+ return l.call(t);
+ })(t);
+ };
+ },
+ 8448: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return a;
+ },
+ });
+ var r = i(2764),
+ n = (0, i(1851).Z)(Object.keys, Object),
+ o = Object.prototype.hasOwnProperty,
+ a = function (t) {
+ if (!(0, r.Z)(t)) return n(t);
+ var e = [];
+ for (var i in Object(t)) o.call(t, i) && "constructor" != i && e.push(i);
+ return e;
+ };
+ },
+ 9581: function (t, e, i) {
+ "use strict";
+ var r = i(9203),
+ n = i(3948),
+ o = i(3626);
+ e.Z = function (t, e) {
+ return (0, o.Z)((0, n.Z)(t, e, r.Z), t + "");
+ };
+ },
+ 1162: function (t, e) {
+ "use strict";
+ e.Z = function (t) {
+ return function (e) {
+ return t(e);
+ };
+ };
+ },
+ 1884: function (t, e, i) {
+ "use strict";
+ var r = i(4073);
+ e.Z = function (t) {
+ var e = new t.constructor(t.byteLength);
+ return new r.Z(e).set(new r.Z(t)), e;
+ };
+ },
+ 1050: function (t, e, i) {
+ "use strict";
+ var r = i(6092),
+ n = "object" == typeof exports && exports && !exports.nodeType && exports,
+ o = n && "object" == typeof module && module && !module.nodeType && module,
+ a = o && o.exports === n ? r.Z.Buffer : void 0,
+ s = a ? a.allocUnsafe : void 0;
+ e.Z = function (t, e) {
+ if (e) return t.slice();
+ var i = t.length,
+ r = s ? s(i) : new t.constructor(i);
+ return t.copy(r), r;
+ };
+ },
+ 2701: function (t, e, i) {
+ "use strict";
+ var r = i(1884);
+ e.Z = function (t, e) {
+ var i = e ? (0, r.Z)(t.buffer) : t.buffer;
+ return new t.constructor(i, t.byteOffset, t.length);
+ };
+ },
+ 7215: function (t, e) {
+ "use strict";
+ e.Z = function (t, e) {
+ var i = -1,
+ r = t.length;
+ for (e || (e = Array(r)); ++i < r; ) e[i] = t[i];
+ return e;
+ };
+ },
+ 1899: function (t, e, i) {
+ "use strict";
+ var r = i(2954),
+ n = i(4752);
+ e.Z = function (t, e, i, o) {
+ var a = !i;
+ i || (i = {});
+ for (var s = -1, l = e.length; ++s < l; ) {
+ var h = e[s],
+ c = o ? o(i[h], t[h], h, i, t) : void 0;
+ void 0 === c && (c = t[h]), a ? (0, n.Z)(i, h, c) : (0, r.Z)(i, h, c);
+ }
+ return i;
+ };
+ },
+ 7904: function (t, e, i) {
+ "use strict";
+ var r = i(2119),
+ n = (function () {
+ try {
+ var t = (0, r.Z)(Object, "defineProperty");
+ return t({}, "", {}), t;
+ } catch (t) {}
+ })();
+ e.Z = n;
+ },
+ 3413: function (t, e) {
+ "use strict";
+ var i = "object" == typeof global && global && global.Object === Object && global;
+ e.Z = i;
+ },
+ 2119: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return m;
+ },
+ });
+ var r,
+ n = i(3234),
+ o = i(6092).Z["__core-js_shared__"],
+ a = (r = /[^.]+$/.exec((o && o.keys && o.keys.IE_PROTO) || "")) ? "Symbol(src)_1." + r : "",
+ s = i(7226),
+ l = i(19),
+ h = /^\[object .+?Constructor\]$/,
+ c = Function.prototype,
+ u = Object.prototype,
+ f = c.toString,
+ d = u.hasOwnProperty,
+ p = RegExp(
+ "^" +
+ f
+ .call(d)
+ .replace(/[\\^$.*+?()[\]{}|]/g, "\\$&")
+ .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") +
+ "$",
+ ),
+ g = function (t) {
+ return !(!(0, s.Z)(t) || ((e = t), a && a in e)) && ((0, n.Z)(t) ? p : h).test((0, l.Z)(t));
+ var e;
+ },
+ m = function (t, e) {
+ var i = (function (t, e) {
+ return null == t ? void 0 : t[e];
+ })(t, e);
+ return g(i) ? i : void 0;
+ };
+ },
+ 2513: function (t, e, i) {
+ "use strict";
+ var r = (0, i(1851).Z)(Object.getPrototypeOf, Object);
+ e.Z = r;
+ },
+ 6155: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return k;
+ },
+ });
+ var r = i(2119),
+ n = i(6092),
+ o = (0, r.Z)(n.Z, "DataView"),
+ a = i(6183),
+ s = (0, r.Z)(n.Z, "Promise"),
+ l = i(3203),
+ h = (0, r.Z)(n.Z, "WeakMap"),
+ c = i(1922),
+ u = i(19),
+ f = "[object Map]",
+ d = "[object Promise]",
+ p = "[object Set]",
+ g = "[object WeakMap]",
+ m = "[object DataView]",
+ y = (0, u.Z)(o),
+ _ = (0, u.Z)(a.Z),
+ b = (0, u.Z)(s),
+ C = (0, u.Z)(l.Z),
+ x = (0, u.Z)(h),
+ v = c.Z;
+ ((o && v(new o(new ArrayBuffer(1))) != m) ||
+ (a.Z && v(new a.Z()) != f) ||
+ (s && v(s.resolve()) != d) ||
+ (l.Z && v(new l.Z()) != p) ||
+ (h && v(new h()) != g)) &&
+ (v = function (t) {
+ var e = (0, c.Z)(t),
+ i = "[object Object]" == e ? t.constructor : void 0,
+ r = i ? (0, u.Z)(i) : "";
+ if (r)
+ switch (r) {
+ case y:
+ return m;
+ case _:
+ return f;
+ case b:
+ return d;
+ case C:
+ return p;
+ case x:
+ return g;
+ }
+ return e;
+ });
+ var k = v;
+ },
+ 5418: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return l;
+ },
+ });
+ var r = i(7226),
+ n = Object.create,
+ o = (function () {
+ function t() {}
+ return function (e) {
+ if (!(0, r.Z)(e)) return {};
+ if (n) return n(e);
+ t.prototype = e;
+ var i = new t();
+ return (t.prototype = void 0), i;
+ };
+ })(),
+ a = i(2513),
+ s = i(2764),
+ l = function (t) {
+ return "function" != typeof t.constructor || (0, s.Z)(t) ? {} : o((0, a.Z)(t));
+ };
+ },
+ 6009: function (t, e) {
+ "use strict";
+ var i = /^(?:0|[1-9]\d*)$/;
+ e.Z = function (t, e) {
+ var r = typeof t;
+ return !!(e = null == e ? 9007199254740991 : e) && ("number" == r || ("symbol" != r && i.test(t))) && t > -1 && t % 1 == 0 && t < e;
+ };
+ },
+ 439: function (t, e, i) {
+ "use strict";
+ var r = i(9651),
+ n = i(585),
+ o = i(6009),
+ a = i(7226);
+ e.Z = function (t, e, i) {
+ if (!(0, a.Z)(i)) return !1;
+ var s = typeof e;
+ return !!("number" == s ? (0, n.Z)(i) && (0, o.Z)(e, i.length) : "string" == s && e in i) && (0, r.Z)(i[e], t);
+ };
+ },
+ 2764: function (t, e) {
+ "use strict";
+ var i = Object.prototype;
+ e.Z = function (t) {
+ var e = t && t.constructor;
+ return t === (("function" == typeof e && e.prototype) || i);
+ };
+ },
+ 4254: function (t, e, i) {
+ "use strict";
+ var r = i(3413),
+ n = "object" == typeof exports && exports && !exports.nodeType && exports,
+ o = n && "object" == typeof module && module && !module.nodeType && module,
+ a = o && o.exports === n && r.Z.process,
+ s = (function () {
+ try {
+ return (o && o.require && o.require("util").types) || (a && a.binding && a.binding("util"));
+ } catch (t) {}
+ })();
+ e.Z = s;
+ },
+ 1851: function (t, e) {
+ "use strict";
+ e.Z = function (t, e) {
+ return function (i) {
+ return t(e(i));
+ };
+ };
+ },
+ 3948: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return n;
+ },
+ });
+ var r = Math.max,
+ n = function (t, e, i) {
+ return (
+ (e = r(void 0 === e ? t.length - 1 : e, 0)),
+ function () {
+ for (var n = arguments, o = -1, a = r(n.length - e, 0), s = Array(a); ++o < a; ) s[o] = n[e + o];
+ o = -1;
+ for (var l = Array(e + 1); ++o < e; ) l[o] = n[o];
+ return (
+ (l[e] = i(s)),
+ (function (t, e, i) {
+ switch (i.length) {
+ case 0:
+ return t.call(e);
+ case 1:
+ return t.call(e, i[0]);
+ case 2:
+ return t.call(e, i[0], i[1]);
+ case 3:
+ return t.call(e, i[0], i[1], i[2]);
+ }
+ return t.apply(e, i);
+ })(t, this, l)
+ );
+ }
+ );
+ };
+ },
+ 6092: function (t, e, i) {
+ "use strict";
+ var r = i(3413),
+ n = "object" == typeof self && self && self.Object === Object && self,
+ o = r.Z || n || Function("return this")();
+ e.Z = o;
+ },
+ 3626: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return u;
+ },
+ });
+ var r,
+ n,
+ o,
+ a = i(2002),
+ s = i(7904),
+ l = i(9203),
+ h = s.Z
+ ? function (t, e) {
+ return (0, s.Z)(t, "toString", {
+ configurable: !0,
+ enumerable: !1,
+ value: (0, a.Z)(e),
+ writable: !0,
+ });
+ }
+ : l.Z,
+ c = Date.now,
+ u =
+ ((r = h),
+ (n = 0),
+ (o = 0),
+ function () {
+ var t = c(),
+ e = 16 - (t - o);
+ if (((o = t), e > 0)) {
+ if (++n >= 800) return arguments[0];
+ } else n = 0;
+ return r.apply(void 0, arguments);
+ });
+ },
+ 19: function (t, e) {
+ "use strict";
+ var i = Function.prototype.toString;
+ e.Z = function (t) {
+ if (null != t) {
+ try {
+ return i.call(t);
+ } catch (t) {}
+ try {
+ return t + "";
+ } catch (t) {}
+ }
+ return "";
+ };
+ },
+ 2002: function (t, e) {
+ "use strict";
+ e.Z = function (t) {
+ return function () {
+ return t;
+ };
+ };
+ },
+ 9651: function (t, e) {
+ "use strict";
+ e.Z = function (t, e) {
+ return t === e || (t != t && e != e);
+ };
+ },
+ 9203: function (t, e) {
+ "use strict";
+ e.Z = function (t) {
+ return t;
+ };
+ },
+ 4732: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return c;
+ },
+ });
+ var r = i(1922),
+ n = i(8533),
+ o = function (t) {
+ return (0, n.Z)(t) && "[object Arguments]" == (0, r.Z)(t);
+ },
+ a = Object.prototype,
+ s = a.hasOwnProperty,
+ l = a.propertyIsEnumerable,
+ h = o(
+ (function () {
+ return arguments;
+ })(),
+ )
+ ? o
+ : function (t) {
+ return (0, n.Z)(t) && s.call(t, "callee") && !l.call(t, "callee");
+ },
+ c = h;
+ },
+ 7771: function (t, e) {
+ "use strict";
+ var i = Array.isArray;
+ e.Z = i;
+ },
+ 585: function (t, e, i) {
+ "use strict";
+ var r = i(3234),
+ n = i(1656);
+ e.Z = function (t) {
+ return null != t && (0, n.Z)(t.length) && !(0, r.Z)(t);
+ };
+ },
+ 836: function (t, e, i) {
+ "use strict";
+ var r = i(585),
+ n = i(8533);
+ e.Z = function (t) {
+ return (0, n.Z)(t) && (0, r.Z)(t);
+ };
+ },
+ 6706: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return s;
+ },
+ });
+ var r = i(6092),
+ n = "object" == typeof exports && exports && !exports.nodeType && exports,
+ o = n && "object" == typeof module && module && !module.nodeType && module,
+ a = o && o.exports === n ? r.Z.Buffer : void 0,
+ s =
+ (a ? a.isBuffer : void 0) ||
+ function () {
+ return !1;
+ };
+ },
+ 9697: function (t, e, i) {
+ "use strict";
+ var r = i(8448),
+ n = i(6155),
+ o = i(4732),
+ a = i(7771),
+ s = i(585),
+ l = i(6706),
+ h = i(2764),
+ c = i(7212),
+ u = Object.prototype.hasOwnProperty;
+ e.Z = function (t) {
+ if (null == t) return !0;
+ if ((0, s.Z)(t) && ((0, a.Z)(t) || "string" == typeof t || "function" == typeof t.splice || (0, l.Z)(t) || (0, c.Z)(t) || (0, o.Z)(t)))
+ return !t.length;
+ var e = (0, n.Z)(t);
+ if ("[object Map]" == e || "[object Set]" == e) return !t.size;
+ if ((0, h.Z)(t)) return !(0, r.Z)(t).length;
+ for (var i in t) if (u.call(t, i)) return !1;
+ return !0;
+ };
+ },
+ 3234: function (t, e, i) {
+ "use strict";
+ var r = i(1922),
+ n = i(7226);
+ e.Z = function (t) {
+ if (!(0, n.Z)(t)) return !1;
+ var e = (0, r.Z)(t);
+ return "[object Function]" == e || "[object GeneratorFunction]" == e || "[object AsyncFunction]" == e || "[object Proxy]" == e;
+ };
+ },
+ 1656: function (t, e) {
+ "use strict";
+ e.Z = function (t) {
+ return "number" == typeof t && t > -1 && t % 1 == 0 && t <= 9007199254740991;
+ };
+ },
+ 7226: function (t, e) {
+ "use strict";
+ e.Z = function (t) {
+ var e = typeof t;
+ return null != t && ("object" == e || "function" == e);
+ };
+ },
+ 8533: function (t, e) {
+ "use strict";
+ e.Z = function (t) {
+ return null != t && "object" == typeof t;
+ };
+ },
+ 7514: function (t, e, i) {
+ "use strict";
+ var r = i(1922),
+ n = i(2513),
+ o = i(8533),
+ a = Function.prototype,
+ s = Object.prototype,
+ l = a.toString,
+ h = s.hasOwnProperty,
+ c = l.call(Object);
+ e.Z = function (t) {
+ if (!(0, o.Z)(t) || "[object Object]" != (0, r.Z)(t)) return !1;
+ var e = (0, n.Z)(t);
+ if (null === e) return !0;
+ var i = h.call(e, "constructor") && e.constructor;
+ return "function" == typeof i && i instanceof i && l.call(i) == c;
+ };
+ },
+ 7212: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return c;
+ },
+ });
+ var r = i(1922),
+ n = i(1656),
+ o = i(8533),
+ a = {};
+ (a["[object Float32Array]"] =
+ a["[object Float64Array]"] =
+ a["[object Int8Array]"] =
+ a["[object Int16Array]"] =
+ a["[object Int32Array]"] =
+ a["[object Uint8Array]"] =
+ a["[object Uint8ClampedArray]"] =
+ a["[object Uint16Array]"] =
+ a["[object Uint32Array]"] =
+ !0),
+ (a["[object Arguments]"] =
+ a["[object Array]"] =
+ a["[object ArrayBuffer]"] =
+ a["[object Boolean]"] =
+ a["[object DataView]"] =
+ a["[object Date]"] =
+ a["[object Error]"] =
+ a["[object Function]"] =
+ a["[object Map]"] =
+ a["[object Number]"] =
+ a["[object Object]"] =
+ a["[object RegExp]"] =
+ a["[object Set]"] =
+ a["[object String]"] =
+ a["[object WeakMap]"] =
+ !1);
+ var s = i(1162),
+ l = i(4254),
+ h = l.Z && l.Z.isTypedArray,
+ c = h
+ ? (0, s.Z)(h)
+ : function (t) {
+ return (0, o.Z)(t) && (0, n.Z)(t.length) && !!a[(0, r.Z)(t)];
+ };
+ },
+ 7590: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return h;
+ },
+ });
+ var r = i(9001),
+ n = i(7226),
+ o = i(2764),
+ a = Object.prototype.hasOwnProperty,
+ s = function (t) {
+ if (!(0, n.Z)(t))
+ return (function (t) {
+ var e = [];
+ if (null != t) for (var i in Object(t)) e.push(i);
+ return e;
+ })(t);
+ var e = (0, o.Z)(t),
+ i = [];
+ for (var r in t) ("constructor" != r || (!e && a.call(t, r))) && i.push(r);
+ return i;
+ },
+ l = i(585),
+ h = function (t) {
+ return (0, l.Z)(t) ? (0, r.Z)(t, !0) : s(t);
+ };
+ },
+ 2454: function (t, e, i) {
+ "use strict";
+ var r = i(520);
+ function n(t, e) {
+ if ("function" != typeof t || (null != e && "function" != typeof e)) throw new TypeError("Expected a function");
+ var i = function () {
+ var r = arguments,
+ n = e ? e.apply(this, r) : r[0],
+ o = i.cache;
+ if (o.has(n)) return o.get(n);
+ var a = t.apply(this, r);
+ return (i.cache = o.set(n, a) || o), a;
+ };
+ return (i.cache = new (n.Cache || r.Z)()), i;
+ }
+ (n.Cache = r.Z), (e.Z = n);
+ },
+ 6841: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ Z: function () {
+ return F;
+ },
+ });
+ var r,
+ n = i(5365),
+ o = i(4752),
+ a = i(9651),
+ s = function (t, e, i) {
+ ((void 0 !== i && !(0, a.Z)(t[e], i)) || (void 0 === i && !(e in t))) && (0, o.Z)(t, e, i);
+ },
+ l = i(5381),
+ h = i(1050),
+ c = i(2701),
+ u = i(7215),
+ f = i(5418),
+ d = i(4732),
+ p = i(7771),
+ g = i(836),
+ m = i(6706),
+ y = i(3234),
+ _ = i(7226),
+ b = i(7514),
+ C = i(7212),
+ x = function (t, e) {
+ if (("constructor" !== e || "function" != typeof t[e]) && "__proto__" != e) return t[e];
+ },
+ v = i(1899),
+ k = i(7590),
+ T = function (t, e, i, r, n, o, a) {
+ var l,
+ T = x(t, i),
+ w = x(e, i),
+ S = a.get(w);
+ if (S) s(t, i, S);
+ else {
+ var B = o ? o(T, w, i + "", t, e, a) : void 0,
+ F = void 0 === B;
+ if (F) {
+ var L = (0, p.Z)(w),
+ M = !L && (0, m.Z)(w),
+ A = !L && !M && (0, C.Z)(w);
+ (B = w),
+ L || M || A
+ ? (0, p.Z)(T)
+ ? (B = T)
+ : (0, g.Z)(T)
+ ? (B = (0, u.Z)(T))
+ : M
+ ? ((F = !1), (B = (0, h.Z)(w, !0)))
+ : A
+ ? ((F = !1), (B = (0, c.Z)(w, !0)))
+ : (B = [])
+ : (0, b.Z)(w) || (0, d.Z)(w)
+ ? ((B = T), (0, d.Z)(T) ? ((l = T), (B = (0, v.Z)(l, (0, k.Z)(l)))) : ((0, _.Z)(T) && !(0, y.Z)(T)) || (B = (0, f.Z)(w)))
+ : (F = !1);
+ }
+ F && (a.set(w, B), n(B, w, r, o, a), a.delete(w)), s(t, i, B);
+ }
+ },
+ w = function t(e, i, r, o, a) {
+ e !== i &&
+ (0, l.Z)(
+ i,
+ function (l, h) {
+ if ((a || (a = new n.Z()), (0, _.Z)(l))) T(e, i, h, r, t, o, a);
+ else {
+ var c = o ? o(x(e, h), l, h + "", e, i, a) : void 0;
+ void 0 === c && (c = l), s(e, h, c);
+ }
+ },
+ k.Z,
+ );
+ },
+ S = i(9581),
+ B = i(439),
+ F =
+ ((r = function (t, e, i) {
+ w(t, e, i);
+ }),
+ (0, S.Z)(function (t, e) {
+ var i = -1,
+ n = e.length,
+ o = n > 1 ? e[n - 1] : void 0,
+ a = n > 2 ? e[2] : void 0;
+ for (
+ o = r.length > 3 && "function" == typeof o ? (n--, o) : void 0,
+ a && (0, B.Z)(e[0], e[1], a) && ((o = n < 3 ? void 0 : o), (n = 1)),
+ t = Object(t);
+ ++i < n;
+
+ ) {
+ var s = e[i];
+ s && r(t, s, i);
+ }
+ return t;
+ }));
+ },
+ 9339: function (t, e, i) {
+ "use strict";
+ i.d(e, {
+ A: function () {
+ return Ei;
+ },
+ B: function () {
+ return Je;
+ },
+ C: function () {
+ return St;
+ },
+ D: function () {
+ return Si;
+ },
+ E: function () {
+ return ne;
+ },
+ F: function () {
+ return re;
+ },
+ G: function () {
+ return bt;
+ },
+ H: function () {
+ return bn;
+ },
+ I: function () {
+ return Ut;
+ },
+ J: function () {
+ return st;
+ },
+ K: function () {
+ return se;
+ },
+ L: function () {
+ return kn;
+ },
+ M: function () {
+ return Ti;
+ },
+ N: function () {
+ return Dn;
+ },
+ Z: function () {
+ return Nt;
+ },
+ a: function () {
+ return Ci;
+ },
+ b: function () {
+ return bi;
+ },
+ c: function () {
+ return ge;
+ },
+ d: function () {
+ return ct;
+ },
+ e: function () {
+ return gt;
+ },
+ f: function () {
+ return It;
+ },
+ g: function () {
+ return _i;
+ },
+ h: function () {
+ return Jt;
+ },
+ i: function () {
+ return Qe;
+ },
+ j: function () {
+ return Xt;
+ },
+ k: function () {
+ return Rt;
+ },
+ l: function () {
+ return nt;
+ },
+ m: function () {
+ return Fn;
+ },
+ n: function () {
+ return dt;
+ },
+ o: function () {
+ return jt;
+ },
+ p: function () {
+ return Ke;
+ },
+ q: function () {
+ return pe;
+ },
+ r: function () {
+ return xi;
+ },
+ s: function () {
+ return yi;
+ },
+ t: function () {
+ return vi;
+ },
+ u: function () {
+ return oe;
+ },
+ v: function () {
+ return mi;
+ },
+ w: function () {
+ return Vt;
+ },
+ x: function () {
+ return pt;
+ },
+ y: function () {
+ return Ht;
+ },
+ z: function () {
+ return Mi;
+ },
+ });
+ var r = i(8464),
+ n = i(7484),
+ o = i(7967),
+ a = i(7274),
+ s = i(7856),
+ l = i(1767),
+ h = i(3438),
+ c = (t, e) => {
+ const i = l.Z.parse(t),
+ r = {};
+ for (const t in e) e[t] && (r[t] = i[t] + e[t]);
+ return (0, h.Z)(t, r);
+ },
+ u = i(1117),
+ f = (t, e = 100) => {
+ const i = l.Z.parse(t);
+ return (
+ (i.r = 255 - i.r),
+ (i.g = 255 - i.g),
+ (i.b = 255 - i.b),
+ ((t, e, i = 50) => {
+ const { r: r, g: n, b: o, a: a } = l.Z.parse(t),
+ { r: s, g: h, b: c, a: f } = l.Z.parse(e),
+ d = i / 100,
+ p = 2 * d - 1,
+ g = a - f,
+ m = ((p * g == -1 ? p : (p + g) / (1 + p * g)) + 1) / 2,
+ y = 1 - m,
+ _ = r * m + s * y,
+ b = n * m + h * y,
+ C = o * m + c * y,
+ x = a * d + f * (1 - d);
+ return (0, u.Z)(_, b, C, x);
+ })(i, t, e)
+ );
+ },
+ d = i(7201),
+ p = i(2281),
+ g = i(6500),
+ m = i(2454),
+ y = i(6841),
+ _ = "comm",
+ b = "rule",
+ C = "decl",
+ x = Math.abs,
+ v = String.fromCharCode;
+ function k(t) {
+ return t.trim();
+ }
+ function T(t, e, i) {
+ return t.replace(e, i);
+ }
+ function w(t, e) {
+ return t.indexOf(e);
+ }
+ function S(t, e) {
+ return 0 | t.charCodeAt(e);
+ }
+ function B(t, e, i) {
+ return t.slice(e, i);
+ }
+ function F(t) {
+ return t.length;
+ }
+ function L(t, e) {
+ return e.push(t), t;
+ }
+ function M(t, e) {
+ for (var i = "", r = 0; r < t.length; r++) i += e(t[r], r, t, e) || "";
+ return i;
+ }
+ function A(t, e, i, r) {
+ switch (t.type) {
+ case "@layer":
+ if (t.children.length) break;
+ case "@import":
+ case C:
+ return (t.return = t.return || t.value);
+ case _:
+ return "";
+ case "@keyframes":
+ return (t.return = t.value + "{" + M(t.children, r) + "}");
+ case b:
+ if (!F((t.value = t.props.join(",")))) return "";
+ }
+ return F((i = M(t.children, r))) ? (t.return = t.value + "{" + i + "}") : "";
+ }
+ Object.assign;
+ var E = 1,
+ Z = 1,
+ O = 0,
+ q = 0,
+ I = 0,
+ N = "";
+ function D(t, e, i, r, n, o, a, s) {
+ return {
+ value: t,
+ root: e,
+ parent: i,
+ type: r,
+ props: n,
+ children: o,
+ line: E,
+ column: Z,
+ length: a,
+ return: "",
+ siblings: s,
+ };
+ }
+ function $() {
+ return (I = q > 0 ? S(N, --q) : 0), Z--, 10 === I && ((Z = 1), E--), I;
+ }
+ function z() {
+ return (I = q < O ? S(N, q++) : 0), Z++, 10 === I && ((Z = 1), E++), I;
+ }
+ function j() {
+ return S(N, q);
+ }
+ function P() {
+ return q;
+ }
+ function R(t, e) {
+ return B(N, t, e);
+ }
+ function W(t) {
+ switch (t) {
+ case 0:
+ case 9:
+ case 10:
+ case 13:
+ case 32:
+ return 5;
+ case 33:
+ case 43:
+ case 44:
+ case 47:
+ case 62:
+ case 64:
+ case 126:
+ case 59:
+ case 123:
+ case 125:
+ return 4;
+ case 58:
+ return 3;
+ case 34:
+ case 39:
+ case 40:
+ case 91:
+ return 2;
+ case 41:
+ case 93:
+ return 1;
+ }
+ return 0;
+ }
+ function U(t) {
+ return k(R(q - 1, V(91 === t ? t + 2 : 40 === t ? t + 1 : t)));
+ }
+ function H(t) {
+ for (; (I = j()) && I < 33; ) z();
+ return W(t) > 2 || W(I) > 3 ? "" : " ";
+ }
+ function Y(t, e) {
+ for (; --e && z() && !(I < 48 || I > 102 || (I > 57 && I < 65) || (I > 70 && I < 97)); );
+ return R(t, P() + (e < 6 && 32 == j() && 32 == z()));
+ }
+ function V(t) {
+ for (; z(); )
+ switch (I) {
+ case t:
+ return q;
+ case 34:
+ case 39:
+ 34 !== t && 39 !== t && V(I);
+ break;
+ case 40:
+ 41 === t && V(t);
+ break;
+ case 92:
+ z();
+ }
+ return q;
+ }
+ function G(t, e) {
+ for (; z() && t + I !== 57 && (t + I !== 84 || 47 !== j()); );
+ return "/*" + R(e, q - 1) + "*" + v(47 === t ? t : z());
+ }
+ function X(t) {
+ for (; !W(j()); ) z();
+ return R(t, q);
+ }
+ function J(t) {
+ return (function (t) {
+ return (N = ""), t;
+ })(
+ Q(
+ "",
+ null,
+ null,
+ null,
+ [""],
+ (t = (function (t) {
+ return (E = Z = 1), (O = F((N = t))), (q = 0), [];
+ })(t)),
+ 0,
+ [0],
+ t,
+ ),
+ );
+ }
+ function Q(t, e, i, r, n, o, a, s, l) {
+ for (var h = 0, c = 0, u = a, f = 0, d = 0, p = 0, g = 1, m = 1, y = 1, _ = 0, b = "", C = n, x = o, k = r, B = b; m; )
+ switch (((p = _), (_ = z()))) {
+ case 40:
+ if (108 != p && 58 == S(B, u - 1)) {
+ -1 != w((B += T(U(_), "&", "&\f")), "&\f") && (y = -1);
+ break;
+ }
+ case 34:
+ case 39:
+ case 91:
+ B += U(_);
+ break;
+ case 9:
+ case 10:
+ case 13:
+ case 32:
+ B += H(p);
+ break;
+ case 92:
+ B += Y(P() - 1, 7);
+ continue;
+ case 47:
+ switch (j()) {
+ case 42:
+ case 47:
+ L(tt(G(z(), P()), e, i, l), l);
+ break;
+ default:
+ B += "/";
+ }
+ break;
+ case 123 * g:
+ s[h++] = F(B) * y;
+ case 125 * g:
+ case 59:
+ case 0:
+ switch (_) {
+ case 0:
+ case 125:
+ m = 0;
+ case 59 + c:
+ -1 == y && (B = T(B, /\f/g, "")),
+ d > 0 && F(B) - u && L(d > 32 ? et(B + ";", r, i, u - 1, l) : et(T(B, " ", "") + ";", r, i, u - 2, l), l);
+ break;
+ case 59:
+ B += ";";
+ default:
+ if ((L((k = K(B, e, i, h, c, n, s, b, (C = []), (x = []), u, o)), o), 123 === _))
+ if (0 === c) Q(B, e, k, k, C, o, u, s, x);
+ else
+ switch (99 === f && 110 === S(B, 3) ? 100 : f) {
+ case 100:
+ case 108:
+ case 109:
+ case 115:
+ Q(t, k, k, r && L(K(t, k, k, 0, 0, n, s, b, n, (C = []), u, x), x), n, x, u, s, r ? C : x);
+ break;
+ default:
+ Q(B, k, k, k, [""], x, 0, s, x);
+ }
+ }
+ (h = c = d = 0), (g = y = 1), (b = B = ""), (u = a);
+ break;
+ case 58:
+ (u = 1 + F(B)), (d = p);
+ default:
+ if (g < 1)
+ if (123 == _) --g;
+ else if (125 == _ && 0 == g++ && 125 == $()) continue;
+ switch (((B += v(_)), _ * g)) {
+ case 38:
+ y = c > 0 ? 1 : ((B += "\f"), -1);
+ break;
+ case 44:
+ (s[h++] = (F(B) - 1) * y), (y = 1);
+ break;
+ case 64:
+ 45 === j() && (B += U(z())), (f = j()), (c = u = F((b = B += X(P())))), _++;
+ break;
+ case 45:
+ 45 === p && 2 == F(B) && (g = 0);
+ }
+ }
+ return o;
+ }
+ function K(t, e, i, r, n, o, a, s, l, h, c, u) {
+ for (
+ var f = n - 1,
+ d = 0 === n ? o : [""],
+ p = (function (t) {
+ return t.length;
+ })(d),
+ g = 0,
+ m = 0,
+ y = 0;
+ g < r;
+ ++g
+ )
+ for (var _ = 0, C = B(t, f + 1, (f = x((m = a[g])))), v = t; _ < p; ++_)
+ (v = k(m > 0 ? d[_] + " " + C : T(C, /&\f/g, d[_]))) && (l[y++] = v);
+ return D(t, e, i, 0 === n ? b : s, l, h, c, u);
+ }
+ function tt(t, e, i, r) {
+ return D(t, e, i, _, v(I), B(t, 2, -2), 0, r);
+ }
+ function et(t, e, i, r, n) {
+ return D(t, e, i, C, B(t, 0, r), B(t, r + 1, -1), r, n);
+ }
+ var it = i(9697);
+ const rt = { trace: 0, debug: 1, info: 2, warn: 3, error: 4, fatal: 5 },
+ nt = {
+ trace: (...t) => {},
+ debug: (...t) => {},
+ info: (...t) => {},
+ warn: (...t) => {},
+ error: (...t) => {},
+ fatal: (...t) => {},
+ },
+ ot = function (t = "fatal") {
+ let e = rt.fatal;
+ "string" == typeof t ? (t = t.toLowerCase()) in rt && (e = rt[t]) : "number" == typeof t && (e = t),
+ (nt.trace = () => {}),
+ (nt.debug = () => {}),
+ (nt.info = () => {}),
+ (nt.warn = () => {}),
+ (nt.error = () => {}),
+ (nt.fatal = () => {}),
+ e <= rt.fatal &&
+ (nt.fatal = console.error ? console.error.bind(console, at("FATAL"), "color: orange") : console.log.bind(console, "[35m", at("FATAL"))),
+ e <= rt.error &&
+ (nt.error = console.error ? console.error.bind(console, at("ERROR"), "color: orange") : console.log.bind(console, "[31m", at("ERROR"))),
+ e <= rt.warn &&
+ (nt.warn = console.warn ? console.warn.bind(console, at("WARN"), "color: orange") : console.log.bind(console, "[33m", at("WARN"))),
+ e <= rt.info &&
+ (nt.info = console.info ? console.info.bind(console, at("INFO"), "color: lightblue") : console.log.bind(console, "[34m", at("INFO"))),
+ e <= rt.debug &&
+ (nt.debug = console.debug
+ ? console.debug.bind(console, at("DEBUG"), "color: lightgreen")
+ : console.log.bind(console, "[32m", at("DEBUG"))),
+ e <= rt.trace &&
+ (nt.trace = console.debug
+ ? console.debug.bind(console, at("TRACE"), "color: lightgreen")
+ : console.log.bind(console, "[32m", at("TRACE")));
+ },
+ at = (t) => `%c${n().format("ss.SSS")} : ${t} : `,
+ st = /
/gi,
+ lt = (t) => s.sanitize(t),
+ ht = (t, e) => {
+ var i;
+ if (!1 !== (null == (i = e.flowchart) ? void 0 : i.htmlLabels)) {
+ const i = e.securityLevel;
+ "antiscript" === i || "strict" === i
+ ? (t = lt(t))
+ : "loose" !== i && ((t = (t = (t = ft(t)).replace(//g, ">")).replace(/=/g, "=")), (t = ut(t)));
+ }
+ return t;
+ },
+ ct = (t, e) =>
+ t
+ ? (t = e.dompurifyConfig
+ ? s.sanitize(ht(t, e), e.dompurifyConfig).toString()
+ : s.sanitize(ht(t, e), { FORBID_TAGS: ["style"] }).toString())
+ : t,
+ ut = (t) => t.replace(/#br#/g, "
"),
+ ft = (t) => t.replace(st, "#br#"),
+ dt = (t) => !1 !== t && !["false", "null", "0"].includes(String(t).trim().toLowerCase()),
+ pt = function (t) {
+ let e = t;
+ if (t.split("~").length - 1 >= 2) {
+ let t = e;
+ do {
+ (e = t), (t = e.replace(/~([^\s,:;]+)~/, "<$1>"));
+ } while (t != e);
+ return pt(t);
+ }
+ return e;
+ },
+ gt = {
+ getRows: (t) => (t ? ft(t).replace(/\\n/g, "#br#").split("#br#") : [""]),
+ sanitizeText: ct,
+ sanitizeTextOrArray: (t, e) => ("string" == typeof t ? ct(t, e) : t.flat().map((t) => ct(t, e))),
+ hasBreaks: (t) => st.test(t),
+ splitBreaks: (t) => t.split(st),
+ lineBreakRegex: st,
+ removeScript: lt,
+ getUrl: (t) => {
+ let e = "";
+ return (
+ t &&
+ ((e = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search),
+ (e = e.replaceAll(/\(/g, "\\(")),
+ (e = e.replaceAll(/\)/g, "\\)"))),
+ e
+ );
+ },
+ evaluate: dt,
+ getMax: function (...t) {
+ const e = t.filter((t) => !isNaN(t));
+ return Math.max(...e);
+ },
+ getMin: function (...t) {
+ const e = t.filter((t) => !isNaN(t));
+ return Math.min(...e);
+ },
+ },
+ mt = (t, e) => c(t, e ? { s: -40, l: 10 } : { s: -40, l: -10 }),
+ yt = "#ffffff",
+ _t = "#f2f2f2",
+ bt = (t) => {
+ const e = new (class {
+ constructor() {
+ (this.background = "#f4f4f4"),
+ (this.primaryColor = "#ECECFF"),
+ (this.secondaryColor = c(this.primaryColor, { h: 120 })),
+ (this.secondaryColor = "#ffffde"),
+ (this.tertiaryColor = c(this.primaryColor, { h: -160 })),
+ (this.primaryBorderColor = mt(this.primaryColor, this.darkMode)),
+ (this.secondaryBorderColor = mt(this.secondaryColor, this.darkMode)),
+ (this.tertiaryBorderColor = mt(this.tertiaryColor, this.darkMode)),
+ (this.primaryTextColor = f(this.primaryColor)),
+ (this.secondaryTextColor = f(this.secondaryColor)),
+ (this.tertiaryTextColor = f(this.tertiaryColor)),
+ (this.lineColor = f(this.background)),
+ (this.textColor = f(this.background)),
+ (this.background = "white"),
+ (this.mainBkg = "#ECECFF"),
+ (this.secondBkg = "#ffffde"),
+ (this.lineColor = "#333333"),
+ (this.border1 = "#9370DB"),
+ (this.border2 = "#aaaa33"),
+ (this.arrowheadColor = "#333333"),
+ (this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif'),
+ (this.fontSize = "16px"),
+ (this.labelBackground = "#e8e8e8"),
+ (this.textColor = "#333"),
+ (this.THEME_COLOR_LIMIT = 12),
+ (this.nodeBkg = "calculated"),
+ (this.nodeBorder = "calculated"),
+ (this.clusterBkg = "calculated"),
+ (this.clusterBorder = "calculated"),
+ (this.defaultLinkColor = "calculated"),
+ (this.titleColor = "calculated"),
+ (this.edgeLabelBackground = "calculated"),
+ (this.actorBorder = "calculated"),
+ (this.actorBkg = "calculated"),
+ (this.actorTextColor = "black"),
+ (this.actorLineColor = "grey"),
+ (this.signalColor = "calculated"),
+ (this.signalTextColor = "calculated"),
+ (this.labelBoxBkgColor = "calculated"),
+ (this.labelBoxBorderColor = "calculated"),
+ (this.labelTextColor = "calculated"),
+ (this.loopTextColor = "calculated"),
+ (this.noteBorderColor = "calculated"),
+ (this.noteBkgColor = "#fff5ad"),
+ (this.noteTextColor = "calculated"),
+ (this.activationBorderColor = "#666"),
+ (this.activationBkgColor = "#f4f4f4"),
+ (this.sequenceNumberColor = "white"),
+ (this.sectionBkgColor = "calculated"),
+ (this.altSectionBkgColor = "calculated"),
+ (this.sectionBkgColor2 = "calculated"),
+ (this.excludeBkgColor = "#eeeeee"),
+ (this.taskBorderColor = "calculated"),
+ (this.taskBkgColor = "calculated"),
+ (this.taskTextLightColor = "calculated"),
+ (this.taskTextColor = this.taskTextLightColor),
+ (this.taskTextDarkColor = "calculated"),
+ (this.taskTextOutsideColor = this.taskTextDarkColor),
+ (this.taskTextClickableColor = "calculated"),
+ (this.activeTaskBorderColor = "calculated"),
+ (this.activeTaskBkgColor = "calculated"),
+ (this.gridColor = "calculated"),
+ (this.doneTaskBkgColor = "calculated"),
+ (this.doneTaskBorderColor = "calculated"),
+ (this.critBorderColor = "calculated"),
+ (this.critBkgColor = "calculated"),
+ (this.todayLineColor = "calculated"),
+ (this.sectionBkgColor = (0, u.Z)(102, 102, 255, 0.49)),
+ (this.altSectionBkgColor = "white"),
+ (this.sectionBkgColor2 = "#fff400"),
+ (this.taskBorderColor = "#534fbc"),
+ (this.taskBkgColor = "#8a90dd"),
+ (this.taskTextLightColor = "white"),
+ (this.taskTextColor = "calculated"),
+ (this.taskTextDarkColor = "black"),
+ (this.taskTextOutsideColor = "calculated"),
+ (this.taskTextClickableColor = "#003163"),
+ (this.activeTaskBorderColor = "#534fbc"),
+ (this.activeTaskBkgColor = "#bfc7ff"),
+ (this.gridColor = "lightgrey"),
+ (this.doneTaskBkgColor = "lightgrey"),
+ (this.doneTaskBorderColor = "grey"),
+ (this.critBorderColor = "#ff8888"),
+ (this.critBkgColor = "red"),
+ (this.todayLineColor = "red"),
+ (this.personBorder = this.primaryBorderColor),
+ (this.personBkg = this.mainBkg),
+ (this.labelColor = "black"),
+ (this.errorBkgColor = "#552222"),
+ (this.errorTextColor = "#552222"),
+ this.updateColors();
+ }
+ updateColors() {
+ (this.cScale0 = this.cScale0 || this.primaryColor),
+ (this.cScale1 = this.cScale1 || this.secondaryColor),
+ (this.cScale2 = this.cScale2 || this.tertiaryColor),
+ (this.cScale3 = this.cScale3 || c(this.primaryColor, { h: 30 })),
+ (this.cScale4 = this.cScale4 || c(this.primaryColor, { h: 60 })),
+ (this.cScale5 = this.cScale5 || c(this.primaryColor, { h: 90 })),
+ (this.cScale6 = this.cScale6 || c(this.primaryColor, { h: 120 })),
+ (this.cScale7 = this.cScale7 || c(this.primaryColor, { h: 150 })),
+ (this.cScale8 = this.cScale8 || c(this.primaryColor, { h: 210 })),
+ (this.cScale9 = this.cScale9 || c(this.primaryColor, { h: 270 })),
+ (this.cScale10 = this.cScale10 || c(this.primaryColor, { h: 300 })),
+ (this.cScale11 = this.cScale11 || c(this.primaryColor, { h: 330 })),
+ (this.cScalePeer1 = this.cScalePeer1 || (0, d.Z)(this.secondaryColor, 45)),
+ (this.cScalePeer2 = this.cScalePeer2 || (0, d.Z)(this.tertiaryColor, 40));
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++)
+ (this["cScale" + t] = (0, d.Z)(this["cScale" + t], 10)),
+ (this["cScalePeer" + t] = this["cScalePeer" + t] || (0, d.Z)(this["cScale" + t], 25));
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++) this["cScaleInv" + t] = this["cScaleInv" + t] || c(this["cScale" + t], { h: 180 });
+ for (let t = 0; t < 5; t++)
+ (this["surface" + t] = this["surface" + t] || c(this.mainBkg, { h: 30, l: -(5 + 5 * t) })),
+ (this["surfacePeer" + t] = this["surfacePeer" + t] || c(this.mainBkg, { h: 30, l: -(7 + 5 * t) }));
+ if (
+ ((this.scaleLabelColor = "calculated" !== this.scaleLabelColor && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor),
+ "calculated" !== this.labelTextColor)
+ ) {
+ (this.cScaleLabel0 = this.cScaleLabel0 || f(this.labelTextColor)), (this.cScaleLabel3 = this.cScaleLabel3 || f(this.labelTextColor));
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++) this["cScaleLabel" + t] = this["cScaleLabel" + t] || this.labelTextColor;
+ }
+ (this.nodeBkg = this.mainBkg),
+ (this.nodeBorder = this.border1),
+ (this.clusterBkg = this.secondBkg),
+ (this.clusterBorder = this.border2),
+ (this.defaultLinkColor = this.lineColor),
+ (this.titleColor = this.textColor),
+ (this.edgeLabelBackground = this.labelBackground),
+ (this.actorBorder = (0, p.Z)(this.border1, 23)),
+ (this.actorBkg = this.mainBkg),
+ (this.labelBoxBkgColor = this.actorBkg),
+ (this.signalColor = this.textColor),
+ (this.signalTextColor = this.textColor),
+ (this.labelBoxBorderColor = this.actorBorder),
+ (this.labelTextColor = this.actorTextColor),
+ (this.loopTextColor = this.actorTextColor),
+ (this.noteBorderColor = this.border2),
+ (this.noteTextColor = this.actorTextColor),
+ (this.taskTextColor = this.taskTextLightColor),
+ (this.taskTextOutsideColor = this.taskTextDarkColor),
+ (this.transitionColor = this.transitionColor || this.lineColor),
+ (this.transitionLabelColor = this.transitionLabelColor || this.textColor),
+ (this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor),
+ (this.stateBkg = this.stateBkg || this.mainBkg),
+ (this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg),
+ (this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor),
+ (this.altBackground = this.altBackground || "#f0f0f0"),
+ (this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg),
+ (this.compositeBorder = this.compositeBorder || this.nodeBorder),
+ (this.innerEndBackground = this.nodeBorder),
+ (this.specialStateColor = this.lineColor),
+ (this.errorBkgColor = this.errorBkgColor || this.tertiaryColor),
+ (this.errorTextColor = this.errorTextColor || this.tertiaryTextColor),
+ (this.transitionColor = this.transitionColor || this.lineColor),
+ (this.classText = this.primaryTextColor),
+ (this.fillType0 = this.primaryColor),
+ (this.fillType1 = this.secondaryColor),
+ (this.fillType2 = c(this.primaryColor, { h: 64 })),
+ (this.fillType3 = c(this.secondaryColor, { h: 64 })),
+ (this.fillType4 = c(this.primaryColor, { h: -64 })),
+ (this.fillType5 = c(this.secondaryColor, { h: -64 })),
+ (this.fillType6 = c(this.primaryColor, { h: 128 })),
+ (this.fillType7 = c(this.secondaryColor, { h: 128 })),
+ (this.pie1 = this.pie1 || this.primaryColor),
+ (this.pie2 = this.pie2 || this.secondaryColor),
+ (this.pie3 = this.pie3 || c(this.tertiaryColor, { l: -40 })),
+ (this.pie4 = this.pie4 || c(this.primaryColor, { l: -10 })),
+ (this.pie5 = this.pie5 || c(this.secondaryColor, { l: -30 })),
+ (this.pie6 = this.pie6 || c(this.tertiaryColor, { l: -20 })),
+ (this.pie7 = this.pie7 || c(this.primaryColor, { h: 60, l: -20 })),
+ (this.pie8 = this.pie8 || c(this.primaryColor, { h: -60, l: -40 })),
+ (this.pie9 = this.pie9 || c(this.primaryColor, { h: 120, l: -40 })),
+ (this.pie10 = this.pie10 || c(this.primaryColor, { h: 60, l: -40 })),
+ (this.pie11 = this.pie11 || c(this.primaryColor, { h: -90, l: -40 })),
+ (this.pie12 = this.pie12 || c(this.primaryColor, { h: 120, l: -30 })),
+ (this.pieTitleTextSize = this.pieTitleTextSize || "25px"),
+ (this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor),
+ (this.pieSectionTextSize = this.pieSectionTextSize || "17px"),
+ (this.pieSectionTextColor = this.pieSectionTextColor || this.textColor),
+ (this.pieLegendTextSize = this.pieLegendTextSize || "17px"),
+ (this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor),
+ (this.pieStrokeColor = this.pieStrokeColor || "black"),
+ (this.pieStrokeWidth = this.pieStrokeWidth || "2px"),
+ (this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px"),
+ (this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black"),
+ (this.pieOpacity = this.pieOpacity || "0.7"),
+ (this.quadrant1Fill = this.quadrant1Fill || this.primaryColor),
+ (this.quadrant2Fill = this.quadrant2Fill || c(this.primaryColor, { r: 5, g: 5, b: 5 })),
+ (this.quadrant3Fill = this.quadrant3Fill || c(this.primaryColor, { r: 10, g: 10, b: 10 })),
+ (this.quadrant4Fill = this.quadrant4Fill || c(this.primaryColor, { r: 15, g: 15, b: 15 })),
+ (this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor),
+ (this.quadrant2TextFill = this.quadrant2TextFill || c(this.primaryTextColor, { r: -5, g: -5, b: -5 })),
+ (this.quadrant3TextFill = this.quadrant3TextFill || c(this.primaryTextColor, { r: -10, g: -10, b: -10 })),
+ (this.quadrant4TextFill = this.quadrant4TextFill || c(this.primaryTextColor, { r: -15, g: -15, b: -15 })),
+ (this.quadrantPointFill =
+ this.quadrantPointFill || (0, g.Z)(this.quadrant1Fill) ? (0, p.Z)(this.quadrant1Fill) : (0, d.Z)(this.quadrant1Fill)),
+ (this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor),
+ (this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor),
+ (this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor),
+ (this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor),
+ (this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor),
+ (this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor),
+ (this.requirementBackground = this.requirementBackground || this.primaryColor),
+ (this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor),
+ (this.requirementBorderSize = this.requirementBorderSize || "1"),
+ (this.requirementTextColor = this.requirementTextColor || this.primaryTextColor),
+ (this.relationColor = this.relationColor || this.lineColor),
+ (this.relationLabelBackground = this.relationLabelBackground || this.labelBackground),
+ (this.relationLabelColor = this.relationLabelColor || this.actorTextColor),
+ (this.git0 = this.git0 || this.primaryColor),
+ (this.git1 = this.git1 || this.secondaryColor),
+ (this.git2 = this.git2 || this.tertiaryColor),
+ (this.git3 = this.git3 || c(this.primaryColor, { h: -30 })),
+ (this.git4 = this.git4 || c(this.primaryColor, { h: -60 })),
+ (this.git5 = this.git5 || c(this.primaryColor, { h: -90 })),
+ (this.git6 = this.git6 || c(this.primaryColor, { h: 60 })),
+ (this.git7 = this.git7 || c(this.primaryColor, { h: 120 })),
+ this.darkMode
+ ? ((this.git0 = (0, p.Z)(this.git0, 25)),
+ (this.git1 = (0, p.Z)(this.git1, 25)),
+ (this.git2 = (0, p.Z)(this.git2, 25)),
+ (this.git3 = (0, p.Z)(this.git3, 25)),
+ (this.git4 = (0, p.Z)(this.git4, 25)),
+ (this.git5 = (0, p.Z)(this.git5, 25)),
+ (this.git6 = (0, p.Z)(this.git6, 25)),
+ (this.git7 = (0, p.Z)(this.git7, 25)))
+ : ((this.git0 = (0, d.Z)(this.git0, 25)),
+ (this.git1 = (0, d.Z)(this.git1, 25)),
+ (this.git2 = (0, d.Z)(this.git2, 25)),
+ (this.git3 = (0, d.Z)(this.git3, 25)),
+ (this.git4 = (0, d.Z)(this.git4, 25)),
+ (this.git5 = (0, d.Z)(this.git5, 25)),
+ (this.git6 = (0, d.Z)(this.git6, 25)),
+ (this.git7 = (0, d.Z)(this.git7, 25))),
+ (this.gitInv0 = this.gitInv0 || (0, d.Z)(f(this.git0), 25)),
+ (this.gitInv1 = this.gitInv1 || f(this.git1)),
+ (this.gitInv2 = this.gitInv2 || f(this.git2)),
+ (this.gitInv3 = this.gitInv3 || f(this.git3)),
+ (this.gitInv4 = this.gitInv4 || f(this.git4)),
+ (this.gitInv5 = this.gitInv5 || f(this.git5)),
+ (this.gitInv6 = this.gitInv6 || f(this.git6)),
+ (this.gitInv7 = this.gitInv7 || f(this.git7)),
+ (this.gitBranchLabel0 = this.gitBranchLabel0 || f(this.labelTextColor)),
+ (this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor),
+ (this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor),
+ (this.gitBranchLabel3 = this.gitBranchLabel3 || f(this.labelTextColor)),
+ (this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor),
+ (this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor),
+ (this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor),
+ (this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor),
+ (this.tagLabelColor = this.tagLabelColor || this.primaryTextColor),
+ (this.tagLabelBackground = this.tagLabelBackground || this.primaryColor),
+ (this.tagLabelBorder = this.tagBorder || this.primaryBorderColor),
+ (this.tagLabelFontSize = this.tagLabelFontSize || "10px"),
+ (this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor),
+ (this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor),
+ (this.commitLabelFontSize = this.commitLabelFontSize || "10px"),
+ (this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || yt),
+ (this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || _t);
+ }
+ calculate(t) {
+ if ("object" != typeof t) return void this.updateColors();
+ const e = Object.keys(t);
+ e.forEach((e) => {
+ this[e] = t[e];
+ }),
+ this.updateColors(),
+ e.forEach((e) => {
+ this[e] = t[e];
+ });
+ }
+ })();
+ return e.calculate(t), e;
+ };
+ class Ct {
+ constructor() {
+ (this.primaryColor = "#eee"),
+ (this.contrast = "#707070"),
+ (this.secondaryColor = (0, p.Z)(this.contrast, 55)),
+ (this.background = "#ffffff"),
+ (this.tertiaryColor = c(this.primaryColor, { h: -160 })),
+ (this.primaryBorderColor = mt(this.primaryColor, this.darkMode)),
+ (this.secondaryBorderColor = mt(this.secondaryColor, this.darkMode)),
+ (this.tertiaryBorderColor = mt(this.tertiaryColor, this.darkMode)),
+ (this.primaryTextColor = f(this.primaryColor)),
+ (this.secondaryTextColor = f(this.secondaryColor)),
+ (this.tertiaryTextColor = f(this.tertiaryColor)),
+ (this.lineColor = f(this.background)),
+ (this.textColor = f(this.background)),
+ (this.mainBkg = "#eee"),
+ (this.secondBkg = "calculated"),
+ (this.lineColor = "#666"),
+ (this.border1 = "#999"),
+ (this.border2 = "calculated"),
+ (this.note = "#ffa"),
+ (this.text = "#333"),
+ (this.critical = "#d42"),
+ (this.done = "#bbb"),
+ (this.arrowheadColor = "#333333"),
+ (this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif'),
+ (this.fontSize = "16px"),
+ (this.THEME_COLOR_LIMIT = 12),
+ (this.nodeBkg = "calculated"),
+ (this.nodeBorder = "calculated"),
+ (this.clusterBkg = "calculated"),
+ (this.clusterBorder = "calculated"),
+ (this.defaultLinkColor = "calculated"),
+ (this.titleColor = "calculated"),
+ (this.edgeLabelBackground = "white"),
+ (this.actorBorder = "calculated"),
+ (this.actorBkg = "calculated"),
+ (this.actorTextColor = "calculated"),
+ (this.actorLineColor = "calculated"),
+ (this.signalColor = "calculated"),
+ (this.signalTextColor = "calculated"),
+ (this.labelBoxBkgColor = "calculated"),
+ (this.labelBoxBorderColor = "calculated"),
+ (this.labelTextColor = "calculated"),
+ (this.loopTextColor = "calculated"),
+ (this.noteBorderColor = "calculated"),
+ (this.noteBkgColor = "calculated"),
+ (this.noteTextColor = "calculated"),
+ (this.activationBorderColor = "#666"),
+ (this.activationBkgColor = "#f4f4f4"),
+ (this.sequenceNumberColor = "white"),
+ (this.sectionBkgColor = "calculated"),
+ (this.altSectionBkgColor = "white"),
+ (this.sectionBkgColor2 = "calculated"),
+ (this.excludeBkgColor = "#eeeeee"),
+ (this.taskBorderColor = "calculated"),
+ (this.taskBkgColor = "calculated"),
+ (this.taskTextLightColor = "white"),
+ (this.taskTextColor = "calculated"),
+ (this.taskTextDarkColor = "calculated"),
+ (this.taskTextOutsideColor = "calculated"),
+ (this.taskTextClickableColor = "#003163"),
+ (this.activeTaskBorderColor = "calculated"),
+ (this.activeTaskBkgColor = "calculated"),
+ (this.gridColor = "calculated"),
+ (this.doneTaskBkgColor = "calculated"),
+ (this.doneTaskBorderColor = "calculated"),
+ (this.critBkgColor = "calculated"),
+ (this.critBorderColor = "calculated"),
+ (this.todayLineColor = "calculated"),
+ (this.personBorder = this.primaryBorderColor),
+ (this.personBkg = this.mainBkg),
+ (this.labelColor = "black"),
+ (this.errorBkgColor = "#552222"),
+ (this.errorTextColor = "#552222");
+ }
+ updateColors() {
+ (this.secondBkg = (0, p.Z)(this.contrast, 55)),
+ (this.border2 = this.contrast),
+ (this.actorBorder = (0, p.Z)(this.border1, 23)),
+ (this.actorBkg = this.mainBkg),
+ (this.actorTextColor = this.text),
+ (this.actorLineColor = this.lineColor),
+ (this.signalColor = this.text),
+ (this.signalTextColor = this.text),
+ (this.labelBoxBkgColor = this.actorBkg),
+ (this.labelBoxBorderColor = this.actorBorder),
+ (this.labelTextColor = this.text),
+ (this.loopTextColor = this.text),
+ (this.noteBorderColor = "#999"),
+ (this.noteBkgColor = "#666"),
+ (this.noteTextColor = "#fff"),
+ (this.cScale0 = this.cScale0 || "#555"),
+ (this.cScale1 = this.cScale1 || "#F4F4F4"),
+ (this.cScale2 = this.cScale2 || "#555"),
+ (this.cScale3 = this.cScale3 || "#BBB"),
+ (this.cScale4 = this.cScale4 || "#777"),
+ (this.cScale5 = this.cScale5 || "#999"),
+ (this.cScale6 = this.cScale6 || "#DDD"),
+ (this.cScale7 = this.cScale7 || "#FFF"),
+ (this.cScale8 = this.cScale8 || "#DDD"),
+ (this.cScale9 = this.cScale9 || "#BBB"),
+ (this.cScale10 = this.cScale10 || "#999"),
+ (this.cScale11 = this.cScale11 || "#777");
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++) this["cScaleInv" + t] = this["cScaleInv" + t] || f(this["cScale" + t]);
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++)
+ this.darkMode
+ ? (this["cScalePeer" + t] = this["cScalePeer" + t] || (0, p.Z)(this["cScale" + t], 10))
+ : (this["cScalePeer" + t] = this["cScalePeer" + t] || (0, d.Z)(this["cScale" + t], 10));
+ (this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? "black" : this.labelTextColor)),
+ (this.cScaleLabel0 = this.cScaleLabel0 || this.cScale1),
+ (this.cScaleLabel2 = this.cScaleLabel2 || this.cScale1);
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++) this["cScaleLabel" + t] = this["cScaleLabel" + t] || this.scaleLabelColor;
+ for (let t = 0; t < 5; t++)
+ (this["surface" + t] = this["surface" + t] || c(this.mainBkg, { l: -(5 + 5 * t) })),
+ (this["surfacePeer" + t] = this["surfacePeer" + t] || c(this.mainBkg, { l: -(8 + 5 * t) }));
+ (this.nodeBkg = this.mainBkg),
+ (this.nodeBorder = this.border1),
+ (this.clusterBkg = this.secondBkg),
+ (this.clusterBorder = this.border2),
+ (this.defaultLinkColor = this.lineColor),
+ (this.titleColor = this.text),
+ (this.sectionBkgColor = (0, p.Z)(this.contrast, 30)),
+ (this.sectionBkgColor2 = (0, p.Z)(this.contrast, 30)),
+ (this.taskBorderColor = (0, d.Z)(this.contrast, 10)),
+ (this.taskBkgColor = this.contrast),
+ (this.taskTextColor = this.taskTextLightColor),
+ (this.taskTextDarkColor = this.text),
+ (this.taskTextOutsideColor = this.taskTextDarkColor),
+ (this.activeTaskBorderColor = this.taskBorderColor),
+ (this.activeTaskBkgColor = this.mainBkg),
+ (this.gridColor = (0, p.Z)(this.border1, 30)),
+ (this.doneTaskBkgColor = this.done),
+ (this.doneTaskBorderColor = this.lineColor),
+ (this.critBkgColor = this.critical),
+ (this.critBorderColor = (0, d.Z)(this.critBkgColor, 10)),
+ (this.todayLineColor = this.critBkgColor),
+ (this.transitionColor = this.transitionColor || "#000"),
+ (this.transitionLabelColor = this.transitionLabelColor || this.textColor),
+ (this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor),
+ (this.stateBkg = this.stateBkg || this.mainBkg),
+ (this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg),
+ (this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor),
+ (this.altBackground = this.altBackground || "#f4f4f4"),
+ (this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg),
+ (this.stateBorder = this.stateBorder || "#000"),
+ (this.innerEndBackground = this.primaryBorderColor),
+ (this.specialStateColor = "#222"),
+ (this.errorBkgColor = this.errorBkgColor || this.tertiaryColor),
+ (this.errorTextColor = this.errorTextColor || this.tertiaryTextColor),
+ (this.classText = this.primaryTextColor),
+ (this.fillType0 = this.primaryColor),
+ (this.fillType1 = this.secondaryColor),
+ (this.fillType2 = c(this.primaryColor, { h: 64 })),
+ (this.fillType3 = c(this.secondaryColor, { h: 64 })),
+ (this.fillType4 = c(this.primaryColor, { h: -64 })),
+ (this.fillType5 = c(this.secondaryColor, { h: -64 })),
+ (this.fillType6 = c(this.primaryColor, { h: 128 })),
+ (this.fillType7 = c(this.secondaryColor, { h: 128 }));
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++) this["pie" + t] = this["cScale" + t];
+ (this.pie12 = this.pie0),
+ (this.pieTitleTextSize = this.pieTitleTextSize || "25px"),
+ (this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor),
+ (this.pieSectionTextSize = this.pieSectionTextSize || "17px"),
+ (this.pieSectionTextColor = this.pieSectionTextColor || this.textColor),
+ (this.pieLegendTextSize = this.pieLegendTextSize || "17px"),
+ (this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor),
+ (this.pieStrokeColor = this.pieStrokeColor || "black"),
+ (this.pieStrokeWidth = this.pieStrokeWidth || "2px"),
+ (this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px"),
+ (this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black"),
+ (this.pieOpacity = this.pieOpacity || "0.7"),
+ (this.quadrant1Fill = this.quadrant1Fill || this.primaryColor),
+ (this.quadrant2Fill = this.quadrant2Fill || c(this.primaryColor, { r: 5, g: 5, b: 5 })),
+ (this.quadrant3Fill = this.quadrant3Fill || c(this.primaryColor, { r: 10, g: 10, b: 10 })),
+ (this.quadrant4Fill = this.quadrant4Fill || c(this.primaryColor, { r: 15, g: 15, b: 15 })),
+ (this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor),
+ (this.quadrant2TextFill = this.quadrant2TextFill || c(this.primaryTextColor, { r: -5, g: -5, b: -5 })),
+ (this.quadrant3TextFill = this.quadrant3TextFill || c(this.primaryTextColor, { r: -10, g: -10, b: -10 })),
+ (this.quadrant4TextFill = this.quadrant4TextFill || c(this.primaryTextColor, { r: -15, g: -15, b: -15 })),
+ (this.quadrantPointFill =
+ this.quadrantPointFill || (0, g.Z)(this.quadrant1Fill) ? (0, p.Z)(this.quadrant1Fill) : (0, d.Z)(this.quadrant1Fill)),
+ (this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor),
+ (this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor),
+ (this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor),
+ (this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor),
+ (this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor),
+ (this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor),
+ (this.requirementBackground = this.requirementBackground || this.primaryColor),
+ (this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor),
+ (this.requirementBorderSize = this.requirementBorderSize || "1"),
+ (this.requirementTextColor = this.requirementTextColor || this.primaryTextColor),
+ (this.relationColor = this.relationColor || this.lineColor),
+ (this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground),
+ (this.relationLabelColor = this.relationLabelColor || this.actorTextColor),
+ (this.git0 = (0, d.Z)(this.pie1, 25) || this.primaryColor),
+ (this.git1 = this.pie2 || this.secondaryColor),
+ (this.git2 = this.pie3 || this.tertiaryColor),
+ (this.git3 = this.pie4 || c(this.primaryColor, { h: -30 })),
+ (this.git4 = this.pie5 || c(this.primaryColor, { h: -60 })),
+ (this.git5 = this.pie6 || c(this.primaryColor, { h: -90 })),
+ (this.git6 = this.pie7 || c(this.primaryColor, { h: 60 })),
+ (this.git7 = this.pie8 || c(this.primaryColor, { h: 120 })),
+ (this.gitInv0 = this.gitInv0 || f(this.git0)),
+ (this.gitInv1 = this.gitInv1 || f(this.git1)),
+ (this.gitInv2 = this.gitInv2 || f(this.git2)),
+ (this.gitInv3 = this.gitInv3 || f(this.git3)),
+ (this.gitInv4 = this.gitInv4 || f(this.git4)),
+ (this.gitInv5 = this.gitInv5 || f(this.git5)),
+ (this.gitInv6 = this.gitInv6 || f(this.git6)),
+ (this.gitInv7 = this.gitInv7 || f(this.git7)),
+ (this.branchLabelColor = this.branchLabelColor || this.labelTextColor),
+ (this.gitBranchLabel0 = this.branchLabelColor),
+ (this.gitBranchLabel1 = "white"),
+ (this.gitBranchLabel2 = this.branchLabelColor),
+ (this.gitBranchLabel3 = "white"),
+ (this.gitBranchLabel4 = this.branchLabelColor),
+ (this.gitBranchLabel5 = this.branchLabelColor),
+ (this.gitBranchLabel6 = this.branchLabelColor),
+ (this.gitBranchLabel7 = this.branchLabelColor),
+ (this.tagLabelColor = this.tagLabelColor || this.primaryTextColor),
+ (this.tagLabelBackground = this.tagLabelBackground || this.primaryColor),
+ (this.tagLabelBorder = this.tagBorder || this.primaryBorderColor),
+ (this.tagLabelFontSize = this.tagLabelFontSize || "10px"),
+ (this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor),
+ (this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor),
+ (this.commitLabelFontSize = this.commitLabelFontSize || "10px"),
+ (this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || yt),
+ (this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || _t);
+ }
+ calculate(t) {
+ if ("object" != typeof t) return void this.updateColors();
+ const e = Object.keys(t);
+ e.forEach((e) => {
+ this[e] = t[e];
+ }),
+ this.updateColors(),
+ e.forEach((e) => {
+ this[e] = t[e];
+ });
+ }
+ }
+ const xt = {
+ base: {
+ getThemeVariables: (t) => {
+ const e = new (class {
+ constructor() {
+ (this.background = "#f4f4f4"),
+ (this.primaryColor = "#fff4dd"),
+ (this.noteBkgColor = "#fff5ad"),
+ (this.noteTextColor = "#333"),
+ (this.THEME_COLOR_LIMIT = 12),
+ (this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif'),
+ (this.fontSize = "16px");
+ }
+ updateColors() {
+ if (
+ ((this.primaryTextColor = this.primaryTextColor || (this.darkMode ? "#eee" : "#333")),
+ (this.secondaryColor = this.secondaryColor || c(this.primaryColor, { h: -120 })),
+ (this.tertiaryColor = this.tertiaryColor || c(this.primaryColor, { h: 180, l: 5 })),
+ (this.primaryBorderColor = this.primaryBorderColor || mt(this.primaryColor, this.darkMode)),
+ (this.secondaryBorderColor = this.secondaryBorderColor || mt(this.secondaryColor, this.darkMode)),
+ (this.tertiaryBorderColor = this.tertiaryBorderColor || mt(this.tertiaryColor, this.darkMode)),
+ (this.noteBorderColor = this.noteBorderColor || mt(this.noteBkgColor, this.darkMode)),
+ (this.noteBkgColor = this.noteBkgColor || "#fff5ad"),
+ (this.noteTextColor = this.noteTextColor || "#333"),
+ (this.secondaryTextColor = this.secondaryTextColor || f(this.secondaryColor)),
+ (this.tertiaryTextColor = this.tertiaryTextColor || f(this.tertiaryColor)),
+ (this.lineColor = this.lineColor || f(this.background)),
+ (this.arrowheadColor = this.arrowheadColor || f(this.background)),
+ (this.textColor = this.textColor || this.primaryTextColor),
+ (this.border2 = this.border2 || this.tertiaryBorderColor),
+ (this.nodeBkg = this.nodeBkg || this.primaryColor),
+ (this.mainBkg = this.mainBkg || this.primaryColor),
+ (this.nodeBorder = this.nodeBorder || this.primaryBorderColor),
+ (this.clusterBkg = this.clusterBkg || this.tertiaryColor),
+ (this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor),
+ (this.defaultLinkColor = this.defaultLinkColor || this.lineColor),
+ (this.titleColor = this.titleColor || this.tertiaryTextColor),
+ (this.edgeLabelBackground =
+ this.edgeLabelBackground || (this.darkMode ? (0, d.Z)(this.secondaryColor, 30) : this.secondaryColor)),
+ (this.nodeTextColor = this.nodeTextColor || this.primaryTextColor),
+ (this.actorBorder = this.actorBorder || this.primaryBorderColor),
+ (this.actorBkg = this.actorBkg || this.mainBkg),
+ (this.actorTextColor = this.actorTextColor || this.primaryTextColor),
+ (this.actorLineColor = this.actorLineColor || "grey"),
+ (this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg),
+ (this.signalColor = this.signalColor || this.textColor),
+ (this.signalTextColor = this.signalTextColor || this.textColor),
+ (this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder),
+ (this.labelTextColor = this.labelTextColor || this.actorTextColor),
+ (this.loopTextColor = this.loopTextColor || this.actorTextColor),
+ (this.activationBorderColor = this.activationBorderColor || (0, d.Z)(this.secondaryColor, 10)),
+ (this.activationBkgColor = this.activationBkgColor || this.secondaryColor),
+ (this.sequenceNumberColor = this.sequenceNumberColor || f(this.lineColor)),
+ (this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor),
+ (this.altSectionBkgColor = this.altSectionBkgColor || "white"),
+ (this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor),
+ (this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor),
+ (this.excludeBkgColor = this.excludeBkgColor || "#eeeeee"),
+ (this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor),
+ (this.taskBkgColor = this.taskBkgColor || this.primaryColor),
+ (this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor),
+ (this.activeTaskBkgColor = this.activeTaskBkgColor || (0, p.Z)(this.primaryColor, 23)),
+ (this.gridColor = this.gridColor || "lightgrey"),
+ (this.doneTaskBkgColor = this.doneTaskBkgColor || "lightgrey"),
+ (this.doneTaskBorderColor = this.doneTaskBorderColor || "grey"),
+ (this.critBorderColor = this.critBorderColor || "#ff8888"),
+ (this.critBkgColor = this.critBkgColor || "red"),
+ (this.todayLineColor = this.todayLineColor || "red"),
+ (this.taskTextColor = this.taskTextColor || this.textColor),
+ (this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor),
+ (this.taskTextLightColor = this.taskTextLightColor || this.textColor),
+ (this.taskTextColor = this.taskTextColor || this.primaryTextColor),
+ (this.taskTextDarkColor = this.taskTextDarkColor || this.textColor),
+ (this.taskTextClickableColor = this.taskTextClickableColor || "#003163"),
+ (this.personBorder = this.personBorder || this.primaryBorderColor),
+ (this.personBkg = this.personBkg || this.mainBkg),
+ (this.transitionColor = this.transitionColor || this.lineColor),
+ (this.transitionLabelColor = this.transitionLabelColor || this.textColor),
+ (this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor),
+ (this.stateBkg = this.stateBkg || this.mainBkg),
+ (this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg),
+ (this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor),
+ (this.altBackground = this.altBackground || this.tertiaryColor),
+ (this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg),
+ (this.compositeBorder = this.compositeBorder || this.nodeBorder),
+ (this.innerEndBackground = this.nodeBorder),
+ (this.errorBkgColor = this.errorBkgColor || this.tertiaryColor),
+ (this.errorTextColor = this.errorTextColor || this.tertiaryTextColor),
+ (this.transitionColor = this.transitionColor || this.lineColor),
+ (this.specialStateColor = this.lineColor),
+ (this.cScale0 = this.cScale0 || this.primaryColor),
+ (this.cScale1 = this.cScale1 || this.secondaryColor),
+ (this.cScale2 = this.cScale2 || this.tertiaryColor),
+ (this.cScale3 = this.cScale3 || c(this.primaryColor, { h: 30 })),
+ (this.cScale4 = this.cScale4 || c(this.primaryColor, { h: 60 })),
+ (this.cScale5 = this.cScale5 || c(this.primaryColor, { h: 90 })),
+ (this.cScale6 = this.cScale6 || c(this.primaryColor, { h: 120 })),
+ (this.cScale7 = this.cScale7 || c(this.primaryColor, { h: 150 })),
+ (this.cScale8 = this.cScale8 || c(this.primaryColor, { h: 210, l: 150 })),
+ (this.cScale9 = this.cScale9 || c(this.primaryColor, { h: 270 })),
+ (this.cScale10 = this.cScale10 || c(this.primaryColor, { h: 300 })),
+ (this.cScale11 = this.cScale11 || c(this.primaryColor, { h: 330 })),
+ this.darkMode)
+ )
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++) this["cScale" + t] = (0, d.Z)(this["cScale" + t], 75);
+ else for (let t = 0; t < this.THEME_COLOR_LIMIT; t++) this["cScale" + t] = (0, d.Z)(this["cScale" + t], 25);
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++) this["cScaleInv" + t] = this["cScaleInv" + t] || f(this["cScale" + t]);
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++)
+ this.darkMode
+ ? (this["cScalePeer" + t] = this["cScalePeer" + t] || (0, p.Z)(this["cScale" + t], 10))
+ : (this["cScalePeer" + t] = this["cScalePeer" + t] || (0, d.Z)(this["cScale" + t], 10));
+ this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++) this["cScaleLabel" + t] = this["cScaleLabel" + t] || this.scaleLabelColor;
+ const t = this.darkMode ? -4 : -1;
+ for (let e = 0; e < 5; e++)
+ (this["surface" + e] = this["surface" + e] || c(this.mainBkg, { h: 180, s: -15, l: t * (5 + 3 * e) })),
+ (this["surfacePeer" + e] = this["surfacePeer" + e] || c(this.mainBkg, { h: 180, s: -15, l: t * (8 + 3 * e) }));
+ (this.classText = this.classText || this.textColor),
+ (this.fillType0 = this.fillType0 || this.primaryColor),
+ (this.fillType1 = this.fillType1 || this.secondaryColor),
+ (this.fillType2 = this.fillType2 || c(this.primaryColor, { h: 64 })),
+ (this.fillType3 = this.fillType3 || c(this.secondaryColor, { h: 64 })),
+ (this.fillType4 = this.fillType4 || c(this.primaryColor, { h: -64 })),
+ (this.fillType5 = this.fillType5 || c(this.secondaryColor, { h: -64 })),
+ (this.fillType6 = this.fillType6 || c(this.primaryColor, { h: 128 })),
+ (this.fillType7 = this.fillType7 || c(this.secondaryColor, { h: 128 })),
+ (this.pie1 = this.pie1 || this.primaryColor),
+ (this.pie2 = this.pie2 || this.secondaryColor),
+ (this.pie3 = this.pie3 || this.tertiaryColor),
+ (this.pie4 = this.pie4 || c(this.primaryColor, { l: -10 })),
+ (this.pie5 = this.pie5 || c(this.secondaryColor, { l: -10 })),
+ (this.pie6 = this.pie6 || c(this.tertiaryColor, { l: -10 })),
+ (this.pie7 = this.pie7 || c(this.primaryColor, { h: 60, l: -10 })),
+ (this.pie8 = this.pie8 || c(this.primaryColor, { h: -60, l: -10 })),
+ (this.pie9 = this.pie9 || c(this.primaryColor, { h: 120, l: 0 })),
+ (this.pie10 = this.pie10 || c(this.primaryColor, { h: 60, l: -20 })),
+ (this.pie11 = this.pie11 || c(this.primaryColor, { h: -60, l: -20 })),
+ (this.pie12 = this.pie12 || c(this.primaryColor, { h: 120, l: -10 })),
+ (this.pieTitleTextSize = this.pieTitleTextSize || "25px"),
+ (this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor),
+ (this.pieSectionTextSize = this.pieSectionTextSize || "17px"),
+ (this.pieSectionTextColor = this.pieSectionTextColor || this.textColor),
+ (this.pieLegendTextSize = this.pieLegendTextSize || "17px"),
+ (this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor),
+ (this.pieStrokeColor = this.pieStrokeColor || "black"),
+ (this.pieStrokeWidth = this.pieStrokeWidth || "2px"),
+ (this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px"),
+ (this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black"),
+ (this.pieOpacity = this.pieOpacity || "0.7"),
+ (this.quadrant1Fill = this.quadrant1Fill || this.primaryColor),
+ (this.quadrant2Fill = this.quadrant2Fill || c(this.primaryColor, { r: 5, g: 5, b: 5 })),
+ (this.quadrant3Fill = this.quadrant3Fill || c(this.primaryColor, { r: 10, g: 10, b: 10 })),
+ (this.quadrant4Fill = this.quadrant4Fill || c(this.primaryColor, { r: 15, g: 15, b: 15 })),
+ (this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor),
+ (this.quadrant2TextFill = this.quadrant2TextFill || c(this.primaryTextColor, { r: -5, g: -5, b: -5 })),
+ (this.quadrant3TextFill = this.quadrant3TextFill || c(this.primaryTextColor, { r: -10, g: -10, b: -10 })),
+ (this.quadrant4TextFill = this.quadrant4TextFill || c(this.primaryTextColor, { r: -15, g: -15, b: -15 })),
+ (this.quadrantPointFill =
+ this.quadrantPointFill || (0, g.Z)(this.quadrant1Fill) ? (0, p.Z)(this.quadrant1Fill) : (0, d.Z)(this.quadrant1Fill)),
+ (this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor),
+ (this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor),
+ (this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor),
+ (this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor),
+ (this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor),
+ (this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor),
+ (this.requirementBackground = this.requirementBackground || this.primaryColor),
+ (this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor),
+ (this.requirementBorderSize = this.requirementBorderSize || "1"),
+ (this.requirementTextColor = this.requirementTextColor || this.primaryTextColor),
+ (this.relationColor = this.relationColor || this.lineColor),
+ (this.relationLabelBackground =
+ this.relationLabelBackground || (this.darkMode ? (0, d.Z)(this.secondaryColor, 30) : this.secondaryColor)),
+ (this.relationLabelColor = this.relationLabelColor || this.actorTextColor),
+ (this.git0 = this.git0 || this.primaryColor),
+ (this.git1 = this.git1 || this.secondaryColor),
+ (this.git2 = this.git2 || this.tertiaryColor),
+ (this.git3 = this.git3 || c(this.primaryColor, { h: -30 })),
+ (this.git4 = this.git4 || c(this.primaryColor, { h: -60 })),
+ (this.git5 = this.git5 || c(this.primaryColor, { h: -90 })),
+ (this.git6 = this.git6 || c(this.primaryColor, { h: 60 })),
+ (this.git7 = this.git7 || c(this.primaryColor, { h: 120 })),
+ this.darkMode
+ ? ((this.git0 = (0, p.Z)(this.git0, 25)),
+ (this.git1 = (0, p.Z)(this.git1, 25)),
+ (this.git2 = (0, p.Z)(this.git2, 25)),
+ (this.git3 = (0, p.Z)(this.git3, 25)),
+ (this.git4 = (0, p.Z)(this.git4, 25)),
+ (this.git5 = (0, p.Z)(this.git5, 25)),
+ (this.git6 = (0, p.Z)(this.git6, 25)),
+ (this.git7 = (0, p.Z)(this.git7, 25)))
+ : ((this.git0 = (0, d.Z)(this.git0, 25)),
+ (this.git1 = (0, d.Z)(this.git1, 25)),
+ (this.git2 = (0, d.Z)(this.git2, 25)),
+ (this.git3 = (0, d.Z)(this.git3, 25)),
+ (this.git4 = (0, d.Z)(this.git4, 25)),
+ (this.git5 = (0, d.Z)(this.git5, 25)),
+ (this.git6 = (0, d.Z)(this.git6, 25)),
+ (this.git7 = (0, d.Z)(this.git7, 25))),
+ (this.gitInv0 = this.gitInv0 || f(this.git0)),
+ (this.gitInv1 = this.gitInv1 || f(this.git1)),
+ (this.gitInv2 = this.gitInv2 || f(this.git2)),
+ (this.gitInv3 = this.gitInv3 || f(this.git3)),
+ (this.gitInv4 = this.gitInv4 || f(this.git4)),
+ (this.gitInv5 = this.gitInv5 || f(this.git5)),
+ (this.gitInv6 = this.gitInv6 || f(this.git6)),
+ (this.gitInv7 = this.gitInv7 || f(this.git7)),
+ (this.branchLabelColor = this.branchLabelColor || (this.darkMode ? "black" : this.labelTextColor)),
+ (this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor),
+ (this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor),
+ (this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor),
+ (this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor),
+ (this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor),
+ (this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor),
+ (this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor),
+ (this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor),
+ (this.tagLabelColor = this.tagLabelColor || this.primaryTextColor),
+ (this.tagLabelBackground = this.tagLabelBackground || this.primaryColor),
+ (this.tagLabelBorder = this.tagBorder || this.primaryBorderColor),
+ (this.tagLabelFontSize = this.tagLabelFontSize || "10px"),
+ (this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor),
+ (this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor),
+ (this.commitLabelFontSize = this.commitLabelFontSize || "10px"),
+ (this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || yt),
+ (this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || _t);
+ }
+ calculate(t) {
+ if ("object" != typeof t) return void this.updateColors();
+ const e = Object.keys(t);
+ e.forEach((e) => {
+ this[e] = t[e];
+ }),
+ this.updateColors(),
+ e.forEach((e) => {
+ this[e] = t[e];
+ });
+ }
+ })();
+ return e.calculate(t), e;
+ },
+ },
+ dark: {
+ getThemeVariables: (t) => {
+ const e = new (class {
+ constructor() {
+ (this.background = "#333"),
+ (this.primaryColor = "#1f2020"),
+ (this.secondaryColor = (0, p.Z)(this.primaryColor, 16)),
+ (this.tertiaryColor = c(this.primaryColor, { h: -160 })),
+ (this.primaryBorderColor = f(this.background)),
+ (this.secondaryBorderColor = mt(this.secondaryColor, this.darkMode)),
+ (this.tertiaryBorderColor = mt(this.tertiaryColor, this.darkMode)),
+ (this.primaryTextColor = f(this.primaryColor)),
+ (this.secondaryTextColor = f(this.secondaryColor)),
+ (this.tertiaryTextColor = f(this.tertiaryColor)),
+ (this.lineColor = f(this.background)),
+ (this.textColor = f(this.background)),
+ (this.mainBkg = "#1f2020"),
+ (this.secondBkg = "calculated"),
+ (this.mainContrastColor = "lightgrey"),
+ (this.darkTextColor = (0, p.Z)(f("#323D47"), 10)),
+ (this.lineColor = "calculated"),
+ (this.border1 = "#81B1DB"),
+ (this.border2 = (0, u.Z)(255, 255, 255, 0.25)),
+ (this.arrowheadColor = "calculated"),
+ (this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif'),
+ (this.fontSize = "16px"),
+ (this.labelBackground = "#181818"),
+ (this.textColor = "#ccc"),
+ (this.THEME_COLOR_LIMIT = 12),
+ (this.nodeBkg = "calculated"),
+ (this.nodeBorder = "calculated"),
+ (this.clusterBkg = "calculated"),
+ (this.clusterBorder = "calculated"),
+ (this.defaultLinkColor = "calculated"),
+ (this.titleColor = "#F9FFFE"),
+ (this.edgeLabelBackground = "calculated"),
+ (this.actorBorder = "calculated"),
+ (this.actorBkg = "calculated"),
+ (this.actorTextColor = "calculated"),
+ (this.actorLineColor = "calculated"),
+ (this.signalColor = "calculated"),
+ (this.signalTextColor = "calculated"),
+ (this.labelBoxBkgColor = "calculated"),
+ (this.labelBoxBorderColor = "calculated"),
+ (this.labelTextColor = "calculated"),
+ (this.loopTextColor = "calculated"),
+ (this.noteBorderColor = "calculated"),
+ (this.noteBkgColor = "#fff5ad"),
+ (this.noteTextColor = "calculated"),
+ (this.activationBorderColor = "calculated"),
+ (this.activationBkgColor = "calculated"),
+ (this.sequenceNumberColor = "black"),
+ (this.sectionBkgColor = (0, d.Z)("#EAE8D9", 30)),
+ (this.altSectionBkgColor = "calculated"),
+ (this.sectionBkgColor2 = "#EAE8D9"),
+ (this.excludeBkgColor = (0, d.Z)(this.sectionBkgColor, 10)),
+ (this.taskBorderColor = (0, u.Z)(255, 255, 255, 70)),
+ (this.taskBkgColor = "calculated"),
+ (this.taskTextColor = "calculated"),
+ (this.taskTextLightColor = "calculated"),
+ (this.taskTextOutsideColor = "calculated"),
+ (this.taskTextClickableColor = "#003163"),
+ (this.activeTaskBorderColor = (0, u.Z)(255, 255, 255, 50)),
+ (this.activeTaskBkgColor = "#81B1DB"),
+ (this.gridColor = "calculated"),
+ (this.doneTaskBkgColor = "calculated"),
+ (this.doneTaskBorderColor = "grey"),
+ (this.critBorderColor = "#E83737"),
+ (this.critBkgColor = "#E83737"),
+ (this.taskTextDarkColor = "calculated"),
+ (this.todayLineColor = "#DB5757"),
+ (this.personBorder = this.primaryBorderColor),
+ (this.personBkg = this.mainBkg),
+ (this.labelColor = "calculated"),
+ (this.errorBkgColor = "#a44141"),
+ (this.errorTextColor = "#ddd");
+ }
+ updateColors() {
+ (this.secondBkg = (0, p.Z)(this.mainBkg, 16)),
+ (this.lineColor = this.mainContrastColor),
+ (this.arrowheadColor = this.mainContrastColor),
+ (this.nodeBkg = this.mainBkg),
+ (this.nodeBorder = this.border1),
+ (this.clusterBkg = this.secondBkg),
+ (this.clusterBorder = this.border2),
+ (this.defaultLinkColor = this.lineColor),
+ (this.edgeLabelBackground = (0, p.Z)(this.labelBackground, 25)),
+ (this.actorBorder = this.border1),
+ (this.actorBkg = this.mainBkg),
+ (this.actorTextColor = this.mainContrastColor),
+ (this.actorLineColor = this.mainContrastColor),
+ (this.signalColor = this.mainContrastColor),
+ (this.signalTextColor = this.mainContrastColor),
+ (this.labelBoxBkgColor = this.actorBkg),
+ (this.labelBoxBorderColor = this.actorBorder),
+ (this.labelTextColor = this.mainContrastColor),
+ (this.loopTextColor = this.mainContrastColor),
+ (this.noteBorderColor = this.secondaryBorderColor),
+ (this.noteBkgColor = this.secondBkg),
+ (this.noteTextColor = this.secondaryTextColor),
+ (this.activationBorderColor = this.border1),
+ (this.activationBkgColor = this.secondBkg),
+ (this.altSectionBkgColor = this.background),
+ (this.taskBkgColor = (0, p.Z)(this.mainBkg, 23)),
+ (this.taskTextColor = this.darkTextColor),
+ (this.taskTextLightColor = this.mainContrastColor),
+ (this.taskTextOutsideColor = this.taskTextLightColor),
+ (this.gridColor = this.mainContrastColor),
+ (this.doneTaskBkgColor = this.mainContrastColor),
+ (this.taskTextDarkColor = this.darkTextColor),
+ (this.transitionColor = this.transitionColor || this.lineColor),
+ (this.transitionLabelColor = this.transitionLabelColor || this.textColor),
+ (this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor),
+ (this.stateBkg = this.stateBkg || this.mainBkg),
+ (this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg),
+ (this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor),
+ (this.altBackground = this.altBackground || "#555"),
+ (this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg),
+ (this.compositeBorder = this.compositeBorder || this.nodeBorder),
+ (this.innerEndBackground = this.primaryBorderColor),
+ (this.specialStateColor = "#f4f4f4"),
+ (this.errorBkgColor = this.errorBkgColor || this.tertiaryColor),
+ (this.errorTextColor = this.errorTextColor || this.tertiaryTextColor),
+ (this.fillType0 = this.primaryColor),
+ (this.fillType1 = this.secondaryColor),
+ (this.fillType2 = c(this.primaryColor, { h: 64 })),
+ (this.fillType3 = c(this.secondaryColor, { h: 64 })),
+ (this.fillType4 = c(this.primaryColor, { h: -64 })),
+ (this.fillType5 = c(this.secondaryColor, { h: -64 })),
+ (this.fillType6 = c(this.primaryColor, { h: 128 })),
+ (this.fillType7 = c(this.secondaryColor, { h: 128 })),
+ (this.cScale1 = this.cScale1 || "#0b0000"),
+ (this.cScale2 = this.cScale2 || "#4d1037"),
+ (this.cScale3 = this.cScale3 || "#3f5258"),
+ (this.cScale4 = this.cScale4 || "#4f2f1b"),
+ (this.cScale5 = this.cScale5 || "#6e0a0a"),
+ (this.cScale6 = this.cScale6 || "#3b0048"),
+ (this.cScale7 = this.cScale7 || "#995a01"),
+ (this.cScale8 = this.cScale8 || "#154706"),
+ (this.cScale9 = this.cScale9 || "#161722"),
+ (this.cScale10 = this.cScale10 || "#00296f"),
+ (this.cScale11 = this.cScale11 || "#01629c"),
+ (this.cScale12 = this.cScale12 || "#010029"),
+ (this.cScale0 = this.cScale0 || this.primaryColor),
+ (this.cScale1 = this.cScale1 || this.secondaryColor),
+ (this.cScale2 = this.cScale2 || this.tertiaryColor),
+ (this.cScale3 = this.cScale3 || c(this.primaryColor, { h: 30 })),
+ (this.cScale4 = this.cScale4 || c(this.primaryColor, { h: 60 })),
+ (this.cScale5 = this.cScale5 || c(this.primaryColor, { h: 90 })),
+ (this.cScale6 = this.cScale6 || c(this.primaryColor, { h: 120 })),
+ (this.cScale7 = this.cScale7 || c(this.primaryColor, { h: 150 })),
+ (this.cScale8 = this.cScale8 || c(this.primaryColor, { h: 210 })),
+ (this.cScale9 = this.cScale9 || c(this.primaryColor, { h: 270 })),
+ (this.cScale10 = this.cScale10 || c(this.primaryColor, { h: 300 })),
+ (this.cScale11 = this.cScale11 || c(this.primaryColor, { h: 330 }));
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++) this["cScaleInv" + t] = this["cScaleInv" + t] || f(this["cScale" + t]);
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++)
+ this["cScalePeer" + t] = this["cScalePeer" + t] || (0, p.Z)(this["cScale" + t], 10);
+ for (let t = 0; t < 5; t++)
+ (this["surface" + t] = this["surface" + t] || c(this.mainBkg, { h: 30, s: -30, l: -(4 * t - 10) })),
+ (this["surfacePeer" + t] = this["surfacePeer" + t] || c(this.mainBkg, { h: 30, s: -30, l: -(4 * t - 7) }));
+ this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? "black" : this.labelTextColor);
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++) this["cScaleLabel" + t] = this["cScaleLabel" + t] || this.scaleLabelColor;
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++) this["pie" + t] = this["cScale" + t];
+ (this.pieTitleTextSize = this.pieTitleTextSize || "25px"),
+ (this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor),
+ (this.pieSectionTextSize = this.pieSectionTextSize || "17px"),
+ (this.pieSectionTextColor = this.pieSectionTextColor || this.textColor),
+ (this.pieLegendTextSize = this.pieLegendTextSize || "17px"),
+ (this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor),
+ (this.pieStrokeColor = this.pieStrokeColor || "black"),
+ (this.pieStrokeWidth = this.pieStrokeWidth || "2px"),
+ (this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px"),
+ (this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black"),
+ (this.pieOpacity = this.pieOpacity || "0.7"),
+ (this.quadrant1Fill = this.quadrant1Fill || this.primaryColor),
+ (this.quadrant2Fill = this.quadrant2Fill || c(this.primaryColor, { r: 5, g: 5, b: 5 })),
+ (this.quadrant3Fill = this.quadrant3Fill || c(this.primaryColor, { r: 10, g: 10, b: 10 })),
+ (this.quadrant4Fill = this.quadrant4Fill || c(this.primaryColor, { r: 15, g: 15, b: 15 })),
+ (this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor),
+ (this.quadrant2TextFill = this.quadrant2TextFill || c(this.primaryTextColor, { r: -5, g: -5, b: -5 })),
+ (this.quadrant3TextFill = this.quadrant3TextFill || c(this.primaryTextColor, { r: -10, g: -10, b: -10 })),
+ (this.quadrant4TextFill = this.quadrant4TextFill || c(this.primaryTextColor, { r: -15, g: -15, b: -15 })),
+ (this.quadrantPointFill =
+ this.quadrantPointFill || (0, g.Z)(this.quadrant1Fill) ? (0, p.Z)(this.quadrant1Fill) : (0, d.Z)(this.quadrant1Fill)),
+ (this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor),
+ (this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor),
+ (this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor),
+ (this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor),
+ (this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor),
+ (this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor),
+ (this.classText = this.primaryTextColor),
+ (this.requirementBackground = this.requirementBackground || this.primaryColor),
+ (this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor),
+ (this.requirementBorderSize = this.requirementBorderSize || "1"),
+ (this.requirementTextColor = this.requirementTextColor || this.primaryTextColor),
+ (this.relationColor = this.relationColor || this.lineColor),
+ (this.relationLabelBackground =
+ this.relationLabelBackground || (this.darkMode ? (0, d.Z)(this.secondaryColor, 30) : this.secondaryColor)),
+ (this.relationLabelColor = this.relationLabelColor || this.actorTextColor),
+ (this.git0 = (0, p.Z)(this.secondaryColor, 20)),
+ (this.git1 = (0, p.Z)(this.pie2 || this.secondaryColor, 20)),
+ (this.git2 = (0, p.Z)(this.pie3 || this.tertiaryColor, 20)),
+ (this.git3 = (0, p.Z)(this.pie4 || c(this.primaryColor, { h: -30 }), 20)),
+ (this.git4 = (0, p.Z)(this.pie5 || c(this.primaryColor, { h: -60 }), 20)),
+ (this.git5 = (0, p.Z)(this.pie6 || c(this.primaryColor, { h: -90 }), 10)),
+ (this.git6 = (0, p.Z)(this.pie7 || c(this.primaryColor, { h: 60 }), 10)),
+ (this.git7 = (0, p.Z)(this.pie8 || c(this.primaryColor, { h: 120 }), 20)),
+ (this.gitInv0 = this.gitInv0 || f(this.git0)),
+ (this.gitInv1 = this.gitInv1 || f(this.git1)),
+ (this.gitInv2 = this.gitInv2 || f(this.git2)),
+ (this.gitInv3 = this.gitInv3 || f(this.git3)),
+ (this.gitInv4 = this.gitInv4 || f(this.git4)),
+ (this.gitInv5 = this.gitInv5 || f(this.git5)),
+ (this.gitInv6 = this.gitInv6 || f(this.git6)),
+ (this.gitInv7 = this.gitInv7 || f(this.git7)),
+ (this.gitBranchLabel0 = this.gitBranchLabel0 || f(this.labelTextColor)),
+ (this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor),
+ (this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor),
+ (this.gitBranchLabel3 = this.gitBranchLabel3 || f(this.labelTextColor)),
+ (this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor),
+ (this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor),
+ (this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor),
+ (this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor),
+ (this.tagLabelColor = this.tagLabelColor || this.primaryTextColor),
+ (this.tagLabelBackground = this.tagLabelBackground || this.primaryColor),
+ (this.tagLabelBorder = this.tagBorder || this.primaryBorderColor),
+ (this.tagLabelFontSize = this.tagLabelFontSize || "10px"),
+ (this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor),
+ (this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor),
+ (this.commitLabelFontSize = this.commitLabelFontSize || "10px"),
+ (this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || (0, p.Z)(this.background, 12)),
+ (this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || (0, p.Z)(this.background, 2));
+ }
+ calculate(t) {
+ if ("object" != typeof t) return void this.updateColors();
+ const e = Object.keys(t);
+ e.forEach((e) => {
+ this[e] = t[e];
+ }),
+ this.updateColors(),
+ e.forEach((e) => {
+ this[e] = t[e];
+ });
+ }
+ })();
+ return e.calculate(t), e;
+ },
+ },
+ default: { getThemeVariables: bt },
+ forest: {
+ getThemeVariables: (t) => {
+ const e = new (class {
+ constructor() {
+ (this.background = "#f4f4f4"),
+ (this.primaryColor = "#cde498"),
+ (this.secondaryColor = "#cdffb2"),
+ (this.background = "white"),
+ (this.mainBkg = "#cde498"),
+ (this.secondBkg = "#cdffb2"),
+ (this.lineColor = "green"),
+ (this.border1 = "#13540c"),
+ (this.border2 = "#6eaa49"),
+ (this.arrowheadColor = "green"),
+ (this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif'),
+ (this.fontSize = "16px"),
+ (this.tertiaryColor = (0, p.Z)("#cde498", 10)),
+ (this.primaryBorderColor = mt(this.primaryColor, this.darkMode)),
+ (this.secondaryBorderColor = mt(this.secondaryColor, this.darkMode)),
+ (this.tertiaryBorderColor = mt(this.tertiaryColor, this.darkMode)),
+ (this.primaryTextColor = f(this.primaryColor)),
+ (this.secondaryTextColor = f(this.secondaryColor)),
+ (this.tertiaryTextColor = f(this.primaryColor)),
+ (this.lineColor = f(this.background)),
+ (this.textColor = f(this.background)),
+ (this.THEME_COLOR_LIMIT = 12),
+ (this.nodeBkg = "calculated"),
+ (this.nodeBorder = "calculated"),
+ (this.clusterBkg = "calculated"),
+ (this.clusterBorder = "calculated"),
+ (this.defaultLinkColor = "calculated"),
+ (this.titleColor = "#333"),
+ (this.edgeLabelBackground = "#e8e8e8"),
+ (this.actorBorder = "calculated"),
+ (this.actorBkg = "calculated"),
+ (this.actorTextColor = "black"),
+ (this.actorLineColor = "grey"),
+ (this.signalColor = "#333"),
+ (this.signalTextColor = "#333"),
+ (this.labelBoxBkgColor = "calculated"),
+ (this.labelBoxBorderColor = "#326932"),
+ (this.labelTextColor = "calculated"),
+ (this.loopTextColor = "calculated"),
+ (this.noteBorderColor = "calculated"),
+ (this.noteBkgColor = "#fff5ad"),
+ (this.noteTextColor = "calculated"),
+ (this.activationBorderColor = "#666"),
+ (this.activationBkgColor = "#f4f4f4"),
+ (this.sequenceNumberColor = "white"),
+ (this.sectionBkgColor = "#6eaa49"),
+ (this.altSectionBkgColor = "white"),
+ (this.sectionBkgColor2 = "#6eaa49"),
+ (this.excludeBkgColor = "#eeeeee"),
+ (this.taskBorderColor = "calculated"),
+ (this.taskBkgColor = "#487e3a"),
+ (this.taskTextLightColor = "white"),
+ (this.taskTextColor = "calculated"),
+ (this.taskTextDarkColor = "black"),
+ (this.taskTextOutsideColor = "calculated"),
+ (this.taskTextClickableColor = "#003163"),
+ (this.activeTaskBorderColor = "calculated"),
+ (this.activeTaskBkgColor = "calculated"),
+ (this.gridColor = "lightgrey"),
+ (this.doneTaskBkgColor = "lightgrey"),
+ (this.doneTaskBorderColor = "grey"),
+ (this.critBorderColor = "#ff8888"),
+ (this.critBkgColor = "red"),
+ (this.todayLineColor = "red"),
+ (this.personBorder = this.primaryBorderColor),
+ (this.personBkg = this.mainBkg),
+ (this.labelColor = "black"),
+ (this.errorBkgColor = "#552222"),
+ (this.errorTextColor = "#552222");
+ }
+ updateColors() {
+ (this.actorBorder = (0, d.Z)(this.mainBkg, 20)),
+ (this.actorBkg = this.mainBkg),
+ (this.labelBoxBkgColor = this.actorBkg),
+ (this.labelTextColor = this.actorTextColor),
+ (this.loopTextColor = this.actorTextColor),
+ (this.noteBorderColor = this.border2),
+ (this.noteTextColor = this.actorTextColor),
+ (this.cScale0 = this.cScale0 || this.primaryColor),
+ (this.cScale1 = this.cScale1 || this.secondaryColor),
+ (this.cScale2 = this.cScale2 || this.tertiaryColor),
+ (this.cScale3 = this.cScale3 || c(this.primaryColor, { h: 30 })),
+ (this.cScale4 = this.cScale4 || c(this.primaryColor, { h: 60 })),
+ (this.cScale5 = this.cScale5 || c(this.primaryColor, { h: 90 })),
+ (this.cScale6 = this.cScale6 || c(this.primaryColor, { h: 120 })),
+ (this.cScale7 = this.cScale7 || c(this.primaryColor, { h: 150 })),
+ (this.cScale8 = this.cScale8 || c(this.primaryColor, { h: 210 })),
+ (this.cScale9 = this.cScale9 || c(this.primaryColor, { h: 270 })),
+ (this.cScale10 = this.cScale10 || c(this.primaryColor, { h: 300 })),
+ (this.cScale11 = this.cScale11 || c(this.primaryColor, { h: 330 })),
+ (this.cScalePeer1 = this.cScalePeer1 || (0, d.Z)(this.secondaryColor, 45)),
+ (this.cScalePeer2 = this.cScalePeer2 || (0, d.Z)(this.tertiaryColor, 40));
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++)
+ (this["cScale" + t] = (0, d.Z)(this["cScale" + t], 10)),
+ (this["cScalePeer" + t] = this["cScalePeer" + t] || (0, d.Z)(this["cScale" + t], 25));
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++) this["cScaleInv" + t] = this["cScaleInv" + t] || c(this["cScale" + t], { h: 180 });
+ this.scaleLabelColor = "calculated" !== this.scaleLabelColor && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor;
+ for (let t = 0; t < this.THEME_COLOR_LIMIT; t++) this["cScaleLabel" + t] = this["cScaleLabel" + t] || this.scaleLabelColor;
+ for (let t = 0; t < 5; t++)
+ (this["surface" + t] = this["surface" + t] || c(this.mainBkg, { h: 30, s: -30, l: -(5 + 5 * t) })),
+ (this["surfacePeer" + t] = this["surfacePeer" + t] || c(this.mainBkg, { h: 30, s: -30, l: -(8 + 5 * t) }));
+ (this.nodeBkg = this.mainBkg),
+ (this.nodeBorder = this.border1),
+ (this.clusterBkg = this.secondBkg),
+ (this.clusterBorder = this.border2),
+ (this.defaultLinkColor = this.lineColor),
+ (this.taskBorderColor = this.border1),
+ (this.taskTextColor = this.taskTextLightColor),
+ (this.taskTextOutsideColor = this.taskTextDarkColor),
+ (this.activeTaskBorderColor = this.taskBorderColor),
+ (this.activeTaskBkgColor = this.mainBkg),
+ (this.transitionColor = this.transitionColor || this.lineColor),
+ (this.transitionLabelColor = this.transitionLabelColor || this.textColor),
+ (this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor),
+ (this.stateBkg = this.stateBkg || this.mainBkg),
+ (this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg),
+ (this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor),
+ (this.altBackground = this.altBackground || "#f0f0f0"),
+ (this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg),
+ (this.compositeBorder = this.compositeBorder || this.nodeBorder),
+ (this.innerEndBackground = this.primaryBorderColor),
+ (this.specialStateColor = this.lineColor),
+ (this.errorBkgColor = this.errorBkgColor || this.tertiaryColor),
+ (this.errorTextColor = this.errorTextColor || this.tertiaryTextColor),
+ (this.transitionColor = this.transitionColor || this.lineColor),
+ (this.classText = this.primaryTextColor),
+ (this.fillType0 = this.primaryColor),
+ (this.fillType1 = this.secondaryColor),
+ (this.fillType2 = c(this.primaryColor, { h: 64 })),
+ (this.fillType3 = c(this.secondaryColor, { h: 64 })),
+ (this.fillType4 = c(this.primaryColor, { h: -64 })),
+ (this.fillType5 = c(this.secondaryColor, { h: -64 })),
+ (this.fillType6 = c(this.primaryColor, { h: 128 })),
+ (this.fillType7 = c(this.secondaryColor, { h: 128 })),
+ (this.pie1 = this.pie1 || this.primaryColor),
+ (this.pie2 = this.pie2 || this.secondaryColor),
+ (this.pie3 = this.pie3 || this.tertiaryColor),
+ (this.pie4 = this.pie4 || c(this.primaryColor, { l: -30 })),
+ (this.pie5 = this.pie5 || c(this.secondaryColor, { l: -30 })),
+ (this.pie6 = this.pie6 || c(this.tertiaryColor, { h: 40, l: -40 })),
+ (this.pie7 = this.pie7 || c(this.primaryColor, { h: 60, l: -10 })),
+ (this.pie8 = this.pie8 || c(this.primaryColor, { h: -60, l: -10 })),
+ (this.pie9 = this.pie9 || c(this.primaryColor, { h: 120, l: 0 })),
+ (this.pie10 = this.pie10 || c(this.primaryColor, { h: 60, l: -50 })),
+ (this.pie11 = this.pie11 || c(this.primaryColor, { h: -60, l: -50 })),
+ (this.pie12 = this.pie12 || c(this.primaryColor, { h: 120, l: -50 })),
+ (this.pieTitleTextSize = this.pieTitleTextSize || "25px"),
+ (this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor),
+ (this.pieSectionTextSize = this.pieSectionTextSize || "17px"),
+ (this.pieSectionTextColor = this.pieSectionTextColor || this.textColor),
+ (this.pieLegendTextSize = this.pieLegendTextSize || "17px"),
+ (this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor),
+ (this.pieStrokeColor = this.pieStrokeColor || "black"),
+ (this.pieStrokeWidth = this.pieStrokeWidth || "2px"),
+ (this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px"),
+ (this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black"),
+ (this.pieOpacity = this.pieOpacity || "0.7"),
+ (this.quadrant1Fill = this.quadrant1Fill || this.primaryColor),
+ (this.quadrant2Fill = this.quadrant2Fill || c(this.primaryColor, { r: 5, g: 5, b: 5 })),
+ (this.quadrant3Fill = this.quadrant3Fill || c(this.primaryColor, { r: 10, g: 10, b: 10 })),
+ (this.quadrant4Fill = this.quadrant4Fill || c(this.primaryColor, { r: 15, g: 15, b: 15 })),
+ (this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor),
+ (this.quadrant2TextFill = this.quadrant2TextFill || c(this.primaryTextColor, { r: -5, g: -5, b: -5 })),
+ (this.quadrant3TextFill = this.quadrant3TextFill || c(this.primaryTextColor, { r: -10, g: -10, b: -10 })),
+ (this.quadrant4TextFill = this.quadrant4TextFill || c(this.primaryTextColor, { r: -15, g: -15, b: -15 })),
+ (this.quadrantPointFill =
+ this.quadrantPointFill || (0, g.Z)(this.quadrant1Fill) ? (0, p.Z)(this.quadrant1Fill) : (0, d.Z)(this.quadrant1Fill)),
+ (this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor),
+ (this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor),
+ (this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor),
+ (this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor),
+ (this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor),
+ (this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor),
+ (this.requirementBackground = this.requirementBackground || this.primaryColor),
+ (this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor),
+ (this.requirementBorderSize = this.requirementBorderSize || "1"),
+ (this.requirementTextColor = this.requirementTextColor || this.primaryTextColor),
+ (this.relationColor = this.relationColor || this.lineColor),
+ (this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground),
+ (this.relationLabelColor = this.relationLabelColor || this.actorTextColor),
+ (this.git0 = this.git0 || this.primaryColor),
+ (this.git1 = this.git1 || this.secondaryColor),
+ (this.git2 = this.git2 || this.tertiaryColor),
+ (this.git3 = this.git3 || c(this.primaryColor, { h: -30 })),
+ (this.git4 = this.git4 || c(this.primaryColor, { h: -60 })),
+ (this.git5 = this.git5 || c(this.primaryColor, { h: -90 })),
+ (this.git6 = this.git6 || c(this.primaryColor, { h: 60 })),
+ (this.git7 = this.git7 || c(this.primaryColor, { h: 120 })),
+ this.darkMode
+ ? ((this.git0 = (0, p.Z)(this.git0, 25)),
+ (this.git1 = (0, p.Z)(this.git1, 25)),
+ (this.git2 = (0, p.Z)(this.git2, 25)),
+ (this.git3 = (0, p.Z)(this.git3, 25)),
+ (this.git4 = (0, p.Z)(this.git4, 25)),
+ (this.git5 = (0, p.Z)(this.git5, 25)),
+ (this.git6 = (0, p.Z)(this.git6, 25)),
+ (this.git7 = (0, p.Z)(this.git7, 25)))
+ : ((this.git0 = (0, d.Z)(this.git0, 25)),
+ (this.git1 = (0, d.Z)(this.git1, 25)),
+ (this.git2 = (0, d.Z)(this.git2, 25)),
+ (this.git3 = (0, d.Z)(this.git3, 25)),
+ (this.git4 = (0, d.Z)(this.git4, 25)),
+ (this.git5 = (0, d.Z)(this.git5, 25)),
+ (this.git6 = (0, d.Z)(this.git6, 25)),
+ (this.git7 = (0, d.Z)(this.git7, 25))),
+ (this.gitInv0 = this.gitInv0 || f(this.git0)),
+ (this.gitInv1 = this.gitInv1 || f(this.git1)),
+ (this.gitInv2 = this.gitInv2 || f(this.git2)),
+ (this.gitInv3 = this.gitInv3 || f(this.git3)),
+ (this.gitInv4 = this.gitInv4 || f(this.git4)),
+ (this.gitInv5 = this.gitInv5 || f(this.git5)),
+ (this.gitInv6 = this.gitInv6 || f(this.git6)),
+ (this.gitInv7 = this.gitInv7 || f(this.git7)),
+ (this.gitBranchLabel0 = this.gitBranchLabel0 || f(this.labelTextColor)),
+ (this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor),
+ (this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor),
+ (this.gitBranchLabel3 = this.gitBranchLabel3 || f(this.labelTextColor)),
+ (this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor),
+ (this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor),
+ (this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor),
+ (this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor),
+ (this.tagLabelColor = this.tagLabelColor || this.primaryTextColor),
+ (this.tagLabelBackground = this.tagLabelBackground || this.primaryColor),
+ (this.tagLabelBorder = this.tagBorder || this.primaryBorderColor),
+ (this.tagLabelFontSize = this.tagLabelFontSize || "10px"),
+ (this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor),
+ (this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor),
+ (this.commitLabelFontSize = this.commitLabelFontSize || "10px"),
+ (this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || yt),
+ (this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || _t);
+ }
+ calculate(t) {
+ if ("object" != typeof t) return void this.updateColors();
+ const e = Object.keys(t);
+ e.forEach((e) => {
+ this[e] = t[e];
+ }),
+ this.updateColors(),
+ e.forEach((e) => {
+ this[e] = t[e];
+ });
+ }
+ })();
+ return e.calculate(t), e;
+ },
+ },
+ neutral: {
+ getThemeVariables: (t) => {
+ const e = new Ct();
+ return e.calculate(t), e;
+ },
+ },
+ },
+ vt = {
+ flowchart: {
+ useMaxWidth: !0,
+ titleTopMargin: 25,
+ diagramPadding: 8,
+ htmlLabels: !0,
+ nodeSpacing: 50,
+ rankSpacing: 50,
+ curve: "basis",
+ padding: 15,
+ defaultRenderer: "dagre-wrapper",
+ wrappingWidth: 200,
+ },
+ sequence: {
+ useMaxWidth: !0,
+ hideUnusedParticipants: !1,
+ activationWidth: 10,
+ diagramMarginX: 50,
+ diagramMarginY: 10,
+ actorMargin: 50,
+ width: 150,
+ height: 65,
+ boxMargin: 10,
+ boxTextMargin: 5,
+ noteMargin: 10,
+ messageMargin: 35,
+ messageAlign: "center",
+ mirrorActors: !0,
+ forceMenus: !1,
+ bottomMarginAdj: 1,
+ rightAngles: !1,
+ showSequenceNumbers: !1,
+ actorFontSize: 14,
+ actorFontFamily: '"Open Sans", sans-serif',
+ actorFontWeight: 400,
+ noteFontSize: 14,
+ noteFontFamily: '"trebuchet ms", verdana, arial, sans-serif',
+ noteFontWeight: 400,
+ noteAlign: "center",
+ messageFontSize: 16,
+ messageFontFamily: '"trebuchet ms", verdana, arial, sans-serif',
+ messageFontWeight: 400,
+ wrap: !1,
+ wrapPadding: 10,
+ labelBoxWidth: 50,
+ labelBoxHeight: 20,
+ },
+ gantt: {
+ useMaxWidth: !0,
+ titleTopMargin: 25,
+ barHeight: 20,
+ barGap: 4,
+ topPadding: 50,
+ rightPadding: 75,
+ leftPadding: 75,
+ gridLineStartPadding: 35,
+ fontSize: 11,
+ sectionFontSize: 11,
+ numberSectionStyles: 4,
+ axisFormat: "%Y-%m-%d",
+ topAxis: !1,
+ displayMode: "",
+ weekday: "sunday",
+ },
+ journey: {
+ useMaxWidth: !0,
+ diagramMarginX: 50,
+ diagramMarginY: 10,
+ leftMargin: 150,
+ width: 150,
+ height: 50,
+ boxMargin: 10,
+ boxTextMargin: 5,
+ noteMargin: 10,
+ messageMargin: 35,
+ messageAlign: "center",
+ bottomMarginAdj: 1,
+ rightAngles: !1,
+ taskFontSize: 14,
+ taskFontFamily: '"Open Sans", sans-serif',
+ taskMargin: 50,
+ activationWidth: 10,
+ textPlacement: "fo",
+ actorColours: ["#8FBC8F", "#7CFC00", "#00FFFF", "#20B2AA", "#B0E0E6", "#FFFFE0"],
+ sectionFills: ["#191970", "#8B008B", "#4B0082", "#2F4F4F", "#800000", "#8B4513", "#00008B"],
+ sectionColours: ["#fff"],
+ },
+ class: {
+ useMaxWidth: !0,
+ titleTopMargin: 25,
+ arrowMarkerAbsolute: !1,
+ dividerMargin: 10,
+ padding: 5,
+ textHeight: 10,
+ defaultRenderer: "dagre-wrapper",
+ htmlLabels: !1,
+ },
+ state: {
+ useMaxWidth: !0,
+ titleTopMargin: 25,
+ dividerMargin: 10,
+ sizeUnit: 5,
+ padding: 8,
+ textHeight: 10,
+ titleShift: -15,
+ noteMargin: 10,
+ forkWidth: 70,
+ forkHeight: 7,
+ miniPadding: 2,
+ fontSizeFactor: 5.02,
+ fontSize: 24,
+ labelHeight: 16,
+ edgeLengthFactor: "20",
+ compositTitleSize: 35,
+ radius: 5,
+ defaultRenderer: "dagre-wrapper",
+ },
+ er: {
+ useMaxWidth: !0,
+ titleTopMargin: 25,
+ diagramPadding: 20,
+ layoutDirection: "TB",
+ minEntityWidth: 100,
+ minEntityHeight: 75,
+ entityPadding: 15,
+ stroke: "gray",
+ fill: "honeydew",
+ fontSize: 12,
+ },
+ pie: { useMaxWidth: !0, textPosition: 0.75 },
+ quadrantChart: {
+ useMaxWidth: !0,
+ chartWidth: 500,
+ chartHeight: 500,
+ titleFontSize: 20,
+ titlePadding: 10,
+ quadrantPadding: 5,
+ xAxisLabelPadding: 5,
+ yAxisLabelPadding: 5,
+ xAxisLabelFontSize: 16,
+ yAxisLabelFontSize: 16,
+ quadrantLabelFontSize: 16,
+ quadrantTextTopPadding: 5,
+ pointTextPadding: 5,
+ pointLabelFontSize: 12,
+ pointRadius: 5,
+ xAxisPosition: "top",
+ yAxisPosition: "left",
+ quadrantInternalBorderStrokeWidth: 1,
+ quadrantExternalBorderStrokeWidth: 2,
+ },
+ requirement: {
+ useMaxWidth: !0,
+ rect_fill: "#f9f9f9",
+ text_color: "#333",
+ rect_border_size: "0.5px",
+ rect_border_color: "#bbb",
+ rect_min_width: 200,
+ rect_min_height: 200,
+ fontSize: 14,
+ rect_padding: 10,
+ line_height: 20,
+ },
+ mindmap: { useMaxWidth: !0, padding: 10, maxNodeWidth: 200 },
+ timeline: {
+ useMaxWidth: !0,
+ diagramMarginX: 50,
+ diagramMarginY: 10,
+ leftMargin: 150,
+ width: 150,
+ height: 50,
+ boxMargin: 10,
+ boxTextMargin: 5,
+ noteMargin: 10,
+ messageMargin: 35,
+ messageAlign: "center",
+ bottomMarginAdj: 1,
+ rightAngles: !1,
+ taskFontSize: 14,
+ taskFontFamily: '"Open Sans", sans-serif',
+ taskMargin: 50,
+ activationWidth: 10,
+ textPlacement: "fo",
+ actorColours: ["#8FBC8F", "#7CFC00", "#00FFFF", "#20B2AA", "#B0E0E6", "#FFFFE0"],
+ sectionFills: ["#191970", "#8B008B", "#4B0082", "#2F4F4F", "#800000", "#8B4513", "#00008B"],
+ sectionColours: ["#fff"],
+ disableMulticolor: !1,
+ },
+ gitGraph: {
+ useMaxWidth: !0,
+ titleTopMargin: 25,
+ diagramPadding: 8,
+ nodeLabel: { width: 75, height: 100, x: -25, y: 0 },
+ mainBranchName: "main",
+ mainBranchOrder: 0,
+ showCommitLabel: !0,
+ showBranches: !0,
+ rotateCommitLabel: !0,
+ arrowMarkerAbsolute: !1,
+ },
+ c4: {
+ useMaxWidth: !0,
+ diagramMarginX: 50,
+ diagramMarginY: 10,
+ c4ShapeMargin: 50,
+ c4ShapePadding: 20,
+ width: 216,
+ height: 60,
+ boxMargin: 10,
+ c4ShapeInRow: 4,
+ nextLinePaddingX: 0,
+ c4BoundaryInRow: 2,
+ personFontSize: 14,
+ personFontFamily: '"Open Sans", sans-serif',
+ personFontWeight: "normal",
+ external_personFontSize: 14,
+ external_personFontFamily: '"Open Sans", sans-serif',
+ external_personFontWeight: "normal",
+ systemFontSize: 14,
+ systemFontFamily: '"Open Sans", sans-serif',
+ systemFontWeight: "normal",
+ external_systemFontSize: 14,
+ external_systemFontFamily: '"Open Sans", sans-serif',
+ external_systemFontWeight: "normal",
+ system_dbFontSize: 14,
+ system_dbFontFamily: '"Open Sans", sans-serif',
+ system_dbFontWeight: "normal",
+ external_system_dbFontSize: 14,
+ external_system_dbFontFamily: '"Open Sans", sans-serif',
+ external_system_dbFontWeight: "normal",
+ system_queueFontSize: 14,
+ system_queueFontFamily: '"Open Sans", sans-serif',
+ system_queueFontWeight: "normal",
+ external_system_queueFontSize: 14,
+ external_system_queueFontFamily: '"Open Sans", sans-serif',
+ external_system_queueFontWeight: "normal",
+ boundaryFontSize: 14,
+ boundaryFontFamily: '"Open Sans", sans-serif',
+ boundaryFontWeight: "normal",
+ messageFontSize: 12,
+ messageFontFamily: '"Open Sans", sans-serif',
+ messageFontWeight: "normal",
+ containerFontSize: 14,
+ containerFontFamily: '"Open Sans", sans-serif',
+ containerFontWeight: "normal",
+ external_containerFontSize: 14,
+ external_containerFontFamily: '"Open Sans", sans-serif',
+ external_containerFontWeight: "normal",
+ container_dbFontSize: 14,
+ container_dbFontFamily: '"Open Sans", sans-serif',
+ container_dbFontWeight: "normal",
+ external_container_dbFontSize: 14,
+ external_container_dbFontFamily: '"Open Sans", sans-serif',
+ external_container_dbFontWeight: "normal",
+ container_queueFontSize: 14,
+ container_queueFontFamily: '"Open Sans", sans-serif',
+ container_queueFontWeight: "normal",
+ external_container_queueFontSize: 14,
+ external_container_queueFontFamily: '"Open Sans", sans-serif',
+ external_container_queueFontWeight: "normal",
+ componentFontSize: 14,
+ componentFontFamily: '"Open Sans", sans-serif',
+ componentFontWeight: "normal",
+ external_componentFontSize: 14,
+ external_componentFontFamily: '"Open Sans", sans-serif',
+ external_componentFontWeight: "normal",
+ component_dbFontSize: 14,
+ component_dbFontFamily: '"Open Sans", sans-serif',
+ component_dbFontWeight: "normal",
+ external_component_dbFontSize: 14,
+ external_component_dbFontFamily: '"Open Sans", sans-serif',
+ external_component_dbFontWeight: "normal",
+ component_queueFontSize: 14,
+ component_queueFontFamily: '"Open Sans", sans-serif',
+ component_queueFontWeight: "normal",
+ external_component_queueFontSize: 14,
+ external_component_queueFontFamily: '"Open Sans", sans-serif',
+ external_component_queueFontWeight: "normal",
+ wrap: !0,
+ wrapPadding: 10,
+ person_bg_color: "#08427B",
+ person_border_color: "#073B6F",
+ external_person_bg_color: "#686868",
+ external_person_border_color: "#8A8A8A",
+ system_bg_color: "#1168BD",
+ system_border_color: "#3C7FC0",
+ system_db_bg_color: "#1168BD",
+ system_db_border_color: "#3C7FC0",
+ system_queue_bg_color: "#1168BD",
+ system_queue_border_color: "#3C7FC0",
+ external_system_bg_color: "#999999",
+ external_system_border_color: "#8A8A8A",
+ external_system_db_bg_color: "#999999",
+ external_system_db_border_color: "#8A8A8A",
+ external_system_queue_bg_color: "#999999",
+ external_system_queue_border_color: "#8A8A8A",
+ container_bg_color: "#438DD5",
+ container_border_color: "#3C7FC0",
+ container_db_bg_color: "#438DD5",
+ container_db_border_color: "#3C7FC0",
+ container_queue_bg_color: "#438DD5",
+ container_queue_border_color: "#3C7FC0",
+ external_container_bg_color: "#B3B3B3",
+ external_container_border_color: "#A6A6A6",
+ external_container_db_bg_color: "#B3B3B3",
+ external_container_db_border_color: "#A6A6A6",
+ external_container_queue_bg_color: "#B3B3B3",
+ external_container_queue_border_color: "#A6A6A6",
+ component_bg_color: "#85BBF0",
+ component_border_color: "#78A8D8",
+ component_db_bg_color: "#85BBF0",
+ component_db_border_color: "#78A8D8",
+ component_queue_bg_color: "#85BBF0",
+ component_queue_border_color: "#78A8D8",
+ external_component_bg_color: "#CCCCCC",
+ external_component_border_color: "#BFBFBF",
+ external_component_db_bg_color: "#CCCCCC",
+ external_component_db_border_color: "#BFBFBF",
+ external_component_queue_bg_color: "#CCCCCC",
+ external_component_queue_border_color: "#BFBFBF",
+ },
+ sankey: {
+ useMaxWidth: !0,
+ width: 600,
+ height: 400,
+ linkColor: "gradient",
+ nodeAlignment: "justify",
+ showValues: !0,
+ prefix: "",
+ suffix: "",
+ },
+ theme: "default",
+ maxTextSize: 5e4,
+ darkMode: !1,
+ fontFamily: '"trebuchet ms", verdana, arial, sans-serif;',
+ logLevel: 5,
+ securityLevel: "strict",
+ startOnLoad: !0,
+ arrowMarkerAbsolute: !1,
+ secure: ["secure", "securityLevel", "startOnLoad", "maxTextSize"],
+ deterministicIds: !1,
+ fontSize: 16,
+ },
+ kt = {
+ ...vt,
+ deterministicIDSeed: void 0,
+ themeCSS: void 0,
+ themeVariables: xt.default.getThemeVariables(),
+ sequence: {
+ ...vt.sequence,
+ messageFont: function () {
+ return {
+ fontFamily: this.messageFontFamily,
+ fontSize: this.messageFontSize,
+ fontWeight: this.messageFontWeight,
+ };
+ },
+ noteFont: function () {
+ return {
+ fontFamily: this.noteFontFamily,
+ fontSize: this.noteFontSize,
+ fontWeight: this.noteFontWeight,
+ };
+ },
+ actorFont: function () {
+ return {
+ fontFamily: this.actorFontFamily,
+ fontSize: this.actorFontSize,
+ fontWeight: this.actorFontWeight,
+ };
+ },
+ },
+ gantt: { ...vt.gantt, tickInterval: void 0, useWidth: void 0 },
+ c4: {
+ ...vt.c4,
+ useWidth: void 0,
+ personFont: function () {
+ return {
+ fontFamily: this.personFontFamily,
+ fontSize: this.personFontSize,
+ fontWeight: this.personFontWeight,
+ };
+ },
+ external_personFont: function () {
+ return {
+ fontFamily: this.external_personFontFamily,
+ fontSize: this.external_personFontSize,
+ fontWeight: this.external_personFontWeight,
+ };
+ },
+ systemFont: function () {
+ return {
+ fontFamily: this.systemFontFamily,
+ fontSize: this.systemFontSize,
+ fontWeight: this.systemFontWeight,
+ };
+ },
+ external_systemFont: function () {
+ return {
+ fontFamily: this.external_systemFontFamily,
+ fontSize: this.external_systemFontSize,
+ fontWeight: this.external_systemFontWeight,
+ };
+ },
+ system_dbFont: function () {
+ return {
+ fontFamily: this.system_dbFontFamily,
+ fontSize: this.system_dbFontSize,
+ fontWeight: this.system_dbFontWeight,
+ };
+ },
+ external_system_dbFont: function () {
+ return {
+ fontFamily: this.external_system_dbFontFamily,
+ fontSize: this.external_system_dbFontSize,
+ fontWeight: this.external_system_dbFontWeight,
+ };
+ },
+ system_queueFont: function () {
+ return {
+ fontFamily: this.system_queueFontFamily,
+ fontSize: this.system_queueFontSize,
+ fontWeight: this.system_queueFontWeight,
+ };
+ },
+ external_system_queueFont: function () {
+ return {
+ fontFamily: this.external_system_queueFontFamily,
+ fontSize: this.external_system_queueFontSize,
+ fontWeight: this.external_system_queueFontWeight,
+ };
+ },
+ containerFont: function () {
+ return {
+ fontFamily: this.containerFontFamily,
+ fontSize: this.containerFontSize,
+ fontWeight: this.containerFontWeight,
+ };
+ },
+ external_containerFont: function () {
+ return {
+ fontFamily: this.external_containerFontFamily,
+ fontSize: this.external_containerFontSize,
+ fontWeight: this.external_containerFontWeight,
+ };
+ },
+ container_dbFont: function () {
+ return {
+ fontFamily: this.container_dbFontFamily,
+ fontSize: this.container_dbFontSize,
+ fontWeight: this.container_dbFontWeight,
+ };
+ },
+ external_container_dbFont: function () {
+ return {
+ fontFamily: this.external_container_dbFontFamily,
+ fontSize: this.external_container_dbFontSize,
+ fontWeight: this.external_container_dbFontWeight,
+ };
+ },
+ container_queueFont: function () {
+ return {
+ fontFamily: this.container_queueFontFamily,
+ fontSize: this.container_queueFontSize,
+ fontWeight: this.container_queueFontWeight,
+ };
+ },
+ external_container_queueFont: function () {
+ return {
+ fontFamily: this.external_container_queueFontFamily,
+ fontSize: this.external_container_queueFontSize,
+ fontWeight: this.external_container_queueFontWeight,
+ };
+ },
+ componentFont: function () {
+ return {
+ fontFamily: this.componentFontFamily,
+ fontSize: this.componentFontSize,
+ fontWeight: this.componentFontWeight,
+ };
+ },
+ external_componentFont: function () {
+ return {
+ fontFamily: this.external_componentFontFamily,
+ fontSize: this.external_componentFontSize,
+ fontWeight: this.external_componentFontWeight,
+ };
+ },
+ component_dbFont: function () {
+ return {
+ fontFamily: this.component_dbFontFamily,
+ fontSize: this.component_dbFontSize,
+ fontWeight: this.component_dbFontWeight,
+ };
+ },
+ external_component_dbFont: function () {
+ return {
+ fontFamily: this.external_component_dbFontFamily,
+ fontSize: this.external_component_dbFontSize,
+ fontWeight: this.external_component_dbFontWeight,
+ };
+ },
+ component_queueFont: function () {
+ return {
+ fontFamily: this.component_queueFontFamily,
+ fontSize: this.component_queueFontSize,
+ fontWeight: this.component_queueFontWeight,
+ };
+ },
+ external_component_queueFont: function () {
+ return {
+ fontFamily: this.external_component_queueFontFamily,
+ fontSize: this.external_component_queueFontSize,
+ fontWeight: this.external_component_queueFontWeight,
+ };
+ },
+ boundaryFont: function () {
+ return {
+ fontFamily: this.boundaryFontFamily,
+ fontSize: this.boundaryFontSize,
+ fontWeight: this.boundaryFontWeight,
+ };
+ },
+ messageFont: function () {
+ return {
+ fontFamily: this.messageFontFamily,
+ fontSize: this.messageFontSize,
+ fontWeight: this.messageFontWeight,
+ };
+ },
+ },
+ pie: { ...vt.pie, useWidth: 984 },
+ requirement: { ...vt.requirement, useWidth: void 0 },
+ gitGraph: { ...vt.gitGraph, useMaxWidth: !1 },
+ sankey: { ...vt.sankey, useMaxWidth: !1 },
+ },
+ Tt = (t, e = "") =>
+ Object.keys(t).reduce(
+ (i, r) => (Array.isArray(t[r]) ? i : "object" == typeof t[r] && null !== t[r] ? [...i, e + r, ...Tt(t[r], "")] : [...i, e + r]),
+ [],
+ ),
+ wt = new Set(Tt(kt, "")),
+ St = kt,
+ Bt = /^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,
+ Ft = /%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,
+ Lt = /\s*%%.*\n/gm;
+ class Mt extends Error {
+ constructor(t) {
+ super(t), (this.name = "UnknownDiagramError");
+ }
+ }
+ const At = {},
+ Et = function (t, e) {
+ t = t.replace(Bt, "").replace(Ft, "").replace(Lt, "\n");
+ for (const [i, { detector: r }] of Object.entries(At)) if (r(t, e)) return i;
+ throw new Mt(`No diagram type detected matching given configuration for text: ${t}`);
+ },
+ Zt = (...t) => {
+ for (const { id: e, detector: i, loader: r } of t) Ot(e, i, r);
+ },
+ Ot = (t, e, i) => {
+ At[t] ? nt.error(`Detector with key ${t} already exists`) : (At[t] = { detector: e, loader: i }),
+ nt.debug(`Detector with key ${t} added${i ? " with loader" : ""}`);
+ },
+ qt = (t, e, { depth: i = 2, clobber: r = !1 } = {}) => {
+ const n = { depth: i, clobber: r };
+ return Array.isArray(e) && !Array.isArray(t)
+ ? (e.forEach((e) => qt(t, e, n)), t)
+ : Array.isArray(e) && Array.isArray(t)
+ ? (e.forEach((e) => {
+ t.includes(e) || t.push(e);
+ }),
+ t)
+ : void 0 === t || i <= 0
+ ? null != t && "object" == typeof t && "object" == typeof e
+ ? Object.assign(t, e)
+ : e
+ : (void 0 !== e &&
+ "object" == typeof t &&
+ "object" == typeof e &&
+ Object.keys(e).forEach((n) => {
+ "object" != typeof e[n] || (void 0 !== t[n] && "object" != typeof t[n])
+ ? (r || ("object" != typeof t[n] && "object" != typeof e[n])) && (t[n] = e[n])
+ : (void 0 === t[n] && (t[n] = Array.isArray(e[n]) ? [] : {}), (t[n] = qt(t[n], e[n], { depth: i - 1, clobber: r })));
+ }),
+ t);
+ },
+ It = qt,
+ Nt = "",
+ Dt = {
+ curveBasis: a.$0Z,
+ curveBasisClosed: a.Dts,
+ curveBasisOpen: a.WQY,
+ curveBumpX: a.qpX,
+ curveBumpY: a.u93,
+ curveBundle: a.tFB,
+ curveCardinalClosed: a.OvA,
+ curveCardinalOpen: a.dCK,
+ curveCardinal: a.YY7,
+ curveCatmullRomClosed: a.fGX,
+ curveCatmullRomOpen: a.$m7,
+ curveCatmullRom: a.zgE,
+ curveLinear: a.c_6,
+ curveLinearClosed: a.fxm,
+ curveMonotoneX: a.FdL,
+ curveMonotoneY: a.ak_,
+ curveNatural: a.SxZ,
+ curveStep: a.eA_,
+ curveStepAfter: a.jsv,
+ curveStepBefore: a.iJ,
+ },
+ $t = /\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,
+ zt = function (t, e = null) {
+ try {
+ const i = new RegExp(`[%]{2}(?![{]${$t.source})(?=[}][%]{2}).*\n`, "ig");
+ let r;
+ (t = t.trim().replace(i, "").replace(/'/gm, '"')),
+ nt.debug(`Detecting diagram directive${null !== e ? " type:" + e : ""} based on the text:${t}`);
+ const n = [];
+ for (; null !== (r = Ft.exec(t)); )
+ if ((r.index === Ft.lastIndex && Ft.lastIndex++, (r && !e) || (e && r[1] && r[1].match(e)) || (e && r[2] && r[2].match(e)))) {
+ const t = r[1] ? r[1] : r[2],
+ e = r[3] ? r[3].trim() : r[4] ? JSON.parse(r[4].trim()) : null;
+ n.push({ type: t, args: e });
+ }
+ return 0 === n.length && n.push({ type: t, args: null }), 1 === n.length ? n[0] : n;
+ } catch (i) {
+ return (
+ nt.error(`ERROR: ${i.message} - Unable to parse directive\n ${null !== e ? " type:" + e : ""} based on the text:${t}`),
+ { type: null, args: null }
+ );
+ }
+ };
+ function jt(t, e) {
+ if (!t) return e;
+ const i = `curve${t.charAt(0).toUpperCase() + t.slice(1)}`;
+ return Dt[i] || e;
+ }
+ function Pt(t, e) {
+ return t && e ? Math.sqrt(Math.pow(e.x - t.x, 2) + Math.pow(e.y - t.y, 2)) : 0;
+ }
+ function Rt(t) {
+ let e = "",
+ i = "";
+ for (const r of t) void 0 !== r && (r.startsWith("color:") || r.startsWith("text-align:") ? (i = i + r + ";") : (e = e + r + ";"));
+ return { style: e, labelStyle: i };
+ }
+ let Wt = 0;
+ const Ut = () => (Wt++, "id-" + Math.random().toString(36).substr(2, 12) + "-" + Wt),
+ Ht = (t) =>
+ (function (t) {
+ let e = "";
+ for (let i = 0; i < t; i++) e += "0123456789abcdef".charAt(Math.floor(16 * Math.random()));
+ return e;
+ })(t.length),
+ Yt = function (t, e) {
+ const i = e.text.replace(gt.lineBreakRegex, " "),
+ [, r] = re(e.fontSize),
+ n = t.append("text");
+ n.attr("x", e.x),
+ n.attr("y", e.y),
+ n.style("text-anchor", e.anchor),
+ n.style("font-family", e.fontFamily),
+ n.style("font-size", r),
+ n.style("font-weight", e.fontWeight),
+ n.attr("fill", e.fill),
+ void 0 !== e.class && n.attr("class", e.class);
+ const o = n.append("tspan");
+ return o.attr("x", e.x + 2 * e.textMargin), o.attr("fill", e.fill), o.text(i), n;
+ },
+ Vt = (0, m.Z)(
+ (t, e, i) => {
+ if (!t) return t;
+ if (((i = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: "Arial", joinWith: "
" }, i)), gt.lineBreakRegex.test(t)))
+ return t;
+ const r = t.split(" "),
+ n = [];
+ let o = "";
+ return (
+ r.forEach((t, a) => {
+ const s = Jt(`${t} `, i),
+ l = Jt(o, i);
+ if (s > e) {
+ const { hyphenatedStrings: r, remainingWord: a } = Gt(t, e, "-", i);
+ n.push(o, ...r), (o = a);
+ } else l + s >= e ? (n.push(o), (o = t)) : (o = [o, t].filter(Boolean).join(" "));
+ a + 1 === r.length && n.push(o);
+ }),
+ n.filter((t) => "" !== t).join(i.joinWith)
+ );
+ },
+ (t, e, i) => `${t}${e}${i.fontSize}${i.fontWeight}${i.fontFamily}${i.joinWith}`,
+ ),
+ Gt = (0, m.Z)(
+ (t, e, i = "-", r) => {
+ r = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: "Arial", margin: 0 }, r);
+ const n = [...t],
+ o = [];
+ let a = "";
+ return (
+ n.forEach((t, s) => {
+ const l = `${a}${t}`;
+ if (Jt(l, r) >= e) {
+ const t = s + 1,
+ e = n.length === t,
+ r = `${l}${i}`;
+ o.push(e ? l : r), (a = "");
+ } else a = l;
+ }),
+ { hyphenatedStrings: o, remainingWord: a }
+ );
+ },
+ (t, e, i = "-", r) => `${t}${e}${i}${r.fontSize}${r.fontWeight}${r.fontFamily}`,
+ );
+ function Xt(t, e) {
+ return (e = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: "Arial", margin: 15 }, e)), Qt(t, e).height;
+ }
+ function Jt(t, e) {
+ return (e = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: "Arial" }, e)), Qt(t, e).width;
+ }
+ const Qt = (0, m.Z)(
+ (t, e) => {
+ e = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: "Arial" }, e);
+ const { fontSize: i, fontFamily: r, fontWeight: n } = e;
+ if (!t) return { width: 0, height: 0 };
+ const [, o] = re(i),
+ s = ["sans-serif", r],
+ l = t.split(gt.lineBreakRegex),
+ h = [],
+ c = (0, a.Ys)("body");
+ if (!c.remove) return { width: 0, height: 0, lineHeight: 0 };
+ const u = c.append("svg");
+ for (const t of s) {
+ let e = 0;
+ const i = { width: 0, height: 0, lineHeight: 0 };
+ for (const r of l) {
+ const a = {
+ x: 0,
+ y: 0,
+ fill: void 0,
+ anchor: "start",
+ style: "#666",
+ width: 100,
+ height: 100,
+ textMargin: 0,
+ rx: 0,
+ ry: 0,
+ valign: void 0,
+ };
+ a.text = r || Nt;
+ const s = Yt(u, a).style("font-size", o).style("font-weight", n).style("font-family", t),
+ l = (s._groups || s)[0][0].getBBox();
+ if (0 === l.width && 0 === l.height) throw new Error("svg element not in render tree");
+ (i.width = Math.round(Math.max(i.width, l.width))),
+ (e = Math.round(l.height)),
+ (i.height += e),
+ (i.lineHeight = Math.round(Math.max(i.lineHeight, e)));
+ }
+ h.push(i);
+ }
+ return (
+ u.remove(),
+ h[
+ isNaN(h[1].height) ||
+ isNaN(h[1].width) ||
+ isNaN(h[1].lineHeight) ||
+ (h[0].height > h[1].height && h[0].width > h[1].width && h[0].lineHeight > h[1].lineHeight)
+ ? 0
+ : 1
+ ]
+ );
+ },
+ (t, e) => `${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`,
+ );
+ let Kt;
+ const te = (t) => {
+ if ((nt.debug("sanitizeDirective called with", t), "object" == typeof t && null != t))
+ if (Array.isArray(t)) t.forEach((t) => te(t));
+ else {
+ for (const e of Object.keys(t)) {
+ if ((nt.debug("Checking key", e), e.startsWith("__") || e.includes("proto") || e.includes("constr") || !wt.has(e) || null == t[e])) {
+ nt.debug("sanitize deleting key: ", e), delete t[e];
+ continue;
+ }
+ if ("object" == typeof t[e]) {
+ nt.debug("sanitizing object", e), te(t[e]);
+ continue;
+ }
+ const i = ["themeCSS", "fontFamily", "altFontFamily"];
+ for (const r of i) e.includes(r) && (nt.debug("sanitizing css option", e), (t[e] = ee(t[e])));
+ }
+ if (t.themeVariables)
+ for (const e of Object.keys(t.themeVariables)) {
+ const i = t.themeVariables[e];
+ (null == i ? void 0 : i.match) && !i.match(/^[\d "#%(),.;A-Za-z]+$/) && (t.themeVariables[e] = "");
+ }
+ nt.debug("After sanitization", t);
+ }
+ },
+ ee = (t) => {
+ let e = 0,
+ i = 0;
+ for (const r of t) {
+ if (e < i) return "{ /* ERROR: Unbalanced CSS */ }";
+ "{" === r ? e++ : "}" === r && i++;
+ }
+ return e !== i ? "{ /* ERROR: Unbalanced CSS */ }" : t;
+ };
+ function ie(t) {
+ return "str" in t;
+ }
+ const re = (t) => {
+ if ("number" == typeof t) return [t, t + "px"];
+ const e = parseInt(t, 10);
+ return Number.isNaN(e) ? [void 0, void 0] : t === String(e) ? [e, t + "px"] : [e, t];
+ };
+ function ne(t, e) {
+ return (0, y.Z)({}, t, e);
+ }
+ const oe = {
+ assignWithDepth: It,
+ wrapLabel: Vt,
+ calculateTextHeight: Xt,
+ calculateTextWidth: Jt,
+ calculateTextDimensions: Qt,
+ cleanAndMerge: ne,
+ detectInit: function (t, e) {
+ const i = zt(t, /(?:init\b)|(?:initialize\b)/);
+ let r = {};
+ if (Array.isArray(i)) {
+ const t = i.map((t) => t.args);
+ te(t), (r = It(r, [...t]));
+ } else r = i.args;
+ if (!r) return;
+ let n = Et(t, e);
+ return (
+ ["config"].forEach((t) => {
+ void 0 !== r[t] && ("flowchart-v2" === n && (n = "flowchart"), (r[n] = r[t]), delete r[t]);
+ }),
+ r
+ );
+ },
+ detectDirective: zt,
+ isSubstringInArray: function (t, e) {
+ for (const [i, r] of e.entries()) if (r.match(t)) return i;
+ return -1;
+ },
+ interpolateToCurve: jt,
+ calcLabelPosition: function (t) {
+ return 1 === t.length
+ ? t[0]
+ : (function (t) {
+ let e,
+ i = 0;
+ t.forEach((t) => {
+ (i += Pt(t, e)), (e = t);
+ });
+ let r,
+ n = i / 2;
+ return (
+ (e = void 0),
+ t.forEach((t) => {
+ if (e && !r) {
+ const i = Pt(t, e);
+ if (i < n) n -= i;
+ else {
+ const o = n / i;
+ o <= 0 && (r = e),
+ o >= 1 && (r = { x: t.x, y: t.y }),
+ o > 0 && o < 1 && (r = { x: (1 - o) * e.x + o * t.x, y: (1 - o) * e.y + o * t.y });
+ }
+ }
+ e = t;
+ }),
+ r
+ );
+ })(t);
+ },
+ calcCardinalityPosition: (t, e, i) => {
+ let r;
+ nt.info(`our points ${JSON.stringify(e)}`), e[0] !== i && (e = e.reverse());
+ let n,
+ o = 25;
+ (r = void 0),
+ e.forEach((t) => {
+ if (r && !n) {
+ const e = Pt(t, r);
+ if (e < o) o -= e;
+ else {
+ const i = o / e;
+ i <= 0 && (n = r),
+ i >= 1 && (n = { x: t.x, y: t.y }),
+ i > 0 && i < 1 && (n = { x: (1 - i) * r.x + i * t.x, y: (1 - i) * r.y + i * t.y });
+ }
+ }
+ r = t;
+ });
+ const a = t ? 10 : 5,
+ s = Math.atan2(e[0].y - n.y, e[0].x - n.x),
+ l = { x: 0, y: 0 };
+ return (l.x = Math.sin(s) * a + (e[0].x + n.x) / 2), (l.y = -Math.cos(s) * a + (e[0].y + n.y) / 2), l;
+ },
+ calcTerminalLabelPosition: function (t, e, i) {
+ let r,
+ n = JSON.parse(JSON.stringify(i));
+ nt.info("our points", n),
+ "start_left" !== e && "start_right" !== e && (n = n.reverse()),
+ n.forEach((t) => {
+ r = t;
+ });
+ let o,
+ a = 25 + t;
+ (r = void 0),
+ n.forEach((t) => {
+ if (r && !o) {
+ const e = Pt(t, r);
+ if (e < a) a -= e;
+ else {
+ const i = a / e;
+ i <= 0 && (o = r),
+ i >= 1 && (o = { x: t.x, y: t.y }),
+ i > 0 && i < 1 && (o = { x: (1 - i) * r.x + i * t.x, y: (1 - i) * r.y + i * t.y });
+ }
+ }
+ r = t;
+ });
+ const s = 10 + 0.5 * t,
+ l = Math.atan2(n[0].y - o.y, n[0].x - o.x),
+ h = { x: 0, y: 0 };
+ return (
+ (h.x = Math.sin(l) * s + (n[0].x + o.x) / 2),
+ (h.y = -Math.cos(l) * s + (n[0].y + o.y) / 2),
+ "start_left" === e && ((h.x = Math.sin(l + Math.PI) * s + (n[0].x + o.x) / 2), (h.y = -Math.cos(l + Math.PI) * s + (n[0].y + o.y) / 2)),
+ "end_right" === e &&
+ ((h.x = Math.sin(l - Math.PI) * s + (n[0].x + o.x) / 2 - 5), (h.y = -Math.cos(l - Math.PI) * s + (n[0].y + o.y) / 2 - 5)),
+ "end_left" === e && ((h.x = Math.sin(l) * s + (n[0].x + o.x) / 2 - 5), (h.y = -Math.cos(l) * s + (n[0].y + o.y) / 2 - 5)),
+ h
+ );
+ },
+ formatUrl: function (t, e) {
+ const i = t.trim();
+ if (i) return "loose" !== e.securityLevel ? (0, o.Nm)(i) : i;
+ },
+ getStylesFromArray: Rt,
+ generateId: Ut,
+ random: Ht,
+ runFunc: (t, ...e) => {
+ const i = t.split("."),
+ r = i.length - 1,
+ n = i[r];
+ let o = window;
+ for (let t = 0; t < r; t++) if (((o = o[i[t]]), !o)) return;
+ o[n](...e);
+ },
+ entityDecode: function (t) {
+ return (
+ (Kt = Kt || document.createElement("div")),
+ (t = escape(t).replace(/%26/g, "&").replace(/%23/g, "#").replace(/%3B/g, ";")),
+ (Kt.innerHTML = t),
+ unescape(Kt.textContent)
+ );
+ },
+ initIdGenerator: class {
+ constructor(t, e) {
+ (this.deterministic = t), (this.seed = e), (this.count = e ? e.length : 0);
+ }
+ next() {
+ return this.deterministic ? this.count++ : Date.now();
+ }
+ },
+ sanitizeDirective: te,
+ sanitizeCss: ee,
+ insertTitle: (t, e, i, r) => {
+ if (!r) return;
+ const n = t.node().getBBox();
+ t.append("text")
+ .text(r)
+ .attr("x", n.x + n.width / 2)
+ .attr("y", -i)
+ .attr("class", e);
+ },
+ parseFontSize: re,
+ },
+ ae = "10.4.0",
+ se = Object.freeze(St);
+ let le,
+ he = It({}, se),
+ ce = [],
+ ue = It({}, se);
+ const fe = (t, e) => {
+ let i = It({}, t),
+ r = {};
+ for (const t of e) me(t), (r = It(r, t));
+ if (((i = It(i, r)), r.theme && r.theme in xt)) {
+ const t = It({}, le),
+ e = It(t.themeVariables || {}, r.themeVariables);
+ i.theme && i.theme in xt && (i.themeVariables = xt[i.theme].getThemeVariables(e));
+ }
+ return (ue = i), xe(ue), ue;
+ },
+ de = () => It({}, he),
+ pe = (t) => (xe(t), It(ue, t), ge()),
+ ge = () => It({}, ue),
+ me = (t) => {
+ t &&
+ (["secure", ...(he.secure ?? [])].forEach((e) => {
+ Object.hasOwn(t, e) && (nt.debug(`Denied attempt to modify a secure key ${e}`, t[e]), delete t[e]);
+ }),
+ Object.keys(t).forEach((e) => {
+ e.startsWith("__") && delete t[e];
+ }),
+ Object.keys(t).forEach((e) => {
+ "string" == typeof t[e] && (t[e].includes("<") || t[e].includes(">") || t[e].includes("url(data:")) && delete t[e],
+ "object" == typeof t[e] && me(t[e]);
+ }));
+ },
+ ye = (t) => {
+ te(t),
+ !t.fontFamily || (t.themeVariables && t.themeVariables.fontFamily) || (t.themeVariables = { fontFamily: t.fontFamily }),
+ ce.push(t),
+ fe(he, ce);
+ },
+ _e = (t = he) => {
+ (ce = []), fe(t, ce);
+ },
+ be = {
+ LAZY_LOAD_DEPRECATED:
+ "The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.",
+ },
+ Ce = {},
+ xe = (t) => {
+ var e;
+ t && (t.lazyLoadedDiagrams || t.loadExternalDiagramsAtStartup) && (Ce[(e = "LAZY_LOAD_DEPRECATED")] || (nt.warn(be[e]), (Ce[e] = !0)));
+ },
+ ve = {
+ id: "c4",
+ detector: (t) => /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),
+ loader: async () => {
+ const { diagram: t } = await i.e(545).then(i.bind(i, 4545));
+ return { id: "c4", diagram: t };
+ },
+ },
+ ke = "flowchart",
+ Te = {
+ id: ke,
+ detector: (t, e) => {
+ var i, r;
+ return (
+ "dagre-wrapper" !== (null == (i = null == e ? void 0 : e.flowchart) ? void 0 : i.defaultRenderer) &&
+ "elk" !== (null == (r = null == e ? void 0 : e.flowchart) ? void 0 : r.defaultRenderer) &&
+ /^\s*graph/.test(t)
+ );
+ },
+ loader: async () => {
+ const { diagram: t } = await Promise.all([i.e(771), i.e(506), i.e(76), i.e(476), i.e(813), i.e(728)]).then(i.bind(i, 8728));
+ return { id: ke, diagram: t };
+ },
+ },
+ we = "flowchart-v2",
+ Se = {
+ id: we,
+ detector: (t, e) => {
+ var i, r, n;
+ return (
+ "dagre-d3" !== (null == (i = null == e ? void 0 : e.flowchart) ? void 0 : i.defaultRenderer) &&
+ "elk" !== (null == (r = null == e ? void 0 : e.flowchart) ? void 0 : r.defaultRenderer) &&
+ (!(!/^\s*graph/.test(t) || "dagre-wrapper" !== (null == (n = null == e ? void 0 : e.flowchart) ? void 0 : n.defaultRenderer)) ||
+ /^\s*flowchart/.test(t))
+ );
+ },
+ loader: async () => {
+ const { diagram: t } = await Promise.all([i.e(771), i.e(506), i.e(76), i.e(476), i.e(813), i.e(81)]).then(i.bind(i, 3081));
+ return { id: we, diagram: t };
+ },
+ },
+ Be = {
+ id: "er",
+ detector: (t) => /^\s*erDiagram/.test(t),
+ loader: async () => {
+ const { diagram: t } = await Promise.all([i.e(771), i.e(430)]).then(i.bind(i, 4430));
+ return { id: "er", diagram: t };
+ },
+ },
+ Fe = "gitGraph",
+ Le = {
+ id: Fe,
+ detector: (t) => /^\s*gitGraph/.test(t),
+ loader: async () => {
+ const { diagram: t } = await i.e(729).then(i.bind(i, 7729));
+ return { id: Fe, diagram: t };
+ },
+ },
+ Me = "gantt",
+ Ae = {
+ id: Me,
+ detector: (t) => /^\s*gantt/.test(t),
+ loader: async () => {
+ const { diagram: t } = await i.e(773).then(i.bind(i, 9773));
+ return { id: Me, diagram: t };
+ },
+ },
+ Ee = "info",
+ Ze = {
+ id: Ee,
+ detector: (t) => /^\s*info/.test(t),
+ loader: async () => {
+ const { diagram: t } = await i.e(433).then(i.bind(i, 6433));
+ return { id: Ee, diagram: t };
+ },
+ },
+ Oe = {
+ id: "pie",
+ detector: (t) => /^\s*pie/.test(t),
+ loader: async () => {
+ const { diagram: t } = await i.e(546).then(i.bind(i, 3546));
+ return { id: "pie", diagram: t };
+ },
+ },
+ qe = "quadrantChart",
+ Ie = {
+ id: qe,
+ detector: (t) => /^\s*quadrantChart/.test(t),
+ loader: async () => {
+ const { diagram: t } = await i.e(118).then(i.bind(i, 7118));
+ return { id: qe, diagram: t };
+ },
+ },
+ Ne = "requirement",
+ De = {
+ id: Ne,
+ detector: (t) => /^\s*requirement(Diagram)?/.test(t),
+ loader: async () => {
+ const { diagram: t } = await Promise.all([i.e(771), i.e(19)]).then(i.bind(i, 4019));
+ return { id: Ne, diagram: t };
+ },
+ },
+ $e = "sequence",
+ ze = {
+ id: $e,
+ detector: (t) => /^\s*sequenceDiagram/.test(t),
+ loader: async () => {
+ const { diagram: t } = await i.e(361).then(i.bind(i, 5510));
+ return { id: $e, diagram: t };
+ },
+ },
+ je = "class",
+ Pe = {
+ id: je,
+ detector: (t, e) => {
+ var i;
+ return "dagre-wrapper" !== (null == (i = null == e ? void 0 : e.class) ? void 0 : i.defaultRenderer) && /^\s*classDiagram/.test(t);
+ },
+ loader: async () => {
+ const { diagram: t } = await Promise.all([i.e(771), i.e(423), i.e(519)]).then(i.bind(i, 9519));
+ return { id: je, diagram: t };
+ },
+ },
+ Re = "classDiagram",
+ We = {
+ id: Re,
+ detector: (t, e) => {
+ var i;
+ return (
+ !(!/^\s*classDiagram/.test(t) || "dagre-wrapper" !== (null == (i = null == e ? void 0 : e.class) ? void 0 : i.defaultRenderer)) ||
+ /^\s*classDiagram-v2/.test(t)
+ );
+ },
+ loader: async () => {
+ const { diagram: t } = await Promise.all([i.e(771), i.e(506), i.e(76), i.e(476), i.e(423), i.e(747)]).then(i.bind(i, 6747));
+ return { id: Re, diagram: t };
+ },
+ },
+ Ue = "state",
+ He = {
+ id: Ue,
+ detector: (t, e) => {
+ var i;
+ return "dagre-wrapper" !== (null == (i = null == e ? void 0 : e.state) ? void 0 : i.defaultRenderer) && /^\s*stateDiagram/.test(t);
+ },
+ loader: async () => {
+ const { diagram: t } = await Promise.all([i.e(771), i.e(535), i.e(642)]).then(i.bind(i, 7642));
+ return { id: Ue, diagram: t };
+ },
+ },
+ Ye = "stateDiagram",
+ Ve = {
+ id: Ye,
+ detector: (t, e) => {
+ var i;
+ return (
+ !!/^\s*stateDiagram-v2/.test(t) ||
+ !(!/^\s*stateDiagram/.test(t) || "dagre-wrapper" !== (null == (i = null == e ? void 0 : e.state) ? void 0 : i.defaultRenderer))
+ );
+ },
+ loader: async () => {
+ const { diagram: t } = await Promise.all([i.e(771), i.e(506), i.e(76), i.e(476), i.e(535), i.e(626)]).then(i.bind(i, 1626));
+ return { id: Ye, diagram: t };
+ },
+ },
+ Ge = "journey",
+ Xe = {
+ id: Ge,
+ detector: (t) => /^\s*journey/.test(t),
+ loader: async () => {
+ const { diagram: t } = await i.e(438).then(i.bind(i, 2438));
+ return { id: Ge, diagram: t };
+ },
+ },
+ Je = (t) => {
+ var e;
+ const { securityLevel: i } = ge();
+ let r = (0, a.Ys)("body");
+ if ("sandbox" === i) {
+ const i = (null == (e = (0, a.Ys)(`#i${t}`).node()) ? void 0 : e.contentDocument) ?? document;
+ r = (0, a.Ys)(i.body);
+ }
+ return r.select(`#${t}`);
+ },
+ Qe = function (t, e, i, r) {
+ const n = (function (t, e, i) {
+ let r = new Map();
+ return i ? (r.set("width", "100%"), r.set("style", `max-width: ${e}px;`)) : (r.set("height", t), r.set("width", e)), r;
+ })(e, i, r);
+ !(function (t, e) {
+ for (let i of e) t.attr(i[0], i[1]);
+ })(t, n);
+ },
+ Ke = function (t, e, i, r) {
+ const n = e.node().getBBox(),
+ o = n.width,
+ a = n.height;
+ nt.info(`SVG bounds: ${o}x${a}`, n);
+ let s = 0,
+ l = 0;
+ nt.info(`Graph bounds: ${s}x${l}`, t), (s = o + 2 * i), (l = a + 2 * i), nt.info(`Calculated bounds: ${s}x${l}`), Qe(e, l, s, r);
+ const h = `${n.x - i} ${n.y - i} ${n.width + 2 * i} ${n.height + 2 * i}`;
+ e.attr("viewBox", h);
+ },
+ ti = {
+ draw: (t, e, i) => {
+ nt.debug("renering svg for syntax error\n");
+ const r = Je(e);
+ r.attr("viewBox", "0 0 2412 512"), Qe(r, 100, 512, !0);
+ const n = r.append("g");
+ n
+ .append("path")
+ .attr("class", "error-icon")
+ .attr(
+ "d",
+ "m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z",
+ ),
+ n
+ .append("path")
+ .attr("class", "error-icon")
+ .attr(
+ "d",
+ "m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z",
+ ),
+ n
+ .append("path")
+ .attr("class", "error-icon")
+ .attr(
+ "d",
+ "m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z",
+ ),
+ n
+ .append("path")
+ .attr("class", "error-icon")
+ .attr("d", "m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),
+ n
+ .append("path")
+ .attr("class", "error-icon")
+ .attr("d", "m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),
+ n
+ .append("path")
+ .attr("class", "error-icon")
+ .attr(
+ "d",
+ "m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z",
+ ),
+ n
+ .append("text")
+ .attr("class", "error-text")
+ .attr("x", 1440)
+ .attr("y", 250)
+ .attr("font-size", "150px")
+ .style("text-anchor", "middle")
+ .text("Syntax error in text"),
+ n
+ .append("text")
+ .attr("class", "error-text")
+ .attr("x", 1250)
+ .attr("y", 400)
+ .attr("font-size", "100px")
+ .style("text-anchor", "middle")
+ .text(`mermaid version ${i}`);
+ },
+ },
+ ei = ti,
+ ii = { db: {}, renderer: ti, parser: { parser: { yy: {} }, parse: () => {} } },
+ ri = "flowchart-elk",
+ ni = {
+ id: ri,
+ detector: (t, e) => {
+ var i;
+ return !!(
+ /^\s*flowchart-elk/.test(t) ||
+ (/^\s*flowchart|graph/.test(t) && "elk" === (null == (i = null == e ? void 0 : e.flowchart) ? void 0 : i.defaultRenderer))
+ );
+ },
+ loader: async () => {
+ const { diagram: t } = await Promise.all([i.e(506), i.e(76), i.e(813), i.e(639)]).then(i.bind(i, 1639));
+ return { id: ri, diagram: t };
+ },
+ },
+ oi = "timeline",
+ ai = {
+ id: oi,
+ detector: (t) => /^\s*timeline/.test(t),
+ loader: async () => {
+ const { diagram: t } = await i.e(940).then(i.bind(i, 5940));
+ return { id: oi, diagram: t };
+ },
+ },
+ si = "mindmap",
+ li = {
+ id: si,
+ detector: (t) => /^\s*mindmap/.test(t),
+ loader: async () => {
+ const { diagram: t } = await Promise.all([i.e(506), i.e(662)]).then(i.bind(i, 4662));
+ return { id: si, diagram: t };
+ },
+ },
+ hi = "sankey",
+ ci = {
+ id: hi,
+ detector: (t) => /^\s*sankey-beta/.test(t),
+ loader: async () => {
+ const { diagram: t } = await i.e(579).then(i.bind(i, 8579));
+ return { id: hi, diagram: t };
+ },
+ },
+ ui = {};
+ let fi = "",
+ di = "",
+ pi = "";
+ const gi = (t) => ct(t, ge()),
+ mi = function () {
+ (fi = ""), (pi = ""), (di = "");
+ },
+ yi = function (t) {
+ fi = gi(t).replace(/^\s+/g, "");
+ },
+ _i = function () {
+ return fi || di;
+ },
+ bi = function (t) {
+ pi = gi(t).replace(/\n\s+/g, "\n");
+ },
+ Ci = function () {
+ return pi;
+ },
+ xi = function (t) {
+ di = gi(t);
+ },
+ vi = function () {
+ return di;
+ },
+ ki = {
+ getAccTitle: _i,
+ setAccTitle: yi,
+ getDiagramTitle: vi,
+ setDiagramTitle: xi,
+ getAccDescription: Ci,
+ setAccDescription: bi,
+ clear: mi,
+ },
+ Ti = Object.freeze(
+ Object.defineProperty(
+ {
+ __proto__: null,
+ clear: mi,
+ default: ki,
+ getAccDescription: Ci,
+ getAccTitle: _i,
+ getDiagramTitle: vi,
+ setAccDescription: bi,
+ setAccTitle: yi,
+ setDiagramTitle: xi,
+ },
+ Symbol.toStringTag,
+ { value: "Module" },
+ ),
+ );
+ let wi = {};
+ const Si = function (t, e, i, r) {
+ nt.debug("parseDirective is being called", e, i, r);
+ try {
+ if (void 0 !== e)
+ switch (((e = e.trim()), i)) {
+ case "open_directive":
+ wi = {};
+ break;
+ case "type_directive":
+ if (!wi) throw new Error("currentDirective is undefined");
+ wi.type = e.toLowerCase();
+ break;
+ case "arg_directive":
+ if (!wi) throw new Error("currentDirective is undefined");
+ wi.args = JSON.parse(e);
+ break;
+ case "close_directive":
+ Bi(t, wi, r), (wi = void 0);
+ }
+ } catch (t) {
+ nt.error(`Error while rendering sequenceDiagram directive: ${e} jison context: ${i}`), nt.error(t.message);
+ }
+ },
+ Bi = function (t, e, i) {
+ switch ((nt.info(`Directive type=${e.type} with args:`, e.args), e.type)) {
+ case "init":
+ case "initialize":
+ ["config"].forEach((t) => {
+ void 0 !== e.args[t] && ("flowchart-v2" === i && (i = "flowchart"), (e.args[i] = e.args[t]), delete e.args[t]);
+ }),
+ ye(e.args);
+ break;
+ case "wrap":
+ case "nowrap":
+ t && t.setWrap && t.setWrap("wrap" === e.type);
+ break;
+ case "themeCss":
+ nt.warn("themeCss encountered");
+ break;
+ default:
+ nt.warn(`Unhandled directive: source: '%%{${e.type}: ${JSON.stringify(e.args ? e.args : {})}}%%`, e);
+ }
+ },
+ Fi = nt,
+ Li = ot,
+ Mi = ge,
+ Ai = (t) => ct(t, Mi()),
+ Ei = Ke,
+ Zi = (t, e, i, r) => Si(t, e, i, r),
+ Oi = {},
+ qi = (t, e, i) => {
+ if (Oi[t]) throw new Error(`Diagram ${t} already registered.`);
+ var r, n;
+ (Oi[t] = e), i && Ot(t, i), (r = t), void 0 !== (n = e.styles) && (ui[r] = n), e.injectUtils && e.injectUtils(Fi, Li, Mi, Ai, Ei, Ti, Zi);
+ },
+ Ii = (t) => {
+ if (t in Oi) return Oi[t];
+ throw new Ni(t);
+ };
+ class Ni extends Error {
+ constructor(t) {
+ super(`Diagram ${t} not found.`);
+ }
+ }
+ let Di = !1;
+ const $i = () => {
+ Di ||
+ ((Di = !0),
+ qi("error", ii, (t) => "error" === t.toLowerCase().trim()),
+ qi(
+ "---",
+ {
+ db: { clear: () => {} },
+ styles: {},
+ renderer: {},
+ parser: {
+ parser: { yy: {} },
+ parse: () => {
+ throw new Error(
+ "Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks",
+ );
+ },
+ },
+ init: () => null,
+ },
+ (t) => t.toLowerCase().trimStart().startsWith("---"),
+ ),
+ Zt(ve, We, Pe, Be, Ae, Ze, Oe, De, ze, ni, Se, Te, li, ai, Le, Ve, He, Xe, Ie, ci));
+ };
+ function zi(t) {
+ return null == t;
+ }
+ var ji = {
+ isNothing: zi,
+ isObject: function (t) {
+ return "object" == typeof t && null !== t;
+ },
+ toArray: function (t) {
+ return Array.isArray(t) ? t : zi(t) ? [] : [t];
+ },
+ repeat: function (t, e) {
+ var i,
+ r = "";
+ for (i = 0; i < e; i += 1) r += t;
+ return r;
+ },
+ isNegativeZero: function (t) {
+ return 0 === t && Number.NEGATIVE_INFINITY === 1 / t;
+ },
+ extend: function (t, e) {
+ var i, r, n, o;
+ if (e) for (i = 0, r = (o = Object.keys(e)).length; i < r; i += 1) t[(n = o[i])] = e[n];
+ return t;
+ },
+ };
+ function Pi(t, e) {
+ var i = "",
+ r = t.reason || "(unknown reason)";
+ return t.mark
+ ? (t.mark.name && (i += 'in "' + t.mark.name + '" '),
+ (i += "(" + (t.mark.line + 1) + ":" + (t.mark.column + 1) + ")"),
+ !e && t.mark.snippet && (i += "\n\n" + t.mark.snippet),
+ r + " " + i)
+ : r;
+ }
+ function Ri(t, e) {
+ Error.call(this),
+ (this.name = "YAMLException"),
+ (this.reason = t),
+ (this.mark = e),
+ (this.message = Pi(this, !1)),
+ Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : (this.stack = new Error().stack || "");
+ }
+ (Ri.prototype = Object.create(Error.prototype)),
+ (Ri.prototype.constructor = Ri),
+ (Ri.prototype.toString = function (t) {
+ return this.name + ": " + Pi(this, t);
+ });
+ var Wi = Ri;
+ function Ui(t, e, i, r, n) {
+ var o = "",
+ a = "",
+ s = Math.floor(n / 2) - 1;
+ return (
+ r - e > s && (e = r - s + (o = " ... ").length),
+ i - r > s && (i = r + s - (a = " ...").length),
+ { str: o + t.slice(e, i).replace(/\t/g, "→") + a, pos: r - e + o.length }
+ );
+ }
+ function Hi(t, e) {
+ return ji.repeat(" ", e - t.length) + t;
+ }
+ var Yi = function (t, e) {
+ if (((e = Object.create(e || null)), !t.buffer)) return null;
+ e.maxLength || (e.maxLength = 79),
+ "number" != typeof e.indent && (e.indent = 1),
+ "number" != typeof e.linesBefore && (e.linesBefore = 3),
+ "number" != typeof e.linesAfter && (e.linesAfter = 2);
+ for (var i, r = /\r?\n|\r|\0/g, n = [0], o = [], a = -1; (i = r.exec(t.buffer)); )
+ o.push(i.index), n.push(i.index + i[0].length), t.position <= i.index && a < 0 && (a = n.length - 2);
+ a < 0 && (a = n.length - 1);
+ var s,
+ l,
+ h = "",
+ c = Math.min(t.line + e.linesAfter, o.length).toString().length,
+ u = e.maxLength - (e.indent + c + 3);
+ for (s = 1; s <= e.linesBefore && !(a - s < 0); s++)
+ (l = Ui(t.buffer, n[a - s], o[a - s], t.position - (n[a] - n[a - s]), u)),
+ (h = ji.repeat(" ", e.indent) + Hi((t.line - s + 1).toString(), c) + " | " + l.str + "\n" + h);
+ for (
+ l = Ui(t.buffer, n[a], o[a], t.position, u),
+ h += ji.repeat(" ", e.indent) + Hi((t.line + 1).toString(), c) + " | " + l.str + "\n",
+ h += ji.repeat("-", e.indent + c + 3 + l.pos) + "^\n",
+ s = 1;
+ s <= e.linesAfter && !(a + s >= o.length);
+ s++
+ )
+ (l = Ui(t.buffer, n[a + s], o[a + s], t.position - (n[a] - n[a + s]), u)),
+ (h += ji.repeat(" ", e.indent) + Hi((t.line + s + 1).toString(), c) + " | " + l.str + "\n");
+ return h.replace(/\n$/, "");
+ },
+ Vi = ["kind", "multi", "resolve", "construct", "instanceOf", "predicate", "represent", "representName", "defaultStyle", "styleAliases"],
+ Gi = ["scalar", "sequence", "mapping"],
+ Xi = function (t, e) {
+ var i, r;
+ if (
+ ((e = e || {}),
+ Object.keys(e).forEach(function (e) {
+ if (-1 === Vi.indexOf(e)) throw new Wi('Unknown option "' + e + '" is met in definition of "' + t + '" YAML type.');
+ }),
+ (this.options = e),
+ (this.tag = t),
+ (this.kind = e.kind || null),
+ (this.resolve =
+ e.resolve ||
+ function () {
+ return !0;
+ }),
+ (this.construct =
+ e.construct ||
+ function (t) {
+ return t;
+ }),
+ (this.instanceOf = e.instanceOf || null),
+ (this.predicate = e.predicate || null),
+ (this.represent = e.represent || null),
+ (this.representName = e.representName || null),
+ (this.defaultStyle = e.defaultStyle || null),
+ (this.multi = e.multi || !1),
+ (this.styleAliases =
+ ((i = e.styleAliases || null),
+ (r = {}),
+ null !== i &&
+ Object.keys(i).forEach(function (t) {
+ i[t].forEach(function (e) {
+ r[String(e)] = t;
+ });
+ }),
+ r)),
+ -1 === Gi.indexOf(this.kind))
+ )
+ throw new Wi('Unknown kind "' + this.kind + '" is specified for "' + t + '" YAML type.');
+ };
+ function Ji(t, e) {
+ var i = [];
+ return (
+ t[e].forEach(function (t) {
+ var e = i.length;
+ i.forEach(function (i, r) {
+ i.tag === t.tag && i.kind === t.kind && i.multi === t.multi && (e = r);
+ }),
+ (i[e] = t);
+ }),
+ i
+ );
+ }
+ function Qi(t) {
+ return this.extend(t);
+ }
+ Qi.prototype.extend = function (t) {
+ var e = [],
+ i = [];
+ if (t instanceof Xi) i.push(t);
+ else if (Array.isArray(t)) i = i.concat(t);
+ else {
+ if (!t || (!Array.isArray(t.implicit) && !Array.isArray(t.explicit)))
+ throw new Wi("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");
+ t.implicit && (e = e.concat(t.implicit)), t.explicit && (i = i.concat(t.explicit));
+ }
+ e.forEach(function (t) {
+ if (!(t instanceof Xi)) throw new Wi("Specified list of YAML types (or a single Type object) contains a non-Type object.");
+ if (t.loadKind && "scalar" !== t.loadKind)
+ throw new Wi("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");
+ if (t.multi) throw new Wi("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.");
+ }),
+ i.forEach(function (t) {
+ if (!(t instanceof Xi)) throw new Wi("Specified list of YAML types (or a single Type object) contains a non-Type object.");
+ });
+ var r = Object.create(Qi.prototype);
+ return (
+ (r.implicit = (this.implicit || []).concat(e)),
+ (r.explicit = (this.explicit || []).concat(i)),
+ (r.compiledImplicit = Ji(r, "implicit")),
+ (r.compiledExplicit = Ji(r, "explicit")),
+ (r.compiledTypeMap = (function () {
+ var t,
+ e,
+ i = {
+ scalar: {},
+ sequence: {},
+ mapping: {},
+ fallback: {},
+ multi: { scalar: [], sequence: [], mapping: [], fallback: [] },
+ };
+ function r(t) {
+ t.multi ? (i.multi[t.kind].push(t), i.multi.fallback.push(t)) : (i[t.kind][t.tag] = i.fallback[t.tag] = t);
+ }
+ for (t = 0, e = arguments.length; t < e; t += 1) arguments[t].forEach(r);
+ return i;
+ })(r.compiledImplicit, r.compiledExplicit)),
+ r
+ );
+ };
+ var Ki = new Qi({
+ explicit: [
+ new Xi("tag:yaml.org,2002:str", {
+ kind: "scalar",
+ construct: function (t) {
+ return null !== t ? t : "";
+ },
+ }),
+ new Xi("tag:yaml.org,2002:seq", {
+ kind: "sequence",
+ construct: function (t) {
+ return null !== t ? t : [];
+ },
+ }),
+ new Xi("tag:yaml.org,2002:map", {
+ kind: "mapping",
+ construct: function (t) {
+ return null !== t ? t : {};
+ },
+ }),
+ ],
+ }),
+ tr = new Xi("tag:yaml.org,2002:null", {
+ kind: "scalar",
+ resolve: function (t) {
+ if (null === t) return !0;
+ var e = t.length;
+ return (1 === e && "~" === t) || (4 === e && ("null" === t || "Null" === t || "NULL" === t));
+ },
+ construct: function () {
+ return null;
+ },
+ predicate: function (t) {
+ return null === t;
+ },
+ represent: {
+ canonical: function () {
+ return "~";
+ },
+ lowercase: function () {
+ return "null";
+ },
+ uppercase: function () {
+ return "NULL";
+ },
+ camelcase: function () {
+ return "Null";
+ },
+ empty: function () {
+ return "";
+ },
+ },
+ defaultStyle: "lowercase",
+ }),
+ er = new Xi("tag:yaml.org,2002:bool", {
+ kind: "scalar",
+ resolve: function (t) {
+ if (null === t) return !1;
+ var e = t.length;
+ return (4 === e && ("true" === t || "True" === t || "TRUE" === t)) || (5 === e && ("false" === t || "False" === t || "FALSE" === t));
+ },
+ construct: function (t) {
+ return "true" === t || "True" === t || "TRUE" === t;
+ },
+ predicate: function (t) {
+ return "[object Boolean]" === Object.prototype.toString.call(t);
+ },
+ represent: {
+ lowercase: function (t) {
+ return t ? "true" : "false";
+ },
+ uppercase: function (t) {
+ return t ? "TRUE" : "FALSE";
+ },
+ camelcase: function (t) {
+ return t ? "True" : "False";
+ },
+ },
+ defaultStyle: "lowercase",
+ });
+ function ir(t) {
+ return 48 <= t && t <= 55;
+ }
+ function rr(t) {
+ return 48 <= t && t <= 57;
+ }
+ var nr = new Xi("tag:yaml.org,2002:int", {
+ kind: "scalar",
+ resolve: function (t) {
+ if (null === t) return !1;
+ var e,
+ i,
+ r = t.length,
+ n = 0,
+ o = !1;
+ if (!r) return !1;
+ if ((("-" !== (e = t[n]) && "+" !== e) || (e = t[++n]), "0" === e)) {
+ if (n + 1 === r) return !0;
+ if ("b" === (e = t[++n])) {
+ for (n++; n < r; n++)
+ if ("_" !== (e = t[n])) {
+ if ("0" !== e && "1" !== e) return !1;
+ o = !0;
+ }
+ return o && "_" !== e;
+ }
+ if ("x" === e) {
+ for (n++; n < r; n++)
+ if ("_" !== (e = t[n])) {
+ if (!((48 <= (i = t.charCodeAt(n)) && i <= 57) || (65 <= i && i <= 70) || (97 <= i && i <= 102))) return !1;
+ o = !0;
+ }
+ return o && "_" !== e;
+ }
+ if ("o" === e) {
+ for (n++; n < r; n++)
+ if ("_" !== (e = t[n])) {
+ if (!ir(t.charCodeAt(n))) return !1;
+ o = !0;
+ }
+ return o && "_" !== e;
+ }
+ }
+ if ("_" === e) return !1;
+ for (; n < r; n++)
+ if ("_" !== (e = t[n])) {
+ if (!rr(t.charCodeAt(n))) return !1;
+ o = !0;
+ }
+ return !(!o || "_" === e);
+ },
+ construct: function (t) {
+ var e,
+ i = t,
+ r = 1;
+ if (
+ (-1 !== i.indexOf("_") && (i = i.replace(/_/g, "")),
+ ("-" !== (e = i[0]) && "+" !== e) || ("-" === e && (r = -1), (e = (i = i.slice(1))[0])),
+ "0" === i)
+ )
+ return 0;
+ if ("0" === e) {
+ if ("b" === i[1]) return r * parseInt(i.slice(2), 2);
+ if ("x" === i[1]) return r * parseInt(i.slice(2), 16);
+ if ("o" === i[1]) return r * parseInt(i.slice(2), 8);
+ }
+ return r * parseInt(i, 10);
+ },
+ predicate: function (t) {
+ return "[object Number]" === Object.prototype.toString.call(t) && t % 1 == 0 && !ji.isNegativeZero(t);
+ },
+ represent: {
+ binary: function (t) {
+ return t >= 0 ? "0b" + t.toString(2) : "-0b" + t.toString(2).slice(1);
+ },
+ octal: function (t) {
+ return t >= 0 ? "0o" + t.toString(8) : "-0o" + t.toString(8).slice(1);
+ },
+ decimal: function (t) {
+ return t.toString(10);
+ },
+ hexadecimal: function (t) {
+ return t >= 0 ? "0x" + t.toString(16).toUpperCase() : "-0x" + t.toString(16).toUpperCase().slice(1);
+ },
+ },
+ defaultStyle: "decimal",
+ styleAliases: {
+ binary: [2, "bin"],
+ octal: [8, "oct"],
+ decimal: [10, "dec"],
+ hexadecimal: [16, "hex"],
+ },
+ }),
+ or = new RegExp(
+ "^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$",
+ ),
+ ar = /^[-+]?[0-9]+e/,
+ sr = new Xi("tag:yaml.org,2002:float", {
+ kind: "scalar",
+ resolve: function (t) {
+ return null !== t && !(!or.test(t) || "_" === t[t.length - 1]);
+ },
+ construct: function (t) {
+ var e, i;
+ return (
+ (i = "-" === (e = t.replace(/_/g, "").toLowerCase())[0] ? -1 : 1),
+ "+-".indexOf(e[0]) >= 0 && (e = e.slice(1)),
+ ".inf" === e ? (1 === i ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY) : ".nan" === e ? NaN : i * parseFloat(e, 10)
+ );
+ },
+ predicate: function (t) {
+ return "[object Number]" === Object.prototype.toString.call(t) && (t % 1 != 0 || ji.isNegativeZero(t));
+ },
+ represent: function (t, e) {
+ var i;
+ if (isNaN(t))
+ switch (e) {
+ case "lowercase":
+ return ".nan";
+ case "uppercase":
+ return ".NAN";
+ case "camelcase":
+ return ".NaN";
+ }
+ else if (Number.POSITIVE_INFINITY === t)
+ switch (e) {
+ case "lowercase":
+ return ".inf";
+ case "uppercase":
+ return ".INF";
+ case "camelcase":
+ return ".Inf";
+ }
+ else if (Number.NEGATIVE_INFINITY === t)
+ switch (e) {
+ case "lowercase":
+ return "-.inf";
+ case "uppercase":
+ return "-.INF";
+ case "camelcase":
+ return "-.Inf";
+ }
+ else if (ji.isNegativeZero(t)) return "-0.0";
+ return (i = t.toString(10)), ar.test(i) ? i.replace("e", ".e") : i;
+ },
+ defaultStyle: "lowercase",
+ }),
+ lr = Ki.extend({ implicit: [tr, er, nr, sr] }),
+ hr = lr,
+ cr = new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),
+ ur = new RegExp(
+ "^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$",
+ ),
+ fr = new Xi("tag:yaml.org,2002:timestamp", {
+ kind: "scalar",
+ resolve: function (t) {
+ return null !== t && (null !== cr.exec(t) || null !== ur.exec(t));
+ },
+ construct: function (t) {
+ var e,
+ i,
+ r,
+ n,
+ o,
+ a,
+ s,
+ l,
+ h = 0,
+ c = null;
+ if ((null === (e = cr.exec(t)) && (e = ur.exec(t)), null === e)) throw new Error("Date resolve error");
+ if (((i = +e[1]), (r = +e[2] - 1), (n = +e[3]), !e[4])) return new Date(Date.UTC(i, r, n));
+ if (((o = +e[4]), (a = +e[5]), (s = +e[6]), e[7])) {
+ for (h = e[7].slice(0, 3); h.length < 3; ) h += "0";
+ h = +h;
+ }
+ return (
+ e[9] && ((c = 6e4 * (60 * +e[10] + +(e[11] || 0))), "-" === e[9] && (c = -c)),
+ (l = new Date(Date.UTC(i, r, n, o, a, s, h))),
+ c && l.setTime(l.getTime() - c),
+ l
+ );
+ },
+ instanceOf: Date,
+ represent: function (t) {
+ return t.toISOString();
+ },
+ }),
+ dr = new Xi("tag:yaml.org,2002:merge", {
+ kind: "scalar",
+ resolve: function (t) {
+ return "<<" === t || null === t;
+ },
+ }),
+ pr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r",
+ gr = new Xi("tag:yaml.org,2002:binary", {
+ kind: "scalar",
+ resolve: function (t) {
+ if (null === t) return !1;
+ var e,
+ i,
+ r = 0,
+ n = t.length,
+ o = pr;
+ for (i = 0; i < n; i++)
+ if (!((e = o.indexOf(t.charAt(i))) > 64)) {
+ if (e < 0) return !1;
+ r += 6;
+ }
+ return r % 8 == 0;
+ },
+ construct: function (t) {
+ var e,
+ i,
+ r = t.replace(/[\r\n=]/g, ""),
+ n = r.length,
+ o = pr,
+ a = 0,
+ s = [];
+ for (e = 0; e < n; e++)
+ e % 4 == 0 && e && (s.push((a >> 16) & 255), s.push((a >> 8) & 255), s.push(255 & a)), (a = (a << 6) | o.indexOf(r.charAt(e)));
+ return (
+ 0 == (i = (n % 4) * 6)
+ ? (s.push((a >> 16) & 255), s.push((a >> 8) & 255), s.push(255 & a))
+ : 18 === i
+ ? (s.push((a >> 10) & 255), s.push((a >> 2) & 255))
+ : 12 === i && s.push((a >> 4) & 255),
+ new Uint8Array(s)
+ );
+ },
+ predicate: function (t) {
+ return "[object Uint8Array]" === Object.prototype.toString.call(t);
+ },
+ represent: function (t) {
+ var e,
+ i,
+ r = "",
+ n = 0,
+ o = t.length,
+ a = pr;
+ for (e = 0; e < o; e++)
+ e % 3 == 0 && e && ((r += a[(n >> 18) & 63]), (r += a[(n >> 12) & 63]), (r += a[(n >> 6) & 63]), (r += a[63 & n])),
+ (n = (n << 8) + t[e]);
+ return (
+ 0 == (i = o % 3)
+ ? ((r += a[(n >> 18) & 63]), (r += a[(n >> 12) & 63]), (r += a[(n >> 6) & 63]), (r += a[63 & n]))
+ : 2 === i
+ ? ((r += a[(n >> 10) & 63]), (r += a[(n >> 4) & 63]), (r += a[(n << 2) & 63]), (r += a[64]))
+ : 1 === i && ((r += a[(n >> 2) & 63]), (r += a[(n << 4) & 63]), (r += a[64]), (r += a[64])),
+ r
+ );
+ },
+ }),
+ mr = Object.prototype.hasOwnProperty,
+ yr = Object.prototype.toString,
+ _r = new Xi("tag:yaml.org,2002:omap", {
+ kind: "sequence",
+ resolve: function (t) {
+ if (null === t) return !0;
+ var e,
+ i,
+ r,
+ n,
+ o,
+ a = [],
+ s = t;
+ for (e = 0, i = s.length; e < i; e += 1) {
+ if (((r = s[e]), (o = !1), "[object Object]" !== yr.call(r))) return !1;
+ for (n in r)
+ if (mr.call(r, n)) {
+ if (o) return !1;
+ o = !0;
+ }
+ if (!o) return !1;
+ if (-1 !== a.indexOf(n)) return !1;
+ a.push(n);
+ }
+ return !0;
+ },
+ construct: function (t) {
+ return null !== t ? t : [];
+ },
+ }),
+ br = Object.prototype.toString,
+ Cr = new Xi("tag:yaml.org,2002:pairs", {
+ kind: "sequence",
+ resolve: function (t) {
+ if (null === t) return !0;
+ var e,
+ i,
+ r,
+ n,
+ o,
+ a = t;
+ for (o = new Array(a.length), e = 0, i = a.length; e < i; e += 1) {
+ if (((r = a[e]), "[object Object]" !== br.call(r))) return !1;
+ if (1 !== (n = Object.keys(r)).length) return !1;
+ o[e] = [n[0], r[n[0]]];
+ }
+ return !0;
+ },
+ construct: function (t) {
+ if (null === t) return [];
+ var e,
+ i,
+ r,
+ n,
+ o,
+ a = t;
+ for (o = new Array(a.length), e = 0, i = a.length; e < i; e += 1) (r = a[e]), (n = Object.keys(r)), (o[e] = [n[0], r[n[0]]]);
+ return o;
+ },
+ }),
+ xr = Object.prototype.hasOwnProperty,
+ vr = new Xi("tag:yaml.org,2002:set", {
+ kind: "mapping",
+ resolve: function (t) {
+ if (null === t) return !0;
+ var e,
+ i = t;
+ for (e in i) if (xr.call(i, e) && null !== i[e]) return !1;
+ return !0;
+ },
+ construct: function (t) {
+ return null !== t ? t : {};
+ },
+ }),
+ kr = hr.extend({ implicit: [fr, dr], explicit: [gr, _r, Cr, vr] }),
+ Tr = Object.prototype.hasOwnProperty,
+ wr = 1,
+ Sr = 2,
+ Br = 3,
+ Fr = 4,
+ Lr = 1,
+ Mr = 2,
+ Ar = 3,
+ Er = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,
+ Zr = /[\x85\u2028\u2029]/,
+ Or = /[,\[\]\{\}]/,
+ qr = /^(?:!|!!|![a-z\-]+!)$/i,
+ Ir = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;
+ function Nr(t) {
+ return Object.prototype.toString.call(t);
+ }
+ function Dr(t) {
+ return 10 === t || 13 === t;
+ }
+ function $r(t) {
+ return 9 === t || 32 === t;
+ }
+ function zr(t) {
+ return 9 === t || 32 === t || 10 === t || 13 === t;
+ }
+ function jr(t) {
+ return 44 === t || 91 === t || 93 === t || 123 === t || 125 === t;
+ }
+ function Pr(t) {
+ var e;
+ return 48 <= t && t <= 57 ? t - 48 : 97 <= (e = 32 | t) && e <= 102 ? e - 97 + 10 : -1;
+ }
+ function Rr(t) {
+ return 48 === t
+ ? "\0"
+ : 97 === t
+ ? ""
+ : 98 === t
+ ? "\b"
+ : 116 === t || 9 === t
+ ? "\t"
+ : 110 === t
+ ? "\n"
+ : 118 === t
+ ? "\v"
+ : 102 === t
+ ? "\f"
+ : 114 === t
+ ? "\r"
+ : 101 === t
+ ? ""
+ : 32 === t
+ ? " "
+ : 34 === t
+ ? '"'
+ : 47 === t
+ ? "/"
+ : 92 === t
+ ? "\\"
+ : 78 === t
+ ? "
"
+ : 95 === t
+ ? " "
+ : 76 === t
+ ? "\u2028"
+ : 80 === t
+ ? "\u2029"
+ : "";
+ }
+ function Wr(t) {
+ return t <= 65535 ? String.fromCharCode(t) : String.fromCharCode(55296 + ((t - 65536) >> 10), 56320 + ((t - 65536) & 1023));
+ }
+ for (var Ur = new Array(256), Hr = new Array(256), Yr = 0; Yr < 256; Yr++) (Ur[Yr] = Rr(Yr) ? 1 : 0), (Hr[Yr] = Rr(Yr));
+ function Vr(t, e) {
+ (this.input = t),
+ (this.filename = e.filename || null),
+ (this.schema = e.schema || kr),
+ (this.onWarning = e.onWarning || null),
+ (this.legacy = e.legacy || !1),
+ (this.json = e.json || !1),
+ (this.listener = e.listener || null),
+ (this.implicitTypes = this.schema.compiledImplicit),
+ (this.typeMap = this.schema.compiledTypeMap),
+ (this.length = t.length),
+ (this.position = 0),
+ (this.line = 0),
+ (this.lineStart = 0),
+ (this.lineIndent = 0),
+ (this.firstTabInLine = -1),
+ (this.documents = []);
+ }
+ function Gr(t, e) {
+ var i = {
+ name: t.filename,
+ buffer: t.input.slice(0, -1),
+ position: t.position,
+ line: t.line,
+ column: t.position - t.lineStart,
+ };
+ return (i.snippet = Yi(i)), new Wi(e, i);
+ }
+ function Xr(t, e) {
+ throw Gr(t, e);
+ }
+ function Jr(t, e) {
+ t.onWarning && t.onWarning.call(null, Gr(t, e));
+ }
+ var Qr = {
+ YAML: function (t, e, i) {
+ var r, n, o;
+ null !== t.version && Xr(t, "duplication of %YAML directive"),
+ 1 !== i.length && Xr(t, "YAML directive accepts exactly one argument"),
+ null === (r = /^([0-9]+)\.([0-9]+)$/.exec(i[0])) && Xr(t, "ill-formed argument of the YAML directive"),
+ (n = parseInt(r[1], 10)),
+ (o = parseInt(r[2], 10)),
+ 1 !== n && Xr(t, "unacceptable YAML version of the document"),
+ (t.version = i[0]),
+ (t.checkLineBreaks = o < 2),
+ 1 !== o && 2 !== o && Jr(t, "unsupported YAML version of the document");
+ },
+ TAG: function (t, e, i) {
+ var r, n;
+ 2 !== i.length && Xr(t, "TAG directive accepts exactly two arguments"),
+ (r = i[0]),
+ (n = i[1]),
+ qr.test(r) || Xr(t, "ill-formed tag handle (first argument) of the TAG directive"),
+ Tr.call(t.tagMap, r) && Xr(t, 'there is a previously declared suffix for "' + r + '" tag handle'),
+ Ir.test(n) || Xr(t, "ill-formed tag prefix (second argument) of the TAG directive");
+ try {
+ n = decodeURIComponent(n);
+ } catch (e) {
+ Xr(t, "tag prefix is malformed: " + n);
+ }
+ t.tagMap[r] = n;
+ },
+ };
+ function Kr(t, e, i, r) {
+ var n, o, a, s;
+ if (e < i) {
+ if (((s = t.input.slice(e, i)), r))
+ for (n = 0, o = s.length; n < o; n += 1)
+ 9 === (a = s.charCodeAt(n)) || (32 <= a && a <= 1114111) || Xr(t, "expected valid JSON character");
+ else Er.test(s) && Xr(t, "the stream contains non-printable characters");
+ t.result += s;
+ }
+ }
+ function tn(t, e, i, r) {
+ var n, o, a, s;
+ for (
+ ji.isObject(i) || Xr(t, "cannot merge mappings; the provided source object is unacceptable"), a = 0, s = (n = Object.keys(i)).length;
+ a < s;
+ a += 1
+ )
+ (o = n[a]), Tr.call(e, o) || ((e[o] = i[o]), (r[o] = !0));
+ }
+ function en(t, e, i, r, n, o, a, s, l) {
+ var h, c;
+ if (Array.isArray(n))
+ for (h = 0, c = (n = Array.prototype.slice.call(n)).length; h < c; h += 1)
+ Array.isArray(n[h]) && Xr(t, "nested arrays are not supported inside keys"),
+ "object" == typeof n && "[object Object]" === Nr(n[h]) && (n[h] = "[object Object]");
+ if (
+ ("object" == typeof n && "[object Object]" === Nr(n) && (n = "[object Object]"),
+ (n = String(n)),
+ null === e && (e = {}),
+ "tag:yaml.org,2002:merge" === r)
+ )
+ if (Array.isArray(o)) for (h = 0, c = o.length; h < c; h += 1) tn(t, e, o[h], i);
+ else tn(t, e, o, i);
+ else
+ t.json ||
+ Tr.call(i, n) ||
+ !Tr.call(e, n) ||
+ ((t.line = a || t.line), (t.lineStart = s || t.lineStart), (t.position = l || t.position), Xr(t, "duplicated mapping key")),
+ "__proto__" === n
+ ? Object.defineProperty(e, n, {
+ configurable: !0,
+ enumerable: !0,
+ writable: !0,
+ value: o,
+ })
+ : (e[n] = o),
+ delete i[n];
+ return e;
+ }
+ function rn(t) {
+ var e;
+ 10 === (e = t.input.charCodeAt(t.position))
+ ? t.position++
+ : 13 === e
+ ? (t.position++, 10 === t.input.charCodeAt(t.position) && t.position++)
+ : Xr(t, "a line break is expected"),
+ (t.line += 1),
+ (t.lineStart = t.position),
+ (t.firstTabInLine = -1);
+ }
+ function nn(t, e, i) {
+ for (var r = 0, n = t.input.charCodeAt(t.position); 0 !== n; ) {
+ for (; $r(n); ) 9 === n && -1 === t.firstTabInLine && (t.firstTabInLine = t.position), (n = t.input.charCodeAt(++t.position));
+ if (e && 35 === n)
+ do {
+ n = t.input.charCodeAt(++t.position);
+ } while (10 !== n && 13 !== n && 0 !== n);
+ if (!Dr(n)) break;
+ for (rn(t), n = t.input.charCodeAt(t.position), r++, t.lineIndent = 0; 32 === n; ) t.lineIndent++, (n = t.input.charCodeAt(++t.position));
+ }
+ return -1 !== i && 0 !== r && t.lineIndent < i && Jr(t, "deficient indentation"), r;
+ }
+ function on(t) {
+ var e,
+ i = t.position;
+ return !(
+ (45 !== (e = t.input.charCodeAt(i)) && 46 !== e) ||
+ e !== t.input.charCodeAt(i + 1) ||
+ e !== t.input.charCodeAt(i + 2) ||
+ ((i += 3), 0 !== (e = t.input.charCodeAt(i)) && !zr(e))
+ );
+ }
+ function an(t, e) {
+ 1 === e ? (t.result += " ") : e > 1 && (t.result += ji.repeat("\n", e - 1));
+ }
+ function sn(t, e) {
+ var i,
+ r,
+ n = t.tag,
+ o = t.anchor,
+ a = [],
+ s = !1;
+ if (-1 !== t.firstTabInLine) return !1;
+ for (
+ null !== t.anchor && (t.anchorMap[t.anchor] = a), r = t.input.charCodeAt(t.position);
+ 0 !== r &&
+ (-1 !== t.firstTabInLine && ((t.position = t.firstTabInLine), Xr(t, "tab characters must not be used in indentation")), 45 === r) &&
+ zr(t.input.charCodeAt(t.position + 1));
+
+ )
+ if (((s = !0), t.position++, nn(t, !0, -1) && t.lineIndent <= e)) a.push(null), (r = t.input.charCodeAt(t.position));
+ else if (
+ ((i = t.line),
+ cn(t, e, Br, !1, !0),
+ a.push(t.result),
+ nn(t, !0, -1),
+ (r = t.input.charCodeAt(t.position)),
+ (t.line === i || t.lineIndent > e) && 0 !== r)
+ )
+ Xr(t, "bad indentation of a sequence entry");
+ else if (t.lineIndent < e) break;
+ return !!s && ((t.tag = n), (t.anchor = o), (t.kind = "sequence"), (t.result = a), !0);
+ }
+ function ln(t) {
+ var e,
+ i,
+ r,
+ n,
+ o = !1,
+ a = !1;
+ if (33 !== (n = t.input.charCodeAt(t.position))) return !1;
+ if (
+ (null !== t.tag && Xr(t, "duplication of a tag property"),
+ 60 === (n = t.input.charCodeAt(++t.position))
+ ? ((o = !0), (n = t.input.charCodeAt(++t.position)))
+ : 33 === n
+ ? ((a = !0), (i = "!!"), (n = t.input.charCodeAt(++t.position)))
+ : (i = "!"),
+ (e = t.position),
+ o)
+ ) {
+ do {
+ n = t.input.charCodeAt(++t.position);
+ } while (0 !== n && 62 !== n);
+ t.position < t.length
+ ? ((r = t.input.slice(e, t.position)), (n = t.input.charCodeAt(++t.position)))
+ : Xr(t, "unexpected end of the stream within a verbatim tag");
+ } else {
+ for (; 0 !== n && !zr(n); )
+ 33 === n &&
+ (a
+ ? Xr(t, "tag suffix cannot contain exclamation marks")
+ : ((i = t.input.slice(e - 1, t.position + 1)),
+ qr.test(i) || Xr(t, "named tag handle cannot contain such characters"),
+ (a = !0),
+ (e = t.position + 1))),
+ (n = t.input.charCodeAt(++t.position));
+ (r = t.input.slice(e, t.position)), Or.test(r) && Xr(t, "tag suffix cannot contain flow indicator characters");
+ }
+ r && !Ir.test(r) && Xr(t, "tag name cannot contain such characters: " + r);
+ try {
+ r = decodeURIComponent(r);
+ } catch (e) {
+ Xr(t, "tag name is malformed: " + r);
+ }
+ return (
+ o
+ ? (t.tag = r)
+ : Tr.call(t.tagMap, i)
+ ? (t.tag = t.tagMap[i] + r)
+ : "!" === i
+ ? (t.tag = "!" + r)
+ : "!!" === i
+ ? (t.tag = "tag:yaml.org,2002:" + r)
+ : Xr(t, 'undeclared tag handle "' + i + '"'),
+ !0
+ );
+ }
+ function hn(t) {
+ var e, i;
+ if (38 !== (i = t.input.charCodeAt(t.position))) return !1;
+ for (
+ null !== t.anchor && Xr(t, "duplication of an anchor property"), i = t.input.charCodeAt(++t.position), e = t.position;
+ 0 !== i && !zr(i) && !jr(i);
+
+ )
+ i = t.input.charCodeAt(++t.position);
+ return t.position === e && Xr(t, "name of an anchor node must contain at least one character"), (t.anchor = t.input.slice(e, t.position)), !0;
+ }
+ function cn(t, e, i, r, n) {
+ var o,
+ a,
+ s,
+ l,
+ h,
+ c,
+ u,
+ f,
+ d,
+ p = 1,
+ g = !1,
+ m = !1;
+ if (
+ (null !== t.listener && t.listener("open", t),
+ (t.tag = null),
+ (t.anchor = null),
+ (t.kind = null),
+ (t.result = null),
+ (o = a = s = Fr === i || Br === i),
+ r && nn(t, !0, -1) && ((g = !0), t.lineIndent > e ? (p = 1) : t.lineIndent === e ? (p = 0) : t.lineIndent < e && (p = -1)),
+ 1 === p)
+ )
+ for (; ln(t) || hn(t); )
+ nn(t, !0, -1) ? ((g = !0), (s = o), t.lineIndent > e ? (p = 1) : t.lineIndent === e ? (p = 0) : t.lineIndent < e && (p = -1)) : (s = !1);
+ if (
+ (s && (s = g || n),
+ (1 !== p && Fr !== i) ||
+ ((f = wr === i || Sr === i ? e : e + 1),
+ (d = t.position - t.lineStart),
+ 1 === p
+ ? (s &&
+ (sn(t, d) ||
+ (function (t, e, i) {
+ var r,
+ n,
+ o,
+ a,
+ s,
+ l,
+ h,
+ c = t.tag,
+ u = t.anchor,
+ f = {},
+ d = Object.create(null),
+ p = null,
+ g = null,
+ m = null,
+ y = !1,
+ _ = !1;
+ if (-1 !== t.firstTabInLine) return !1;
+ for (null !== t.anchor && (t.anchorMap[t.anchor] = f), h = t.input.charCodeAt(t.position); 0 !== h; ) {
+ if (
+ (y || -1 === t.firstTabInLine || ((t.position = t.firstTabInLine), Xr(t, "tab characters must not be used in indentation")),
+ (r = t.input.charCodeAt(t.position + 1)),
+ (o = t.line),
+ (63 !== h && 58 !== h) || !zr(r))
+ ) {
+ if (((a = t.line), (s = t.lineStart), (l = t.position), !cn(t, i, Sr, !1, !0))) break;
+ if (t.line === o) {
+ for (h = t.input.charCodeAt(t.position); $r(h); ) h = t.input.charCodeAt(++t.position);
+ if (58 === h)
+ zr((h = t.input.charCodeAt(++t.position))) ||
+ Xr(t, "a whitespace character is expected after the key-value separator within a block mapping"),
+ y && (en(t, f, d, p, g, null, a, s, l), (p = g = m = null)),
+ (_ = !0),
+ (y = !1),
+ (n = !1),
+ (p = t.tag),
+ (g = t.result);
+ else {
+ if (!_) return (t.tag = c), (t.anchor = u), !0;
+ Xr(t, "can not read an implicit mapping pair; a colon is missed");
+ }
+ } else {
+ if (!_) return (t.tag = c), (t.anchor = u), !0;
+ Xr(t, "can not read a block mapping entry; a multiline key may not be an implicit key");
+ }
+ } else
+ 63 === h
+ ? (y && (en(t, f, d, p, g, null, a, s, l), (p = g = m = null)), (_ = !0), (y = !0), (n = !0))
+ : y
+ ? ((y = !1), (n = !0))
+ : Xr(t, "incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),
+ (t.position += 1),
+ (h = r);
+ if (
+ ((t.line === o || t.lineIndent > e) &&
+ (y && ((a = t.line), (s = t.lineStart), (l = t.position)),
+ cn(t, e, Fr, !0, n) && (y ? (g = t.result) : (m = t.result)),
+ y || (en(t, f, d, p, g, m, a, s, l), (p = g = m = null)),
+ nn(t, !0, -1),
+ (h = t.input.charCodeAt(t.position))),
+ (t.line === o || t.lineIndent > e) && 0 !== h)
+ )
+ Xr(t, "bad indentation of a mapping entry");
+ else if (t.lineIndent < e) break;
+ }
+ return y && en(t, f, d, p, g, null, a, s, l), _ && ((t.tag = c), (t.anchor = u), (t.kind = "mapping"), (t.result = f)), _;
+ })(t, d, f))) ||
+ (function (t, e) {
+ var i,
+ r,
+ n,
+ o,
+ a,
+ s,
+ l,
+ h,
+ c,
+ u,
+ f,
+ d,
+ p = !0,
+ g = t.tag,
+ m = t.anchor,
+ y = Object.create(null);
+ if (91 === (d = t.input.charCodeAt(t.position))) (a = 93), (h = !1), (o = []);
+ else {
+ if (123 !== d) return !1;
+ (a = 125), (h = !0), (o = {});
+ }
+ for (null !== t.anchor && (t.anchorMap[t.anchor] = o), d = t.input.charCodeAt(++t.position); 0 !== d; ) {
+ if ((nn(t, !0, e), (d = t.input.charCodeAt(t.position)) === a))
+ return t.position++, (t.tag = g), (t.anchor = m), (t.kind = h ? "mapping" : "sequence"), (t.result = o), !0;
+ p ? 44 === d && Xr(t, "expected the node content, but found ','") : Xr(t, "missed comma between flow collection entries"),
+ (f = null),
+ (s = l = !1),
+ 63 === d && zr(t.input.charCodeAt(t.position + 1)) && ((s = l = !0), t.position++, nn(t, !0, e)),
+ (i = t.line),
+ (r = t.lineStart),
+ (n = t.position),
+ cn(t, e, wr, !1, !0),
+ (u = t.tag),
+ (c = t.result),
+ nn(t, !0, e),
+ (d = t.input.charCodeAt(t.position)),
+ (!l && t.line !== i) ||
+ 58 !== d ||
+ ((s = !0), (d = t.input.charCodeAt(++t.position)), nn(t, !0, e), cn(t, e, wr, !1, !0), (f = t.result)),
+ h ? en(t, o, y, u, c, f, i, r, n) : s ? o.push(en(t, null, y, u, c, f, i, r, n)) : o.push(c),
+ nn(t, !0, e),
+ 44 === (d = t.input.charCodeAt(t.position)) ? ((p = !0), (d = t.input.charCodeAt(++t.position))) : (p = !1);
+ }
+ Xr(t, "unexpected end of the stream within a flow collection");
+ })(t, f)
+ ? (m = !0)
+ : ((a &&
+ (function (t, e) {
+ var i,
+ r,
+ n,
+ o,
+ a,
+ s = Lr,
+ l = !1,
+ h = !1,
+ c = e,
+ u = 0,
+ f = !1;
+ if (124 === (o = t.input.charCodeAt(t.position))) r = !1;
+ else {
+ if (62 !== o) return !1;
+ r = !0;
+ }
+ for (t.kind = "scalar", t.result = ""; 0 !== o; )
+ if (43 === (o = t.input.charCodeAt(++t.position)) || 45 === o)
+ Lr === s ? (s = 43 === o ? Ar : Mr) : Xr(t, "repeat of a chomping mode identifier");
+ else {
+ if (!((n = 48 <= (a = o) && a <= 57 ? a - 48 : -1) >= 0)) break;
+ 0 === n
+ ? Xr(t, "bad explicit indentation width of a block scalar; it cannot be less than one")
+ : h
+ ? Xr(t, "repeat of an indentation width identifier")
+ : ((c = e + n - 1), (h = !0));
+ }
+ if ($r(o)) {
+ do {
+ o = t.input.charCodeAt(++t.position);
+ } while ($r(o));
+ if (35 === o)
+ do {
+ o = t.input.charCodeAt(++t.position);
+ } while (!Dr(o) && 0 !== o);
+ }
+ for (; 0 !== o; ) {
+ for (rn(t), t.lineIndent = 0, o = t.input.charCodeAt(t.position); (!h || t.lineIndent < c) && 32 === o; )
+ t.lineIndent++, (o = t.input.charCodeAt(++t.position));
+ if ((!h && t.lineIndent > c && (c = t.lineIndent), Dr(o))) u++;
+ else {
+ if (t.lineIndent < c) {
+ s === Ar ? (t.result += ji.repeat("\n", l ? 1 + u : u)) : s === Lr && l && (t.result += "\n");
+ break;
+ }
+ for (
+ r
+ ? $r(o)
+ ? ((f = !0), (t.result += ji.repeat("\n", l ? 1 + u : u)))
+ : f
+ ? ((f = !1), (t.result += ji.repeat("\n", u + 1)))
+ : 0 === u
+ ? l && (t.result += " ")
+ : (t.result += ji.repeat("\n", u))
+ : (t.result += ji.repeat("\n", l ? 1 + u : u)),
+ l = !0,
+ h = !0,
+ u = 0,
+ i = t.position;
+ !Dr(o) && 0 !== o;
+
+ )
+ o = t.input.charCodeAt(++t.position);
+ Kr(t, i, t.position, !1);
+ }
+ }
+ return !0;
+ })(t, f)) ||
+ (function (t, e) {
+ var i, r, n;
+ if (39 !== (i = t.input.charCodeAt(t.position))) return !1;
+ for (t.kind = "scalar", t.result = "", t.position++, r = n = t.position; 0 !== (i = t.input.charCodeAt(t.position)); )
+ if (39 === i) {
+ if ((Kr(t, r, t.position, !0), 39 !== (i = t.input.charCodeAt(++t.position)))) return !0;
+ (r = t.position), t.position++, (n = t.position);
+ } else
+ Dr(i)
+ ? (Kr(t, r, n, !0), an(t, nn(t, !1, e)), (r = n = t.position))
+ : t.position === t.lineStart && on(t)
+ ? Xr(t, "unexpected end of the document within a single quoted scalar")
+ : (t.position++, (n = t.position));
+ Xr(t, "unexpected end of the stream within a single quoted scalar");
+ })(t, f) ||
+ (function (t, e) {
+ var i, r, n, o, a, s, l;
+ if (34 !== (s = t.input.charCodeAt(t.position))) return !1;
+ for (t.kind = "scalar", t.result = "", t.position++, i = r = t.position; 0 !== (s = t.input.charCodeAt(t.position)); ) {
+ if (34 === s) return Kr(t, i, t.position, !0), t.position++, !0;
+ if (92 === s) {
+ if ((Kr(t, i, t.position, !0), Dr((s = t.input.charCodeAt(++t.position))))) nn(t, !1, e);
+ else if (s < 256 && Ur[s]) (t.result += Hr[s]), t.position++;
+ else if ((a = 120 === (l = s) ? 2 : 117 === l ? 4 : 85 === l ? 8 : 0) > 0) {
+ for (n = a, o = 0; n > 0; n--)
+ (a = Pr((s = t.input.charCodeAt(++t.position)))) >= 0 ? (o = (o << 4) + a) : Xr(t, "expected hexadecimal character");
+ (t.result += Wr(o)), t.position++;
+ } else Xr(t, "unknown escape sequence");
+ i = r = t.position;
+ } else
+ Dr(s)
+ ? (Kr(t, i, r, !0), an(t, nn(t, !1, e)), (i = r = t.position))
+ : t.position === t.lineStart && on(t)
+ ? Xr(t, "unexpected end of the document within a double quoted scalar")
+ : (t.position++, (r = t.position));
+ }
+ Xr(t, "unexpected end of the stream within a double quoted scalar");
+ })(t, f)
+ ? (m = !0)
+ : (function (t) {
+ var e, i, r;
+ if (42 !== (r = t.input.charCodeAt(t.position))) return !1;
+ for (r = t.input.charCodeAt(++t.position), e = t.position; 0 !== r && !zr(r) && !jr(r); )
+ r = t.input.charCodeAt(++t.position);
+ return (
+ t.position === e && Xr(t, "name of an alias node must contain at least one character"),
+ (i = t.input.slice(e, t.position)),
+ Tr.call(t.anchorMap, i) || Xr(t, 'unidentified alias "' + i + '"'),
+ (t.result = t.anchorMap[i]),
+ nn(t, !0, -1),
+ !0
+ );
+ })(t)
+ ? ((m = !0), (null === t.tag && null === t.anchor) || Xr(t, "alias node should not have any properties"))
+ : (function (t, e, i) {
+ var r,
+ n,
+ o,
+ a,
+ s,
+ l,
+ h,
+ c,
+ u = t.kind,
+ f = t.result;
+ if (
+ zr((c = t.input.charCodeAt(t.position))) ||
+ jr(c) ||
+ 35 === c ||
+ 38 === c ||
+ 42 === c ||
+ 33 === c ||
+ 124 === c ||
+ 62 === c ||
+ 39 === c ||
+ 34 === c ||
+ 37 === c ||
+ 64 === c ||
+ 96 === c
+ )
+ return !1;
+ if ((63 === c || 45 === c) && (zr((r = t.input.charCodeAt(t.position + 1))) || (i && jr(r)))) return !1;
+ for (t.kind = "scalar", t.result = "", n = o = t.position, a = !1; 0 !== c; ) {
+ if (58 === c) {
+ if (zr((r = t.input.charCodeAt(t.position + 1))) || (i && jr(r))) break;
+ } else if (35 === c) {
+ if (zr(t.input.charCodeAt(t.position - 1))) break;
+ } else {
+ if ((t.position === t.lineStart && on(t)) || (i && jr(c))) break;
+ if (Dr(c)) {
+ if (((s = t.line), (l = t.lineStart), (h = t.lineIndent), nn(t, !1, -1), t.lineIndent >= e)) {
+ (a = !0), (c = t.input.charCodeAt(t.position));
+ continue;
+ }
+ (t.position = o), (t.line = s), (t.lineStart = l), (t.lineIndent = h);
+ break;
+ }
+ }
+ a && (Kr(t, n, o, !1), an(t, t.line - s), (n = o = t.position), (a = !1)),
+ $r(c) || (o = t.position + 1),
+ (c = t.input.charCodeAt(++t.position));
+ }
+ return Kr(t, n, o, !1), !!t.result || ((t.kind = u), (t.result = f), !1);
+ })(t, f, wr === i) && ((m = !0), null === t.tag && (t.tag = "?")),
+ null !== t.anchor && (t.anchorMap[t.anchor] = t.result))
+ : 0 === p && (m = s && sn(t, d))),
+ null === t.tag)
+ )
+ null !== t.anchor && (t.anchorMap[t.anchor] = t.result);
+ else if ("?" === t.tag) {
+ for (
+ null !== t.result && "scalar" !== t.kind && Xr(t, 'unacceptable node kind for !> tag; it should be "scalar", not "' + t.kind + '"'),
+ l = 0,
+ h = t.implicitTypes.length;
+ l < h;
+ l += 1
+ )
+ if ((u = t.implicitTypes[l]).resolve(t.result)) {
+ (t.result = u.construct(t.result)), (t.tag = u.tag), null !== t.anchor && (t.anchorMap[t.anchor] = t.result);
+ break;
+ }
+ } else if ("!" !== t.tag) {
+ if (Tr.call(t.typeMap[t.kind || "fallback"], t.tag)) u = t.typeMap[t.kind || "fallback"][t.tag];
+ else
+ for (u = null, l = 0, h = (c = t.typeMap.multi[t.kind || "fallback"]).length; l < h; l += 1)
+ if (t.tag.slice(0, c[l].tag.length) === c[l].tag) {
+ u = c[l];
+ break;
+ }
+ u || Xr(t, "unknown tag !<" + t.tag + ">"),
+ null !== t.result &&
+ u.kind !== t.kind &&
+ Xr(t, "unacceptable node kind for !<" + t.tag + '> tag; it should be "' + u.kind + '", not "' + t.kind + '"'),
+ u.resolve(t.result, t.tag)
+ ? ((t.result = u.construct(t.result, t.tag)), null !== t.anchor && (t.anchorMap[t.anchor] = t.result))
+ : Xr(t, "cannot resolve a node with !<" + t.tag + "> explicit tag");
+ }
+ return null !== t.listener && t.listener("close", t), null !== t.tag || null !== t.anchor || m;
+ }
+ function un(t) {
+ var e,
+ i,
+ r,
+ n,
+ o = t.position,
+ a = !1;
+ for (
+ t.version = null, t.checkLineBreaks = t.legacy, t.tagMap = Object.create(null), t.anchorMap = Object.create(null);
+ 0 !== (n = t.input.charCodeAt(t.position)) && (nn(t, !0, -1), (n = t.input.charCodeAt(t.position)), !(t.lineIndent > 0 || 37 !== n));
+
+ ) {
+ for (a = !0, n = t.input.charCodeAt(++t.position), e = t.position; 0 !== n && !zr(n); ) n = t.input.charCodeAt(++t.position);
+ for (
+ r = [], (i = t.input.slice(e, t.position)).length < 1 && Xr(t, "directive name must not be less than one character in length");
+ 0 !== n;
+
+ ) {
+ for (; $r(n); ) n = t.input.charCodeAt(++t.position);
+ if (35 === n) {
+ do {
+ n = t.input.charCodeAt(++t.position);
+ } while (0 !== n && !Dr(n));
+ break;
+ }
+ if (Dr(n)) break;
+ for (e = t.position; 0 !== n && !zr(n); ) n = t.input.charCodeAt(++t.position);
+ r.push(t.input.slice(e, t.position));
+ }
+ 0 !== n && rn(t), Tr.call(Qr, i) ? Qr[i](t, i, r) : Jr(t, 'unknown document directive "' + i + '"');
+ }
+ nn(t, !0, -1),
+ 0 === t.lineIndent &&
+ 45 === t.input.charCodeAt(t.position) &&
+ 45 === t.input.charCodeAt(t.position + 1) &&
+ 45 === t.input.charCodeAt(t.position + 2)
+ ? ((t.position += 3), nn(t, !0, -1))
+ : a && Xr(t, "directives end mark is expected"),
+ cn(t, t.lineIndent - 1, Fr, !1, !0),
+ nn(t, !0, -1),
+ t.checkLineBreaks && Zr.test(t.input.slice(o, t.position)) && Jr(t, "non-ASCII line breaks are interpreted as content"),
+ t.documents.push(t.result),
+ t.position === t.lineStart && on(t)
+ ? 46 === t.input.charCodeAt(t.position) && ((t.position += 3), nn(t, !0, -1))
+ : t.position < t.length - 1 && Xr(t, "end of the stream or a document separator is expected");
+ }
+ function fn(t, e) {
+ (e = e || {}),
+ 0 !== (t = String(t)).length &&
+ (10 !== t.charCodeAt(t.length - 1) && 13 !== t.charCodeAt(t.length - 1) && (t += "\n"), 65279 === t.charCodeAt(0) && (t = t.slice(1)));
+ var i = new Vr(t, e),
+ r = t.indexOf("\0");
+ for (-1 !== r && ((i.position = r), Xr(i, "null byte is not allowed in input")), i.input += "\0"; 32 === i.input.charCodeAt(i.position); )
+ (i.lineIndent += 1), (i.position += 1);
+ for (; i.position < i.length - 1; ) un(i);
+ return i.documents;
+ }
+ var dn = lr,
+ pn = function (t, e) {
+ var i = fn(t, e);
+ if (0 !== i.length) {
+ if (1 === i.length) return i[0];
+ throw new Wi("expected a single document in the stream, but found more");
+ }
+ };
+ function gn(t, e, i) {
+ var r, n;
+ const o = t.match(Bt);
+ if (!o) return t;
+ const a = pn(o[1], { schema: dn });
+ return (
+ (null == a ? void 0 : a.title) && (null == (r = e.setDiagramTitle) || r.call(e, a.title.toString())),
+ (null == a ? void 0 : a.displayMode) && (null == (n = e.setDisplayMode) || n.call(e, a.displayMode.toString())),
+ (null == a ? void 0 : a.config) && (null == i || i(a.config)),
+ t.slice(o[0].length)
+ );
+ }
+ class mn {
+ constructor(t) {
+ (this.text = t), (this.type = "graph"), (this.text += "\n");
+ const e = ge();
+ try {
+ this.type = Et(t, e);
+ } catch (t) {
+ (this.type = "error"), (this.detectError = t);
+ }
+ const i = Ii(this.type);
+ nt.debug("Type " + this.type), (this.db = i.db), (this.renderer = i.renderer), (this.parser = i.parser);
+ const r = this.parser.parse.bind(this.parser);
+ (this.parser.parse = (t) => r(((t) => t.trimStart().replace(/^\s*%%(?!{)[^\n]+\n?/gm, ""))(gn(t, this.db, ye)))),
+ (this.parser.parser.yy = this.db),
+ (this.init = i.init),
+ this.parse();
+ }
+ parse() {
+ var t, e, i;
+ if (this.detectError) throw this.detectError;
+ null == (e = (t = this.db).clear) || e.call(t), null == (i = this.init) || i.call(this, ge()), this.parser.parse(this.text);
+ }
+ async render(t, e) {
+ await this.renderer.draw(this.text, t, e, this);
+ }
+ getParser() {
+ return this.parser;
+ }
+ getType() {
+ return this.type;
+ }
+ }
+ const yn = async (t) => {
+ const e = Et(t, ge());
+ try {
+ Ii(e);
+ } catch (t) {
+ const i = At[e].loader;
+ if (!i) throw new Mt(`Diagram ${e} not found.`);
+ const { id: r, diagram: n } = await i();
+ qi(r, n);
+ }
+ return new mn(t);
+ };
+ let _n = [];
+ const bn = (t) => {
+ _n.push(t);
+ },
+ Cn = ["graph", "flowchart", "flowchart-v2", "flowchart-elk", "stateDiagram", "stateDiagram-v2"],
+ xn = ["foreignobject"],
+ vn = ["dominant-baseline"],
+ kn = function (t) {
+ return t.replace(/fl°°/g, "").replace(/fl°/g, "&").replace(/¶ß/g, ";");
+ },
+ Tn = (t, e, i = []) => `\n.${t} ${e} { ${i.join(" !important; ")} !important; }`,
+ wn = (t, e, i, r) => {
+ const n = ((t, e, i = {}) => {
+ var r;
+ let n = "";
+ if (
+ (void 0 !== t.themeCSS && (n += `\n${t.themeCSS}`),
+ void 0 !== t.fontFamily && (n += `\n:root { --mermaid-font-family: ${t.fontFamily}}`),
+ void 0 !== t.altFontFamily && (n += `\n:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),
+ !(0, it.Z)(i) && Cn.includes(e))
+ ) {
+ const e =
+ t.htmlLabels || (null == (r = t.flowchart) ? void 0 : r.htmlLabels)
+ ? ["> *", "span"]
+ : ["rect", "polygon", "ellipse", "circle", "path"];
+ for (const t in i) {
+ const r = i[t];
+ (0, it.Z)(r.styles) ||
+ e.forEach((t) => {
+ n += Tn(r.id, t, r.styles);
+ }),
+ (0, it.Z)(r.textStyles) || (n += Tn(r.id, "tspan", r.textStyles));
+ }
+ }
+ return n;
+ })(t, e, i);
+ return M(
+ J(
+ `${r}{${((t, e, i) => {
+ let r = "";
+ return (
+ t in ui && ui[t] ? (r = ui[t](i)) : nt.warn(`No theme found for ${t}`),
+ ` & {\n font-family: ${i.fontFamily};\n font-size: ${i.fontSize};\n fill: ${i.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${i.errorBkgColor};\n }\n & .error-text {\n fill: ${i.errorTextColor};\n stroke: ${i.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: 2px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${i.lineColor};\n stroke: ${i.lineColor};\n }\n & .marker.cross {\n stroke: ${i.lineColor};\n }\n\n & svg {\n font-family: ${i.fontFamily};\n font-size: ${i.fontSize};\n }\n\n ${r}\n\n ${e}\n`
+ );
+ })(e, n, t.themeVariables)}}`,
+ ),
+ A,
+ );
+ },
+ Sn = (t, e, i, r, n) => {
+ const o = t.append("div");
+ o.attr("id", i), r && o.attr("style", r);
+ const a = o.append("svg").attr("id", e).attr("width", "100%").attr("xmlns", "http://www.w3.org/2000/svg");
+ return n && a.attr("xmlns:xlink", n), a.append("g"), t;
+ };
+ function Bn(t, e) {
+ return t.append("iframe").attr("id", e).attr("style", "width: 100%; height: 100%;").attr("sandbox", "");
+ }
+ const Fn = Object.freeze({
+ render: async function (t, e, i) {
+ var r, n, o, l;
+ $i(), _e(), gn(e, {}, ye);
+ const h = oe.detectInit(e);
+ h && ye(h);
+ const c = ge();
+ nt.debug(c),
+ e.length > ((null == c ? void 0 : c.maxTextSize) ?? 5e4) && (e = "graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa"),
+ (e = (e = e.replace(/\r\n?/g, "\n")).replace(/<(\w+)([^>]*)>/g, (t, e, i) => "<" + e + i.replace(/="([^"]*)"/g, "='$1'") + ">"));
+ const u = "#" + t,
+ f = "i" + t,
+ d = "#" + f,
+ p = "d" + t,
+ g = "#" + p;
+ let m = (0, a.Ys)("body");
+ const y = "sandbox" === c.securityLevel,
+ _ = "loose" === c.securityLevel,
+ b = c.fontFamily;
+ if (void 0 !== i) {
+ if ((i && (i.innerHTML = ""), y)) {
+ const t = Bn((0, a.Ys)(i), f);
+ (m = (0, a.Ys)(t.nodes()[0].contentDocument.body)), (m.node().style.margin = 0);
+ } else m = (0, a.Ys)(i);
+ Sn(m, t, p, `font-family: ${b}`, "http://www.w3.org/1999/xlink");
+ } else {
+ if (
+ (((t, e, i, r) => {
+ var n, o, a;
+ null == (n = t.getElementById(e)) || n.remove(),
+ null == (o = t.getElementById(i)) || o.remove(),
+ null == (a = t.getElementById(r)) || a.remove();
+ })(document, t, p, f),
+ y)
+ ) {
+ const t = Bn((0, a.Ys)("body"), f);
+ (m = (0, a.Ys)(t.nodes()[0].contentDocument.body)), (m.node().style.margin = 0);
+ } else m = (0, a.Ys)("body");
+ Sn(m, t, p);
+ }
+ let C, x;
+ e = (function (t) {
+ let e = t;
+ return (
+ (e = e.replace(/style.*:\S*#.*;/g, function (t) {
+ return t.substring(0, t.length - 1);
+ })),
+ (e = e.replace(/classDef.*:\S*#.*;/g, function (t) {
+ return t.substring(0, t.length - 1);
+ })),
+ (e = e.replace(/#\w+;/g, function (t) {
+ const e = t.substring(1, t.length - 1);
+ return /^\+?\d+$/.test(e) ? "fl°°" + e + "¶ß" : "fl°" + e + "¶ß";
+ })),
+ e
+ );
+ })(e);
+ try {
+ C = await yn(e);
+ } catch (t) {
+ (C = new mn("error")), (x = t);
+ }
+ const v = m.select(g).node(),
+ k = C.type,
+ T = v.firstChild,
+ w = T.firstChild,
+ S = Cn.includes(k) ? C.renderer.getClasses(e, C) : {},
+ B = wn(c, k, S, u),
+ F = document.createElement("style");
+ (F.innerHTML = B), T.insertBefore(F, w);
+ try {
+ await C.renderer.draw(e, t, ae, C);
+ } catch (i) {
+ throw (ei.draw(e, t, ae), i);
+ }
+ !(function (t, e, i, r) {
+ (function (t, e) {
+ t.attr("role", "graphics-document document"), "" !== e && t.attr("aria-roledescription", e);
+ })(e, t),
+ (function (t, e, i, r) {
+ if (void 0 !== t.insert) {
+ if (i) {
+ const e = `chart-desc-${r}`;
+ t.attr("aria-describedby", e), t.insert("desc", ":first-child").attr("id", e).text(i);
+ }
+ if (e) {
+ const i = `chart-title-${r}`;
+ t.attr("aria-labelledby", i), t.insert("title", ":first-child").attr("id", i).text(e);
+ }
+ }
+ })(e, i, r, e.attr("id"));
+ })(
+ k,
+ m.select(`${g} svg`),
+ null == (n = (r = C.db).getAccTitle) ? void 0 : n.call(r),
+ null == (l = (o = C.db).getAccDescription) ? void 0 : l.call(o),
+ ),
+ m.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns", "http://www.w3.org/1999/xhtml");
+ let L = m.select(g).node().innerHTML;
+ if (
+ (nt.debug("config.arrowMarkerAbsolute", c.arrowMarkerAbsolute),
+ (L = ((t = "", e, i) => {
+ let r = t;
+ return (
+ i || e || (r = r.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g, 'marker-end="url(#')),
+ (r = kn(r)),
+ (r = r.replace(/
/g, "
")),
+ r
+ );
+ })(L, y, dt(c.arrowMarkerAbsolute))),
+ y
+ ? (L = ((t = "", e) => {
+ var i, r;
+ return `