From 04c36eecd101c27b1b5aa0fdbfb72e52b597483f Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 11:28:04 -0400 Subject: [PATCH 001/120] [STY] formatting. went wrong from prev. merge > won't happen again when tests are in place. forgot to check lol --- src/ModFtaModel.f90 | 1 - src/calc_ion_v.f90 | 1 - 2 files changed, 2 deletions(-) diff --git a/src/ModFtaModel.f90 b/src/ModFtaModel.f90 index e1496a3a..4fa2fc43 100644 --- a/src/ModFtaModel.f90 +++ b/src/ModFtaModel.f90 @@ -106,7 +106,6 @@ subroutine run_fta_model(GitmCurrentTime, iBlock) ElectronAverageEnergy(iLon, iLat) = AveE(iMlt, iMlat) end if - end do end do diff --git a/src/calc_ion_v.f90 b/src/calc_ion_v.f90 index 37d5d7ad..a4c02f2a 100644 --- a/src/calc_ion_v.f90 +++ b/src/calc_ion_v.f90 @@ -229,7 +229,6 @@ subroutine calc_ion_v(iBlock) end if - ! Limit the ion velocity to something "reasonable": IVelocity(:, :, :, :, iBlock) = min(3000.0, IVelocity(:, :, :, :, iBlock)) IVelocity(:, :, :, :, iBlock) = max(-3000.0, IVelocity(:, :, :, :, iBlock)) From 6b43a8af993c60610a8c7dba406de808b95872ab Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 11:40:46 -0400 Subject: [PATCH 002/120] [FEAT]: Create the three workflow files includes debugging: > Find out which versions of the repo's are being pulled --- .github/workflows/Documentation.yml | 36 ++++++++++++++++++ .github/workflows/format_check.yml | 58 +++++++++++++++++++++++++++++ .github/workflows/test_run.yml | 29 +++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 .github/workflows/Documentation.yml create mode 100644 .github/workflows/format_check.yml create mode 100644 .github/workflows/test_run.yml diff --git a/.github/workflows/Documentation.yml b/.github/workflows/Documentation.yml new file mode 100644 index 00000000..43b73de2 --- /dev/null +++ b/.github/workflows/Documentation.yml @@ -0,0 +1,36 @@ +name: Build Documentation + +on: + schedule: + # 0 minute, 0 hour, 1st day, every month, any day of week + - cron: '0 0 1 * *' + pull_request: + branches: + develop + main + workflow_run: + workflows: [Format Check] + types: + - completed + +jobs: + build_documentation: + runs-on: ubuntu-latest + steps: + - name: Clone GITM repository + uses: actions/checkout@v4 + # with: + # repository: 'GITMCode/GITM' + - name: Compile LaTeX document + uses: xu-cheng/latex-action@v3 + with: + root_file: manual.tex + working_directory: srcDoc + - name: Rename GITM Manual + run: mv srcDoc/manual.pdf GITM_manual.pdf + - name: Upload PDF file + uses: actions/upload-artifact@v3 + with: + name: PDF + path: GITM_manual.pdf + retention-days: 30 diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml new file mode 100644 index 00000000..104899c5 --- /dev/null +++ b/.github/workflows/format_check.yml @@ -0,0 +1,58 @@ +name: Format Check + +on: + pull_request: + branches: + - main + - develop + +jobs: + # ------------------------------------------------------------- + # Event `pull_request`: Returns all changed pull request files. + # -------------------------------------------------------------- + check_code_formatting: + # NOTE: + # - This is limited to pull_request* events and would raise an error for other events. + # - A maximum of 3000 files can be returned. + # - For more flexibility and no limitations see "Using local .git directory" above. + + runs-on: ubuntu-latest # windows-latest || macos-latest + name: Test Changed Files + permissions: + pull-requests: read + + steps: + - name: Clone Formatter + uses: actions/checkout@v4 + with: + repository: 'GITMCode/fprettify' + ref: gitm-customization + path: + fprettify + - name: Install formatter + run: | + cd fprettify + pip install . + - name: Clone GITM + uses: actions/checkout@v4 + with: + path: + GITM + # repository: 'abukowski21/GITM' + - name: Format check entire GITM repository + run: | + cd GITM + git status + python srcPython/format_GITM.py -f + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@v45 + - name: Style Guide Check Changed Files + env: + ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} + run: | + pwd + echo "______" + for file in ${ALL_CHANGED_FILES}; do + python srcPython/format_GITM.py -l -s $file + done diff --git a/.github/workflows/test_run.yml b/.github/workflows/test_run.yml new file mode 100644 index 00000000..f3f5b4e8 --- /dev/null +++ b/.github/workflows/test_run.yml @@ -0,0 +1,29 @@ +name: Test GITM + +on: + pull_request: + branches: + develop + main + workflow_run: + workflows: [Format Check] + types: + - completed + +jobs: + GITM_Testing: + runs-on: ubuntu-latest + steps: + - name: Install MPI (mpich) + run: sudo apt update && sudo apt install -y mpich + - name: Clone GITM repository + uses: actions/checkout@v4 + # with: + # repository: 'GITMCode/GITM' + - name: Compile GITM + run: | + ./Config.pl -install -earth -compiler=gfortran10 + make + make rundir + - name: First test (default UAM) + run: cd run && mpirun -np 4 ./GITM.exe From 3e12dc0dbba49d2df85d46fbf25f08f93d445edb Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 12:08:33 -0400 Subject: [PATCH 003/120] bug: fix repo owner when cloning fprettify --- .github/workflows/format_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml index 104899c5..8e1d226a 100644 --- a/.github/workflows/format_check.yml +++ b/.github/workflows/format_check.yml @@ -25,7 +25,7 @@ jobs: - name: Clone Formatter uses: actions/checkout@v4 with: - repository: 'GITMCode/fprettify' + repository: 'abukowski21/fprettify' ref: gitm-customization path: fprettify From 4387005ecb86c42bf80162aac812d1bc49508efd Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 12:10:33 -0400 Subject: [PATCH 004/120] bug: _ not - in branch name, whoops --- .github/workflows/format_check.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml index 8e1d226a..6f7724e9 100644 --- a/.github/workflows/format_check.yml +++ b/.github/workflows/format_check.yml @@ -17,7 +17,7 @@ jobs: # - For more flexibility and no limitations see "Using local .git directory" above. runs-on: ubuntu-latest # windows-latest || macos-latest - name: Test Changed Files + name: Format Check permissions: pull-requests: read @@ -26,7 +26,7 @@ jobs: uses: actions/checkout@v4 with: repository: 'abukowski21/fprettify' - ref: gitm-customization + ref: gitm_customization path: fprettify - name: Install formatter From 05b2a3dda9a664aa1c438855319dad4a39df33a9 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 12:14:26 -0400 Subject: [PATCH 005/120] maint: rm debug lines looks like format check is working! --- .github/workflows/format_check.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml index 6f7724e9..1a5f54af 100644 --- a/.github/workflows/format_check.yml +++ b/.github/workflows/format_check.yml @@ -42,7 +42,6 @@ jobs: - name: Format check entire GITM repository run: | cd GITM - git status python srcPython/format_GITM.py -f - name: Get changed files id: changed-files @@ -50,9 +49,7 @@ jobs: - name: Style Guide Check Changed Files env: ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} - run: | - pwd - echo "______" + run: for file in ${ALL_CHANGED_FILES}; do python srcPython/format_GITM.py -l -s $file done From d12e573058388ccdabeac42f0767d3d4327d64c8 Mon Sep 17 00:00:00 2001 From: Aaron Ridley Date: Wed, 18 Sep 2024 13:39:11 -0400 Subject: [PATCH 006/120] BUG: con_stop could not be found --- share/Library/src/ModInterpolateAMR.f90 | 2 ++ share/Library/src/ModTriangulate.f90 | 2 ++ 2 files changed, 4 insertions(+) diff --git a/share/Library/src/ModInterpolateAMR.f90 b/share/Library/src/ModInterpolateAMR.f90 index 75b49de8..0440ed15 100644 --- a/share/Library/src/ModInterpolateAMR.f90 +++ b/share/Library/src/ModInterpolateAMR.f90 @@ -2089,6 +2089,7 @@ end subroutine resolution_corner end module ModResolutionCorner !================================ module ModInterpolateAMR23 + use ModUtilities, ONLY: CON_stop use ModCubeGeometry implicit none integer, parameter:: x_ = 1, y_ = 2, z_ = 3 @@ -4959,6 +4960,7 @@ subroutine generate_basic_stencil(XyzStencil_D) end subroutine generate_basic_stencil !================== subroutine sort_out + use ModUtilities, ONLY: CON_stop !\ ! Sorts out zero weights and repeating points !/ diff --git a/share/Library/src/ModTriangulate.f90 b/share/Library/src/ModTriangulate.f90 index 138450d6..e391cc15 100644 --- a/share/Library/src/ModTriangulate.f90 +++ b/share/Library/src/ModTriangulate.f90 @@ -2,6 +2,8 @@ ! For more information, see http://csem.engin.umich.edu/tools/swmf module ModTriangulate + use ModUtilities, ONLY: CON_stop + implicit none private ! except From b039c2130286babf18e298e71a823115977a8b8a Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 13:46:58 -0400 Subject: [PATCH 007/120] BUG: modify how "changed files" are parsed in format check action. --- .github/workflows/format_check.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml index 1a5f54af..e2c16d2e 100644 --- a/.github/workflows/format_check.yml +++ b/.github/workflows/format_check.yml @@ -46,6 +46,10 @@ jobs: - name: Get changed files id: changed-files uses: tj-actions/changed-files@v45 + with: + files: | + **.f90 + **.f - name: Style Guide Check Changed Files env: ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} @@ -53,3 +57,5 @@ jobs: for file in ${ALL_CHANGED_FILES}; do python srcPython/format_GITM.py -l -s $file done +# if [[ $file == *"".f90"* ]]; then +# fi \ No newline at end of file From fd2415283c320633c97d0e6a13943f21de28a043 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 13:53:48 -0400 Subject: [PATCH 008/120] bug: double check auto formatting again --- .github/workflows/format_check.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml index e2c16d2e..a46b46b1 100644 --- a/.github/workflows/format_check.yml +++ b/.github/workflows/format_check.yml @@ -54,8 +54,4 @@ jobs: env: ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} run: - for file in ${ALL_CHANGED_FILES}; do - python srcPython/format_GITM.py -l -s $file - done -# if [[ $file == *"".f90"* ]]; then -# fi \ No newline at end of file + python srcPython/format_GITM.py -l -s ${ALL_CHANGED_FILES} From edfc481e82ed754d49673c896540ce4caaad42e4 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 13:55:57 -0400 Subject: [PATCH 009/120] bug: where is script trying to run from??? --- .github/workflows/format_check.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml index a46b46b1..e8293475 100644 --- a/.github/workflows/format_check.yml +++ b/.github/workflows/format_check.yml @@ -54,4 +54,7 @@ jobs: env: ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} run: + pwd + ls + echo " ____ " python srcPython/format_GITM.py -l -s ${ALL_CHANGED_FILES} From 491ded708d231a24f13d7c92cc84654b3bb13f4f Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 13:59:26 -0400 Subject: [PATCH 010/120] bug: fix syntax error in script. run needed a | --- .github/workflows/format_check.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml index e8293475..43650d6d 100644 --- a/.github/workflows/format_check.yml +++ b/.github/workflows/format_check.yml @@ -53,8 +53,8 @@ jobs: - name: Style Guide Check Changed Files env: ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} - run: - pwd - ls + run: | + pwd + ls echo " ____ " python srcPython/format_GITM.py -l -s ${ALL_CHANGED_FILES} From 7c23b82ca8daa80b669714772772bcf2a707cf15 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 14:01:24 -0400 Subject: [PATCH 011/120] bug: test should pass now - cd'ing into GITM --- .github/workflows/format_check.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml index 43650d6d..2cb020bc 100644 --- a/.github/workflows/format_check.yml +++ b/.github/workflows/format_check.yml @@ -54,7 +54,5 @@ jobs: env: ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} run: | - pwd - ls - echo " ____ " + cd GITM python srcPython/format_GITM.py -l -s ${ALL_CHANGED_FILES} From e798f6b0e91434b9fe7b2a1edfb9d56f196e32e5 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 15:05:10 -0400 Subject: [PATCH 012/120] BUG: format_GITM.py accepts paths & directories now --- srcPython/format_GITM.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/srcPython/format_GITM.py b/srcPython/format_GITM.py index 9c6a4355..33ad2957 100644 --- a/srcPython/format_GITM.py +++ b/srcPython/format_GITM.py @@ -14,6 +14,12 @@ def check_line_lengths(input_args=None): max_subroutine_lines = 250 for fdir in input_args.path: + # Inputs for `path` could be files or directories. + # check if it's a file: + if os.path.isfile(fdir): + files.append(fdir) + continue + # Otherwise check recursively: for g in glob_strs: for path in sorted(Path(fdir).rglob(g)): files.append(path) From 5fd461dda00436124d84306d84788770ec45451b Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 15:06:22 -0400 Subject: [PATCH 013/120] rename style workflow step --- .github/workflows/format_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml index 2cb020bc..9725a178 100644 --- a/.github/workflows/format_check.yml +++ b/.github/workflows/format_check.yml @@ -50,7 +50,7 @@ jobs: files: | **.f90 **.f - - name: Style Guide Check Changed Files + - name: Style Check - Only Changed Files env: ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} run: | From f8af800de583d79e68f7b1d94d20dba67ae80d78 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 15:13:01 -0400 Subject: [PATCH 014/120] create necessary docs --- .github/CONTRIBUTING.md | 191 +++++++++++++++++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 38 ++++++ 2 files changed, 229 insertions(+) create mode 100644 .github/CONTRIBUTING.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 00000000..aabb3e76 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,191 @@ +# Contributing Guidelines + +Firstly, thank you for your interest in contributing to The Global +Ionosphere-Thermosphere Model! GITM is an open-source code and we welcome contributions +and feedback from users. + +> This document serves to outline the requirements and best practices for those who +wish to contribute to GITM. Following these guidelines will ensure a positive +experience for all involved. + +## Outline + +- [Opening an Issue](#opening-an-issue) + - [Bug Report](#bug-report) + - [Feature Requests](#feature-requests) +- [Pull Requests](#pull-requests) + - [Committing Changes](#committing-changes) + - [Commit Styling](#commit-styling) +- [Code Formatting](#code-formatting) + - [Automatic/Validating Code Formatting](#automaticvalidating-code-formatting) + - [Style Guidelines \& `.fprettify.rc`](#style-guidelines--fprettifyrc) + +## Opening an Issue + +If you notice a bug, have a feature you would like to see, or have a problem with GITM, +the best practice is to [create an issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/creating-an-issue#creating-an-issue-from-a-repository). + +Within the Issues tab, there are two templates. Select which best describes the issue you +are creating and then modify the contents of the template to describe your issue. + +### Bug Report + +If you notice a problkem with GITM and are unsure of how to fix it yourself, please +create a bug report detailing the problem. The template has several optional sections, +so read through them all before adding information to the wrong section. + +- **Do not open an issue for problems installing GITM on a specific system.** Since +there is no way to predict all possible systems which GITM will be used on, details on +specific systems cannot be provided. Try the steps in the [README](../README.md) first, +then reach out to #TODO if you need mroe help. +- Please include enough information to allow a maintainer to reproduce your bug +only seeing the information in the bug report. Forgetting to attach input files or +only saying "the code did not run on system X", for example, will result in a delay. +- Check if another issue is open (or closed) with the same problem. Duplicate issues +may be deleted. To help prioritize issues, you can react or comment on an open issuue +to note that you are having the same problem. + +### Feature Requests + +Feature requests are most welcome! Please follow the template and provide as much detail +as you possibly can. + +- Even if you are working on a feature yourself, creating an issue is not a bad idea! +Creating the issue will let other users know you are working on it and they may be able +to help. Please note in the issue that you are working on it and if you would like +help. Providing a link to the branch you are working on will help people find it easier +too. +- Not all features can be implemented. Sorry. We welcome as many ideas as possible, but +some things will be impossible, out-of-scope, or too time-consuming to implement. + +## Pull Requests + + Before [forking the repo](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) + and [creating a pull request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests), + it is usually best to first open an issue to discuss the changes, or discuss your + intended approach for solving the problem in the comments for an existing issue. + But small changes may not warrant a new issue. + +- **Pull Requests MUST go into the `develop` branch.** The `main` branch of GITM is meant +to remain stable and is only updated by releases, so new features and bug fixes should be +put into `develop` for testing +before going to `main`. +- **Submit pull requests for single changes at a time**. Large pull requests will both +take longer to review and may cause unintended problems for contributors working in +parallel. Please do not introduce changes to unrelated code within the same pull request +(example: refactoring one file and fixing a typo in a another file). If you +are working on a feature and notice an unrelated bug or typo, create a new branch from +`develop`, fix it, and submit the pull request separately. There is no harm in +submitting many small pull requests! +- **Document your changes**. If you are introducing a new feature, please include +a description of it and its uses in both the documentation (`docs/` folder) and +in comments within the code. +- **Include new tests**. If you are adding a new feature, please add a sample `UAM.in` +file with this option enabled in the `tests/` folder. We do not want future updates +breaking your hard work. +- **Follow existing code style guidelines**. More details can be found within the +[code_style](../code_style/) folder. We want to ensure the code remains readable and +consistent, so code formatting is tested upon the creation of a pull request. Incorrectly +formatted code will not be accepted. + +### Committing Changes + +1. First, fork the GITM repository. This will give you a clean slate to begin making changes. +2. Branch from `develop`. This ensures your changes are up-to-date with the latest patches of GITM. +3. Name your branch something that is descriptive! +4. Commit changes as they are completed, include a description for changes that are complicated or could break things. +5. Verify your formatting! + +In short, make new branches for features `git checkout -b my_feature` and commit +often and push a little less often. Try to format then merge back to develop as soon as +you have something that works. + +#### Commit Styling + +The first line of the commit must be *at most* ~50 characters long and +should start with either: + +- `FEAT:` For new feature. +- `BUG:` For bug fix. +- `MERGE:` For merging. +- `DOC:` For documentation update. +- `TEST:` For the addition or modification of tests. +- `STY:` For a style update (e.g., linting). +- `DEPREC:` Deprecate something, or removee a deprecated object. +- `REVERT:` Revert an earlier commit. +- `MAINT:` For maintenance such as refactoring, typos, etc. + +The commit first line must be in *present* tense so that anyone +picking a commit hash can easily read what they are enabling. For more +information check out [conventional commit +messages](https://www.conventionalcommits.org/en/v1.0.0/). + +For example, + +*do:* + +```gh +FEAT: Hydrostatic density implementation. +``` + +*don't:* + +```gh +Implemented hydrostatic density. (feature) +``` + +## Code Formatting + +GITM now uses a custom implementation of the +[`fprettify`](https://github.com/GITMCode/fprettify) library to format code. Pull +requests must be formatted prior to submission. + +To install this version, (optionally create a new python environment and activate it, then) go the location you would like to download to. Then install fprettify with the commands: + +```sh +git clone git@github.com:GITMCode/fprettify.git +cd fprettify +pip install . +``` + +Done! Run `fprettify -h` to see the options available from the command line. + +More details on GITM's implementation of `fprettify` can be found on the [GITM/fprettify](https://github.com/GITMCode/fprettify) repository. + +### Automatic/Validating Code Formatting + +A python file has been made to aid in the formatting of code. To automatically format the entire GITM repository in-place, go to the root of the GITM repository and run + +```sh +python srcPython/format_GITM.py -a +``` + +Upon creation of a pull request, the code will be checked for recommended changes. Before +submission, it may be a good idea to test it yourself with: + +```sh +python srcPython/format_GITM.py -f +``` + +### Style Guidelines & `.fprettify.rc` + +The code guidelines are listed in `.fprettify.rc`, which is automatically sourced from by +`code_formatter.py`. This file is included within GITMCode/GITM and will be found +automatically when running from the root of the GITM repository. If you call `format_GITM.py` +from another directory, `src/` for example, there is a chance that configuration file will not +be found. The path to your `.fprettify.rc` file can be specified with the `--fpretty_config` +flag when running `format_GITM.py`, or you can copy this file in your `$HOME` directory, where +it will always be found. + +The config file specifies the following requirements: + +1. Maximum line length of 120 characters. 88 is recommended but not always possible. +2. Indent with 2 spaces. No tabs! +3. Check all files, except: anything compiled, src/Venus.f90, old fortran files, makefiles, MPI Templates +4. A single space after: operators (`for`, `if`, etc.), plus & minus +5. No spaces after: intrinsics (`write(`, *not* `write (` for example), multiple & divide. + +Some recommended guidelines are: + +1. All lines shorter than 88 characters. Use a `&` to break long lines +2. Subroutines shorter than 250 lines. Refactoring long subroutines can help a lot with readability. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..ad557d0c --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,38 @@ +# [BUG/FEAT/DOC/*etc.*] **Description** + +> **Please review the [contributing guidelines](.github/CONTRIBUTING.md) before continuing.** + +> 1-2 sentence summary of the change and (if applicable) which issue this relates to. + +## Justification + +> Often, the justification of bugs is that "they exist", so if your pull request fixes a single bug in a single commit, this is not necessary. + +> Feel free to create any sections necessary to fully describe the pull request. + +## Changes to GITM outputs + +> Detail if GITM outputs will be changed and, if so, how. For example, would all runs be changed or only those with specific settings enabled? + +--- + +## Notes + +>> This section should be removed before submitting the pull request. + +- You must the changes made with this pull request. Please detail the configuration you tested with and whether this change affects the outputs of GITM. +- All changes to code will be tested in the following order. If any step fails, the pull request cannot be accepted: + 1. Code is checked against the [code standards](CONTRIBUTING.md#formatting-code). If `fprettify` recommends any changes the test fails, you you should run the format check before submitting. + 2. The GITM manual is built. + 3. GITM is compiled with `gfortran10` and then run using the UAM.in files within [`srcTests/`](../srcTests/). This ensures no changes are made which unintentionally break something else. +- Pull requests should be made against the `develop` branch of GITMCode/GITM, not `main`. + +In summary, ensure you have: + +> - Tested your changes & compared the outputs to the most recent version on the `develop` branch. Detail here if any outputs differ & why this is necessary. +> - Updated any relevant `UAM.in` files if you are adding an optional feature +> - Updated the documentation, if necessary +> - Commented you code in hard-to-understand areas +> - Clean up unnecessary comments, debugging steps, etc. within your code +> - Ensure your code is formatted correctly. Use the included Python script for assistance. +> - Pull requests should target the develop branch. Not main/master! From 083df92c46c7bfb26775acf456fb26795c471d7e Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 15:27:58 -0400 Subject: [PATCH 015/120] maint: more useful to show which files were checked. --- .github/workflows/format_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml index 9725a178..9c6da240 100644 --- a/.github/workflows/format_check.yml +++ b/.github/workflows/format_check.yml @@ -55,4 +55,4 @@ jobs: ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} run: | cd GITM - python srcPython/format_GITM.py -l -s ${ALL_CHANGED_FILES} + python srcPython/format_GITM.py -l -s -v ${ALL_CHANGED_FILES} From 7e7f5c3b7f91e58a033035fcac0851e341896181 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 15:32:45 -0400 Subject: [PATCH 016/120] doc: Templates (bug report, feat, cont) updated --- .github/CONTRIBUTING.md | 2 +- .github/ISSUE_TEMPLATE/bug_report.md | 47 +++++++++++------------ .github/ISSUE_TEMPLATE/feature_request.md | 23 +++++------ 3 files changed, 35 insertions(+), 37 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index aabb3e76..1ec0b67f 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -81,7 +81,7 @@ submitting many small pull requests! a description of it and its uses in both the documentation (`docs/` folder) and in comments within the code. - **Include new tests**. If you are adding a new feature, please add a sample `UAM.in` -file with this option enabled in the `tests/` folder. We do not want future updates +file with this option enabled in the `srcTests/auto_test/` folder. We do not want future updates breaking your hard work. - **Follow existing code style guidelines**. More details can be found within the [code_style](../code_style/) folder. We want to ensure the code remains readable and diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index dd84ea78..b8de7e28 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,38 +1,35 @@ --- name: Bug report about: Create a report to help us improve -title: '' -labels: '' +title: "[BUG]" +labels: bug assignees: '' --- -**Describe the bug** -A clear and concise description of what the bug is. +# [BUG]: **Describe the bug** -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error +1-2 sentences with a concise overview of what the bug is. Please be brief but +descriptive, further detail can be listed elsewhere. -**Expected behavior** -A clear and concise description of what you expected to happen. +> - Please fill out any of the sections below which are relevant to the bug. +> - Feel free to edit, delete, or re-order the sections included in the template. +> - Please attach any input files necessary to reproduce the bug. If GITM maintainers cannot reproduce the bug, it may cause delays. -**Screenshots** -If applicable, add screenshots to help explain your problem. +## To Reproduce -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] +> Not necessary if the bug lies within GITM source code (error in a calculation, for example). -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] +## Bug Information -**Additional context** -Add any other context about the problem here. +> Attach screenshots or copy outputs (surrounding the pasted lines with three back-ticks " \`\`\` " for readability) + +## System Information + +> Only relevant if the bug is compiler/system dependent. +> Include the machine name (if public), OS, compiler, GITM versions, etc. + +## Other Information + +> Any other information relevant to the bug. +> Often, the more details maintainers have, the faster things will be able to be patched. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index bbcbbe7d..4e167ce0 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,20 +1,21 @@ --- name: Feature request -about: Suggest an idea for this project -title: '' -labels: '' +about: Suggest an idea for a feature to be added +title: "[FEAT]" +labels: enhancement assignees: '' --- -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] +# [FEAT]: **describe the feature** -**Describe the solution you'd like** -A clear and concise description of what you want to happen. +> 1-2 sentence overview of the feature and what functionality it will add to GITM. -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. +## **Justification** -**Additional context** -Add any other context or screenshots about the feature request here. +> If you can, describe how the proposed feature is currently handled within GITM, and how the feature would improve GITM. + +## *Other Information* (optional) + +> - Other information relevant to the feature. +> - Perhaps outline how this is implemented in other models or what changes to GITM would need to be made. From 3756d55b86bfd2744eed1d87c44fc54898e58c4c Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 15:48:59 -0400 Subject: [PATCH 017/120] doc: add docs link (badge) to readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e4264cf8..325ddadb 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ This is the home of the Global Ionosphere/Thermosphere Model (GITM). Regular rel GITM has been developed in fortran-90. It has been tested with gfortran on linux and mac osx as well as ifort on NASA's Pleiades computer. +The latest version of the documentation can be accessed here: [![Build Documentation](https://github.com/abukowski21/GITM/actions/workflows/Documentation.yml/badge.svg)](https://github.com/abukowski21/GITM/actions/workflows/Documentation.yml) + ## Dependencies: 1. GITM needs MPI to work. From 37c69d6f25e4ae81ec92a899bbf2afc395875de7 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 17:24:58 -0400 Subject: [PATCH 018/120] TEST: introduce multiple automated test runs. --- .github/workflows/test_run.yml | 11 +- srcTests/auto_test/UAM.in.00.default.test | 92 +++++++ srcTests/auto_test/UAM.in.01.test | 222 ++++++++++++++++ srcTests/auto_test/UAM.in.02.test | 265 ++++++++++++++++++++ srcTests/auto_test/UAM.in.03.test | 292 ++++++++++++++++++++++ srcTests/auto_test/run_all_tests.sh | 49 ++++ 6 files changed, 923 insertions(+), 8 deletions(-) create mode 100644 srcTests/auto_test/UAM.in.00.default.test create mode 100644 srcTests/auto_test/UAM.in.01.test create mode 100644 srcTests/auto_test/UAM.in.02.test create mode 100644 srcTests/auto_test/UAM.in.03.test create mode 100755 srcTests/auto_test/run_all_tests.sh diff --git a/.github/workflows/test_run.yml b/.github/workflows/test_run.yml index f3f5b4e8..1c00d07f 100644 --- a/.github/workflows/test_run.yml +++ b/.github/workflows/test_run.yml @@ -18,12 +18,7 @@ jobs: run: sudo apt update && sudo apt install -y mpich - name: Clone GITM repository uses: actions/checkout@v4 - # with: - # repository: 'GITMCode/GITM' - - name: Compile GITM + - name: Run tests in srcTests/auto_test run: | - ./Config.pl -install -earth -compiler=gfortran10 - make - make rundir - - name: First test (default UAM) - run: cd run && mpirun -np 4 ./GITM.exe + cd srcTests/auto_test + ./run_all_tests.sh diff --git a/srcTests/auto_test/UAM.in.00.default.test b/srcTests/auto_test/UAM.in.00.default.test new file mode 100644 index 00000000..4fc87c8e --- /dev/null +++ b/srcTests/auto_test/UAM.in.00.default.test @@ -0,0 +1,92 @@ + +#DEBUG +0 debug level (0 = no info, 10 = max info) +0 cpu to watch +60.0 dt between normal code output to stdout +F usebarriers - forces the code to stop and wait more often + +-------------------------------------------------------------------------- + +#RESTART +F Restart Code + +-------------------------------------------------------------------------- +start and end times: + +#TIMESTART +2002 year +12 month +21 day +00 hour +00 minute +00 second + +#TIMEEND +2002 year +12 month +21 day +00 hour +05 minute +00 second + +-------------------------------------------------------------------------- +Set blocks in lon and lat. + - total cells in a direction = nBlocks x nCells (set in ModSize) + - res = (max - min) / num cells + +#GRID +2 number of blocks in longitude +2 number of blocks in latitude +-90.0 minimum latitude to model +90.0 maximum latitude to model +0.0 longitude start to model (set to 0.0 for whole Earth) +0.0 longitude end to model (set to 0.0 for whole Earth) + +-------------------------------------------------------------------------- +Output file stuff + +#SAVEPLOTS +7200.0 dt for writing restart files +1 how many output files do you want +3DALL second output style +300.0 dt for output (1 every 5 min) + + +#NGDC_INDICES +UA/DataIn/f107.txt + +#EUV_DATA +T Use FISM solar flux data +UA/DataIn/FISM/fismflux_daily_2002.dat Filename + +------------ Auroral Drivers ------------ + +#FTAMODEL +T Use FTA model of the aurora + + +#SME_INDICES +UA/DataIn/ae_20021221.txt SME Filename +none onset time delay file +T convert SME to Hemispheric Power + +------------ E-Field Drivers ------------ + +#MHD_INDICES +UA/DataIn/imf20021221.dat + +#APEX +T + +----------------------------------------------------------------- + +#MSISOBC +T Shift the [O] density at the lower boundary by 6 months +0.0 change the obateness of the Earth by this percent (0 = none) + +-------------------------------------------------------------------------- + +#AUSMSOLVER +T Use AUSM+-up Solvers + +#END diff --git a/srcTests/auto_test/UAM.in.01.test b/srcTests/auto_test/UAM.in.01.test new file mode 100644 index 00000000..9aae953a --- /dev/null +++ b/srcTests/auto_test/UAM.in.01.test @@ -0,0 +1,222 @@ + +#DEBUG +0 debug level (0 = no info, 10 = max info) +0 cpu to watch +60.0 dt between normal code output to stdout +F usebarriers - forces the code to stop and wait more often + +-------------------------------------------------------------------------- + +#RESTART +F Restart Code + +-------------------------------------------------------------------------- + +#TIMESTART +2002 year +12 month +21 day +00 hour +00 minute +00 second + +#TIMEEND +2002 year +12 month +21 day +00 hour +05 minute +00 second + +-------------------------------------------------------------------------- +#GRID +2 number of blocks in longitude +2 number of blocks in latitude +-90.0 minimum latitude to model +90.0 maximum latitude to model +0.0 longitude start to model (set to 0.0 for whole Earth) +0.0 longitude end to model (set to 0.0 for whole Earth) + +-------------------------------------------------------------------------- +#LOGFILE +1.0 dt for output to a log file + +#SAVEPLOTS +7200.0 dt for writing restart files +4 how many output files do you want +3DALL second output style +200.0 dt for output (1 every 5 min) +3DNEU +200.0 +2DANC +200.0 +2DGEL +200.0 + +-------------------------------------------------------------------------- + +#F107 +150.0 f10.7 +150.0 f10.7 averaged over 81 days + + +(All false below is new model of EUV!) +#EUVMODEL +T UseEUVAC +T UseTobiska +T UseAboveHigh +T UseBelowLow + + +------------ Auroral Drivers ------------ + +#HPI +1.0 hemispheric power + +#FTAMODEL +T Use FTA model of the aurora + +#NEWELLAURORA +F Use Newell Ovation model of the aurora + +#FANGENERGY +T Use Fang 2010 and 2013 energy deposition + +#USECUSP +F Add a cusp to the electron precipitation +0.2 Average Energy +2.0 Energy Flux + +#AURORAMODS +F normalize to hemispheric power +1.0 avee factor (1 is no mod) +F iskappa +4.0 kappa (3 min; higher is maxwellian) + +#IONPRECIPITATION +F If ions are included in the AMIE file, use them. FangEnergy=T! + +------------ E-Field Drivers ------------ + +#SOLARWIND +0.0 IMF Bx +0.0 IMF By +-2.0 IMF Bz +400.0 Solar wind Vx + +----------------------------------------------------------------- +Some new features: + +#MSISOBC +T Shift the [O] density at the lower boundary by 6 months +0.0 change the obateness of the Earth by this percent (0 = none) + +-------------------------------------------------------------------------- +These set the thermal balance of the code: + +#NEUTRALHEATING +0.05 Efficiency of photoelectron heating + +#PHOTOELECTRON +0.00 Efficiency of photoelectron heating + +#DIFFUSION +T +50.0 Eddy Diffusion Coefficient (Should be about 37.5 for 1-D runs) +0.010 Eddy Diffusion applied at alts below this pressures level +0.005 No Eddy Diffusion at altitudes above this pressure level + +#THERMALCONDUCTION +5.6e-4 Thermal conductivity (o2) +7.6e-4 Thermal conductivity (o) +0.72 Thermal conductivity (^s) + +-------------------------------------------------------------------------- +Can set max wall time for the code to run (default = 10 days) + +#CPUTIMEMAX +860000.0 Maximum amount of cputime to use before stopping code + +-------------------------------------------------------------------------- +Solver stuff: + +#AUSMSOLVER +T Use AUSM+-up Solvers + +#CFL +0.80 percentage of maximum allowable time-step to take + +#LIMITER +mc only limiter available +2.0 + + +#ELECTRODYNAMICS +60.0 how often to update potential +60.0 how often to update aurora and euv + +-------------------------------------------------------------------------- +This stuff is standard for Earth + +#ALTITUDE +100.0 minimum altitude to use +600.0 maximum altitude to use (ignored unless the following is F) +T use stretched grid + +#INITIAL +T initialize thermosphere using MSIS +T initialize ionosphere using IRI + +#TIDES +F UseMSISFlat +T UseMSISTides +F UseGSWMTides +F UseWACCMTides +F UseHmeTides + + +#APEX +T Use apex magnetic coordinate system + +-------------------------------------------------------------------------- +Turn on/off various source terms: + +#THERMO +T UseSolarHeating +T UseJouleHeating +T UseAuroralHeating +T UseNOCooling +T UseOCooling +T UseConduction +T UseTurbulentConduction +F UseIRHeating - not for Earth! + +#FORCING +T UsePressureGradient +T UseIonDrag +T UseNeutralDrag +T UseViscosity +T UseCoriolis +T UseGravity + +#IONFORCING +T UseExB +T UseIonPressureGradient +T UseIonGravity +T UseNeutralDrag + +#CHEMISTRY +T UseIonChemistry +T UseIonAdvection +T UseNeutralChemistry + + +#USEIMPROVEDIONADVECTION +T UseImprovedIonAdvection +T UseNighttimeIonBCs +2.0 + +#USEIMPLICITIONMOMENTUM +T + +#END diff --git a/srcTests/auto_test/UAM.in.02.test b/srcTests/auto_test/UAM.in.02.test new file mode 100644 index 00000000..04b523b4 --- /dev/null +++ b/srcTests/auto_test/UAM.in.02.test @@ -0,0 +1,265 @@ + +#DEBUG +10 debug level (0 = no info, 10 = max info) +5 cpu to watch +60.0 dt between normal code output to stdout +T usebarriers - forces the code to stop and wait more often + +-------------------------------------------------------------------------- +Gitm can stop and start again: + - Writes files to UA/restartOUT + - Reads files from UA/restartIN + - Can mv out and link to that directory + +#RESTART +F Restart Code + +-------------------------------------------------------------------------- +start and end times: + - don't change start time on restart (code will set correct time!) + +#TIMESTART +2002 year +12 month +21 day +00 hour +00 minute +00 second + +#TIMEEND +2002 year +12 month +21 day +00 hour +05 minute +00 second + +-------------------------------------------------------------------------- +Set blocks in lon and lat. + - total cells in a direction = nBlocks x nCells (set in ModSize) + - res = (max - min) / num cells + +#GRID +2 number of blocks in longitude +2 number of blocks in latitude +-40.0 minimum latitude to model +40.0 maximum latitude to model +30.0 longitude start to model (set to 0.0 for whole Earth) +180.0 longitude end to model (set to 0.0 for whole Earth) + +-------------------------------------------------------------------------- +Output file stuff + +#LOGFILE +1.0 dt for output to a log file + +#SAVEPLOTS +7200.0 dt for writing restart files +1 how many output files do you want +3DALL second output style +300.0 dt for output (1 every 5 min) + + +-------------------------------------------------------------------------- +Specify Drivers: + +------------ Solar Drivers ------------ + + +#NGDC_INDICES +UA/DataIn/f107.txt + +(All false below is new model of EUV!) +#EUVMODEL +F UseEUVAC +F UseTobiska +F UseAboveHigh +F UseBelowLow + +------------ Auroral Drivers ------------ + +#MHD_INDICES +DataIn/imf20021221.dat + +#NOAAHPI_INDICES +DataIn/power.test.rcmr_quick + +New auroral model from Wu and Ridley, which is driven by AU/AL/AE +#FTAMODEL +T Use FTA model of the aurora + +Can download AU/AL/AE indices from SuperMAG and use them here: +#SME_INDICES +DataIn/ae_20021221.txt +none onset time delay file + +This is for OVATION-PRIME: +#NEWELLAURORA +T Use Newell Ovation model of the aurora + +#FANGENERGY +F Use Fang 2010 and 2013 energy deposition + +Can add a cusp: +#USECUSP +T Add a cusp to the electron precipitation +0.2 Average Energy +2.0 Energy Flux + +This will modify the auroral inputs, experimental: +#AURORAMODS +T normalize to hemispheric power +1.0 avee factor (1 is no mod) +T iskappa +4.0 kappa (3 min; higher is maxwellian) + +#IONPRECIPITATION +F If ions are included in the AMIE file, use them. FangEnergy=T! + +------------ E-Field Drivers ------------ + +#SOLARWIND +0.0 IMF Bx +0.0 IMF By +-2.0 IMF Bz +400.0 Solar wind Vx + +This is for amie-like inputs: +#AMIEFILES +none northern hemisphere amie file +none southern hemisphere amie file + +Low-latitude dynamo (only run with higher res). Turn on for higher res sims: +#DYNAMO +T UseDynamo +45.0 DynamoHighLatBoundary +500 nItersMax +1.0 MaxResidual +F IncludeCowling +20.0 LongitudinalAveraging +F UseNewTrace + +----------------------------------------------------------------- +Some new features: + +#MSISOBC +T Shift the [O] density at the lower boundary by 6 months +5.0 change the obateness of the Earth by this percent (0 = none) + +-------------------------------------------------------------------------- +These set the thermal balance of the code: + +#NEUTRALHEATING +0.05 Efficiency of photoelectron heating + +#PHOTOELECTRON +0.00 Efficiency of photoelectron heating + +#DIFFUSION +T +50.0 Eddy Diffusion Coefficient (Should be about 37.5 for 1-D runs) +0.010 Eddy Diffusion applied at alts below this pressures level +0.005 No Eddy Diffusion at altitudes above this pressure level + +#THERMALCONDUCTION +5.6e-4 Thermal conductivity (o2) +7.6e-4 Thermal conductivity (o) +0.72 Thermal conductivity (^s) + +-------------------------------------------------------------------------- +Can set max wall time for the code to run (default = 10 days) + +#CPUTIMEMAX +860000.0 Maximum amount of cputime to use before stopping code + +-------------------------------------------------------------------------- +Solver stuff: + +#AUSMSOLVER +F Use AUSM+-up Solvers + +#CFL +0.80 percentage of maximum allowable time-step to take + +#LIMITER +mc only limiter available +2.0 + +#STATISTICALMODELSONLY +F if you want to run with msis and iri only (i.e. not GITM) +1800.0 time step to take if you run with msis and iri + +#ELECTRODYNAMICS +60.0 how often to update potential +60.0 how often to update aurora and euv + +-------------------------------------------------------------------------- +This stuff is standard for Earth + +#ALTITUDE +100.0 minimum altitude to use +600.0 maximum altitude to use (ignored unless the following is F) +T use stretched grid + +#INITIAL +T initialize thermosphere using MSIS +T initialize ionosphere using IRI + +#TIDES +T UseMSISFlat +T UseMSISTides +T UseGSWMTides +T UseWACCMTides +T UseHmeTides + +#GSWMCOMP +T Diurnal Migrating +T Diurnal NonMigrating +T Semidiurnal Migrating +T Semidiurnal NonMigrating + +#APEX +T Use apex magnetic coordinate system + +-------------------------------------------------------------------------- +Turn on/off various source terms: + +#THERMO +T UseSolarHeating +T UseJouleHeating +T UseAuroralHeating +T UseNOCooling +T UseOCooling +T UseConduction +T UseTurbulentConduction +F UseIRHeating - not for Earth! + +#FORCING +T UsePressureGradient +T UseIonDrag +T UseNeutralDrag +T UseViscosity +T UseCoriolis +T UseGravity + +#IONFORCING +T UseExB +T UseIonPressureGradient +T UseIonGravity +T UseNeutralDrag + +#CHEMISTRY +T UseIonChemistry +T UseIonAdvection +T UseNeutralChemistry + + +#USEIMPROVEDIONADVECTION +T UseImprovedIonAdvection +T UseNighttimeIonBCs +2.0 + +#USEIMPLICITIONMOMENTUM +T + +#END diff --git a/srcTests/auto_test/UAM.in.03.test b/srcTests/auto_test/UAM.in.03.test new file mode 100644 index 00000000..fcddc000 --- /dev/null +++ b/srcTests/auto_test/UAM.in.03.test @@ -0,0 +1,292 @@ + +#DEBUG +0 debug level (0 = no info, 10 = max info) +0 cpu to watch +60.0 dt between normal code output to stdout +F usebarriers - forces the code to stop and wait more often + +-------------------------------------------------------------------------- +Gitm can stop and start again: + - Writes files to UA/restartOUT + - Reads files from UA/restartIN + - Can mv out and link to that directory + +#RESTART +F Restart Code + +-------------------------------------------------------------------------- +start and end times: + - don't change start time on restart (code will set correct time!) + +#TIMESTART +2002 year +12 month +21 day +00 hour +00 minute +00 second + +#TIMEEND +2002 year +12 month +21 day +00 hour +05 minute +00 second + +-------------------------------------------------------------------------- +Set blocks in lon and lat. + - total cells in a direction = nBlocks x nCells (set in ModSize) + - res = (max - min) / num cells + +#GRID +2 number of blocks in longitude +2 number of blocks in latitude +-90.0 minimum latitude to model +90.0 maximum latitude to model +0.0 longitude start to model (set to 0.0 for whole Earth) +0.0 longitude end to model (set to 0.0 for whole Earth) + +-------------------------------------------------------------------------- +Output file stuff + +#LOGFILE +1.0 dt for output to a log file + +#SAVEPLOTS +7200.0 dt for writing restart files +2 how many output files do you want +3DALL second output style +300.0 dt for output (1 every 5 min) +3DION +300.0 + +-------------------------------------------------------------------------- +Specify Drivers: + +------------ Solar Drivers ------------ + +#F107 +150.0 f10.7 +150.0 f10.7 averaged over 81 days + +or + +NGDC_INDICES +UA/DataIn/f107.txt + +(All false below is new model of EUV!) +EUVMODEL +F UseEUVAC +F UseTobiska +F UseAboveHigh +F UseBelowLow + +or + +#EUV_DATA +F Use FISM solar flux data +srcData/FISM/fismflux_daily_2002.dat Filename + +------------ Auroral Drivers ------------ + +Used by Fuller-Rowell and Evans model: +#HPI +1.0 hemispheric power + +or + +# the hemispheric power is not really available after 2013 +NOAAHPI_INDICES +power file + +New auroral model from Wu and Ridley, which is driven by AU/AL/AE +#FTAMODEL +T Use FTA model of the aurora + +Can download AU/AL/AE indices from SuperMAG and use them here: +SME_INDICES +sme_2010.txt SME Filename +none onset time delay file + +This is for OVATION-PRIME: +#NEWELLAURORA +F Use Newell Ovation model of the aurora + +#FANGENERGY +T Use Fang 2010 and 2013 energy deposition + +Can add a cusp: +#USECUSP +F Add a cusp to the electron precipitation +0.2 Average Energy +2.0 Energy Flux + +This will modify the auroral inputs, experimental: +#AURORAMODS +F normalize to hemispheric power +1.0 avee factor (1 is no mod) +F iskappa +4.0 kappa (3 min; higher is maxwellian) + +#IONPRECIPITATION +F If ions are included in the AMIE file, use them. FangEnergy=T! + +------------ E-Field Drivers ------------ + +#SOLARWIND +0.0 IMF Bx +0.0 IMF By +-2.0 IMF Bz +400.0 Solar wind Vx + +or + +This is the most common thing - specify an IMF file: +MHD_INDICES +imf/solarwind file + +This is for SWPC inputs for close to real-time: +SWPC_INDICES +imf file +solar wind file + +This is for amie-like inputs: +#AMIEFILES +none northern hemisphere amie file +none southern hemisphere amie file + +Low-latitude dynamo (only run with higher res). Turn on for higher res sims: +#DYNAMO +F UseDynamo +45.0 DynamoHighLatBoundary +500 nItersMax +1.0 MaxResidual +F IncludeCowling +20.0 LongitudinalAveraging +F UseNewTrace + +----------------------------------------------------------------- +Some new features: + +#MSISOBC +T Shift the [O] density at the lower boundary by 6 months +0.0 change the obateness of the Earth by this percent (0 = none) + +-------------------------------------------------------------------------- +These set the thermal balance of the code: + +#NEUTRALHEATING +0.05 Efficiency of photoelectron heating + +#PHOTOELECTRON +0.00 Efficiency of photoelectron heating + +#DIFFUSION +T +50.0 Eddy Diffusion Coefficient (Should be about 37.5 for 1-D runs) +0.010 Eddy Diffusion applied at alts below this pressures level +0.005 No Eddy Diffusion at altitudes above this pressure level + +#THERMALCONDUCTION +5.6e-4 Thermal conductivity (o2) +7.6e-4 Thermal conductivity (o) +0.72 Thermal conductivity (^s) + +-------------------------------------------------------------------------- +Can set max wall time for the code to run (default = 10 days) + +#CPUTIMEMAX +860000.0 Maximum amount of cputime to use before stopping code + +-------------------------------------------------------------------------- +Solver stuff: + +#AUSMSOLVER +T Use AUSM+-up Solvers + +#CFL +0.80 percentage of maximum allowable time-step to take + +#LIMITER +mc only limiter available +2.0 + +#STATISTICALMODELSONLY +T if you want to run with msis and iri only (i.e. not GITM) +300.0 time step to take if you run with msis and iri + +#ELECTRODYNAMICS +60.0 how often to update potential +60.0 how often to update aurora and euv + +-------------------------------------------------------------------------- +This stuff is standard for Earth + +#ALTITUDE +100.0 minimum altitude to use +600.0 maximum altitude to use (ignored unless the following is F) +F use stretched grid + +#INITIAL +T initialize thermosphere using MSIS +T initialize ionosphere using IRI + +#TIDES +F UseMSISFlat +F UseMSISTides +F UseGSWMTides +F UseWACCMTides +F UseHmeTides + +#GSWMCOMP +F Diurnal Migrating +F Diurnal NonMigrating +F Semidiurnal Migrating +F Semidiurnal NonMigrating + +#APEX +T Use apex magnetic coordinate system + +-------------------------------------------------------------------------- +Turn on/off various source terms: + +#THERMO +F UseSolarHeating +F UseJouleHeating +F UseAuroralHeating +F UseNOCooling +F UseOCooling +F UseConduction +F UseTurbulentConduction +F UseIRHeating - not for Earth! + +#FORCING +F UsePressureGradient +F UseIonDrag +F UseNeutralDrag +F UseViscosity +F UseCoriolis +F UseGravity + +#IONFORCING +F UseExB +F UseIonPressureGradient +F UseIonGravity +F UseNeutralDrag + +#CHEMISTRY +F UseIonChemistry +F UseIonAdvection +F UseNeutralChemistry + + +#USEIMPROVEDIONADVECTION +F UseImprovedIonAdvection +F UseNighttimeIonBCs +2.0 + +#USEIMPLICITIONMOMENTUM +F + +#END diff --git a/srcTests/auto_test/run_all_tests.sh b/srcTests/auto_test/run_all_tests.sh new file mode 100755 index 00000000..cf36fec0 --- /dev/null +++ b/srcTests/auto_test/run_all_tests.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# This script will automatically compile GITM +# & run all tests scripts located within srcTests/auto_test/ + +# New UAM.in files should be placed within this folder, +# with the naming convention UAM.in.##.test + +# Additional notes about the test may be added. Name must conform to: +# > UAM.*.test +# but the beginning characters "UAM.in."* must not be changed, +# and no spaces can be added + +## --------------------------- ## + +# setup run directory +cd ../../ +./Config.pl -install -earth -compiler=gfortran10 +make +if [ ! -f run/GITM.exe ]; then + # only make rundir if it does not already exist + make rundir +fi +cp -fr run srcTests/auto_test/ + +# Copy the test files into run/ +cd srcTests/auto_test/ +cp UAM* run/ + +# begin running: +cd run/ +for test_uam in UAM.*.test; do + printf "\n\n>> Testing with $test_uam ...\n" + # Copy UAM (not the first one though) + cp $test_uam UAM.in + + # Run GITM, stop if error. + mpirun -np 4 ./GITM.exe + if [ $? -eq 0 ]; then + printf "\n\n>>> $test_uam ran successfully! <<< \n\n" + mv $test_uam $test_uam.success + else + printf "\n\n>>> $test_uam UNSUCCESSFUL! <<< \n\n EXITING\n\n" + exit 1 + fi +done + + + From 8b7578566f042426e0486ea3553a872890f92776 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 17:44:45 -0400 Subject: [PATCH 019/120] [doc]: Update README.md note on how to update refs & link to docs formatted better --- README.md | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 325ddadb..538da657 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,30 @@ # GITM -This is the home of the Global Ionosphere/Thermosphere Model (GITM). Regular releases will start in 2023, with this first release. +This is the home of the Global Ionosphere/Thermosphere Model (GITM). Regular releases will start in ~2023~ 2024, with this first release. GITM has been developed in fortran-90. It has been tested with gfortran -on linux and mac osx as well as ifort on NASA's Pleiades computer. +on Linux and MacOS as well as ifort on NASA's Pleiades computer. + +The latest version of the documentation can be accessed at: + +[![Build Documentation](https://github.com/abukowski21/GITM/actions/workflows/Documentation.yml/badge.svg)](https://github.com/abukowski21/GITM/actions/workflows/Documentation.yml) + +
+GITM's default branch recently changed names. To access the latest features, please update your local refs. + +From your local clone of this repository, run the following commands to update the name of the default branch. + +```sh +git branch -m master main +git fetch origin +git branch -u origin/main main +git remote set-head origin -a +``` +Optionally, run the following command to remove tracking references to the old branch name. +```sh +git remote prune origin +``` +
-The latest version of the documentation can be accessed here: [![Build Documentation](https://github.com/abukowski21/GITM/actions/workflows/Documentation.yml/badge.svg)](https://github.com/abukowski21/GITM/actions/workflows/Documentation.yml) ## Dependencies: @@ -163,6 +183,8 @@ to figure out how to incorporate them. fit, and do a pull request. Your suggested changes will be reviewed and incorporated if they fit. +See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for more details. + ## External Codes: There are a number of external codes that are not developed by the GITM From 713d576d0183bf6c0ddce718ddd6a982b32764a2 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 17:59:17 -0400 Subject: [PATCH 020/120] [test]: Put all job scripts into the same file? --- .github/workflows/Format-Doc-Test.yml | 80 +++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 .github/workflows/Format-Doc-Test.yml diff --git a/.github/workflows/Format-Doc-Test.yml b/.github/workflows/Format-Doc-Test.yml new file mode 100644 index 00000000..1099dc76 --- /dev/null +++ b/.github/workflows/Format-Doc-Test.yml @@ -0,0 +1,80 @@ +name: Format Check + +on: + pull_request: + branches: + - main + - develop + +jobs: + Format: + runs-on: ubuntu-latest + name: Format Check + permissions: + pull-requests: read + + steps: + - name: Clone Formatter + uses: actions/checkout@v4 + with: + repository: 'GITMCode/fprettify' + ref: gitm_customization + path: + fprettify + - name: Install formatter + run: | + cd fprettify + pip install . + - name: Clone GITM + uses: actions/checkout@v4 + with: + path: + GITM + - name: Format check entire GITM repository + run: | + cd GITM + python srcPython/format_GITM.py -f + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@v45 + with: + files: | + **.f90 + **.f + - name: Style Check - Only Changed Files + env: + ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} + run: | + cd GITM + python srcPython/format_GITM.py -l -s -v ${ALL_CHANGED_FILES} + + Documentation: + runs-on: ubuntu-latest + steps: + - name: Clone GITM repository + uses: actions/checkout@v4 + - name: Compile LaTeX document + uses: xu-cheng/latex-action@v3 + with: + root_file: manual.tex + working_directory: srcDoc + - name: Rename GITM Manual + run: mv srcDoc/manual.pdf GITM_manual.pdf + - name: Upload PDF file + uses: actions/upload-artifact@v3 + with: + name: PDF + path: GITM_manual.pdf + retention-days: 31 + + Tests: + runs-on: ubuntu-latest + steps: + - name: Install MPI (mpich) + run: sudo apt update && sudo apt install -y mpich + - name: Clone GITM repository + uses: actions/checkout@v4 + - name: Run tests in srcTests/auto_test + run: | + cd srcTests/auto_test + ./run_all_tests.sh From 34202d3764bfc4f00609b0e2659a19a2a282c419 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 18:04:16 -0400 Subject: [PATCH 021/120] [test]: rename jobs, make them sequential --- .github/workflows/Format-Doc-Test.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/Format-Doc-Test.yml b/.github/workflows/Format-Doc-Test.yml index 1099dc76..12b7f55a 100644 --- a/.github/workflows/Format-Doc-Test.yml +++ b/.github/workflows/Format-Doc-Test.yml @@ -18,7 +18,6 @@ jobs: uses: actions/checkout@v4 with: repository: 'GITMCode/fprettify' - ref: gitm_customization path: fprettify - name: Install formatter @@ -50,6 +49,8 @@ jobs: Documentation: runs-on: ubuntu-latest + name: Build Documentation + needs: [Format] steps: - name: Clone GITM repository uses: actions/checkout@v4 @@ -69,6 +70,8 @@ jobs: Tests: runs-on: ubuntu-latest + name: Run Automatic Tests + needs: [Format, Documentation] steps: - name: Install MPI (mpich) run: sudo apt update && sudo apt install -y mpich From 508904043363649a39d95d0405d7e1ec347b0f92 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 18:06:31 -0400 Subject: [PATCH 022/120] [test]: rm old files. tests in one file for serial running --- .github/workflows/Documentation.yml | 36 ------------------ .github/workflows/format_check.yml | 58 ----------------------------- .github/workflows/test_run.yml | 24 ------------ 3 files changed, 118 deletions(-) delete mode 100644 .github/workflows/Documentation.yml delete mode 100644 .github/workflows/format_check.yml delete mode 100644 .github/workflows/test_run.yml diff --git a/.github/workflows/Documentation.yml b/.github/workflows/Documentation.yml deleted file mode 100644 index 43b73de2..00000000 --- a/.github/workflows/Documentation.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Build Documentation - -on: - schedule: - # 0 minute, 0 hour, 1st day, every month, any day of week - - cron: '0 0 1 * *' - pull_request: - branches: - develop - main - workflow_run: - workflows: [Format Check] - types: - - completed - -jobs: - build_documentation: - runs-on: ubuntu-latest - steps: - - name: Clone GITM repository - uses: actions/checkout@v4 - # with: - # repository: 'GITMCode/GITM' - - name: Compile LaTeX document - uses: xu-cheng/latex-action@v3 - with: - root_file: manual.tex - working_directory: srcDoc - - name: Rename GITM Manual - run: mv srcDoc/manual.pdf GITM_manual.pdf - - name: Upload PDF file - uses: actions/upload-artifact@v3 - with: - name: PDF - path: GITM_manual.pdf - retention-days: 30 diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml deleted file mode 100644 index 9c6da240..00000000 --- a/.github/workflows/format_check.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: Format Check - -on: - pull_request: - branches: - - main - - develop - -jobs: - # ------------------------------------------------------------- - # Event `pull_request`: Returns all changed pull request files. - # -------------------------------------------------------------- - check_code_formatting: - # NOTE: - # - This is limited to pull_request* events and would raise an error for other events. - # - A maximum of 3000 files can be returned. - # - For more flexibility and no limitations see "Using local .git directory" above. - - runs-on: ubuntu-latest # windows-latest || macos-latest - name: Format Check - permissions: - pull-requests: read - - steps: - - name: Clone Formatter - uses: actions/checkout@v4 - with: - repository: 'abukowski21/fprettify' - ref: gitm_customization - path: - fprettify - - name: Install formatter - run: | - cd fprettify - pip install . - - name: Clone GITM - uses: actions/checkout@v4 - with: - path: - GITM - # repository: 'abukowski21/GITM' - - name: Format check entire GITM repository - run: | - cd GITM - python srcPython/format_GITM.py -f - - name: Get changed files - id: changed-files - uses: tj-actions/changed-files@v45 - with: - files: | - **.f90 - **.f - - name: Style Check - Only Changed Files - env: - ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} - run: | - cd GITM - python srcPython/format_GITM.py -l -s -v ${ALL_CHANGED_FILES} diff --git a/.github/workflows/test_run.yml b/.github/workflows/test_run.yml deleted file mode 100644 index 1c00d07f..00000000 --- a/.github/workflows/test_run.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Test GITM - -on: - pull_request: - branches: - develop - main - workflow_run: - workflows: [Format Check] - types: - - completed - -jobs: - GITM_Testing: - runs-on: ubuntu-latest - steps: - - name: Install MPI (mpich) - run: sudo apt update && sudo apt install -y mpich - - name: Clone GITM repository - uses: actions/checkout@v4 - - name: Run tests in srcTests/auto_test - run: | - cd srcTests/auto_test - ./run_all_tests.sh From e703673703e93a26e78614e2acdf4b02faa75265 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 19:10:19 -0400 Subject: [PATCH 023/120] [update]: 2 different docs workflows & better test UAM's --- .github/workflows/Format-Doc-Test.yml | 2 +- .github/workflows/build-docs.yml | 26 ++ srcTests/auto_test/UAM.in.02.test | 49 ++-- srcTests/auto_test/UAM.in.03.test | 120 +++----- srcTests/auto_test/UAM.in.04.test | 97 +++++++ srcTests/auto_test/UAM.in.Full.earthtemplate | 290 +++++++++++++++++++ 6 files changed, 490 insertions(+), 94 deletions(-) create mode 100644 .github/workflows/build-docs.yml create mode 100644 srcTests/auto_test/UAM.in.04.test create mode 100644 srcTests/auto_test/UAM.in.Full.earthtemplate diff --git a/.github/workflows/Format-Doc-Test.yml b/.github/workflows/Format-Doc-Test.yml index 12b7f55a..14b31404 100644 --- a/.github/workflows/Format-Doc-Test.yml +++ b/.github/workflows/Format-Doc-Test.yml @@ -1,4 +1,4 @@ -name: Format Check +name: Sequential Tests on: pull_request: diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml new file mode 100644 index 00000000..652d911e --- /dev/null +++ b/.github/workflows/build-docs.yml @@ -0,0 +1,26 @@ +name: Build Documentation + +on: + schedule: + # 0 minute, 0 hour, 1st day, every month, any day of week + - cron: '0 0 1 * *' + +jobs: + build_documentation: + runs-on: ubuntu-latest + steps: + - name: Clone GITM repository + uses: actions/checkout@v4 + - name: Compile LaTeX document + uses: xu-cheng/latex-action@v3 + with: + root_file: manual.tex + working_directory: srcDoc + - name: Rename GITM Manual + run: mv srcDoc/manual.pdf GITM_manual.pdf + - name: Upload PDF file + uses: actions/upload-artifact@v3 + with: + name: PDF + path: GITM_manual.pdf + retention-days: 31 \ No newline at end of file diff --git a/srcTests/auto_test/UAM.in.02.test b/srcTests/auto_test/UAM.in.02.test index 04b523b4..d1c4c0b1 100644 --- a/srcTests/auto_test/UAM.in.02.test +++ b/srcTests/auto_test/UAM.in.02.test @@ -1,7 +1,7 @@ #DEBUG -10 debug level (0 = no info, 10 = max info) -5 cpu to watch +0 debug level (0 = no info, 10 = max info) +0 cpu to watch 60.0 dt between normal code output to stdout T usebarriers - forces the code to stop and wait more often @@ -39,13 +39,16 @@ Set blocks in lon and lat. - total cells in a direction = nBlocks x nCells (set in ModSize) - res = (max - min) / num cells +#NANCHECK +T + #GRID 2 number of blocks in longitude 2 number of blocks in latitude --40.0 minimum latitude to model -40.0 maximum latitude to model -30.0 longitude start to model (set to 0.0 for whole Earth) -180.0 longitude end to model (set to 0.0 for whole Earth) +-90.0 minimum latitude to model +90.0 maximum latitude to model +0.0 longitude start to model (set to 0.0 for whole Earth) +0.0 longitude end to model (set to 0.0 for whole Earth) -------------------------------------------------------------------------- Output file stuff @@ -94,8 +97,13 @@ DataIn/ae_20021221.txt none onset time delay file This is for OVATION-PRIME: -#NEWELLAURORA +--#NEWELLAURORA T Use Newell Ovation model of the aurora +T UseNewellAveraged (logical) +T UseNewellMono (logical) +T UseNewellWave (logical) +T UseNewellRemoveSpikes (logical) +T UseNewellAverage (logical) #FANGENERGY F Use Fang 2010 and 2013 energy deposition @@ -109,7 +117,7 @@ T Add a cusp to the electron precipitation This will modify the auroral inputs, experimental: #AURORAMODS T normalize to hemispheric power -1.0 avee factor (1 is no mod) +2.0 avee factor (1 is no mod) T iskappa 4.0 kappa (3 min; higher is maxwellian) @@ -131,7 +139,7 @@ none southern hemisphere amie file Low-latitude dynamo (only run with higher res). Turn on for higher res sims: #DYNAMO -T UseDynamo +F UseDynamo 45.0 DynamoHighLatBoundary 500 nItersMax 1.0 MaxResidual @@ -144,7 +152,7 @@ Some new features: #MSISOBC T Shift the [O] density at the lower boundary by 6 months -5.0 change the obateness of the Earth by this percent (0 = none) +0.0 change the obateness of the Earth by this percent (0 = none) -------------------------------------------------------------------------- These set the thermal balance of the code: @@ -206,20 +214,21 @@ T initialize thermosphere using MSIS T initialize ionosphere using IRI #TIDES -T UseMSISFlat -T UseMSISTides -T UseGSWMTides -T UseWACCMTides -T UseHmeTides +F UseMSISFlat +F UseMSISTides +F UseGSWMTides +F UseWACCMTides +F UseHmeTides +these don't work without special input files? #GSWMCOMP -T Diurnal Migrating -T Diurnal NonMigrating -T Semidiurnal Migrating -T Semidiurnal NonMigrating +F Diurnal Migrating +F Diurnal NonMigrating +F Semidiurnal Migrating +F Semidiurnal NonMigrating #APEX -T Use apex magnetic coordinate system +F Use apex magnetic coordinate system -------------------------------------------------------------------------- Turn on/off various source terms: diff --git a/srcTests/auto_test/UAM.in.03.test b/srcTests/auto_test/UAM.in.03.test index fcddc000..114b204f 100644 --- a/srcTests/auto_test/UAM.in.03.test +++ b/srcTests/auto_test/UAM.in.03.test @@ -3,7 +3,7 @@ 0 debug level (0 = no info, 10 = max info) 0 cpu to watch 60.0 dt between normal code output to stdout -F usebarriers - forces the code to stop and wait more often +T usebarriers - forces the code to stop and wait more often -------------------------------------------------------------------------- Gitm can stop and start again: @@ -55,66 +55,47 @@ Output file stuff #SAVEPLOTS 7200.0 dt for writing restart files -2 how many output files do you want +1 how many output files do you want 3DALL second output style 300.0 dt for output (1 every 5 min) -3DION -300.0 + -------------------------------------------------------------------------- Specify Drivers: ------------ Solar Drivers ------------ -#F107 -150.0 f10.7 -150.0 f10.7 averaged over 81 days - -or -NGDC_INDICES +#NGDC_INDICES UA/DataIn/f107.txt (All false below is new model of EUV!) -EUVMODEL +#EUVMODEL F UseEUVAC F UseTobiska F UseAboveHigh F UseBelowLow -or - -#EUV_DATA -F Use FISM solar flux data -srcData/FISM/fismflux_daily_2002.dat Filename - ------------ Auroral Drivers ------------ -Used by Fuller-Rowell and Evans model: -#HPI -1.0 hemispheric power - -or +#MHD_INDICES +DataIn/imf20021221.dat -# the hemispheric power is not really available after 2013 -NOAAHPI_INDICES -power file +#NOAAHPI_INDICES +DataIn/power.test.rcmr_quick New auroral model from Wu and Ridley, which is driven by AU/AL/AE #FTAMODEL T Use FTA model of the aurora Can download AU/AL/AE indices from SuperMAG and use them here: -SME_INDICES -sme_2010.txt SME Filename +#SME_INDICES +DataIn/ae_20021221.txt none onset time delay file -This is for OVATION-PRIME: -#NEWELLAURORA -F Use Newell Ovation model of the aurora #FANGENERGY -T Use Fang 2010 and 2013 energy deposition +F Use Fang 2010 and 2013 energy deposition Can add a cusp: #USECUSP @@ -125,8 +106,8 @@ F Add a cusp to the electron precipitation This will modify the auroral inputs, experimental: #AURORAMODS F normalize to hemispheric power -1.0 avee factor (1 is no mod) -F iskappa +2.0 avee factor (1 is no mod) +T iskappa 4.0 kappa (3 min; higher is maxwellian) #IONPRECIPITATION @@ -140,17 +121,6 @@ F If ions are included in the AMIE file, use them. FangEnergy=T! -2.0 IMF Bz 400.0 Solar wind Vx -or - -This is the most common thing - specify an IMF file: -MHD_INDICES -imf/solarwind file - -This is for SWPC inputs for close to real-time: -SWPC_INDICES -imf file -solar wind file - This is for amie-like inputs: #AMIEFILES none northern hemisphere amie file @@ -158,7 +128,7 @@ none southern hemisphere amie file Low-latitude dynamo (only run with higher res). Turn on for higher res sims: #DYNAMO -F UseDynamo +T UseDynamo 45.0 DynamoHighLatBoundary 500 nItersMax 1.0 MaxResidual @@ -169,6 +139,9 @@ F UseNewTrace ----------------------------------------------------------------- Some new features: +#NANCHECK +T + #MSISOBC T Shift the [O] density at the lower boundary by 6 months 0.0 change the obateness of the Earth by this percent (0 = none) @@ -203,7 +176,7 @@ Can set max wall time for the code to run (default = 10 days) Solver stuff: #AUSMSOLVER -T Use AUSM+-up Solvers +F Use AUSM+-up Solvers #CFL 0.80 percentage of maximum allowable time-step to take @@ -213,8 +186,8 @@ mc only limiter available 2.0 #STATISTICALMODELSONLY -T if you want to run with msis and iri only (i.e. not GITM) -300.0 time step to take if you run with msis and iri +F if you want to run with msis and iri only (i.e. not GITM) +1800.0 time step to take if you run with msis and iri #ELECTRODYNAMICS 60.0 how often to update potential @@ -226,7 +199,7 @@ This stuff is standard for Earth #ALTITUDE 100.0 minimum altitude to use 600.0 maximum altitude to use (ignored unless the following is F) -F use stretched grid +T use stretched grid #INITIAL T initialize thermosphere using MSIS @@ -234,11 +207,12 @@ T initialize ionosphere using IRI #TIDES F UseMSISFlat -F UseMSISTides +T UseMSISTides F UseGSWMTides F UseWACCMTides F UseHmeTides +these don't work without special input files? #GSWMCOMP F Diurnal Migrating F Diurnal NonMigrating @@ -252,41 +226,41 @@ T Use apex magnetic coordinate system Turn on/off various source terms: #THERMO -F UseSolarHeating -F UseJouleHeating -F UseAuroralHeating -F UseNOCooling -F UseOCooling -F UseConduction -F UseTurbulentConduction +T UseSolarHeating +T UseJouleHeating +T UseAuroralHeating +T UseNOCooling +T UseOCooling +T UseConduction +T UseTurbulentConduction F UseIRHeating - not for Earth! #FORCING -F UsePressureGradient -F UseIonDrag -F UseNeutralDrag -F UseViscosity -F UseCoriolis -F UseGravity +T UsePressureGradient +T UseIonDrag +T UseNeutralDrag +T UseViscosity +T UseCoriolis +T UseGravity #IONFORCING -F UseExB -F UseIonPressureGradient -F UseIonGravity -F UseNeutralDrag +T UseExB +T UseIonPressureGradient +T UseIonGravity +T UseNeutralDrag #CHEMISTRY -F UseIonChemistry -F UseIonAdvection -F UseNeutralChemistry +T UseIonChemistry +T UseIonAdvection +T UseNeutralChemistry #USEIMPROVEDIONADVECTION -F UseImprovedIonAdvection -F UseNighttimeIonBCs +T UseImprovedIonAdvection +T UseNighttimeIonBCs 2.0 #USEIMPLICITIONMOMENTUM -F +T #END diff --git a/srcTests/auto_test/UAM.in.04.test b/srcTests/auto_test/UAM.in.04.test new file mode 100644 index 00000000..a174c718 --- /dev/null +++ b/srcTests/auto_test/UAM.in.04.test @@ -0,0 +1,97 @@ + +#DEBUG +0 debug level (0 = no info, 10 = max info) +0 cpu to watch +60.0 dt between normal code output to stdout +F usebarriers - forces the code to stop and wait more often + +-------------------------------------------------------------------------- +Gitm can stop and start again: + - Writes files to UA/restartOUT + - Reads files from UA/restartIN + - Can mv out and link to that directory + +#RESTART +F Restart Code + +-------------------------------------------------------------------------- +start and end times: + - don't change start time on restart (code will set correct time!) + +#TIMESTART +2002 year +12 month +21 day +00 hour +00 minute +00 second + +#TIMEEND +2002 year +12 month +21 day +00 hour +05 minute +00 second + +-------------------------------------------------------------------------- +Set blocks in lon and lat. + - total cells in a direction = nBlocks x nCells (set in ModSize) + - res = (max - min) / num cells + +#GRID +2 number of blocks in longitude +2 number of blocks in latitude +-40.0 minimum latitude to model +40.0 maximum latitude to model +40.0 longitude start to model (set to 0.0 for whole Earth) +200.0 longitude end to model (set to 0.0 for whole Earth) + +-------------------------------------------------------------------------- +Output file stuff + +#SAVEPLOTS +7200.0 dt for writing restart files +1 how many output files do you want +3DALL second output style +300.0 dt for output (1 every 5 min) + + +#NGDC_INDICES +UA/DataIn/f107.txt + +#EUV_DATA +T Use FISM solar flux data +UA/DataIn/FISM/fismflux_daily_2002.dat Filename + +------------ Auroral Drivers ------------ + +#FTAMODEL +T Use FTA model of the aurora + + +#SME_INDICES +UA/DataIn/ae_20021221.txt SME Filename +none onset time delay file +T convert SME to Hemispheric Power + +------------ E-Field Drivers ------------ + +#MHD_INDICES +UA/DataIn/imf20021221.dat + +#APEX +T + +----------------------------------------------------------------- + +#MSISOBC +T Shift the [O] density at the lower boundary by 6 months +0.0 change the obateness of the Earth by this percent (0 = none) + +-------------------------------------------------------------------------- + +#AUSMSOLVER +T Use AUSM+-up Solvers + +#END diff --git a/srcTests/auto_test/UAM.in.Full.earthtemplate b/srcTests/auto_test/UAM.in.Full.earthtemplate new file mode 100644 index 00000000..245ef2a3 --- /dev/null +++ b/srcTests/auto_test/UAM.in.Full.earthtemplate @@ -0,0 +1,290 @@ + +#DEBUG +0 debug level (0 = no info, 10 = max info) +0 cpu to watch +60.0 dt between normal code output to stdout +F usebarriers - forces the code to stop and wait more often + +-------------------------------------------------------------------------- +Gitm can stop and start again: + - Writes files to UA/restartOUT + - Reads files from UA/restartIN + - Can mv out and link to that directory + +#RESTART +F Restart Code + +-------------------------------------------------------------------------- +start and end times: + - don't change start time on restart (code will set correct time!) + +#TIMESTART +2002 year +12 month +21 day +00 hour +00 minute +00 second + +#TIMEEND +2002 year +12 month +21 day +00 hour +05 minute +00 second + +-------------------------------------------------------------------------- +Set blocks in lon and lat. + - total cells in a direction = nBlocks x nCells (set in ModSize) + - res = (max - min) / num cells + +#GRID +2 number of blocks in longitude +2 number of blocks in latitude +-90.0 minimum latitude to model +90.0 maximum latitude to model +0.0 longitude start to model (set to 0.0 for whole Earth) +0.0 longitude end to model (set to 0.0 for whole Earth) + +-------------------------------------------------------------------------- +Output file stuff + +#LOGFILE +1.0 dt for output to a log file + +#SAVEPLOTS +7200.0 dt for writing restart files +1 how many output files do you want +3DALL second output style +300.0 dt for output (1 every 5 min) + + +-------------------------------------------------------------------------- +Specify Drivers: + +------------ Solar Drivers ------------ + +#F107 +150.0 f10.7 +150.0 f10.7 averaged over 81 days + +or + +NGDC_INDICES +UA/DataIn/f107.txt + +(All false below is new model of EUV!) +EUVMODEL +F UseEUVAC +F UseTobiska +F UseAboveHigh +F UseBelowLow + +or + +#EUV_DATA +F Use FISM solar flux data +srcData/FISM/fismflux_daily_2002.dat Filename + +------------ Auroral Drivers ------------ + +Used by Fuller-Rowell and Evans model: +#HPI +1.0 hemispheric power + +or + +# the hemispheric power is not really available after 2013 +NOAAHPI_INDICES +power file + +New auroral model from Wu and Ridley, which is driven by AU/AL/AE +#FTAMODEL +T Use FTA model of the aurora + +Can download AU/AL/AE indices from SuperMAG and use them here: +SME_INDICES +sme_2010.txt SME Filename +none onset time delay file + +This is for OVATION-PRIME: +#NEWELLAURORA +F Use Newell Ovation model of the aurora + +#FANGENERGY +T Use Fang 2010 and 2013 energy deposition + +Can add a cusp: +#USECUSP +F Add a cusp to the electron precipitation +0.2 Average Energy +2.0 Energy Flux + +This will modify the auroral inputs, experimental: +#AURORAMODS +F normalize to hemispheric power +1.0 avee factor (1 is no mod) +F iskappa +4.0 kappa (3 min; higher is maxwellian) + +#IONPRECIPITATION +F If ions are included in the AMIE file, use them. FangEnergy=T! + +------------ E-Field Drivers ------------ + +#SOLARWIND +0.0 IMF Bx +0.0 IMF By +-2.0 IMF Bz +400.0 Solar wind Vx + +or + +This is the most common thing - specify an IMF file: +MHD_INDICES +imf/solarwind file + +This is for SWPC inputs for close to real-time: +SWPC_INDICES +imf file +solar wind file + +This is for amie-like inputs: +#AMIEFILES +none northern hemisphere amie file +none southern hemisphere amie file + +Low-latitude dynamo (only run with higher res). Turn on for higher res sims: +#DYNAMO +F UseDynamo +45.0 DynamoHighLatBoundary +500 nItersMax +1.0 MaxResidual +F IncludeCowling +20.0 LongitudinalAveraging +F UseNewTrace + +----------------------------------------------------------------- +Some new features: + +#MSISOBC +T Shift the [O] density at the lower boundary by 6 months +0.0 change the obateness of the Earth by this percent (0 = none) + +-------------------------------------------------------------------------- +These set the thermal balance of the code: + +#NEUTRALHEATING +0.05 Efficiency of photoelectron heating + +#PHOTOELECTRON +0.00 Efficiency of photoelectron heating + +#DIFFUSION +T +50.0 Eddy Diffusion Coefficient (Should be about 37.5 for 1-D runs) +0.010 Eddy Diffusion applied at alts below this pressures level +0.005 No Eddy Diffusion at altitudes above this pressure level + +#THERMALCONDUCTION +5.6e-4 Thermal conductivity (o2) +7.6e-4 Thermal conductivity (o) +0.72 Thermal conductivity (^s) + +-------------------------------------------------------------------------- +Can set max wall time for the code to run (default = 10 days) + +#CPUTIMEMAX +860000.0 Maximum amount of cputime to use before stopping code + +-------------------------------------------------------------------------- +Solver stuff: + +#AUSMSOLVER +T Use AUSM+-up Solvers + +#CFL +0.80 percentage of maximum allowable time-step to take + +#LIMITER +mc only limiter available +2.0 + +#STATISTICALMODELSONLY +F if you want to run with msis and iri only (i.e. not GITM) +1800.0 time step to take if you run with msis and iri + +#ELECTRODYNAMICS +60.0 how often to update potential +60.0 how often to update aurora and euv + +-------------------------------------------------------------------------- +This stuff is standard for Earth + +#ALTITUDE +100.0 minimum altitude to use +600.0 maximum altitude to use (ignored unless the following is F) +T use stretched grid + +#INITIAL +T initialize thermosphere using MSIS +T initialize ionosphere using IRI + +#TIDES +F UseMSISFlat +T UseMSISTides +F UseGSWMTides +F UseWACCMTides + +#GSWMCOMP +F Diurnal Migrating +F Diurnal NonMigrating +F Semidiurnal Migrating +F Semidiurnal NonMigrating + +#APEX +T Use apex magnetic coordinate system + +-------------------------------------------------------------------------- +Turn on/off various source terms: + +#THERMO +T UseSolarHeating +T UseJouleHeating +T UseAuroralHeating +T UseNOCooling +T UseOCooling +T UseConduction +T UseTurbulentConduction +F UseIRHeating - not for Earth! + +#FORCING +T UsePressureGradient +T UseIonDrag +T UseNeutralDrag +T UseViscosity +T UseCoriolis +T UseGravity + +#IONFORCING +T UseExB +T UseIonPressureGradient +T UseIonGravity +T UseNeutralDrag + +#CHEMISTRY +T UseIonChemistry +T UseIonAdvection +T UseNeutralChemistry + + +#USEIMPROVEDIONADVECTION +T UseImprovedIonAdvection +T UseNighttimeIonBCs +2.0 + +#USEIMPLICITIONMOMENTUM +T + +#END From 75ddb8bd7d50de1649f385fe466b9fb97c5a9f67 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Sep 2024 19:26:18 -0400 Subject: [PATCH 024/120] Update build-docs.yml build docs when main is pushed to --- .github/workflows/build-docs.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index 652d911e..a5048d55 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -4,6 +4,9 @@ on: schedule: # 0 minute, 0 hour, 1st day, every month, any day of week - cron: '0 0 1 * *' + push: + branches: + main jobs: build_documentation: @@ -23,4 +26,4 @@ jobs: with: name: PDF path: GITM_manual.pdf - retention-days: 31 \ No newline at end of file + retention-days: 31 From e90497093ff1e2bc2933bd7dd90246df49c0cb3e Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Thu, 19 Sep 2024 11:07:24 -0400 Subject: [PATCH 025/120] [doc] update README w. correct doc badge & some typos fixed --- README.md | 45 ++++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 538da657..84fea0a3 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ # GITM -This is the home of the Global Ionosphere/Thermosphere Model (GITM). Regular releases will start in ~2023~ 2024, with this first release. + +This is the home of the Global Ionosphere/Thermosphere Model (GITM). GITM has been developed in fortran-90. It has been tested with gfortran on Linux and MacOS as well as ifort on NASA's Pleiades computer. The latest version of the documentation can be accessed at: -[![Build Documentation](https://github.com/abukowski21/GITM/actions/workflows/Documentation.yml/badge.svg)](https://github.com/abukowski21/GITM/actions/workflows/Documentation.yml) +[![Build Documentation](https://github.com/abukowski21/GITM/actions/workflows/build-docs.yml/badge.svg)](https://github.com/abukowski21/GITM/actions/workflows/build-docs.yml)
GITM's default branch recently changed names. To access the latest features, please update your local refs. @@ -19,18 +20,20 @@ git fetch origin git branch -u origin/main main git remote set-head origin -a ``` + Optionally, run the following command to remove tracking references to the old branch name. + ```sh git remote prune origin ``` -
+ -## Dependencies: +## Dependencies 1. GITM needs MPI to work. -## Quick Start: +## Quick Start 1\. Clone the repository and cd into the repo folder @@ -64,7 +67,7 @@ you can do: In theory, Mars, Venus, Titan, and LV-426 should work. These are in various states of completion, so I wouldn't count on them being -perfect. +perfect. If running on Pleiades (as of March 3, 2022), you need to have these in your start-up script (.cshrc, .bashrc, etc): @@ -76,7 +79,7 @@ module load mpi-hpe/mpt And you can use 3c below to configure the code. -3c\. Configure for Pleiades +3c\. Configure for Pleiades ```shell ./Config.pl -install -earth -compiler=ifort @@ -106,10 +109,10 @@ cd run mpirun -np 4 ./GITM.exe ``` -GITM reads in a file called UAM.in, which sets the configuration of -the simulation. The default UAM.in file has 2 lat blocks and 2 lon +GITM reads in a file called `UAM.in`, which sets the configuration of +the simulation. The default `UAM.in` file has 2 lat blocks and 2 lon blocks with 9 x 9 cells each, so the default resolution is 180 (deg -lat) / (2 * 9) = 10 deg lat, by 360 (deg lon) / (2 * 9) = 20 deg +lat) / (2 \* 9) = 10 deg lat, by 360 (deg lon) / (2 \* 9) = 20 deg lon. See below for how to set the resolution. 8\. Go into the directory which contains many of the outputs: @@ -121,7 +124,7 @@ cd UA 9\. Post process the output files by running: ```shell -pGITM +./pGITM ``` 10\. Go into the output directory: @@ -136,7 +139,7 @@ cd data ../../../srcPython/plot_model_results.py -var=3 -alt=120 3DALL_t021221_000500.bin ``` -Then look at the png file that is created. You can use a -h to see +Then look at the png file that is created. You can use a `-h` to see how to run this code. 11b\. A more advanced plotter is available through aetherpy. This is a bit more @@ -155,6 +158,7 @@ ls cd aetherpy git checkout develop ``` + (install the aetherpy libraries) ```shell @@ -171,9 +175,9 @@ cd GITM/run/UA/data (look at the beautiful plot) -## Contributing: +## Contributing -1. Please feel free to e-mail the development team to suggest ideas. +1. Please feel free to e-mail the development team to suggest ideas. 2. Please feel free to open an issue on github. The development team gets these issues and will review them. We can then reach out to you @@ -185,7 +189,7 @@ and incorporated if they fit. See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for more details. -## External Codes: +## External Codes There are a number of external codes that are not developed by the GITM team. For example: @@ -203,23 +207,22 @@ the code. 4. The horizonal wind model (HWM) is used as a lower BC at Earth and was developed at NRL. -## Setting the Resolution: +## Setting the Resolution GITM uses a 2d domain decomposition with blocks. This means that in each direction, you set the number of cells in each block in the src/ModSize.f90 file. We almost always leave this as 9 cells in both the latitude and longitude direction, since the math is easy with this number. You can then set the resolution by asking for the number of -blocks you want in the UAM.in file. +blocks you want in the `UAM.in` file. If you wanted a grid that is (for example) 1 deg (lat) by 5 deg (lon), you would need 20 blocks (9 x 20 = 180 cells) in latitude and 8 blocks (9 x 8 = 72 cells) in longitude. You need a total of 160 processors for this -simulation. You can change the UAM.in file for these number of cells. +simulation. You can change the `UAM.in` file for these number of cells. To get a simple 5 deg x 5 deg resolution, you need 4 blocks in lat and 8 blocks in longitude, or 32 processors. If you have fewer -processors, you can change the src/ModSize.f90 code and adjust the +processors, you can change the parameters in `src/ModSize.f90` and adjust the number of cells in each block to compensate. For example, you have 8 -processors, so you can adjust ModSize.f90 to have 18 cells in lat and +processors, so you can adjust `src/ModSize.f90` to have 18 cells in lat and lon, then ask for 2 (lat) x 4 (lon) blocks to get 5 deg x 5 deg resolution. - From 47f8f2ae0ab71462475153da773f22fb1141d158 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Sun, 2 Feb 2025 10:55:07 -0500 Subject: [PATCH 026/120] BUG: Update build-docs.yml to be able to build --- .github/workflows/build-docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index a5048d55..4cb9ef5b 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -22,7 +22,7 @@ jobs: - name: Rename GITM Manual run: mv srcDoc/manual.pdf GITM_manual.pdf - name: Upload PDF file - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: PDF path: GITM_manual.pdf From cbd0629fc91accf2f99878447996339e7c77a463 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 26 May 2025 18:26:21 -0400 Subject: [PATCH 027/120] doc: create rtd site? --- .readthedocs.yaml | 19 +++++++++++++++++++ srcDoc/mkdocs.yml | 2 ++ 2 files changed, 21 insertions(+) create mode 100644 .readthedocs.yaml create mode 100644 srcDoc/mkdocs.yml diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 00000000..9a2117d4 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,19 @@ +# Read the Docs configuration file for MkDocs projects +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Set the version of Python and other tools you might need +build: + os: ubuntu-22.04 + tools: + python: "3.12" + +mkdocs: + configuration: srcDoc/.mkdocs.yml + +# Optionally declare the Python requirements required to build your docs +python: + install: + - requirements: docs/requirements.txt diff --git a/srcDoc/mkdocs.yml b/srcDoc/mkdocs.yml new file mode 100644 index 00000000..0f8ed1e4 --- /dev/null +++ b/srcDoc/mkdocs.yml @@ -0,0 +1,2 @@ +theme: + name: material From 6b7a36f6883ea824a7de2a0b3b7d5588db90d1af Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 26 May 2025 18:35:34 -0400 Subject: [PATCH 028/120] add necessary files to host docs --- .readthedocs.yaml | 12 ++++-------- srcDoc/requirements.txt | 4 ++++ 2 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 srcDoc/requirements.txt diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 9a2117d4..dfb1e604 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,19 +1,15 @@ -# Read the Docs configuration file for MkDocs projects -# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details - -# Required version: 2 # Set the version of Python and other tools you might need build: - os: ubuntu-22.04 + os: ubuntu-24.04 tools: python: "3.12" mkdocs: - configuration: srcDoc/.mkdocs.yml + configuration: srcDocmkdocs.yml # Optionally declare the Python requirements required to build your docs python: - install: - - requirements: docs/requirements.txt + install: + - requirements: srcDoc/requirements.txt diff --git a/srcDoc/requirements.txt b/srcDoc/requirements.txt new file mode 100644 index 00000000..b3b9660b --- /dev/null +++ b/srcDoc/requirements.txt @@ -0,0 +1,4 @@ +scipy +numpy +ford + From 2639caf9bba0b728519fe939868daa0cbeb86dc2 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 26 May 2025 18:37:02 -0400 Subject: [PATCH 029/120] forgot a / in a path. whoops --- .readthedocs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index dfb1e604..a1202dd3 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -7,7 +7,7 @@ build: python: "3.12" mkdocs: - configuration: srcDocmkdocs.yml + configuration: srcDoc/mkdocs.yml # Optionally declare the Python requirements required to build your docs python: From ca4e0945ef4ad37010b00b64d81ca51ac6592cd8 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 26 May 2025 18:43:00 -0400 Subject: [PATCH 030/120] add site_name to mkdocs config --- srcDoc/mkdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/srcDoc/mkdocs.yml b/srcDoc/mkdocs.yml index 0f8ed1e4..8b31c52a 100644 --- a/srcDoc/mkdocs.yml +++ b/srcDoc/mkdocs.yml @@ -1,2 +1,3 @@ +site_name: GITM theme: name: material From 101e50e8174ee55aaca9f9f9ae1a38b7adc8777b Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 26 May 2025 18:45:53 -0400 Subject: [PATCH 031/120] add a theme to pip requirements --- srcDoc/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcDoc/requirements.txt b/srcDoc/requirements.txt index b3b9660b..82137fe7 100644 --- a/srcDoc/requirements.txt +++ b/srcDoc/requirements.txt @@ -1,4 +1,4 @@ scipy numpy ford - +mkdocs-material From 9abe3aaef668c87c9d49dd27dca01d3037c14354 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 26 May 2025 18:57:29 -0400 Subject: [PATCH 032/120] basic doc structure, kinda. --- mkdocs.yml | 7 +++++++ srcDoc/intro.md | 10 ++++++++++ srcDoc/mkdocs.yml | 3 --- srcDoc/quick_start.md | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 mkdocs.yml create mode 100644 srcDoc/intro.md delete mode 100644 srcDoc/mkdocs.yml create mode 100644 srcDoc/quick_start.md diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 00000000..e41fcdd1 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,7 @@ +site_name: GITM +theme: + name: material +plugins: + - search +docs_dir: + - srcDoc/ diff --git a/srcDoc/intro.md b/srcDoc/intro.md new file mode 100644 index 00000000..d35c96c9 --- /dev/null +++ b/srcDoc/intro.md @@ -0,0 +1,10 @@ +# Introduction + +## Welcome! + +hi. thanks for visiting this website. here is some info on how to use GITM. + + +Please add more infor to this page. + +After you prepare, it is time to install! Please see the [installation](quick_start.md) page for more info. diff --git a/srcDoc/mkdocs.yml b/srcDoc/mkdocs.yml deleted file mode 100644 index 8b31c52a..00000000 --- a/srcDoc/mkdocs.yml +++ /dev/null @@ -1,3 +0,0 @@ -site_name: GITM -theme: - name: material diff --git a/srcDoc/quick_start.md b/srcDoc/quick_start.md new file mode 100644 index 00000000..e09daf04 --- /dev/null +++ b/srcDoc/quick_start.md @@ -0,0 +1,33 @@ +# Quick Start + +To get started, here is what you need: + +## Requirements + +at a minimum, you need: + +- git +- a fortran compiler (gfortran, ifort, ifx, etc.) +- MPI (~mpich~, openmpi, mvapich, etc.) +- perl (you probably have this) + +## Getting the code + + +do this: + +```shell +git clone git@github.com:GITMCode/GITM.git +cd GITM +``` + +or use https:// if you dont have ssh yet + +## Configuring + +blaaahhhhh + + + + + From c54a2ca26c905b22ddf8e3b0e04bb3928da1a772 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 26 May 2025 18:58:58 -0400 Subject: [PATCH 033/120] lol, moved a config & forgot to update another config --- .readthedocs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index a1202dd3..1e4ab3eb 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -7,7 +7,7 @@ build: python: "3.12" mkdocs: - configuration: srcDoc/mkdocs.yml + configuration: mkdocs.yml # Optionally declare the Python requirements required to build your docs python: From c8a976968b79d07b9570bbf60bca0305c632e1a2 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 26 May 2025 19:00:34 -0400 Subject: [PATCH 034/120] docs_dir is a str, not list. --- mkdocs.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index e41fcdd1..a6906c1c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -3,5 +3,4 @@ theme: name: material plugins: - search -docs_dir: - - srcDoc/ +docs_dir: srcDoc From 94e0d36d123b0af05f64ff92107b5c0b06b93ddb Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 26 May 2025 19:03:00 -0400 Subject: [PATCH 035/120] make index file necessary to serve docs --- srcDoc/intro.md | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 srcDoc/intro.md diff --git a/srcDoc/intro.md b/srcDoc/intro.md deleted file mode 100644 index d35c96c9..00000000 --- a/srcDoc/intro.md +++ /dev/null @@ -1,10 +0,0 @@ -# Introduction - -## Welcome! - -hi. thanks for visiting this website. here is some info on how to use GITM. - - -Please add more infor to this page. - -After you prepare, it is time to install! Please see the [installation](quick_start.md) page for more info. From 8d7d675d8480f82ff53eecf909bd7df596d7b206 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 26 May 2025 19:06:31 -0400 Subject: [PATCH 036/120] make index file necessary to serve docs --- srcDoc/index.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 srcDoc/index.md diff --git a/srcDoc/index.md b/srcDoc/index.md new file mode 100644 index 00000000..d35c96c9 --- /dev/null +++ b/srcDoc/index.md @@ -0,0 +1,10 @@ +# Introduction + +## Welcome! + +hi. thanks for visiting this website. here is some info on how to use GITM. + + +Please add more infor to this page. + +After you prepare, it is time to install! Please see the [installation](quick_start.md) page for more info. From cc8eaadba1e5d8c7686bef8e148e4ee05b6e6a4b Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 26 May 2025 19:12:35 -0400 Subject: [PATCH 037/120] stop using theme. maybe plain is better --- mkdocs.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index a6906c1c..34da785a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,6 +1,6 @@ site_name: GITM -theme: - name: material +#theme: +# name: material plugins: - search docs_dir: srcDoc From 09c1e685d214254e04b9bda7cafbaa7240377bd9 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 26 May 2025 19:15:10 -0400 Subject: [PATCH 038/120] plain not better. try sphinx? --- mkdocs.yml | 3 ++- srcDoc/requirements.txt | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index 34da785a..60649fbd 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,5 +1,6 @@ site_name: GITM -#theme: +theme: + name: sphinx_rtd_theme # name: material plugins: - search diff --git a/srcDoc/requirements.txt b/srcDoc/requirements.txt index 82137fe7..8ada9a4b 100644 --- a/srcDoc/requirements.txt +++ b/srcDoc/requirements.txt @@ -2,3 +2,4 @@ scipy numpy ford mkdocs-material +sphinx_rtd_theme From 8e781e4cad1b11bf65fc3f325cd877fbffed863e Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 26 May 2025 19:18:07 -0400 Subject: [PATCH 039/120] sphinx not available. is readthedocs? --- mkdocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index 60649fbd..1177ff8f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,6 +1,6 @@ site_name: GITM theme: - name: sphinx_rtd_theme + name: readthedocs # name: material plugins: - search From 6b0b0f41b70ea99e9c21cb69d01c05a622cefece Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 27 May 2025 21:32:44 -0400 Subject: [PATCH 040/120] doc: get docs up & running w cool features --- mkdocs.yml | 22 ++++++++++++++++++++-- srcDoc/requirements.txt | 10 ++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 1177ff8f..2cf188d5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,7 +1,25 @@ site_name: GITM theme: name: readthedocs -# name: material + # name: mkdocs + # name: material plugins: - - search + - search # allow for search after being built + - mermaid2 # cool flowcharts + +markdown_extensions: + - pymdownx.extra #footnotes, abbreviations, tables, definitions, etc. + - pymdownx.fancylists # lists continuing after breaking for indentation + - pymdownx.saneheaders #allows for "#text" to not be parsed as a header + - markdown_katex # math + - admonition # note, warning, etc. blocks + - markdown_del_ins # strike-through & insert + - markdown_captions # figure captions. + - pymdownx.superfences: + # make exceptions to highlighting of code: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:mermaid2.fence_mermaid + docs_dir: srcDoc diff --git a/srcDoc/requirements.txt b/srcDoc/requirements.txt index 8ada9a4b..e5f8b679 100644 --- a/srcDoc/requirements.txt +++ b/srcDoc/requirements.txt @@ -1,5 +1,7 @@ -scipy -numpy -ford +mkdocs mkdocs-material -sphinx_rtd_theme +mkdocs-mermai2-plugin +markdown-captions +markdown-del-ins +markdown-katex +pymdown-extensions From 8cd48b7a6fa7d09135a1b14b191d87a3299893b7 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 27 May 2025 21:33:16 -0400 Subject: [PATCH 041/120] update markdown style guide with the cool new features --- srcDoc/markdown_ref.md | 291 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 291 insertions(+) create mode 100644 srcDoc/markdown_ref.md diff --git a/srcDoc/markdown_ref.md b/srcDoc/markdown_ref.md new file mode 100644 index 00000000..ed3dd619 --- /dev/null +++ b/srcDoc/markdown_ref.md @@ -0,0 +1,291 @@ +# Markdown Style Reference + +This document is not a markdown tutorial. It's merely a guide to the features +available on this site. GITM's ReadTheDocs site is built using MkDocs and a +number of plugins. This takes the (relatively) vanilla Markdown of MkDocs and +extends its functionality. + +To develop locally, one can simply install the Python requirements in +`srcDoc/requirements.txt` and then spin up a MkDocs server, previewing the +documentation live! It's very useful. + +```bash +pip install -r srcDoc/requirements.txt +mkdocs serve +``` + +--- + +Table of contents can be inserted with + +```markdown +[TOC] +``` + +For example (ensuring there are newlines before & after): + +[TOC] + +## General Syntax + +Markdown can put *italics* and **bold** in really easily by surrounding the text +with one and two asterisks \*, respectively (i.e. `*italics*` and `**bold**`). +There are \*escape\* characters available too; use a backslash before an +asterisk to have it shown `\*`. For **bold** and **italics**, use three +***asterisks***. + +For a new paragraph, use two line breaks. otherwise it is the same paragraph. + +> we can note that something should be indented with `>` at the beginning of a +> line. + +To mark something for ~~deletion~~, use two tilde `~~`, and to mark for +++insertion++, use two pluses `++`. + +Headers work as one would expect; use a single # for header one, and more #'s +for each sub-level. Horizontal lines can be made with ---, surrounded by +newlines before & after. + +--- + +### Lists + +Lists can be: + +1. Ordered +1. Like this one +5. Which is numbered automatically. + - automatic numbering is nice for ordered lists. Edits can be made without + the need to go back and change every single entry. + - we can nest lists, and switch between ordered/unordered. + + ```python + print("hello world!") + ``` + +6. The list should be smart enough to resume counting after we take a break to + do something, as long as it is indented + +### Code + +Code can be shown either inline: `print("hello world")`, or in a block: + +````md +```python +print("hello world") +``` +```` + +Code blocks' syntax (highlighting) can be set after the three backticks. The +above block uses python syntax. + +Additionally, one can **include** the three backticks in a code block by +surrounding it with a different number of backticks. As a ridiculous example: + +`````md +```` +```python +print("hello world!") +``` +```` +````` + +### Links + +Links are specified with `[link text](the_link)`. The first option is the text +to display, the second is the actual link. For example, [here is the link to the +GITM repository](https:github.com/GITMCode/GITM.git). It is ok to have +linebreaks within the link text. + +## More Complex Syntax + +### Comments, Abbreviations + +Comments use HTML syntax: `` + +Define an abbreviation with: `*[TEXT]: Definition`. Hover over HTML to see its +definition. + + +*[HTML]: Hypertext Markup Language + +That abbreviation will stick around across the entire page, as it is HTML. + +### Footnotes + +We can add a footnote, such as[^1]. Footnotes have a label, specified with +`[^2]`, and that label can be anything we want, for example [^longerfootnote]. + +[^1]: This is footnote content. + +Footnotes are automatically numbered. One can place the footnote definition +anywhere in the document[^bottom]. The footnotes do not need to be defined in +order as long as their labels are unique (i.e. we can put anything we want for a +label, as long as it is unique, `[^aHJpxms]`, for example)[^notbottom]. + +[^notbottom]: This footnote is defined out of order to when it is first + referenced. It affects the numbers given to other footnotes. + +[^longerfootnote]: + + The links back to the text are handled automatically. Hover over the above + text if you do not see an arrow. + + Multi-line comments are the same as body text - they need two newlines. To + continue writing the footnote, text must be indented with 4 spaces or a tab. + + These descriptions can be placed anywhere within the document. + +Footnotes are great for citations! + +## Admonitions + +Admonitions are these fancy boxes: + +!!! tip + Identical to `important` and `hint`. All appear green. + +!!! warning + Here's a warning. new lines need two breaks. + + Here's how to put multiple lines in an admonition + + > Warning, caution, and attention all appear orange. + +!!! error + Synonymous to `danger`, both appear red + +!!! note "custom label" + notes can be given custom labels! + +!!! OnlyTheFirstWordFromTheLabel is shown + Stick to using `!!!note "multi word label"` when possible. + +## Math + +Math can be done inline, differing from LaTex in that we need to use $\` and \`$ +to surround the math. For example, $`\pi \approx \frac{22}{7}`$ is an equation +*inline*. For equation blocks we need to surround it with backticks, like so: + +```math +% comments can be placed in math mode +\begin{align} + E=mc^2 +\end{align} +``` + +For numbered equations, use `\begin{align}` and `\end{align}` surrounding the +equation. These are consistently numbered throughout the document. + +```math +\pi \approx \frac{22}{7} = \mathbf{3.14}28... +``` + +```math +\begin{align} + p(v_i=1|\mathbf{h}) & = \sigma\left(\sum_j w_{ij}h_j + b_i\right) \\ + p(h_j=1|\mathbf{v}) & = \sigma\left(\sum_i w_{ij}v_i + c_j\right) +\end{align} +``` + +## Images + +### Figures + +Insert images with `![caption text](relative/path/to/image)`. The caption will +appear below the image, for example: + +![hmf2 flowchart example figure](Figures/determining_hmF2_flowchart.png) + +This figure was made with the code: + +```md +![hmf2 flowchart example figure](Figures/determining_hmF2_flowchart.png) +``` + +Alternatively, you may not wish to write out the path inline if it may change +later. Having all the paths to figures in one place will make moving things +around later much easier. Figures can be made with a *reference*, then specify the +path later, using: + +```md +Some terrific, fantastic documentation. + +![Description of something cool.][ref1] + +More splendid documentation. + +[ref1]: /path/to/image +``` + +To forgo a caption entirely (they aren't even that useful), just do not include +it in the `![](../path/to/image)`. For example: + +![](Figures/determining_hmF2_flowchart.png) + +See? No caption! It is possibly to define a new style for figures, and to +uniquely number them, but it is probably not worth doing. + +### Flowcharts + +I'm including this because it's cool, but may not be too useful. We can utilize +something called [Mermaid](https://mermaid.js.org/) to make flowcharts with +relatively simple syntax. Some helpful links to get started would be this +[beginner's guide](https://mermaid.js.org/intro/getting-started.html) and the +[live editor](https://mermaid.live/), which allows for live development of a +mermaid chart. + +Charts are put in automatically. + +```mermaid +graph TD + A[Input] --> B[Think] + B --> C[Outcome One] + B --> D[Outcome Two] +``` + +The above example uses: + +````md + +```mermaid +graph TD + A[Input] --> B[Think] + B --> C[Outcome One] + B --> D[Outcome Two] +``` +```` + +Labels can be added to the arrows. The following code has a simple example: + +````md +``` mermaid +graph LR + A[Start] --> B{Error?}; + B -->|Yes| C[Hmm...]; + C --> D[Debug]; + D --> B; + B ---->|No| E[Yay!]; +``` +```` + + +``` mermaid +graph LR + A[Start] --> B{Error?}; + B -->|Yes| C[Hmm...]; + C --> D[Debug]; + D --> B; + B ---->|No| E[Yay!]; +``` + +!!! note + The chart's direction is set with `TD` (top-down) and `LR` (left-right). + + > More complex charts are available. Check the Mermaid documentation for + examples! + +--- + +[^bottom]: This footnote is defined at the bottom of the document. Probably not + the best for making edits! From f6f61a1b9c16a5f8f59384a9f45b39f3aa8e85f1 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 27 May 2025 21:34:19 -0400 Subject: [PATCH 042/120] typo: forgot a d in mermaiD --- srcDoc/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcDoc/requirements.txt b/srcDoc/requirements.txt index e5f8b679..4ebc82de 100644 --- a/srcDoc/requirements.txt +++ b/srcDoc/requirements.txt @@ -1,6 +1,6 @@ mkdocs mkdocs-material -mkdocs-mermai2-plugin +mkdocs-mermaid2-plugin markdown-captions markdown-del-ins markdown-katex From 7ad33a7005baa33754feea34ea2167b4e6d823ad Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 28 May 2025 11:57:39 -0400 Subject: [PATCH 043/120] make index.md presentable --- srcDoc/index.md | 55 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/srcDoc/index.md b/srcDoc/index.md index d35c96c9..df8f46d7 100644 --- a/srcDoc/index.md +++ b/srcDoc/index.md @@ -1,10 +1,57 @@ # Introduction -## Welcome! +Global Ionosphere Thermosphere Model -hi. thanks for visiting this website. here is some info on how to use GITM. +## Welcome +Hi. Thanks for visiting this website. Here is some info on how to use GITM. -Please add more infor to this page. +Please see the [quick start](quick_start.md) page for more info on how to +download, configure, and install GITM. -After you prepare, it is time to install! Please see the [installation](quick_start.md) page for more info. +## Notes for Developers + +Some notes on the doc site: + +- See the [markdown style guide](markdown_ref.md) for info on what features are + available. +- The documentation, presently, looks in `srcDoc/` for any markdown files and + adds them to this site alphabetically. This can be changed later, but filling + the docs out initially will be easier if pages are automatically added. + +--- + +## To Do list for documentation + +Feel free to add to this + +- [ ] Move over the existing latex manual pages + - [ ] Verify that info is correct, relevant, and necessary + - [ ] Organize that information +- [ ] Keep filling out information! + + +### Draft outline for docs + +- welcome page + - Quick overview of what GITM is + - installation & config (super basic) +- Quick start + - more detailed config options + - how to actually run the code +- Running the code + - grid resolution & blocks explained + - what inputs are necessary for what IE models (basic) +- Inputs + - Important and/or frequently changed UAM options + - more details on files necessary for some options +- Outputs + - each output type's variables? + - FAQ + - common issues: + - indices times are wrong + - running with a different compiler than compiled with? + - how do I configure for X system? (known good configs) + - where can I find example input files? (GITMCode/GITM_Input_files) + - where can I find example outputs (CCMC?) + - Can you add this feature? no. You can, or fill out a feature request. From 75878db4135b1cc0049a5468f146ab1a80fdc0fb Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 28 May 2025 11:58:06 -0400 Subject: [PATCH 044/120] add some real content to quickstart.md --- srcDoc/quick_start.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/srcDoc/quick_start.md b/srcDoc/quick_start.md index e09daf04..a3865f96 100644 --- a/srcDoc/quick_start.md +++ b/srcDoc/quick_start.md @@ -8,7 +8,7 @@ at a minimum, you need: - git - a fortran compiler (gfortran, ifort, ifx, etc.) -- MPI (~mpich~, openmpi, mvapich, etc.) +- MPI (~~mpich~~, openmpi, mvapich, etc.) - perl (you probably have this) ## Getting the code @@ -21,13 +21,14 @@ git clone git@github.com:GITMCode/GITM.git cd GITM ``` -or use https:// if you dont have ssh yet +!!! note + Replace `git@github.com:GITMCode/GITM.git` with + `https://github.com/GITMCode/GITM.git` if you don't have ssh set up! ## Configuring -blaaahhhhh - - - - +Use: +```bash +./Config.pl -install [...] +``` From 79c23c956948074ff14636234e4be81034d4bd3e Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 28 May 2025 11:58:24 -0400 Subject: [PATCH 045/120] add a todo list extension --- mkdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/mkdocs.yml b/mkdocs.yml index 2cf188d5..7add9e50 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -11,6 +11,7 @@ markdown_extensions: - pymdownx.extra #footnotes, abbreviations, tables, definitions, etc. - pymdownx.fancylists # lists continuing after breaking for indentation - pymdownx.saneheaders #allows for "#text" to not be parsed as a header + - pymdownx.tasklist - markdown_katex # math - admonition # note, warning, etc. blocks - markdown_del_ins # strike-through & insert From 24a31fcc81c96abac0ee0bc74466400c0507a530 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 28 May 2025 12:08:12 -0400 Subject: [PATCH 046/120] update index w more info on how to develop --- srcDoc/index.md | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/srcDoc/index.md b/srcDoc/index.md index df8f46d7..cc22e363 100644 --- a/srcDoc/index.md +++ b/srcDoc/index.md @@ -9,6 +9,9 @@ Hi. Thanks for visiting this website. Here is some info on how to use GITM. Please see the [quick start](quick_start.md) page for more info on how to download, configure, and install GITM. + +--- + ## Notes for Developers Some notes on the doc site: @@ -17,11 +20,31 @@ Some notes on the doc site: available. - The documentation, presently, looks in `srcDoc/` for any markdown files and adds them to this site alphabetically. This can be changed later, but filling - the docs out initially will be easier if pages are automatically added. + the docs out initially will be easier if pages are automatically added. But + that's why there is a page for the development team. +- `index.md` is the "home page". The rest should be self-explanatory ---- +Writing docs can be tricky. Formatting is sometimes not what you would expect. +For example, we *need* four spaces to indent something, not just two. I tried +changing this & couldn't! + +You can use Python to locally host the doc site which will auto-update when any +files are changed. One command to configure, one to host. When first starting, +either create a vitrual/conda environment for the docs, or don't, and from the +root of the repo run: `pip install -r srcDoc/requirements.txt`. To actually host +the docs, run: -## To Do list for documentation +```bash +mkdocs serve +``` + +And it should be auto-magic. open the link in your browser. + +!!! warning + Make sure to run this from the root of the repository! Otherwise it won't + work! + +### To Do list for documentation Feel free to add to this @@ -33,6 +56,9 @@ Feel free to add to this ### Draft outline for docs +This is off the cuff & is open to feedback. Just change it to what you want. A +few sections here are repetitive and don't need to be. + - welcome page - Quick overview of what GITM is - installation & config (super basic) From dbda8f4c7c176ac265d4b4a0f3a73f6441d1ad43 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 28 May 2025 13:38:46 -0400 Subject: [PATCH 047/120] doc: initial commit of outputs.md - same as latex has a todo section for stuff to be changed in time... --- srcDoc/outputs.md | 1155 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1155 insertions(+) create mode 100644 srcDoc/outputs.md diff --git a/srcDoc/outputs.md b/srcDoc/outputs.md new file mode 100644 index 00000000..6598161f --- /dev/null +++ b/srcDoc/outputs.md @@ -0,0 +1,1155 @@ +# Outputs + +#TODO: + +- [ ] Fix the links +- [ ] remove idl code +- [ ] probably(?) remove the python stuff too +- [ ] Fix and/or remove images +- [ ] update with other output types: + - [ ] 3D*, 2D* + - [ ] satellite outputs + - [ ] empirical models only! + + +Now that you have managed to successfully complete a GITM run you've +found yourself with a bunch of output files. All of the GITM output is +in mks units and this data is contained within several files located in +the `UA/data` directory, as was previously discussed in +Chapter [\[quickstart.ch\]](#quickstart.ch){reference-type="ref" +reference="quickstart.ch"} +Section [\[post_process.sec\]](#post_process.sec){reference-type="ref" +reference="post_process.sec"}. You will have found yourself with several +`iriOut_*.dat` files, a `log*.dat` file, and many `.bin` files in +whichever formats you specified in SAVEPLOT (see +Chapter [\[input.ch\]](#input.ch){reference-type="ref" +reference="input.ch"} +Section [\[def_out.sec\]](#def_out.sec){reference-type="ref" +reference="def_out.sec"}). The `iriOut_*.dat` files are required by the +IRI model and not typically used when analyzing the outcome of the GITM +run. + +The log file provides useful information about the run, such as whether +a restart was performed, which physical processes were used, and a list +of the universal time, time-step, neutral temperature ranges (T), solar +and geomagnetic indices, and the neutral velocity (VV) ranges for each +iteration. This file can be very useful when sharing runs with other +users, when revisiting an old run, or merely ensuring that GITM +performed as expected. An example log file is provided below: + + ## Inputs from UAM.in + # Resart= F + # Eddy coef: 100.000 Eddy P0: 0.020 Eddy P1: 0.003 Eddy Scaling: 1.000 + # Statistical Models Only: F Apex: T + # EUV Data: TFile: + fismflux.dat + # AMIE: none + none + # Solar Heating: T Joule Heating: T Auroral Heating: T + # NO Cooling: T O Cooling: T + # Conduction: T Turbulent Conduction: T Updated Turbulent Conduction: T + # Pressure Grad: T Ion Drag: T Neutral Drag: T + # Viscosity: T Coriolis: T Gravity: T + # Ion Chemistry: T Ion Advection: T Neutral Chemistry: T + + #START + iStep yyyy mm dd hh mm ss ms dt min(T) max(T)... + ...mean(T) min(VV) max(VV) mean(VV) F107 F107A By Bz Vx... + ...HP HPn HPs SubsolarLon SubsolarLat SubsolarVTEC + 2 2011 9 23 0 0 2 297 2.2979 168.75192 1062.87354... + ...933.09984 -48.19362 524.93645 1.01910 159.3 127.9 -4.6 0.5 406.9... + ...11.1 14.4 15.5 3.14145 -0.37655 45.73188 + . + . + . + +The 3DALL output binary files can contain the following atmospheric +quantities: + +- **Altitude:** Altitude from the surface of the planet (m) + +- **Ar:** Argon density (m$`^{-3}`$) + +- **Ar Mixing Ratio:** Argon mixing ratio + +- **CH4 Mixing Ratio:** Methane mixing ratio + +- **Conduction:** Heat conduction + +- **EuvHeating:** EUV Heating rate + +- **H:** Hydrogen density (m$`^{-3}`$) + +- **H!U+!N:** H$`^+`$ density (m$`^{-3}`$) + +- **H2 Mixing Ratio:** Molecular Hydrogen mixing ratio + +- **HCN Mixing Ratio:** Hydrogen Cyanide mixing ratio + +- **He:** Helium density (m$`^{-3}`$) + +- **He!U+!N:** He$`^+`$ density (m$`^{-3}`$) + +- **Heaing Efficiency:** Heating efficiency + +- **Heat Balance Total:** Heat balance total + +- **Latitude:** Geographic latitude (degrees) + +- **Longitude:** Geographic longitude (degrees) + +- **N!D2!N:** N$`_2`$ density (m$`^{-3}`$) + +- **N!D2!U+!N:** N$`_2^+`$ density (m$`^{-3}`$) + +- **N!U+!N:** N$`^+`$ density (m$`^{-3}`$) + +- **N(!U2!ND):** N($`^2`$D) density (m$`^{-3}`$) + +- **N(!U2!NP):** N($`^2`$P) density (m$`^{-3}`$) + +- **N(!U4!NS):** N($`^4`$S) density (m$`^{-3}`$) + +- **N2 Mixing Ratio:** Molecular nitrogen mixing ratio + +- **NO:** Nitrious Oxide density (m$`^{-3}`$) + +- **NO!U+!N:** NO$`^+`$ density (m$`^{-3}`$) + +- **O!D2!N:** O$`_2`$ density (m$`^{-3}`$) + +- **O!D2!U+!N:** O$`_2^+`$ density (m$`^{-3}`$) + +- **O(!U1!ND):** O($`^1`$D) density (m$`^{-3}`$) + +- **O(!U2!ND)!U+!N:** O($`^2`$D) density (m$`^{-3}`$) + +- **O(!U2!NP)!U+!N:** O($`^2`$P) density (m$`^{-3}`$) + +- **O(!U3!NP):** O($`^3`$P) density (m$`^{-3}`$) + +- **O_4SP\_!U+!N:** O($`_4`$SP)$`^+`$ density (m$`^{-3}`$) + +- **RadCooling:** Radiative Cooling rate + +- **Rho:** Neutral density (m$`^{-3}`$) + +- **Temperature:** Neutral temperature (K) + +- **V!Di!N (east):** Ion velocity towards geographic East (m s$`^{-1}`$) + +- **V!Di!N (north):** Ion velocity towards geographic North (m + s$`^{-1}`$) + +- **V!Di!N (up):** Vertical ion velocity (m s$`^{-1}`$) + +- **V!Dn!N (east):** Neutral velocity towards geographic East (m + s$`^{-1}`$) + +- **V!Dn!N (north):** Neutral velocity towards geographic North (m + s$`^{-1}`$) + +- **V!Dn!N (up):** Vertical neutral velocity (m s$`^{-1}`$) + +- **V!Dn!N (up,N!D2!N):** Vertical N$`_2`$ velocity (m s$`^{-1}`$) + +- **V!Dn!N (up,N(!U4!NS)):** Vertical N($`^4`$S) velocity (m s$`^{-1}`$) + +- **V!Dn!N (up,NO):** Vertical NO velocity (m s$`^{-1}`$) + +- **V!Dn!N (up,O!D2!N):** Vertical O$`_2`$ velocity (m s$`^{-1}`$) + +- **V!Dn!N (up,O(!U3!NP)):** Vertical O($`^3`$P) velocity (m s$`^{-1}`$) + +- **e-:** electron density (m$`^{-3}`$) + +- **eTemperature:** electron temperature (K) + +- **iTemperature:** ion temperature (K) + +- **time:** Universal time + +There are many routines available to process and analyze the GITM binary +files. The majority of these routines are written in IDL and are +available in the `srcIDL` directory within the GITM model directory. +Currently 50 routines have been saved in this directory and more are +under development. Alternatively, python routines are currently being +developed and these are located in the `srcPython` directory. Please not +that when using the IDL reader the universal time is read in as epoch +seconds from January 1, 1965 00:00 UT, while when using the python +reader, the time is imported as a datetime object. + +# IDL {#idl.sec} + +Here is an complete list with some description of the IDL processing and +visualization routines currently available. Please feel free to update +this section for other GITM users when you CVS your vetted GITM +processing routines. + +### gitm_read_bin + +This is a routine to read a GITM bin file into IDL. This is great when +you want to get a handle on the data and experiment with different +visualization methods. + +### thermo_plotsat + +This is the most commonly used routine to plot the 1D GITM results. It +can also be used to plot satellite files and other 1D simulations. It is +relatively straight forward to use, but experimentation can be help. +This is an actual program, so you have to `.run` it. + +### thermo_gui + +This is a someone simplistic graphical user interface code for plotting +3D results. The filename has to be entered manually in the upper left. +You then have to press the button for loading the file. Variables appear +on the left side, and you can select which one you want to plot. You +then select which of the available planes you would like to look at +(lat/lon, lat/alt, or lon/alt) or scroll through the options. This +interface allows you to add wind vectors, plot in polar coordinates, and +plot the log of the variable. + +### thermo_batch_new + +This code will let you look at at 3D files exactly the same way as +thermo_gui, but is all scripted. There are a few features that this has +that thermo_batch doesn't have: + +1. You can use wildcards for the file name, so that a list of files can + be read. The postscript file names created for each figure will be + differentiated by appending numbers sequentially so that no figures + are overwritten. + +2. When plotting a lat/alt plane, you can do a zonal average. + +3. You can do a global average. + +### thermo_plotter + +All of the above plotting codes will only plot one plot per page. This +code will plot many more than one plot per page. You can plot multiple +variables on the same page, or multiple files with the same variable, or +both. + +### Other IDL Routines + +Please feel free to provide a description of these routines so that GITM +users do not waste their time rewriting code that already exists. + +::: multicols +3 + +- **ask** + +- **c_a_to_r** + +- **c_a_to_s** + +- **chopr** + +- **closedevice** + +- **c_r_to_a** + +- **c_s_to_a** + +- **get_position** + +- **makect** + +- **mklower** + +- **mm** + +- **plotct** + +- **plotdumb** + +- **plotmlt** + +- **pos_space** + +- **read_thermosphere_file** + +- **setdevice** + +- **thermo_batch** + +- **thermo_calcforce** + +- **thermo_champ** + +- **thermo_compare** + +- **thermo_compare_time** + +- **thermo_convert_champfiles** + +- **thermo_guvi** + +- **thermo_magequator** + +- **thermo_make_summary** + +- **thermo_mkguvisat** + +- **thermo_mksatsave** + +- **thermo_mksave** + +- **thermo_mktec** + +- **thermo_on2** + +- **thermo_plotdist** + +- **thermo_plotlog** + +- **thermo_plot_new** + +- **thermo_plot** + +- **thermo_plotsat2** + +- **thermo_plotsat_constalt_ON2** + +- **thermo_plotsat_constalt** + +- **thermo_plotvectors** + +- **thermo_readsat** + +- **thermo_sigma** + +- **thermo_superposed** + +- **thermo_tec** + +- **thermo_temp** + +- **tostr** +::: + +# Python {#python.sec} + +This section provides an almost complete list of the vetted GITM python +routines. These routines require that you use PyBats, a module included +in SpacePy. This is a library developed for space physics applications +by the scientists at Los Alamos and can be downloaded for free at: +`http://spacepy.lanl.gov` + +Another library, Basemap, is required for certain plotting routines. +Basemap is a part of the Matplotlib Toolkit and can be installed using +Fink, Macports, or downloaded at: `http://matplotlib.org/basemap/` + +Yet another library, Pysolar, is used to calculate the solar position. +You don't *need* to download Pysolar to run any of the GITM plotting +scripts, but it does expand the functionality. Pysolar is documented at +Github and can be downloaded at: `http://www.pysolar.org` + +Python scripts that create movies rely on external programs to do so. +The scripts included here use FFmpeg, which can be installed using Fink, +Macports, or downloaded at: `http://http://www.ffmpeg.org/` + +If you have questions about these routines or are at the University of +Michigan and want to start using Python, Dr. Welling is the man to see. +The source code behind the PyBats GITM routines are also located in +`GITM2/srcPython`. + +The following programs include the vetted python routines. The examples +shown are meant to be run in ipython, an interactive command-line +interface for python. The terminal window that is running ipython should +be located in the `GITM2/srcPython` directory. The test file for the +example code is one of the files output after running the default +`UAM.in` file. + +### gitm.py + +GITM is a PyBats submodule that handles input and output from GITM. It +can be helpful for those wishing to write their own GITM processing +routines but doesn't contain any analysis or visualization routines. + +Once you have downloaded and installed Spacepy, the gitm submodule can +be accessed via: + +Though to be sure that you have the latest version it is best to CVS the +latest version of `gitm.py` and load: + +while running the `GITM2/srcPhython` directory. This module contains the +following routines: + +- **GitmBin:** A data class and routine to load a GITM output bin + file, based on the PyBats data container class PbData. There are two + keywords arguements that may be associated with this input, + *ionfile*, and *varlist*. The first keyword, *ionfile*, takes a + 3DION file as input, assigns an attribute called 'ionfile' to the + data class, and runs one of the functions called **calc_magvel** to + calculate the ion and neutral velocities in magnetic coordinates. + The second keyword, *varlist*, takes a list of atmospheric + quantities such as those listed at the beginning of this chapter. + More variables may always be added from the same file that created a + data class by calling the function **append_data**. Geographic + position in degrees and local time are also added to the output, + regardless of what variables are specified. A 3DION file may also be + associated with the output GITM class after the fact by assigning a + filename to the attribute 'ionfile' and the magnetic velocity + quantities obtained by running **calc_magvel**. + + - **append_data:** A routine to append variables specified in an + input list. These are obtained from the file specified in the + 'file' attribute. + + - **append_units:** A routine to append unit, scale, and name + attributes to the variable keys in the data class. Runs + automatically with **GitmBin**. + + - **calc_deg:** A routine to compute latitude and longitude in + degrees instead of radians. Runs automatically with **GitmBin**. + + - **calc_lt:** A routine to compute local time from universal time + and longitude. Runs automatically with **GitmBin**. + + - **calc_magdi:** A routine to compute the magnetic inclination + and declination from the magnetic field expressed in + East-North-Vertical coordinates. Runs automatically with + **GitmBin** when the appropriate inputs are present. + + - **calc_magvel:** A routine to compute ion and neutral velocities + in magnetic coordinates. Runs automatically with **GitmBin** if + the *ionfile* keyword is specified. + + - **calc_tec:** A routine to calculate the VTEC from any GITM data + structure that has altitude and electron density. + + - **calc_2dion:** A routine to calculate the VTEC (if it hasn't + been done already), $`h_mF_2`$, and $`N_mF_2`$ from any GITM data + structure that has altitude and electron density + +You can load a GITM binary file by entering the following commands. +Comments are preceded by a '\#'. + + In [1]: import spacepy + In [2]: import gitm # Load the local version of gitm.py, which may be more up-to-date + In [3]: gdata = gitm.GitmBin(`3DALL_t021124_000000.bin') # example binary file + In [4]: gdata.attrs + Out[4]: + {`endian': `big', + `file': `3DALL_t021124_000000.bin', + `nAlt': 54, + `nLat': 22, + `nLon': 22, + `nVars': 39, + `version': 3.13} + +The method used by **calc_2dion** to compute the $`h_mF_2`$ (height of the +F$`_2`$ region density peak) does more than just look for the height of +the electron maximum at the specified locations. Instead it performs a +few checks to ensure that the peak density lies within an altitude range +consistent with the F region and is not an edge artifact. This process +is outlined in Figure [1](#hmf2_flowchart.fig){reference-type="ref" +reference="hmf2_flowchart.fig"}. + +
+
+ +
+
Process for finding the hmF2 +from a GITM electron density altitude profile.
+
+ +One of the intermediate steps in +Figure [1](#hmf2_flowchart.fig){reference-type="ref" +reference="hmf2_flowchart.fig"} is to find the inflection points in the +altitude profile of electron density. +Figure [2](#hmf2_profile.fig){reference-type="ref" +reference="hmf2_profile.fig"} shows an example of an electron density +profile with no local maxima. To determine the height of the F$`_2`$ peak, +the height derivative of the electron density profile is computed and +local minima along the profile located. These local minima correspond to +inflection points in the electron density profile, and can be used to +locate a reasonable $`h_mF_2`$. + +
+
+ +
+
Electron density profile (red) and height derivative of the +electron density profile (blue) for an instance where GITM does not show +a clear F2 peak. The hmF2 +is identified by choosing the inflection point (local minima from the +height derivative of the electron density profile) with the largest +electron density (dark grey line). The light grey lines show the +remaining locations of inflection points.
+
+ +### gitm_time.py + +gitm_time has not yet been incorporated into PyBats, as it is actively +being developed. This module contains the following routines: + +- **GitmTime:** A data class and routine to load multiple GITM output + binaries into a structure that includes a universal time (UT) + dimension. All data types and attributes provided by GitmBin are + provided in this data class. + + - **appendgitm:** Add another GitmBin object to an existing + GitmTime object. This routine is also be used to create a + GitmTime object. + + - **appendobs:** Add any type of data to an existing GitmTime + object. The data can be directly appended or matched to the + existing GitmTime data. Three match options are available: + nearest neighbor, running average, and running median. The + latter two options compute a central value and standard + deviation using a specified location/time window about each + GitmTime data point. + + - **sat_dateloc_ticks:** Define axis ticks that include all the + information necessary to know where measurements lie in + spacetime. This is most useful when plotting data along a + satellite orbit. + +- **load_multiple_gitm_bin:** A routine to load a list of GITM output + binary files into GitmBin data structures. The output is a list of + the GitmBin structures, where each element in the list contains the + data from a GITM output binary. + +- **set_sat_dateloc_label:** Create a label for the ticks created by + GitmTime.sat_dateloc_ticks. Outputs the label onto a plot on the + right end of the x-axis. + +You can load multiple GITM binary files into a data structure with UT +dependence by entering the following commands. Commands outside of +ipython are preceded by a `$`. Again, the output files used are +produced by running the default `UAM.in` file. + + $ ls 3DALL_t021124_000* > test.list + $ ipython + In [1]: import spacepy + In [2]: import gitm # Load the local version of gitm.py, which may be more up-to-date + In [3]: import gitm_time as gt + In [4]: gtdata = gt.GitmTime(`test.list') + In [5]: print gtdata['time'][:] + [datetime.datetime(2002, 11, 24, 0, 0) + datetime.datetime(2002, 11, 24, 0, 5)] + In [6]: print gtdata['dLon'][0,:,10,27] + [ -30. -10. 10. 30. 50. 70. 90. 110. 130. 150. 170. 190. + 210. 230. 250. 270. 290. 310. 330. 350. 370. 390.] + In [7]: print gtdata['dLat'][0,10,:,27] + [-105. -95. -85. -75. -65. -55. -45. -35. -25. -15. -5. 5. + 15. 25. 35. 45. 55. 65. 75. 85. 95. 105.] + In [8]: print gtdata['Altitude'][0,10,10,:] + [ 96660.90047544 98330.45023772 100000. 101669.54976228 + 103348.94180562 105050.15497984 106788.53042153 108584.61276626 + 110467.61429397 112482.48190265 114698.91401856 117219.51380361 + 120200.6752566 123855.40706002 128245.43857411 133349.83464183 + 139220.53740507 145894.02746965 153389.42319611 161708.33330952 + 170836.59866663 180746.14929878 191399.58798926 202753.75931196 + 214763.18484817 227382.89781152 240569.83529396 254283.5502381 + 268486.11667059 283141.61144778 298215.46358093 313673.89525175 + 329480.19139848 345605.83193525 362018.21624294 378685.73558327 + 395578.19775965 412667.22510966 429926.74623085 447332.78448625 + 464864.02590453 482501.63589793 500229.1662886 518032.39821451 + 535899.14534895 553819.03817939 571783.3052721 589784.56266012 + 607816.61836022 625874.29578468 643953.27746286 662049.96890339 + 680161.38144647 698272.79398955] + +### gitm_plot_rout.py + +Common routines used to format and analyze GITM data. + +- **choose_contour_map:** A routine to choose an appropriate color map + based on whether the plot will be black and white or color, and + whether data data range will be centered about zero or not. + +- **add_colorbar:** Add a color bar to a contour plot. + +- **find_order_of_magnitude:** Find the order of magnitude of a + specified number. + +- **center_polar_cap:** Adjust radial coordinates to produce a + centered polar plot. Necessary for the northern hemisphere, where + polar plots assume the radial (latitude) coordinates should be + centered at zero instead of 90$`^\circ`$. This routine does not depend + on SpacePy. + +- **find_data_limits:** Find the upper and lower limits for a + specified data key in a list of GITM data structures at a specified + location (either single indices or the entire range are permitted + for latitude, longitude, and altitude). + +- **find_data_limits_irange:** Find the upper and lower limits for a + specified data key in a list of GITM data structures at a specified + location range (upper and lower limits or the entire range are + permitted for latitude, longitude, and altitude). + +- **find_data_limits_ivalues:** Establish the appropriate axis limits + for a list of GitmBin files at a range or specific latitude, + longitude, or altitude. + +- **glon_to_localtime:** Compute the local time given a longitude and + universal time. + +- **localtime_to_glon:** Find the longitude at a specified universal + time and local time. + +- **find_lon_lat_index:** Find the indexes for the location closest to + a specified latitude and longitude. + +- **retrieve_key_from_web_name:** Find a data key given a + website-friendly version of data key names. + +- **find_alt_index:** Find the index closest to the specified + altitude. Altitude may be specified in km or m. + +- **match_cindi_key:** A routine to retrieve a CINDI data key from a + GITM key or vice versa. + +- **add_geomagnetic_equator:** A routine to add a line showing the + geomagnetic equator (specified by IGRF-10) to an existing plot. Line + style and color may be specified. + +- **add_subsolar_point:** A routine to find the location of the + subsolar point at a specified Universal Time using the Pysolar + routines. Returns the geographic location of the point and will also + add a marker to a plot. + +- **add_solar_terminator:** Computes the location of the solar + terminator using the Pysolar routines. Returns numpy arrays of the + geographic coordinates of the solar terminator and will also add a + line denoting the solar terminator to a plot. + +- **find_sunside_twilight_sza:** A routine to find the maximum angular + distance between the solar terminator and the sunlight side with + conjugate flux tube feet in darkness using Pysolar routines. The + solar zenith angle corresponding to the sunlight boundary is + returned. The entire day is searched to identify the sunlight + boundary given any degree of magnetic declination. + +- **create_contour_input_array:** Creates contour input at a specified + location between GITM grid points. + +- **create_linear_input_array:** Creates linear input at a specified + location between GITM grid points. + +- **get_meq_offset:** Find the offset in degrees between the + geographic and geomagnetic equators at a specified longitude. + +This example shows how the index for a specified altitude can be found. +Note that GITM saves altitude in meters. + + In [1]: import spacepy + In [2]: import gitm + In [3]: import gitm_plot_rout as gpr + In [4]: gdata = gitm.GitmBin(`3DALL_t021124_000000.bin') + In [5]: ialt = gpr.find_alt_index(gdata, 10, 10, 250.0, "km") + In [6]: print ialt, gdata['Altitude'][10,10,ialt] + 27 254283.550238 + +### solar_rout.py + +Routines that use Pysolar to find the location of the solar terminator +and subsolar point. + +- **subsolar_point:** Finds the geographic location of the subsolar + point at a specified Universal Time. + +- **lat_lon2spherical_xyz:** Converts latitude and longitude to + spherical coordinates. Assumes a spherical earth. + +- **spherical_xyz2lat_lon:** Converts from spherical coordinates to + geographic latitude and longitude, assuming a spherical earth. + +- **get_solar_terminator_xyz_matrix:** Finds the location of the solar + terminator in spherical coordinates. + +- **get_terminator_lat_lon_coordinates:** Finds the location of the + solar terminator in geographic coordinates using input from a + solar-oriented spherical coordinate system. + +- **get_solar_terminator_lat_lon:** Finds the location of the solar + terminator at a specified time in geographic coordinates. + +### gitm_loc_rout.py + +Routines used to find certain locations or values, as well as routines +to align or match points in different data sets. + +- **find_nearest_location:** A routine to find the nearest neighbor in + a 1, 2, or 3D coordinate system. + +- **find_nearest_value:** A routine to find the nearest neighbor to a + specified value. + +- **find_nearest_datetime:** A routine to find the nearest neighbor + between datetime objects. + +- **match_running_average:** Provide running averages at specified + times and locations. + +- **match_running_median:** Provide running medians at specified times + and locations. + +- **gitm_inst_loc:** A routine to align GITM and instrument data. + +- **gitm_net_loc:** A routine to align GITM and data from a large + network of instruments. + +- **gitm_time_obs_loc:** A routine to find, through interpolation, the + GITM value at a specific observation location when only one spatial + coordinate needs to be aligned. + +### gitm_3D_global_plots.py + +Routines to build and output GITM output variable contour (recommended) +or scatter plots over a geographic range. Several different standard +plot formats are available, and routines useful for creating custom +figures are also included. The Earth's continental boundaries may be +included in any output figure. If they are, shading in the night time +region of the globe may also be included. + +- **gitm_single_3D_image:** This is a basic visualization routine that + creates a filled contour plot of a single output variable from a + GITM 3D at a specified altitude or 2D bin file. The output variable + is plotted as a function of latitude and longitude over the entire + globe, though the latitude range may be limited. The output plot may + be polar or rectangular and if the rectangular option is chosen, the + geomagnetic equator may also be included in the output figure. + Sample output of the electron temperature is shown in + figure [3](#gitm_3D_global_plots.fig){reference-type="ref" + reference="gitm_3D_global_plots.fig"} (a) and (b). + +- **gitm_single_nsglobal_3D_image:** A quick way to examine GITM + output at both poles. This routine creates two polar contour plots + centered at the geographic northern and southern poles for a single + output variable from a GITM 3D at a specified altitude or 2D bin + file. The equatorial and polar latitude boundaries may both be + specified, though they cannot change between hemispheres. Sample + output of the electron temperature is shown in + figure [3](#gitm_3D_global_plots.fig){reference-type="ref" + reference="gitm_3D_global_plots.fig"} (c) + +- **gitm_global_3D_snapshot:** A snapshot of a single GITM output over + the entire globe. This routine creates two polar contour plots + centered at the geographic northern and southern poles and extending + to a specified latitude and a single rectangular plot containing the + latitudes equatorward of this point for a single output variable + from a GITM 3D at a specified altitude or 2D bin file. The + geomagnetic equator may also be included in the output figure. + Sample output of the electron temperature is shown in + figure [3](#gitm_3D_global_plots.fig){reference-type="ref" + reference="gitm_3D_global_plots.fig"} (d) + +- **gitm_mult_3D_slices:** This routine creates a single plot + containing multiple global contours of a GITM output variable from a + 3D or 2D bin file at a list of specified altitudes. These plots may + be either polar or rectangular, with or without the geomagnetic + equator, and within a specified latitude range. Sample output of the + electron temperature is shown in + figure [4](#gitm_3D_mult_plots.fig){reference-type="ref" + reference="gitm_3D_mult_plots.fig"}. + +
+
+ +
+
GITM electron temperature at 456.63 km altitude for: (a) +northern latitudes, (b) over the entire globe, (c) over the entire +globe, as viewed from the poles, and (d) as a global +snapshot.
+
+ +
+
+ +
+
GITM electron temperature at seven altitude slices for (a) +northern latitudes and (b) the entire globe.
+
+ +This example shows how to reproduce +Figure [3](#gitm_3D_global_plots.fig){reference-type="ref" +reference="gitm_3D_global_plots.fig"} (a). + + In [1]: import spacepy + In [2]: import gitm + In [3]: import gitm_3D_global_plots as g3d + In [4]: import matplotlib.pyplot as plt + In [5]: plt.ion() # This makes the plotting happen interactively + In [6]: gdata = gitm.GitmBin(`3DALL_t021124_000000.bin') + In [7]: title = "%s UT" % (gdata[`time']) + In [8]: f = g3d.plot_single_3D_image("polar", "eTemperature", gdata, title, + "example_polar_plot.png", True, 27, 90, 0) + +### plot_3D_global.py + +Routines to build contour or scatter plots over a geographic range. +Several different standard plot formats are available, and routines +useful for creating custom figures are also included. The Earth's +continental boundaries may be included in any output figure. If they +are, shading in the night time region of the globe may also be included. +Input data must be provided in separate numpy arrays (1D or 2D for +scatter plots, 2D for contour plots). + +- **plot_single_3D_image:** This is a basic visualization routine that + creates a filled contour or a colored scatter plot of a single + output variable. The output variable is plotted as a function of + latitude and longitude over the entire globe, though the latitude + range may be limited. The output plot may be polar or rectangular + and if the rectangular option is chosen, the geomagnetic equator may + also be included in the output figure. If the polar option is used, + the latitude range cannot extend beyond $`\pm`$ 90$`^\circ`$. If the + rectangular option is used, the geomagnetic equator may also be + plotted. + +- **plot_single_nsglobal_3D_image:** A quick way to examine a variable + at both poles. This routine creates two polar contour or scatter + plots centered at the geographic northern and southern poles for a + single output variable. The equatorial and polar latitude boundaries + may both be specified, though they cannot change between + hemispheres. + +- **plot_global_3D_snapshot:** A snapshot of an output variable over + the entire globe. This routine creates two polar contour or scatter + plots centered at the geographic northern and southern poles and + extending to a specified latitude as well as a single rectangular + plot containing the latitudes equatorward of this point. The + geomagnetic equator may be output over the data. + +- **plot_mult_3D_slices:** This routine creates a single plot + containing multiple global contour or scatter plots for a single + variable at specific indices (corresponding to different altitude, + universal times, *et cetera*). These plots may be either polar or + rectangular (with or without the geomagnetic equator). Sample output + of the electron temperature is shown in + figure [4](#gitm_3D_mult_plots.fig){reference-type="ref" + reference="gitm_3D_mult_plots.fig"}. The numpy arrays containing the + data may be 2D or 3D for scatter plots or 3D for contour plots. Any + dimension may contain the indices to iterate over for the + subfigures. + +- **plot_nsglobal_subfigure:** This routine creates a subfigure with + two polar contour or scatter plots centered at the geographic + northern and southern poles for a single output variable. The + equatorial and polar latitude boundaries may both be specified, + though they cannot change between hemispheres. This is used by + plot_single_nsglobal_3D_image and may also be used to create a + subplot with this format. + +- **plot_snapshot_subfigure:** This routine creates a subfigure with + two polar dials and a rectangular region showing the equatorial + latitudes for a single output variable. This is used by + plot_global_3D_snapshot and may also be used to create a subplot + with this format. + +- **plot_rectangular_3D_global:** This routine plots a single + rectangular filled contour or colored scatter for an output variable + as a function of latitude and longitude. Options exist to control + the colorbar, ticks, labels, and more. A handle to the contour plot + is returned to allow the output to be further manipulated depending + on what other subplots are included in the output figure. + +- **plot_polar_3D_global:** This routine plots a single polar filled + contour for a GITM output variable at a specified altitude index as + a function of latitude and longitude. Title, colorbar, labels, and + more may be specified using input options. A handle to the contour + plot is returned to allow the output to be further manipulated + depending on what other subplots are included in the output figure. + The longitude at the top of the plot may also be specified, this + allows one to ensure a specific local time is always located at the + top of the dial using a routine like **localtime_to_glon**. + +### gitm_alt_plots.py + +Routines to build and output GITM output variable linear and contour +plots over an altitude range. Several different standard plot formats +are available, and routines useful for creating custom figures are also +included. + +- **gitm_single_alt_image:** Creates a single linear or contour + altitude plot. + +- **gitm_mult_alt_image:** Creates a figure with multiple linear or + contour altitude plots. + +- **gitm_alt_slices:** Creates a figure with a contour plot showing + the altitude dependence of a quantity as a function of latitude or + longitude with several linear altitude slices at specified + locations. An example is shown in + figure [5](#gitm_alt_slices.fig){reference-type="ref" + reference="gitm_alt_slices.fig"} + +
+
+ +
+
GITM electron temperature at a constant longitude with six +latitude slices.
+
+ +This example shows how to reproduce +Figure [5](#gitm_alt_slices.fig){reference-type="ref" +reference="gitm_alt_slices.fig"}. + + In [1]: import spacepy + In [2]: import gitm + In [3]: import gitm_alt_plots as gap + In [4]: import gitm_plot_rout as gpr + In [5]: import matplotlib.pyplot as plt + In [6]: plt.ion() # This makes the plotting happen interactively + In [7]: gdata = gitm.GitmBin(`3DALL_t021124_000000.bin') + In [8]: title = "%s UT" % (gdata[`time']) + In [9]: lat_index = list() + In [10]: lon_index = list() + In [11]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, -65.0, "degrees") + In [12]: lon_index.append(ilon) + In [13]: lat_index.append(ilat) + In [14]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, -45.0, "degrees") + In [15]: lat_index.append(ilat) + In [16]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, -5.0, "degrees") + In [17]: lat_index.append(ilat) + In [18]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, 5.0, "degrees") + In [19]: lat_index.append(ilat) + In [20]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, 45.0, "degrees") + In [21]: lat_index.append(ilat) + In [22]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, 65.0, "degrees") + In [23]: lat_index.append(ilat) + In [24]: f = gap.plot_alt_slices("eTemperature", gdata, lat_index, lon_index, + title, "example_alt_plot.png") + +### plot_alt_profiles.py + +Routines to build and output linear and contour plots over an altitude +range. Several different standard plot formats are available, and use +any numpy array as input. + +- **plot_single_alt_image:** Creates a single linear or contour + altitude plot. + +- **plot_mult_alt_image:** Creates a figure with multiple linear or + contour altitude plots. + +- **plot_alt_slices:** Creates a figure with a contour plot showing + the altitude dependence of a quantity as a function of latitude or + longitude with several linear altitude slices at specified + locations. + +- **plot_linear_alt:** Plots the the linear altitude dependence of a + quantity, with altitude on the y-axis. + +- **plot_3D_alt:** Plots the altitude dependence of a quantity as the + function of another spatiotemporal coordinate with the + spatiotemporal coordinate on the x-axis, altitude on the y-axis, and + the desired quantity as a color contour. + +### gitm_comparison_plots.py + +Routines to make plots that compare GITM data with observations. The +observational sources include satellites, ground-based receivers, and +receiver networks. + +- **extract_data_matched_arrays:** Extract points from matched data + arrays for elements where neither array contains a specified 'bad' + value. + +- **extract_gitm_time_arrays:** Routine to extract all positions with + valid data from a GitmTime object and construct numpy arrays. A + single universal time, longitude, latitude, and/or altitude may be + specified. + +- **plot_net_gitm_comp:** A routine to create a plot comparing 2D GITM + data (such as VTEC or $`h_mF_2`$) to observations taken from a network + of instruments over the globe. The map format may be rectangular, + polar, or a combination (provided by plot_nsglobal_subfigure or + plot_snapshot_subfigure). The top subfigure shows the observations + as a scatter figure, the middle subfigure shows the GITM data as a + contour, and the bottom subfigure shows the difference between the + two as a scatter plot. The difference must be computed outside of + this program, and so may be the difference, absolute difference, + percent difference, or any other type of comparison. An example is + shown in Figure [6](#teccomp.fig){reference-type="ref" + reference="teccomp.fig"}. + +- **plot_sat_gitm_comp:** Routine to plot satellite and GITM data to + show how a single physical quantity varies over the orbit. Four + panels are included; the top panel shows the raw satellite data and + the GITM data along the track. The second panel shows the matched + GITM/satellite data. The third panel shows the difference between + the satellite and GITM data. The fourth panel shows the percent + difference 100\*(sat-GITM)/sat. + +
+
+ +
+
Madrigal and GITM vertical TEC comparison.
+
+ +### load_files.py + +Routines to load certain types of data files into a dictionary of numpy +arrays, where each data type is used to specify the dictionary keys. + +- **loadCINDIorbit_ASCII:** Loads the Coupled Ion Neutral Dynamics + Investigation ASCII files provided by the UT Dallas website. + +- **loadMadrigalVTEC_ASCII:** Loads the GPS TEC ASCII files provided + by the Millstone Hill Madrigal site. + +- **loadGITMsat_ASCII:** Loads the satellite file used as input for a + GITM run. + +- **loadMadrigalVTEC_HDF5:** Loads the GPS TEC HDF5 files provided by + the Millstone Hill Madrigal site. + +### read_files.py + +Routines to read certain file formats and load the data into a +dictionary of numpy arrays, where each data type is used to specify the +dictionary keys. + +- **loadASCII_data_header:** Loads an ASCII file with header lines + denoted by a '\#' . + +- **loadASCII_data_hline:** Loads an ASCII file with a specified + number of header lines. + +- **loadASCII_index_profile:** Loads an ASCII file with header lines + denoted by a '\#' that has been broken up into indexed blocks + (blocks separated by double newlines, or indexes as specified by + gnuplot). The indexed structure is maintained in the output + dictionary by providing a list of numpy arrays for each data column. + +- **load_multASCII_data:** Loads multiple ASCII files into a single + output dictionary. + +- **loadnetCDF_data:** Loads netCDF files into an output dictionary. + +- **combine_data_dictionaries:** Combines multiple data dictionaries + into a single dictionary, including only the data keys common to all + of the inputted data dictionaries. + +### read_gps_bin.py + +A script to read a VMR GPS binary file, providing data at a specified +Universal Time. + +- **GpsFile:** Class containing all of the data from the VMR GPS + binary file. + + - **read_header:** Reads the VMR GPS binary file header, allowing + data to be easily located as desired. + + - **read_time:** Read in all the GPS data at the specified + Universal Time. The specified time and the file times do not + have to be perfectly aligned, as long as the specified time + falls between the first and last time in the GPS file, the data + with the closest temporal proximity will be returned. + +### write_files.py + +Routines to write output files. + +- **writeASCII_file:** A routine to create an ASCII file from a string + or list of strings. Will overwrite any file of the same name that + already exists. + +- **writeASCII_data_w_sorttext:** A routine to create an ASCII file + from a data dictionary of dictionaries. The first layer of keys is + used to provide the data columns, the second layer is output as + additional data column(s) where the keys are output as strings. + Datetime columns are output as two strings, one containing the date + information and a second one containing the time of day information. + +### plot_stats.py + +Routines to compute and plot common statistics. + +- **add_stat_to_line:** Computes the moments, first through third + quartiles, and mode(s) (as desired) for a dataset and outputs the + statistics as a formatted text line that can be output to a file and + in a list. + +- **add_stat_box:** Computes the moments, first through third + quartiles, and mode(s) (as desired) for a dataset and outputs the + statistics in a text box onto a plot and in a list. + +- **plot_hist_w_stats:** Calculates and plots a histogram of a + specified dataset, as well as the moments, first through third + quartiles, and mode(s) (as desired). + +- **plot_lat_lt_stats:** Calculates and plots histograms and + statistics for a specified dataset broken up into latitude and local + time regions. + +- **lat_lt_stat_lines:** Calculates statistics for a specified dataset + broken up into latitude and local time regions, providing a + formatted string with the statistics for each region taking up a + line. + +### gitm_movie_script.py + +This is a python script that can be run either from ipython using the +command `run gitm_movie_script.py` or the command line using the command +`python gitm_movie_script.py`. Input to this program is prompted +interactively, and includes: + +- `Ordered list of GITM binary files:` A list of GITM binary files in + chronological order (or whatever other order the movie should be + played in). + +- `GITM plot type (rectangular, polar, nspolar, snapshot):` The + keyword for the desired plot type. These are the plot types shown in + figure [3](#gitm_3D_global_plots.fig){reference-type="ref" + reference="gitm_3D_global_plots.fig"}, where polar corresponds to + panel (a), rectangular to panel (b), nspolar to panel (c), and + snapshot to panel (d). + +- At this point, the routine enters a while-loop to allow multiple + movies to be made for the same list of GITM binary files + + - `GITM key to plot on z axis (eg Temperature):` The data key + corresponding to the data type to plot on the z axis. A list of + data keys can be found by typing '`gdata.keys()`' into ipython + after loading one of the listed GITM binaries. + + - `Altitude to plot z value at (eg 250):` Altitude to plot, may be + specified in km or m. For 2D parameters, a value must be + entered, but doesn't matter. + + - `Units of altitude (km or m):` Units of altitude entered above. + + - `Use map of Earth? (empty for False):` Enter any value to + include a Basemap plot of the earth, enter a carriage return to + exclude the map. + + - The latitude limits needed depend on the plot type + + - **nspolar** `Polar latitude limit (degrees):` Specify the + polar latitude limit (positive, same for both hemispheres). + + - **nspolar** `Equatorial latitude limit (degrees):` Specify + the equatorial latitude limit (positive, same for both + hemispheres). + + - **snapshot** `Polar latitude limit (degrees):` Specify the + polar latitude limit (positive, same for both hemispheres). + + - **polar/rectangular** `Northern latitude limit (degrees):` + Specify the northernmost latitude (may be negative). + + - **polar/rectangular** `Southern latitude limit (degrees):` + Specify the southernmost latitude (must be smaller/more + negative than the northernmost limit) + + - `Load another z axis key? (empty for False):` Enter any value to + include another movie or, enter a carriage return finish. + +With this information, movies with appropriate z-variable ranges will be +plot as .png files and combined into a movie using FFmpeg. The image and +movie files will be named using the plot type, z parameter, and altitude +to distinguish them. From a48a37bbbd7485e99115c1f7bf0c2bdaf6f9e90f Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 28 May 2025 13:53:51 -0400 Subject: [PATCH 048/120] actually add math example --- srcDoc/markdown_ref.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/srcDoc/markdown_ref.md b/srcDoc/markdown_ref.md index ed3dd619..cbf6a342 100644 --- a/srcDoc/markdown_ref.md +++ b/srcDoc/markdown_ref.md @@ -167,6 +167,18 @@ Math can be done inline, differing from LaTex in that we need to use $\` and \`$ to surround the math. For example, $`\pi \approx \frac{22}{7}`$ is an equation *inline*. For equation blocks we need to surround it with backticks, like so: + +```` +```math +% comments can be placed in math mode +\begin{align} + E=mc^2 +\end{align} +``` +```` + +Which produces: + ```math % comments can be placed in math mode \begin{align} From 2a04c827851545c7ac1c94366ef1970368d509aa Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 28 May 2025 14:21:54 -0400 Subject: [PATCH 049/120] Add chemistry latex file, format it for markdown --- srcDoc/chemistry.md | 480 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 480 insertions(+) create mode 100644 srcDoc/chemistry.md diff --git a/srcDoc/chemistry.md b/srcDoc/chemistry.md new file mode 100644 index 00000000..4ff6a19c --- /dev/null +++ b/srcDoc/chemistry.md @@ -0,0 +1,480 @@ +# Chemistry + +```math +\begin{align} +O_2 \rightarrow 2O +\end{align} +``` + +EUV dissociation rate. + +```math +\begin{align} +N_2 \rightarrow 2N +\end{align} +``` + +EUV dissociation rate. + +```math +\begin{align} +O + O + M \rightarrow O_2 + M, \hspace{0.5 in} +R = 9.59 \times 10^{-46} e^{\frac{480}{T_n}} +\end{align} +``` + +```math +\begin{align} +N_2 \rightarrow N_2^+ +\end{align} +``` + +EUV Ionization Rate. + +```math +\begin{align} +N_2 \rightarrow N_2^+ +\end{align} +``` + +Auroral Ionization Rate. + +```math +\begin{align} +O_2 \rightarrow O_2^+ +\end{align} +``` + +EUV Ionization Rate. + +```math +\begin{align} +O_2 \rightarrow O_2^+ +\end{align} +``` + +Auroral Ionization Rate. + +```math +\begin{align} +O(^3P) \rightarrow O^+(^4S) +\end{align} +``` + +EUV Ionization Rate. + +```math +\begin{align} +O(^3P) \rightarrow O^+(^2D) +\end{align} +``` + +EUV Ionization Rate. + +```math +\begin{align} +O(^3P) \rightarrow O^+(^2P) +\end{align} +``` + +EUV Ionization Rate. + +```math +\begin{align} +O(^4S) \rightarrow O^+(^4S) (40\%) \\ +O(^4S) \rightarrow O^+(^2D) (40\%) \\ +O(^4S) \rightarrow O^+(^2P) (20\%) +\end{align} +``` + +Auroral Ionization Rate. + +```math +\begin{align} +O^+(^2D) + N_2 \rightarrow N_2^+ + O + 1.33 eV \\ +R = 8.0\times 10^{-16} +\end{align} +``` + +```math +\begin{align} +O^+(^2P) + N_2 \rightarrow N_2^+ + O + 3.02 eV \\ +R = 4.8\times 10^{-16} +\end{align} +``` + +```math +\begin{align} +N_2^+ + O_2 \rightarrow O_2^+ + N_2 + 3.53 eV \\ +R = 5.0\times 10^{-17} \times \bigg(\frac{T_n+T_i}{600}\bigg)^{-0.8} +\end{align} +``` + +```math +\begin{align} +N_2^+ + O \rightarrow NO^+ + N(^2D) + 0.7 eV \\ +R = 1.4\times 10^{-16} \times \bigg(\frac{T_n+T_i}{600}\bigg)^{-0.44} +\end{align} +``` + +```math +\begin{align} +N_2^+ + e^- \rightarrow 2N(^2D) + 1.04 eV \\ +R = 1.8\times 10^{-13} \times \bigg(\frac{T_e}{300}\bigg)^{-0.39} +\end{align} +``` + +```math +\begin{align} +N_2^+ + O \rightarrow O^+(^4S) + N_2 + 1.96 eV \\ +R = 1.4\times 10^{-16} \times \bigg(\frac{T_n+T_i}{600}\bigg)^{-0.44} +\end{align} +``` + +I am not sure that this is correct, since it is the same as 2.8. + +```math +\begin{align} +N_2^2 + NO \rightarrow NO^+ + N_2 + 6.33 eV \\ +R = 4.1 \times 10^{-16} +\end{align} +``` + +```math +\begin{align} +O^+(^4S) + O_2 \rightarrow O_2^+ + O + 1.55 eV \\ +R = 2.82 \times 10^{-17} \\ + & - 7.740\times 10^{-18}(T_{O2}/300.0) \\ + & + 1.073\times 10^{-18}(T_{O2}/300.0)^2 \\ + & - 5.170\times 10^{-20}(T_{O2}/300.0)^3 \\ + & + 9.650\times 10^{-22}(T_{O2}/300.0)^4 +\end{align} +``` + +```math +\begin{align} +O^+(^2D) + O_2 \rightarrow O_2^+ + 4.865 eV \\ +R = 7.0 \times 10^{-16} +\end{align} +``` + +```math +\begin{align} +N^+ + O_2 \rightarrow O_2^+ + N(^4S) + 2.486 \\ +R = 1.1 \times 10^{-16} +\end{align} +``` + +```math +\begin{align} +N^+ + O_2 \rightarrow O_2^+ + N(^4D) + 0.1 \\ +R = 2.0 \times 10^{-16} +\end{align} +``` + +```math +\begin{align} +O_2^+ + e^- \rightarrow O(^1D) + O(^1D) + 3.06 eV (31\%) \\ +O_2^+ + e^- \rightarrow O(^3P) + O(^1D) + 3.06 eV (42\%) \\ +O_2^+ + e^- \rightarrow O(^3P) + O(^3P) + 3.06 eV (22\%) \\ +R = 2.4\times 10^{-13} \bigg(\frac{T_e}{300}\bigg)^{-0.7} +\end{align} +``` + +```math +\begin{align} +O_2^+ + N(^4S) \rightarrow NO^+ + O + 4.25 eV \\ +R = 1.5 \times 10^{-16} +\end{align} +``` + +```math +\begin{align} +O_2^+ + NO \rightarrow NO^+ + O_2 + 2.813 eV \\ +R = 4.6 \times 10^{-16} +\end{align} +``` + +```math +\begin{align} +O_2^+ + N_2 \rightarrow NO^+ + NO + 0.9333 eV \\ +R = 5.0 \times 10^{-22} +\end{align} +``` + +```math +\begin{align} +O^+(^2D) + O \rightarrow O^+(^4S) + O(^3P) + 3.31 eV \\ +O^+(^2D) + O \rightarrow O^+(^4S) + O(^1D) + 1.35 eV \\ +R = 1.0 \times 10^{-17} +\end{align} +``` + +```math +\begin{align} +O^+(^2D) + e^- \rightarrow O^+(^4S) + e^- + 3.31 eV \\ +R = 7.8 \times 10^{-14}\bigg(\frac{T_e}{300}\bigg)^{-0.5} +\end{align} +``` + +```math +\begin{align} +O^+(^2D) + N_2 \rightarrow O^+(^4S) + N_2 + 3.31 eV \\ +R = 8.0 \times 10^{-16} +\end{align} +``` + +```math +\begin{align} +O^+(^2P) + O \rightarrow O^+(^4S) + O + 5.0 eV \\ +R = 5.2 \times 10^{-17} +\end{align} +``` + +```math +\begin{align} +O^+(^2P) + e^- \rightarrow O^+(^4S) + e^- + 5.0 eV \\ +R = 4.0 \times 10^{-14}\bigg(\frac{T_e}{300}\bigg)^{-0.5} +\end{align} +``` + +```math +\begin{align} +O^+(^2P) \rightarrow O^+(^4S) + 247.0nm\\ +R = 0.047 +\end{align} +``` + +```math +\begin{align} +N^+ O_2 \rightarrow O^+(^4S) + NO + 2.31 eV\\ +R = 3.0 \times 10^{-17} +\end{align} +``` + +```math +\begin{align} +O^+(^4S) + N_2 \rightarrow NO^+ + N(^4S) + 1.10 eV \\ +T_{eff} = & T_i + \frac{M_O}{M_O + M_{N_2}}\times\frac{M_{N_2} - M_b}{3k_b}V_i^2 \\ +M_b = &\frac{M_c}{M_{mc}} \\ +M_c = & \sum_n \frac{M_n\nu_{in}}{M_n + M_O} \\ +M_{mc} = & \sum_n \frac{ \nu_{in}}{M_n + M_O} \\ +R = & 1.533\times 10^{-18} - \\ + & 5.920\times 10^{-19} \bigg(\frac{T_{eff}}{300}\bigg) + \\ + & 8.600\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^2 \\ + (T_{eff} < 1700) \\ +R = & 2.730\times 10^{-18} - \\ + & 1.155\times 10^{-18} \bigg(\frac{T_{eff}}{300}\bigg) + \\ + & 1.483\times 10^{-19} \bigg(\frac{T_{eff}}{300}\bigg)^2 \\ + (T_{eff} > 1700) +\end{align} +``` + +If $`T_{eff} < 350`$, then $`T_{eff} = 350`$. + +If $`T_{eff} > 6000`$, then $`T_{eff} = 6000`$. + +```math +\begin{align} +O^+(^4S) + O_2 \rightarrow O_2^+ + O + 1.55 eV\\ +R = & 2.820\times 10^{-17} - \\ + & 7.740\times 10^{-18} \bigg(\frac{T_{eff}}{300}\bigg) + \\ + & 1.073\times 10^{-18} \bigg(\frac{T_{eff}}{300}\bigg)^2 - \\ + & 5.170\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^3 + \\ + & 9.650\times 10^{-22} \bigg(\frac{T_{eff}}{300}\bigg)^4\\ +T_{eff} = & T_i + \frac{M_O}{M_O + M_{O_2}}\times\frac{M_{O_2} - M_b}{3k_b}V_i^2 +\end{align} +``` + +If $`T_{eff} < 350`$, then $`T_{eff} = 350`$. + +If $`T_{eff} > 6000`$, then $`T_{eff} = 6000`$. + +```math +\begin{align} +O^+(^4S) + NO \rightarrow NO^+ + O + 4.36 eV\\ +R = & 8.36\times 10^{-19} - \\ + & 2.02\times 10^{-19} \bigg(\frac{T_{eff}}{300}\bigg) + \\ + & 6.95\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^2 (T_{eff} < 1500)\\ +R = & 5.33\times 10^{-19} - \\ + & 1.64\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg) + \\ + & 4.72\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^2 \\ + & 7.05\times 10^{-22} \bigg(\frac{T_{eff}}{300}\bigg)^3 (T_{eff} > 1500) \\ +T_{eff} = & T_i + \frac{M_O}{M_O + M_{NO}}\times\frac{M_{NO} - M_b}{3k_b}V_i^2 +\end{align} +``` + +If $`T_{eff} < 350`$, then $`T_{eff} = 350`$. + +If $`T_{eff} > 6000`$, then $`T_{eff} = 6000`$. + +```math +\begin{align} +O^+(^4S) + N(^2D) \rightarrow N^+ + O + 1.45 eV\\ +R = 1.3 \times 10^{-16} +\end{align} +``` + +```math +\begin{align} +O^+(^2P) +e^- \rightarrow O^+(^2D) + e^- + 1.69 eV\\ +R = 1.3 \times 10^{-13} \bigg(\frac{T_e}{300}\bigg)^{-0.5} % te3m05 +\end{align} +``` + +```math +\begin{align} +O^+(^2P) \rightarrow O^+(^2D) + 732nm\\ +R = 0.171 +\end{align} +``` + +```math +\begin{align} +O^+(^2D) \rightarrow O^+(^4S) + 372.6nm\\ +R = 7.7\times 10^{-5} +\end{align} +``` + +```math +\begin{align} +O^+(^2P) + N_2 \rightarrow N^+ + NO + 0.70 eV\\ +R = 1.0 \times 10^{-16} +\end{align} +``` + +```math +\begin{align} +O^+_2 + N(^2D) \rightarrow N^+ + O_2 \\ +R = 2.5 \times 10^{-16} +\end{align} +``` + +```math +\begin{align} +O^+(^2P) + N \rightarrow N^+ + O + 2.7 eV \\ +R = 1.0 \times 10^{-16} +\end{align} +``` + +```math +\begin{align} +O^+(^2D) + N \rightarrow N^+ + O + 1.0 eV \\ +R = 7.5 \times 10^{-17} +\end{align} +``` + +```math +\begin{align} +N^+ + O_2 \rightarrow NO^+ + O(^1D) + 6.67 eV \\ +R = 2.6 \times 10^{-16} +\end{align} +``` + +```math +\begin{align} +N^+ + O \rightarrow O^+(^4S) + N + 0.93 eV \\ +R = 5.0 \times 10^{-19} +\end{align} +``` + +```math +\begin{align} +NO^+ + e^- \rightarrow O + N(^2D) + 0.38 eV \\ +R = 4.0 \times 10^{-13} \bigg(\frac{T_e}{300}\bigg)^{-0.5} % te3m05 +\end{align} +``` + +```math +\begin{align} +N(^2D) + e^- \rightarrow N(^4S) + e^- + 2.38 eV\\ +R = 5.5 \times 10^{-16} \bigg(\frac{T_e}{300}\bigg)^{-0.5} % te3m05 +\end{align} +``` + +```math +\begin{align} +N(^2D) + O \rightarrow N(^4S) + O(^3P) + 2.38 eV (90\%)\\ +N(^2D) + O \rightarrow N(^4S) + O(^1D) + 0.42 eV (10\%)\\ +R = 2.0 \times 10^{-18} +\end{align} +``` + +```math +\begin{align} +N(^2D) \rightarrow N(^4S) + 520nm \\ +R = 1.06 \times 10^{-5} +\end{align} +``` + +```math +\begin{align} +NO \rightarrow N(^4S) + O \\ +R = 4.5 \times 10^{-6} e^{(-1\times 10^{-8}([O_2]\times 10^{-6})^{0.38})} +\end{align} +``` + +```math +\begin{align} +N(^4S) + O_2 \rightarrow NO + O + 1.385 eV \\ +R = 4.4 \times 10^{-18} e^{-\frac{3220}{T_n}} +\end{align} +``` + +```math +\begin{align} +N(^4S) + NO \rightarrow N_2 + O + 3.25 eV\\ +R = 1.5 \times 10^{-18} \sqrt{T_n} +\end{align} +``` + +```math +\begin{align} +N(^2P) \rightarrow N(^2D) + 1040nm\\ +R = 7.9 \times 10^{-2} +\end{align} +``` + +```math +\begin{align} +N(^2D) + O_2 \rightarrow NO + O(^3P) + 3.76 eV (90\%)\\ +N(^2D) + O_2 \rightarrow NO + O(^1D) + 1.80 eV (10\%)\\ +R = 6.2 \times 10^{-18} \frac{T_n}{300} +\end{align} +``` + +```math +\begin{align} +N(^2D) + NO \rightarrow N_2 + O + 5.63 eV\\ +R = 7.0 \times 10^{-17} +\end{align} +``` + +```math +\begin{align} +O(^1D) \rightarrow O(^3P) + 630nm\\ +R = 0.0071 +\end{align} +``` + +```math +\begin{align} +O(^1D) \rightarrow O(^3P) + 636.4nm\\ +R = 0.0022 +\end{align} +``` + +I don't understand this... + +```math +\begin{align} +O(^1D) + e^- \rightarrow O(^3P) + e^- + 1.96 eV\\ +R = 2.6 \times 10^{-17} T_e^(0.5)e^(-22740/T_e) +\end{align} +``` + +```math +\begin{align} +O(^1D) + N_2 \rightarrow O(^3P) + +\end{align} +``` \ No newline at end of file From eedf10db9795a395234dd3fc62b3ce2740e135cd Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 28 May 2025 14:26:49 -0400 Subject: [PATCH 050/120] initial commit of grid markdown file. converted from latex --- srcDoc/grid.md | 141 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 srcDoc/grid.md diff --git a/srcDoc/grid.md b/srcDoc/grid.md new file mode 100644 index 00000000..2af17d19 --- /dev/null +++ b/srcDoc/grid.md @@ -0,0 +1,141 @@ +# Setting the Grid + +Setting the grid resolution in GITM is not very complicated, but it does +involve some thought. There are a few variables that control this. In +`ModSize.f90`, the following variables are defined: + + integer, parameter :: nLons = 9 + integer, parameter :: nLats = 9 + integer, parameter :: nAlts = 50 + + integer, parameter :: nBlocksMax = 4 + +The first three variables (nLons, nLats and nAlts) define the size of a +single block. In the example above, there are 9 cells in latitude, 9 +cells in longitude and 50 cells in altitude. The latitude and longitude +resolution in GITM is defined by the cell numbers specified here and the +block numbers discussed in the following section. The size of the +altitude cells are measured in scale heights instead of kilometers, as +certain regions require higher resolutions than others based on the +dominating chemical and dynamical processes. Each altitude cell contains +$`\frac{1}{3}`$ of a scale height, starting at 80 km and typically +reaching up to 500 km. Increasing the number of altitude blocks will +increase the altitude range, but if this value is increased too much the +model becomes unstable. This altitude limit makes it problematic to +model the equatorial region during storms, where increased vertical +plasma transport requires the model consider altitudes of 2000 km and +higher. + +The final variable (`nBlocksMax`) defines the maximum number of blocks you +can have on a single processor. Most people run with one single block +per processor, as this is faster. So setting this to "1" is usually +preferred, and is necessary when running with the Dynamo option on. This +is a necessity because the Dynamo routine does not correctly transfer +the geomagnetically oriented data into the geographic coordinates used +in the ghost cells. Hopefully this will be updated in future versions, +as allowing multiple blocks per node can, in theory, save memory. + +Don't forget, if you change any of these parameters you will need to +recompile the code (run the Makefile again) so that a new executable +using the newly defined variables can be produced. + +## Running 3D Over the Whole Globe + +Once the number of cells is defined, then the number of blocks in +latitude and longitude need to be defined. This is done in the `UAM.in` +file, as shown in section [\[uam.sec\]](#uam.sec){reference-type="ref" +reference="uam.sec"}. For example, the initial settings have 8 blocks in +latitude and 8 in longitude: + + #GRID + 8 lons + 8 lats + -90.0 minimum latitude to model + 90.0 maximum latitude to model + 0.0 minimum longitude to model + 0.0 maximum longitude to model + +The number of cells in the simulation domain will then be 72 in +longitude, 72 in latitude, and 50 in altitude. Given that there are +$`360\deg`$ in longitude and $`180\deg`$ in latitude, the resolution would +be $`360\deg/72 = 5.0\deg`$ and $`180\deg/72 = 2.5\deg`$ in latitude. If one +block were put on each processor, 64 processors would be required. + +If one desired to run without the Dynamo turned on, the problem could +also be run with multiple blocks per node. This grid fits quite nicely +on either four- or eight-core processors. However, on 12-core processors +this would not work very well at all. We have started to run simulations +of $`1\deg`$ in latitude and $`5\deg`$ in longitude, which can fit nicely on +a 12-core processor machine. For example, in `ModSize.f90`: + + integer, parameter :: nLons = 9 + integer, parameter :: nLats = 15 + +and in `UAM.in`: + + #GRID + 8 lons + 12 lats + +This can then run on 96 cores, which is nicely divisible by 12. +Essentially, an infinite combination of cells per block and number of +blocks can be utilized. Typically, the number of blocks in latitude and +longitude are even numbers. + +## Running 3D Over the Part of the Globe + +GITM can be run over part of the globe - both in latitude and in +longitude. It can be run over a single polar region (by setting either +the minimum or maximum latitude to be greater (or less) than +$`\pm 90\deg`$). If this is selected, message passing over the poles is +implemented. If the pole is not selected, then boundary conditions have +to be set in `set_horizontal_bcs.f90`. By default, a continuous gradient +boundary condition is used on the densities and temperatures, while a +continuous value is used on the velocity. This is true in both latitude +and longitude. In longitude, message passing is implemented all of the +time, but the values are over-written by the boundary conditions if the +maximum and minimum longitude are not equal to each other. + +The longitudinal resolution ($`\Delta{\phi}`$) is set by: + +```math +\Delta{\phi} = \frac{\phi_{end} - \phi_{start}}{nBlocksLon \times nCellsLon} +``` + +while, the latitudinal resolution ($\Delta{\theta}$) is set by: + +```math +\Delta{\theta} = \frac{\theta_{end} - \theta_{start}}{nBlocksLat \times nCellsLat} +``` + +## Running in 1D + +GITM can run in 1D mode, in which the call to advance_horizontal is not +completed. This means that GITM runs exactly the same way, but ignoring +all of the horizontal advection terms. You have to do two things to make +GITM run in 1D. First, in `ModSize.f90`: + + integer, parameter :: nLons = 1 + integer, parameter :: nLats = 1 + integer, parameter :: nAlts = 50 + + integer, parameter :: nBlocksMax = 1 + +This tells the code that you only want one single latitude and longitude +location. To specify the exact location, in `UAM.in`: + + #GRID + 1 lons + 1 lats + 41.75 minimum latitude to model + 41.75 maximum latitude to model + 275.0 minimum longitude to model + 275.0 maximum longitude to model + +This is pretty close to some place in Michigan. GITM will model this +exact point for as long as you specify. One thing to keep in mind with +running in 1D is that the Earth still rotates, so the spot will have a +strong day to night variation in temperature. In 3D, the winds decrease +some of the variability between day and night, but in 1D, this doesn't +happen. So, the results are going to be perfect. But, 1D is great for +debugging. From 05377769df223122c7a7e08e324aa2352e0d65f5 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 28 May 2025 14:56:19 -0400 Subject: [PATCH 051/120] doc: convert chemistry_earth.tex to md. remove into section (it made its own pdf) --- srcDoc/chem.md | 394 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 394 insertions(+) create mode 100644 srcDoc/chem.md diff --git a/srcDoc/chem.md b/srcDoc/chem.md new file mode 100644 index 00000000..197d9a68 --- /dev/null +++ b/srcDoc/chem.md @@ -0,0 +1,394 @@ + + +# Chemistry {#chemistry.ch} + +EUV dissociation rate. + +$`O_2 \rightarrow 2O`$ + +$$N_2 \rightarrow 2N$$ EUV dissociation rate. + +$$O + O + M \rightarrow O_2 + M, \hspace{0.5 in} +R = 9.59 \times 10^{-46} e^{\frac{480}{T_n}}$$ + +$$N_2 \rightarrow N_2^+$$ EUV Ionization Rate. + +$$N_2 \rightarrow N_2^+$$ Auroral Ionization Rate. + +$$O_2 \rightarrow O_2^+$$ EUV Ionization Rate. + +$$O_2 \rightarrow O_2^+$$ Auroral Ionization Rate. + +$$O(^3P) \rightarrow O^+(^4S)$$ EUV Ionization Rate. + +$$O(^3P) \rightarrow O^+(^2D)$$ EUV Ionization Rate. + +$$O(^3P) \rightarrow O^+(^2P)$$ EUV Ionization Rate. + +$$\begin{split} +O(^4S) \rightarrow & O^+(^4S) (40\%) \\ +O(^4S) \rightarrow & O^+(^2D) (40\%) \\ +O(^4S) \rightarrow & O^+(^2P) (20\%) +\end{split}$$ Auroral Ionization Rate. + +$$\begin{split} +O^+(^2D) + N_2 \rightarrow & N_2^+ + O + 1.33 eV \\ +R = & 8.0\times 10^{-16} +\end{split}$$ + +$$\begin{split} +O^+(^2P) + N_2 \rightarrow & N_2^+ + O + 3.02 eV \\ +R = & 4.8\times 10^{-16} +\end{split}$$ + +$$\begin{split} +N_2^+ + O_2 \rightarrow & O_2^+ + N_2 + 3.53 eV \\ +R = & 5.0\times 10^{-17} \times \bigg(\frac{T_n+T_i}{600}\bigg)^{-0.8} +\end{split}$$ + +$$\begin{split} +N_2^+ + O \rightarrow & NO^+ + N(^2D) + 0.7 eV \\ +R = & 1.4\times 10^{-16} \times \bigg(\frac{T_n+T_i}{600}\bigg)^{-0.44} +\end{split}$$ + +$$\begin{split} +N_2^+ + e^- \rightarrow & 2N(^2D) + 1.04 eV \\ +R = & 1.8\times 10^{-13} \times \bigg(\frac{T_e}{300}\bigg)^{-0.39} +\end{split}$$ + +$$\begin{split} +N_2^+ + O \rightarrow & O^+(^4S) + N_2 + 1.96 eV \\ +R = & 1.4\times 10^{-16} \times \bigg(\frac{T_n+T_i}{600}\bigg)^{-0.44} +\end{split}$$ I am not sure that this is correct, since it is the same +as 2.8. + +$$\begin{split} +N_2^2 + NO \rightarrow & NO^+ + N_2 + 6.33 eV \\ +R = & 4.1 \times 10^{-16} +\end{split}$$ + +$$\begin{split} +O^+(^4S) + O_2 \rightarrow & O_2^+ + O + 1.55 eV \\ +R = & 2.82 \times 10^{-17} \\ + & - 7.740\times 10^{-18}(T_{O2}/300.0) \\ + & + 1.073\times 10^{-18}(T_{O2}/300.0)^2 \\ + & - 5.170\times 10^{-20}(T_{O2}/300.0)^3 \\ + & + 9.650\times 10^{-22}(T_{O2}/300.0)^4 +\end{split}$$ + +$$\begin{split} +O^+(^2D) + O_2 \rightarrow & O_2^+ + 4.865 eV \\ +R = & 7.0 \times 10^{-16} +\end{split}$$ + +$$\begin{split} +N^+ + O_2 \rightarrow & O_2^+ + N(^4S) + 2.486 \\ +R = & 1.1 \times 10^{-16} +\end{split}$$ + +$$\begin{split} +N^+ + O_2 \rightarrow & O_2^+ + N(^4D) + 0.1 \\ +R = & 2.0 \times 10^{-16} +\end{split}$$ + +$$\begin{split} +O_2^+ + e^- \rightarrow & O(^1D) + O(^1D) + 3.06 eV (31\%) \\ +O_2^+ + e^- \rightarrow & O(^3P) + O(^1D) + 3.06 eV (42\%) \\ +O_2^+ + e^- \rightarrow & O(^3P) + O(^3P) + 3.06 eV (22\%) \\ +R = & 2.4\times 10^{-13} \bigg(\frac{T_e}{300}\bigg)^{-0.7} +\end{split}$$ + +$$\begin{split} +O_2^+ + N(^4S) \rightarrow & NO^+ + O + 4.25 eV \\ +R = & 1.5 \times 10^{-16} +\end{split}$$ + +$$\begin{split} +O_2^+ + NO \rightarrow & NO^+ + O_2 + 2.813 eV \\ +R = & 4.6 \times 10^{-16} +\end{split}$$ + +$$\begin{split} +O_2^+ + N_2 \rightarrow & NO^+ + NO + 0.9333 eV \\ +R = & 5.0 \times 10^{-22} +\end{split}$$ + +$$\begin{split} +O^+(^2D) + O \rightarrow & O^+(^4S) + O(^3P) + 3.31 eV \\ +O^+(^2D) + O \rightarrow & O^+(^4S) + O(^1D) + 1.35 eV \\ +R = & 1.0 \times 10^{-17} +\end{split}$$ + +$$\begin{split} +O^+(^2D) + e^- \rightarrow & O^+(^4S) + e^- + 3.31 eV \\ +R = & 7.8 \times 10^{-14}\bigg(\frac{T_e}{300}\bigg)^{-0.5} +\end{split}$$ + +$$\begin{split} +O^+(^2D) + N_2 \rightarrow & O^+(^4S) + N_2 + 3.31 eV \\ +R = & 8.0 \times 10^{-16} +\end{split}$$ + +$$\begin{split} +O^+(^2P) + O \rightarrow & O^+(^4S) + O + 5.0 eV \\ +R = & 5.2 \times 10^{-17} +\end{split}$$ + +$$\begin{split} +O^+(^2P) + e^- \rightarrow & O^+(^4S) + e^- + 5.0 eV \\ +R = & 4.0 \times 10^{-14}\bigg(\frac{T_e}{300}\bigg)^{-0.5} +\end{split}$$ + +$$\begin{split} +O^+(^2P) \rightarrow & O^+(^4S) + 247.0nm\\ +R = & 0.047 +\end{split}$$ + +$$\begin{split} +N^+ O_2 \rightarrow & O^+(^4S) + NO + 2.31 eV\\ +R = & 3.0 \times 10^{-17} +\end{split}$$ + +$$\begin{split} +O^+(^4S) + N_2 \rightarrow & NO^+ + N(^4S) + 1.10 eV\\ +T_{eff} = & T_i + \frac{M_O}{M_O + M_{N_2}}\times\frac{M_{N_2} - M_b}{3k_b}V_i^2 \\ +M_b = &\frac{M_c}{M_{mc}} \\ +M_c = & \sum_n \frac{M_n\nu_{in}}{M_n + M_O} \\ +M_{mc} = & \sum_n \frac{ \nu_{in}}{M_n + M_O} \\ +R = & 1.533\times 10^{-18} - \\ + & 5.920\times 10^{-19} \bigg(\frac{T_{eff}}{300}\bigg) + \\ + & 8.600\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^2 (T_{eff} < 1700) \\ +R = & 2.730\times 10^{-18} - \\ + & 1.155\times 10^{-18} \bigg(\frac{T_{eff}}{300}\bigg) + \\ + & 1.483\times 10^{-19} \bigg(\frac{T_{eff}}{300}\bigg)^2 (T_{eff} > 1700) +\end{split}$$ If $T_{eff} < 350$, then $T_{eff} = 350$. If +$T_{eff} > 6000$, then $T_{eff} = 6000$. + +$$\begin{split} +O^+(^4S) + O_2 \rightarrow & O_2^+ + O + 1.55 eV\\ +R = & 2.820\times 10^{-17} - \\ + & 7.740\times 10^{-18} \bigg(\frac{T_{eff}}{300}\bigg) + \\ + & 1.073\times 10^{-18} \bigg(\frac{T_{eff}}{300}\bigg)^2 - \\ + & 5.170\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^3 + \\ + & 9.650\times 10^{-22} \bigg(\frac{T_{eff}}{300}\bigg)^4\\ +T_{eff} = & T_i + \frac{M_O}{M_O + M_{O_2}}\times\frac{M_{O_2} - M_b}{3k_b}V_i^2 +\end{split}$$ If $T_{eff} < 350$, then $T_{eff} = 350$. If +$T_{eff} > 6000$, then $T_{eff} = 6000$. + +$$\begin{split} +O^+(^4S) + NO \rightarrow & NO^+ + O + 4.36 eV\\ +R = & 8.36\times 10^{-19} - \\ + & 2.02\times 10^{-19} \bigg(\frac{T_{eff}}{300}\bigg) + \\ + & 6.95\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^2 (T_{eff} < 1500)\\ +R = & 5.33\times 10^{-19} - \\ + & 1.64\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg) + \\ + & 4.72\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^2 \\ + & 7.05\times 10^{-22} \bigg(\frac{T_{eff}}{300}\bigg)^3 (T_{eff} > 1500) \\ +T_{eff} = & T_i + \frac{M_O}{M_O + M_{NO}}\times\frac{M_{NO} - M_b}{3k_b}V_i^2 +\end{split}$$ If $T_{eff} < 350$, then $T_{eff} = 350$. If +$T_{eff} > 6000$, then $T_{eff} = 6000$. + +$$\begin{split} +O^+(^4S) + N(^2D) \rightarrow & N^+ + O + 1.45 eV\\ +R = & 1.3 \times 10^{-16} +\end{split}$$ + +$$\begin{split} +O^+(^2P) +e^- \rightarrow & O^+(^2D) + e^- + 1.69 eV\\ +R = & 1.3 \times 10^{-13} \bigg(\frac{T_e}{300}\bigg)^{-0.5} % te3m05 +\end{split}$$ + +$$\begin{split} +O^+(^2P) \rightarrow & O^+(^2D) + 732nm\\ +R = & 0.171 +\end{split}$$ + +$$\begin{split} +O^+(^2D) \rightarrow & O^+(^4S) + 372.6nm\\ +R = & 7.7\times 10^{-5} +\end{split}$$ + +$$\begin{split} +O^+(^2P) + N_2 \rightarrow & N^+ + NO + 0.70 eV\\ +R = & 1.0 \times 10^{-16} +\end{split}$$ + +$$\begin{split} +O^+_2 + N(^2D) \rightarrow & N^+ + O_2 \\ +R = & 2.5 \times 10^{-16} +\end{split}$$ + +$$\begin{split} +O^+(^2P) + N \rightarrow & N^+ + O + 2.7 eV \\ +R = & 1.0 \times 10^{-16} +\end{split}$$ + +$$\begin{split} +O^+(^2D) + N \rightarrow & N^+ + O + 1.0 eV \\ +R = & 7.5 \times 10^{-17} +\end{split}$$ + +$$\begin{split} +N^+ + O_2 \rightarrow & NO^+ + O(^1D) + 6.67 eV \\ +R = & 2.6 \times 10^{-16} +\end{split}$$ + +$$\begin{split} +N^+ + O \rightarrow & O^+(^4S) + N + 0.93 eV \\ +R = & 5.0 \times 10^{-19} +\end{split}$$ + +$$\begin{split} +NO^+ + e^- \rightarrow & O + N(^2D) + 0.38 eV \\ +R = & 4.0 \times 10^{-13} \bigg(\frac{T_e}{300}\bigg)^{-0.5} % te3m05 +\end{split}$$ + +$$\begin{split} +N(^2D) + e^- \rightarrow & N(^4S) + e^- + 2.38 eV\\ +R = & 5.5 \times 10^{-16} \bigg(\frac{T_e}{300}\bigg)^{-0.5} % te3m05 +\end{split}$$ + +$$\begin{split} +N(^2D) + O \rightarrow & N(^4S) + O(^3P) + 2.38 eV (90\%)\\ +N(^2D) + O \rightarrow & N(^4S) + O(^1D) + 0.42 eV (10\%)\\ +R = & 2.0 \times 10^{-18} +\end{split}$$ + +$$\begin{split} +N(^2D) \rightarrow & N(^4S) + 520nm \\ +R = & 1.06 \times 10^{-5} +\end{split}$$ + +$$\begin{split} +NO \rightarrow & N(^4S) + O \\ +R = & 4.5 \times 10^{-6} e^{(-1\times 10^{-8}([O_2]\times 10^{-6})^{0.38})} +\end{split}$$ + +$$\begin{split} +N(^4S) + O_2 \rightarrow & NO + O + 1.385 eV \\ +R = & 4.4 \times 10^{-18} e^{-\frac{3220}{T_n}} +\end{split}$$ + +$$\begin{split} +N(^4S) + NO \rightarrow & N_2 + O + 3.25 eV\\ +R = & 1.5 \times 10^{-18} \sqrt{T_n} +\end{split}$$ + +$$\begin{split} +N(^2P) \rightarrow & N(^2D) + 1040nm\\ +R = & 7.9 \times 10^{-2} +\end{split}$$ + +$$\begin{split} +N(^2D) + O_2 \rightarrow & NO + O(^3P) + 3.76 eV (90\%)\\ +N(^2D) + O_2 \rightarrow & NO + O(^1D) + 1.80 eV (10\%)\\ +R = & 6.2 \times 10^{-18} \frac{T_n}{300} +\end{split}$$ + +$$\begin{split} +N(^2D) + NO \rightarrow & N_2 + O + 5.63 eV\\ +R = & 7.0 \times 10^{-17} +\end{split}$$ + +$$\begin{split} +O(^1D) \rightarrow & O(^3P) + 630nm\\ +R = & 0.0071 +\end{split}$$ + +$$\begin{split} +O(^1D) \rightarrow & O(^3P) + 636.4nm\\ +R = & 0.0022 +\end{split}$$ I don't understand this\... + +$$\begin{split} +O(^1D) + e^- \rightarrow & O(^3P) + e^- + 1.96 eV\\ +R = & 2.6 \times 10^{-17} T_e^(0.5)e^(-22740/T_e) +\end{split}$$ + +$$\begin{split} +O(^1D) + N_2 \rightarrow & O(^3P) + N_2 + 1.96 eV\\ +R = & 2.3 \times 10^{-17} +\end{split}$$ + +$$\begin{split} +O(^1D) + O_2 \rightarrow & O(^3P) + O_2 + 1.96 eV\\ +R = & 2.9 \times 10^{-17} e^{\frac{67.5}{T_n}} +\end{split}$$ + +$$\begin{split} +O(^1D) + O(^3P) \rightarrow & 2O(^3P) + 1.96 eV\\ +R = & 8.0 \times 10^{-18} +\end{split}$$ + +$$\begin{split} +NO \rightarrow & NO^+ + e^-\\ +R = & 5.88 \times 10^{-7}(1+0.2(F10.7-65)/100)e^F\cos(SZA)\\ +F = & (\frac{[O_2]}{1\times 10^{6}})^{0.8855} +\end{split}$$ From e7fdb87fae024e5e6294fa89980241503d5727df Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 28 May 2025 14:57:46 -0400 Subject: [PATCH 052/120] doc: convert the rest of the old docs to markdown --- srcDoc/outline.md | 597 ++++++++++++++++++++++++++++++++++++++++++ srcDoc/quickstart2.md | 265 +++++++++++++++++++ srcDoc/some_inputs.md | 236 +++++++++++++++++ 3 files changed, 1098 insertions(+) create mode 100644 srcDoc/outline.md create mode 100644 srcDoc/quickstart2.md create mode 100644 srcDoc/some_inputs.md diff --git a/srcDoc/outline.md b/srcDoc/outline.md new file mode 100644 index 00000000..b5901548 --- /dev/null +++ b/srcDoc/outline.md @@ -0,0 +1,597 @@ +`main program` in **main.f90** + +- `init_mpi` in file **init_mpi.f90** + + - `MPI_INIT` + + - `MPI_COMM_RANK` + + - `MPI_COMM_SIZE` + +- `start_timing` in file **timing.f90** + +- `delete_stop` in file **stop_file.f90** + + - `report` in file library.f90 + +- `init_planet` in file **ModEarth.f90** + + - `time_int_to_real` in file time_routines.f90 + +- `set_defaults` in file **ModInputs.f90** + + - `set_strings` in file ModInputs.f90 + + - `time_int_to_real` in file time_routines.f90 + + - `set_planet_defaults` in file Earth.f90 + +- `read_inputs` in file **read_inputs.f90** + + - `report` in file library.f90 + + - `stop_gitm` in file library.f90 + + - `stop_gitm` in file library.f90 + + - `stop_gitm` in file library.f90 + + - `MPI_Bcast` + + - `stop_gitm` in file library.f90 + + - `MPI_Bcast` + + - `stop_gitm` in file library.f90 + +- `set_inputs` in file **set_inputs.f90** + + - `report` in file library.f90 + + - `read_in_int` in file set_inputs.f90 + + - `time_int_to_real` in file time_routines.f90 + + - `time_real_to_int` in file time_routines.f90 + + - `fix_vernal_time` in file set_inputs.f90 + + - `read_in_int` in file set_inputs.f90 + + - `time_int_to_real` in file time_routines.f90 + + - `read_in_time` in file set_inputs.f90 + + - `read_in_int` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `time_real_to_int` in file time_routines.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `IO_set_f107_single` + + - `IO_set_f107a_single` + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `IO_set_hpi_single` + + - `read_in_real` in file set_inputs.f90 + + - `IO_set_kp_single` + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `IO_set_imf_by_single` + + - `IO_set_imf_bz_single` + + - `IO_set_sw_v_single` + + - `read_in_string` in file set_inputs.f90 + + - `IO_set_inputs` + + - `read_MHDIMF_Indices` + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_string` in file set_inputs.f90 + + - `read_in_string` in file set_inputs.f90 + + - `read_in_string` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_int` in file set_inputs.f90 + + - `read_in_int` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_int` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_string` in file set_inputs.f90 + + - `read_in_string` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_int` in file set_inputs.f90 + + - `read_in_int` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_time` in file set_inputs.f90 + + - `read_in_time` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_int` in file set_inputs.f90 + + - `read_in_string` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_int` in file set_inputs.f90 + + - `read_in_string` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_satellites` in file satellites.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_string` in file set_inputs.f90 + + - `read_in_string` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_string` in file set_inputs.f90 + + - `Set_Euv` in file calc_euv.f90 + + - `read_in_logical` in file set_inputs.f90 + + - `read_in_real` in file set_inputs.f90 + + - `read_in_string` in file set_inputs.f90 + + - `IO_set_inputs` + + - `read_NGDC_Indices` + + - `read_in_string` in file set_inputs.f90 + + - `read_in_string` in file set_inputs.f90 + + - `IO_set_inputs` + + - `read_SWPC_Indices` + + - `read_in_string` in file set_inputs.f90 + + - `IO_set_inputs` + + - `read_NOAAHPI_Indices` + + - `stop_gitm` in file library.f90 + + - `time_int_to_real` in file time_routines.f90 + +- `initialize_gitm` in file **initialize.f90** + + - `init_radcooling` in file ModEarth.f90 + + - `start_timing` in file timing.f90 + + - `report` in file library.f90 + + - `time_real_to_int` in file time_routines.f90 + + - `fix_vernal_time` in file set_inputs.f90 + + - `get_f107` + + - `get_f107a` + + - `init_grid` in file init_grid.f90 + + - `read_inputs` in file read_inputs.f90 + + - `set_inputs` in file set_inputs.f90 + + - `read_restart` in file restart.f90 + + - `init_msis` in file init_msis.Earth.f90 + + - `set_RrTempInd` in file ModRates.Earth.f90 + + - `init_euv` in file calc_euv.f90 + + - `init_altitude` in file init_altitude.f90 + + - `UAM_gradient` + + - `init_heating_efficiency` in file Earth.f90 + + - `init_magheat` in file ModEarth.f90 + + - `init_isochem` in file Mars.f90 + + - `init_aerosol` in file ModEarth.f90 + + - `init_isochem` in file Mars.f90 + + - `init_msis` in file init_msis.Earth.f90 + + - `get_temperature` in file init_altitude.f90 + + - `init_iri` in file init_iri.Earth.f90 + + - `read_waccm_tides` in file tides.f90 + + - `update_waccm_tides` in file tides.f90 + + - `read_tides` in file tides.f90 + + - `update_tides` in file tides.f90 + + - `init_b0` in file init_b0.f90 + + - `init_energy_deposition` in file init_energy_deposition.f90 + + - `report` in file library.f90 + + - `SUBSOLR` + + - `exchange_messages_sphere` in file exchange_messages_sphere.f90 + + - `calc_pressure` in file calc_pressure.f90 + + - `UA_calc_electrodynamics` in file calc_electrodynamics.f90 + + - `calc_eddy_diffusion_coefficient` in file Earth.f90 + + - `calc_rates` in file calc_rates.Earth.f90 + + - `calc_viscosity` in file calc_rates.Earth.f90 + + - `calc_rates` in file calc_rates.Earth.f90 + + - `end_timing` in file timing.f90 + + - `calc_vtec` in file calc_tec.f90 + + - `calc_single_vtec` in file calc_tec.f90 + +- `write_output` in file **write_output.f90** + + - `output` in file output_common.f90 + + - `move_satellites` in file satellites.f90 + + - `write_restart` in file restart.f90 + + - `logfile` in file logfile.f90 + +- `report` in file **library.f90** + +- Loop Start + + - `calc_pressure` in file **calc_pressure.f90** + + - `report` in file library.f90 + + - `calc_timestep_vertical` in file **calc_timestep.f90** + + - `report` in file library.f90 + + - `MPI_AllREDUCE` + + - `stop_gitm` in file library.f90 + + - `calc_timestep_horizontal` in file **calc_timestep.f90** + + - `report` in file library.f90 + + - `MPI_AllREDUCE` + + - `advance` in file **advance.f90** + + - `report` in file library.f90 + + - `start_timing` in file timing.f90 + + - `update_tides` in file tides.f90 + + - `update_waccm_tides` in file tides.f90 + + - `advance_vertical_all` in file advance.f90 + + - `add_sources` in file add_sources.f90 + + - `advance_horizontal_all` in file advance.f90 + + - `time_real_to_int` in file time_routines.f90 + + - `get_f107` + + - `stop_gitm` in file library.f90 + + - `get_f107a` + + - `stop_gitm` in file library.f90 + + - `init_msis` in file init_msis.Earth.f90 + + - `init_iri` in file init_iri.Earth.f90 + + - `init_b0` in file init_b0.f90 + + - `end_timing` in file timing.f90 + + - `report` in file library.f90 + + - `start_timing` in file timing.f90 + + - `calc_rates` in file calc_rates.Earth.f90 + + - `calc_viscosity` in file calc_rates.Earth.f90 + + - `advance_vertical` in file advance_vertical.f90 + + - `end_timing` in file timing.f90 + + - `report` in file library.f90 + + - `start_timing` in file timing.f90 + + - `exchange_messages_sphere` in file + exchange_messages_sphere.f90 + + - `calc_rates` in file calc_rates.Earth.f90 + + - `calc_physics` in file calc_physics.f90 + + - `advance_horizontal` in file advance_horizontal.f90 + + - `calc_physics` in file calc_physics.f90 + + - `calc_rates` in file calc_rates.Earth.f90 + + - `advance_horizontal` in file advance_horizontal.f90 + + - `exchange_messages_sphere` in file + exchange_messages_sphere.f90 + + - `end_timing` in file timing.f90 + + - `check_stop` in file **stop_file.f90** + + - `report` in file library.f90 + + - `start_timing` in file timing.f90 + + - `MPI_AllREDUCE` + + - `check_start` in file stop_file.f90 + + - `end_timing` in file timing.f90 + + - `write_output` in file **write_output.f90** + + - `output` in file output_common.f90 + + - `move_satellites` in file satellites.f90 + + - `write_restart` in file restart.f90 + + - `logfile` in file logfile.f90 + +- Loop End + +- `finalize_gitm` in file **finalize.f90** + + - `UA_calc_electrodynamics` in file calc_electrodynamics.f90 + + - `output` in file output_common.f90 + + - `write_restart` in file restart.f90 + + - `end_timing` in file timing.f90 + + - `report_timing` in file timing.f90 + + - `UAM_XFER_destroy` in file ModSphereInterface.f90 + + - `UAM_write_error` in file ModSphereInterface.f90 + + - `stop_gitm` in file library.f90 + + - `MPI_FINALIZE` + +- `stop_gitm` in file **library.f90** + + - `CON_stop` in file main.f90 + + - `MPI_abort` diff --git a/srcDoc/quickstart2.md b/srcDoc/quickstart2.md new file mode 100644 index 00000000..3b5c4d35 --- /dev/null +++ b/srcDoc/quickstart2.md @@ -0,0 +1,265 @@ +# Quick Start (OLD) + +!!! note "this is soooooo old" + + Will be dramatically thinned out shortly... + +## Extracting the code from a tar file + +Create a new and empty directory, and open the tar file you received, +e.g.: + + mkdir Gitm + cd Gitm + mv ../gitm.tgz . + tar -xvzf gitm.tgz + +## Checking out the code with CVS {#cvs.sec} + +If CVS (Concurrent Versions System) is available on your computer and +you have an account on the CVS server machine herot.engin.umich.edu, you +can use CVS to install the current or a particular version of the code. +First of all have the following environment variables: + + setenv CVSROOT UserName@herot.engin.umich.edu:/CVS/FRAMEWORK + setenv CVS_RSH ssh + +where UserName is your user name on herot. Here it is assumed that you +use csh or tcsh. Also put these settings into your .cshrc file so it is +automatically executed at login. Alternatively, use + + CVSROOT=UserName@herot.engin.umich.edu:/CVS/FRAMEWORK + export CVSROOT + CVS_RSH=ssh + export CVS_RSH + +under sh, ksh and bash shells, and also put these commands into your +.bashrc or .profile file so it is automatically executed at login. + +Once the CVS environment variables are set, you can download the current +(HEAD) version of the GITM distribution with + + cvs checkout GITM2 + +If you want a particular version, use + + cvs checkout -r v2_0 GITM2 + +where v2_0 is the it tag associated with the version. To download bug +fixes or new features, the + + cvs update + +command can be used. See `man cvs` for more information. + +A lot of times, you don't really want the `GITM2` directory to stay that +name, since you might download a couple different version (maybe one for +development and one for runs). Therefore, typically you will: + + mv GITM2 GITM2.Development + +## Configuring and Making GITM + +In order to compile GITM, you have to configure it first. The configure +script is inherited from the Space Weather Modeling Framework. There are +two primary reasons you need to do the configure: (1) put the right +`Makefile` in the right place, specifying the compiler and the version +of MPI that you will use to link the code; (2) put the right MPI header +in the right place. It also does some things like hard-codes the path of +the source code into the `Makefile`. Currently the configure script is +not capable of detecting the system and compilers available. Some +examples for commonly used set-ups are shown below. Make sure that your +.cshrc or .bashrc file is set up to detect the appropriate compilers +before attempting to install GITM. + +Installing on Nyx: + + ./Config.pl -install -compiler=ifortmpif90 -earth + +Installing with an Intel compiler and OpenMPI (such as Pleiades): + + ./Config.pl -install -compiler=ifort -earth + +Installing a computer with gfortran and OpenMPI: + + ./Config.pl -install -compiler=gfortran -earth + +Installing on a computer with gfortran and not using MPI: + + ./Config.pl -install -compiler=gfortran -earth -nompi + +Sometimes people have a hard time with the ModUtilities.F90 file. If you +have errors with this file, try (for example): + + ./Config.pl -uninstall + ./Config.pl -install -compiler=gfortran -earth -noflush + +Don't forget, after configuring the Makefiles, you must still compile +the code! + + make + make test_earth + make install + +## Running the Code + +GITM requires a bunch of files to be in the right place in order to run. +Therefore, it is best to use the makefile to create a run directory: + + make rundir + mv run myrun + +where `myrun` can be whatever you want. I will use ` myrun` as an +example. You can actually put this directory where ever you want. On +many systems (such as nyx), there is a `nobackup` scratch disk that you +are supposed to use for runs, instead of your home directory. If you +need to ensure that your home directory doesn't use too much space, +moving the run directory onto a disk with more free space can solve the +problem: + + make rundir + mv run /nobackup/myaccount/gitm/myrun + ln -s /nobackup/myaccount/gitm/myrun . + +This creates a shortcut to the `myrun` directory location on `nobackup` +in your GITM working directory. It allows you to treat the run directory +as if it were a local directory, but it isn't! It also means that you +don't have to compile and install GITM on the scratch disk, where +program storage may not be allowed. + +Once you have created the run directory, you can run the default +simulation, by: + + cd myrun + mpirun -np 4 GITM.exe + +Or, if your system uses Mpiexec: + + cd myrun + mpiexec ./GITM.exe + +This, hopefully should run GITM for Earth for 5 minutes. If it doesn't +work, then you might have mpi set up incorrectly. The default is to +allow you to run 4 blocks per processor, and the default ` UAM.in` file +is set up for 4 blocks, so you could try just running GITM without mpi, +just to see if it works at all: + + ./GITM.exe + +If that doesn't work, then it probably didn't compile correctly. +Hopefully, it just worked! + +## Post Processing {#post_process.sec} + +GITM, by default, produces one file per block per output. If you are +outputting often and you are running with many blocks, you can produce a +huge number of files. To post process all of these files, simply: + + cd UA + ./pGITM + +This merges all of the files for one time period, for one file type into +the same file. You can actually running this while the code is running, +since GITM doesn't use old files, unless you are using the APPENDFILE +option. As implied by the option's name, APPENDFILE opens an existing +file and appends the most recent data to it. This feature is typically +used only when running a satellite track though GITM. More information +on the APPENDFILE option is located in +Chapter [\[input.ch\]](#input.ch){reference-type="ref" +reference="input.ch"} +Section [\[def_out.sec\]](#def_out.sec){reference-type="ref" +reference="def_out.sec"}. + +If you are NOT using satellites and NOT using APPENDFILE, then you are +free and clear to use pGITM as often as you want during a run. To avoid +deleting a file that GITM is currently writing to, it is recommended +that pGITM be run as part of a script in which there is a five minute +pause between executions. + +Another useful script, when running GITM on another system, is given in +the block below. It occasionally executes an rsync between the computer +that you run GITM on and your home computer. This allows you to bring +over and evaluate the output files as they become available. To do this, +execute pGITM at a set cadence (60 seconds in the example) while GITM is +running and then rsync the remote and home directories (excluding all +unprocessed files). Finally, remove the processed and rsynced files to +prevent the remote directory from filling up. Be sure to replace +yourname@home.computer with your user and computer names! This is a very +simple, but very useful script. + + #!/bin/csh + rm -f stop + set LOC=$1 + + if (-f remoteloc) set LOC=`cat remoteloc` + + while (!(-f stop)) + rsync -vrae ssh log.* UAM.* imf* yourname@home.computer:$LOC + cd UA ; ./pGITM ; rsync --exclude '*.[bsh][0123ae][0123456789at]*' -vrae ssh d + ata yourname@home.computer:$LOC ; cd .. + sleep 60 + end + +## The Code Won't Compile!! + +I'm sorry. I tried to make this work on many different platforms, but +sometimes machines are very specific, and it just doesn't work out of +the box. Here are some ideas on how to quickly get this thing compiling. + +### Can't find the right Makefile.whatever + +If make does not work, then there is probably a problem with not finding +the FORTRAN 90 compiler. The platform and machine specific Makefiles are +in srcMake. If you type: + + uname + ls srcMake + +If you don't see a file named something like Makefile.uname (where uname +is the output of the uname command), then you will have to build a +proper general Makefile. + +You will need a little a little information about your computer, like +what the mpif90 compiler is called and where it is located. Take a look +at srcMake/Makefile.Linux, and try to figure out what all of the flags +are for your system. Then create a srcMake/Makefile.uname with the +correct information in it. + +### The compiler doesn't recognize flag -x + +You have an operating system that is recognized, but probably a +different compiler. In the srcMake/Makefile.uname file (where uname is +the output of the uname command), there is a line: + +OSFLAGS = -w -dusty + +You need to change this line to something more appropriate for your +compiler. Try deleting the flags and compile. If that doesn't work, you +will have to check the man pages of your compiler. + +### src/ModHwm.90 doesn't compile + +Certain versions of gfortran (4.6 and later) may give the following +error: + + src/ModHwm.f90:168.22: + + call HWMupdate(input,last,gfs,gfl,gfm,gvbar,gwbar,gbz,gbm,gzwght,glev,u + 1 + Error: Dummy argument 'ebz' of procedure 'hwmupdate' at (1) has an attribute + that requires an explicit interface for this procedure + + src/ModHwm.f90:168.22: + + call HWMupdate(input,last,gfs,gfl,gfm,gvbar,gwbar,gbz,gbm,gzwght,glev,u + 1 + Error: Dummy argument 'ebz' of procedure 'hwmupdate' at (1) has an attribute + that requires an explicit interface for this procedure + +This is caused by the inputs in HWM. The latest incarnations of gfortran +don't allow optional inputs that are not declared. More information +about this can be found at: + + http://cosmocoffee.info/viewtopic.php?p=5136 + +A solution to this problem is currently being sought. diff --git a/srcDoc/some_inputs.md b/srcDoc/some_inputs.md new file mode 100644 index 00000000..07e52674 --- /dev/null +++ b/srcDoc/some_inputs.md @@ -0,0 +1,236 @@ +# Input Files {#indices.sec} + +All of these auxiliary input files should be kept in the same directory as the +GITM executable and the `UAM.in` file. + +## IMF and Solar Wind {#imf.sec} + +This file controls the high-latitude electric field and aurora when +using models that depend on the solar wind and interplanetary magnetic +field (IMF). It allows GITM to dynamically control these quantities. You +can create either realistic IMF files or hypothetical ones. + +A script is provided to automatically download these files, and can be called +using the `download_imf.py` python file in ____. + + + +Here is an example file: + + This file was created by Aaron Ridley to do some wicked cool science thing. + + The format is: + Year MM DD HH Mi SS mS Bx By Bz Vx Vy Vz N T + + Year=year + MM = Month + DD = Day + HH = Hour + Mi = Minute + SS = Second + mS = Millisecond + Bx = IMF Bx GSM Component (nT) + By = IMF By GSM Component (nT) + Bz = IMF Bz GSM Component (nT) + Vx = Solar Wind Vx (km/s) + Vy = Solar Wind Vy (km/s) + Vz = Solar Wind Vz (km/s) + N = Solar Wind Density (/cm3) + T = Solar Wind Temperature (K) + + #DELAY + 900.0 + + #START + 2000 3 20 2 53 0 0 0.0 0.0 2.0 -400.0 0.0 0.0 5.0 50000.0 + 2000 3 20 2 54 0 0 0.0 0.0 2.0 -400.0 0.0 0.0 5.0 50000.0 + 2000 3 20 2 55 0 0 0.0 0.0 2.0 -400.0 0.0 0.0 5.0 50000.0 + 2000 3 20 2 56 0 0 0.0 0.0 2.0 -400.0 0.0 0.0 5.0 50000.0 + 2000 3 20 2 57 0 0 0.0 0.0 2.0 -400.0 0.0 0.0 5.0 50000.0 + 2000 3 20 2 58 0 0 0.0 0.0 2.0 -400.0 0.0 0.0 5.0 50000.0 + 2000 3 20 2 59 0 0 0.0 0.0 2.0 -400.0 0.0 0.0 5.0 50000.0 + 2000 3 20 3 0 0 0 0.0 0.0 -2.0 -400.0 0.0 0.0 5.0 50000.0 + 2000 3 20 3 1 0 0 0.0 0.0 -2.0 -400.0 0.0 0.0 5.0 50000.0 + 2000 3 20 3 2 0 0 0.0 0.0 -2.0 -400.0 0.0 0.0 5.0 50000.0 + 2000 3 20 3 3 0 0 0.0 0.0 -2.0 -400.0 0.0 0.0 5.0 50000.0 + 2000 3 20 3 4 0 0 0.0 0.0 -2.0 -400.0 0.0 0.0 5.0 50000.0 + +To actually read in this file, in `UAM.in`, use the input option +MHD_INDICES described in +[the Indices section](#indices.sec). + +## Hemispheric Power {#hp.sec} + +The hemispheric power files describe the dynamic variation of the +auroral power going into each hemisphere. Models such as FRE[^FRE] use +the Hemispheric Power to determine which level of the model it should +use. The Hemispheric Power is converted to a Hemispheric Power Index +using the formula: + +```math +\begin{equation} +HPI = 2.09 \log(HP)^{1.0475} +\end{equation} +``` + +[^FRE]: Fuller-Rowell, T. J., and D. S. Evans (1987), Height-integrated Pedersen + and Hall conductivity patterns inferred from the TIROS-NOAA satellite data, + J. Geophys. Res., 92(A7), 7606–7618, + doi:[10.1029/JA092iA07p07606](https://doi.org/10.1029/JA092iA07p07606). + +The National Oceanic and Atmospheric Administration (NOAA) provides +these hemispheric power files for public use online at +`http://www.swpc.noaa.gov/ftpmenu/lists/hpi.html`. There are two types +of formats used for hemispheric power files (due to a change in the NOAA +output format in 2007). Both file formats can be used by GITM, and are +shown in the examples below. + +Example file 1 for data prior to 2007: + + # Prepared by the U.S. Dept. of Commerce, NOAA, Space Environment Center. + # Please send comments and suggestions to sec@sec.noaa.gov + # + # Source: NOAA POES (Whatever is aloft) + # Units: gigawatts + + # Format: + + # The first line of data contains the four-digit year of the data. + # Each following line is formatted as in this example: + + # NOAA-12(S) 10031 9.0 4 .914 + + # Please note that if the first line of data in the file has a + # day-of-year of 365 (or 366) and a HHMM of greater than 2300, + # that polar pass started at the end of the previous year and + # ended on day-of-year 001 of the current year. + + # A7 NOAA POES Satellite number + # A3 (S) or (N) - hemisphere + # I3 Day of year + # I4 UT hour and minute + # F8.1 Estimated Hemispheric Power in gigawatts + # I3 Hemispheric Power Index (activity level) + # F8.3 Normalizing factor + + 2000 + NOAA-15(N) 10023 35.5 7 1.085 + NOAA-14(S) 10044 25.3 7 .843 + NOAA-15(S) 10114 29.0 7 .676 + NOAA-14(N) 10135 108.7 10 1.682 + NOAA-15(N) 10204 36.4 7 1.311 + . + . + . + +Example file 2 for data in and after 2007: + + :Data_list: power_2010.txt + :Created: Sun Jan 2 10:12:58 UTC 2011 + + + # Prepared by the U.S. Dept. of Commerce, NOAA, Space Environment Center. + # Please send comments and suggestions to sec@sec.noaa.gov + # + # Source: NOAA POES (Whatever is aloft) + # Units: gigawatts + + # Format: + + # Each line is formatted as in this example: + + # 2006-09-05 00:54:25 NOAA-16 (S) 7 29.67 0.82 + + # A19 Date and UT at the center of the polar pass as YYYY-MM-DD hh:mm:ss + # 1X (Space) + # A7 NOAA POES Satellite number + # 1X (Space) + # A3 (S) or (N) - hemisphere + # I3 Hemispheric Power Index (activity level) + # F7.2 Estimated Hemispheric Power in gigawatts + # F7.2 Normalizing factor + + 2010-01-01 00:14:37 NOAA-17 (N) 1 1.45 1.16 + 2010-01-01 00:44:33 NOAA-19 (N) 1 1.45 1.17 + . + . + . + +The file type is not specified in `UAM.in`, instead different subroutines within +GITM will use it as needed. + +## Solar Irradiance {#solar_irradiance.sec} + +To provide GITM with realistic solar irradiance, the solar EUV must be +specified. This can be done through a file containing modeled or +observed solar irradiance data. An example from the FISM model is shown +below. + + #START + 2009 3 20 0 0 0 0.00389548 0.00235693 + 0.00127776 0.000907677 0.000652528 0.000372993 0.000250124 0.000194781 + 0.000389686 0.000118650 0.00642058 0.00618358 0.000133490 7.67560e-05 + 7.80045e-05 0.000145722 5.92577e-05 5.95070e-05 0.000102437 6.48526e-05 + 8.94509e-05 0.000101928 5.94333e-05 5.36012e-05 1.51744e-05 1.10265e-05 + 1.26937e-05 2.16591e-05 9.57055e-06 1.82608e-05 7.07992e-05 2.55451e-05 + 1.12451e-05 6.89255e-05 3.03882e-05 2.33862e-05 2.98026e-05 4.44682e-05 + 1.50847e-05 3.00909e-05 8.18379e-05 3.52176e-05 0.000416491 0.000269080 + 0.000269080 0.000275734 6.60872e-05 4.46671e-05 0.000220697 0.000512933 + 3.85239e-05 9.30928e-05 2.71239e-05 1.23011e-05 1.05722e-05 9.30876e-06 + 7.08442e-07 3.54221e-07 1.77110e-07 + 2009 3 20 0 1 0 0.00389548 0.00235693 + 0.00127776 0.000907677 0.000652528 0.000372993 0.000250124 0.000194781 + 0.000389686 0.000118650 0.00642058 0.00618358 0.000133490 7.67560e-05 + 7.80045e-05 0.000145722 5.92577e-05 5.95070e-05 0.000102437 6.48526e-05 + 8.94509e-05 0.000101928 5.94333e-05 5.36012e-05 1.51744e-05 1.10265e-05 + 1.26937e-05 2.16591e-05 9.57055e-06 1.82608e-05 7.07992e-05 2.55451e-05 + 1.12451e-05 6.89255e-05 3.03882e-05 2.33862e-05 2.98026e-05 4.44682e-05 + 1.50847e-05 3.00909e-05 8.18379e-05 3.52176e-05 0.000416491 0.000269080 + 0.000269080 0.000275734 6.60872e-05 4.46671e-05 0.000220697 0.000512933 + 3.85239e-05 9.30928e-05 2.71239e-05 1.23011e-05 1.05722e-05 9.30876e-06 + 7.08442e-07 3.54221e-07 1.77110e-07 + . + . + . + +GITM knows to use the provided solar irradiance file through the EUV_DATA input +option specified in the `UAM.in` file. More information about this input option +can be found in section [\[indices.sec\]](#indices.sec){reference-type="ref" +reference="indices.sec"}. ~~For more information on specifying to solar +irradiance, please contact Professors Ridley or Pawlowski.~~ + +## Satellites {#sat_aux.sec} + +GITM can provide output data at a list of times and locations using the +SATELLITE input option, described in more detain in +section [\[def_out.sec\]](#def_out.sec){reference-type="ref" +reference="def_out.sec"}. Although this is designed to output data along +a satellite orbit, any list of locations may be used. There is currently +no routine to create a satellite input file, but the format is simple +and may be easily constructed from a satellite ASCII data file using +awk. Here is a sample satellite input file: + + year mm dd hh mm ss msec long lat alt + #START + 2002 4 16 23 34 25 0 299.16 -2.21 0.00 + 2002 4 16 23 34 25 0 293.63 -1.21 0.00 + 2002 4 16 23 34 25 0 291.28 -0.75 0.00 + 2002 4 16 23 34 25 0 289.83 -0.45 0.00 + 2002 4 16 23 34 25 0 288.79 -0.21 0.00 + 2002 4 16 23 34 25 0 287.98 -0.01 0.00 + 2002 4 16 23 34 25 0 287.32 0.16 0.00 + 2002 4 16 23 34 25 0 286.76 0.31 0.00 + 2002 4 16 23 34 25 0 286.26 0.46 0.00 + 2002 4 16 23 34 25 0 285.81 0.60 0.00 + 2002 4 16 23 34 25 0 285.39 0.74 0.00 + +Note that the satellite output type is not specified in this sample file. This +is because altitude entry doesn't matter at this time, GITM ignores the altitude +and outputs altitudinal profiles of the atmospheric characteristics at each +geographic location and universal time. Although millisecond accuracy is +provided, GITM should not be output at a resolution smaller than 1 second. The +temporal resolution in the satellite file does not need to match the output +resolution. + +The types of outputs are specified in the [`#OUTPUT`](outputs.md) section of +the UAM file. From 38c85a9edffe785863936c3a7f838dd23d526bde Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 28 May 2025 17:44:15 -0400 Subject: [PATCH 053/120] create inputs.md - taken from latex --- srcDoc/inputs.md | 572 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 572 insertions(+) create mode 100644 srcDoc/inputs.md diff --git a/srcDoc/inputs.md b/srcDoc/inputs.md new file mode 100644 index 00000000..13bd485e --- /dev/null +++ b/srcDoc/inputs.md @@ -0,0 +1,572 @@ +# Inputs + +This sets the starting time of the simulation. Even when you restart, +the starttime should be to the real start time, not the restart time. + + #STARTTIME + iYear (integer) + iMonth (integer) + iDay (integer) + iHour (integer) + iMinute (integer) + iSecond (integer) + +This sets the ending time of the simulation. + + #ENDTIME + iYear (integer) + iMonth (integer) + iDay (integer) + iHour (integer) + iMinute (integer) + iSecond (integer) + +This will set a time for the code to just pause. Really, this should +never be used. + + #PAUSETIME + iYear iMonth iDay iHour iMinute iSecond + +This is typically only specified in a restart header. If you specify it +in a start UAM.in it will start the counter to whatever you specify. + + #ISTEP + iStep (integer) + +This sets the maximum CPU time that the code should run before it starts +to write a restart file and end the simulation. It is very useful on +systems that have a queueing system and has limited time runs. +Typically, set it for a couple of minutes short of the max wall clock, +since it needs some time to write the restart files. + + #CPUTIMEMAX + CPUTimeMax (real) + +This command will skip all pretty much all of the physics of GITM, and +will reinitialize the model with the MSIS and IRI values at the interval +set in the second variable. If you want to compare a run to MSIS and +IRI, you can run GITM with this command and get output at exactly the +same cadence and locations, thereby allowing easier comparisons. The dt +can be set as low as needed, so you can run satellites through MSIS and +IRI. + + #STATISTICALMODELSONLY + UseStatisticalModelsOnly (logical) + DtStatisticalModels (real) + +This is typically only specified in a restart header. It sets the offset +from the starttime to the currenttime. Should really only be used with +caution. + + #TSIMULATION + tsimulation (real) + +Sets the F10.7 and 81 day average F10.7. This is used to set the initial +altitude grid, and drive the lower boundary conditions. + + #F107 + f107 (real) + f107a (real - 81 day average of f107) + +This specifies the initial conditions and the lower boundary conditions. +For Earth, we typically just use MSIS and IRI for initial conditions. +For other planets, the vertical BCs can be set here. + + #INITIAL + UseMSIS (logical) + UseIRI (logical) + If UseMSIS is .false. then : + TempMin (real, bottom temperature) + TempMax (real, top initial temperature) + TempHeight (real, Height of the middle of temp gradient) + TempWidth (real, Width of the temperature gradient) + +This says how to use tides. The first one is using MSIS with no tides. +The second is using MSIS with full up tides. The third is using GSWM +tides, while the forth is for experimentation with using WACCM tides. + + #TIDES + UseMSISOnly (logical) + UseMSISTides (logical) + UseGSWMTides (logical) + UseWACCMTides (logical) + UseHmeTides (logical) + +This says how to use msis tides. The first one is using diurnal tide The +first one is using semi-diurnal tide The first one is using terdiurnal +tide + + #MSISTIDES + UseMSISDiurnal (logical) + UseMSISSemidiurnal (logical) + UseMSISTerdiurnal (logical) + +UseOBCExperiment - use MSIS \[O\] BC shifted by 6 months Only applicable +for MSIS00! MsisOblateFactor - alt = alt \* (1.0-f/2 + f\*cos(lat)) - +seems like -0.1 works well + + #MSISOBC + UseOBCExperiment (logical) + MsisOblateFactor (real) + +This toggles between using MSIS00 (false) and MSIS-2.1 (true) + + #MSISOBC + UseMsis21 (logical) + +This says whether you want seconds in output file name. F means no +seconds in output file name. + + #DUST + cDustFile + cConrathFile + + #OVERWRITEIONOSPHERE + DoOverwriteIonosphere + DoOverwriteWithIRI + DoOverwriteWithSami + SamiInFile + + #GITMBCS + UseGitmBCs + GitmBCsDir + + #DUST + TauTot + Conrnu + +If you selected to use GSWM tides above, you can specify which +components to use. + + #GSWMCOMP + GSWMdiurnal(1) (logical) + GSWMdiurnal(2) (logical) + GSWMsemidiurnal(1) (logical) + GSWMsemidiurnal(2) (logical) + + #USEPERTURBATION + UsePerturbation (logical) + + #USEBCPERTURBATION + UseBcPerturbation (logical) + If UseBcPerturbation = .true. then: + iTypeBcPerturb (int) + perturbation characteristics ... + +This is probably for damping vertical wind oscillations that can occur +in the lower atmosphere. + + #DAMPING + UseDamping (logical) + +I dont know what this is for\... + + #GRAVITYWAVE + UseGravityWave (logical) + +This sets the hemispheric power of the aurora. Typical it ranges from +1-1000, although 20 is a nominal, quiet time value. + + #HPI + HemisphericPower (real) + +I dont think that GITM actually uses this unless the Foster electric +field model is used. + + #KP + kp (real) + +The CFL condition sets how close to the maximum time step that GITM will +take. 1.0 is the maximum value. A value of about 0.75 is typical. If +instabilities form, a lower value is probably needed. + + #CFL + cfl (real) + +If you would like to force GITM to take a fixed dt you can use this. It +will try to take that fixed dt, unless the CFL condition is violated. + + #FIXEDDT + FixedDt (real) + +This sets the driving conditions for the high-latitude electric field +models. This is static for the whole run, though. It is better to use +the MHD_INDICES command to have dynamic driving conditions. + + #SOLARWIND + bx (real) + by (real) + bz (real) + vx (real) + +Use this for dynamic IMF and solar wind conditions. The exact format of +the file is discussed further in the manual. + + #MHD_INDICES + filename (string) + +This is for modifying the aurora a bit. The NormalizeAuroraToHP variable +calculates the modeled hemispheric power and then normalizes it the +hemispheric power read in. AveEFactor - changes the aveE of the aurora +by factor IsKappaAurora - use a kappa instead of Maxwellian +AuroraKappa - kappa to use in the distribution + + #AURORAMODS + NormalizeAuroraToHP (logical) + AveEFactor (real) + IsKappaAurora (logical) + AuroraKappa (real) + +This is for using Pat Newells aurora (Ovation). + + #NEWELLAURORA + UseNewellAurora (logical) + UseNewellAveraged (logical) + UseNewellMono (logical) + UseNewellWave (logical) + UseNewellRemoveSpikes (logical) + UseNewellAverage (logical) + +This is for using Betsy Michells aurora (OvationSME). + + #OVATIONSME + UseOvationSME (logical) + UseOvationSMEMono (logical) + UseOvationSMEWave (logical) + UseOvationSMEIon (logical) + +This is for using Dongjies aurora. + + #AEMODEL + UseAeModel (logical) + +This is for using the FTA Model of the aurora. + + #FTAMODEL + UseFtaModel (logical) + +This is for using Dongjies aurora. + + #FANGENERGY + UseFangEnergyDeposition (logical) + +This is for specifying a cusp. + + #USECUSP + UseCusp (logical) + CuspAveE (real) + CuspEFlux (real) + + #AMIEFILES + cAMIEFileNorth (string) + cAMIEFileSouth (string) + +This is to set up a local region with specified potential from AMIE +files. Use Weimer potential elsewhere. AMIEBoundaryWidth is padded +outside of the region with the geographic lon and lat boundaries set +below. + + #USEREGIONALAMIE + UseRegionalAMIE (logical) + UseTwoAMIEPotentials (logical) + AMIETimeStart (yyyy mm dd hh mm ss) + AMIETimeEnd (yyyy mm dd hh mm ss) + AMIELonStart (real) + AMIELonEnd (real) + AMIELatStart (real) + AMIELatEnd (real) + AMIEBoundaryWidth (real) + +The limiter is quite important. It is a value between 1.0 and 2.0, with +1.0 being more diffuse and robust, and 2.0 being less diffuse, but less +robust. + + #LIMITER + TypeLimiter (string) + BetaLimiter (real between 1.0-minmod and 2.0-mc) + +This will turn on all of the NaN checks in the code! + + #NANCHECK + DoCheckForNans (logical) + +This will set how much information the code screams at you - set to 0 to +get minimal, set to 10 to get EVERYTHING. You can also change which +processor is shouting the information - PE 0 is the first one. If you +set the iDebugLevel to 0, you can set the dt of the reporting. If you +set it to a big value, you wont get very many outputs. If you set it to +a tiny value, you will get a LOT of outputs. UseBarriers will force the +code to sync up a LOT. + + #DEBUG + iDebugLevel (integer) + iDebugProc (integer) + DtReport (real) + UseBarriers (logical) + + #IONLIMITS + MaxVParallel (real, default=100 m/s) + MaxEField (real, default=0.1 V/m) + MinIonDensity (real, default=100 m^-3) + + #PHOTOELECTRON + PhotoElectronHeatingEfficiency (real) + + #NEUTRALHEATING + NeutralHeatingEfficiency (real) + + #DON4SHACK + DoN4SHack (logical) + + #THERMO + UseSolarHeating (logical) + UseJouleHeating (logical) + UseAuroralHeating (logical) + UseNOCooling (logical) + UseOCooling (logical) + UseConduction (logical) + UseTurbulentCond (logical) + UseIRHeating (logical) + + #THERMALDIFFUSION + KappaTemp0 (thermal conductivity, real) + + #THERMALCONDUCTION + ThermalConduction_AO2 (Conduction A(O2): 3.6e-4, real) + ThermalConduction_AO (Conduction A(O): 5.6e-4, real) + ThermalConduction_s (Conduction s: 0.75, real) + + #VERTICALSOURCES + MaximumVerticalVelocity (real) + + #AUSMSOLVER + Use AUSM Solver (logical) + +If you use eddy diffusion, you must specify two pressure levels - under +the first, the eddy diffusion is constant. Between the first and the +second, there is a linear drop-off. Therefore The first pressure must be +larger than the second! + + #DIFFUSION + UseDiffusion (logical) + EddyDiffusionCoef (real) + EddyDiffusionPressure0 (real) + EddyDiffusionPressure1 (real) + + #FORCING + UsePressureGradient (logical) + UseIonDrag (logical) + UseNeutralFriction (logical) + UseViscosity (logical) + UseCoriolis (logical) + UseGravity (logical) + + #MODIFYPLANET + RotationPeriodInput (real) + DaysPerYearInput (real) + DaysPerYearInput (real) + + #USEIMPLICITIONMOMENTUM + UseImplicitFieldAlignedMomentum (logical) + + #USEIMPROVEDIONADVECTION + UseImprovedIonAdvection (logical) + UseNighttimeIonBCs (logical) + MinTEC (real) + + #USETESTVISCOSITY + TestViscosityFactor (real) + + #DYNAMO + UseDynamo (logical) + DynamoHighLatBoundary (real) + nItersMax (integer) + MaxResidual (V,real) + IncludeCowling (logical) + DynamoLonAverage (real) + + #IONFORCING + UseExB (logical) + UseIonPressureGradient (logical) + UseIonGravity (logical) + UseNeutralDrag (logical) + + #FIXTILT + IsFixedTilt (logical) + + #DIPOLE + MagneticPoleRotation (real) + MagneticPoleTilt (real) + xDipoleCenter (real) + yDipoleCenter (real) + zDipoleCenter (real) + + #APEX + UseApex (logical) + Sets whether to use a realistic magnetic + field (T) or a dipole (F) + +For Earth, the AltMin is the only variable used here. The altitudes are +set to 0.3 times the scale height reported by MSIS, at the equator for +the specified F107 and F107a values. + + #ALTITUDE + AltMin (real, km) + AltMax (real, km) + UseStretchedAltitude (logical) + +If LatStart and LatEnd are set to \< -90 and \> 90, respectively, then +GITM does a whole sphere. If not, it models between the two. If you want +to do 1-D, set nLons=1, nLats=1 in ModSizeGitm.f90, then recompile, then +set LatStart and LonStart to the point on the Globe you want to model. + + #GRID + nBlocksLon (integer) + nBlocksLat (integer) + LatStart (real) + LatEnd (real) + LonStart (real) + LonEnd (real) + + #NEWSTRETCH + Poleward Edge of Stretch Region (real, degrees) + StretchWidth (real, 1.0-20.0, deg) + StretchingPercentage (real, 0-1) + Example (auroral zone): + #NEWSTRETCH + 65.0 ! location of minimum grid spacing + 5.0 ! Width of stretched region + 0.6 ! Amount of stretch 0 (none) to 1 (lots) + + #STRETCH + ConcentrationLatitude (real, degrees) + StretchingPercentage (real, 0-1) + StretchingFactor (real) + Example (no stretching): + #STRETCH + 65.0 ! location of minimum grid spacing + 0.0 ! Amount of stretch 0 (none) to 1 (lots) + 1.0 + + #TOPOGRAPHY + UseTopography (logical) + AltMinUniform (real) + + #RESTART + DoRestart (logical) + +This allows you to change the output cadence of the files for a limited +time. If you have an event then you can output much more often during +that event. + + #PLOTTIMECHANGE + yyyy mm dd hh mm ss ms (start) + yyyy mm dd hh mm ss ms (end) + +For satellite files, you can have one single file per satellite, instead +of one for every output. This makes GITM output significantly less +files. It only works for satellite files now. + + #APPENDFILES + DoAppendFiles (logical) + +Typicaly file is named (e.g.) 1DALL_yymmdd_hhmmss.bin With this it will +be named 1DALL_GITM_yyyy-mm-ddThh-mm-ss.bin + + #CCMCFILENAME + UseCCMCFileName (logical) + +The DtRestart variable sets the time in between writing full restart +files to the UA/restartOUT directory.\ +This sets the output files. The most common type is 3DALL, which outputs +all primary state variables. Types include : 3DALL, 3DNEU, 3DION, 3DTHM, +3DCHM, 3DUSR, 3DGLO, 2DGEL, 2DMEL, 2DUSR, 1DALL, 1DGLO, 1DTHM, 1DNEW, +1DCHM, 1DCMS, 1DUSR. DtPlot sets the frequency of output + + #SAVEPLOT + DtRestart (real, seconds) + nOutputTypes (integer) + Outputtype (string, 3D, 2D, ION, NEUTRAL, ...) + DtPlot (real, seconds) + + #SAVEHIMEPLOT + HIMEPlotLonStart (real) + HIMEPlotLonEnd (real) + HIMEPlotLatStart (real) + HIMEPlotLatEnd (real) + + #SATELLITES + nSats (integer - max = ', nMaxSats, ') + SatFile1 (string) + SatOutputtype1 (string, 0DUSR or 1DUSR or other) + DtPlot1 (real, seconds) + etc... + + #RCMR + Input data type to assimilate (RHO/VTEC) + Output variable to drive (F107/PHOTOELECTRON) + Initial output estimate + Number satellites to assimilate + 1st satellite index to assimilate + 2nd satellite index to assimilate + etc... + + #DART + useDART (integer, {default 0=no}, 1=master ensemble member, 2=slave ens.) + +Sets the time for updating the high-latitude (and low-latitude) +electrodynamic drivers, such as the potential and the aurora. + + #ELECTRODYNAMICS + DtPotential (real, seconds) + DtAurora (real, seconds) + +Sets the time delay for the high latitude drivers and solar EUV inputs. + + #INPUTTIMEDELAY + TimeDelayHighLat (real, seconds) + TimeDelayEUV (real, seconds) + + #LTERadiation + DtLTERadiation (real) + +You can only have an AMIE input file for this now. Make sure you put the +ions in the AMIE file!!! + + #IONPRECIPITATION + UseIonPrecipitation (logical) + +You really want a log file. They are very important. It is output in +UA/data/log\*.dat. You can output the log file at whatever frequency you +would like, but if you set dt to some very small value, you will get an +output every iteration, which is probably a good thing. + + #LOGFILE + DtLogFile (real, seconds) + +If EUVAC = true, use EUVAC Model If Tobiska = true, use Tobiska91 Model +If both are true, average them together If UseAboveHigh, then extend the +spectrum to the longer wavelengths If UseBelowLow, then extend the +spectrum to the shorter wavelengths + + #EUV_DATA + UseEUVData (logical) + cEUVFile (string) + +This is for a FISM or some other solar spectrum file. + + #EUV_DATA + UseEUVData (logical) + cEUVFile (string) + + #ECLIPSE + start y m d h m s (int x 6) + end y m d h m s (int x 6) + start-y-gse (real) + start-z-gse (real) + end-y-gse (real) + end-z-gse (real) + peak (real) + Max Distance (real) + ExpAmp (real) + ExpWidth (real) From 6d4eaabb104783fc4128652a438fe6a3c1b7b149 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 28 May 2025 17:44:37 -0400 Subject: [PATCH 054/120] doc: "slight" changes to docs files --- srcDoc/grid.md | 57 ++++++++++++++++++++++------------------------- srcDoc/outputs.md | 3 ++- 2 files changed, 29 insertions(+), 31 deletions(-) diff --git a/srcDoc/grid.md b/srcDoc/grid.md index 2af17d19..ca71ba6f 100644 --- a/srcDoc/grid.md +++ b/srcDoc/grid.md @@ -8,36 +8,33 @@ involve some thought. There are a few variables that control this. In integer, parameter :: nLats = 9 integer, parameter :: nAlts = 50 - integer, parameter :: nBlocksMax = 4 - -The first three variables (nLons, nLats and nAlts) define the size of a -single block. In the example above, there are 9 cells in latitude, 9 -cells in longitude and 50 cells in altitude. The latitude and longitude -resolution in GITM is defined by the cell numbers specified here and the -block numbers discussed in the following section. The size of the -altitude cells are measured in scale heights instead of kilometers, as -certain regions require higher resolutions than others based on the -dominating chemical and dynamical processes. Each altitude cell contains -$`\frac{1}{3}`$ of a scale height, starting at 80 km and typically -reaching up to 500 km. Increasing the number of altitude blocks will -increase the altitude range, but if this value is increased too much the -model becomes unstable. This altitude limit makes it problematic to -model the equatorial region during storms, where increased vertical -plasma transport requires the model consider altitudes of 2000 km and -higher. - -The final variable (`nBlocksMax`) defines the maximum number of blocks you -can have on a single processor. Most people run with one single block -per processor, as this is faster. So setting this to "1" is usually -preferred, and is necessary when running with the Dynamo option on. This -is a necessity because the Dynamo routine does not correctly transfer -the geomagnetically oriented data into the geographic coordinates used -in the ghost cells. Hopefully this will be updated in future versions, -as allowing multiple blocks per node can, in theory, save memory. - -Don't forget, if you change any of these parameters you will need to -recompile the code (run the Makefile again) so that a new executable -using the newly defined variables can be produced. + integer, parameter :: nBlocksMax = 1 + +The first three variables (`nLons`, `nLats` and `nAlts`) define the size of a +single block. In the example above, there are 9 cells in latitude, 9 cells in +longitude and 50 cells in altitude. The latitude and longitude resolution in +GITM is defined by the cell numbers specified here and the block numbers +discussed in the following section. ~~The size of the altitude cells are +measured in scale heights instead of kilometers, as certain regions require +higher resolutions than others based on the dominating chemical and dynamical +processes~~. As defined in `src/ModEarth.,f90`, each altitude cell contains +$`\frac{1}{3}`$ of a scale height, starting at ~~80~~ 100 km and typically +reaching up to 500 km. Increasing the number of altitude blocks will increase +the altitude range, but if this value is increased too much the model becomes +unstable. ~~This altitude limit makes it problematic to model the equatorial +region during storms, where increased vertical plasma transport requires the +model consider altitudes of 2000 km and higher.~~ + +The final variable (`nBlocksMax`) defines the maximum number of blocks you can +have on a single processor. Most people run with one single block per processor, +as this is faster, and is necessary when running with the Dynamo option on. This +is a necessity because the Dynamo routine does not correctly transfer the +geomagnetically oriented data into the geographic coordinates used in the ghost +cells. + +!!! note + If you change any of these parameters you will need to recompile the code + so that a new executable using the newly defined variables can be produced. ## Running 3D Over the Whole Globe diff --git a/srcDoc/outputs.md b/srcDoc/outputs.md index 6598161f..8fda112c 100644 --- a/srcDoc/outputs.md +++ b/srcDoc/outputs.md @@ -1,4 +1,4 @@ -# Outputs +# Outputs {#outputs.sec} #TODO: @@ -6,6 +6,7 @@ - [ ] remove idl code - [ ] probably(?) remove the python stuff too - [ ] Fix and/or remove images +- [ ] Update the log file - [ ] update with other output types: - [ ] 3D*, 2D* - [ ] satellite outputs From cc3ae332fc8a68b20c5d068b2c6f9d0c2a701104 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 28 May 2025 17:47:51 -0400 Subject: [PATCH 055/120] doc: remove old chem (.md) file; explain current file --- srcDoc/chem.md | 394 -------------------------------------------- srcDoc/chemistry.md | 2 + 2 files changed, 2 insertions(+), 394 deletions(-) delete mode 100644 srcDoc/chem.md diff --git a/srcDoc/chem.md b/srcDoc/chem.md deleted file mode 100644 index 197d9a68..00000000 --- a/srcDoc/chem.md +++ /dev/null @@ -1,394 +0,0 @@ - - -# Chemistry {#chemistry.ch} - -EUV dissociation rate. - -$`O_2 \rightarrow 2O`$ - -$$N_2 \rightarrow 2N$$ EUV dissociation rate. - -$$O + O + M \rightarrow O_2 + M, \hspace{0.5 in} -R = 9.59 \times 10^{-46} e^{\frac{480}{T_n}}$$ - -$$N_2 \rightarrow N_2^+$$ EUV Ionization Rate. - -$$N_2 \rightarrow N_2^+$$ Auroral Ionization Rate. - -$$O_2 \rightarrow O_2^+$$ EUV Ionization Rate. - -$$O_2 \rightarrow O_2^+$$ Auroral Ionization Rate. - -$$O(^3P) \rightarrow O^+(^4S)$$ EUV Ionization Rate. - -$$O(^3P) \rightarrow O^+(^2D)$$ EUV Ionization Rate. - -$$O(^3P) \rightarrow O^+(^2P)$$ EUV Ionization Rate. - -$$\begin{split} -O(^4S) \rightarrow & O^+(^4S) (40\%) \\ -O(^4S) \rightarrow & O^+(^2D) (40\%) \\ -O(^4S) \rightarrow & O^+(^2P) (20\%) -\end{split}$$ Auroral Ionization Rate. - -$$\begin{split} -O^+(^2D) + N_2 \rightarrow & N_2^+ + O + 1.33 eV \\ -R = & 8.0\times 10^{-16} -\end{split}$$ - -$$\begin{split} -O^+(^2P) + N_2 \rightarrow & N_2^+ + O + 3.02 eV \\ -R = & 4.8\times 10^{-16} -\end{split}$$ - -$$\begin{split} -N_2^+ + O_2 \rightarrow & O_2^+ + N_2 + 3.53 eV \\ -R = & 5.0\times 10^{-17} \times \bigg(\frac{T_n+T_i}{600}\bigg)^{-0.8} -\end{split}$$ - -$$\begin{split} -N_2^+ + O \rightarrow & NO^+ + N(^2D) + 0.7 eV \\ -R = & 1.4\times 10^{-16} \times \bigg(\frac{T_n+T_i}{600}\bigg)^{-0.44} -\end{split}$$ - -$$\begin{split} -N_2^+ + e^- \rightarrow & 2N(^2D) + 1.04 eV \\ -R = & 1.8\times 10^{-13} \times \bigg(\frac{T_e}{300}\bigg)^{-0.39} -\end{split}$$ - -$$\begin{split} -N_2^+ + O \rightarrow & O^+(^4S) + N_2 + 1.96 eV \\ -R = & 1.4\times 10^{-16} \times \bigg(\frac{T_n+T_i}{600}\bigg)^{-0.44} -\end{split}$$ I am not sure that this is correct, since it is the same -as 2.8. - -$$\begin{split} -N_2^2 + NO \rightarrow & NO^+ + N_2 + 6.33 eV \\ -R = & 4.1 \times 10^{-16} -\end{split}$$ - -$$\begin{split} -O^+(^4S) + O_2 \rightarrow & O_2^+ + O + 1.55 eV \\ -R = & 2.82 \times 10^{-17} \\ - & - 7.740\times 10^{-18}(T_{O2}/300.0) \\ - & + 1.073\times 10^{-18}(T_{O2}/300.0)^2 \\ - & - 5.170\times 10^{-20}(T_{O2}/300.0)^3 \\ - & + 9.650\times 10^{-22}(T_{O2}/300.0)^4 -\end{split}$$ - -$$\begin{split} -O^+(^2D) + O_2 \rightarrow & O_2^+ + 4.865 eV \\ -R = & 7.0 \times 10^{-16} -\end{split}$$ - -$$\begin{split} -N^+ + O_2 \rightarrow & O_2^+ + N(^4S) + 2.486 \\ -R = & 1.1 \times 10^{-16} -\end{split}$$ - -$$\begin{split} -N^+ + O_2 \rightarrow & O_2^+ + N(^4D) + 0.1 \\ -R = & 2.0 \times 10^{-16} -\end{split}$$ - -$$\begin{split} -O_2^+ + e^- \rightarrow & O(^1D) + O(^1D) + 3.06 eV (31\%) \\ -O_2^+ + e^- \rightarrow & O(^3P) + O(^1D) + 3.06 eV (42\%) \\ -O_2^+ + e^- \rightarrow & O(^3P) + O(^3P) + 3.06 eV (22\%) \\ -R = & 2.4\times 10^{-13} \bigg(\frac{T_e}{300}\bigg)^{-0.7} -\end{split}$$ - -$$\begin{split} -O_2^+ + N(^4S) \rightarrow & NO^+ + O + 4.25 eV \\ -R = & 1.5 \times 10^{-16} -\end{split}$$ - -$$\begin{split} -O_2^+ + NO \rightarrow & NO^+ + O_2 + 2.813 eV \\ -R = & 4.6 \times 10^{-16} -\end{split}$$ - -$$\begin{split} -O_2^+ + N_2 \rightarrow & NO^+ + NO + 0.9333 eV \\ -R = & 5.0 \times 10^{-22} -\end{split}$$ - -$$\begin{split} -O^+(^2D) + O \rightarrow & O^+(^4S) + O(^3P) + 3.31 eV \\ -O^+(^2D) + O \rightarrow & O^+(^4S) + O(^1D) + 1.35 eV \\ -R = & 1.0 \times 10^{-17} -\end{split}$$ - -$$\begin{split} -O^+(^2D) + e^- \rightarrow & O^+(^4S) + e^- + 3.31 eV \\ -R = & 7.8 \times 10^{-14}\bigg(\frac{T_e}{300}\bigg)^{-0.5} -\end{split}$$ - -$$\begin{split} -O^+(^2D) + N_2 \rightarrow & O^+(^4S) + N_2 + 3.31 eV \\ -R = & 8.0 \times 10^{-16} -\end{split}$$ - -$$\begin{split} -O^+(^2P) + O \rightarrow & O^+(^4S) + O + 5.0 eV \\ -R = & 5.2 \times 10^{-17} -\end{split}$$ - -$$\begin{split} -O^+(^2P) + e^- \rightarrow & O^+(^4S) + e^- + 5.0 eV \\ -R = & 4.0 \times 10^{-14}\bigg(\frac{T_e}{300}\bigg)^{-0.5} -\end{split}$$ - -$$\begin{split} -O^+(^2P) \rightarrow & O^+(^4S) + 247.0nm\\ -R = & 0.047 -\end{split}$$ - -$$\begin{split} -N^+ O_2 \rightarrow & O^+(^4S) + NO + 2.31 eV\\ -R = & 3.0 \times 10^{-17} -\end{split}$$ - -$$\begin{split} -O^+(^4S) + N_2 \rightarrow & NO^+ + N(^4S) + 1.10 eV\\ -T_{eff} = & T_i + \frac{M_O}{M_O + M_{N_2}}\times\frac{M_{N_2} - M_b}{3k_b}V_i^2 \\ -M_b = &\frac{M_c}{M_{mc}} \\ -M_c = & \sum_n \frac{M_n\nu_{in}}{M_n + M_O} \\ -M_{mc} = & \sum_n \frac{ \nu_{in}}{M_n + M_O} \\ -R = & 1.533\times 10^{-18} - \\ - & 5.920\times 10^{-19} \bigg(\frac{T_{eff}}{300}\bigg) + \\ - & 8.600\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^2 (T_{eff} < 1700) \\ -R = & 2.730\times 10^{-18} - \\ - & 1.155\times 10^{-18} \bigg(\frac{T_{eff}}{300}\bigg) + \\ - & 1.483\times 10^{-19} \bigg(\frac{T_{eff}}{300}\bigg)^2 (T_{eff} > 1700) -\end{split}$$ If $T_{eff} < 350$, then $T_{eff} = 350$. If -$T_{eff} > 6000$, then $T_{eff} = 6000$. - -$$\begin{split} -O^+(^4S) + O_2 \rightarrow & O_2^+ + O + 1.55 eV\\ -R = & 2.820\times 10^{-17} - \\ - & 7.740\times 10^{-18} \bigg(\frac{T_{eff}}{300}\bigg) + \\ - & 1.073\times 10^{-18} \bigg(\frac{T_{eff}}{300}\bigg)^2 - \\ - & 5.170\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^3 + \\ - & 9.650\times 10^{-22} \bigg(\frac{T_{eff}}{300}\bigg)^4\\ -T_{eff} = & T_i + \frac{M_O}{M_O + M_{O_2}}\times\frac{M_{O_2} - M_b}{3k_b}V_i^2 -\end{split}$$ If $T_{eff} < 350$, then $T_{eff} = 350$. If -$T_{eff} > 6000$, then $T_{eff} = 6000$. - -$$\begin{split} -O^+(^4S) + NO \rightarrow & NO^+ + O + 4.36 eV\\ -R = & 8.36\times 10^{-19} - \\ - & 2.02\times 10^{-19} \bigg(\frac{T_{eff}}{300}\bigg) + \\ - & 6.95\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^2 (T_{eff} < 1500)\\ -R = & 5.33\times 10^{-19} - \\ - & 1.64\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg) + \\ - & 4.72\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^2 \\ - & 7.05\times 10^{-22} \bigg(\frac{T_{eff}}{300}\bigg)^3 (T_{eff} > 1500) \\ -T_{eff} = & T_i + \frac{M_O}{M_O + M_{NO}}\times\frac{M_{NO} - M_b}{3k_b}V_i^2 -\end{split}$$ If $T_{eff} < 350$, then $T_{eff} = 350$. If -$T_{eff} > 6000$, then $T_{eff} = 6000$. - -$$\begin{split} -O^+(^4S) + N(^2D) \rightarrow & N^+ + O + 1.45 eV\\ -R = & 1.3 \times 10^{-16} -\end{split}$$ - -$$\begin{split} -O^+(^2P) +e^- \rightarrow & O^+(^2D) + e^- + 1.69 eV\\ -R = & 1.3 \times 10^{-13} \bigg(\frac{T_e}{300}\bigg)^{-0.5} % te3m05 -\end{split}$$ - -$$\begin{split} -O^+(^2P) \rightarrow & O^+(^2D) + 732nm\\ -R = & 0.171 -\end{split}$$ - -$$\begin{split} -O^+(^2D) \rightarrow & O^+(^4S) + 372.6nm\\ -R = & 7.7\times 10^{-5} -\end{split}$$ - -$$\begin{split} -O^+(^2P) + N_2 \rightarrow & N^+ + NO + 0.70 eV\\ -R = & 1.0 \times 10^{-16} -\end{split}$$ - -$$\begin{split} -O^+_2 + N(^2D) \rightarrow & N^+ + O_2 \\ -R = & 2.5 \times 10^{-16} -\end{split}$$ - -$$\begin{split} -O^+(^2P) + N \rightarrow & N^+ + O + 2.7 eV \\ -R = & 1.0 \times 10^{-16} -\end{split}$$ - -$$\begin{split} -O^+(^2D) + N \rightarrow & N^+ + O + 1.0 eV \\ -R = & 7.5 \times 10^{-17} -\end{split}$$ - -$$\begin{split} -N^+ + O_2 \rightarrow & NO^+ + O(^1D) + 6.67 eV \\ -R = & 2.6 \times 10^{-16} -\end{split}$$ - -$$\begin{split} -N^+ + O \rightarrow & O^+(^4S) + N + 0.93 eV \\ -R = & 5.0 \times 10^{-19} -\end{split}$$ - -$$\begin{split} -NO^+ + e^- \rightarrow & O + N(^2D) + 0.38 eV \\ -R = & 4.0 \times 10^{-13} \bigg(\frac{T_e}{300}\bigg)^{-0.5} % te3m05 -\end{split}$$ - -$$\begin{split} -N(^2D) + e^- \rightarrow & N(^4S) + e^- + 2.38 eV\\ -R = & 5.5 \times 10^{-16} \bigg(\frac{T_e}{300}\bigg)^{-0.5} % te3m05 -\end{split}$$ - -$$\begin{split} -N(^2D) + O \rightarrow & N(^4S) + O(^3P) + 2.38 eV (90\%)\\ -N(^2D) + O \rightarrow & N(^4S) + O(^1D) + 0.42 eV (10\%)\\ -R = & 2.0 \times 10^{-18} -\end{split}$$ - -$$\begin{split} -N(^2D) \rightarrow & N(^4S) + 520nm \\ -R = & 1.06 \times 10^{-5} -\end{split}$$ - -$$\begin{split} -NO \rightarrow & N(^4S) + O \\ -R = & 4.5 \times 10^{-6} e^{(-1\times 10^{-8}([O_2]\times 10^{-6})^{0.38})} -\end{split}$$ - -$$\begin{split} -N(^4S) + O_2 \rightarrow & NO + O + 1.385 eV \\ -R = & 4.4 \times 10^{-18} e^{-\frac{3220}{T_n}} -\end{split}$$ - -$$\begin{split} -N(^4S) + NO \rightarrow & N_2 + O + 3.25 eV\\ -R = & 1.5 \times 10^{-18} \sqrt{T_n} -\end{split}$$ - -$$\begin{split} -N(^2P) \rightarrow & N(^2D) + 1040nm\\ -R = & 7.9 \times 10^{-2} -\end{split}$$ - -$$\begin{split} -N(^2D) + O_2 \rightarrow & NO + O(^3P) + 3.76 eV (90\%)\\ -N(^2D) + O_2 \rightarrow & NO + O(^1D) + 1.80 eV (10\%)\\ -R = & 6.2 \times 10^{-18} \frac{T_n}{300} -\end{split}$$ - -$$\begin{split} -N(^2D) + NO \rightarrow & N_2 + O + 5.63 eV\\ -R = & 7.0 \times 10^{-17} -\end{split}$$ - -$$\begin{split} -O(^1D) \rightarrow & O(^3P) + 630nm\\ -R = & 0.0071 -\end{split}$$ - -$$\begin{split} -O(^1D) \rightarrow & O(^3P) + 636.4nm\\ -R = & 0.0022 -\end{split}$$ I don't understand this\... - -$$\begin{split} -O(^1D) + e^- \rightarrow & O(^3P) + e^- + 1.96 eV\\ -R = & 2.6 \times 10^{-17} T_e^(0.5)e^(-22740/T_e) -\end{split}$$ - -$$\begin{split} -O(^1D) + N_2 \rightarrow & O(^3P) + N_2 + 1.96 eV\\ -R = & 2.3 \times 10^{-17} -\end{split}$$ - -$$\begin{split} -O(^1D) + O_2 \rightarrow & O(^3P) + O_2 + 1.96 eV\\ -R = & 2.9 \times 10^{-17} e^{\frac{67.5}{T_n}} -\end{split}$$ - -$$\begin{split} -O(^1D) + O(^3P) \rightarrow & 2O(^3P) + 1.96 eV\\ -R = & 8.0 \times 10^{-18} -\end{split}$$ - -$$\begin{split} -NO \rightarrow & NO^+ + e^-\\ -R = & 5.88 \times 10^{-7}(1+0.2(F10.7-65)/100)e^F\cos(SZA)\\ -F = & (\frac{[O_2]}{1\times 10^{6}})^{0.8855} -\end{split}$$ diff --git a/srcDoc/chemistry.md b/srcDoc/chemistry.md index 4ff6a19c..2dc71c13 100644 --- a/srcDoc/chemistry.md +++ b/srcDoc/chemistry.md @@ -1,5 +1,7 @@ # Chemistry +Chemical reactions in GITM for Earth + ```math \begin{align} O_2 \rightarrow 2O From 1b7dffa9ea552af9e5f9615fb99e54a52acf1a6b Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Thu, 29 May 2025 11:56:17 -0400 Subject: [PATCH 056/120] doc: some formatting of chemistry, and a todolist --- srcDoc/chemistry.md | 116 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 114 insertions(+), 2 deletions(-) diff --git a/srcDoc/chemistry.md b/srcDoc/chemistry.md index 2dc71c13..d9f43974 100644 --- a/srcDoc/chemistry.md +++ b/srcDoc/chemistry.md @@ -2,6 +2,16 @@ Chemical reactions in GITM for Earth +Some things we may want #todo: + +- label each reaction; like half are currently labeled +- Add refs to each so we can link to them? will be a lot of work. chatgpt can + help +- make sure everything is actually ref'd and used +- we can make an `Earth` folder, so this doesn't appear to be the only chemistry + option. + + ```math \begin{align} O_2 \rightarrow 2O @@ -20,8 +30,10 @@ EUV dissociation rate. ```math \begin{align} -O + O + M \rightarrow O_2 + M, \hspace{0.5 in} -R = 9.59 \times 10^{-46} e^{\frac{480}{T_n}} +\begin{split} +O + O + M \rightarrow O_2 + M \\ +R = 9.59 \times 10^{-46} \times e^{\frac{480}{T_n}} +\end{split} \end{align} ``` @@ -83,9 +95,11 @@ EUV Ionization Rate. ```math \begin{align} +\begin{split} O(^4S) \rightarrow O^+(^4S) (40\%) \\ O(^4S) \rightarrow O^+(^2D) (40\%) \\ O(^4S) \rightarrow O^+(^2P) (20\%) +\end{split} \end{align} ``` @@ -93,43 +107,55 @@ Auroral Ionization Rate. ```math \begin{align} +\begin{split} O^+(^2D) + N_2 \rightarrow N_2^+ + O + 1.33 eV \\ R = 8.0\times 10^{-16} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O^+(^2P) + N_2 \rightarrow N_2^+ + O + 3.02 eV \\ R = 4.8\times 10^{-16} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N_2^+ + O_2 \rightarrow O_2^+ + N_2 + 3.53 eV \\ R = 5.0\times 10^{-17} \times \bigg(\frac{T_n+T_i}{600}\bigg)^{-0.8} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N_2^+ + O \rightarrow NO^+ + N(^2D) + 0.7 eV \\ R = 1.4\times 10^{-16} \times \bigg(\frac{T_n+T_i}{600}\bigg)^{-0.44} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N_2^+ + e^- \rightarrow 2N(^2D) + 1.04 eV \\ R = 1.8\times 10^{-13} \times \bigg(\frac{T_e}{300}\bigg)^{-0.39} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N_2^+ + O \rightarrow O^+(^4S) + N_2 + 1.96 eV \\ R = 1.4\times 10^{-16} \times \bigg(\frac{T_n+T_i}{600}\bigg)^{-0.44} +\end{split} \end{align} ``` @@ -137,56 +163,70 @@ I am not sure that this is correct, since it is the same as 2.8. ```math \begin{align} +\begin{split} N_2^2 + NO \rightarrow NO^+ + N_2 + 6.33 eV \\ R = 4.1 \times 10^{-16} +\end{split} \end{align} ``` ```math \begin{align} O^+(^4S) + O_2 \rightarrow O_2^+ + O + 1.55 eV \\ +\begin{split} R = 2.82 \times 10^{-17} \\ & - 7.740\times 10^{-18}(T_{O2}/300.0) \\ & + 1.073\times 10^{-18}(T_{O2}/300.0)^2 \\ & - 5.170\times 10^{-20}(T_{O2}/300.0)^3 \\ & + 9.650\times 10^{-22}(T_{O2}/300.0)^4 +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O^+(^2D) + O_2 \rightarrow O_2^+ + 4.865 eV \\ R = 7.0 \times 10^{-16} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N^+ + O_2 \rightarrow O_2^+ + N(^4S) + 2.486 \\ R = 1.1 \times 10^{-16} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N^+ + O_2 \rightarrow O_2^+ + N(^4D) + 0.1 \\ R = 2.0 \times 10^{-16} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O_2^+ + e^- \rightarrow O(^1D) + O(^1D) + 3.06 eV (31\%) \\ O_2^+ + e^- \rightarrow O(^3P) + O(^1D) + 3.06 eV (42\%) \\ O_2^+ + e^- \rightarrow O(^3P) + O(^3P) + 3.06 eV (22\%) \\ R = 2.4\times 10^{-13} \bigg(\frac{T_e}{300}\bigg)^{-0.7} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O_2^+ + N(^4S) \rightarrow NO^+ + O + 4.25 eV \\ R = 1.5 \times 10^{-16} +\end{split} \end{align} ``` @@ -199,63 +239,82 @@ R = 4.6 \times 10^{-16} ```math \begin{align} +\begin{split} O_2^+ + N_2 \rightarrow NO^+ + NO + 0.9333 eV \\ R = 5.0 \times 10^{-22} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O^+(^2D) + O \rightarrow O^+(^4S) + O(^3P) + 3.31 eV \\ O^+(^2D) + O \rightarrow O^+(^4S) + O(^1D) + 1.35 eV \\ R = 1.0 \times 10^{-17} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O^+(^2D) + e^- \rightarrow O^+(^4S) + e^- + 3.31 eV \\ R = 7.8 \times 10^{-14}\bigg(\frac{T_e}{300}\bigg)^{-0.5} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O^+(^2D) + N_2 \rightarrow O^+(^4S) + N_2 + 3.31 eV \\ R = 8.0 \times 10^{-16} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O^+(^2P) + O \rightarrow O^+(^4S) + O + 5.0 eV \\ R = 5.2 \times 10^{-17} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O^+(^2P) + e^- \rightarrow O^+(^4S) + e^- + 5.0 eV \\ R = 4.0 \times 10^{-14}\bigg(\frac{T_e}{300}\bigg)^{-0.5} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O^+(^2P) \rightarrow O^+(^4S) + 247.0nm\\ R = 0.047 +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N^+ O_2 \rightarrow O^+(^4S) + NO + 2.31 eV\\ R = 3.0 \times 10^{-17} +\end{split} \end{align} ``` +--- + ```math \begin{align} +\begin{split} O^+(^4S) + N_2 \rightarrow NO^+ + N(^4S) + 1.10 eV \\ T_{eff} = & T_i + \frac{M_O}{M_O + M_{N_2}}\times\frac{M_{N_2} - M_b}{3k_b}V_i^2 \\ M_b = &\frac{M_c}{M_{mc}} \\ @@ -269,6 +328,7 @@ R = & 2.730\times 10^{-18} - \\ & 1.155\times 10^{-18} \bigg(\frac{T_{eff}}{300}\bigg) + \\ & 1.483\times 10^{-19} \bigg(\frac{T_{eff}}{300}\bigg)^2 \\ (T_{eff} > 1700) +\end{split} \end{align} ``` @@ -276,8 +336,11 @@ If $`T_{eff} < 350`$, then $`T_{eff} = 350`$. If $`T_{eff} > 6000`$, then $`T_{eff} = 6000`$. +--- + ```math \begin{align} +\begin{split} O^+(^4S) + O_2 \rightarrow O_2^+ + O + 1.55 eV\\ R = & 2.820\times 10^{-17} - \\ & 7.740\times 10^{-18} \bigg(\frac{T_{eff}}{300}\bigg) + \\ @@ -285,6 +348,7 @@ R = & 2.820\times 10^{-17} - \\ & 5.170\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^3 + \\ & 9.650\times 10^{-22} \bigg(\frac{T_{eff}}{300}\bigg)^4\\ T_{eff} = & T_i + \frac{M_O}{M_O + M_{O_2}}\times\frac{M_{O_2} - M_b}{3k_b}V_i^2 +\end{split} \end{align} ``` @@ -294,6 +358,7 @@ If $`T_{eff} > 6000`$, then $`T_{eff} = 6000`$. ```math \begin{align} +\begin{split} O^+(^4S) + NO \rightarrow NO^+ + O + 4.36 eV\\ R = & 8.36\times 10^{-19} - \\ & 2.02\times 10^{-19} \bigg(\frac{T_{eff}}{300}\bigg) + \\ @@ -303,6 +368,7 @@ R = & 5.33\times 10^{-19} - \\ & 4.72\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^2 \\ & 7.05\times 10^{-22} \bigg(\frac{T_{eff}}{300}\bigg)^3 (T_{eff} > 1500) \\ T_{eff} = & T_i + \frac{M_O}{M_O + M_{NO}}\times\frac{M_{NO} - M_b}{3k_b}V_i^2 +\end{split} \end{align} ``` @@ -312,157 +378,201 @@ If $`T_{eff} > 6000`$, then $`T_{eff} = 6000`$. ```math \begin{align} +\begin{split} O^+(^4S) + N(^2D) \rightarrow N^+ + O + 1.45 eV\\ R = 1.3 \times 10^{-16} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O^+(^2P) +e^- \rightarrow O^+(^2D) + e^- + 1.69 eV\\ R = 1.3 \times 10^{-13} \bigg(\frac{T_e}{300}\bigg)^{-0.5} % te3m05 +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O^+(^2P) \rightarrow O^+(^2D) + 732nm\\ R = 0.171 +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O^+(^2D) \rightarrow O^+(^4S) + 372.6nm\\ R = 7.7\times 10^{-5} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O^+(^2P) + N_2 \rightarrow N^+ + NO + 0.70 eV\\ R = 1.0 \times 10^{-16} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O^+_2 + N(^2D) \rightarrow N^+ + O_2 \\ R = 2.5 \times 10^{-16} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O^+(^2P) + N \rightarrow N^+ + O + 2.7 eV \\ R = 1.0 \times 10^{-16} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O^+(^2D) + N \rightarrow N^+ + O + 1.0 eV \\ R = 7.5 \times 10^{-17} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N^+ + O_2 \rightarrow NO^+ + O(^1D) + 6.67 eV \\ R = 2.6 \times 10^{-16} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N^+ + O \rightarrow O^+(^4S) + N + 0.93 eV \\ R = 5.0 \times 10^{-19} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} NO^+ + e^- \rightarrow O + N(^2D) + 0.38 eV \\ R = 4.0 \times 10^{-13} \bigg(\frac{T_e}{300}\bigg)^{-0.5} % te3m05 +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N(^2D) + e^- \rightarrow N(^4S) + e^- + 2.38 eV\\ R = 5.5 \times 10^{-16} \bigg(\frac{T_e}{300}\bigg)^{-0.5} % te3m05 +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N(^2D) + O \rightarrow N(^4S) + O(^3P) + 2.38 eV (90\%)\\ N(^2D) + O \rightarrow N(^4S) + O(^1D) + 0.42 eV (10\%)\\ R = 2.0 \times 10^{-18} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N(^2D) \rightarrow N(^4S) + 520nm \\ R = 1.06 \times 10^{-5} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} NO \rightarrow N(^4S) + O \\ R = 4.5 \times 10^{-6} e^{(-1\times 10^{-8}([O_2]\times 10^{-6})^{0.38})} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N(^4S) + O_2 \rightarrow NO + O + 1.385 eV \\ R = 4.4 \times 10^{-18} e^{-\frac{3220}{T_n}} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N(^4S) + NO \rightarrow N_2 + O + 3.25 eV\\ R = 1.5 \times 10^{-18} \sqrt{T_n} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N(^2P) \rightarrow N(^2D) + 1040nm\\ R = 7.9 \times 10^{-2} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N(^2D) + O_2 \rightarrow NO + O(^3P) + 3.76 eV (90\%)\\ N(^2D) + O_2 \rightarrow NO + O(^1D) + 1.80 eV (10\%)\\ R = 6.2 \times 10^{-18} \frac{T_n}{300} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} N(^2D) + NO \rightarrow N_2 + O + 5.63 eV\\ R = 7.0 \times 10^{-17} +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O(^1D) \rightarrow O(^3P) + 630nm\\ R = 0.0071 +\end{split} \end{align} ``` ```math \begin{align} +\begin{split} O(^1D) \rightarrow O(^3P) + 636.4nm\\ R = 0.0022 +\end{split} \end{align} ``` @@ -470,8 +580,10 @@ I don't understand this... ```math \begin{align} +\begin{split} O(^1D) + e^- \rightarrow O(^3P) + e^- + 1.96 eV\\ R = 2.6 \times 10^{-17} T_e^(0.5)e^(-22740/T_e) +\end{split} \end{align} ``` From a145446166fe970a1e63486f377cee5284776285 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 3 Jun 2025 15:15:38 -0400 Subject: [PATCH 057/120] doc: make postprocessing page --- srcDoc/postprocessing.md | 141 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 srcDoc/postprocessing.md diff --git a/srcDoc/postprocessing.md b/srcDoc/postprocessing.md new file mode 100644 index 00000000..61735bd6 --- /dev/null +++ b/srcDoc/postprocessing.md @@ -0,0 +1,141 @@ +# Postprocessing + +GITM stores outputs at a cadence specified in the input `UAM.in` file. When +running, there is one file created by each processor, for each output type +(`3DALL`, `2DANC`, etc.), plus one header file at each `DtOutput`. This creates +an extremely large number of files on long runs across many cores. To make the +number of files more manageable and easier to read, they are post-processed into +`.bin` files, one for each output type at each `DtOutput`. + +When running `make rundir`, a file is placed within the `run/` folder called +`post_process.py` which is the entrypoint for postprocessing. This turns the raw +GITM outputs from this: + +```bash +> ls UA/data + 3DALL_t021221_000000.b0001 3DALL_t021221_000000.header 3DALL_t021221_000500.b0004 + 3DALL_t021221_000000.b0002 3DALL_t021221_000500.b0001 3DALL_t021221_000500.header + 3DALL_t021221_000000.b0003 3DALL_t021221_000500.b0002 log00000002.dat + 3DALL_t021221_000000.b0004 3DALL_t021221_000500.b0003 run_information.txt +``` + +Into this: + +```bash +> ls UA/data + 3DALL_t021221_000000.bin 3DALL_t021221_000500.bin log00000002.dat run_information.txt +``` + +## post_process.py Usage + +`post_process.py` supports burst processing (process existing files & exit), or +can watch for new outputs for a specified duration and process new outputs as +they are created. The output `.bin` files can be moved to a remote system, +tarred, and/or exist alongside the raw outputs. + +The help message for `post_process.py`: + +``` +./post_process.py -h + usage: post_process.py [-h] [-remotefile REMOTEFILE] [-user USER] [-server SERVER] + [-dir DIR] [-sleep SLEEP] [-totaltime TOTALTIME] [-q] [-v] + [-norm] [-tgz] + + Post process and (optionally) move model results. + - This functions similar to pGITM.py, but can copy files to + a remote location, or postprocess files as they are created. + + options: + -h, --help show this help message and exit + -remotefile REMOTEFILE + File that contains info. about remote system + -user USER remote user name (default none) + -server SERVER remote system name (default none) + -dir DIR remote directory to use (default none) + -sleep SLEEP how long to sleep between loops in seconds, (default 300) + -totaltime TOTALTIME specify how long to run in total in hours, (default 0 - only run + once) + -q Run with verbose turned off + -v Run with verbose + -norm don't remove any files + -tgz tar and zip raw GITM file instead of process +``` + +### Arguments + +#### remotefile + +Path to a file with information on the remote system to copy files to. This is +useful when running on a remote system with storage limitations such that files +can be copied externally faster than they are created. Within the `remotefile`, +three lines are checked and should contain: + +``` +username +hostname +/path/to/remote/directory +``` + +This information is used in a rsync command to copy the files, with the form +`rsync [output files] username@hostname:/path/to/remote/directory`. + +It is not necessary to use a `remotefile` and it is also possible to specify +these three strings as individual arguments. + +#### user + +Username to use when copying files to a remote location. + +#### server + +Server/hostname to move `.bin` files to. As the script uses `rsync` to copy +these files, it is possible to use a hostname alias from `~/.ssh/config` as the +server. + +#### dir + +Path on remote server to move post-processed files to. If the final directory +does not yet exist, it will be created. + +#### sleep + +This sets the time, in seconds, to wait in between checking for new files. This +is only used if `-totaltime` is set. The default value is 300 seconds, or 5 +minutes. + +#### totaltime + +`-totaltime` sets the maximum amount of time this script should run for, in +hours. The default value is 0 hours, so the script will run once and exit. The +script will continue running until `totaltime` has elapsed, even if the run has +finished, so care should be taken to estimate the actual time a run will take. + +#### norm + +`-norm` means no-rm, and if specified, will prevent the automatic removal of the +raw outputs. + +#### tgz + +`-tgz` tells the script to tar and g-zip the outputs to save space. This is +somewhat CPU intensive. + +--- + + +## pGITM + +If the run is creating files faster than they are postprocessed, do not panic. + +GITM would create a `csh` script before the introduction of this Python script +which is still available. `pGITM` and `PostGITM.exe` use a Fortran backend +instead of post_process.py which uses Scipy. The Fortran code may be faster than +Python. + +To access these, run `make POST` from GITM's root folder. If this is run before +`make rundir`, they will be placed in `run/` without manual intervention. If +`run` has already been created and moved or renamed, they must be copied +manually. `post_process.py` will prefer to use the Fortran post-processor and +only use Scipy if it is not found. + +`pGITM` will only run one time and required `csh`. From 67687bcc03fac719836c45f3d6ca9dcefc6e60d5 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 3 Jun 2025 15:16:05 -0400 Subject: [PATCH 058/120] doc: rewrite quickstart.md --- srcDoc/quick_start.md | 164 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 153 insertions(+), 11 deletions(-) diff --git a/srcDoc/quick_start.md b/srcDoc/quick_start.md index a3865f96..7de72775 100644 --- a/srcDoc/quick_start.md +++ b/srcDoc/quick_start.md @@ -1,34 +1,176 @@ # Quick Start -To get started, here is what you need: +If a fortran compiler & MPI are already installed on your system, you may wish +to skip down to [Getting the Code](#getting-the-code). + +If you are unsure whether or not things are installed & set up correctly, a good +way to check is to print the version number with `gfortran --version` (change to +`ifort` if using the Intel compiler). The MPI implementation can be checked +with `mpirun --version`. If there is an error, something is not configured +correctly. ## Requirements -at a minimum, you need: +At a minimum, you need: -- git - a fortran compiler (gfortran, ifort, ifx, etc.) - MPI (~~mpich~~, openmpi, mvapich, etc.) -- perl (you probably have this) +- GNU Make (`make`) -## Getting the code + +*[MPI]: Message Passing Interface + +There is no difference in the outputs between different compilers, however some +compilers may produce slightly faster executables than others. For example, +using ifort on [Pleiades](https://www.nas.nasa.gov/hecc/resources/pleiades.html) +is faster than using gfortran (gcc) or aocc. + +As GITM can run on as many (or few) CPU cores as you wish, it is possible to run +GITM on a laptop or workstation. This is recommended for development, as the +turnaround for test runs will be much faster. + +### Linux Install Dependencies + +On a Ubuntu-based linux distribution, the following commands will download GNU +Make, the GCC fortran compiler & Open-MPI: + +```bash +sudo apt-get install gfortran libopenmpi-dev make +``` + +Similarly, Fedora-based distributions can use: + +```bash +sudo yum install gcc-gfortran openmpi-devel +``` + +### MacOS Install Dependencies + +Installing gfortran on MacOS is most easily accomplished with a package manager +like [Homebrew](https://brew.sh/) or [MacPorts](https://www.macports.org/). +Homebrew users will need to run: + +```bash +brew install gfortran open-mpi +``` + +And MacPorts users can run: + +```bash +sudo port install gcc?? open-mpi +``` +> Make sure to specify a version number in place of `??` above! Use +> `port search --name --glob 'gcc*'`, or `port search gfortran` to see +> available Ports. + + +### Recommended HPC Modules + +Feel free to contribute to this list of recommended modules if you have +experience with GITM on other systems: +- Pleiades + - `comp-intel` + - `mpi-hpe` +- Derecho + - `intel` + - `cray-mpich` -do this: +Consult the documentation for each system to see which modules are available and +how to load them. The modules you use to compile GITM *may* be required to be +loaded when running, so it may be wise to set these to your defaults, or at +least take note of what was used and load them in the job script. + +## Getting the code + +GITM is hosted on GitHub. The `main` branch is stable and updated as important +features are added (in the `develop` branch). The `main` branch is default and +no additional steps are needed to use the latest, stable, version. Just clone +the GITM repository, and all dependencies like the +[share](https://github.com/SWMFsoftware/share), +[util](https://github.com/SWMFsoftware/util), and +[electrodynamics](https://github.com/GITMCode/Electrodynamics) libraries will be +downloaded during configuration. ```shell git clone git@github.com:GITMCode/GITM.git cd GITM ``` -!!! note +!!! note Replace `git@github.com:GITMCode/GITM.git` with - `https://github.com/GITMCode/GITM.git` if you don't have ssh set up! + `https://github.com/GITMCode/GITM.git` if you don't have Github ssh keys set + up. + +All of the following steps assume you have not changed out of the `GITM/` +directory. Most will error if run from another location, but this will not break +anything! Simply `cd` back to `GITM/` and try again. -## Configuring +## Configuring & Compiling -Use: +This step ensures GITM compiles with the correct compilers, for the correct +planet, and a few other settings. To configure GITM for Earth using the +`gfortran` compiler, run: ```bash -./Config.pl -install [...] +./Config.pl -install -earth -compiler=gfortran ``` + +!!! caution + Prior GITM versions required specifying `compiler=gfortran10` when using + `gfortran>=10.0.0`, however this is no longer necessary. + +The full list of available configuration options can be found by running +`./Config.pl -h`. A useful flag while developing is `-debug` which will print a +traceback if an error is encountered, as well as performing some additional +validity checks when running. + +This should have downloaded all necessary external libraries and created some +extra files necessary to compile. To compile, simply run: + +```bash +make +``` + +!!! note + Compilation can often take a while. This can be done in parallel with + `make -j`, which will use all available cores. To limit the number of cores + to 8, for example, use `make -j8` + +If this runs without error, GITM is ready to be run! + +## Running the Code + +When GITM is compiled, the executable is placed in `src/GITM.exe`. This is not +where we want to run it from, however. To create a directory with the GITM +executable and the necessary input files, run the command: + +```bash +make rundir +``` + +Now there should be a new directory in the GITM folder called `run/`. This +folder can be moved, copied, renamed, etc. without issue. + +!!! Note + If a study requires multiple runs of GITM, it can be most time-effective to + copy or move the folder that was just created to somewhere a lot of data + can be stored. For example, one could now run + `cp -R run/ /path/to/scratch/storage/thisproject/run01`, and repeat for as + many runs are necessary. + +It is now time to do some runs! The folder we just created contains a `UAM.in` +file which calls for 4 CPU cores and simulates 5 minutes in December of 2002. +This all can, of course, be adjusted later. To start this run, we first need to +`cd` into the run directory, then tell MPI to run `GITM.exe` on 4 cores. + +```bash +cd run/ +mpirun -np 4 ./GITM.exe +``` + +Wait a moment... And if no errors are reported then congratulations! You have +now run GITM! + +The next steps include exploring how to [postprocess](postprocessing.md) the +outputs, and modifying the [input files](inputs.md). From 5656f97f4c455d7ee1b3299f365b976646bd7c7b Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 3 Jun 2025 16:27:34 -0400 Subject: [PATCH 059/120] doc: update grid.md w cells vs blocks & more info --- srcDoc/grid.md | 174 ++++++++++++++++++++++++++++--------------------- 1 file changed, 99 insertions(+), 75 deletions(-) diff --git a/srcDoc/grid.md b/srcDoc/grid.md index ca71ba6f..464b1dbe 100644 --- a/srcDoc/grid.md +++ b/srcDoc/grid.md @@ -1,97 +1,83 @@ # Setting the Grid -Setting the grid resolution in GITM is not very complicated, but it does -involve some thought. There are a few variables that control this. In -`ModSize.f90`, the following variables are defined: +Setting the grid resolution in GITM is not very complicated, but it does involve +some thought. There are a few variables that control this. - integer, parameter :: nLons = 9 - integer, parameter :: nLats = 9 - integer, parameter :: nAlts = 50 +## Important Variables - integer, parameter :: nBlocksMax = 1 +Each CPU core that GITM is run on is considered a **block**. Within each block, +the grid is further divided into **cells**. The number of cells per block is set +before compiling, and the number of blocks to model is decided at runtime. The +number of blocks per core cannot change from 1. Thus, the resulting resolution +is dependent on how many cores GITM is run on, specified in the `UAM.in` file, +and the number of cells within each block, specified in `src/ModSize.f90`. + +### Cells + +In `ModSize.f90`, the following variables are defined: + +```fortran +integer, parameter :: nLons = 9 +integer, parameter :: nLats = 9 +integer, parameter :: nAlts = 50 + +integer, parameter :: nBlocksMax = 1 +``` -The first three variables (`nLons`, `nLats` and `nAlts`) define the size of a -single block. In the example above, there are 9 cells in latitude, 9 cells in -longitude and 50 cells in altitude. The latitude and longitude resolution in -GITM is defined by the cell numbers specified here and the block numbers -discussed in the following section. ~~The size of the altitude cells are -measured in scale heights instead of kilometers, as certain regions require -higher resolutions than others based on the dominating chemical and dynamical -processes~~. As defined in `src/ModEarth.,f90`, each altitude cell contains -$`\frac{1}{3}`$ of a scale height, starting at ~~80~~ 100 km and typically -reaching up to 500 km. Increasing the number of altitude blocks will increase -the altitude range, but if this value is increased too much the model becomes -unstable. ~~This altitude limit makes it problematic to model the equatorial -region during storms, where increased vertical plasma transport requires the -model consider altitudes of 2000 km and higher.~~ +The first three variables (`nLons`, `nLats` and `nAlts`) define the size of each +block. In the defaults shown above, there are 9 cells in latitude, 9 cells in +longitude and 50 altitude cells on each block. The final variable (`nBlocksMax`) defines the maximum number of blocks you can -have on a single processor. Most people run with one single block per processor, -as this is faster, and is necessary when running with the Dynamo option on. This -is a necessity because the Dynamo routine does not correctly transfer the -geomagnetically oriented data into the geographic coordinates used in the ghost -cells. +have on a single processor. This is deprecated and will cause issues when set to +something other than 1. It will be removed in a future release. !!! note - If you change any of these parameters you will need to recompile the code - so that a new executable using the newly defined variables can be produced. + If you change any of these parameters, you will need to recompile the code. -## Running 3D Over the Whole Globe +### Blocks (UAM.in) -Once the number of cells is defined, then the number of blocks in -latitude and longitude need to be defined. This is done in the `UAM.in` -file, as shown in section [\[uam.sec\]](#uam.sec){reference-type="ref" -reference="uam.sec"}. For example, the initial settings have 8 blocks in -latitude and 8 in longitude: +Once the number of cells per block is defined, then the number of blocks in +latitude and longitude need to be defined. This is done in the `UAM.in` file at +runtime. For example, the initial settings have 2 blocks in latitude and 2 in +longitude: #GRID - 8 lons - 8 lats + 2 lons + 2 lats -90.0 minimum latitude to model 90.0 maximum latitude to model - 0.0 minimum longitude to model - 0.0 maximum longitude to model - -The number of cells in the simulation domain will then be 72 in -longitude, 72 in latitude, and 50 in altitude. Given that there are -$`360\deg`$ in longitude and $`180\deg`$ in latitude, the resolution would -be $`360\deg/72 = 5.0\deg`$ and $`180\deg/72 = 2.5\deg`$ in latitude. If one -block were put on each processor, 64 processors would be required. - -If one desired to run without the Dynamo turned on, the problem could -also be run with multiple blocks per node. This grid fits quite nicely -on either four- or eight-core processors. However, on 12-core processors -this would not work very well at all. We have started to run simulations -of $`1\deg`$ in latitude and $`5\deg`$ in longitude, which can fit nicely on -a 12-core processor machine. For example, in `ModSize.f90`: + 0.0 longitude start to model (set to 0.0 for whole Earth) + 0.0 longitude end to model (set to 0.0 for whole Earth) - integer, parameter :: nLons = 9 - integer, parameter :: nLats = 15 +The number of blocks can be changed without needing to recompile. The same +binary can be used to verify things are working on four cores, and then do a +science run on 200 cores. -and in `UAM.in`: +The number of cores required is the product of the number of blocks in longitude +and latitude. Doubling the resolution in both latitude and longitude requires +four times as many cores since $`(2*nLons) \times (2*nLats) = 4\times (nLons*nLats)`$. - #GRID - 8 lons - 12 lats +## Horizontal Resolution -This can then run on 96 cores, which is nicely divisible by 12. -Essentially, an infinite combination of cells per block and number of -blocks can be utilized. Typically, the number of blocks in latitude and -longitude are even numbers. +The number of *total* grid cells in the examples above will then be +$`(2\times9=)18`$ in both longitude & latitude, and 50 in altitude. Given that +there are $`360^\circ`$ in longitude and $`180^\circ`$ in latitude, the +resolution would be $`360^\circ/18 = 20.0^\circ`$ in longitude and +$`180^\circ/18 =10^\circ`$ in latitude. These settings are useful for debugging +and developing, but not for production runs. -## Running 3D Over the Part of the Globe +For production runs, the resolution typically desired is $`4^\circ`$ longitude +by $`1^\circ`$ latitude. With the default values in `src/ModSize.f90`, this +requires 200 processing cores and the following values in the `UAM.in` file: -GITM can be run over part of the globe - both in latitude and in -longitude. It can be run over a single polar region (by setting either -the minimum or maximum latitude to be greater (or less) than -$`\pm 90\deg`$). If this is selected, message passing over the poles is -implemented. If the pole is not selected, then boundary conditions have -to be set in `set_horizontal_bcs.f90`. By default, a continuous gradient -boundary condition is used on the densities and temperatures, while a -continuous value is used on the velocity. This is true in both latitude -and longitude. In longitude, message passing is implemented all of the -time, but the values are over-written by the boundary conditions if the -maximum and minimum longitude are not equal to each other. + #GRID + 10 lons + 20 lats + -90.0 minimum latitude to model + 90.0 maximum latitude to model + 0.0 longitude start to model (set to 0.0 for whole Earth) + 0.0 longitude end to model (set to 0.0 for whole Earth) The longitudinal resolution ($`\Delta{\phi}`$) is set by: @@ -99,12 +85,50 @@ The longitudinal resolution ($`\Delta{\phi}`$) is set by: \Delta{\phi} = \frac{\phi_{end} - \phi_{start}}{nBlocksLon \times nCellsLon} ``` -while, the latitudinal resolution ($\Delta{\theta}$) is set by: +While the latitudinal resolution ($`\Delta{\theta}`$) is set by: ```math \Delta{\theta} = \frac{\theta_{end} - \theta_{start}}{nBlocksLat \times nCellsLat} ``` +--- + +Some recommended settings are listed below. An ideal setup would minimize the +unused cores on each node, while balancing runtime (increases with more cells +per block) and the number of files created (increases with more cores (blocks)) + +| Resolution
$`(^\circ Lon \times ^\circ Lat)`$ | Total Cores | nBlocks
(nLons x nLats) | nCells
(nLon x nLat) | +| :--- | ---- | :-----: | :----: | +| 4 x 1 | 200 | 10 x 20 | 9 x 9 | +| 4 x 1 | 360 = (120 * 3) | 10 x 36 | 9 x 5 | +| 4 x 1 | 120 | 6 x 20 | 15 x 9 | +| 4 x 1 | 180 | 9 x 20 | 10 x 9 | +| 2 x 0.5 | 800 | 20 x 40 | 9 x 9 | + +Experimentation may be necessary to find the parameters which work best on the +system GITM is run on. + +## Running 3D Over the Part of the Globe + +GITM can be run over part of the globe - both in latitude and in longitude. It +can be run over a single polar region (by setting either the minimum or maximum +latitude to be greater (or less) than $`\pm 90^\circ`$). If this is selected, +message passing over the poles is implemented. If the pole is not selected, then +boundary conditions have to be set in `set_horizontal_bcs.f90`. By default, a +continuous gradient boundary condition is used on the densities and +temperatures, while a continuous value is used on the velocity. This is true in +both latitude and longitude. In longitude, message passing is implemented all of +the time, but the values are over-written by the boundary conditions if the +maximum and minimum longitude are not equal to each other. + +## Altitudes + +As defined in `src/ModEarth.f90`, each altitude block contains $`\frac{1}{3}`$ +of a scale height, starting at 100 km and typically reaching up to ~5-700 km. +Increasing the number of altitude blocks will increase the altitude range, but +if this value is increased too much the model may become unstable and/or +inaccurate. + ## Running in 1D GITM can run in 1D mode, in which the call to advance_horizontal is not @@ -134,5 +158,5 @@ exact point for as long as you specify. One thing to keep in mind with running in 1D is that the Earth still rotates, so the spot will have a strong day to night variation in temperature. In 3D, the winds decrease some of the variability between day and night, but in 1D, this doesn't -happen. So, the results are going to be perfect. But, 1D is great for +happen. So, the results are not going to be perfect. But 1D is great for debugging. From eb7b01e02e49a8f6bc45d27436b5fefc2f3d2757 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 4 Jun 2025 13:41:18 -0400 Subject: [PATCH 060/120] update checklist & outline --- srcDoc/index.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/srcDoc/index.md b/srcDoc/index.md index cc22e363..5b38cc68 100644 --- a/srcDoc/index.md +++ b/srcDoc/index.md @@ -48,9 +48,10 @@ And it should be auto-magic. open the link in your browser. Feel free to add to this -- [ ] Move over the existing latex manual pages - - [ ] Verify that info is correct, relevant, and necessary - - [ ] Organize that information +- [x] Move over the existing latex manual pages + - [ ] Verify that info is correct, relevant, and necessary (ALB in progress) + - [ ] Organize that information (ALB in progress) + - [ ] Fix links from latex manual pages - [ ] Keep filling out information! @@ -65,12 +66,14 @@ few sections here are repetitive and don't need to be. - Quick start - more detailed config options - how to actually run the code -- Running the code - - grid resolution & blocks explained - - what inputs are necessary for what IE models (basic) -- Inputs +- Grid + - cells vs blocks + - how to get to the resolution you want +- Inputs - common - Important and/or frequently changed UAM options - more details on files necessary for some options +- Inputs - all + - long page with all possible options that GITM can check - Outputs - each output type's variables? - FAQ @@ -81,3 +84,5 @@ few sections here are repetitive and don't need to be. - where can I find example input files? (GITMCode/GITM_Input_files) - where can I find example outputs (CCMC?) - Can you add this feature? no. You can, or fill out a feature request. +- Electrodynamics +- Chemistry From 6b1ed2e43e86b96607b4930344683c282057ec4b Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 4 Jun 2025 13:42:37 -0400 Subject: [PATCH 061/120] doc: build local docs faster with `mkdocs serve` I guess it downloads mermaid's javascript library every time docs are built. This takes build times from ~180 seconds to <10 Can be removed before PR or release. --- mkdocs.yml | 3 +- srcDoc/js/mermaid.min.js | 2607 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 2609 insertions(+), 1 deletion(-) create mode 100644 srcDoc/js/mermaid.min.js diff --git a/mkdocs.yml b/mkdocs.yml index 7add9e50..008a9760 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -5,7 +5,8 @@ theme: # name: material plugins: - search # allow for search after being built - - mermaid2 # cool flowcharts + - mermaid2: # cool diagrams + javascript: js/mermaid.min.js # local path to mermaid javascript file markdown_extensions: - pymdownx.extra #footnotes, abbreviations, tables, definitions, etc. diff --git a/srcDoc/js/mermaid.min.js b/srcDoc/js/mermaid.min.js new file mode 100644 index 00000000..5243aba4 --- /dev/null +++ b/srcDoc/js/mermaid.min.js @@ -0,0 +1,2607 @@ +"use strict";var __esbuild_esm_mermaid=(()=>{var B2e=Object.create;var by=Object.defineProperty;var F2e=Object.getOwnPropertyDescriptor;var $2e=Object.getOwnPropertyNames;var z2e=Object.getPrototypeOf,G2e=Object.prototype.hasOwnProperty;var o=(t,e)=>by(t,"name",{value:e,configurable:!0});var N=(t,e)=>()=>(t&&(e=t(t=0)),e);var Mi=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),hr=(t,e)=>{for(var r in e)by(t,r,{get:e[r],enumerable:!0})},L4=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of $2e(e))!G2e.call(t,i)&&i!==r&&by(t,i,{get:()=>e[i],enumerable:!(n=F2e(e,i))||n.enumerable});return t},Sr=(t,e,r)=>(L4(t,e,"default"),r&&L4(r,e,"default")),Sa=(t,e,r)=>(r=t!=null?B2e(z2e(t)):{},L4(e||!t||!t.__esModule?by(r,"default",{value:t,enumerable:!0}):r,t)),V2e=t=>L4(by({},"__esModule",{value:!0}),t);var R4=Mi((EC,SC)=>{"use strict";(function(t,e){typeof EC=="object"&&typeof SC<"u"?SC.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs=e()})(EC,function(){"use strict";var t=1e3,e=6e4,r=36e5,n="millisecond",i="second",a="minute",s="hour",l="day",u="week",h="month",f="quarter",d="year",p="date",m="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|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,v={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:o(function(k){var L=["th","st","nd","rd"],R=k%100;return"["+k+(L[(R-20)%10]||L[R]||L[0])+"]"},"ordinal")},x=o(function(k,L,R){var O=String(k);return!O||O.length>=L?k:""+Array(L+1-O.length).join(R)+k},"m"),b={s:x,z:o(function(k){var L=-k.utcOffset(),R=Math.abs(L),O=Math.floor(R/60),M=R%60;return(L<=0?"+":"-")+x(O,2,"0")+":"+x(M,2,"0")},"z"),m:o(function k(L,R){if(L.date()1)return k(F[0])}else{var P=L.name;C[P]=L,M=P}return!O&&M&&(w=M),M||!O&&w},"t"),S=o(function(k,L){if(E(k))return k.clone();var R=typeof L=="object"?L:{};return R.date=k,R.args=arguments,new I(R)},"O"),_=b;_.l=A,_.i=E,_.w=function(k,L){return S(k,{locale:L.$L,utc:L.$u,x:L.$x,$offset:L.$offset})};var I=function(){function k(R){this.$L=A(R.locale,null,!0),this.parse(R),this.$x=this.$x||R.x||{},this[T]=!0}o(k,"M");var L=k.prototype;return L.parse=function(R){this.$d=function(O){var M=O.date,B=O.utc;if(M===null)return new Date(NaN);if(_.u(M))return new Date;if(M instanceof Date)return new Date(M);if(typeof M=="string"&&!/Z$/i.test(M)){var F=M.match(g);if(F){var P=F[2]-1||0,z=(F[7]||"0").substring(0,3);return B?new Date(Date.UTC(F[1],P,F[3]||1,F[4]||0,F[5]||0,F[6]||0,z)):new Date(F[1],P,F[3]||1,F[4]||0,F[5]||0,F[6]||0,z)}}return new Date(M)}(R),this.init()},L.init=function(){var R=this.$d;this.$y=R.getFullYear(),this.$M=R.getMonth(),this.$D=R.getDate(),this.$W=R.getDay(),this.$H=R.getHours(),this.$m=R.getMinutes(),this.$s=R.getSeconds(),this.$ms=R.getMilliseconds()},L.$utils=function(){return _},L.isValid=function(){return this.$d.toString()!==m},L.isSame=function(R,O){var M=S(R);return this.startOf(O)<=M&&M<=this.endOf(O)},L.isAfter=function(R,O){return S(R){"use strict";CF=Sa(R4(),1),eu={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},Y={trace:o((...t)=>{},"trace"),debug:o((...t)=>{},"debug"),info:o((...t)=>{},"info"),warn:o((...t)=>{},"warn"),error:o((...t)=>{},"error"),fatal:o((...t)=>{},"fatal")},wy=o(function(t="fatal"){let e=eu.fatal;typeof t=="string"?t.toLowerCase()in eu&&(e=eu[t]):typeof t=="number"&&(e=t),Y.trace=()=>{},Y.debug=()=>{},Y.info=()=>{},Y.warn=()=>{},Y.error=()=>{},Y.fatal=()=>{},e<=eu.fatal&&(Y.fatal=console.error?console.error.bind(console,bo("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",bo("FATAL"))),e<=eu.error&&(Y.error=console.error?console.error.bind(console,bo("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",bo("ERROR"))),e<=eu.warn&&(Y.warn=console.warn?console.warn.bind(console,bo("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",bo("WARN"))),e<=eu.info&&(Y.info=console.info?console.info.bind(console,bo("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",bo("INFO"))),e<=eu.debug&&(Y.debug=console.debug?console.debug.bind(console,bo("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",bo("DEBUG"))),e<=eu.trace&&(Y.trace=console.debug?console.debug.bind(console,bo("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",bo("TRACE")))},"setLogLevel"),bo=o(t=>`%c${(0,CF.default)().format("ss.SSS")} : ${t} : `,"format")});var U2e,e0,CC,AF,N4=N(()=>{"use strict";U2e=Object.freeze({left:0,top:0,width:16,height:16}),e0=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),CC=Object.freeze({...U2e,...e0}),AF=Object.freeze({...CC,body:"",hidden:!1})});var H2e,_F,DF=N(()=>{"use strict";N4();H2e=Object.freeze({width:null,height:null}),_F=Object.freeze({...H2e,...e0})});var AC,M4,LF=N(()=>{"use strict";AC=o((t,e,r,n="")=>{let i=t.split(":");if(t.slice(0,1)==="@"){if(i.length<2||i.length>3)return null;n=i.shift().slice(1)}if(i.length>3||!i.length)return null;if(i.length>1){let l=i.pop(),u=i.pop(),h={provider:i.length>0?i[0]:n,prefix:u,name:l};return e&&!M4(h)?null:h}let a=i[0],s=a.split("-");if(s.length>1){let l={provider:n,prefix:s.shift(),name:s.join("-")};return e&&!M4(l)?null:l}if(r&&n===""){let l={provider:n,prefix:"",name:a};return e&&!M4(l,r)?null:l}return null},"stringToIcon"),M4=o((t,e)=>t?!!((e&&t.prefix===""||t.prefix)&&t.name):!1,"validateIconName")});function RF(t,e){let r={};!t.hFlip!=!e.hFlip&&(r.hFlip=!0),!t.vFlip!=!e.vFlip&&(r.vFlip=!0);let n=((t.rotate||0)+(e.rotate||0))%4;return n&&(r.rotate=n),r}var NF=N(()=>{"use strict";o(RF,"mergeIconTransformations")});function _C(t,e){let r=RF(t,e);for(let n in AF)n in e0?n in t&&!(n in r)&&(r[n]=e0[n]):n in e?r[n]=e[n]:n in t&&(r[n]=t[n]);return r}var MF=N(()=>{"use strict";N4();NF();o(_C,"mergeIconData")});function IF(t,e){let r=t.icons,n=t.aliases||Object.create(null),i=Object.create(null);function a(s){if(r[s])return i[s]=[];if(!(s in i)){i[s]=null;let l=n[s]&&n[s].parent,u=l&&a(l);u&&(i[s]=[l].concat(u))}return i[s]}return o(a,"resolve"),(e||Object.keys(r).concat(Object.keys(n))).forEach(a),i}var OF=N(()=>{"use strict";o(IF,"getIconsTree")});function PF(t,e,r){let n=t.icons,i=t.aliases||Object.create(null),a={};function s(l){a=_C(n[l]||i[l],a)}return o(s,"parse"),s(e),r.forEach(s),_C(t,a)}function DC(t,e){if(t.icons[e])return PF(t,e,[]);let r=IF(t,[e])[e];return r?PF(t,e,r):null}var BF=N(()=>{"use strict";MF();OF();o(PF,"internalGetIconData");o(DC,"getIconData")});function LC(t,e,r){if(e===1)return t;if(r=r||100,typeof t=="number")return Math.ceil(t*e*r)/r;if(typeof t!="string")return t;let n=t.split(W2e);if(n===null||!n.length)return t;let i=[],a=n.shift(),s=q2e.test(a);for(;;){if(s){let l=parseFloat(a);isNaN(l)?i.push(a):i.push(Math.ceil(l*e*r)/r)}else i.push(a);if(a=n.shift(),a===void 0)return i.join("");s=!s}}var W2e,q2e,FF=N(()=>{"use strict";W2e=/(-?[0-9.]*[0-9]+[0-9.]*)/g,q2e=/^-?[0-9.]*[0-9]+[0-9.]*$/g;o(LC,"calculateSize")});function Y2e(t,e="defs"){let r="",n=t.indexOf("<"+e);for(;n>=0;){let i=t.indexOf(">",n),a=t.indexOf("",a);if(s===-1)break;r+=t.slice(i+1,a).trim(),t=t.slice(0,n).trim()+t.slice(s+1)}return{defs:r,content:t}}function X2e(t,e){return t?""+t+""+e:e}function $F(t,e,r){let n=Y2e(t);return X2e(n.defs,e+n.content+r)}var zF=N(()=>{"use strict";o(Y2e,"splitSVGDefs");o(X2e,"mergeDefsAndContent");o($F,"wrapSVGContent")});function RC(t,e){let r={...CC,...t},n={..._F,...e},i={left:r.left,top:r.top,width:r.width,height:r.height},a=r.body;[r,n].forEach(y=>{let v=[],x=y.hFlip,b=y.vFlip,w=y.rotate;x?b?w+=2:(v.push("translate("+(i.width+i.left).toString()+" "+(0-i.top).toString()+")"),v.push("scale(-1 1)"),i.top=i.left=0):b&&(v.push("translate("+(0-i.left).toString()+" "+(i.height+i.top).toString()+")"),v.push("scale(1 -1)"),i.top=i.left=0);let C;switch(w<0&&(w-=Math.floor(w/4)*4),w=w%4,w){case 1:C=i.height/2+i.top,v.unshift("rotate(90 "+C.toString()+" "+C.toString()+")");break;case 2:v.unshift("rotate(180 "+(i.width/2+i.left).toString()+" "+(i.height/2+i.top).toString()+")");break;case 3:C=i.width/2+i.left,v.unshift("rotate(-90 "+C.toString()+" "+C.toString()+")");break}w%2===1&&(i.left!==i.top&&(C=i.left,i.left=i.top,i.top=C),i.width!==i.height&&(C=i.width,i.width=i.height,i.height=C)),v.length&&(a=$F(a,'',""))});let s=n.width,l=n.height,u=i.width,h=i.height,f,d;s===null?(d=l===null?"1em":l==="auto"?h:l,f=LC(d,u/h)):(f=s==="auto"?u:s,d=l===null?LC(f,h/u):l==="auto"?h:l);let p={},m=o((y,v)=>{j2e(v)||(p[y]=v.toString())},"setAttr");m("width",f),m("height",d);let g=[i.left,i.top,u,h];return p.viewBox=g.join(" "),{attributes:p,viewBox:g,body:a}}var j2e,GF=N(()=>{"use strict";N4();DF();FF();zF();j2e=o(t=>t==="unset"||t==="undefined"||t==="none","isUnsetKeyword");o(RC,"iconToSVG")});function NC(t,e=Q2e){let r=[],n;for(;n=K2e.exec(t);)r.push(n[1]);if(!r.length)return t;let i="suffix"+(Math.random()*16777216|Date.now()).toString(16);return r.forEach(a=>{let s=typeof e=="function"?e(a):e+(Z2e++).toString(),l=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+l+')([")]|\\.[a-z])',"g"),"$1"+s+i+"$3")}),t=t.replace(new RegExp(i,"g"),""),t}var K2e,Q2e,Z2e,VF=N(()=>{"use strict";K2e=/\sid="(\S+)"/g,Q2e="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),Z2e=0;o(NC,"replaceIDs")});function MC(t,e){let r=t.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(let n in e)r+=" "+n+'="'+e[n]+'"';return'"+t+""}var UF=N(()=>{"use strict";o(MC,"iconToHTML")});var WF=Mi((iit,HF)=>{"use strict";var t0=1e3,r0=t0*60,n0=r0*60,Wf=n0*24,J2e=Wf*7,exe=Wf*365.25;HF.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return txe(t);if(r==="number"&&isFinite(t))return e.long?nxe(t):rxe(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function txe(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*exe;case"weeks":case"week":case"w":return r*J2e;case"days":case"day":case"d":return r*Wf;case"hours":case"hour":case"hrs":case"hr":case"h":return r*n0;case"minutes":case"minute":case"mins":case"min":case"m":return r*r0;case"seconds":case"second":case"secs":case"sec":case"s":return r*t0;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}o(txe,"parse");function rxe(t){var e=Math.abs(t);return e>=Wf?Math.round(t/Wf)+"d":e>=n0?Math.round(t/n0)+"h":e>=r0?Math.round(t/r0)+"m":e>=t0?Math.round(t/t0)+"s":t+"ms"}o(rxe,"fmtShort");function nxe(t){var e=Math.abs(t);return e>=Wf?I4(t,e,Wf,"day"):e>=n0?I4(t,e,n0,"hour"):e>=r0?I4(t,e,r0,"minute"):e>=t0?I4(t,e,t0,"second"):t+" ms"}o(nxe,"fmtLong");function I4(t,e,r,n){var i=e>=r*1.5;return Math.round(t/r)+" "+n+(i?"s":"")}o(I4,"plural")});var YF=Mi((sit,qF)=>{"use strict";function ixe(t){r.debug=r,r.default=r,r.coerce=u,r.disable=s,r.enable=i,r.enabled=l,r.humanize=WF(),r.destroy=h,Object.keys(t).forEach(f=>{r[f]=t[f]}),r.names=[],r.skips=[],r.formatters={};function e(f){let d=0;for(let p=0;p{if(E==="%%")return"%";C++;let S=r.formatters[A];if(typeof S=="function"){let _=v[C];E=S.call(x,_),v.splice(C,1),C--}return E}),r.formatArgs.call(x,v),(x.log||r.log).apply(x,v)}return o(y,"debug"),y.namespace=f,y.useColors=r.useColors(),y.color=r.selectColor(f),y.extend=n,y.destroy=r.destroy,Object.defineProperty(y,"enabled",{enumerable:!0,configurable:!1,get:o(()=>p!==null?p:(m!==r.namespaces&&(m=r.namespaces,g=r.enabled(f)),g),"get"),set:o(v=>{p=v},"set")}),typeof r.init=="function"&&r.init(y),y}o(r,"createDebug");function n(f,d){let p=r(this.namespace+(typeof d>"u"?":":d)+f);return p.log=this.log,p}o(n,"extend");function i(f){r.save(f),r.namespaces=f,r.names=[],r.skips=[];let d=(typeof f=="string"?f:"").trim().replace(" ",",").split(",").filter(Boolean);for(let p of d)p[0]==="-"?r.skips.push(p.slice(1)):r.names.push(p)}o(i,"enable");function a(f,d){let p=0,m=0,g=-1,y=0;for(;p"-"+d)].join(",");return r.enable(""),f}o(s,"disable");function l(f){for(let d of r.skips)if(a(f,d))return!1;for(let d of r.names)if(a(f,d))return!0;return!1}o(l,"enabled");function u(f){return f instanceof Error?f.stack||f.message:f}o(u,"coerce");function h(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return o(h,"destroy"),r.enable(r.load()),r}o(ixe,"setup");qF.exports=ixe});var XF=Mi((qs,O4)=>{"use strict";qs.formatArgs=sxe;qs.save=oxe;qs.load=lxe;qs.useColors=axe;qs.storage=cxe();qs.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();qs.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function axe(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let t;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}o(axe,"useColors");function sxe(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+O4.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let r=0,n=0;t[0].replace(/%[a-zA-Z%]/g,i=>{i!=="%%"&&(r++,i==="%c"&&(n=r))}),t.splice(n,0,e)}o(sxe,"formatArgs");qs.log=console.debug||console.log||(()=>{});function oxe(t){try{t?qs.storage.setItem("debug",t):qs.storage.removeItem("debug")}catch{}}o(oxe,"save");function lxe(){let t;try{t=qs.storage.getItem("debug")}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}o(lxe,"load");function cxe(){try{return localStorage}catch{}}o(cxe,"localstorage");O4.exports=YF()(qs);var{formatters:uxe}=O4.exports;uxe.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var uit,jF=N(()=>{"use strict";LF();BF();GF();VF();UF();uit=Sa(XF(),1)});var OC,IC,KF,P4,hxe,wo,tu=N(()=>{"use strict";vt();jF();OC={body:'?',height:80,width:80},IC=new Map,KF=new Map,P4=o(t=>{for(let e of t){if(!e.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(Y.debug("Registering icon pack:",e.name),"loader"in e)KF.set(e.name,e.loader);else if("icons"in e)IC.set(e.name,e.icons);else throw Y.error("Invalid icon loader:",e),new Error('Invalid icon loader. Must have either "icons" or "loader" property.')}},"registerIconPacks"),hxe=o(async(t,e)=>{let r=AC(t,!0,e!==void 0);if(!r)throw new Error(`Invalid icon name: ${t}`);let n=r.prefix||e;if(!n)throw new Error(`Icon name must contain a prefix: ${t}`);let i=IC.get(n);if(!i){let s=KF.get(n);if(!s)throw new Error(`Icon set not found: ${r.prefix}`);try{i={...await s(),prefix:n},IC.set(n,i)}catch(l){throw Y.error(l),new Error(`Failed to load icon set: ${r.prefix}`)}}let a=DC(i,r.name);if(!a)throw new Error(`Icon not found: ${t}`);return a},"getRegisteredIconData"),wo=o(async(t,e)=>{let r;try{r=await hxe(t,e?.fallbackPrefix)}catch(a){Y.error(a),r=OC}let n=RC(r,e);return MC(NC(n.body),n.attributes)},"getIconSVG")});function B4(t){for(var e=[],r=1;r{"use strict";o(B4,"dedent")});var F4,qf,QF,$4=N(()=>{"use strict";F4=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,qf=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,QF=/\s*%%.*\n/gm});var i0,BC=N(()=>{"use strict";i0=class extends Error{static{o(this,"UnknownDiagramError")}constructor(e){super(e),this.name="UnknownDiagramError"}}});var Yf,a0,z4,FC,ZF,Xf=N(()=>{"use strict";vt();$4();BC();Yf={},a0=o(function(t,e){t=t.replace(F4,"").replace(qf,"").replace(QF,` +`);for(let[r,{detector:n}]of Object.entries(Yf))if(n(t,e))return r;throw new i0(`No diagram type detected matching given configuration for text: ${t}`)},"detectType"),z4=o((...t)=>{for(let{id:e,detector:r,loader:n}of t)FC(e,r,n)},"registerLazyLoadedDiagrams"),FC=o((t,e,r)=>{Yf[t]&&Y.warn(`Detector with key ${t} already exists. Overwriting.`),Yf[t]={detector:e,loader:r},Y.debug(`Detector with key ${t} added${r?" with loader":""}`)},"addDetector"),ZF=o(t=>Yf[t].loader,"getDiagramLoader")});var Ty,JF,$C=N(()=>{"use strict";Ty=function(){var t=o(function($e,Re,Ie,be){for(Ie=Ie||{},be=$e.length;be--;Ie[$e[be]]=Re);return Ie},"o"),e=[1,24],r=[1,25],n=[1,26],i=[1,27],a=[1,28],s=[1,63],l=[1,64],u=[1,65],h=[1,66],f=[1,67],d=[1,68],p=[1,69],m=[1,29],g=[1,30],y=[1,31],v=[1,32],x=[1,33],b=[1,34],w=[1,35],C=[1,36],T=[1,37],E=[1,38],A=[1,39],S=[1,40],_=[1,41],I=[1,42],D=[1,43],k=[1,44],L=[1,45],R=[1,46],O=[1,47],M=[1,48],B=[1,50],F=[1,51],P=[1,52],z=[1,53],$=[1,54],H=[1,55],Q=[1,56],j=[1,57],ie=[1,58],ne=[1,59],le=[1,60],he=[14,42],K=[14,34,36,37,38,39,40,41,42,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,70,71,72,73,74],X=[12,14,34,36,37,38,39,40,41,42,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,70,71,72,73,74],te=[1,82],J=[1,83],se=[1,84],ue=[1,85],Z=[12,14,42],Se=[12,14,33,42],ce=[12,14,33,42,76,77,79,80],ae=[12,33],Oe=[34,36,37,38,39,40,41,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,70,71,72,73,74],ge={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:o(function(Re,Ie,be,W,de,re,oe){var V=re.length-1;switch(de){case 3:W.setDirection("TB");break;case 4:W.setDirection("BT");break;case 5:W.setDirection("RL");break;case 6:W.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:W.setC4Type(re[V-3]);break;case 19:W.setTitle(re[V].substring(6)),this.$=re[V].substring(6);break;case 20:W.setAccDescription(re[V].substring(15)),this.$=re[V].substring(15);break;case 21:this.$=re[V].trim(),W.setTitle(this.$);break;case 22:case 23:this.$=re[V].trim(),W.setAccDescription(this.$);break;case 28:re[V].splice(2,0,"ENTERPRISE"),W.addPersonOrSystemBoundary(...re[V]),this.$=re[V];break;case 29:re[V].splice(2,0,"SYSTEM"),W.addPersonOrSystemBoundary(...re[V]),this.$=re[V];break;case 30:W.addPersonOrSystemBoundary(...re[V]),this.$=re[V];break;case 31:re[V].splice(2,0,"CONTAINER"),W.addContainerBoundary(...re[V]),this.$=re[V];break;case 32:W.addDeploymentNode("node",...re[V]),this.$=re[V];break;case 33:W.addDeploymentNode("nodeL",...re[V]),this.$=re[V];break;case 34:W.addDeploymentNode("nodeR",...re[V]),this.$=re[V];break;case 35:W.popBoundaryParseStack();break;case 39:W.addPersonOrSystem("person",...re[V]),this.$=re[V];break;case 40:W.addPersonOrSystem("external_person",...re[V]),this.$=re[V];break;case 41:W.addPersonOrSystem("system",...re[V]),this.$=re[V];break;case 42:W.addPersonOrSystem("system_db",...re[V]),this.$=re[V];break;case 43:W.addPersonOrSystem("system_queue",...re[V]),this.$=re[V];break;case 44:W.addPersonOrSystem("external_system",...re[V]),this.$=re[V];break;case 45:W.addPersonOrSystem("external_system_db",...re[V]),this.$=re[V];break;case 46:W.addPersonOrSystem("external_system_queue",...re[V]),this.$=re[V];break;case 47:W.addContainer("container",...re[V]),this.$=re[V];break;case 48:W.addContainer("container_db",...re[V]),this.$=re[V];break;case 49:W.addContainer("container_queue",...re[V]),this.$=re[V];break;case 50:W.addContainer("external_container",...re[V]),this.$=re[V];break;case 51:W.addContainer("external_container_db",...re[V]),this.$=re[V];break;case 52:W.addContainer("external_container_queue",...re[V]),this.$=re[V];break;case 53:W.addComponent("component",...re[V]),this.$=re[V];break;case 54:W.addComponent("component_db",...re[V]),this.$=re[V];break;case 55:W.addComponent("component_queue",...re[V]),this.$=re[V];break;case 56:W.addComponent("external_component",...re[V]),this.$=re[V];break;case 57:W.addComponent("external_component_db",...re[V]),this.$=re[V];break;case 58:W.addComponent("external_component_queue",...re[V]),this.$=re[V];break;case 60:W.addRel("rel",...re[V]),this.$=re[V];break;case 61:W.addRel("birel",...re[V]),this.$=re[V];break;case 62:W.addRel("rel_u",...re[V]),this.$=re[V];break;case 63:W.addRel("rel_d",...re[V]),this.$=re[V];break;case 64:W.addRel("rel_l",...re[V]),this.$=re[V];break;case 65:W.addRel("rel_r",...re[V]),this.$=re[V];break;case 66:W.addRel("rel_b",...re[V]),this.$=re[V];break;case 67:re[V].splice(0,1),W.addRel("rel",...re[V]),this.$=re[V];break;case 68:W.updateElStyle("update_el_style",...re[V]),this.$=re[V];break;case 69:W.updateRelStyle("update_rel_style",...re[V]),this.$=re[V];break;case 70:W.updateLayoutConfig("update_layout_config",...re[V]),this.$=re[V];break;case 71:this.$=[re[V]];break;case 72:re[V].unshift(re[V-1]),this.$=re[V];break;case 73:case 75:this.$=re[V].trim();break;case 74:let xe={};xe[re[V-1].trim()]=re[V].trim(),this.$=xe;break;case 76:this.$="";break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:M,64:B,65:F,66:P,67:z,68:$,69:H,70:Q,71:j,72:ie,73:ne,74:le},{13:70,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:M,64:B,65:F,66:P,67:z,68:$,69:H,70:Q,71:j,72:ie,73:ne,74:le},{13:71,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:M,64:B,65:F,66:P,67:z,68:$,69:H,70:Q,71:j,72:ie,73:ne,74:le},{13:72,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:M,64:B,65:F,66:P,67:z,68:$,69:H,70:Q,71:j,72:ie,73:ne,74:le},{13:73,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:M,64:B,65:F,66:P,67:z,68:$,69:H,70:Q,71:j,72:ie,73:ne,74:le},{14:[1,74]},t(he,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:l,37:u,38:h,39:f,40:d,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:M,64:B,65:F,66:P,67:z,68:$,69:H,70:Q,71:j,72:ie,73:ne,74:le}),t(he,[2,14]),t(K,[2,16],{12:[1,76]}),t(he,[2,36],{12:[1,77]}),t(X,[2,19]),t(X,[2,20]),{25:[1,78]},{27:[1,79]},t(X,[2,23]),{35:80,75:81,76:te,77:J,79:se,80:ue},{35:86,75:81,76:te,77:J,79:se,80:ue},{35:87,75:81,76:te,77:J,79:se,80:ue},{35:88,75:81,76:te,77:J,79:se,80:ue},{35:89,75:81,76:te,77:J,79:se,80:ue},{35:90,75:81,76:te,77:J,79:se,80:ue},{35:91,75:81,76:te,77:J,79:se,80:ue},{35:92,75:81,76:te,77:J,79:se,80:ue},{35:93,75:81,76:te,77:J,79:se,80:ue},{35:94,75:81,76:te,77:J,79:se,80:ue},{35:95,75:81,76:te,77:J,79:se,80:ue},{35:96,75:81,76:te,77:J,79:se,80:ue},{35:97,75:81,76:te,77:J,79:se,80:ue},{35:98,75:81,76:te,77:J,79:se,80:ue},{35:99,75:81,76:te,77:J,79:se,80:ue},{35:100,75:81,76:te,77:J,79:se,80:ue},{35:101,75:81,76:te,77:J,79:se,80:ue},{35:102,75:81,76:te,77:J,79:se,80:ue},{35:103,75:81,76:te,77:J,79:se,80:ue},{35:104,75:81,76:te,77:J,79:se,80:ue},t(Z,[2,59]),{35:105,75:81,76:te,77:J,79:se,80:ue},{35:106,75:81,76:te,77:J,79:se,80:ue},{35:107,75:81,76:te,77:J,79:se,80:ue},{35:108,75:81,76:te,77:J,79:se,80:ue},{35:109,75:81,76:te,77:J,79:se,80:ue},{35:110,75:81,76:te,77:J,79:se,80:ue},{35:111,75:81,76:te,77:J,79:se,80:ue},{35:112,75:81,76:te,77:J,79:se,80:ue},{35:113,75:81,76:te,77:J,79:se,80:ue},{35:114,75:81,76:te,77:J,79:se,80:ue},{35:115,75:81,76:te,77:J,79:se,80:ue},{20:116,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:M,64:B,65:F,66:P,67:z,68:$,69:H,70:Q,71:j,72:ie,73:ne,74:le},{12:[1,118],33:[1,117]},{35:119,75:81,76:te,77:J,79:se,80:ue},{35:120,75:81,76:te,77:J,79:se,80:ue},{35:121,75:81,76:te,77:J,79:se,80:ue},{35:122,75:81,76:te,77:J,79:se,80:ue},{35:123,75:81,76:te,77:J,79:se,80:ue},{35:124,75:81,76:te,77:J,79:se,80:ue},{35:125,75:81,76:te,77:J,79:se,80:ue},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},t(he,[2,15]),t(K,[2,17],{21:22,19:130,22:e,23:r,24:n,26:i,28:a}),t(he,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:e,23:r,24:n,26:i,28:a,34:s,36:l,37:u,38:h,39:f,40:d,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:M,64:B,65:F,66:P,67:z,68:$,69:H,70:Q,71:j,72:ie,73:ne,74:le}),t(X,[2,21]),t(X,[2,22]),t(Z,[2,39]),t(Se,[2,71],{75:81,35:132,76:te,77:J,79:se,80:ue}),t(ce,[2,73]),{78:[1,133]},t(ce,[2,75]),t(ce,[2,76]),t(Z,[2,40]),t(Z,[2,41]),t(Z,[2,42]),t(Z,[2,43]),t(Z,[2,44]),t(Z,[2,45]),t(Z,[2,46]),t(Z,[2,47]),t(Z,[2,48]),t(Z,[2,49]),t(Z,[2,50]),t(Z,[2,51]),t(Z,[2,52]),t(Z,[2,53]),t(Z,[2,54]),t(Z,[2,55]),t(Z,[2,56]),t(Z,[2,57]),t(Z,[2,58]),t(Z,[2,60]),t(Z,[2,61]),t(Z,[2,62]),t(Z,[2,63]),t(Z,[2,64]),t(Z,[2,65]),t(Z,[2,66]),t(Z,[2,67]),t(Z,[2,68]),t(Z,[2,69]),t(Z,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},t(ae,[2,28]),t(ae,[2,29]),t(ae,[2,30]),t(ae,[2,31]),t(ae,[2,32]),t(ae,[2,33]),t(ae,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},t(K,[2,18]),t(he,[2,38]),t(Se,[2,72]),t(ce,[2,74]),t(Z,[2,24]),t(Z,[2,35]),t(Oe,[2,25]),t(Oe,[2,26],{12:[1,138]}),t(Oe,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:o(function(Re,Ie){if(Ie.recoverable)this.trace(Re);else{var be=new Error(Re);throw be.hash=Ie,be}},"parseError"),parse:o(function(Re){var Ie=this,be=[0],W=[],de=[null],re=[],oe=this.table,V="",xe=0,q=0,pe=0,ve=2,Pe=1,_e=re.slice.call(arguments,1),we=Object.create(this.lexer),Ve={yy:{}};for(var De in this.yy)Object.prototype.hasOwnProperty.call(this.yy,De)&&(Ve.yy[De]=this.yy[De]);we.setInput(Re,Ve.yy),Ve.yy.lexer=we,Ve.yy.parser=this,typeof we.yylloc>"u"&&(we.yylloc={});var qe=we.yylloc;re.push(qe);var at=we.options&&we.options.ranges;typeof Ve.yy.parseError=="function"?this.parseError=Ve.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Rt(nt){be.length=be.length-2*nt,de.length=de.length-nt,re.length=re.length-nt}o(Rt,"popStack");function st(){var nt;return nt=W.pop()||we.lex()||Pe,typeof nt!="number"&&(nt instanceof Array&&(W=nt,nt=W.pop()),nt=Ie.symbols_[nt]||nt),nt}o(st,"lex");for(var Ue,ct,We,ot,Yt,bt,Mt={},xt,ut,Et,ft;;){if(We=be[be.length-1],this.defaultActions[We]?ot=this.defaultActions[We]:((Ue===null||typeof Ue>"u")&&(Ue=st()),ot=oe[We]&&oe[We][Ue]),typeof ot>"u"||!ot.length||!ot[0]){var yt="";ft=[];for(xt in oe[We])this.terminals_[xt]&&xt>ve&&ft.push("'"+this.terminals_[xt]+"'");we.showPosition?yt="Parse error on line "+(xe+1)+`: +`+we.showPosition()+` +Expecting `+ft.join(", ")+", got '"+(this.terminals_[Ue]||Ue)+"'":yt="Parse error on line "+(xe+1)+": Unexpected "+(Ue==Pe?"end of input":"'"+(this.terminals_[Ue]||Ue)+"'"),this.parseError(yt,{text:we.match,token:this.terminals_[Ue]||Ue,line:we.yylineno,loc:qe,expected:ft})}if(ot[0]instanceof Array&&ot.length>1)throw new Error("Parse Error: multiple actions possible at state: "+We+", token: "+Ue);switch(ot[0]){case 1:be.push(Ue),de.push(we.yytext),re.push(we.yylloc),be.push(ot[1]),Ue=null,ct?(Ue=ct,ct=null):(q=we.yyleng,V=we.yytext,xe=we.yylineno,qe=we.yylloc,pe>0&&pe--);break;case 2:if(ut=this.productions_[ot[1]][1],Mt.$=de[de.length-ut],Mt._$={first_line:re[re.length-(ut||1)].first_line,last_line:re[re.length-1].last_line,first_column:re[re.length-(ut||1)].first_column,last_column:re[re.length-1].last_column},at&&(Mt._$.range=[re[re.length-(ut||1)].range[0],re[re.length-1].range[1]]),bt=this.performAction.apply(Mt,[V,q,xe,Ve.yy,ot[1],de,re].concat(_e)),typeof bt<"u")return bt;ut&&(be=be.slice(0,-1*ut*2),de=de.slice(0,-1*ut),re=re.slice(0,-1*ut)),be.push(this.productions_[ot[1]][0]),de.push(Mt.$),re.push(Mt._$),Et=oe[be[be.length-2]][be[be.length-1]],be.push(Et);break;case 3:return!0}}return!0},"parse")},ze=function(){var $e={EOF:1,parseError:o(function(Ie,be){if(this.yy.parser)this.yy.parser.parseError(Ie,be);else throw new Error(Ie)},"parseError"),setInput:o(function(Re,Ie){return this.yy=Ie||this.yy||{},this._input=Re,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},"setInput"),input:o(function(){var Re=this._input[0];this.yytext+=Re,this.yyleng++,this.offset++,this.match+=Re,this.matched+=Re;var Ie=Re.match(/(?:\r\n?|\n).*/g);return Ie?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Re},"input"),unput:o(function(Re){var Ie=Re.length,be=Re.split(/(?:\r\n?|\n)/g);this._input=Re+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ie),this.offset-=Ie;var W=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),be.length-1&&(this.yylineno-=be.length-1);var de=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:be?(be.length===W.length?this.yylloc.first_column:0)+W[W.length-be.length].length-be[0].length:this.yylloc.first_column-Ie},this.options.ranges&&(this.yylloc.range=[de[0],de[0]+this.yyleng-Ie]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Re){this.unput(this.match.slice(Re))},"less"),pastInput:o(function(){var Re=this.matched.substr(0,this.matched.length-this.match.length);return(Re.length>20?"...":"")+Re.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Re=this.match;return Re.length<20&&(Re+=this._input.substr(0,20-Re.length)),(Re.substr(0,20)+(Re.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Re=this.pastInput(),Ie=new Array(Re.length+1).join("-");return Re+this.upcomingInput()+` +`+Ie+"^"},"showPosition"),test_match:o(function(Re,Ie){var be,W,de;if(this.options.backtrack_lexer&&(de={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&&(de.yylloc.range=this.yylloc.range.slice(0))),W=Re[0].match(/(?:\r\n?|\n).*/g),W&&(this.yylineno+=W.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:W?W[W.length-1].length-W[W.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Re[0].length},this.yytext+=Re[0],this.match+=Re[0],this.matches=Re,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(Re[0].length),this.matched+=Re[0],be=this.performAction.call(this,this.yy,this,Ie,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),be)return be;if(this._backtrack){for(var re in de)this[re]=de[re];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Re,Ie,be,W;this._more||(this.yytext="",this.match="");for(var de=this._currentRules(),re=0;reIe[0].length)){if(Ie=be,W=re,this.options.backtrack_lexer){if(Re=this.test_match(be,de[re]),Re!==!1)return Re;if(this._backtrack){Ie=!1;continue}else return!1}else if(!this.options.flex)break}return Ie?(Re=this.test_match(Ie,de[W]),Re!==!1?Re:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var Ie=this.next();return Ie||this.lex()},"lex"),begin:o(function(Ie){this.conditionStack.push(Ie)},"begin"),popState:o(function(){var Ie=this.conditionStack.length-1;return Ie>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Ie){return Ie=this.conditionStack.length-1-Math.abs(Ie||0),Ie>=0?this.conditionStack[Ie]:"INITIAL"},"topState"),pushState:o(function(Ie){this.begin(Ie)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(Ie,be,W,de){var re=de;switch(W){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),26;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;break;case 23:return this.begin("person"),44;break;case 24:return this.begin("system_ext_queue"),51;break;case 25:return this.begin("system_ext_db"),50;break;case 26:return this.begin("system_ext"),49;break;case 27:return this.begin("system_queue"),48;break;case 28:return this.begin("system_db"),47;break;case 29:return this.begin("system"),46;break;case 30:return this.begin("boundary"),37;break;case 31:return this.begin("enterprise_boundary"),34;break;case 32:return this.begin("system_boundary"),36;break;case 33:return this.begin("container_ext_queue"),57;break;case 34:return this.begin("container_ext_db"),56;break;case 35:return this.begin("container_ext"),55;break;case 36:return this.begin("container_queue"),54;break;case 37:return this.begin("container_db"),53;break;case 38:return this.begin("container"),52;break;case 39:return this.begin("container_boundary"),38;break;case 40:return this.begin("component_ext_queue"),63;break;case 41:return this.begin("component_ext_db"),62;break;case 42:return this.begin("component_ext"),61;break;case 43:return this.begin("component_queue"),60;break;case 44:return this.begin("component_db"),59;break;case 45:return this.begin("component"),58;break;case 46:return this.begin("node"),39;break;case 47:return this.begin("node"),39;break;case 48:return this.begin("node_l"),40;break;case 49:return this.begin("node_r"),41;break;case 50:return this.begin("rel"),64;break;case 51:return this.begin("birel"),65;break;case 52:return this.begin("rel_u"),66;break;case 53:return this.begin("rel_u"),66;break;case 54:return this.begin("rel_d"),67;break;case 55:return this.begin("rel_d"),67;break;case 56:return this.begin("rel_l"),68;break;case 57:return this.begin("rel_l"),68;break;case 58:return this.begin("rel_r"),69;break;case 59:return this.begin("rel_r"),69;break;case 60:return this.begin("rel_b"),70;break;case 61:return this.begin("rel_index"),71;break;case 62:return this.begin("update_el_style"),72;break;case 63:return this.begin("update_rel_style"),73;break;case 64:return this.begin("update_layout_config"),74;break;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";break;case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";break;case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\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:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,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,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return $e}();ge.lexer=ze;function He(){this.yy={}}return o(He,"Parser"),He.prototype=ge,ge.Parser=He,new He}();Ty.parser=Ty;JF=Ty});var zC,Gn,s0=N(()=>{"use strict";zC=o((t,e,{depth:r=2,clobber:n=!1}={})=>{let i={depth:r,clobber:n};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(a=>zC(t,a,i)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(a=>{t.includes(a)||t.push(a)}),t):t===void 0||r<=0?t!=null&&typeof t=="object"&&typeof e=="object"?Object.assign(t,e):e:(e!==void 0&&typeof t=="object"&&typeof e=="object"&&Object.keys(e).forEach(a=>{typeof e[a]=="object"&&(t[a]===void 0||typeof t[a]=="object")?(t[a]===void 0&&(t[a]=Array.isArray(e[a])?[]:{}),t[a]=zC(t[a],e[a],{depth:r-1,clobber:n})):(n||typeof t[a]!="object"&&typeof e[a]!="object")&&(t[a]=e[a])}),t)},"assignWithDepth"),Gn=zC});var G4,e$,t$=N(()=>{"use strict";G4={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:o(t=>t>=255?255:t<0?0:t,"r"),g:o(t=>t>=255?255:t<0?0:t,"g"),b:o(t=>t>=255?255:t<0?0:t,"b"),h:o(t=>t%360,"h"),s:o(t=>t>=100?100:t<0?0:t,"s"),l:o(t=>t>=100?100:t<0?0:t,"l"),a:o(t=>t>=1?1:t<0?0:t,"a")},toLinear:o(t=>{let e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},"toLinear"),hue2rgb:o((t,e,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<.16666666666666666?t+(e-t)*6*r:r<.5?e:r<.6666666666666666?t+(e-t)*(.6666666666666666-r)*6:t),"hue2rgb"),hsl2rgb:o(({h:t,s:e,l:r},n)=>{if(!e)return r*2.55;t/=360,e/=100,r/=100;let i=r<.5?r*(1+e):r+e-r*e,a=2*r-i;switch(n){case"r":return G4.hue2rgb(a,i,t+.3333333333333333)*255;case"g":return G4.hue2rgb(a,i,t)*255;case"b":return G4.hue2rgb(a,i,t-.3333333333333333)*255}},"hsl2rgb"),rgb2hsl:o(({r:t,g:e,b:r},n)=>{t/=255,e/=255,r/=255;let i=Math.max(t,e,r),a=Math.min(t,e,r),s=(i+a)/2;if(n==="l")return s*100;if(i===a)return 0;let l=i-a,u=s>.5?l/(2-i-a):l/(i+a);if(n==="s")return u*100;switch(i){case t:return((e-r)/l+(e{"use strict";fxe={clamp:o((t,e,r)=>e>r?Math.min(e,Math.max(r,t)):Math.min(r,Math.max(e,t)),"clamp"),round:o(t=>Math.round(t*1e10)/1e10,"round")},r$=fxe});var dxe,i$,a$=N(()=>{"use strict";dxe={dec2hex:o(t=>{let e=Math.round(t).toString(16);return e.length>1?e:`0${e}`},"dec2hex")},i$=dxe});var pxe,jt,Wl=N(()=>{"use strict";t$();n$();a$();pxe={channel:e$,lang:r$,unit:i$},jt=pxe});var ru,Ii,ky=N(()=>{"use strict";Wl();ru={};for(let t=0;t<=255;t++)ru[t]=jt.unit.dec2hex(t);Ii={ALL:0,RGB:1,HSL:2}});var GC,s$,o$=N(()=>{"use strict";ky();GC=class{static{o(this,"Type")}constructor(){this.type=Ii.ALL}get(){return this.type}set(e){if(this.type&&this.type!==e)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=e}reset(){this.type=Ii.ALL}is(e){return this.type===e}},s$=GC});var VC,l$,c$=N(()=>{"use strict";Wl();o$();ky();VC=class{static{o(this,"Channels")}constructor(e,r){this.color=r,this.changed=!1,this.data=e,this.type=new s$}set(e,r){return this.color=r,this.changed=!1,this.data=e,this.type.type=Ii.ALL,this}_ensureHSL(){let e=this.data,{h:r,s:n,l:i}=e;r===void 0&&(e.h=jt.channel.rgb2hsl(e,"h")),n===void 0&&(e.s=jt.channel.rgb2hsl(e,"s")),i===void 0&&(e.l=jt.channel.rgb2hsl(e,"l"))}_ensureRGB(){let e=this.data,{r,g:n,b:i}=e;r===void 0&&(e.r=jt.channel.hsl2rgb(e,"r")),n===void 0&&(e.g=jt.channel.hsl2rgb(e,"g")),i===void 0&&(e.b=jt.channel.hsl2rgb(e,"b"))}get r(){let e=this.data,r=e.r;return!this.type.is(Ii.HSL)&&r!==void 0?r:(this._ensureHSL(),jt.channel.hsl2rgb(e,"r"))}get g(){let e=this.data,r=e.g;return!this.type.is(Ii.HSL)&&r!==void 0?r:(this._ensureHSL(),jt.channel.hsl2rgb(e,"g"))}get b(){let e=this.data,r=e.b;return!this.type.is(Ii.HSL)&&r!==void 0?r:(this._ensureHSL(),jt.channel.hsl2rgb(e,"b"))}get h(){let e=this.data,r=e.h;return!this.type.is(Ii.RGB)&&r!==void 0?r:(this._ensureRGB(),jt.channel.rgb2hsl(e,"h"))}get s(){let e=this.data,r=e.s;return!this.type.is(Ii.RGB)&&r!==void 0?r:(this._ensureRGB(),jt.channel.rgb2hsl(e,"s"))}get l(){let e=this.data,r=e.l;return!this.type.is(Ii.RGB)&&r!==void 0?r:(this._ensureRGB(),jt.channel.rgb2hsl(e,"l"))}get a(){return this.data.a}set r(e){this.type.set(Ii.RGB),this.changed=!0,this.data.r=e}set g(e){this.type.set(Ii.RGB),this.changed=!0,this.data.g=e}set b(e){this.type.set(Ii.RGB),this.changed=!0,this.data.b=e}set h(e){this.type.set(Ii.HSL),this.changed=!0,this.data.h=e}set s(e){this.type.set(Ii.HSL),this.changed=!0,this.data.s=e}set l(e){this.type.set(Ii.HSL),this.changed=!0,this.data.l=e}set a(e){this.changed=!0,this.data.a=e}},l$=VC});var mxe,ih,Ey=N(()=>{"use strict";c$();mxe=new l$({r:0,g:0,b:0,a:0},"transparent"),ih=mxe});var u$,jf,UC=N(()=>{"use strict";Ey();ky();u$={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:o(t=>{if(t.charCodeAt(0)!==35)return;let e=t.match(u$.re);if(!e)return;let r=e[1],n=parseInt(r,16),i=r.length,a=i%4===0,s=i>4,l=s?1:17,u=s?8:4,h=a?0:-1,f=s?255:15;return ih.set({r:(n>>u*(h+3)&f)*l,g:(n>>u*(h+2)&f)*l,b:(n>>u*(h+1)&f)*l,a:a?(n&f)*l/255:1},t)},"parse"),stringify:o(t=>{let{r:e,g:r,b:n,a:i}=t;return i<1?`#${ru[Math.round(e)]}${ru[Math.round(r)]}${ru[Math.round(n)]}${ru[Math.round(i*255)]}`:`#${ru[Math.round(e)]}${ru[Math.round(r)]}${ru[Math.round(n)]}`},"stringify")},jf=u$});var V4,Sy,h$=N(()=>{"use strict";Wl();Ey();V4={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:o(t=>{let e=t.match(V4.hueRe);if(e){let[,r,n]=e;switch(n){case"grad":return jt.channel.clamp.h(parseFloat(r)*.9);case"rad":return jt.channel.clamp.h(parseFloat(r)*180/Math.PI);case"turn":return jt.channel.clamp.h(parseFloat(r)*360)}}return jt.channel.clamp.h(parseFloat(t))},"_hue2deg"),parse:o(t=>{let e=t.charCodeAt(0);if(e!==104&&e!==72)return;let r=t.match(V4.re);if(!r)return;let[,n,i,a,s,l]=r;return ih.set({h:V4._hue2deg(n),s:jt.channel.clamp.s(parseFloat(i)),l:jt.channel.clamp.l(parseFloat(a)),a:s?jt.channel.clamp.a(l?parseFloat(s)/100:parseFloat(s)):1},t)},"parse"),stringify:o(t=>{let{h:e,s:r,l:n,a:i}=t;return i<1?`hsla(${jt.lang.round(e)}, ${jt.lang.round(r)}%, ${jt.lang.round(n)}%, ${i})`:`hsl(${jt.lang.round(e)}, ${jt.lang.round(r)}%, ${jt.lang.round(n)}%)`},"stringify")},Sy=V4});var U4,HC,f$=N(()=>{"use strict";UC();U4={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:o(t=>{t=t.toLowerCase();let e=U4.colors[t];if(e)return jf.parse(e)},"parse"),stringify:o(t=>{let e=jf.stringify(t);for(let r in U4.colors)if(U4.colors[r]===e)return r},"stringify")},HC=U4});var d$,Cy,p$=N(()=>{"use strict";Wl();Ey();d$={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:o(t=>{let e=t.charCodeAt(0);if(e!==114&&e!==82)return;let r=t.match(d$.re);if(!r)return;let[,n,i,a,s,l,u,h,f]=r;return ih.set({r:jt.channel.clamp.r(i?parseFloat(n)*2.55:parseFloat(n)),g:jt.channel.clamp.g(s?parseFloat(a)*2.55:parseFloat(a)),b:jt.channel.clamp.b(u?parseFloat(l)*2.55:parseFloat(l)),a:h?jt.channel.clamp.a(f?parseFloat(h)/100:parseFloat(h)):1},t)},"parse"),stringify:o(t=>{let{r:e,g:r,b:n,a:i}=t;return i<1?`rgba(${jt.lang.round(e)}, ${jt.lang.round(r)}, ${jt.lang.round(n)}, ${jt.lang.round(i)})`:`rgb(${jt.lang.round(e)}, ${jt.lang.round(r)}, ${jt.lang.round(n)})`},"stringify")},Cy=d$});var gxe,Oi,nu=N(()=>{"use strict";UC();h$();f$();p$();ky();gxe={format:{keyword:HC,hex:jf,rgb:Cy,rgba:Cy,hsl:Sy,hsla:Sy},parse:o(t=>{if(typeof t!="string")return t;let e=jf.parse(t)||Cy.parse(t)||Sy.parse(t)||HC.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},"parse"),stringify:o(t=>!t.changed&&t.color?t.color:t.type.is(Ii.HSL)||t.data.r===void 0?Sy.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?Cy.stringify(t):jf.stringify(t),"stringify")},Oi=gxe});var yxe,H4,WC=N(()=>{"use strict";Wl();nu();yxe=o((t,e)=>{let r=Oi.parse(t);for(let n in e)r[n]=jt.channel.clamp[n](e[n]);return Oi.stringify(r)},"change"),H4=yxe});var vxe,qa,qC=N(()=>{"use strict";Wl();Ey();nu();WC();vxe=o((t,e,r=0,n=1)=>{if(typeof t!="number")return H4(t,{a:e});let i=ih.set({r:jt.channel.clamp.r(t),g:jt.channel.clamp.g(e),b:jt.channel.clamp.b(r),a:jt.channel.clamp.a(n)});return Oi.stringify(i)},"rgba"),qa=vxe});var xxe,Kf,m$=N(()=>{"use strict";Wl();nu();xxe=o((t,e)=>jt.lang.round(Oi.parse(t)[e]),"channel"),Kf=xxe});var bxe,g$,y$=N(()=>{"use strict";Wl();nu();bxe=o(t=>{let{r:e,g:r,b:n}=Oi.parse(t),i=.2126*jt.channel.toLinear(e)+.7152*jt.channel.toLinear(r)+.0722*jt.channel.toLinear(n);return jt.lang.round(i)},"luminance"),g$=bxe});var wxe,v$,x$=N(()=>{"use strict";y$();wxe=o(t=>g$(t)>=.5,"isLight"),v$=wxe});var Txe,ca,b$=N(()=>{"use strict";x$();Txe=o(t=>!v$(t),"isDark"),ca=Txe});var kxe,W4,YC=N(()=>{"use strict";Wl();nu();kxe=o((t,e,r)=>{let n=Oi.parse(t),i=n[e],a=jt.channel.clamp[e](i+r);return i!==a&&(n[e]=a),Oi.stringify(n)},"adjustChannel"),W4=kxe});var Exe,Dt,w$=N(()=>{"use strict";YC();Exe=o((t,e)=>W4(t,"l",e),"lighten"),Dt=Exe});var Sxe,Ot,T$=N(()=>{"use strict";YC();Sxe=o((t,e)=>W4(t,"l",-e),"darken"),Ot=Sxe});var Cxe,Me,k$=N(()=>{"use strict";nu();WC();Cxe=o((t,e)=>{let r=Oi.parse(t),n={};for(let i in e)e[i]&&(n[i]=r[i]+e[i]);return H4(t,n)},"adjust"),Me=Cxe});var Axe,E$,S$=N(()=>{"use strict";nu();qC();Axe=o((t,e,r=50)=>{let{r:n,g:i,b:a,a:s}=Oi.parse(t),{r:l,g:u,b:h,a:f}=Oi.parse(e),d=r/100,p=d*2-1,m=s-f,y=((p*m===-1?p:(p+m)/(1+p*m))+1)/2,v=1-y,x=n*y+l*v,b=i*y+u*v,w=a*y+h*v,C=s*d+f*(1-d);return qa(x,b,w,C)},"mix"),E$=Axe});var _xe,wt,C$=N(()=>{"use strict";nu();S$();_xe=o((t,e=100)=>{let r=Oi.parse(t);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,E$(r,t,e)},"invert"),wt=_xe});var A$=N(()=>{"use strict";qC();m$();b$();w$();T$();k$();C$()});var Ys=N(()=>{"use strict";A$()});var ah,sh,Ay=N(()=>{"use strict";ah="#ffffff",sh="#f2f2f2"});var Ti,o0=N(()=>{"use strict";Ys();Ti=o((t,e)=>e?Me(t,{s:-40,l:10}):Me(t,{s:-40,l:-10}),"mkBorder")});var jC,_$,D$=N(()=>{"use strict";Ys();Ay();o0();jC=class{static{o(this,"Theme")}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||Me(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||Me(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Ti(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Ti(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Ti(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Ti(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||wt(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||wt(this.tertiaryColor),this.lineColor=this.lineColor||wt(this.background),this.arrowheadColor=this.arrowheadColor||wt(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?Ot(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||this.actorBorder,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||Ot(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||wt(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||Dt(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.darkMode?(this.rowOdd=this.rowOdd||Ot(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Ot(this.mainBkg,10)):(this.rowOdd=this.rowOdd||Dt(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||Dt(this.mainBkg,5)),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||Me(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Me(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Me(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Me(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Me(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Me(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||Me(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Me(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Me(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},_$=o(t=>{let e=new jC;return e.calculate(t),e},"getThemeVariables")});var KC,L$,R$=N(()=>{"use strict";Ys();o0();KC=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Dt(this.primaryColor,16),this.tertiaryColor=Me(this.primaryColor,{h:-160}),this.primaryBorderColor=wt(this.background),this.secondaryBorderColor=Ti(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Ti(this.tertiaryColor,this.darkMode),this.primaryTextColor=wt(this.primaryColor),this.secondaryTextColor=wt(this.secondaryColor),this.tertiaryTextColor=wt(this.tertiaryColor),this.lineColor=wt(this.background),this.textColor=wt(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Dt(wt("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=qa(255,255,255,.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=Ot("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=Ot(this.sectionBkgColor,10),this.taskBorderColor=qa(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=qa(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.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||Dt(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Ot(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=Dt(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=Dt(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,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=Dt(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.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,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=Me(this.primaryColor,{h:64}),this.fillType3=Me(this.secondaryColor,{h:64}),this.fillType4=Me(this.primaryColor,{h:-64}),this.fillType5=Me(this.secondaryColor,{h:-64}),this.fillType6=Me(this.primaryColor,{h:128}),this.fillType7=Me(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||Me(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Me(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Me(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Me(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Me(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Me(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Me(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Me(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Me(this.primaryColor,{h:330});for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},L$=o(t=>{let e=new KC;return e.calculate(t),e},"getThemeVariables")});var QC,oh,_y=N(()=>{"use strict";Ys();o0();Ay();QC=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=Me(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=Me(this.primaryColor,{h:-160}),this.primaryBorderColor=Ti(this.primaryColor,this.darkMode),this.secondaryBorderColor=Ti(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Ti(this.tertiaryColor,this.darkMode),this.primaryTextColor=wt(this.primaryColor),this.secondaryTextColor=wt(this.secondaryColor),this.tertiaryTextColor=wt(this.tertiaryColor),this.lineColor=wt(this.background),this.textColor=wt(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="rgba(232,232,232, 0.8)",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="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="#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=qa(102,102,255,.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.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",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||Me(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Me(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Me(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Me(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Me(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Me(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Me(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Me(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Me(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Ot(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Ot(this.tertiaryColor,40);for(let e=0;e{this[n]==="calculated"&&(this[n]=void 0)}),typeof e!="object"){this.updateColors();return}let r=Object.keys(e);r.forEach(n=>{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},oh=o(t=>{let e=new QC;return e.calculate(t),e},"getThemeVariables")});var ZC,N$,M$=N(()=>{"use strict";Ys();Ay();o0();ZC=class{static{o(this,"Theme")}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=Dt("#cde498",10),this.primaryBorderColor=Ti(this.primaryColor,this.darkMode),this.secondaryBorderColor=Ti(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Ti(this.tertiaryColor,this.darkMode),this.primaryTextColor=wt(this.primaryColor),this.secondaryTextColor=wt(this.secondaryColor),this.tertiaryTextColor=wt(this.primaryColor),this.lineColor=wt(this.background),this.textColor=wt(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="calculated",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.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=Ot(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.actorLineColor=this.actorBorder,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Me(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Me(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Me(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Me(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Me(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Me(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Me(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Me(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Me(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Ot(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Ot(this.tertiaryColor,40);for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},N$=o(t=>{let e=new ZC;return e.calculate(t),e},"getThemeVariables")});var JC,I$,O$=N(()=>{"use strict";Ys();o0();Ay();JC=class{static{o(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=Dt(this.contrast,55),this.background="#ffffff",this.tertiaryColor=Me(this.primaryColor,{h:-160}),this.primaryBorderColor=Ti(this.primaryColor,this.darkMode),this.secondaryBorderColor=Ti(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Ti(this.tertiaryColor,this.darkMode),this.primaryTextColor=wt(this.primaryColor),this.secondaryTextColor=wt(this.secondaryColor),this.tertiaryTextColor=wt(this.tertiaryColor),this.lineColor=wt(this.background),this.textColor=wt(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=this.actorBorder,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.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||Dt(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=Dt(this.contrast,55),this.border2=this.contrast,this.actorBorder=Dt(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,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 e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},I$=o(t=>{let e=new JC;return e.calculate(t),e},"getThemeVariables")});var To,q4=N(()=>{"use strict";D$();R$();_y();M$();O$();To={base:{getThemeVariables:_$},dark:{getThemeVariables:L$},default:{getThemeVariables:oh},forest:{getThemeVariables:N$},neutral:{getThemeVariables:I$}}});var ql,P$=N(()=>{"use strict";ql={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},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,hideEmptyMembersBox:!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,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.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},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},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},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},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,parallelCommits:!1,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:""},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1}});var B$,F$,$$,or,Ya=N(()=>{"use strict";q4();P$();B$={...ql,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF"},themeCSS:void 0,themeVariables:To.default.getThemeVariables(),sequence:{...ql.sequence,messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:o(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:o(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1},gantt:{...ql.gantt,tickInterval:void 0,useWidth:void 0},c4:{...ql.c4,useWidth:void 0,personFont:o(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),external_personFont:o(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:o(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:o(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:o(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:o(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:o(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:o(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:o(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:o(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:o(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:o(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:o(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:o(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:o(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:o(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:o(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:o(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:o(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:o(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:o(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...ql.pie,useWidth:984},xyChart:{...ql.xyChart,useWidth:void 0},requirement:{...ql.requirement,useWidth:void 0},packet:{...ql.packet},radar:{...ql.radar}},F$=o((t,e="")=>Object.keys(t).reduce((r,n)=>Array.isArray(t[n])?r:typeof t[n]=="object"&&t[n]!==null?[...r,e+n,...F$(t[n],"")]:[...r,e+n],[]),"keyify"),$$=new Set(F$(B$,"")),or=B$});var l0,Dxe,e7=N(()=>{"use strict";Ya();vt();l0=o(t=>{if(Y.debug("sanitizeDirective called with",t),!(typeof t!="object"||t==null)){if(Array.isArray(t)){t.forEach(e=>l0(e));return}for(let e of Object.keys(t)){if(Y.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!$$.has(e)||t[e]==null){Y.debug("sanitize deleting key: ",e),delete t[e];continue}if(typeof t[e]=="object"){Y.debug("sanitizing object",e),l0(t[e]);continue}let r=["themeCSS","fontFamily","altFontFamily"];for(let n of r)e.includes(n)&&(Y.debug("sanitizing css option",e),t[e]=Dxe(t[e]))}if(t.themeVariables)for(let e of Object.keys(t.themeVariables)){let r=t.themeVariables[e];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}Y.debug("After sanitization",t)}},"sanitizeDirective"),Dxe=o(t=>{let e=0,r=0;for(let n of t){if(e{"use strict";s0();vt();q4();Ya();e7();lh=Object.freeze(or),xs=Gn({},lh),c0=[],Dy=Gn({},lh),Y4=o((t,e)=>{let r=Gn({},t),n={};for(let i of e)H$(i),n=Gn(n,i);if(r=Gn(r,n),n.theme&&n.theme in To){let i=Gn({},G$),a=Gn(i.themeVariables||{},n.themeVariables);r.theme&&r.theme in To&&(r.themeVariables=To[r.theme].getThemeVariables(a))}return Dy=r,q$(Dy),Dy},"updateCurrentConfig"),t7=o(t=>(xs=Gn({},lh),xs=Gn(xs,t),t.theme&&To[t.theme]&&(xs.themeVariables=To[t.theme].getThemeVariables(t.themeVariables)),Y4(xs,c0),xs),"setSiteConfig"),V$=o(t=>{G$=Gn({},t)},"saveConfigFromInitialize"),U$=o(t=>(xs=Gn(xs,t),Y4(xs,c0),xs),"updateSiteConfig"),r7=o(()=>Gn({},xs),"getSiteConfig"),X4=o(t=>(q$(t),Gn(Dy,t),cr()),"setConfig"),cr=o(()=>Gn({},Dy),"getConfig"),H$=o(t=>{t&&(["secure",...xs.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(Y.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=>{typeof t[e]=="string"&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],typeof t[e]=="object"&&H$(t[e])}))},"sanitize"),W$=o(t=>{l0(t),t.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables={...t.themeVariables,fontFamily:t.fontFamily}),c0.push(t),Y4(xs,c0)},"addDirective"),Ly=o((t=xs)=>{c0=[],Y4(t,c0)},"reset"),Lxe={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},z$={},Rxe=o(t=>{z$[t]||(Y.warn(Lxe[t]),z$[t]=!0)},"issueWarning"),q$=o(t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&Rxe("LAZY_LOAD_DEPRECATED")},"checkConfig")});function Ka(t){return function(e){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i2&&arguments[2]!==void 0?arguments[2]:Q4;Y$&&Y$(t,null);let n=e.length;for(;n--;){let i=e[n];if(typeof i=="string"){let a=r(i);a!==i&&(Nxe(e)||(e[n]=a),i=a)}t[i]=!0}return t}function zxe(t){for(let e=0;e0&&arguments[0]!==void 0?arguments[0]:Qxe(),e=o(At=>sz(At),"DOMPurify");if(e.version="3.2.4",e.removed=[],!t||!t.document||t.document.nodeType!==Oy.document||!t.Element)return e.isSupported=!1,e;let{document:r}=t,n=r,i=n.currentScript,{DocumentFragment:a,HTMLTemplateElement:s,Node:l,Element:u,NodeFilter:h,NamedNodeMap:f=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:d,DOMParser:p,trustedTypes:m}=t,g=u.prototype,y=Iy(g,"cloneNode"),v=Iy(g,"remove"),x=Iy(g,"nextSibling"),b=Iy(g,"childNodes"),w=Iy(g,"parentNode");if(typeof s=="function"){let At=r.createElement("template");At.content&&At.content.ownerDocument&&(r=At.content.ownerDocument)}let C,T="",{implementation:E,createNodeIterator:A,createDocumentFragment:S,getElementsByTagName:_}=r,{importNode:I}=n,D=tz();e.isSupported=typeof rz=="function"&&typeof w=="function"&&E&&E.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:k,ERB_EXPR:L,TMPLIT_EXPR:R,DATA_ATTR:O,ARIA_ATTR:M,IS_SCRIPT_OR_DATA:B,ATTR_WHITESPACE:F,CUSTOM_ELEMENT:P}=ez,{IS_ALLOWED_URI:z}=ez,$=null,H=Cr({},[...K$,...i7,...a7,...s7,...Q$]),Q=null,j=Cr({},[...Z$,...o7,...J$,...K4]),ie=Object.seal(nz(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}})),ne=null,le=null,he=!0,K=!0,X=!1,te=!0,J=!1,se=!0,ue=!1,Z=!1,Se=!1,ce=!1,ae=!1,Oe=!1,ge=!0,ze=!1,He="user-content-",$e=!0,Re=!1,Ie={},be=null,W=Cr({},["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"]),de=null,re=Cr({},["audio","video","img","source","image","track"]),oe=null,V=Cr({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),xe="http://www.w3.org/1998/Math/MathML",q="http://www.w3.org/2000/svg",pe="http://www.w3.org/1999/xhtml",ve=pe,Pe=!1,_e=null,we=Cr({},[xe,q,pe],n7),Ve=Cr({},["mi","mo","mn","ms","mtext"]),De=Cr({},["annotation-xml"]),qe=Cr({},["title","style","font","a","script"]),at=null,Rt=["application/xhtml+xml","text/html"],st="text/html",Ue=null,ct=null,We=r.createElement("form"),ot=o(function(Ce){return Ce instanceof RegExp||Ce instanceof Function},"isRegexOrFunction"),Yt=o(function(){let Ce=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(ct&&ct===Ce)){if((!Ce||typeof Ce!="object")&&(Ce={}),Ce=Qf(Ce),at=Rt.indexOf(Ce.PARSER_MEDIA_TYPE)===-1?st:Ce.PARSER_MEDIA_TYPE,Ue=at==="application/xhtml+xml"?n7:Q4,$=sl(Ce,"ALLOWED_TAGS")?Cr({},Ce.ALLOWED_TAGS,Ue):H,Q=sl(Ce,"ALLOWED_ATTR")?Cr({},Ce.ALLOWED_ATTR,Ue):j,_e=sl(Ce,"ALLOWED_NAMESPACES")?Cr({},Ce.ALLOWED_NAMESPACES,n7):we,oe=sl(Ce,"ADD_URI_SAFE_ATTR")?Cr(Qf(V),Ce.ADD_URI_SAFE_ATTR,Ue):V,de=sl(Ce,"ADD_DATA_URI_TAGS")?Cr(Qf(re),Ce.ADD_DATA_URI_TAGS,Ue):re,be=sl(Ce,"FORBID_CONTENTS")?Cr({},Ce.FORBID_CONTENTS,Ue):W,ne=sl(Ce,"FORBID_TAGS")?Cr({},Ce.FORBID_TAGS,Ue):{},le=sl(Ce,"FORBID_ATTR")?Cr({},Ce.FORBID_ATTR,Ue):{},Ie=sl(Ce,"USE_PROFILES")?Ce.USE_PROFILES:!1,he=Ce.ALLOW_ARIA_ATTR!==!1,K=Ce.ALLOW_DATA_ATTR!==!1,X=Ce.ALLOW_UNKNOWN_PROTOCOLS||!1,te=Ce.ALLOW_SELF_CLOSE_IN_ATTR!==!1,J=Ce.SAFE_FOR_TEMPLATES||!1,se=Ce.SAFE_FOR_XML!==!1,ue=Ce.WHOLE_DOCUMENT||!1,ce=Ce.RETURN_DOM||!1,ae=Ce.RETURN_DOM_FRAGMENT||!1,Oe=Ce.RETURN_TRUSTED_TYPE||!1,Se=Ce.FORCE_BODY||!1,ge=Ce.SANITIZE_DOM!==!1,ze=Ce.SANITIZE_NAMED_PROPS||!1,$e=Ce.KEEP_CONTENT!==!1,Re=Ce.IN_PLACE||!1,z=Ce.ALLOWED_URI_REGEXP||iz,ve=Ce.NAMESPACE||pe,Ve=Ce.MATHML_TEXT_INTEGRATION_POINTS||Ve,De=Ce.HTML_INTEGRATION_POINTS||De,ie=Ce.CUSTOM_ELEMENT_HANDLING||{},Ce.CUSTOM_ELEMENT_HANDLING&&ot(Ce.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(ie.tagNameCheck=Ce.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Ce.CUSTOM_ELEMENT_HANDLING&&ot(Ce.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(ie.attributeNameCheck=Ce.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Ce.CUSTOM_ELEMENT_HANDLING&&typeof Ce.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(ie.allowCustomizedBuiltInElements=Ce.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),J&&(K=!1),ae&&(ce=!0),Ie&&($=Cr({},Q$),Q=[],Ie.html===!0&&(Cr($,K$),Cr(Q,Z$)),Ie.svg===!0&&(Cr($,i7),Cr(Q,o7),Cr(Q,K4)),Ie.svgFilters===!0&&(Cr($,a7),Cr(Q,o7),Cr(Q,K4)),Ie.mathMl===!0&&(Cr($,s7),Cr(Q,J$),Cr(Q,K4))),Ce.ADD_TAGS&&($===H&&($=Qf($)),Cr($,Ce.ADD_TAGS,Ue)),Ce.ADD_ATTR&&(Q===j&&(Q=Qf(Q)),Cr(Q,Ce.ADD_ATTR,Ue)),Ce.ADD_URI_SAFE_ATTR&&Cr(oe,Ce.ADD_URI_SAFE_ATTR,Ue),Ce.FORBID_CONTENTS&&(be===W&&(be=Qf(be)),Cr(be,Ce.FORBID_CONTENTS,Ue)),$e&&($["#text"]=!0),ue&&Cr($,["html","head","body"]),$.table&&(Cr($,["tbody"]),delete ne.tbody),Ce.TRUSTED_TYPES_POLICY){if(typeof Ce.TRUSTED_TYPES_POLICY.createHTML!="function")throw My('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Ce.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw My('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');C=Ce.TRUSTED_TYPES_POLICY,T=C.createHTML("")}else C===void 0&&(C=Zxe(m,i)),C!==null&&typeof T=="string"&&(T=C.createHTML(""));ja&&ja(Ce),ct=Ce}},"_parseConfig"),bt=Cr({},[...i7,...a7,...Gxe]),Mt=Cr({},[...s7,...Vxe]),xt=o(function(Ce){let tt=w(Ce);(!tt||!tt.tagName)&&(tt={namespaceURI:ve,tagName:"template"});let St=Q4(Ce.tagName),mr=Q4(tt.tagName);return _e[Ce.namespaceURI]?Ce.namespaceURI===q?tt.namespaceURI===pe?St==="svg":tt.namespaceURI===xe?St==="svg"&&(mr==="annotation-xml"||Ve[mr]):!!bt[St]:Ce.namespaceURI===xe?tt.namespaceURI===pe?St==="math":tt.namespaceURI===q?St==="math"&&De[mr]:!!Mt[St]:Ce.namespaceURI===pe?tt.namespaceURI===q&&!De[mr]||tt.namespaceURI===xe&&!Ve[mr]?!1:!Mt[St]&&(qe[St]||!bt[St]):!!(at==="application/xhtml+xml"&&_e[Ce.namespaceURI]):!1},"_checkValidNamespace"),ut=o(function(Ce){Ry(e.removed,{element:Ce});try{w(Ce).removeChild(Ce)}catch{v(Ce)}},"_forceRemove"),Et=o(function(Ce,tt){try{Ry(e.removed,{attribute:tt.getAttributeNode(Ce),from:tt})}catch{Ry(e.removed,{attribute:null,from:tt})}if(tt.removeAttribute(Ce),Ce==="is")if(ce||ae)try{ut(tt)}catch{}else try{tt.setAttribute(Ce,"")}catch{}},"_removeAttribute"),ft=o(function(Ce){let tt=null,St=null;if(Se)Ce=""+Ce;else{let gn=j$(Ce,/^[\r\n\t ]+/);St=gn&&gn[0]}at==="application/xhtml+xml"&&ve===pe&&(Ce=''+Ce+"");let mr=C?C.createHTML(Ce):Ce;if(ve===pe)try{tt=new p().parseFromString(mr,at)}catch{}if(!tt||!tt.documentElement){tt=E.createDocument(ve,"template",null);try{tt.documentElement.innerHTML=Pe?T:mr}catch{}}let rn=tt.body||tt.documentElement;return Ce&&St&&rn.insertBefore(r.createTextNode(St),rn.childNodes[0]||null),ve===pe?_.call(tt,ue?"html":"body")[0]:ue?tt.documentElement:rn},"_initDocument"),yt=o(function(Ce){return A.call(Ce.ownerDocument||Ce,Ce,h.SHOW_ELEMENT|h.SHOW_COMMENT|h.SHOW_TEXT|h.SHOW_PROCESSING_INSTRUCTION|h.SHOW_CDATA_SECTION,null)},"_createNodeIterator"),nt=o(function(Ce){return Ce instanceof d&&(typeof Ce.nodeName!="string"||typeof Ce.textContent!="string"||typeof Ce.removeChild!="function"||!(Ce.attributes instanceof f)||typeof Ce.removeAttribute!="function"||typeof Ce.setAttribute!="function"||typeof Ce.namespaceURI!="string"||typeof Ce.insertBefore!="function"||typeof Ce.hasChildNodes!="function")},"_isClobbered"),dn=o(function(Ce){return typeof l=="function"&&Ce instanceof l},"_isNode");function Tt(At,Ce,tt){j4(At,St=>{St.call(e,Ce,tt,ct)})}o(Tt,"_executeHooks");let On=o(function(Ce){let tt=null;if(Tt(D.beforeSanitizeElements,Ce,null),nt(Ce))return ut(Ce),!0;let St=Ue(Ce.nodeName);if(Tt(D.uponSanitizeElement,Ce,{tagName:St,allowedTags:$}),Ce.hasChildNodes()&&!dn(Ce.firstElementChild)&&Xa(/<[/\w]/g,Ce.innerHTML)&&Xa(/<[/\w]/g,Ce.textContent)||Ce.nodeType===Oy.progressingInstruction||se&&Ce.nodeType===Oy.comment&&Xa(/<[/\w]/g,Ce.data))return ut(Ce),!0;if(!$[St]||ne[St]){if(!ne[St]&&_r(St)&&(ie.tagNameCheck instanceof RegExp&&Xa(ie.tagNameCheck,St)||ie.tagNameCheck instanceof Function&&ie.tagNameCheck(St)))return!1;if($e&&!be[St]){let mr=w(Ce)||Ce.parentNode,rn=b(Ce)||Ce.childNodes;if(rn&&mr){let gn=rn.length;for(let Zr=gn-1;Zr>=0;--Zr){let Ni=y(rn[Zr],!0);Ni.__removalCount=(Ce.__removalCount||0)+1,mr.insertBefore(Ni,x(Ce))}}}return ut(Ce),!0}return Ce instanceof u&&!xt(Ce)||(St==="noscript"||St==="noembed"||St==="noframes")&&Xa(/<\/no(script|embed|frames)/i,Ce.innerHTML)?(ut(Ce),!0):(J&&Ce.nodeType===Oy.text&&(tt=Ce.textContent,j4([k,L,R],mr=>{tt=Ny(tt,mr," ")}),Ce.textContent!==tt&&(Ry(e.removed,{element:Ce.cloneNode()}),Ce.textContent=tt)),Tt(D.afterSanitizeElements,Ce,null),!1)},"_sanitizeElements"),tn=o(function(Ce,tt,St){if(ge&&(tt==="id"||tt==="name")&&(St in r||St in We))return!1;if(!(K&&!le[tt]&&Xa(O,tt))){if(!(he&&Xa(M,tt))){if(!Q[tt]||le[tt]){if(!(_r(Ce)&&(ie.tagNameCheck instanceof RegExp&&Xa(ie.tagNameCheck,Ce)||ie.tagNameCheck instanceof Function&&ie.tagNameCheck(Ce))&&(ie.attributeNameCheck instanceof RegExp&&Xa(ie.attributeNameCheck,tt)||ie.attributeNameCheck instanceof Function&&ie.attributeNameCheck(tt))||tt==="is"&&ie.allowCustomizedBuiltInElements&&(ie.tagNameCheck instanceof RegExp&&Xa(ie.tagNameCheck,St)||ie.tagNameCheck instanceof Function&&ie.tagNameCheck(St))))return!1}else if(!oe[tt]){if(!Xa(z,Ny(St,F,""))){if(!((tt==="src"||tt==="xlink:href"||tt==="href")&&Ce!=="script"&&Bxe(St,"data:")===0&&de[Ce])){if(!(X&&!Xa(B,Ny(St,F,"")))){if(St)return!1}}}}}}return!0},"_isValidAttribute"),_r=o(function(Ce){return Ce!=="annotation-xml"&&j$(Ce,P)},"_isBasicCustomElement"),Dr=o(function(Ce){Tt(D.beforeSanitizeAttributes,Ce,null);let{attributes:tt}=Ce;if(!tt||nt(Ce))return;let St={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Q,forceKeepAttr:void 0},mr=tt.length;for(;mr--;){let rn=tt[mr],{name:gn,namespaceURI:Zr,value:Ni}=rn,Zn=Ue(gn),Sn=gn==="value"?Ni:Fxe(Ni);if(St.attrName=Zn,St.attrValue=Sn,St.keepAttr=!0,St.forceKeepAttr=void 0,Tt(D.uponSanitizeAttribute,Ce,St),Sn=St.attrValue,ze&&(Zn==="id"||Zn==="name")&&(Et(gn,Ce),Sn=He+Sn),se&&Xa(/((--!?|])>)|<\/(style|title)/i,Sn)){Et(gn,Ce);continue}if(St.forceKeepAttr||(Et(gn,Ce),!St.keepAttr))continue;if(!te&&Xa(/\/>/i,Sn)){Et(gn,Ce);continue}J&&j4([k,L,R],et=>{Sn=Ny(Sn,et," ")});let Hr=Ue(Ce.nodeName);if(tn(Hr,Zn,Sn)){if(C&&typeof m=="object"&&typeof m.getAttributeType=="function"&&!Zr)switch(m.getAttributeType(Hr,Zn)){case"TrustedHTML":{Sn=C.createHTML(Sn);break}case"TrustedScriptURL":{Sn=C.createScriptURL(Sn);break}}try{Zr?Ce.setAttributeNS(Zr,gn,Sn):Ce.setAttribute(gn,Sn),nt(Ce)?ut(Ce):X$(e.removed)}catch{}}}Tt(D.afterSanitizeAttributes,Ce,null)},"_sanitizeAttributes"),Pn=o(function At(Ce){let tt=null,St=yt(Ce);for(Tt(D.beforeSanitizeShadowDOM,Ce,null);tt=St.nextNode();)Tt(D.uponSanitizeShadowNode,tt,null),On(tt),Dr(tt),tt.content instanceof a&&At(tt.content);Tt(D.afterSanitizeShadowDOM,Ce,null)},"_sanitizeShadowDOM");return e.sanitize=function(At){let Ce=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},tt=null,St=null,mr=null,rn=null;if(Pe=!At,Pe&&(At=""),typeof At!="string"&&!dn(At))if(typeof At.toString=="function"){if(At=At.toString(),typeof At!="string")throw My("dirty is not a string, aborting")}else throw My("toString is not a function");if(!e.isSupported)return At;if(Z||Yt(Ce),e.removed=[],typeof At=="string"&&(Re=!1),Re){if(At.nodeName){let Ni=Ue(At.nodeName);if(!$[Ni]||ne[Ni])throw My("root node is forbidden and cannot be sanitized in-place")}}else if(At instanceof l)tt=ft(""),St=tt.ownerDocument.importNode(At,!0),St.nodeType===Oy.element&&St.nodeName==="BODY"||St.nodeName==="HTML"?tt=St:tt.appendChild(St);else{if(!ce&&!J&&!ue&&At.indexOf("<")===-1)return C&&Oe?C.createHTML(At):At;if(tt=ft(At),!tt)return ce?null:Oe?T:""}tt&&Se&&ut(tt.firstChild);let gn=yt(Re?At:tt);for(;mr=gn.nextNode();)On(mr),Dr(mr),mr.content instanceof a&&Pn(mr.content);if(Re)return At;if(ce){if(ae)for(rn=S.call(tt.ownerDocument);tt.firstChild;)rn.appendChild(tt.firstChild);else rn=tt;return(Q.shadowroot||Q.shadowrootmode)&&(rn=I.call(n,rn,!0)),rn}let Zr=ue?tt.outerHTML:tt.innerHTML;return ue&&$["!doctype"]&&tt.ownerDocument&&tt.ownerDocument.doctype&&tt.ownerDocument.doctype.name&&Xa(az,tt.ownerDocument.doctype.name)&&(Zr=" +`+Zr),J&&j4([k,L,R],Ni=>{Zr=Ny(Zr,Ni," ")}),C&&Oe?C.createHTML(Zr):Zr},e.setConfig=function(){let At=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Yt(At),Z=!0},e.clearConfig=function(){ct=null,Z=!1},e.isValidAttribute=function(At,Ce,tt){ct||Yt({});let St=Ue(At),mr=Ue(Ce);return tn(St,mr,tt)},e.addHook=function(At,Ce){typeof Ce=="function"&&Ry(D[At],Ce)},e.removeHook=function(At,Ce){if(Ce!==void 0){let tt=Oxe(D[At],Ce);return tt===-1?void 0:Pxe(D[At],tt,1)[0]}return X$(D[At])},e.removeHooks=function(At){D[At]=[]},e.removeAllHooks=function(){D=tz()},e}var rz,Y$,Nxe,Mxe,Ixe,ja,ko,nz,l7,c7,j4,Oxe,X$,Ry,Pxe,Q4,n7,j$,Ny,Bxe,Fxe,sl,Xa,My,K$,i7,a7,Gxe,s7,Vxe,Q$,Z$,o7,J$,K4,Uxe,Hxe,Wxe,qxe,Yxe,iz,Xxe,jxe,az,Kxe,ez,Oy,Qxe,Zxe,tz,ch,u7=N(()=>{"use strict";({entries:rz,setPrototypeOf:Y$,isFrozen:Nxe,getPrototypeOf:Mxe,getOwnPropertyDescriptor:Ixe}=Object),{freeze:ja,seal:ko,create:nz}=Object,{apply:l7,construct:c7}=typeof Reflect<"u"&&Reflect;ja||(ja=o(function(e){return e},"freeze"));ko||(ko=o(function(e){return e},"seal"));l7||(l7=o(function(e,r,n){return e.apply(r,n)},"apply"));c7||(c7=o(function(e,r){return new e(...r)},"construct"));j4=Ka(Array.prototype.forEach),Oxe=Ka(Array.prototype.lastIndexOf),X$=Ka(Array.prototype.pop),Ry=Ka(Array.prototype.push),Pxe=Ka(Array.prototype.splice),Q4=Ka(String.prototype.toLowerCase),n7=Ka(String.prototype.toString),j$=Ka(String.prototype.match),Ny=Ka(String.prototype.replace),Bxe=Ka(String.prototype.indexOf),Fxe=Ka(String.prototype.trim),sl=Ka(Object.prototype.hasOwnProperty),Xa=Ka(RegExp.prototype.test),My=$xe(TypeError);o(Ka,"unapply");o($xe,"unconstruct");o(Cr,"addToSet");o(zxe,"cleanArray");o(Qf,"clone");o(Iy,"lookupGetter");K$=ja(["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"]),i7=ja(["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"]),a7=ja(["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"]),Gxe=ja(["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"]),s7=ja(["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"]),Vxe=ja(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Q$=ja(["#text"]),Z$=ja(["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","popover","popovertarget","popovertargetaction","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","wrap","xmlns","slot"]),o7=ja(["accent-height","accumulate","additive","alignment-baseline","amplitude","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","exponent","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","intercept","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","slope","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","tablevalues","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"]),J$=ja(["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"]),K4=ja(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Uxe=ko(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Hxe=ko(/<%[\w\W]*|[\w\W]*%>/gm),Wxe=ko(/\$\{[\w\W]*/gm),qxe=ko(/^data-[\-\w.\u00B7-\uFFFF]+$/),Yxe=ko(/^aria-[\-\w]+$/),iz=ko(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Xxe=ko(/^(?:\w+script|data):/i),jxe=ko(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),az=ko(/^html$/i),Kxe=ko(/^[a-z][.\w]*(-[.\w]+)+$/i),ez=Object.freeze({__proto__:null,ARIA_ATTR:Yxe,ATTR_WHITESPACE:jxe,CUSTOM_ELEMENT:Kxe,DATA_ATTR:qxe,DOCTYPE_NAME:az,ERB_EXPR:Hxe,IS_ALLOWED_URI:iz,IS_SCRIPT_OR_DATA:Xxe,MUSTACHE_EXPR:Uxe,TMPLIT_EXPR:Wxe}),Oy={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},Qxe=o(function(){return typeof window>"u"?null:window},"getGlobal"),Zxe=o(function(e,r){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let n=null,i="data-tt-policy-suffix";r&&r.hasAttribute(i)&&(n=r.getAttribute(i));let a="dompurify"+(n?"#"+n:"");try{return e.createPolicy(a,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+a+" could not be created."),null}},"_createTrustedTypesPolicy"),tz=o(function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},"_createHooksMap");o(sz,"createDOMPurify");ch=sz()});var MG={};hr(MG,{default:()=>q4e});function abe(t){return String(t).replace(ibe,e=>nbe[e])}function cbe(t){if(t.default)return t.default;var e=t.type,r=Array.isArray(e)?e[0]:e;if(typeof r!="string")return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}function gbe(t){for(var e=0;e=i[0]&&t<=i[1])return r.name}return null}function $z(t){for(var e=0;e=u3[e]&&t<=u3[e+1])return!0;return!1}function Abe(t,e){jl[t]=e}function P7(t,e,r){if(!jl[e])throw new Error("Font metrics not found for font: "+e+".");var n=t.charCodeAt(0),i=jl[e][n];if(!i&&t[0]in lz&&(n=lz[t[0]].charCodeAt(0),i=jl[e][n]),!i&&r==="text"&&$z(n)&&(i=jl[e][77]),i)return{depth:i[0],height:i[1],italic:i[2],skew:i[3],width:i[4]}}function _be(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!h7[e]){var r=h7[e]={cssEmPerMu:Z4.quad[e]/18};for(var n in Z4)Z4.hasOwnProperty(n)&&(r[n]=Z4[n][e])}return h7[e]}function hz(t){if(t instanceof Ts)return t;throw new Error("Expected symbolNode but got "+String(t)+".")}function Nbe(t){if(t instanceof td)return t;throw new Error("Expected span but got "+String(t)+".")}function G(t,e,r,n,i,a){An[t][i]={font:e,group:r,replace:n},a&&n&&(An[t][n]=An[t][i])}function Nt(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=t,l={type:e,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:i},u=0;u0&&(a.push(a3(s,e)),s=[]),a.push(n[l]));s.length>0&&a.push(a3(s,e));var h;r?(h=a3(Pi(r,e,!0)),h.classes=["tag"],a.push(h)):i&&a.push(i);var f=lu(["katex-html"],a);if(f.setAttribute("aria-hidden","true"),h){var d=h.children[0];d.style.height=kt(f.height+f.depth),f.depth&&(d.style.verticalAlign=kt(-f.depth))}return f}function Qz(t){return new ed(t)}function gz(t,e,r,n,i){var a=ks(t,r),s;a.length===1&&a[0]instanceof ws&&Jt.contains(["mrow","mtable"],a[0].type)?s=a[0]:s=new dt.MathNode("mrow",a);var l=new dt.MathNode("annotation",[new dt.TextNode(e)]);l.setAttribute("encoding","application/x-tex");var u=new dt.MathNode("semantics",[s,l]),h=new dt.MathNode("math",[u]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&h.setAttribute("display","block");var f=i?"katex":"katex-mathml";return Be.makeSpan([f],[h])}function xr(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function z7(t){var e=w3(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function w3(t){return t&&(t.type==="atom"||Ibe.hasOwnProperty(t.type))?t:null}function tG(t,e){var r=Pi(t.body,e,!0);return u4e([t.mclass],r,e)}function rG(t,e){var r,n=ks(t.body,e);return t.mclass==="minner"?r=new dt.MathNode("mpadded",n):t.mclass==="mord"?t.isCharacterBox?(r=n[0],r.type="mi"):r=new dt.MathNode("mi",n):(t.isCharacterBox?(r=n[0],r.type="mo"):r=new dt.MathNode("mo",n),t.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):t.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):t.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}function d4e(t,e,r){var n=h4e[t];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var i=r.callFunction("\\\\cdleft",[e[0]],[]),a={type:"atom",text:n,mode:"math",family:"rel"},s=r.callFunction("\\Big",[a],[]),l=r.callFunction("\\\\cdright",[e[1]],[]),u={type:"ordgroup",mode:"math",body:[i,s,l]};return r.callFunction("\\\\cdparent",[u],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var h={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[h],[])}default:return{type:"textord",text:" ",mode:"math"}}}function p4e(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var r=t.fetch().text;if(r==="&"||r==="\\\\")t.consume();else if(r==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new gt("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var n=[],i=[n],a=0;a-1))if("<>AV".indexOf(h)>-1)for(var d=0;d<2;d++){for(var p=!0,m=u+1;mAV=|." after @',s[u]);var g=d4e(h,f,t),y={type:"styling",body:[g],mode:"math",style:"display"};n.push(y),l=yz()}a%2===0?n.push(l):n.shift(),n=[],i.push(n)}t.gullet.endGroup(),t.gullet.endGroup();var v=new Array(i[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:i,arraystretch:1,addJot:!0,rowGaps:[null],cols:v,colSeparationType:"CD",hLinesBeforeRow:new Array(i.length+1).fill([])}}function k3(t,e){var r=w3(t);if(r&&Jt.contains(A4e,r.text))return r;throw r?new gt("Invalid delimiter '"+r.text+"' after '"+e.funcName+"'",t):new gt("Invalid delimiter type '"+t.type+"'",t)}function bz(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}function Ql(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=t,l={type:e,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:i},u=0;u1||!f)&&y.pop(),x.length{"use strict";Xs=class t{static{o(this,"SourceLocation")}constructor(e,r,n){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=r,this.end=n}static range(e,r){return r?!e||!e.loc||!r.loc||e.loc.lexer!==r.loc.lexer?null:new t(e.loc.lexer,e.loc.start,r.loc.end):e&&e.loc}},So=class t{static{o(this,"Token")}constructor(e,r){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=r}range(e,r){return new t(r,Xs.range(this,e))}},gt=class t{static{o(this,"ParseError")}constructor(e,r){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var n="KaTeX parse error: "+e,i,a,s=r&&r.loc;if(s&&s.start<=s.end){var l=s.lexer.input;i=s.start,a=s.end,i===l.length?n+=" at end of input: ":n+=" at position "+(i+1)+": ";var u=l.slice(i,a).replace(/[^]/g,"$&\u0332"),h;i>15?h="\u2026"+l.slice(i-15,i):h=l.slice(0,i);var f;a+15":">","<":"<",'"':""","'":"'"},ibe=/[&><"']/g;o(abe,"escape");Fz=o(function t(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?t(e.body[0]):e:e.type==="font"?t(e.body):e},"getBaseElem"),sbe=o(function(e){var r=Fz(e);return r.type==="mathord"||r.type==="textord"||r.type==="atom"},"isCharacterBox"),obe=o(function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},"assert"),lbe=o(function(e){var r=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return r?r[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(r[1])?null:r[1].toLowerCase():"_relative"},"protocolFromUrl"),Jt={contains:Jxe,deflt:ebe,escape:abe,hyphenate:rbe,getBaseElem:Fz,isCharacterBox:sbe,protocolFromUrl:lbe},c3={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:o(t=>"#"+t,"cliProcessor")},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:o((t,e)=>(e.push(t),e),"cliProcessor")},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:o(t=>Math.max(0,t),"processor"),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:o(t=>Math.max(0,t),"processor"),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:o(t=>Math.max(0,t),"processor"),cli:"-e, --max-expand ",cliProcessor:o(t=>t==="Infinity"?1/0:parseInt(t),"cliProcessor")},globalGroup:{type:"boolean",cli:!1}};o(cbe,"getDefaultValue");zy=class{static{o(this,"Settings")}constructor(e){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||{};for(var r in c3)if(c3.hasOwnProperty(r)){var n=c3[r];this[r]=e[r]!==void 0?n.processor?n.processor(e[r]):e[r]:cbe(n)}}reportNonstrict(e,r,n){var i=this.strict;if(typeof i=="function"&&(i=i(e,r,n)),!(!i||i==="ignore")){if(i===!0||i==="error")throw new gt("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+e+"]"),n);i==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+e+"]"))}}useStrictBehavior(e,r,n){var i=this.strict;if(typeof i=="function")try{i=i(e,r,n)}catch{i="error"}return!i||i==="ignore"?!1:i===!0||i==="error"?!0:i==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var r=Jt.protocolFromUrl(e.url);if(r==null)return!1;e.protocol=r}var n=typeof this.trust=="function"?this.trust(e):this.trust;return!!n}},Yl=class{static{o(this,"Style")}constructor(e,r,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=r,this.cramped=n}sup(){return Xl[ube[this.id]]}sub(){return Xl[hbe[this.id]]}fracNum(){return Xl[fbe[this.id]]}fracDen(){return Xl[dbe[this.id]]}cramp(){return Xl[pbe[this.id]]}text(){return Xl[mbe[this.id]]}isTight(){return this.size>=2}},O7=0,h3=1,f0=2,su=3,Gy=4,Eo=5,d0=6,Qa=7,Xl=[new Yl(O7,0,!1),new Yl(h3,0,!0),new Yl(f0,1,!1),new Yl(su,1,!0),new Yl(Gy,2,!1),new Yl(Eo,2,!0),new Yl(d0,3,!1),new Yl(Qa,3,!0)],ube=[Gy,Eo,Gy,Eo,d0,Qa,d0,Qa],hbe=[Eo,Eo,Eo,Eo,Qa,Qa,Qa,Qa],fbe=[f0,su,Gy,Eo,d0,Qa,d0,Qa],dbe=[su,su,Eo,Eo,Qa,Qa,Qa,Qa],pbe=[h3,h3,su,su,Eo,Eo,Qa,Qa],mbe=[O7,h3,f0,su,f0,su,f0,su],tr={DISPLAY:Xl[O7],TEXT:Xl[f0],SCRIPT:Xl[Gy],SCRIPTSCRIPT:Xl[d0]},k7=[{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]]}];o(gbe,"scriptFromCodepoint");u3=[];k7.forEach(t=>t.blocks.forEach(e=>u3.push(...e)));o($z,"supportedCodepoint");h0=80,ybe=o(function(e,r){return"M95,"+(622+e+r)+` +c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 +c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 +c44.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 +s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 +c69,-144,104.5,-217.7,106.5,-221 +l`+e/2.075+" -"+e+` +c5.3,-9.3,12,-14,20,-14 +H400000v`+(40+e)+`H845.2724 +s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 +c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z +M`+(834+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtMain"),vbe=o(function(e,r){return"M263,"+(601+e+r)+`c0.7,0,18,39.7,52,119 +c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 +c340,-704.7,510.7,-1060.3,512,-1067 +l`+e/2.084+" -"+e+` +c4.7,-7.3,11,-11,19,-11 +H40000v`+(40+e)+`H1012.3 +s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 +c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 +s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 +c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z +M`+(1001+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtSize1"),xbe=o(function(e,r){return"M983 "+(10+e+r)+` +l`+e/3.13+" -"+e+` +c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` +H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 +s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 +c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 +c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 +c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 +c53.7,-170.3,84.5,-266.8,92.5,-289.5z +M`+(1001+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtSize2"),bbe=o(function(e,r){return"M424,"+(2398+e+r)+` +c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 +c0,-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 +s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 +s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 +l`+e/4.223+" -"+e+`c4,-6.7,10,-10,18,-10 H400000 +v`+(40+e)+`H1014.6 +s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 +c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2z M`+(1001+e)+" "+r+` +h400000v`+(40+e)+"h-400000z"},"sqrtSize3"),wbe=o(function(e,r){return"M473,"+(2713+e+r)+` +c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` +c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`H1017.7 +s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 +c0,-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 +s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, +606zM`+(1001+e)+" "+r+"h400000v"+(40+e)+"H1017.7z"},"sqrtSize4"),Tbe=o(function(e){var r=e/2;return"M400000 "+e+" H0 L"+r+" 0 l65 45 L145 "+(e-80)+" H400000z"},"phasePath"),kbe=o(function(e,r,n){var i=n-54-r-e;return"M702 "+(e+r)+"H400000"+(40+e)+` +H742v`+i+`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 +h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 +c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 +219 661 l218 661zM702 `+r+"H400000v"+(40+e)+"H742z"},"sqrtTall"),Ebe=o(function(e,r,n){r=1e3*r;var i="";switch(e){case"sqrtMain":i=ybe(r,h0);break;case"sqrtSize1":i=vbe(r,h0);break;case"sqrtSize2":i=xbe(r,h0);break;case"sqrtSize3":i=bbe(r,h0);break;case"sqrtSize4":i=wbe(r,h0);break;case"sqrtTall":i=kbe(r,h0,n)}return i},"sqrtPath"),Sbe=o(function(e,r){switch(e){case"\u239C":return"M291 0 H417 V"+r+" H291z M291 0 H417 V"+r+" H291z";case"\u2223":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z";case"\u2225":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z"+("M367 0 H410 V"+r+" H367z M367 0 H410 V"+r+" H367z");case"\u239F":return"M457 0 H583 V"+r+" H457z M457 0 H583 V"+r+" H457z";case"\u23A2":return"M319 0 H403 V"+r+" H319z M319 0 H403 V"+r+" H319z";case"\u23A5":return"M263 0 H347 V"+r+" H263z M263 0 H347 V"+r+" H263z";case"\u23AA":return"M384 0 H504 V"+r+" H384z M384 0 H504 V"+r+" H384z";case"\u23D0":return"M312 0 H355 V"+r+" H312z M312 0 H355 V"+r+" H312z";case"\u2016":return"M257 0 H300 V"+r+" H257z M257 0 H300 V"+r+" H257z"+("M478 0 H521 V"+r+" H478z M478 0 H521 V"+r+" H478z");default:return""}},"innerPath"),oz={doubleleftarrow:`M262 157 +l10-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 + 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 + 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 +c2 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 + 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 +-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 +-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z +m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l +-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 + 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 +-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 +-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 +-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 +c-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 +-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 + 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 +-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 +c-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 + 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 + 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 + l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 +-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 + 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 + 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 + 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 +-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 +H435C64 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 + 435 0h399565z`,leftgroupunder:`M400000 262 +H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 + 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 +-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 +-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 +-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 + 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 +-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 +-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z +m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 + 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 + 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 +-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 + 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 +-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 +v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 +-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 +-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 + 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:`M40 281 V428 H0 V94 H40 V241 H400000 v40z +M40 281 V428 H0 V94 H40 V241 H400000 v40z`,leftmapsto:`M40 281 V448H0V74H40V241H400000v40z +M40 281 V448H0V74H40V241H400000v40z`,leftToFrom:`M0 147h400000v40H0zm0 214c68 40 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-70-101l-7-8h399905v-40H95l7-8 +c28.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 + 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:`M0 50 h400000 v40H0z m0 194h40000v40H0z +M0 50 h400000 v40H0z m0 194h40000v40H0z`,midbrace:`M200428 334 +c-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 +-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 + 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 + 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 +c100.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 + 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 + 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 +-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 +-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z +m368.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 +60.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 +-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z +m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 +c0 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 +-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z +m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 +85.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 +-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z +m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 +c0 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 +-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 + 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 + 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 +-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 +-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 + 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l +-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 +s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 +c124.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 + 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 +-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 + 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 + 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 +-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 +-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 + 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 +-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 + 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 +m0 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 + 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 +-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 +-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 + 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 + 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 +-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z +m0-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 + 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 +-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 + 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 +M399960 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 + 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 +-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 +-167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 + 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 +-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 +-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 +-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 + 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 +c-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 + 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 + 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 +-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 + 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 +-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 + 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 + 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 +-68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 +-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 + 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 +c1 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 + 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 +-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 + 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 + 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 + -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 +-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 + 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 + 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 + -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 +3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 +10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 +-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 +-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 +H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 +c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 +c-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 +-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 +-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 +-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, +-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, +-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, +-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, +-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 +c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 +c-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 +s-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 +121.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 +s2.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 +c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z +M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-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 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 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-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 +-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 +151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 +c2,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 +c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 +c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z +M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-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 +c-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 +M0 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 +c1.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, +1c0,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, +-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z +M93 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 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-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 +c-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 +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},Cbe=o(function(e,r){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 h347 v-84 +H403z M403 1759 V0 H319 V1759 v`+r+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z +M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+" v585 h43z";case"doublevert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+` v585 h43z +M367 15 v585 v`+r+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+r+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+r+` v1715 h263 v84 H319z +MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+r+` v1799 H0 v-84 H319z +MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v602 h84z +M403 1759 V0 H319 V1759 v`+r+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v602 h84z +M347 1759 V0 h-84 V1759 v`+r+" 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 +c-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, +-36,557 l0,`+(r+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, +949.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 +c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, +-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 +l0,-`+(r+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, +-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, +63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 +c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(r+9)+` +c-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 +c-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 +c0,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 +c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 +l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, +-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.")}},"tallDelim"),ed=class{static{o(this,"DocumentFragment")}constructor(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={}}hasClass(e){return Jt.contains(this.classes,e)}toNode(){for(var e=document.createDocumentFragment(),r=0;rr.toText(),"toText");return this.children.map(e).join("")}},jl={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Z4={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},lz={\u00C5:"A",\u00D0:"D",\u00DE:"o",\u00E5:"a",\u00F0:"d",\u00FE:"o",\u0410:"A",\u0411:"B",\u0412:"B",\u0413:"F",\u0414:"A",\u0415:"E",\u0416:"K",\u0417:"3",\u0418:"N",\u0419:"N",\u041A:"K",\u041B:"N",\u041C:"M",\u041D:"H",\u041E:"O",\u041F:"N",\u0420:"P",\u0421:"C",\u0422:"T",\u0423:"y",\u0424:"O",\u0425:"X",\u0426:"U",\u0427:"h",\u0428:"W",\u0429:"W",\u042A:"B",\u042B:"X",\u042C:"B",\u042D:"3",\u042E:"X",\u042F:"R",\u0430:"a",\u0431:"b",\u0432:"a",\u0433:"r",\u0434:"y",\u0435:"e",\u0436:"m",\u0437:"e",\u0438:"n",\u0439:"n",\u043A:"n",\u043B:"n",\u043C:"m",\u043D:"n",\u043E:"o",\u043F:"n",\u0440:"p",\u0441:"c",\u0442:"o",\u0443:"y",\u0444:"b",\u0445:"x",\u0446:"n",\u0447:"n",\u0448:"w",\u0449:"w",\u044A:"a",\u044B:"m",\u044C:"a",\u044D:"e",\u044E:"m",\u044F:"r"};o(Abe,"setFontMetrics");o(P7,"getCharacterMetrics");h7={};o(_be,"getGlobalMetrics");Dbe=[[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]],cz=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],uz=o(function(e,r){return r.size<2?e:Dbe[e-1][r.size-1]},"sizeAtStyle"),f3=class t{static{o(this,"Options")}constructor(e){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=e.style,this.color=e.color,this.size=e.size||t.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=cz[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){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 e)e.hasOwnProperty(n)&&(r[n]=e[n]);return new t(r)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:uz(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:cz[e-1]})}havingBaseStyle(e){e=e||this.style.text();var r=uz(t.BASESIZE,e);return this.size===r&&this.textSize===t.BASESIZE&&this.style===e?this:this.extend({style:e,size:r})}havingBaseSizing(){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})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==t.BASESIZE?["sizing","reset-size"+this.size,"size"+t.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=_be(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}};f3.BASESIZE=6;E7={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},Lbe={ex:!0,em:!0,mu:!0},zz=o(function(e){return typeof e!="string"&&(e=e.unit),e in E7||e in Lbe||e==="ex"},"validUnit"),ti=o(function(e,r){var n;if(e.unit in E7)n=E7[e.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(e.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var i;if(r.style.isTight()?i=r.havingStyle(r.style.text()):i=r,e.unit==="ex")n=i.fontMetrics().xHeight;else if(e.unit==="em")n=i.fontMetrics().quad;else throw new gt("Invalid unit: '"+e.unit+"'");i!==r&&(n*=i.sizeMultiplier/r.sizeMultiplier)}return Math.min(e.number*n,r.maxSize)},"calculateSize"),kt=o(function(e){return+e.toFixed(4)+"em"},"makeEm"),fh=o(function(e){return e.filter(r=>r).join(" ")},"createClass"),Gz=o(function(e,r,n){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var i=r.getColor();i&&(this.style.color=i)}},"initNode"),Vz=o(function(e){var r=document.createElement(e);r.className=fh(this.classes);for(var n in this.style)this.style.hasOwnProperty(n)&&(r.style[n]=this.style[n]);for(var i in this.attributes)this.attributes.hasOwnProperty(i)&&r.setAttribute(i,this.attributes[i]);for(var a=0;a",r},"toMarkup"),td=class{static{o(this,"Span")}constructor(e,r,n,i){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,Gz.call(this,e,n,i),this.children=r||[]}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return Jt.contains(this.classes,e)}toNode(){return Vz.call(this,"span")}toMarkup(){return Uz.call(this,"span")}},Vy=class{static{o(this,"Anchor")}constructor(e,r,n,i){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,Gz.call(this,r,i),this.children=n||[],this.setAttribute("href",e)}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return Jt.contains(this.classes,e)}toNode(){return Vz.call(this,"a")}toMarkup(){return Uz.call(this,"a")}},S7=class{static{o(this,"Img")}constructor(e,r,n){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=r,this.src=e,this.classes=["mord"],this.style=n}hasClass(e){return Jt.contains(this.classes,e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var r in this.style)this.style.hasOwnProperty(r)&&(e.style[r]=this.style[r]);return e}toMarkup(){var e=''+Jt.escape(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=kt(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=fh(this.classes));for(var n in this.style)this.style.hasOwnProperty(n)&&(r=r||document.createElement("span"),r.style[n]=this.style[n]);return r?(r.appendChild(e),r):e}toMarkup(){var e=!1,r="0&&(n+="margin-right:"+this.italic+"em;");for(var i in this.style)this.style.hasOwnProperty(i)&&(n+=Jt.hyphenate(i)+":"+this.style[i]+";");n&&(e=!0,r+=' style="'+Jt.escape(n)+'"');var a=Jt.escape(this.text);return e?(r+=">",r+=a,r+="",r):a}},ll=class{static{o(this,"SvgNode")}constructor(e,r){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=r||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"svg");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);for(var i=0;i':''}},Uy=class{static{o(this,"LineNode")}constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"line");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var e="","\\gt",!0);G(U,ee,Ee,"\u2208","\\in",!0);G(U,ee,Ee,"\uE020","\\@not");G(U,ee,Ee,"\u2282","\\subset",!0);G(U,ee,Ee,"\u2283","\\supset",!0);G(U,ee,Ee,"\u2286","\\subseteq",!0);G(U,ee,Ee,"\u2287","\\supseteq",!0);G(U,ke,Ee,"\u2288","\\nsubseteq",!0);G(U,ke,Ee,"\u2289","\\nsupseteq",!0);G(U,ee,Ee,"\u22A8","\\models");G(U,ee,Ee,"\u2190","\\leftarrow",!0);G(U,ee,Ee,"\u2264","\\le");G(U,ee,Ee,"\u2264","\\leq",!0);G(U,ee,Ee,"<","\\lt",!0);G(U,ee,Ee,"\u2192","\\rightarrow",!0);G(U,ee,Ee,"\u2192","\\to");G(U,ke,Ee,"\u2271","\\ngeq",!0);G(U,ke,Ee,"\u2270","\\nleq",!0);G(U,ee,uu,"\xA0","\\ ");G(U,ee,uu,"\xA0","\\space");G(U,ee,uu,"\xA0","\\nobreakspace");G(it,ee,uu,"\xA0","\\ ");G(it,ee,uu,"\xA0"," ");G(it,ee,uu,"\xA0","\\space");G(it,ee,uu,"\xA0","\\nobreakspace");G(U,ee,uu,null,"\\nobreak");G(U,ee,uu,null,"\\allowbreak");G(U,ee,x3,",",",");G(U,ee,x3,";",";");G(U,ke,It,"\u22BC","\\barwedge",!0);G(U,ke,It,"\u22BB","\\veebar",!0);G(U,ee,It,"\u2299","\\odot",!0);G(U,ee,It,"\u2295","\\oplus",!0);G(U,ee,It,"\u2297","\\otimes",!0);G(U,ee,Le,"\u2202","\\partial",!0);G(U,ee,It,"\u2298","\\oslash",!0);G(U,ke,It,"\u229A","\\circledcirc",!0);G(U,ke,It,"\u22A1","\\boxdot",!0);G(U,ee,It,"\u25B3","\\bigtriangleup");G(U,ee,It,"\u25BD","\\bigtriangledown");G(U,ee,It,"\u2020","\\dagger");G(U,ee,It,"\u22C4","\\diamond");G(U,ee,It,"\u22C6","\\star");G(U,ee,It,"\u25C3","\\triangleleft");G(U,ee,It,"\u25B9","\\triangleright");G(U,ee,js,"{","\\{");G(it,ee,Le,"{","\\{");G(it,ee,Le,"{","\\textbraceleft");G(U,ee,Za,"}","\\}");G(it,ee,Le,"}","\\}");G(it,ee,Le,"}","\\textbraceright");G(U,ee,js,"{","\\lbrace");G(U,ee,Za,"}","\\rbrace");G(U,ee,js,"[","\\lbrack",!0);G(it,ee,Le,"[","\\lbrack",!0);G(U,ee,Za,"]","\\rbrack",!0);G(it,ee,Le,"]","\\rbrack",!0);G(U,ee,js,"(","\\lparen",!0);G(U,ee,Za,")","\\rparen",!0);G(it,ee,Le,"<","\\textless",!0);G(it,ee,Le,">","\\textgreater",!0);G(U,ee,js,"\u230A","\\lfloor",!0);G(U,ee,Za,"\u230B","\\rfloor",!0);G(U,ee,js,"\u2308","\\lceil",!0);G(U,ee,Za,"\u2309","\\rceil",!0);G(U,ee,Le,"\\","\\backslash");G(U,ee,Le,"\u2223","|");G(U,ee,Le,"\u2223","\\vert");G(it,ee,Le,"|","\\textbar",!0);G(U,ee,Le,"\u2225","\\|");G(U,ee,Le,"\u2225","\\Vert");G(it,ee,Le,"\u2225","\\textbardbl");G(it,ee,Le,"~","\\textasciitilde");G(it,ee,Le,"\\","\\textbackslash");G(it,ee,Le,"^","\\textasciicircum");G(U,ee,Ee,"\u2191","\\uparrow",!0);G(U,ee,Ee,"\u21D1","\\Uparrow",!0);G(U,ee,Ee,"\u2193","\\downarrow",!0);G(U,ee,Ee,"\u21D3","\\Downarrow",!0);G(U,ee,Ee,"\u2195","\\updownarrow",!0);G(U,ee,Ee,"\u21D5","\\Updownarrow",!0);G(U,ee,ki,"\u2210","\\coprod");G(U,ee,ki,"\u22C1","\\bigvee");G(U,ee,ki,"\u22C0","\\bigwedge");G(U,ee,ki,"\u2A04","\\biguplus");G(U,ee,ki,"\u22C2","\\bigcap");G(U,ee,ki,"\u22C3","\\bigcup");G(U,ee,ki,"\u222B","\\int");G(U,ee,ki,"\u222B","\\intop");G(U,ee,ki,"\u222C","\\iint");G(U,ee,ki,"\u222D","\\iiint");G(U,ee,ki,"\u220F","\\prod");G(U,ee,ki,"\u2211","\\sum");G(U,ee,ki,"\u2A02","\\bigotimes");G(U,ee,ki,"\u2A01","\\bigoplus");G(U,ee,ki,"\u2A00","\\bigodot");G(U,ee,ki,"\u222E","\\oint");G(U,ee,ki,"\u222F","\\oiint");G(U,ee,ki,"\u2230","\\oiiint");G(U,ee,ki,"\u2A06","\\bigsqcup");G(U,ee,ki,"\u222B","\\smallint");G(it,ee,p0,"\u2026","\\textellipsis");G(U,ee,p0,"\u2026","\\mathellipsis");G(it,ee,p0,"\u2026","\\ldots",!0);G(U,ee,p0,"\u2026","\\ldots",!0);G(U,ee,p0,"\u22EF","\\@cdots",!0);G(U,ee,p0,"\u22F1","\\ddots",!0);G(U,ee,Le,"\u22EE","\\varvdots");G(U,ee,Vn,"\u02CA","\\acute");G(U,ee,Vn,"\u02CB","\\grave");G(U,ee,Vn,"\xA8","\\ddot");G(U,ee,Vn,"~","\\tilde");G(U,ee,Vn,"\u02C9","\\bar");G(U,ee,Vn,"\u02D8","\\breve");G(U,ee,Vn,"\u02C7","\\check");G(U,ee,Vn,"^","\\hat");G(U,ee,Vn,"\u20D7","\\vec");G(U,ee,Vn,"\u02D9","\\dot");G(U,ee,Vn,"\u02DA","\\mathring");G(U,ee,er,"\uE131","\\@imath");G(U,ee,er,"\uE237","\\@jmath");G(U,ee,Le,"\u0131","\u0131");G(U,ee,Le,"\u0237","\u0237");G(it,ee,Le,"\u0131","\\i",!0);G(it,ee,Le,"\u0237","\\j",!0);G(it,ee,Le,"\xDF","\\ss",!0);G(it,ee,Le,"\xE6","\\ae",!0);G(it,ee,Le,"\u0153","\\oe",!0);G(it,ee,Le,"\xF8","\\o",!0);G(it,ee,Le,"\xC6","\\AE",!0);G(it,ee,Le,"\u0152","\\OE",!0);G(it,ee,Le,"\xD8","\\O",!0);G(it,ee,Vn,"\u02CA","\\'");G(it,ee,Vn,"\u02CB","\\`");G(it,ee,Vn,"\u02C6","\\^");G(it,ee,Vn,"\u02DC","\\~");G(it,ee,Vn,"\u02C9","\\=");G(it,ee,Vn,"\u02D8","\\u");G(it,ee,Vn,"\u02D9","\\.");G(it,ee,Vn,"\xB8","\\c");G(it,ee,Vn,"\u02DA","\\r");G(it,ee,Vn,"\u02C7","\\v");G(it,ee,Vn,"\xA8",'\\"');G(it,ee,Vn,"\u02DD","\\H");G(it,ee,Vn,"\u25EF","\\textcircled");Hz={"--":!0,"---":!0,"``":!0,"''":!0};G(it,ee,Le,"\u2013","--",!0);G(it,ee,Le,"\u2013","\\textendash");G(it,ee,Le,"\u2014","---",!0);G(it,ee,Le,"\u2014","\\textemdash");G(it,ee,Le,"\u2018","`",!0);G(it,ee,Le,"\u2018","\\textquoteleft");G(it,ee,Le,"\u2019","'",!0);G(it,ee,Le,"\u2019","\\textquoteright");G(it,ee,Le,"\u201C","``",!0);G(it,ee,Le,"\u201C","\\textquotedblleft");G(it,ee,Le,"\u201D","''",!0);G(it,ee,Le,"\u201D","\\textquotedblright");G(U,ee,Le,"\xB0","\\degree",!0);G(it,ee,Le,"\xB0","\\degree");G(it,ee,Le,"\xB0","\\textdegree",!0);G(U,ee,Le,"\xA3","\\pounds");G(U,ee,Le,"\xA3","\\mathsterling",!0);G(it,ee,Le,"\xA3","\\pounds");G(it,ee,Le,"\xA3","\\textsterling",!0);G(U,ke,Le,"\u2720","\\maltese");G(it,ke,Le,"\u2720","\\maltese");fz='0123456789/@."';for(J4=0;J40)return ol(a,h,i,r,s.concat(f));if(u){var d,p;if(u==="boldsymbol"){var m=Bbe(a,i,r,s,n);d=m.fontName,p=[m.fontClass]}else l?(d=Yz[u].fontName,p=[u]):(d=i3(u,r.fontWeight,r.fontShape),p=[u,r.fontWeight,r.fontShape]);if(b3(a,d,i).metrics)return ol(a,d,i,r,s.concat(p));if(Hz.hasOwnProperty(a)&&d.slice(0,10)==="Typewriter"){for(var g=[],y=0;y{if(fh(t.classes)!==fh(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(t.classes.length===1){var r=t.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n in t.style)if(t.style.hasOwnProperty(n)&&t.style[n]!==e.style[n])return!1;for(var i in e.style)if(e.style.hasOwnProperty(i)&&t.style[i]!==e.style[i])return!1;return!0},"canCombine"),zbe=o(t=>{for(var e=0;er&&(r=s.height),s.depth>n&&(n=s.depth),s.maxFontSize>i&&(i=s.maxFontSize)}e.height=r,e.depth=n,e.maxFontSize=i},"sizeElementFromChildren"),bs=o(function(e,r,n,i){var a=new td(e,r,n,i);return B7(a),a},"makeSpan"),Wz=o((t,e,r,n)=>new td(t,e,r,n),"makeSvgSpan"),Gbe=o(function(e,r,n){var i=bs([e],[],r);return i.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),i.style.borderBottomWidth=kt(i.height),i.maxFontSize=1,i},"makeLineSpan"),Vbe=o(function(e,r,n,i){var a=new Vy(e,r,n,i);return B7(a),a},"makeAnchor"),qz=o(function(e){var r=new ed(e);return B7(r),r},"makeFragment"),Ube=o(function(e,r){return e instanceof ed?bs([],[e],r):e},"wrapFragment"),Hbe=o(function(e){if(e.positionType==="individualShift"){for(var r=e.children,n=[r[0]],i=-r[0].shift-r[0].elem.depth,a=i,s=1;s{var r=bs(["mspace"],[],e),n=ti(t,e);return r.style.marginRight=kt(n),r},"makeGlue"),i3=o(function(e,r,n){var i="";switch(e){case"amsrm":i="AMS";break;case"textrm":i="Main";break;case"textsf":i="SansSerif";break;case"texttt":i="Typewriter";break;default:i=e}var a;return r==="textbf"&&n==="textit"?a="BoldItalic":r==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",i+"-"+a},"retrieveTextFontName"),Yz={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"}},Xz={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Ybe=o(function(e,r){var[n,i,a]=Xz[e],s=new Kl(n),l=new ll([s],{width:kt(i),height:kt(a),style:"width:"+kt(i),viewBox:"0 0 "+1e3*i+" "+1e3*a,preserveAspectRatio:"xMinYMin"}),u=Wz(["overlay"],[l],r);return u.height=a,u.style.height=kt(a),u.style.width=kt(i),u},"staticSvg"),Be={fontMap:Yz,makeSymbol:ol,mathsym:Pbe,makeSpan:bs,makeSvgSpan:Wz,makeLineSpan:Gbe,makeAnchor:Vbe,makeFragment:qz,wrapFragment:Ube,makeVList:Wbe,makeOrd:Fbe,makeGlue:qbe,staticSvg:Ybe,svgData:Xz,tryCombineChars:zbe},ei={number:3,unit:"mu"},Zf={number:4,unit:"mu"},au={number:5,unit:"mu"},Xbe={mord:{mop:ei,mbin:Zf,mrel:au,minner:ei},mop:{mord:ei,mop:ei,mrel:au,minner:ei},mbin:{mord:Zf,mop:Zf,mopen:Zf,minner:Zf},mrel:{mord:au,mop:au,mopen:au,minner:au},mopen:{},mclose:{mop:ei,mbin:Zf,mrel:au,minner:ei},mpunct:{mord:ei,mop:ei,mrel:au,mopen:ei,mclose:ei,mpunct:ei,minner:ei},minner:{mord:ei,mop:ei,mbin:Zf,mrel:au,mopen:ei,mpunct:ei,minner:ei}},jbe={mord:{mop:ei},mop:{mord:ei,mop:ei},mbin:{},mrel:{},mopen:{},mclose:{mop:ei},mpunct:{},minner:{mop:ei}},jz={},p3={},m3={};o(Nt,"defineFunction");o(rd,"defineFunctionBuilders");g3=o(function(e){return e.type==="ordgroup"&&e.body.length===1?e.body[0]:e},"normalizeArgument"),di=o(function(e){return e.type==="ordgroup"?e.body:[e]},"ordargument"),lu=Be.makeSpan,Kbe=["leftmost","mbin","mopen","mrel","mop","mpunct"],Qbe=["rightmost","mrel","mclose","mpunct"],Zbe={display:tr.DISPLAY,text:tr.TEXT,script:tr.SCRIPT,scriptscript:tr.SCRIPTSCRIPT},Jbe={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},Pi=o(function(e,r,n,i){i===void 0&&(i=[null,null]);for(var a=[],s=0;s{var v=y.classes[0],x=g.classes[0];v==="mbin"&&Jt.contains(Qbe,x)?y.classes[0]="mord":x==="mbin"&&Jt.contains(Kbe,v)&&(g.classes[0]="mord")},{node:d},p,m),mz(a,(g,y)=>{var v=A7(y),x=A7(g),b=v&&x?g.hasClass("mtight")?jbe[v][x]:Xbe[v][x]:null;if(b)return Be.makeGlue(b,h)},{node:d},p,m),a},"buildExpression"),mz=o(function t(e,r,n,i,a){i&&e.push(i);for(var s=0;sp=>{e.splice(d+1,0,p),s++})(s)}i&&e.pop()},"traverseNonSpaceNodes"),Kz=o(function(e){return e instanceof ed||e instanceof Vy||e instanceof td&&e.hasClass("enclosing")?e:null},"checkPartialGroup"),e4e=o(function t(e,r){var n=Kz(e);if(n){var i=n.children;if(i.length){if(r==="right")return t(i[i.length-1],"right");if(r==="left")return t(i[0],"left")}}return e},"getOutermostNode"),A7=o(function(e,r){return e?(r&&(e=e4e(e,r)),Jbe[e.classes[0]]||null):null},"getTypeOfDomTree"),Hy=o(function(e,r){var n=["nulldelimiter"].concat(e.baseSizingClasses());return lu(r.concat(n))},"makeNullDelimiter"),Fr=o(function(e,r,n){if(!e)return lu();if(p3[e.type]){var i=p3[e.type](e,r);if(n&&r.size!==n.size){i=lu(r.sizingClasses(n),[i],r);var a=r.sizeMultiplier/n.sizeMultiplier;i.height*=a,i.depth*=a}return i}else throw new gt("Got group of unknown type: '"+e.type+"'")},"buildGroup");o(a3,"buildHTMLUnbreakable");o(_7,"buildHTML");o(Qz,"newDocumentFragment");ws=class{static{o(this,"MathNode")}constructor(e,r,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(e,r){this.attributes[e]=r}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&e.setAttribute(r,this.attributes[r]);this.classes.length>0&&(e.className=fh(this.classes));for(var n=0;n0&&(e+=' class ="'+Jt.escape(fh(this.classes))+'"'),e+=">";for(var n=0;n",e}toText(){return this.children.map(e=>e.toText()).join("")}},Jf=class{static{o(this,"TextNode")}constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return Jt.escape(this.toText())}toText(){return this.text}},D7=class{static{o(this,"SpaceNode")}constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character="\u200A":e>=.1666&&e<=.1667?this.character="\u2009":e>=.2222&&e<=.2223?this.character="\u2005":e>=.2777&&e<=.2778?this.character="\u2005\u200A":e>=-.05556&&e<=-.05555?this.character="\u200A\u2063":e>=-.1667&&e<=-.1666?this.character="\u2009\u2063":e>=-.2223&&e<=-.2222?this.character="\u205F\u2063":e>=-.2778&&e<=-.2777?this.character="\u2005\u2063":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",kt(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},dt={MathNode:ws,TextNode:Jf,SpaceNode:D7,newDocumentFragment:Qz},Co=o(function(e,r,n){return An[r][e]&&An[r][e].replace&&e.charCodeAt(0)!==55349&&!(Hz.hasOwnProperty(e)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(e=An[r][e].replace),new dt.TextNode(e)},"makeText"),F7=o(function(e){return e.length===1?e[0]:new dt.MathNode("mrow",e)},"makeRow"),$7=o(function(e,r){if(r.fontFamily==="texttt")return"monospace";if(r.fontFamily==="textsf")return r.fontShape==="textit"&&r.fontWeight==="textbf"?"sans-serif-bold-italic":r.fontShape==="textit"?"sans-serif-italic":r.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(r.fontShape==="textit"&&r.fontWeight==="textbf")return"bold-italic";if(r.fontShape==="textit")return"italic";if(r.fontWeight==="textbf")return"bold";var n=r.font;if(!n||n==="mathnormal")return null;var i=e.mode;if(n==="mathit")return"italic";if(n==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(n==="mathbf")return"bold";if(n==="mathbb")return"double-struck";if(n==="mathfrak")return"fraktur";if(n==="mathscr"||n==="mathcal")return"script";if(n==="mathsf")return"sans-serif";if(n==="mathtt")return"monospace";var a=e.text;if(Jt.contains(["\\imath","\\jmath"],a))return null;An[i][a]&&An[i][a].replace&&(a=An[i][a].replace);var s=Be.fontMap[n].fontName;return P7(a,s,i)?Be.fontMap[n].variant:null},"getVariant"),ks=o(function(e,r,n){if(e.length===1){var i=yn(e[0],r);return n&&i instanceof ws&&i.type==="mo"&&(i.setAttribute("lspace","0em"),i.setAttribute("rspace","0em")),[i]}for(var a=[],s,l=0;l0&&(d.text=d.text.slice(0,1)+"\u0338"+d.text.slice(1),a.pop())}}}a.push(u),s=u}return a},"buildExpression"),dh=o(function(e,r,n){return F7(ks(e,r,n))},"buildExpressionRow"),yn=o(function(e,r){if(!e)return new dt.MathNode("mrow");if(m3[e.type]){var n=m3[e.type](e,r);return n}else throw new gt("Got group of unknown type: '"+e.type+"'")},"buildGroup");o(gz,"buildMathML");Zz=o(function(e){return new f3({style:e.displayMode?tr.DISPLAY:tr.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},"optionsFromSettings"),Jz=o(function(e,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),e=Be.makeSpan(n,[e])}return e},"displayWrap"),t4e=o(function(e,r,n){var i=Zz(n),a;if(n.output==="mathml")return gz(e,r,i,n.displayMode,!0);if(n.output==="html"){var s=_7(e,i);a=Be.makeSpan(["katex"],[s])}else{var l=gz(e,r,i,n.displayMode,!1),u=_7(e,i);a=Be.makeSpan(["katex"],[l,u])}return Jz(a,n)},"buildTree"),r4e=o(function(e,r,n){var i=Zz(n),a=_7(e,i),s=Be.makeSpan(["katex"],[a]);return Jz(s,n)},"buildHTMLTree"),n4e={widehat:"^",widecheck:"\u02C7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23DF",overbrace:"\u23DE",overgroup:"\u23E0",undergroup:"\u23E1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21D2",xRightarrow:"\u21D2",overleftharpoon:"\u21BC",xleftharpoonup:"\u21BC",overrightharpoon:"\u21C0",xrightharpoonup:"\u21C0",xLeftarrow:"\u21D0",xLeftrightarrow:"\u21D4",xhookleftarrow:"\u21A9",xhookrightarrow:"\u21AA",xmapsto:"\u21A6",xrightharpoondown:"\u21C1",xleftharpoondown:"\u21BD",xrightleftharpoons:"\u21CC",xleftrightharpoons:"\u21CB",xtwoheadleftarrow:"\u219E",xtwoheadrightarrow:"\u21A0",xlongequal:"=",xtofrom:"\u21C4",xrightleftarrows:"\u21C4",xrightequilibrium:"\u21CC",xleftequilibrium:"\u21CB","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},i4e=o(function(e){var r=new dt.MathNode("mo",[new dt.TextNode(n4e[e.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},"mathMLnode"),a4e={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.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"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.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"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.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]},s4e=o(function(e){return e.type==="ordgroup"?e.body.length:1},"groupLength"),o4e=o(function(e,r){function n(){var l=4e5,u=e.label.slice(1);if(Jt.contains(["widehat","widecheck","widetilde","utilde"],u)){var h=e,f=s4e(h.base),d,p,m;if(f>5)u==="widehat"||u==="widecheck"?(d=420,l=2364,m=.42,p=u+"4"):(d=312,l=2340,m=.34,p="tilde4");else{var g=[1,1,2,2,3,3][f];u==="widehat"||u==="widecheck"?(l=[0,1062,2364,2364,2364][g],d=[0,239,300,360,420][g],m=[0,.24,.3,.3,.36,.42][g],p=u+g):(l=[0,600,1033,2339,2340][g],d=[0,260,286,306,312][g],m=[0,.26,.286,.3,.306,.34][g],p="tilde"+g)}var y=new Kl(p),v=new ll([y],{width:"100%",height:kt(m),viewBox:"0 0 "+l+" "+d,preserveAspectRatio:"none"});return{span:Be.makeSvgSpan([],[v],r),minWidth:0,height:m}}else{var x=[],b=a4e[u],[w,C,T]=b,E=T/1e3,A=w.length,S,_;if(A===1){var I=b[3];S=["hide-tail"],_=[I]}else if(A===2)S=["halfarrow-left","halfarrow-right"],_=["xMinYMin","xMaxYMin"];else if(A===3)S=["brace-left","brace-center","brace-right"],_=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support + `+A+" children.");for(var D=0;D0&&(i.style.minWidth=kt(a)),i},"svgSpan"),l4e=o(function(e,r,n,i,a){var s,l=e.height+e.depth+n+i;if(/fbox|color|angl/.test(r)){if(s=Be.makeSpan(["stretchy",r],[],a),r==="fbox"){var u=a.color&&a.getColor();u&&(s.style.borderColor=u)}}else{var h=[];/^[bx]cancel$/.test(r)&&h.push(new Uy({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&h.push(new Uy({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var f=new ll(h,{width:"100%",height:kt(l)});s=Be.makeSvgSpan([],[f],a)}return s.height=l,s.style.height=kt(l),s},"encloseSpan"),cu={encloseSpan:l4e,mathMLnode:i4e,svgSpan:o4e};o(xr,"assertNodeType");o(z7,"assertSymbolNodeType");o(w3,"checkSymbolNodeType");G7=o((t,e)=>{var r,n,i;t&&t.type==="supsub"?(n=xr(t.base,"accent"),r=n.base,t.base=r,i=Nbe(Fr(t,e)),t.base=n):(n=xr(t,"accent"),r=n.base);var a=Fr(r,e.havingCrampedStyle()),s=n.isShifty&&Jt.isCharacterBox(r),l=0;if(s){var u=Jt.getBaseElem(r),h=Fr(u,e.havingCrampedStyle());l=hz(h).skew}var f=n.label==="\\c",d=f?a.height+a.depth:Math.min(a.height,e.fontMetrics().xHeight),p;if(n.isStretchy)p=cu.svgSpan(n,e),p=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"elem",elem:p,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+kt(2*l)+")",marginLeft:kt(2*l)}:void 0}]},e);else{var m,g;n.label==="\\vec"?(m=Be.staticSvg("vec",e),g=Be.svgData.vec[1]):(m=Be.makeOrd({mode:n.mode,text:n.label},e,"textord"),m=hz(m),m.italic=0,g=m.width,f&&(d+=m.depth)),p=Be.makeSpan(["accent-body"],[m]);var y=n.label==="\\textcircled";y&&(p.classes.push("accent-full"),d=a.height);var v=l;y||(v-=g/2),p.style.left=kt(v),n.label==="\\textcircled"&&(p.style.top=".2em"),p=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:-d},{type:"elem",elem:p}]},e)}var x=Be.makeSpan(["mord","accent"],[p],e);return i?(i.children[0]=x,i.height=Math.max(x.height,i.height),i.classes[0]="mord",i):x},"htmlBuilder$a"),eG=o((t,e)=>{var r=t.isStretchy?cu.mathMLnode(t.label):new dt.MathNode("mo",[Co(t.label,t.mode)]),n=new dt.MathNode("mover",[yn(t.base,e),r]);return n.setAttribute("accent","true"),n},"mathmlBuilder$9"),c4e=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));Nt({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:o((t,e)=>{var r=g3(e[0]),n=!c4e.test(t.funcName),i=!n||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:n,isShifty:i,base:r}},"handler"),htmlBuilder:G7,mathmlBuilder:eG});Nt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:o((t,e)=>{var r=e[0],n=t.parser.mode;return n==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},"handler"),htmlBuilder:G7,mathmlBuilder:eG});Nt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"accentUnder",mode:r.mode,label:n,base:i}},"handler"),htmlBuilder:o((t,e)=>{var r=Fr(t.base,e),n=cu.svgSpan(t,e),i=t.label==="\\utilde"?.12:0,a=Be.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:i},{type:"elem",elem:r}]},e);return Be.makeSpan(["mord","accentunder"],[a],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=cu.mathMLnode(t.label),n=new dt.MathNode("munder",[yn(t.base,e),r]);return n.setAttribute("accentunder","true"),n},"mathmlBuilder")});s3=o(t=>{var e=new dt.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e},"paddedNode");Nt({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(t,e,r){var{parser:n,funcName:i}=t;return{type:"xArrow",mode:n.mode,label:i,body:e[0],below:r[0]}},htmlBuilder(t,e){var r=e.style,n=e.havingStyle(r.sup()),i=Be.wrapFragment(Fr(t.body,n,e),e),a=t.label.slice(0,2)==="\\x"?"x":"cd";i.classes.push(a+"-arrow-pad");var s;t.below&&(n=e.havingStyle(r.sub()),s=Be.wrapFragment(Fr(t.below,n,e),e),s.classes.push(a+"-arrow-pad"));var l=cu.svgSpan(t,e),u=-e.fontMetrics().axisHeight+.5*l.height,h=-e.fontMetrics().axisHeight-.5*l.height-.111;(i.depth>.25||t.label==="\\xleftequilibrium")&&(h-=i.depth);var f;if(s){var d=-e.fontMetrics().axisHeight+s.height+.5*l.height+.111;f=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u},{type:"elem",elem:s,shift:d}]},e)}else f=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u}]},e);return f.children[0].children[0].children[1].classes.push("svg-align"),Be.makeSpan(["mrel","x-arrow"],[f],e)},mathmlBuilder(t,e){var r=cu.mathMLnode(t.label);r.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(t.body){var i=s3(yn(t.body,e));if(t.below){var a=s3(yn(t.below,e));n=new dt.MathNode("munderover",[r,a,i])}else n=new dt.MathNode("mover",[r,i])}else if(t.below){var s=s3(yn(t.below,e));n=new dt.MathNode("munder",[r,s])}else n=s3(),n=new dt.MathNode("mover",[r,n]);return n}});u4e=Be.makeSpan;o(tG,"htmlBuilder$9");o(rG,"mathmlBuilder$8");Nt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:di(i),isCharacterBox:Jt.isCharacterBox(i)}},htmlBuilder:tG,mathmlBuilder:rG});T3=o(t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"},"binrelClass");Nt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:r}=t;return{type:"mclass",mode:r.mode,mclass:T3(e[0]),body:di(e[1]),isCharacterBox:Jt.isCharacterBox(e[1])}}});Nt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:r,funcName:n}=t,i=e[1],a=e[0],s;n!=="\\stackrel"?s=T3(i):s="mrel";var l={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:di(i)},u={type:"supsub",mode:a.mode,base:l,sup:n==="\\underset"?null:a,sub:n==="\\underset"?a:null};return{type:"mclass",mode:r.mode,mclass:s,body:[u],isCharacterBox:Jt.isCharacterBox(u)}},htmlBuilder:tG,mathmlBuilder:rG});Nt({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"pmb",mode:r.mode,mclass:T3(e[0]),body:di(e[0])}},htmlBuilder(t,e){var r=Pi(t.body,e,!0),n=Be.makeSpan([t.mclass],r,e);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(t,e){var r=ks(t.body,e),n=new dt.MathNode("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});h4e={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},yz=o(()=>({type:"styling",body:[],mode:"math",style:"display"}),"newCell"),vz=o(t=>t.type==="textord"&&t.text==="@","isStartOfArrow"),f4e=o((t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e,"isLabelEnd");o(d4e,"cdArrow");o(p4e,"parseCD");Nt({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:e[0]}},htmlBuilder(t,e){var r=e.havingStyle(e.style.sup()),n=Be.wrapFragment(Fr(t.label,r,e),e);return n.classes.push("cd-label-"+t.side),n.style.bottom=kt(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(t,e){var r=new dt.MathNode("mrow",[yn(t.label,e)]);return r=new dt.MathNode("mpadded",[r]),r.setAttribute("width","0"),t.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new dt.MathNode("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});Nt({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:r}=t;return{type:"cdlabelparent",mode:r.mode,fragment:e[0]}},htmlBuilder(t,e){var r=Be.wrapFragment(Fr(t.fragment,e),e);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(t,e){return new dt.MathNode("mrow",[yn(t.fragment,e)])}});Nt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:r}=t,n=xr(e[0],"ordgroup"),i=n.body,a="",s=0;s=1114111)throw new gt("\\@char with invalid code point "+a);return u<=65535?h=String.fromCharCode(u):(u-=65536,h=String.fromCharCode((u>>10)+55296,(u&1023)+56320)),{type:"textord",mode:r.mode,text:h}}});nG=o((t,e)=>{var r=Pi(t.body,e.withColor(t.color),!1);return Be.makeFragment(r)},"htmlBuilder$8"),iG=o((t,e)=>{var r=ks(t.body,e.withColor(t.color)),n=new dt.MathNode("mstyle",r);return n.setAttribute("mathcolor",t.color),n},"mathmlBuilder$7");Nt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:r}=t,n=xr(e[0],"color-token").color,i=e[1];return{type:"color",mode:r.mode,color:n,body:di(i)}},htmlBuilder:nG,mathmlBuilder:iG});Nt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:r,breakOnTokenText:n}=t,i=xr(e[0],"color-token").color;r.gullet.macros.set("\\current@color",i);var a=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:i,body:a}},htmlBuilder:nG,mathmlBuilder:iG});Nt({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,r){var{parser:n}=t,i=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,a=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:a,size:i&&xr(i,"size").value}},htmlBuilder(t,e){var r=Be.makeSpan(["mspace"],[],e);return t.newLine&&(r.classes.push("newline"),t.size&&(r.style.marginTop=kt(ti(t.size,e)))),r},mathmlBuilder(t,e){var r=new dt.MathNode("mspace");return t.newLine&&(r.setAttribute("linebreak","newline"),t.size&&r.setAttribute("height",kt(ti(t.size,e)))),r}});L7={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},aG=o(t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new gt("Expected a control sequence",t);return e},"checkControlSequence"),m4e=o(t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},"getRHS"),sG=o((t,e,r,n)=>{var i=t.gullet.macros.get(r.text);i==null&&(r.noexpand=!0,i={tokens:[r],numArgs:0,unexpandable:!t.gullet.isExpandable(r.text)}),t.gullet.macros.set(e,i,n)},"letCommand");Nt({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:r}=t;e.consumeSpaces();var n=e.fetch();if(L7[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=L7[n.text]),xr(e.parseFunction(),"internal");throw new gt("Invalid token after macro prefix",n)}});Nt({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=e.gullet.popToken(),i=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new gt("Expected a control sequence",n);for(var a=0,s,l=[[]];e.gullet.future().text!=="{";)if(n=e.gullet.popToken(),n.text==="#"){if(e.gullet.future().text==="{"){s=e.gullet.future(),l[a].push("{");break}if(n=e.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new gt('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==a+1)throw new gt('Argument number "'+n.text+'" out of order');a++,l.push([])}else{if(n.text==="EOF")throw new gt("Expected a macro definition");l[a].push(n.text)}var{tokens:u}=e.gullet.consumeArg();return s&&u.unshift(s),(r==="\\edef"||r==="\\xdef")&&(u=e.gullet.expandTokens(u),u.reverse()),e.gullet.macros.set(i,{tokens:u,numArgs:a,delimiters:l},r===L7[r]),{type:"internal",mode:e.mode}}});Nt({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=aG(e.gullet.popToken());e.gullet.consumeSpaces();var i=m4e(e);return sG(e,n,i,r==="\\\\globallet"),{type:"internal",mode:e.mode}}});Nt({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=aG(e.gullet.popToken()),i=e.gullet.popToken(),a=e.gullet.popToken();return sG(e,n,a,r==="\\\\globalfuture"),e.gullet.pushToken(a),e.gullet.pushToken(i),{type:"internal",mode:e.mode}}});Fy=o(function(e,r,n){var i=An.math[e]&&An.math[e].replace,a=P7(i||e,r,n);if(!a)throw new Error("Unsupported symbol "+e+" and font size "+r+".");return a},"getMetrics"),V7=o(function(e,r,n,i){var a=n.havingBaseStyle(r),s=Be.makeSpan(i.concat(a.sizingClasses(n)),[e],n),l=a.sizeMultiplier/n.sizeMultiplier;return s.height*=l,s.depth*=l,s.maxFontSize=a.sizeMultiplier,s},"styleWrap"),oG=o(function(e,r,n){var i=r.havingBaseStyle(n),a=(1-r.sizeMultiplier/i.sizeMultiplier)*r.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=kt(a),e.height-=a,e.depth+=a},"centerSpan"),g4e=o(function(e,r,n,i,a,s){var l=Be.makeSymbol(e,"Main-Regular",a,i),u=V7(l,r,i,s);return n&&oG(u,i,r),u},"makeSmallDelim"),y4e=o(function(e,r,n,i){return Be.makeSymbol(e,"Size"+r+"-Regular",n,i)},"mathrmSize"),lG=o(function(e,r,n,i,a,s){var l=y4e(e,r,a,i),u=V7(Be.makeSpan(["delimsizing","size"+r],[l],i),tr.TEXT,i,s);return n&&oG(u,i,tr.TEXT),u},"makeLargeDelim"),p7=o(function(e,r,n){var i;r==="Size1-Regular"?i="delim-size1":i="delim-size4";var a=Be.makeSpan(["delimsizinginner",i],[Be.makeSpan([],[Be.makeSymbol(e,r,n)])]);return{type:"elem",elem:a}},"makeGlyphSpan"),m7=o(function(e,r,n){var i=jl["Size4-Regular"][e.charCodeAt(0)]?jl["Size4-Regular"][e.charCodeAt(0)][4]:jl["Size1-Regular"][e.charCodeAt(0)][4],a=new Kl("inner",Sbe(e,Math.round(1e3*r))),s=new ll([a],{width:kt(i),height:kt(r),style:"width:"+kt(i),viewBox:"0 0 "+1e3*i+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),l=Be.makeSvgSpan([],[s],n);return l.height=r,l.style.height=kt(r),l.style.width=kt(i),{type:"elem",elem:l}},"makeInner"),R7=.008,o3={type:"kern",size:-1*R7},v4e=["|","\\lvert","\\rvert","\\vert"],x4e=["\\|","\\lVert","\\rVert","\\Vert"],cG=o(function(e,r,n,i,a,s){var l,u,h,f,d="",p=0;l=h=f=e,u=null;var m="Size1-Regular";e==="\\uparrow"?h=f="\u23D0":e==="\\Uparrow"?h=f="\u2016":e==="\\downarrow"?l=h="\u23D0":e==="\\Downarrow"?l=h="\u2016":e==="\\updownarrow"?(l="\\uparrow",h="\u23D0",f="\\downarrow"):e==="\\Updownarrow"?(l="\\Uparrow",h="\u2016",f="\\Downarrow"):Jt.contains(v4e,e)?(h="\u2223",d="vert",p=333):Jt.contains(x4e,e)?(h="\u2225",d="doublevert",p=556):e==="["||e==="\\lbrack"?(l="\u23A1",h="\u23A2",f="\u23A3",m="Size4-Regular",d="lbrack",p=667):e==="]"||e==="\\rbrack"?(l="\u23A4",h="\u23A5",f="\u23A6",m="Size4-Regular",d="rbrack",p=667):e==="\\lfloor"||e==="\u230A"?(h=l="\u23A2",f="\u23A3",m="Size4-Regular",d="lfloor",p=667):e==="\\lceil"||e==="\u2308"?(l="\u23A1",h=f="\u23A2",m="Size4-Regular",d="lceil",p=667):e==="\\rfloor"||e==="\u230B"?(h=l="\u23A5",f="\u23A6",m="Size4-Regular",d="rfloor",p=667):e==="\\rceil"||e==="\u2309"?(l="\u23A4",h=f="\u23A5",m="Size4-Regular",d="rceil",p=667):e==="("||e==="\\lparen"?(l="\u239B",h="\u239C",f="\u239D",m="Size4-Regular",d="lparen",p=875):e===")"||e==="\\rparen"?(l="\u239E",h="\u239F",f="\u23A0",m="Size4-Regular",d="rparen",p=875):e==="\\{"||e==="\\lbrace"?(l="\u23A7",u="\u23A8",f="\u23A9",h="\u23AA",m="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(l="\u23AB",u="\u23AC",f="\u23AD",h="\u23AA",m="Size4-Regular"):e==="\\lgroup"||e==="\u27EE"?(l="\u23A7",f="\u23A9",h="\u23AA",m="Size4-Regular"):e==="\\rgroup"||e==="\u27EF"?(l="\u23AB",f="\u23AD",h="\u23AA",m="Size4-Regular"):e==="\\lmoustache"||e==="\u23B0"?(l="\u23A7",f="\u23AD",h="\u23AA",m="Size4-Regular"):(e==="\\rmoustache"||e==="\u23B1")&&(l="\u23AB",f="\u23A9",h="\u23AA",m="Size4-Regular");var g=Fy(l,m,a),y=g.height+g.depth,v=Fy(h,m,a),x=v.height+v.depth,b=Fy(f,m,a),w=b.height+b.depth,C=0,T=1;if(u!==null){var E=Fy(u,m,a);C=E.height+E.depth,T=2}var A=y+w+C,S=Math.max(0,Math.ceil((r-A)/(T*x))),_=A+S*T*x,I=i.fontMetrics().axisHeight;n&&(I*=i.sizeMultiplier);var D=_/2-I,k=[];if(d.length>0){var L=_-y-w,R=Math.round(_*1e3),O=Cbe(d,Math.round(L*1e3)),M=new Kl(d,O),B=(p/1e3).toFixed(3)+"em",F=(R/1e3).toFixed(3)+"em",P=new ll([M],{width:B,height:F,viewBox:"0 0 "+p+" "+R}),z=Be.makeSvgSpan([],[P],i);z.height=R/1e3,z.style.width=B,z.style.height=F,k.push({type:"elem",elem:z})}else{if(k.push(p7(f,m,a)),k.push(o3),u===null){var $=_-y-w+2*R7;k.push(m7(h,$,i))}else{var H=(_-y-w-C)/2+2*R7;k.push(m7(h,H,i)),k.push(o3),k.push(p7(u,m,a)),k.push(o3),k.push(m7(h,H,i))}k.push(o3),k.push(p7(l,m,a))}var Q=i.havingBaseStyle(tr.TEXT),j=Be.makeVList({positionType:"bottom",positionData:D,children:k},Q);return V7(Be.makeSpan(["delimsizing","mult"],[j],Q),tr.TEXT,i,s)},"makeStackedDelim"),g7=80,y7=.08,v7=o(function(e,r,n,i,a){var s=Ebe(e,i,n),l=new Kl(e,s),u=new ll([l],{width:"400em",height:kt(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return Be.makeSvgSpan(["hide-tail"],[u],a)},"sqrtSvg"),b4e=o(function(e,r){var n=r.havingBaseSizing(),i=dG("\\surd",e*n.sizeMultiplier,fG,n),a=n.sizeMultiplier,s=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),l,u=0,h=0,f=0,d;return i.type==="small"?(f=1e3+1e3*s+g7,e<1?a=1:e<1.4&&(a=.7),u=(1+s+y7)/a,h=(1+s)/a,l=v7("sqrtMain",u,f,s,r),l.style.minWidth="0.853em",d=.833/a):i.type==="large"?(f=(1e3+g7)*$y[i.size],h=($y[i.size]+s)/a,u=($y[i.size]+s+y7)/a,l=v7("sqrtSize"+i.size,u,f,s,r),l.style.minWidth="1.02em",d=1/a):(u=e+s+y7,h=e+s,f=Math.floor(1e3*e+s)+g7,l=v7("sqrtTall",u,f,s,r),l.style.minWidth="0.742em",d=1.056),l.height=h,l.style.height=kt(u),{span:l,advanceWidth:d,ruleWidth:(r.fontMetrics().sqrtRuleThickness+s)*a}},"makeSqrtImage"),uG=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","\\surd"],w4e=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1"],hG=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],$y=[0,1.2,1.8,2.4,3],T4e=o(function(e,r,n,i,a){if(e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle"),Jt.contains(uG,e)||Jt.contains(hG,e))return lG(e,r,!1,n,i,a);if(Jt.contains(w4e,e))return cG(e,$y[r],!1,n,i,a);throw new gt("Illegal delimiter: '"+e+"'")},"makeSizedDelim"),k4e=[{type:"small",style:tr.SCRIPTSCRIPT},{type:"small",style:tr.SCRIPT},{type:"small",style:tr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],E4e=[{type:"small",style:tr.SCRIPTSCRIPT},{type:"small",style:tr.SCRIPT},{type:"small",style:tr.TEXT},{type:"stack"}],fG=[{type:"small",style:tr.SCRIPTSCRIPT},{type:"small",style:tr.SCRIPT},{type:"small",style:tr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],S4e=o(function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},"delimTypeToFont"),dG=o(function(e,r,n,i){for(var a=Math.min(2,3-i.style.size),s=a;sr)return n[s]}return n[n.length-1]},"traverseSequence"),pG=o(function(e,r,n,i,a,s){e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle");var l;Jt.contains(hG,e)?l=k4e:Jt.contains(uG,e)?l=fG:l=E4e;var u=dG(e,r,l,i);return u.type==="small"?g4e(e,u.style,n,i,a,s):u.type==="large"?lG(e,u.size,n,i,a,s):cG(e,r,n,i,a,s)},"makeCustomSizedDelim"),C4e=o(function(e,r,n,i,a,s){var l=i.fontMetrics().axisHeight*i.sizeMultiplier,u=901,h=5/i.fontMetrics().ptPerEm,f=Math.max(r-l,n+l),d=Math.max(f/500*u,2*f-h);return pG(e,d,!0,i,a,s)},"makeLeftRightDelim"),ou={sqrtImage:b4e,sizedDelim:T4e,sizeToMaxHeight:$y,customSizedDelim:pG,leftRightDelim:C4e},xz={"\\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}},A4e=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27E8","\\rangle","\u27E9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];o(k3,"checkDelimiter");Nt({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:o((t,e)=>{var r=k3(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:xz[t.funcName].size,mclass:xz[t.funcName].mclass,delim:r.text}},"handler"),htmlBuilder:o((t,e)=>t.delim==="."?Be.makeSpan([t.mclass]):ou.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),"htmlBuilder"),mathmlBuilder:o(t=>{var e=[];t.delim!=="."&&e.push(Co(t.delim,t.mode));var r=new dt.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=kt(ou.sizeToMaxHeight[t.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r},"mathmlBuilder")});o(bz,"assertParsed");Nt({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=t.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new gt("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:k3(e[0],t).text,color:r}},"handler")});Nt({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=k3(e[0],t),n=t.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var a=xr(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:i,left:r.text,right:a.delim,rightColor:a.color}},"handler"),htmlBuilder:o((t,e)=>{bz(t);for(var r=Pi(t.body,e,!0,["mopen","mclose"]),n=0,i=0,a=!1,s=0;s{bz(t);var r=ks(t.body,e);if(t.left!=="."){var n=new dt.MathNode("mo",[Co(t.left,t.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(t.right!=="."){var i=new dt.MathNode("mo",[Co(t.right,t.mode)]);i.setAttribute("fence","true"),t.rightColor&&i.setAttribute("mathcolor",t.rightColor),r.push(i)}return F7(r)},"mathmlBuilder")});Nt({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=k3(e[0],t);if(!t.parser.leftrightDepth)throw new gt("\\middle without preceding \\left",r);return{type:"middle",mode:t.parser.mode,delim:r.text}},"handler"),htmlBuilder:o((t,e)=>{var r;if(t.delim===".")r=Hy(e,[]);else{r=ou.sizedDelim(t.delim,1,e,t.mode,[]);var n={delim:t.delim,options:e};r.isMiddle=n}return r},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=t.delim==="\\vert"||t.delim==="|"?Co("|","text"):Co(t.delim,t.mode),n=new dt.MathNode("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n},"mathmlBuilder")});U7=o((t,e)=>{var r=Be.wrapFragment(Fr(t.body,e),e),n=t.label.slice(1),i=e.sizeMultiplier,a,s=0,l=Jt.isCharacterBox(t.body);if(n==="sout")a=Be.makeSpan(["stretchy","sout"]),a.height=e.fontMetrics().defaultRuleThickness/i,s=-.5*e.fontMetrics().xHeight;else if(n==="phase"){var u=ti({number:.6,unit:"pt"},e),h=ti({number:.35,unit:"ex"},e),f=e.havingBaseSizing();i=i/f.sizeMultiplier;var d=r.height+r.depth+u+h;r.style.paddingLeft=kt(d/2+u);var p=Math.floor(1e3*d*i),m=Tbe(p),g=new ll([new Kl("phase",m)],{width:"400em",height:kt(p/1e3),viewBox:"0 0 400000 "+p,preserveAspectRatio:"xMinYMin slice"});a=Be.makeSvgSpan(["hide-tail"],[g],e),a.style.height=kt(d),s=r.depth+u+h}else{/cancel/.test(n)?l||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var y=0,v=0,x=0;/box/.test(n)?(x=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),y=e.fontMetrics().fboxsep+(n==="colorbox"?0:x),v=y):n==="angl"?(x=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),y=4*x,v=Math.max(0,.25-r.depth)):(y=l?.2:0,v=y),a=cu.encloseSpan(r,n,y,v,e),/fbox|boxed|fcolorbox/.test(n)?(a.style.borderStyle="solid",a.style.borderWidth=kt(x)):n==="angl"&&x!==.049&&(a.style.borderTopWidth=kt(x),a.style.borderRightWidth=kt(x)),s=r.depth+v,t.backgroundColor&&(a.style.backgroundColor=t.backgroundColor,t.borderColor&&(a.style.borderColor=t.borderColor))}var b;if(t.backgroundColor)b=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:s},{type:"elem",elem:r,shift:0}]},e);else{var w=/cancel|phase/.test(n)?["svg-align"]:[];b=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:a,shift:s,wrapperClasses:w}]},e)}return/cancel/.test(n)&&(b.height=r.height,b.depth=r.depth),/cancel/.test(n)&&!l?Be.makeSpan(["mord","cancel-lap"],[b],e):Be.makeSpan(["mord"],[b],e)},"htmlBuilder$7"),H7=o((t,e)=>{var r=0,n=new dt.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[yn(t.body,e)]);switch(t.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=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),t.label==="\\fcolorbox"){var i=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);n.setAttribute("style","border: "+i+"em solid "+String(t.borderColor))}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&n.setAttribute("mathbackground",t.backgroundColor),n},"mathmlBuilder$6");Nt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,a=xr(e[0],"color-token").color,s=e[1];return{type:"enclose",mode:n.mode,label:i,backgroundColor:a,body:s}},htmlBuilder:U7,mathmlBuilder:H7});Nt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,a=xr(e[0],"color-token").color,s=xr(e[1],"color-token").color,l=e[2];return{type:"enclose",mode:n.mode,label:i,backgroundColor:s,borderColor:a,body:l}},htmlBuilder:U7,mathmlBuilder:H7});Nt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\fbox",body:e[0]}}});Nt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:U7,mathmlBuilder:H7});Nt({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\angl",body:e[0]}}});mG={};o(Ql,"defineEnvironment");gG={};o(fe,"defineMacro");o(wz,"getHLines");E3=o(t=>{var e=t.parser.settings;if(!e.displayMode)throw new gt("{"+t.envName+"} can be used only in display mode.")},"validateAmsEnvironmentContext");o(W7,"getAutoTag");o(ph,"parseArray");o(q7,"dCellStyle");Zl=o(function(e,r){var n,i,a=e.body.length,s=e.hLinesBeforeRow,l=0,u=new Array(a),h=[],f=Math.max(r.fontMetrics().arrayRuleWidth,r.minRuleThickness),d=1/r.fontMetrics().ptPerEm,p=5*d;if(e.colSeparationType&&e.colSeparationType==="small"){var m=r.havingStyle(tr.SCRIPT).sizeMultiplier;p=.2778*(m/r.sizeMultiplier)}var g=e.colSeparationType==="CD"?ti({number:3,unit:"ex"},r):12*d,y=3*d,v=e.arraystretch*g,x=.7*v,b=.3*v,w=0;function C(ae){for(var Oe=0;Oe0&&(w+=.25),h.push({pos:w,isDashed:ae[Oe]})}for(o(C,"setHLinePos"),C(s[0]),n=0;n0&&(D+=b,Aae))for(n=0;n=l)){var le=void 0;(i>0||e.hskipBeforeAndAfter)&&(le=Jt.deflt(H.pregap,p),le!==0&&(O=Be.makeSpan(["arraycolsep"],[]),O.style.width=kt(le),R.push(O)));var he=[];for(n=0;n0){for(var J=Be.makeLineSpan("hline",r,f),se=Be.makeLineSpan("hdashline",r,f),ue=[{type:"elem",elem:u,shift:0}];h.length>0;){var Z=h.pop(),Se=Z.pos-k;Z.isDashed?ue.push({type:"elem",elem:se,shift:Se}):ue.push({type:"elem",elem:J,shift:Se})}u=Be.makeVList({positionType:"individualShift",children:ue},r)}if(B.length===0)return Be.makeSpan(["mord"],[u],r);var ce=Be.makeVList({positionType:"individualShift",children:B},r);return ce=Be.makeSpan(["tag"],[ce],r),Be.makeFragment([u,ce])},"htmlBuilder"),_4e={c:"center ",l:"left ",r:"right "},Jl=o(function(e,r){for(var n=[],i=new dt.MathNode("mtd",[],["mtr-glue"]),a=new dt.MathNode("mtd",[],["mml-eqn-num"]),s=0;s0){var g=e.cols,y="",v=!1,x=0,b=g.length;g[0].type==="separator"&&(p+="top ",x=1),g[g.length-1].type==="separator"&&(p+="bottom ",b-=1);for(var w=x;w0?"left ":"",p+=S[S.length-1].length>0?"right ":"";for(var _=1;_-1?"alignat":"align",a=e.envName==="split",s=ph(e.parser,{cols:n,addJot:!0,autoTag:a?void 0:W7(e.envName),emptySingleRow:!0,colSeparationType:i,maxNumCols:a?2:void 0,leqno:e.parser.settings.leqno},"display"),l,u=0,h={type:"ordgroup",mode:e.mode,body:[]};if(r[0]&&r[0].type==="ordgroup"){for(var f="",d=0;d0&&m&&(v=1),n[g]={type:"align",align:y,pregap:v,postgap:0}}return s.colSeparationType=m?"align":"alignat",s},"alignedHandler");Ql({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var r=w3(e[0]),n=r?[e[0]]:xr(e[0],"ordgroup").body,i=n.map(function(s){var l=z7(s),u=l.text;if("lcr".indexOf(u)!==-1)return{type:"align",align:u};if(u==="|")return{type:"separator",separator:"|"};if(u===":")return{type:"separator",separator:":"};throw new gt("Unknown column alignment: "+u,s)}),a={cols:i,hskipBeforeAndAfter:!0,maxNumCols:i.length};return ph(t.parser,a,q7(t.envName))},htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(t.envName.charAt(t.envName.length-1)==="*"){var i=t.parser;if(i.consumeSpaces(),i.fetch().text==="["){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,"lcr".indexOf(r)===-1)throw new gt("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),n.cols=[{type:"align",align:r}]}}var a=ph(t.parser,n,q7(t.envName)),s=Math.max(0,...a.body.map(l=>l.length));return a.cols=new Array(s).fill({type:"align",align:r}),e?{type:"leftright",mode:t.mode,body:[a],left:e[0],right:e[1],rightColor:void 0}:a},htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},r=ph(t.parser,e,"script");return r.colSeparationType="small",r},htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var r=w3(e[0]),n=r?[e[0]]:xr(e[0],"ordgroup").body,i=n.map(function(s){var l=z7(s),u=l.text;if("lc".indexOf(u)!==-1)return{type:"align",align:u};throw new gt("Unknown column alignment: "+u,s)});if(i.length>1)throw new gt("{subarray} can contain only one column");var a={cols:i,hskipBeforeAndAfter:!1,arraystretch:.5};if(a=ph(t.parser,a,"script"),a.body.length>0&&a.body[0].length>1)throw new gt("{subarray} can contain only one column");return a},htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=ph(t.parser,e,q7(t.envName));return{type:"leftright",mode:t.mode,body:[r],left:t.envName.indexOf("r")>-1?".":"\\{",right:t.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:yG,htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){Jt.contains(["gather","gather*"],t.envName)&&E3(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:W7(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return ph(t.parser,e,"display")},htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:yG,htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){E3(t);var e={autoTag:W7(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return ph(t.parser,e,"display")},htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["CD"],props:{numArgs:0},handler(t){return E3(t),p4e(t.parser)},htmlBuilder:Zl,mathmlBuilder:Jl});fe("\\nonumber","\\gdef\\@eqnsw{0}");fe("\\notag","\\nonumber");Nt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new gt(t.funcName+" valid only within array environment")}});Tz=mG;Nt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];if(i.type!=="ordgroup")throw new gt("Invalid environment name",i);for(var a="",s=0;s{var r=t.font,n=e.withFont(r);return Fr(t.body,n)},"htmlBuilder$5"),xG=o((t,e)=>{var r=t.font,n=e.withFont(r);return yn(t.body,n)},"mathmlBuilder$4"),kz={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Nt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=g3(e[0]),a=n;return a in kz&&(a=kz[a]),{type:"font",mode:r.mode,font:a.slice(1),body:i}},"handler"),htmlBuilder:vG,mathmlBuilder:xG});Nt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r}=t,n=e[0],i=Jt.isCharacterBox(n);return{type:"mclass",mode:r.mode,mclass:T3(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:i}},"handler")});Nt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:o((t,e)=>{var{parser:r,funcName:n,breakOnTokenText:i}=t,{mode:a}=r,s=r.parseExpression(!0,i),l="math"+n.slice(1);return{type:"font",mode:a,font:l,body:{type:"ordgroup",mode:r.mode,body:s}}},"handler"),htmlBuilder:vG,mathmlBuilder:xG});bG=o((t,e)=>{var r=e;return t==="display"?r=r.id>=tr.SCRIPT.id?r.text():tr.DISPLAY:t==="text"&&r.size===tr.DISPLAY.size?r=tr.TEXT:t==="script"?r=tr.SCRIPT:t==="scriptscript"&&(r=tr.SCRIPTSCRIPT),r},"adjustStyle"),Y7=o((t,e)=>{var r=bG(t.size,e.style),n=r.fracNum(),i=r.fracDen(),a;a=e.havingStyle(n);var s=Fr(t.numer,a,e);if(t.continued){var l=8.5/e.fontMetrics().ptPerEm,u=3.5/e.fontMetrics().ptPerEm;s.height=s.height0?g=3*p:g=7*p,y=e.fontMetrics().denom1):(d>0?(m=e.fontMetrics().num2,g=p):(m=e.fontMetrics().num3,g=3*p),y=e.fontMetrics().denom2);var v;if(f){var b=e.fontMetrics().axisHeight;m-s.depth-(b+.5*d){var r=new dt.MathNode("mfrac",[yn(t.numer,e),yn(t.denom,e)]);if(!t.hasBarLine)r.setAttribute("linethickness","0px");else if(t.barSize){var n=ti(t.barSize,e);r.setAttribute("linethickness",kt(n))}var i=bG(t.size,e.style);if(i.size!==e.style.size){r=new dt.MathNode("mstyle",[r]);var a=i.size===tr.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",a),r.setAttribute("scriptlevel","0")}if(t.leftDelim!=null||t.rightDelim!=null){var s=[];if(t.leftDelim!=null){var l=new dt.MathNode("mo",[new dt.TextNode(t.leftDelim.replace("\\",""))]);l.setAttribute("fence","true"),s.push(l)}if(s.push(r),t.rightDelim!=null){var u=new dt.MathNode("mo",[new dt.TextNode(t.rightDelim.replace("\\",""))]);u.setAttribute("fence","true"),s.push(u)}return F7(s)}return r},"mathmlBuilder$3");Nt({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=e[1],s,l=null,u=null,h="auto";switch(n){case"\\dfrac":case"\\frac":case"\\tfrac":s=!0;break;case"\\\\atopfrac":s=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":s=!1,l="(",u=")";break;case"\\\\bracefrac":s=!1,l="\\{",u="\\}";break;case"\\\\brackfrac":s=!1,l="[",u="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":h="display";break;case"\\tfrac":case"\\tbinom":h="text";break}return{type:"genfrac",mode:r.mode,continued:!1,numer:i,denom:a,hasBarLine:s,leftDelim:l,rightDelim:u,size:h,barSize:null}},"handler"),htmlBuilder:Y7,mathmlBuilder:X7});Nt({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=e[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:i,denom:a,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}},"handler")});Nt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:r,token:n}=t,i;switch(r){case"\\over":i="\\frac";break;case"\\choose":i="\\binom";break;case"\\atop":i="\\\\atopfrac";break;case"\\brace":i="\\\\bracefrac";break;case"\\brack":i="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:i,token:n}}});Ez=["display","text","script","scriptscript"],Sz=o(function(e){var r=null;return e.length>0&&(r=e,r=r==="."?null:r),r},"delimFromValue");Nt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:r}=t,n=e[4],i=e[5],a=g3(e[0]),s=a.type==="atom"&&a.family==="open"?Sz(a.text):null,l=g3(e[1]),u=l.type==="atom"&&l.family==="close"?Sz(l.text):null,h=xr(e[2],"size"),f,d=null;h.isBlank?f=!0:(d=h.value,f=d.number>0);var p="auto",m=e[3];if(m.type==="ordgroup"){if(m.body.length>0){var g=xr(m.body[0],"textord");p=Ez[Number(g.text)]}}else m=xr(m,"textord"),p=Ez[Number(m.text)];return{type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:f,barSize:d,leftDelim:s,rightDelim:u,size:p}},htmlBuilder:Y7,mathmlBuilder:X7});Nt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:r,funcName:n,token:i}=t;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:xr(e[0],"size").value,token:i}}});Nt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=obe(xr(e[1],"infix").size),s=e[2],l=a.number>0;return{type:"genfrac",mode:r.mode,numer:i,denom:s,continued:!1,hasBarLine:l,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},"handler"),htmlBuilder:Y7,mathmlBuilder:X7});wG=o((t,e)=>{var r=e.style,n,i;t.type==="supsub"?(n=t.sup?Fr(t.sup,e.havingStyle(r.sup()),e):Fr(t.sub,e.havingStyle(r.sub()),e),i=xr(t.base,"horizBrace")):i=xr(t,"horizBrace");var a=Fr(i.base,e.havingBaseStyle(tr.DISPLAY)),s=cu.svgSpan(i,e),l;if(i.isOver?(l=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:s}]},e),l.children[0].children[0].children[1].classes.push("svg-align")):(l=Be.makeVList({positionType:"bottom",positionData:a.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:a}]},e),l.children[0].children[0].children[0].classes.push("svg-align")),n){var u=Be.makeSpan(["mord",i.isOver?"mover":"munder"],[l],e);i.isOver?l=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:u},{type:"kern",size:.2},{type:"elem",elem:n}]},e):l=Be.makeVList({positionType:"bottom",positionData:u.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:u}]},e)}return Be.makeSpan(["mord",i.isOver?"mover":"munder"],[l],e)},"htmlBuilder$3"),D4e=o((t,e)=>{var r=cu.mathMLnode(t.label);return new dt.MathNode(t.isOver?"mover":"munder",[yn(t.base,e),r])},"mathmlBuilder$2");Nt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"horizBrace",mode:r.mode,label:n,isOver:/^\\over/.test(n),base:e[0]}},htmlBuilder:wG,mathmlBuilder:D4e});Nt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[1],i=xr(e[0],"url").url;return r.settings.isTrusted({command:"\\href",url:i})?{type:"href",mode:r.mode,href:i,body:di(n)}:r.formatUnsupportedCmd("\\href")},"handler"),htmlBuilder:o((t,e)=>{var r=Pi(t.body,e,!1);return Be.makeAnchor(t.href,[],r,e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=dh(t.body,e);return r instanceof ws||(r=new ws("mrow",[r])),r.setAttribute("href",t.href),r},"mathmlBuilder")});Nt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=xr(e[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var i=[],a=0;a{var{parser:r,funcName:n,token:i}=t,a=xr(e[0],"raw").string,s=e[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,u={};switch(n){case"\\htmlClass":u.class=a,l={command:"\\htmlClass",class:a};break;case"\\htmlId":u.id=a,l={command:"\\htmlId",id:a};break;case"\\htmlStyle":u.style=a,l={command:"\\htmlStyle",style:a};break;case"\\htmlData":{for(var h=a.split(","),f=0;f{var r=Pi(t.body,e,!1),n=["enclosing"];t.attributes.class&&n.push(...t.attributes.class.trim().split(/\s+/));var i=Be.makeSpan(n,r,e);for(var a in t.attributes)a!=="class"&&t.attributes.hasOwnProperty(a)&&i.setAttribute(a,t.attributes[a]);return i},"htmlBuilder"),mathmlBuilder:o((t,e)=>dh(t.body,e),"mathmlBuilder")});Nt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t;return{type:"htmlmathml",mode:r.mode,html:di(e[0]),mathml:di(e[1])}},"handler"),htmlBuilder:o((t,e)=>{var r=Pi(t.html,e,!1);return Be.makeFragment(r)},"htmlBuilder"),mathmlBuilder:o((t,e)=>dh(t.mathml,e),"mathmlBuilder")});x7=o(function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!r)throw new gt("Invalid size: '"+e+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!zz(n))throw new gt("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n},"sizeData");Nt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:o((t,e,r)=>{var{parser:n}=t,i={number:0,unit:"em"},a={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var u=xr(r[0],"raw").string,h=u.split(","),f=0;f{var r=ti(t.height,e),n=0;t.totalheight.number>0&&(n=ti(t.totalheight,e)-r);var i=0;t.width.number>0&&(i=ti(t.width,e));var a={height:kt(r+n)};i>0&&(a.width=kt(i)),n>0&&(a.verticalAlign=kt(-n));var s=new S7(t.src,t.alt,a);return s.height=r,s.depth=n,s},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=new dt.MathNode("mglyph",[]);r.setAttribute("alt",t.alt);var n=ti(t.height,e),i=0;if(t.totalheight.number>0&&(i=ti(t.totalheight,e)-n,r.setAttribute("valign",kt(-i))),r.setAttribute("height",kt(n+i)),t.width.number>0){var a=ti(t.width,e);r.setAttribute("width",kt(a))}return r.setAttribute("src",t.src),r},"mathmlBuilder")});Nt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,i=xr(e[0],"size");if(r.settings.strict){var a=n[1]==="m",s=i.value.unit==="mu";a?(s||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+i.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):s&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:i.value}},htmlBuilder(t,e){return Be.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var r=ti(t.dimension,e);return new dt.SpaceNode(r)}});Nt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:i}},"handler"),htmlBuilder:o((t,e)=>{var r;t.alignment==="clap"?(r=Be.makeSpan([],[Fr(t.body,e)]),r=Be.makeSpan(["inner"],[r],e)):r=Be.makeSpan(["inner"],[Fr(t.body,e)]);var n=Be.makeSpan(["fix"],[]),i=Be.makeSpan([t.alignment],[r,n],e),a=Be.makeSpan(["strut"]);return a.style.height=kt(i.height+i.depth),i.depth&&(a.style.verticalAlign=kt(-i.depth)),i.children.unshift(a),i=Be.makeSpan(["thinbox"],[i],e),Be.makeSpan(["mord","vbox"],[i],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=new dt.MathNode("mpadded",[yn(t.body,e)]);if(t.alignment!=="rlap"){var n=t.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r},"mathmlBuilder")});Nt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:r,parser:n}=t,i=n.mode;n.switchMode("math");var a=r==="\\("?"\\)":"$",s=n.parseExpression(!1,a);return n.expect(a),n.switchMode(i),{type:"styling",mode:n.mode,style:"text",body:s}}});Nt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new gt("Mismatched "+t.funcName)}});Cz=o((t,e)=>{switch(e.style.size){case tr.DISPLAY.size:return t.display;case tr.TEXT.size:return t.text;case tr.SCRIPT.size:return t.script;case tr.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}},"chooseMathStyle");Nt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:o((t,e)=>{var{parser:r}=t;return{type:"mathchoice",mode:r.mode,display:di(e[0]),text:di(e[1]),script:di(e[2]),scriptscript:di(e[3])}},"handler"),htmlBuilder:o((t,e)=>{var r=Cz(t,e),n=Pi(r,e,!1);return Be.makeFragment(n)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=Cz(t,e);return dh(r,e)},"mathmlBuilder")});TG=o((t,e,r,n,i,a,s)=>{t=Be.makeSpan([],[t]);var l=r&&Jt.isCharacterBox(r),u,h;if(e){var f=Fr(e,n.havingStyle(i.sup()),n);h={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-f.depth)}}if(r){var d=Fr(r,n.havingStyle(i.sub()),n);u={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-d.height)}}var p;if(h&&u){var m=n.fontMetrics().bigOpSpacing5+u.elem.height+u.elem.depth+u.kern+t.depth+s;p=Be.makeVList({positionType:"bottom",positionData:m,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:kt(-a)},{type:"kern",size:u.kern},{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:kt(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(u){var g=t.height-s;p=Be.makeVList({positionType:"top",positionData:g,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:kt(-a)},{type:"kern",size:u.kern},{type:"elem",elem:t}]},n)}else if(h){var y=t.depth+s;p=Be.makeVList({positionType:"bottom",positionData:y,children:[{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:kt(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else return t;var v=[p];if(u&&a!==0&&!l){var x=Be.makeSpan(["mspace"],[],n);x.style.marginRight=kt(a),v.unshift(x)}return Be.makeSpan(["mop","op-limits"],v,n)},"assembleSupSub"),kG=["\\smallint"],m0=o((t,e)=>{var r,n,i=!1,a;t.type==="supsub"?(r=t.sup,n=t.sub,a=xr(t.base,"op"),i=!0):a=xr(t,"op");var s=e.style,l=!1;s.size===tr.DISPLAY.size&&a.symbol&&!Jt.contains(kG,a.name)&&(l=!0);var u;if(a.symbol){var h=l?"Size2-Regular":"Size1-Regular",f="";if((a.name==="\\oiint"||a.name==="\\oiiint")&&(f=a.name.slice(1),a.name=f==="oiint"?"\\iint":"\\iiint"),u=Be.makeSymbol(a.name,h,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),f.length>0){var d=u.italic,p=Be.staticSvg(f+"Size"+(l?"2":"1"),e);u=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:u,shift:0},{type:"elem",elem:p,shift:l?.08:0}]},e),a.name="\\"+f,u.classes.unshift("mop"),u.italic=d}}else if(a.body){var m=Pi(a.body,e,!0);m.length===1&&m[0]instanceof Ts?(u=m[0],u.classes[0]="mop"):u=Be.makeSpan(["mop"],m,e)}else{for(var g=[],y=1;y{var r;if(t.symbol)r=new ws("mo",[Co(t.name,t.mode)]),Jt.contains(kG,t.name)&&r.setAttribute("largeop","false");else if(t.body)r=new ws("mo",ks(t.body,e));else{r=new ws("mi",[new Jf(t.name.slice(1))]);var n=new ws("mo",[Co("\u2061","text")]);t.parentIsSupSub?r=new ws("mrow",[r,n]):r=Qz([r,n])}return r},"mathmlBuilder$1"),L4e={"\u220F":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22C0":"\\bigwedge","\u22C1":"\\bigvee","\u22C2":"\\bigcap","\u22C3":"\\bigcup","\u2A00":"\\bigodot","\u2A01":"\\bigoplus","\u2A02":"\\bigotimes","\u2A04":"\\biguplus","\u2A06":"\\bigsqcup"};Nt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220F","\u2210","\u2211","\u22C0","\u22C1","\u22C2","\u22C3","\u2A00","\u2A01","\u2A02","\u2A04","\u2A06"],props:{numArgs:0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=n;return i.length===1&&(i=L4e[i]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:i}},"handler"),htmlBuilder:m0,mathmlBuilder:Wy});Nt({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:di(n)}},"handler"),htmlBuilder:m0,mathmlBuilder:Wy});R4e={"\u222B":"\\int","\u222C":"\\iint","\u222D":"\\iiint","\u222E":"\\oint","\u222F":"\\oiint","\u2230":"\\oiiint"};Nt({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(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:m0,mathmlBuilder:Wy});Nt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:m0,mathmlBuilder:Wy});Nt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222B","\u222C","\u222D","\u222E","\u222F","\u2230"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t,n=r;return n.length===1&&(n=R4e[n]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:m0,mathmlBuilder:Wy});EG=o((t,e)=>{var r,n,i=!1,a;t.type==="supsub"?(r=t.sup,n=t.sub,a=xr(t.base,"operatorname"),i=!0):a=xr(t,"operatorname");var s;if(a.body.length>0){for(var l=a.body.map(d=>{var p=d.text;return typeof p=="string"?{type:"textord",mode:d.mode,text:p}:d}),u=Pi(l,e.withFont("mathrm"),!0),h=0;h{for(var r=ks(t.body,e.withFont("mathrm")),n=!0,i=0;if.toText()).join("");r=[new dt.TextNode(l)]}var u=new dt.MathNode("mi",r);u.setAttribute("mathvariant","normal");var h=new dt.MathNode("mo",[Co("\u2061","text")]);return t.parentIsSupSub?new dt.MathNode("mrow",[u,h]):dt.newDocumentFragment([u,h])},"mathmlBuilder");Nt({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"operatorname",mode:r.mode,body:di(i),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},"handler"),htmlBuilder:EG,mathmlBuilder:N4e});fe("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");rd({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?Be.makeFragment(Pi(t.body,e,!1)):Be.makeSpan(["mord"],Pi(t.body,e,!0),e)},mathmlBuilder(t,e){return dh(t.body,e,!0)}});Nt({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:r}=t,n=e[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(t,e){var r=Fr(t.body,e.havingCrampedStyle()),n=Be.makeLineSpan("overline-line",e),i=e.fontMetrics().defaultRuleThickness,a=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*i},{type:"elem",elem:n},{type:"kern",size:i}]},e);return Be.makeSpan(["mord","overline"],[a],e)},mathmlBuilder(t,e){var r=new dt.MathNode("mo",[new dt.TextNode("\u203E")]);r.setAttribute("stretchy","true");var n=new dt.MathNode("mover",[yn(t.body,e),r]);return n.setAttribute("accent","true"),n}});Nt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"phantom",mode:r.mode,body:di(n)}},"handler"),htmlBuilder:o((t,e)=>{var r=Pi(t.body,e.withPhantom(),!1);return Be.makeFragment(r)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=ks(t.body,e);return new dt.MathNode("mphantom",r)},"mathmlBuilder")});Nt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"hphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((t,e)=>{var r=Be.makeSpan([],[Fr(t.body,e.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var n=0;n{var r=ks(di(t.body),e),n=new dt.MathNode("mphantom",r),i=new dt.MathNode("mpadded",[n]);return i.setAttribute("height","0px"),i.setAttribute("depth","0px"),i},"mathmlBuilder")});Nt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"vphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((t,e)=>{var r=Be.makeSpan(["inner"],[Fr(t.body,e.withPhantom())]),n=Be.makeSpan(["fix"],[]);return Be.makeSpan(["mord","rlap"],[r,n],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=ks(di(t.body),e),n=new dt.MathNode("mphantom",r),i=new dt.MathNode("mpadded",[n]);return i.setAttribute("width","0px"),i},"mathmlBuilder")});Nt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t,n=xr(e[0],"size").value,i=e[1];return{type:"raisebox",mode:r.mode,dy:n,body:i}},htmlBuilder(t,e){var r=Fr(t.body,e),n=ti(t.dy,e);return Be.makeVList({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){var r=new dt.MathNode("mpadded",[yn(t.body,e)]),n=t.dy.number+t.dy.unit;return r.setAttribute("voffset",n),r}});Nt({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});Nt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler(t,e,r){var{parser:n}=t,i=r[0],a=xr(e[0],"size"),s=xr(e[1],"size");return{type:"rule",mode:n.mode,shift:i&&xr(i,"size").value,width:a.value,height:s.value}},htmlBuilder(t,e){var r=Be.makeSpan(["mord","rule"],[],e),n=ti(t.width,e),i=ti(t.height,e),a=t.shift?ti(t.shift,e):0;return r.style.borderRightWidth=kt(n),r.style.borderTopWidth=kt(i),r.style.bottom=kt(a),r.width=n,r.height=i+a,r.depth=-a,r.maxFontSize=i*1.125*e.sizeMultiplier,r},mathmlBuilder(t,e){var r=ti(t.width,e),n=ti(t.height,e),i=t.shift?ti(t.shift,e):0,a=e.color&&e.getColor()||"black",s=new dt.MathNode("mspace");s.setAttribute("mathbackground",a),s.setAttribute("width",kt(r)),s.setAttribute("height",kt(n));var l=new dt.MathNode("mpadded",[s]);return i>=0?l.setAttribute("height",kt(i)):(l.setAttribute("height",kt(i)),l.setAttribute("depth",kt(-i))),l.setAttribute("voffset",kt(i)),l}});o(SG,"sizingGroup");Az=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],M4e=o((t,e)=>{var r=e.havingSize(t.size);return SG(t.body,r,e)},"htmlBuilder");Nt({type:"sizing",names:Az,props:{numArgs:0,allowedInText:!0},handler:o((t,e)=>{var{breakOnTokenText:r,funcName:n,parser:i}=t,a=i.parseExpression(!1,r);return{type:"sizing",mode:i.mode,size:Az.indexOf(n)+1,body:a}},"handler"),htmlBuilder:M4e,mathmlBuilder:o((t,e)=>{var r=e.havingSize(t.size),n=ks(t.body,r),i=new dt.MathNode("mstyle",n);return i.setAttribute("mathsize",kt(r.sizeMultiplier)),i},"mathmlBuilder")});Nt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:o((t,e,r)=>{var{parser:n}=t,i=!1,a=!1,s=r[0]&&xr(r[0],"ordgroup");if(s)for(var l="",u=0;u{var r=Be.makeSpan([],[Fr(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return r;if(t.smashHeight&&(r.height=0,r.children))for(var n=0;n{var r=new dt.MathNode("mpadded",[yn(t.body,e)]);return t.smashHeight&&r.setAttribute("height","0px"),t.smashDepth&&r.setAttribute("depth","0px"),r},"mathmlBuilder")});Nt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:n}=t,i=r[0],a=e[0];return{type:"sqrt",mode:n.mode,body:a,index:i}},htmlBuilder(t,e){var r=Fr(t.body,e.havingCrampedStyle());r.height===0&&(r.height=e.fontMetrics().xHeight),r=Be.wrapFragment(r,e);var n=e.fontMetrics(),i=n.defaultRuleThickness,a=i;e.style.idr.height+r.depth+s&&(s=(s+d-r.height-r.depth)/2);var p=u.height-r.height-s-h;r.style.paddingLeft=kt(f);var m=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+p)},{type:"elem",elem:u},{type:"kern",size:h}]},e);if(t.index){var g=e.havingStyle(tr.SCRIPTSCRIPT),y=Fr(t.index,g,e),v=.6*(m.height-m.depth),x=Be.makeVList({positionType:"shift",positionData:-v,children:[{type:"elem",elem:y}]},e),b=Be.makeSpan(["root"],[x]);return Be.makeSpan(["mord","sqrt"],[b,m],e)}else return Be.makeSpan(["mord","sqrt"],[m],e)},mathmlBuilder(t,e){var{body:r,index:n}=t;return n?new dt.MathNode("mroot",[yn(r,e),yn(n,e)]):new dt.MathNode("msqrt",[yn(r,e)])}});_z={display:tr.DISPLAY,text:tr.TEXT,script:tr.SCRIPT,scriptscript:tr.SCRIPTSCRIPT};Nt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:r,funcName:n,parser:i}=t,a=i.parseExpression(!0,r),s=n.slice(1,n.length-5);return{type:"styling",mode:i.mode,style:s,body:a}},htmlBuilder(t,e){var r=_z[t.style],n=e.havingStyle(r).withFont("");return SG(t.body,n,e)},mathmlBuilder(t,e){var r=_z[t.style],n=e.havingStyle(r),i=ks(t.body,n),a=new dt.MathNode("mstyle",i),s={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=s[t.style];return a.setAttribute("scriptlevel",l[0]),a.setAttribute("displaystyle",l[1]),a}});I4e=o(function(e,r){var n=e.base;if(n)if(n.type==="op"){var i=n.limits&&(r.style.size===tr.DISPLAY.size||n.alwaysHandleSupSub);return i?m0:null}else if(n.type==="operatorname"){var a=n.alwaysHandleSupSub&&(r.style.size===tr.DISPLAY.size||n.limits);return a?EG:null}else{if(n.type==="accent")return Jt.isCharacterBox(n.base)?G7:null;if(n.type==="horizBrace"){var s=!e.sub;return s===n.isOver?wG:null}else return null}else return null},"htmlBuilderDelegate");rd({type:"supsub",htmlBuilder(t,e){var r=I4e(t,e);if(r)return r(t,e);var{base:n,sup:i,sub:a}=t,s=Fr(n,e),l,u,h=e.fontMetrics(),f=0,d=0,p=n&&Jt.isCharacterBox(n);if(i){var m=e.havingStyle(e.style.sup());l=Fr(i,m,e),p||(f=s.height-m.fontMetrics().supDrop*m.sizeMultiplier/e.sizeMultiplier)}if(a){var g=e.havingStyle(e.style.sub());u=Fr(a,g,e),p||(d=s.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}var y;e.style===tr.DISPLAY?y=h.sup1:e.style.cramped?y=h.sup3:y=h.sup2;var v=e.sizeMultiplier,x=kt(.5/h.ptPerEm/v),b=null;if(u){var w=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(s instanceof Ts||w)&&(b=kt(-s.italic))}var C;if(l&&u){f=Math.max(f,y,l.depth+.25*h.xHeight),d=Math.max(d,h.sub2);var T=h.defaultRuleThickness,E=4*T;if(f-l.depth-(u.height-d)0&&(f+=A,d-=A)}var S=[{type:"elem",elem:u,shift:d,marginRight:x,marginLeft:b},{type:"elem",elem:l,shift:-f,marginRight:x}];C=Be.makeVList({positionType:"individualShift",children:S},e)}else if(u){d=Math.max(d,h.sub1,u.height-.8*h.xHeight);var _=[{type:"elem",elem:u,marginLeft:b,marginRight:x}];C=Be.makeVList({positionType:"shift",positionData:d,children:_},e)}else if(l)f=Math.max(f,y,l.depth+.25*h.xHeight),C=Be.makeVList({positionType:"shift",positionData:-f,children:[{type:"elem",elem:l,marginRight:x}]},e);else throw new Error("supsub must have either sup or sub.");var I=A7(s,"right")||"mord";return Be.makeSpan([I],[s,Be.makeSpan(["msupsub"],[C])],e)},mathmlBuilder(t,e){var r=!1,n,i;t.base&&t.base.type==="horizBrace"&&(i=!!t.sup,i===t.base.isOver&&(r=!0,n=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var a=[yn(t.base,e)];t.sub&&a.push(yn(t.sub,e)),t.sup&&a.push(yn(t.sup,e));var s;if(r)s=n?"mover":"munder";else if(t.sub)if(t.sup){var h=t.base;h&&h.type==="op"&&h.limits&&e.style===tr.DISPLAY||h&&h.type==="operatorname"&&h.alwaysHandleSupSub&&(e.style===tr.DISPLAY||h.limits)?s="munderover":s="msubsup"}else{var u=t.base;u&&u.type==="op"&&u.limits&&(e.style===tr.DISPLAY||u.alwaysHandleSupSub)||u&&u.type==="operatorname"&&u.alwaysHandleSupSub&&(u.limits||e.style===tr.DISPLAY)?s="munder":s="msub"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===tr.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===tr.DISPLAY)?s="mover":s="msup"}return new dt.MathNode(s,a)}});rd({type:"atom",htmlBuilder(t,e){return Be.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var r=new dt.MathNode("mo",[Co(t.text,t.mode)]);if(t.family==="bin"){var n=$7(t,e);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else t.family==="punct"?r.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&r.setAttribute("stretchy","false");return r}});CG={mi:"italic",mn:"normal",mtext:"normal"};rd({type:"mathord",htmlBuilder(t,e){return Be.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var r=new dt.MathNode("mi",[Co(t.text,t.mode,e)]),n=$7(t,e)||"italic";return n!==CG[r.type]&&r.setAttribute("mathvariant",n),r}});rd({type:"textord",htmlBuilder(t,e){return Be.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var r=Co(t.text,t.mode,e),n=$7(t,e)||"normal",i;return t.mode==="text"?i=new dt.MathNode("mtext",[r]):/[0-9]/.test(t.text)?i=new dt.MathNode("mn",[r]):t.text==="\\prime"?i=new dt.MathNode("mo",[r]):i=new dt.MathNode("mi",[r]),n!==CG[i.type]&&i.setAttribute("mathvariant",n),i}});b7={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},w7={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};rd({type:"spacing",htmlBuilder(t,e){if(w7.hasOwnProperty(t.text)){var r=w7[t.text].className||"";if(t.mode==="text"){var n=Be.makeOrd(t,e,"textord");return n.classes.push(r),n}else return Be.makeSpan(["mspace",r],[Be.mathsym(t.text,t.mode,e)],e)}else{if(b7.hasOwnProperty(t.text))return Be.makeSpan(["mspace",b7[t.text]],[],e);throw new gt('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var r;if(w7.hasOwnProperty(t.text))r=new dt.MathNode("mtext",[new dt.TextNode("\xA0")]);else{if(b7.hasOwnProperty(t.text))return new dt.MathNode("mspace");throw new gt('Unknown type of space "'+t.text+'"')}return r}});Dz=o(()=>{var t=new dt.MathNode("mtd",[]);return t.setAttribute("width","50%"),t},"pad");rd({type:"tag",mathmlBuilder(t,e){var r=new dt.MathNode("mtable",[new dt.MathNode("mtr",[Dz(),new dt.MathNode("mtd",[dh(t.body,e)]),Dz(),new dt.MathNode("mtd",[dh(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});Lz={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},Rz={"\\textbf":"textbf","\\textmd":"textmd"},O4e={"\\textit":"textit","\\textup":"textup"},Nz=o((t,e)=>{var r=t.font;if(r){if(Lz[r])return e.withTextFontFamily(Lz[r]);if(Rz[r])return e.withTextFontWeight(Rz[r]);if(r==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(O4e[r])},"optionsWithFont");Nt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"text",mode:r.mode,body:di(i),font:n}},htmlBuilder(t,e){var r=Nz(t,e),n=Pi(t.body,r,!0);return Be.makeSpan(["mord","text"],n,r)},mathmlBuilder(t,e){var r=Nz(t,e);return dh(t.body,r)}});Nt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"underline",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=Fr(t.body,e),n=Be.makeLineSpan("underline-line",e),i=e.fontMetrics().defaultRuleThickness,a=Be.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:i},{type:"elem",elem:n},{type:"kern",size:3*i},{type:"elem",elem:r}]},e);return Be.makeSpan(["mord","underline"],[a],e)},mathmlBuilder(t,e){var r=new dt.MathNode("mo",[new dt.TextNode("\u203E")]);r.setAttribute("stretchy","true");var n=new dt.MathNode("munder",[yn(t.body,e),r]);return n.setAttribute("accentunder","true"),n}});Nt({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"vcenter",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=Fr(t.body,e),n=e.fontMetrics().axisHeight,i=.5*(r.height-n-(r.depth+n));return Be.makeVList({positionType:"shift",positionData:i,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){return new dt.MathNode("mpadded",[yn(t.body,e)],["vcenter"])}});Nt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,r){throw new gt("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var r=Mz(t),n=[],i=e.havingStyle(e.style.text()),a=0;at.body.replace(/ /g,t.star?"\u2423":"\xA0"),"makeVerb"),hh=jz,AG=`[ \r + ]`,P4e="\\\\[a-zA-Z@]+",B4e="\\\\[^\uD800-\uDFFF]",F4e="("+P4e+")"+AG+"*",$4e=`\\\\( +|[ \r ]+ +?)[ \r ]*`,N7="[\u0300-\u036F]",z4e=new RegExp(N7+"+$"),G4e="("+AG+"+)|"+($4e+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(N7+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(N7+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+F4e)+("|"+B4e+")"),y3=class{static{o(this,"Lexer")}constructor(e,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=r,this.tokenRegex=new RegExp(G4e,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,r){this.catcodes[e]=r}lex(){var e=this.input,r=this.tokenRegex.lastIndex;if(r===e.length)return new So("EOF",new Xs(this,r,r));var n=this.tokenRegex.exec(e);if(n===null||n.index!==r)throw new gt("Unexpected character: '"+e[r]+"'",new So(e[r],new Xs(this,r,r+1)));var i=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[i]===14){var a=e.indexOf(` +`,this.tokenRegex.lastIndex);return a===-1?(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=a+1,this.lex()}return new So(i,new Xs(this,r,this.tokenRegex.lastIndex))}},M7=class{static{o(this,"Namespace")}constructor(e,r){e===void 0&&(e={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new gt("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var r in e)e.hasOwnProperty(r)&&(e[r]==null?delete this.current[r]:this.current[r]=e[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,r,n){if(n===void 0&&(n=!1),n){for(var i=0;i0&&(this.undefStack[this.undefStack.length-1][e]=r)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(e)&&(a[e]=this.current[e])}r==null?delete this.current[e]:this.current[e]=r}},V4e=gG;fe("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});fe("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});fe("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});fe("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});fe("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var r=t.future();return e[0].length===1&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});fe("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");fe("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});Iz={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};fe("\\char",function(t){var e=t.popToken(),r,n="";if(e.text==="'")r=8,e=t.popToken();else if(e.text==='"')r=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")n=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new gt("\\char` missing argument");n=e.text.charCodeAt(0)}else r=10;if(r){if(n=Iz[e.text],n==null||n>=r)throw new gt("Invalid base-"+r+" digit "+e.text);for(var i;(i=Iz[t.future().text])!=null&&i{var n=t.consumeArg().tokens;if(n.length!==1)throw new gt("\\newcommand's first argument must be a macro name");var i=n[0].text,a=t.isDefined(i);if(a&&!e)throw new gt("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!a&&!r)throw new gt("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var s=0;if(n=t.consumeArg().tokens,n.length===1&&n[0].text==="["){for(var l="",u=t.expandNextToken();u.text!=="]"&&u.text!=="EOF";)l+=u.text,u=t.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new gt("Invalid number of arguments: "+l);s=parseInt(l),n=t.consumeArg().tokens}return t.macros.set(i,{tokens:n,numArgs:s}),""},"newcommand");fe("\\newcommand",t=>j7(t,!1,!0));fe("\\renewcommand",t=>j7(t,!0,!1));fe("\\providecommand",t=>j7(t,!0,!0));fe("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(r=>r.text).join("")),""});fe("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(r=>r.text).join("")),""});fe("\\show",t=>{var e=t.popToken(),r=e.text;return console.log(e,t.macros.get(r),hh[r],An.math[r],An.text[r]),""});fe("\\bgroup","{");fe("\\egroup","}");fe("~","\\nobreakspace");fe("\\lq","`");fe("\\rq","'");fe("\\aa","\\r a");fe("\\AA","\\r A");fe("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xA9}");fe("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");fe("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");fe("\u212C","\\mathscr{B}");fe("\u2130","\\mathscr{E}");fe("\u2131","\\mathscr{F}");fe("\u210B","\\mathscr{H}");fe("\u2110","\\mathscr{I}");fe("\u2112","\\mathscr{L}");fe("\u2133","\\mathscr{M}");fe("\u211B","\\mathscr{R}");fe("\u212D","\\mathfrak{C}");fe("\u210C","\\mathfrak{H}");fe("\u2128","\\mathfrak{Z}");fe("\\Bbbk","\\Bbb{k}");fe("\xB7","\\cdotp");fe("\\llap","\\mathllap{\\textrm{#1}}");fe("\\rlap","\\mathrlap{\\textrm{#1}}");fe("\\clap","\\mathclap{\\textrm{#1}}");fe("\\mathstrut","\\vphantom{(}");fe("\\underbar","\\underline{\\text{#1}}");fe("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');fe("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");fe("\\ne","\\neq");fe("\u2260","\\neq");fe("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");fe("\u2209","\\notin");fe("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");fe("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");fe("\u225A","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");fe("\u225B","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");fe("\u225D","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");fe("\u225E","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");fe("\u225F","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");fe("\u27C2","\\perp");fe("\u203C","\\mathclose{!\\mkern-0.8mu!}");fe("\u220C","\\notni");fe("\u231C","\\ulcorner");fe("\u231D","\\urcorner");fe("\u231E","\\llcorner");fe("\u231F","\\lrcorner");fe("\xA9","\\copyright");fe("\xAE","\\textregistered");fe("\uFE0F","\\textregistered");fe("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');fe("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');fe("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');fe("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');fe("\\vdots","\\mathord{\\varvdots\\rule{0pt}{15pt}}");fe("\u22EE","\\vdots");fe("\\varGamma","\\mathit{\\Gamma}");fe("\\varDelta","\\mathit{\\Delta}");fe("\\varTheta","\\mathit{\\Theta}");fe("\\varLambda","\\mathit{\\Lambda}");fe("\\varXi","\\mathit{\\Xi}");fe("\\varPi","\\mathit{\\Pi}");fe("\\varSigma","\\mathit{\\Sigma}");fe("\\varUpsilon","\\mathit{\\Upsilon}");fe("\\varPhi","\\mathit{\\Phi}");fe("\\varPsi","\\mathit{\\Psi}");fe("\\varOmega","\\mathit{\\Omega}");fe("\\substack","\\begin{subarray}{c}#1\\end{subarray}");fe("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");fe("\\boxed","\\fbox{$\\displaystyle{#1}$}");fe("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");fe("\\implies","\\DOTSB\\;\\Longrightarrow\\;");fe("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");Oz={",":"\\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"};fe("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in Oz?e=Oz[r]:(r.slice(0,4)==="\\not"||r in An.math&&Jt.contains(["bin","rel"],An.math[r].group))&&(e="\\dotsb"),e});K7={")":!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};fe("\\dotso",function(t){var e=t.future().text;return e in K7?"\\ldots\\,":"\\ldots"});fe("\\dotsc",function(t){var e=t.future().text;return e in K7&&e!==","?"\\ldots\\,":"\\ldots"});fe("\\cdots",function(t){var e=t.future().text;return e in K7?"\\@cdots\\,":"\\@cdots"});fe("\\dotsb","\\cdots");fe("\\dotsm","\\cdots");fe("\\dotsi","\\!\\cdots");fe("\\dotsx","\\ldots\\,");fe("\\DOTSI","\\relax");fe("\\DOTSB","\\relax");fe("\\DOTSX","\\relax");fe("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");fe("\\,","\\tmspace+{3mu}{.1667em}");fe("\\thinspace","\\,");fe("\\>","\\mskip{4mu}");fe("\\:","\\tmspace+{4mu}{.2222em}");fe("\\medspace","\\:");fe("\\;","\\tmspace+{5mu}{.2777em}");fe("\\thickspace","\\;");fe("\\!","\\tmspace-{3mu}{.1667em}");fe("\\negthinspace","\\!");fe("\\negmedspace","\\tmspace-{4mu}{.2222em}");fe("\\negthickspace","\\tmspace-{5mu}{.277em}");fe("\\enspace","\\kern.5em ");fe("\\enskip","\\hskip.5em\\relax");fe("\\quad","\\hskip1em\\relax");fe("\\qquad","\\hskip2em\\relax");fe("\\tag","\\@ifstar\\tag@literal\\tag@paren");fe("\\tag@paren","\\tag@literal{({#1})}");fe("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new gt("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});fe("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");fe("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");fe("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");fe("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");fe("\\newline","\\\\\\relax");fe("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");_G=kt(jl["Main-Regular"][84][1]-.7*jl["Main-Regular"][65][1]);fe("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+_G+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");fe("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+_G+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");fe("\\hspace","\\@ifstar\\@hspacer\\@hspace");fe("\\@hspace","\\hskip #1\\relax");fe("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");fe("\\ordinarycolon",":");fe("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");fe("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');fe("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');fe("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');fe("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');fe("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');fe("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');fe("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');fe("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');fe("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');fe("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');fe("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');fe("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');fe("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');fe("\u2237","\\dblcolon");fe("\u2239","\\eqcolon");fe("\u2254","\\coloneqq");fe("\u2255","\\eqqcolon");fe("\u2A74","\\Coloneqq");fe("\\ratio","\\vcentcolon");fe("\\coloncolon","\\dblcolon");fe("\\colonequals","\\coloneqq");fe("\\coloncolonequals","\\Coloneqq");fe("\\equalscolon","\\eqqcolon");fe("\\equalscoloncolon","\\Eqqcolon");fe("\\colonminus","\\coloneq");fe("\\coloncolonminus","\\Coloneq");fe("\\minuscolon","\\eqcolon");fe("\\minuscoloncolon","\\Eqcolon");fe("\\coloncolonapprox","\\Colonapprox");fe("\\coloncolonsim","\\Colonsim");fe("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");fe("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");fe("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");fe("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");fe("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");fe("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");fe("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");fe("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");fe("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");fe("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");fe("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");fe("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");fe("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");fe("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}");fe("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}");fe("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}");fe("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}");fe("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}");fe("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}");fe("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}");fe("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}");fe("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}");fe("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}");fe("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228A}");fe("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2ACB}");fe("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228B}");fe("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2ACC}");fe("\\imath","\\html@mathml{\\@imath}{\u0131}");fe("\\jmath","\\html@mathml{\\@jmath}{\u0237}");fe("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");fe("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");fe("\u27E6","\\llbracket");fe("\u27E7","\\rrbracket");fe("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");fe("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");fe("\u2983","\\lBrace");fe("\u2984","\\rBrace");fe("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");fe("\u29B5","\\minuso");fe("\\darr","\\downarrow");fe("\\dArr","\\Downarrow");fe("\\Darr","\\Downarrow");fe("\\lang","\\langle");fe("\\rang","\\rangle");fe("\\uarr","\\uparrow");fe("\\uArr","\\Uparrow");fe("\\Uarr","\\Uparrow");fe("\\N","\\mathbb{N}");fe("\\R","\\mathbb{R}");fe("\\Z","\\mathbb{Z}");fe("\\alef","\\aleph");fe("\\alefsym","\\aleph");fe("\\Alpha","\\mathrm{A}");fe("\\Beta","\\mathrm{B}");fe("\\bull","\\bullet");fe("\\Chi","\\mathrm{X}");fe("\\clubs","\\clubsuit");fe("\\cnums","\\mathbb{C}");fe("\\Complex","\\mathbb{C}");fe("\\Dagger","\\ddagger");fe("\\diamonds","\\diamondsuit");fe("\\empty","\\emptyset");fe("\\Epsilon","\\mathrm{E}");fe("\\Eta","\\mathrm{H}");fe("\\exist","\\exists");fe("\\harr","\\leftrightarrow");fe("\\hArr","\\Leftrightarrow");fe("\\Harr","\\Leftrightarrow");fe("\\hearts","\\heartsuit");fe("\\image","\\Im");fe("\\infin","\\infty");fe("\\Iota","\\mathrm{I}");fe("\\isin","\\in");fe("\\Kappa","\\mathrm{K}");fe("\\larr","\\leftarrow");fe("\\lArr","\\Leftarrow");fe("\\Larr","\\Leftarrow");fe("\\lrarr","\\leftrightarrow");fe("\\lrArr","\\Leftrightarrow");fe("\\Lrarr","\\Leftrightarrow");fe("\\Mu","\\mathrm{M}");fe("\\natnums","\\mathbb{N}");fe("\\Nu","\\mathrm{N}");fe("\\Omicron","\\mathrm{O}");fe("\\plusmn","\\pm");fe("\\rarr","\\rightarrow");fe("\\rArr","\\Rightarrow");fe("\\Rarr","\\Rightarrow");fe("\\real","\\Re");fe("\\reals","\\mathbb{R}");fe("\\Reals","\\mathbb{R}");fe("\\Rho","\\mathrm{P}");fe("\\sdot","\\cdot");fe("\\sect","\\S");fe("\\spades","\\spadesuit");fe("\\sub","\\subset");fe("\\sube","\\subseteq");fe("\\supe","\\supseteq");fe("\\Tau","\\mathrm{T}");fe("\\thetasym","\\vartheta");fe("\\weierp","\\wp");fe("\\Zeta","\\mathrm{Z}");fe("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");fe("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");fe("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");fe("\\bra","\\mathinner{\\langle{#1}|}");fe("\\ket","\\mathinner{|{#1}\\rangle}");fe("\\braket","\\mathinner{\\langle{#1}\\rangle}");fe("\\Bra","\\left\\langle#1\\right|");fe("\\Ket","\\left|#1\\right\\rangle");DG=o(t=>e=>{var r=e.consumeArg().tokens,n=e.consumeArg().tokens,i=e.consumeArg().tokens,a=e.consumeArg().tokens,s=e.macros.get("|"),l=e.macros.get("\\|");e.macros.beginGroup();var u=o(d=>p=>{t&&(p.macros.set("|",s),i.length&&p.macros.set("\\|",l));var m=d;if(!d&&i.length){var g=p.future();g.text==="|"&&(p.popToken(),m=!0)}return{tokens:m?i:n,numArgs:0}},"midMacro");e.macros.set("|",u(!1)),i.length&&e.macros.set("\\|",u(!0));var h=e.consumeArg().tokens,f=e.expandTokens([...a,...h,...r]);return e.macros.endGroup(),{tokens:f.reverse(),numArgs:0}},"braketHelper");fe("\\bra@ket",DG(!1));fe("\\bra@set",DG(!0));fe("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");fe("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");fe("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");fe("\\angln","{\\angl n}");fe("\\blue","\\textcolor{##6495ed}{#1}");fe("\\orange","\\textcolor{##ffa500}{#1}");fe("\\pink","\\textcolor{##ff00af}{#1}");fe("\\red","\\textcolor{##df0030}{#1}");fe("\\green","\\textcolor{##28ae7b}{#1}");fe("\\gray","\\textcolor{gray}{#1}");fe("\\purple","\\textcolor{##9d38bd}{#1}");fe("\\blueA","\\textcolor{##ccfaff}{#1}");fe("\\blueB","\\textcolor{##80f6ff}{#1}");fe("\\blueC","\\textcolor{##63d9ea}{#1}");fe("\\blueD","\\textcolor{##11accd}{#1}");fe("\\blueE","\\textcolor{##0c7f99}{#1}");fe("\\tealA","\\textcolor{##94fff5}{#1}");fe("\\tealB","\\textcolor{##26edd5}{#1}");fe("\\tealC","\\textcolor{##01d1c1}{#1}");fe("\\tealD","\\textcolor{##01a995}{#1}");fe("\\tealE","\\textcolor{##208170}{#1}");fe("\\greenA","\\textcolor{##b6ffb0}{#1}");fe("\\greenB","\\textcolor{##8af281}{#1}");fe("\\greenC","\\textcolor{##74cf70}{#1}");fe("\\greenD","\\textcolor{##1fab54}{#1}");fe("\\greenE","\\textcolor{##0d923f}{#1}");fe("\\goldA","\\textcolor{##ffd0a9}{#1}");fe("\\goldB","\\textcolor{##ffbb71}{#1}");fe("\\goldC","\\textcolor{##ff9c39}{#1}");fe("\\goldD","\\textcolor{##e07d10}{#1}");fe("\\goldE","\\textcolor{##a75a05}{#1}");fe("\\redA","\\textcolor{##fca9a9}{#1}");fe("\\redB","\\textcolor{##ff8482}{#1}");fe("\\redC","\\textcolor{##f9685d}{#1}");fe("\\redD","\\textcolor{##e84d39}{#1}");fe("\\redE","\\textcolor{##bc2612}{#1}");fe("\\maroonA","\\textcolor{##ffbde0}{#1}");fe("\\maroonB","\\textcolor{##ff92c6}{#1}");fe("\\maroonC","\\textcolor{##ed5fa6}{#1}");fe("\\maroonD","\\textcolor{##ca337c}{#1}");fe("\\maroonE","\\textcolor{##9e034e}{#1}");fe("\\purpleA","\\textcolor{##ddd7ff}{#1}");fe("\\purpleB","\\textcolor{##c6b9fc}{#1}");fe("\\purpleC","\\textcolor{##aa87ff}{#1}");fe("\\purpleD","\\textcolor{##7854ab}{#1}");fe("\\purpleE","\\textcolor{##543b78}{#1}");fe("\\mintA","\\textcolor{##f5f9e8}{#1}");fe("\\mintB","\\textcolor{##edf2df}{#1}");fe("\\mintC","\\textcolor{##e0e5cc}{#1}");fe("\\grayA","\\textcolor{##f6f7f7}{#1}");fe("\\grayB","\\textcolor{##f0f1f2}{#1}");fe("\\grayC","\\textcolor{##e3e5e6}{#1}");fe("\\grayD","\\textcolor{##d6d8da}{#1}");fe("\\grayE","\\textcolor{##babec2}{#1}");fe("\\grayF","\\textcolor{##888d93}{#1}");fe("\\grayG","\\textcolor{##626569}{#1}");fe("\\grayH","\\textcolor{##3b3e40}{#1}");fe("\\grayI","\\textcolor{##21242c}{#1}");fe("\\kaBlue","\\textcolor{##314453}{#1}");fe("\\kaGreen","\\textcolor{##71B307}{#1}");LG={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},I7=class{static{o(this,"MacroExpander")}constructor(e,r,n){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=r,this.expansionCount=0,this.feed(e),this.macros=new M7(V4e,r.macros),this.mode=n,this.stack=[]}feed(e){this.lexer=new y3(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var r,n,i;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:i,end:n}=this.consumeArg(["]"])}else({tokens:i,start:r,end:n}=this.consumeArg());return this.pushToken(new So("EOF",n.loc)),this.pushTokens(i),r.range(n,"")}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var r=[],n=e&&e.length>0;n||this.consumeSpaces();var i=this.future(),a,s=0,l=0;do{if(a=this.popToken(),r.push(a),a.text==="{")++s;else if(a.text==="}"){if(--s,s===-1)throw new gt("Extra }",a)}else if(a.text==="EOF")throw new gt("Unexpected end of input in a macro argument, expected '"+(e&&n?e[l]:"}")+"'",a);if(e&&n)if((s===0||s===1&&e[l]==="{")&&a.text===e[l]){if(++l,l===e.length){r.splice(-l,l);break}}else l=0}while(s!==0||n);return i.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:i,end:a}}consumeArgs(e,r){if(r){if(r.length!==e+1)throw new gt("The length of delimiters doesn't match the number of args!");for(var n=r[0],i=0;ithis.settings.maxExpand)throw new gt("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var r=this.popToken(),n=r.text,i=r.noexpand?null:this._getExpansion(n);if(i==null||e&&i.unexpandable){if(e&&i==null&&n[0]==="\\"&&!this.isDefined(n))throw new gt("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var a=i.tokens,s=this.consumeArgs(i.numArgs,i.delimiters);if(i.numArgs){a=a.slice();for(var l=a.length-1;l>=0;--l){var u=a[l];if(u.text==="#"){if(l===0)throw new gt("Incomplete placeholder at end of macro body",u);if(u=a[--l],u.text==="#")a.splice(l+1,1);else if(/^[1-9]$/.test(u.text))a.splice(l,2,...s[+u.text-1]);else throw new gt("Not a valid argument number",u)}}}return this.pushTokens(a),a.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new So(e)]):void 0}expandTokens(e){var r=[],n=this.stack.length;for(this.pushTokens(e);this.stack.length>n;)if(this.expandOnce(!0)===!1){var i=this.stack.pop();i.treatAsRelax&&(i.noexpand=!1,i.treatAsRelax=!1),r.push(i)}return this.countExpansion(r.length),r}expandMacroAsText(e){var r=this.expandMacro(e);return r&&r.map(n=>n.text).join("")}_getExpansion(e){var r=this.macros.get(e);if(r==null)return r;if(e.length===1){var n=this.lexer.catcodes[e];if(n!=null&&n!==13)return}var i=typeof r=="function"?r(this):r;if(typeof i=="string"){var a=0;if(i.indexOf("#")!==-1)for(var s=i.replace(/##/g,"");s.indexOf("#"+(a+1))!==-1;)++a;for(var l=new y3(i,this.settings),u=[],h=l.lex();h.text!=="EOF";)u.push(h),h=l.lex();u.reverse();var f={tokens:u,numArgs:a};return f}return i}isDefined(e){return this.macros.has(e)||hh.hasOwnProperty(e)||An.math.hasOwnProperty(e)||An.text.hasOwnProperty(e)||LG.hasOwnProperty(e)}isExpandable(e){var r=this.macros.get(e);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:hh.hasOwnProperty(e)&&!hh[e].primitive}},Pz=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,l3=Object.freeze({"\u208A":"+","\u208B":"-","\u208C":"=","\u208D":"(","\u208E":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1D62":"i","\u2C7C":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209A":"p","\u1D63":"r","\u209B":"s","\u209C":"t","\u1D64":"u","\u1D65":"v","\u2093":"x","\u1D66":"\u03B2","\u1D67":"\u03B3","\u1D68":"\u03C1","\u1D69":"\u03D5","\u1D6A":"\u03C7","\u207A":"+","\u207B":"-","\u207C":"=","\u207D":"(","\u207E":")","\u2070":"0","\xB9":"1","\xB2":"2","\xB3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1D2C":"A","\u1D2E":"B","\u1D30":"D","\u1D31":"E","\u1D33":"G","\u1D34":"H","\u1D35":"I","\u1D36":"J","\u1D37":"K","\u1D38":"L","\u1D39":"M","\u1D3A":"N","\u1D3C":"O","\u1D3E":"P","\u1D3F":"R","\u1D40":"T","\u1D41":"U","\u2C7D":"V","\u1D42":"W","\u1D43":"a","\u1D47":"b","\u1D9C":"c","\u1D48":"d","\u1D49":"e","\u1DA0":"f","\u1D4D":"g",\u02B0:"h","\u2071":"i",\u02B2:"j","\u1D4F":"k",\u02E1:"l","\u1D50":"m",\u207F:"n","\u1D52":"o","\u1D56":"p",\u02B3:"r",\u02E2:"s","\u1D57":"t","\u1D58":"u","\u1D5B":"v",\u02B7:"w",\u02E3:"x",\u02B8:"y","\u1DBB":"z","\u1D5D":"\u03B2","\u1D5E":"\u03B3","\u1D5F":"\u03B4","\u1D60":"\u03D5","\u1D61":"\u03C7","\u1DBF":"\u03B8"}),T7={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030C":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030A":{text:"\\r",math:"\\mathring"},"\u030B":{text:"\\H"},"\u0327":{text:"\\c"}},Bz={\u00E1:"a\u0301",\u00E0:"a\u0300",\u00E4:"a\u0308",\u01DF:"a\u0308\u0304",\u00E3:"a\u0303",\u0101:"a\u0304",\u0103:"a\u0306",\u1EAF:"a\u0306\u0301",\u1EB1:"a\u0306\u0300",\u1EB5:"a\u0306\u0303",\u01CE:"a\u030C",\u00E2:"a\u0302",\u1EA5:"a\u0302\u0301",\u1EA7:"a\u0302\u0300",\u1EAB:"a\u0302\u0303",\u0227:"a\u0307",\u01E1:"a\u0307\u0304",\u00E5:"a\u030A",\u01FB:"a\u030A\u0301",\u1E03:"b\u0307",\u0107:"c\u0301",\u1E09:"c\u0327\u0301",\u010D:"c\u030C",\u0109:"c\u0302",\u010B:"c\u0307",\u00E7:"c\u0327",\u010F:"d\u030C",\u1E0B:"d\u0307",\u1E11:"d\u0327",\u00E9:"e\u0301",\u00E8:"e\u0300",\u00EB:"e\u0308",\u1EBD:"e\u0303",\u0113:"e\u0304",\u1E17:"e\u0304\u0301",\u1E15:"e\u0304\u0300",\u0115:"e\u0306",\u1E1D:"e\u0327\u0306",\u011B:"e\u030C",\u00EA:"e\u0302",\u1EBF:"e\u0302\u0301",\u1EC1:"e\u0302\u0300",\u1EC5:"e\u0302\u0303",\u0117:"e\u0307",\u0229:"e\u0327",\u1E1F:"f\u0307",\u01F5:"g\u0301",\u1E21:"g\u0304",\u011F:"g\u0306",\u01E7:"g\u030C",\u011D:"g\u0302",\u0121:"g\u0307",\u0123:"g\u0327",\u1E27:"h\u0308",\u021F:"h\u030C",\u0125:"h\u0302",\u1E23:"h\u0307",\u1E29:"h\u0327",\u00ED:"i\u0301",\u00EC:"i\u0300",\u00EF:"i\u0308",\u1E2F:"i\u0308\u0301",\u0129:"i\u0303",\u012B:"i\u0304",\u012D:"i\u0306",\u01D0:"i\u030C",\u00EE:"i\u0302",\u01F0:"j\u030C",\u0135:"j\u0302",\u1E31:"k\u0301",\u01E9:"k\u030C",\u0137:"k\u0327",\u013A:"l\u0301",\u013E:"l\u030C",\u013C:"l\u0327",\u1E3F:"m\u0301",\u1E41:"m\u0307",\u0144:"n\u0301",\u01F9:"n\u0300",\u00F1:"n\u0303",\u0148:"n\u030C",\u1E45:"n\u0307",\u0146:"n\u0327",\u00F3:"o\u0301",\u00F2:"o\u0300",\u00F6:"o\u0308",\u022B:"o\u0308\u0304",\u00F5:"o\u0303",\u1E4D:"o\u0303\u0301",\u1E4F:"o\u0303\u0308",\u022D:"o\u0303\u0304",\u014D:"o\u0304",\u1E53:"o\u0304\u0301",\u1E51:"o\u0304\u0300",\u014F:"o\u0306",\u01D2:"o\u030C",\u00F4:"o\u0302",\u1ED1:"o\u0302\u0301",\u1ED3:"o\u0302\u0300",\u1ED7:"o\u0302\u0303",\u022F:"o\u0307",\u0231:"o\u0307\u0304",\u0151:"o\u030B",\u1E55:"p\u0301",\u1E57:"p\u0307",\u0155:"r\u0301",\u0159:"r\u030C",\u1E59:"r\u0307",\u0157:"r\u0327",\u015B:"s\u0301",\u1E65:"s\u0301\u0307",\u0161:"s\u030C",\u1E67:"s\u030C\u0307",\u015D:"s\u0302",\u1E61:"s\u0307",\u015F:"s\u0327",\u1E97:"t\u0308",\u0165:"t\u030C",\u1E6B:"t\u0307",\u0163:"t\u0327",\u00FA:"u\u0301",\u00F9:"u\u0300",\u00FC:"u\u0308",\u01D8:"u\u0308\u0301",\u01DC:"u\u0308\u0300",\u01D6:"u\u0308\u0304",\u01DA:"u\u0308\u030C",\u0169:"u\u0303",\u1E79:"u\u0303\u0301",\u016B:"u\u0304",\u1E7B:"u\u0304\u0308",\u016D:"u\u0306",\u01D4:"u\u030C",\u00FB:"u\u0302",\u016F:"u\u030A",\u0171:"u\u030B",\u1E7D:"v\u0303",\u1E83:"w\u0301",\u1E81:"w\u0300",\u1E85:"w\u0308",\u0175:"w\u0302",\u1E87:"w\u0307",\u1E98:"w\u030A",\u1E8D:"x\u0308",\u1E8B:"x\u0307",\u00FD:"y\u0301",\u1EF3:"y\u0300",\u00FF:"y\u0308",\u1EF9:"y\u0303",\u0233:"y\u0304",\u0177:"y\u0302",\u1E8F:"y\u0307",\u1E99:"y\u030A",\u017A:"z\u0301",\u017E:"z\u030C",\u1E91:"z\u0302",\u017C:"z\u0307",\u00C1:"A\u0301",\u00C0:"A\u0300",\u00C4:"A\u0308",\u01DE:"A\u0308\u0304",\u00C3:"A\u0303",\u0100:"A\u0304",\u0102:"A\u0306",\u1EAE:"A\u0306\u0301",\u1EB0:"A\u0306\u0300",\u1EB4:"A\u0306\u0303",\u01CD:"A\u030C",\u00C2:"A\u0302",\u1EA4:"A\u0302\u0301",\u1EA6:"A\u0302\u0300",\u1EAA:"A\u0302\u0303",\u0226:"A\u0307",\u01E0:"A\u0307\u0304",\u00C5:"A\u030A",\u01FA:"A\u030A\u0301",\u1E02:"B\u0307",\u0106:"C\u0301",\u1E08:"C\u0327\u0301",\u010C:"C\u030C",\u0108:"C\u0302",\u010A:"C\u0307",\u00C7:"C\u0327",\u010E:"D\u030C",\u1E0A:"D\u0307",\u1E10:"D\u0327",\u00C9:"E\u0301",\u00C8:"E\u0300",\u00CB:"E\u0308",\u1EBC:"E\u0303",\u0112:"E\u0304",\u1E16:"E\u0304\u0301",\u1E14:"E\u0304\u0300",\u0114:"E\u0306",\u1E1C:"E\u0327\u0306",\u011A:"E\u030C",\u00CA:"E\u0302",\u1EBE:"E\u0302\u0301",\u1EC0:"E\u0302\u0300",\u1EC4:"E\u0302\u0303",\u0116:"E\u0307",\u0228:"E\u0327",\u1E1E:"F\u0307",\u01F4:"G\u0301",\u1E20:"G\u0304",\u011E:"G\u0306",\u01E6:"G\u030C",\u011C:"G\u0302",\u0120:"G\u0307",\u0122:"G\u0327",\u1E26:"H\u0308",\u021E:"H\u030C",\u0124:"H\u0302",\u1E22:"H\u0307",\u1E28:"H\u0327",\u00CD:"I\u0301",\u00CC:"I\u0300",\u00CF:"I\u0308",\u1E2E:"I\u0308\u0301",\u0128:"I\u0303",\u012A:"I\u0304",\u012C:"I\u0306",\u01CF:"I\u030C",\u00CE:"I\u0302",\u0130:"I\u0307",\u0134:"J\u0302",\u1E30:"K\u0301",\u01E8:"K\u030C",\u0136:"K\u0327",\u0139:"L\u0301",\u013D:"L\u030C",\u013B:"L\u0327",\u1E3E:"M\u0301",\u1E40:"M\u0307",\u0143:"N\u0301",\u01F8:"N\u0300",\u00D1:"N\u0303",\u0147:"N\u030C",\u1E44:"N\u0307",\u0145:"N\u0327",\u00D3:"O\u0301",\u00D2:"O\u0300",\u00D6:"O\u0308",\u022A:"O\u0308\u0304",\u00D5:"O\u0303",\u1E4C:"O\u0303\u0301",\u1E4E:"O\u0303\u0308",\u022C:"O\u0303\u0304",\u014C:"O\u0304",\u1E52:"O\u0304\u0301",\u1E50:"O\u0304\u0300",\u014E:"O\u0306",\u01D1:"O\u030C",\u00D4:"O\u0302",\u1ED0:"O\u0302\u0301",\u1ED2:"O\u0302\u0300",\u1ED6:"O\u0302\u0303",\u022E:"O\u0307",\u0230:"O\u0307\u0304",\u0150:"O\u030B",\u1E54:"P\u0301",\u1E56:"P\u0307",\u0154:"R\u0301",\u0158:"R\u030C",\u1E58:"R\u0307",\u0156:"R\u0327",\u015A:"S\u0301",\u1E64:"S\u0301\u0307",\u0160:"S\u030C",\u1E66:"S\u030C\u0307",\u015C:"S\u0302",\u1E60:"S\u0307",\u015E:"S\u0327",\u0164:"T\u030C",\u1E6A:"T\u0307",\u0162:"T\u0327",\u00DA:"U\u0301",\u00D9:"U\u0300",\u00DC:"U\u0308",\u01D7:"U\u0308\u0301",\u01DB:"U\u0308\u0300",\u01D5:"U\u0308\u0304",\u01D9:"U\u0308\u030C",\u0168:"U\u0303",\u1E78:"U\u0303\u0301",\u016A:"U\u0304",\u1E7A:"U\u0304\u0308",\u016C:"U\u0306",\u01D3:"U\u030C",\u00DB:"U\u0302",\u016E:"U\u030A",\u0170:"U\u030B",\u1E7C:"V\u0303",\u1E82:"W\u0301",\u1E80:"W\u0300",\u1E84:"W\u0308",\u0174:"W\u0302",\u1E86:"W\u0307",\u1E8C:"X\u0308",\u1E8A:"X\u0307",\u00DD:"Y\u0301",\u1EF2:"Y\u0300",\u0178:"Y\u0308",\u1EF8:"Y\u0303",\u0232:"Y\u0304",\u0176:"Y\u0302",\u1E8E:"Y\u0307",\u0179:"Z\u0301",\u017D:"Z\u030C",\u1E90:"Z\u0302",\u017B:"Z\u0307",\u03AC:"\u03B1\u0301",\u1F70:"\u03B1\u0300",\u1FB1:"\u03B1\u0304",\u1FB0:"\u03B1\u0306",\u03AD:"\u03B5\u0301",\u1F72:"\u03B5\u0300",\u03AE:"\u03B7\u0301",\u1F74:"\u03B7\u0300",\u03AF:"\u03B9\u0301",\u1F76:"\u03B9\u0300",\u03CA:"\u03B9\u0308",\u0390:"\u03B9\u0308\u0301",\u1FD2:"\u03B9\u0308\u0300",\u1FD1:"\u03B9\u0304",\u1FD0:"\u03B9\u0306",\u03CC:"\u03BF\u0301",\u1F78:"\u03BF\u0300",\u03CD:"\u03C5\u0301",\u1F7A:"\u03C5\u0300",\u03CB:"\u03C5\u0308",\u03B0:"\u03C5\u0308\u0301",\u1FE2:"\u03C5\u0308\u0300",\u1FE1:"\u03C5\u0304",\u1FE0:"\u03C5\u0306",\u03CE:"\u03C9\u0301",\u1F7C:"\u03C9\u0300",\u038E:"\u03A5\u0301",\u1FEA:"\u03A5\u0300",\u03AB:"\u03A5\u0308",\u1FE9:"\u03A5\u0304",\u1FE8:"\u03A5\u0306",\u038F:"\u03A9\u0301",\u1FFA:"\u03A9\u0300"},v3=class t{static{o(this,"Parser")}constructor(e,r){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 I7(e,r,this.mode),this.settings=r,this.leftrightDepth=0}expect(e,r){if(r===void 0&&(r=!0),this.fetch().text!==e)throw new gt("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){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()}}subparse(e){var r=this.nextToken;this.consume(),this.gullet.pushToken(new So("}")),this.gullet.pushTokens(e);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(e,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var i=this.fetch();if(t.endOfExpression.indexOf(i.text)!==-1||r&&i.text===r||e&&hh[i.text]&&hh[i.text].infix)break;var a=this.parseAtom(r);if(a){if(a.type==="internal")continue}else break;n.push(a)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(e){for(var r=-1,n,i=0;i=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+r[0]+'" used in math mode',e);var l=An[this.mode][r].group,u=Xs.range(e),h;if(Mbe.hasOwnProperty(l)){var f=l;h={type:"atom",mode:this.mode,family:f,loc:u,text:r}}else h={type:l,mode:this.mode,loc:u,text:r};s=h}else if(r.charCodeAt(0)>=128)this.settings.strict&&($z(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),e)),s={type:"textord",mode:"text",loc:Xs.range(e),text:r};else return null;if(this.consume(),a)for(var d=0;d{e instanceof Element&&e.tagName==="A"&&e.hasAttribute("target")&&e.setAttribute(t,e.getAttribute("target")??"")}),ch.addHook("afterSanitizeAttributes",e=>{e instanceof Element&&e.tagName==="A"&&e.hasAttribute(t)&&(e.setAttribute("target",e.getAttribute(t)??""),e.removeAttribute(t),e.getAttribute("target")==="_blank"&&e.setAttribute("rel","noopener"))})}var nd,Y4e,X4e,BG,OG,Tr,K4e,Q4e,Z4e,J4e,FG,e3e,fr,t3e,r3e,ec,J7,n3e,i3e,PG,eA,pi,id,mh,Ze,gr=N(()=>{"use strict";u7();nd=//gi,Y4e=o(t=>t?FG(t).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),X4e=(()=>{let t=!1;return()=>{t||(j4e(),t=!0)}})();o(j4e,"setupDompurifyHooks");BG=o(t=>(X4e(),ch.sanitize(t)),"removeScript"),OG=o((t,e)=>{if(e.flowchart?.htmlLabels!==!1){let r=e.securityLevel;r==="antiscript"||r==="strict"?t=BG(t):r!=="loose"&&(t=FG(t),t=t.replace(//g,">"),t=t.replace(/=/g,"="),t=J4e(t))}return t},"sanitizeMore"),Tr=o((t,e)=>t&&(e.dompurifyConfig?t=ch.sanitize(OG(t,e),e.dompurifyConfig).toString():t=ch.sanitize(OG(t,e),{FORBID_TAGS:["style"]}).toString(),t),"sanitizeText"),K4e=o((t,e)=>typeof t=="string"?Tr(t,e):t.flat().map(r=>Tr(r,e)),"sanitizeTextOrArray"),Q4e=o(t=>nd.test(t),"hasBreaks"),Z4e=o(t=>t.split(nd),"splitBreaks"),J4e=o(t=>t.replace(/#br#/g,"
"),"placeholderToBreak"),FG=o(t=>t.replace(nd,"#br#"),"breakToPlaceholder"),e3e=o(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},"getUrl"),fr=o(t=>!(t===!1||["false","null","0"].includes(String(t).trim().toLowerCase())),"evaluate"),t3e=o(function(...t){let e=t.filter(r=>!isNaN(r));return Math.max(...e)},"getMax"),r3e=o(function(...t){let e=t.filter(r=>!isNaN(r));return Math.min(...e)},"getMin"),ec=o(function(t){let e=t.split(/(,)/),r=[];for(let n=0;n0&&n+1Math.max(0,t.split(e).length-1),"countOccurrence"),n3e=o((t,e)=>{let r=J7(t,"~"),n=J7(e,"~");return r===1&&n===1},"shouldCombineSets"),i3e=o(t=>{let e=J7(t,"~"),r=!1;if(e<=1)return t;e%2!==0&&t.startsWith("~")&&(t=t.substring(1),r=!0);let n=[...t],i=n.indexOf("~"),a=n.lastIndexOf("~");for(;i!==-1&&a!==-1&&i!==a;)n[i]="<",n[a]=">",i=n.indexOf("~"),a=n.lastIndexOf("~");return r&&n.unshift("~"),n.join("")},"processSet"),PG=o(()=>window.MathMLElement!==void 0,"isMathMLSupported"),eA=/\$\$(.*)\$\$/g,pi=o(t=>(t.match(eA)?.length??0)>0,"hasKatex"),id=o(async(t,e)=>{t=await mh(t,e);let r=document.createElement("div");r.innerHTML=t,r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0",document.querySelector("body")?.insertAdjacentElement("beforeend",r);let i={width:r.clientWidth,height:r.clientHeight};return r.remove(),i},"calculateMathMLDimensions"),mh=o(async(t,e)=>{if(!pi(t))return t;if(!(PG()||e.legacyMathML||e.forceLegacyMathML))return t.replace(eA,"MathML is unsupported in this environment.");let{default:r}=await Promise.resolve().then(()=>(IG(),MG)),n=e.forceLegacyMathML||!PG()&&e.legacyMathML?"htmlAndMathml":"mathml";return t.split(nd).map(i=>pi(i)?`
${i}
`:`
${i}
`).join("").replace(eA,(i,a)=>r.renderToString(a,{throwOnError:!0,displayMode:!0,output:n}).replace(/\n/g," ").replace(//g,""))},"renderKatex"),Ze={getRows:Y4e,sanitizeText:Tr,sanitizeTextOrArray:K4e,hasBreaks:Q4e,splitBreaks:Z4e,lineBreakRegex:nd,removeScript:BG,getUrl:e3e,evaluate:fr,getMax:t3e,getMin:r3e}});var a3e,s3e,vn,Ao,Ei=N(()=>{"use strict";vt();a3e=o(function(t,e){for(let r of e)t.attr(r[0],r[1])},"d3Attrs"),s3e=o(function(t,e,r){let n=new Map;return r?(n.set("width","100%"),n.set("style",`max-width: ${e}px;`)):(n.set("height",t),n.set("width",e)),n},"calculateSvgSizeAttrs"),vn=o(function(t,e,r,n){let i=s3e(e,r,n);a3e(t,i)},"configureSvgSize"),Ao=o(function(t,e,r,n){let i=e.node().getBBox(),a=i.width,s=i.height;Y.info(`SVG bounds: ${a}x${s}`,i);let l=0,u=0;Y.info(`Graph bounds: ${l}x${u}`,t),l=a+r*2,u=s+r*2,Y.info(`Calculated bounds: ${l}x${u}`),vn(e,u,l,n);let h=`${i.x-r} ${i.y-r} ${i.width+2*r} ${i.height+2*r}`;e.attr("viewBox",h)},"setupGraphViewbox")});var S3,o3e,$G,zG,tA=N(()=>{"use strict";vt();S3={},o3e=o((t,e,r)=>{let n="";return t in S3&&S3[t]?n=S3[t](r):Y.warn(`No theme found for ${t}`),` & { + font-family: ${r.fontFamily}; + font-size: ${r.fontSize}; + fill: ${r.textColor} + } + @keyframes edge-animation-frame { + from { + stroke-dashoffset: 0; + } + } + @keyframes dash { + to { + stroke-dashoffset: 0; + } + } + & .edge-animation-slow { + stroke-dasharray: 9,5 !important; + stroke-dashoffset: 900; + animation: dash 50s linear infinite; + stroke-linecap: round; + } + & .edge-animation-fast { + stroke-dasharray: 9,5 !important; + stroke-dashoffset: 900; + animation: dash 20s linear infinite; + stroke-linecap: round; + } + /* Classes common for multiple diagrams */ + + & .error-icon { + fill: ${r.errorBkgColor}; + } + & .error-text { + fill: ${r.errorTextColor}; + stroke: ${r.errorTextColor}; + } + + & .edge-thickness-normal { + stroke-width: 1px; + } + & .edge-thickness-thick { + stroke-width: 3.5px + } + & .edge-pattern-solid { + stroke-dasharray: 0; + } + & .edge-thickness-invisible { + stroke-width: 0; + fill: none; + } + & .edge-pattern-dashed{ + stroke-dasharray: 3; + } + .edge-pattern-dotted { + stroke-dasharray: 2; + } + + & .marker { + fill: ${r.lineColor}; + stroke: ${r.lineColor}; + } + & .marker.cross { + stroke: ${r.lineColor}; + } + + & svg { + font-family: ${r.fontFamily}; + font-size: ${r.fontSize}; + } + & p { + margin: 0 + } + + ${n} + + ${e} +`},"getStyles"),$G=o((t,e)=>{e!==void 0&&(S3[t]=e)},"addStylesForDiagram"),zG=o3e});var qy={};hr(qy,{clear:()=>Ar,getAccDescription:()=>Mr,getAccTitle:()=>Rr,getDiagramTitle:()=>Ir,setAccDescription:()=>Nr,setAccTitle:()=>Lr,setDiagramTitle:()=>$r});var rA,nA,iA,aA,Ar,Lr,Rr,Nr,Mr,$r,Ir,mi=N(()=>{"use strict";gr();ji();rA="",nA="",iA="",aA=o(t=>Tr(t,cr()),"sanitizeText"),Ar=o(()=>{rA="",iA="",nA=""},"clear"),Lr=o(t=>{rA=aA(t).replace(/^\s+/g,"")},"setAccTitle"),Rr=o(()=>rA,"getAccTitle"),Nr=o(t=>{iA=aA(t).replace(/\n\s+/g,` +`)},"setAccDescription"),Mr=o(()=>iA,"getAccDescription"),$r=o(t=>{nA=aA(t)},"setDiagramTitle"),Ir=o(()=>nA,"getDiagramTitle")});var GG,l3e,me,Yy,A3,Xy,oA,c3e,C3,ad,jy,sA,zt=N(()=>{"use strict";Xf();vt();ji();gr();Ei();tA();mi();GG=Y,l3e=wy,me=cr,Yy=X4,A3=lh,Xy=o(t=>Tr(t,me()),"sanitizeText"),oA=Ao,c3e=o(()=>qy,"getCommonDb"),C3={},ad=o((t,e,r)=>{C3[t]&&GG.warn(`Diagram with id ${t} already registered. Overwriting.`),C3[t]=e,r&&FC(t,r),$G(t,e.styles),e.injectUtils?.(GG,l3e,me,Xy,oA,c3e(),()=>{})},"registerDiagram"),jy=o(t=>{if(t in C3)return C3[t];throw new sA(t)},"getDiagram"),sA=class extends Error{static{o(this,"DiagramNotFoundError")}constructor(e){super(`Diagram ${e} not found.`)}}});var ul,gh,Ja,cl,tc,Ky,lA,cA,_3,D3,VG,u3e,h3e,f3e,d3e,p3e,m3e,g3e,y3e,v3e,x3e,b3e,w3e,T3e,k3e,E3e,S3e,C3e,UG,A3e,_3e,HG,D3e,L3e,R3e,N3e,yh,M3e,I3e,O3e,P3e,B3e,Qy,uA=N(()=>{"use strict";zt();gr();mi();ul=[],gh=[""],Ja="global",cl="",tc=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Ky=[],lA="",cA=!1,_3=4,D3=2,u3e=o(function(){return VG},"getC4Type"),h3e=o(function(t){VG=Tr(t,me())},"setC4Type"),f3e=o(function(t,e,r,n,i,a,s,l,u){if(t==null||e===void 0||e===null||r===void 0||r===null||n===void 0||n===null)return;let h={},f=Ky.find(d=>d.from===e&&d.to===r);if(f?h=f:Ky.push(h),h.type=t,h.from=e,h.to=r,h.label={text:n},i==null)h.techn={text:""};else if(typeof i=="object"){let[d,p]=Object.entries(i)[0];h[d]={text:p}}else h.techn={text:i};if(a==null)h.descr={text:""};else if(typeof a=="object"){let[d,p]=Object.entries(a)[0];h[d]={text:p}}else h.descr={text:a};if(typeof s=="object"){let[d,p]=Object.entries(s)[0];h[d]=p}else h.sprite=s;if(typeof l=="object"){let[d,p]=Object.entries(l)[0];h[d]=p}else h.tags=l;if(typeof u=="object"){let[d,p]=Object.entries(u)[0];h[d]=p}else h.link=u;h.wrap=yh()},"addRel"),d3e=o(function(t,e,r,n,i,a,s){if(e===null||r===null)return;let l={},u=ul.find(h=>h.alias===e);if(u&&e===u.alias?l=u:(l.alias=e,ul.push(l)),r==null?l.label={text:""}:l.label={text:r},n==null)l.descr={text:""};else if(typeof n=="object"){let[h,f]=Object.entries(n)[0];l[h]={text:f}}else l.descr={text:n};if(typeof i=="object"){let[h,f]=Object.entries(i)[0];l[h]=f}else l.sprite=i;if(typeof a=="object"){let[h,f]=Object.entries(a)[0];l[h]=f}else l.tags=a;if(typeof s=="object"){let[h,f]=Object.entries(s)[0];l[h]=f}else l.link=s;l.typeC4Shape={text:t},l.parentBoundary=Ja,l.wrap=yh()},"addPersonOrSystem"),p3e=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=ul.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,ul.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof a=="object"){let[f,d]=Object.entries(a)[0];u[f]=d}else u.sprite=a;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.wrap=yh(),u.typeC4Shape={text:t},u.parentBoundary=Ja},"addContainer"),m3e=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=ul.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,ul.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof a=="object"){let[f,d]=Object.entries(a)[0];u[f]=d}else u.sprite=a;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.wrap=yh(),u.typeC4Shape={text:t},u.parentBoundary=Ja},"addComponent"),g3e=o(function(t,e,r,n,i){if(t===null||e===null)return;let a={},s=tc.find(l=>l.alias===t);if(s&&t===s.alias?a=s:(a.alias=t,tc.push(a)),e==null?a.label={text:""}:a.label={text:e},r==null)a.type={text:"system"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=Ja,a.wrap=yh(),cl=Ja,Ja=t,gh.push(cl)},"addPersonOrSystemBoundary"),y3e=o(function(t,e,r,n,i){if(t===null||e===null)return;let a={},s=tc.find(l=>l.alias===t);if(s&&t===s.alias?a=s:(a.alias=t,tc.push(a)),e==null?a.label={text:""}:a.label={text:e},r==null)a.type={text:"container"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=Ja,a.wrap=yh(),cl=Ja,Ja=t,gh.push(cl)},"addContainerBoundary"),v3e=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=tc.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,tc.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.type={text:"node"};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.type={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.nodeType=t,u.parentBoundary=Ja,u.wrap=yh(),cl=Ja,Ja=e,gh.push(cl)},"addDeploymentNode"),x3e=o(function(){Ja=cl,gh.pop(),cl=gh.pop(),gh.push(cl)},"popBoundaryParseStack"),b3e=o(function(t,e,r,n,i,a,s,l,u,h,f){let d=ul.find(p=>p.alias===e);if(!(d===void 0&&(d=tc.find(p=>p.alias===e),d===void 0))){if(r!=null)if(typeof r=="object"){let[p,m]=Object.entries(r)[0];d[p]=m}else d.bgColor=r;if(n!=null)if(typeof n=="object"){let[p,m]=Object.entries(n)[0];d[p]=m}else d.fontColor=n;if(i!=null)if(typeof i=="object"){let[p,m]=Object.entries(i)[0];d[p]=m}else d.borderColor=i;if(a!=null)if(typeof a=="object"){let[p,m]=Object.entries(a)[0];d[p]=m}else d.shadowing=a;if(s!=null)if(typeof s=="object"){let[p,m]=Object.entries(s)[0];d[p]=m}else d.shape=s;if(l!=null)if(typeof l=="object"){let[p,m]=Object.entries(l)[0];d[p]=m}else d.sprite=l;if(u!=null)if(typeof u=="object"){let[p,m]=Object.entries(u)[0];d[p]=m}else d.techn=u;if(h!=null)if(typeof h=="object"){let[p,m]=Object.entries(h)[0];d[p]=m}else d.legendText=h;if(f!=null)if(typeof f=="object"){let[p,m]=Object.entries(f)[0];d[p]=m}else d.legendSprite=f}},"updateElStyle"),w3e=o(function(t,e,r,n,i,a,s){let l=Ky.find(u=>u.from===e&&u.to===r);if(l!==void 0){if(n!=null)if(typeof n=="object"){let[u,h]=Object.entries(n)[0];l[u]=h}else l.textColor=n;if(i!=null)if(typeof i=="object"){let[u,h]=Object.entries(i)[0];l[u]=h}else l.lineColor=i;if(a!=null)if(typeof a=="object"){let[u,h]=Object.entries(a)[0];l[u]=parseInt(h)}else l.offsetX=parseInt(a);if(s!=null)if(typeof s=="object"){let[u,h]=Object.entries(s)[0];l[u]=parseInt(h)}else l.offsetY=parseInt(s)}},"updateRelStyle"),T3e=o(function(t,e,r){let n=_3,i=D3;if(typeof e=="object"){let a=Object.values(e)[0];n=parseInt(a)}else n=parseInt(e);if(typeof r=="object"){let a=Object.values(r)[0];i=parseInt(a)}else i=parseInt(r);n>=1&&(_3=n),i>=1&&(D3=i)},"updateLayoutConfig"),k3e=o(function(){return _3},"getC4ShapeInRow"),E3e=o(function(){return D3},"getC4BoundaryInRow"),S3e=o(function(){return Ja},"getCurrentBoundaryParse"),C3e=o(function(){return cl},"getParentBoundaryParse"),UG=o(function(t){return t==null?ul:ul.filter(e=>e.parentBoundary===t)},"getC4ShapeArray"),A3e=o(function(t){return ul.find(e=>e.alias===t)},"getC4Shape"),_3e=o(function(t){return Object.keys(UG(t))},"getC4ShapeKeys"),HG=o(function(t){return t==null?tc:tc.filter(e=>e.parentBoundary===t)},"getBoundaries"),D3e=HG,L3e=o(function(){return Ky},"getRels"),R3e=o(function(){return lA},"getTitle"),N3e=o(function(t){cA=t},"setWrap"),yh=o(function(){return cA},"autoWrap"),M3e=o(function(){ul=[],tc=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],cl="",Ja="global",gh=[""],Ky=[],gh=[""],lA="",cA=!1,_3=4,D3=2},"clear"),I3e={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},O3e={FILLED:0,OPEN:1},P3e={LEFTOF:0,RIGHTOF:1,OVER:2},B3e=o(function(t){lA=Tr(t,me())},"setTitle"),Qy={addPersonOrSystem:d3e,addPersonOrSystemBoundary:g3e,addContainer:p3e,addContainerBoundary:y3e,addComponent:m3e,addDeploymentNode:v3e,popBoundaryParseStack:x3e,addRel:f3e,updateElStyle:b3e,updateRelStyle:w3e,updateLayoutConfig:T3e,autoWrap:yh,setWrap:N3e,getC4ShapeArray:UG,getC4Shape:A3e,getC4ShapeKeys:_3e,getBoundaries:HG,getBoundarys:D3e,getCurrentBoundaryParse:S3e,getParentBoundaryParse:C3e,getRels:L3e,getTitle:R3e,getC4Type:u3e,getC4ShapeInRow:k3e,getC4BoundaryInRow:E3e,setAccTitle:Lr,getAccTitle:Rr,getAccDescription:Mr,setAccDescription:Nr,getConfig:o(()=>me().c4,"getConfig"),clear:M3e,LINETYPE:I3e,ARROWTYPE:O3e,PLACEMENT:P3e,setTitle:B3e,setC4Type:h3e}});function sd(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}var hA=N(()=>{"use strict";o(sd,"ascending")});function fA(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}var WG=N(()=>{"use strict";o(fA,"descending")});function od(t){let e,r,n;t.length!==2?(e=sd,r=o((l,u)=>sd(t(l),u),"compare2"),n=o((l,u)=>t(l)-u,"delta")):(e=t===sd||t===fA?t:F3e,r=t,n=t);function i(l,u,h=0,f=l.length){if(h>>1;r(l[d],u)<0?h=d+1:f=d}while(h>>1;r(l[d],u)<=0?h=d+1:f=d}while(hh&&n(l[d-1],u)>-n(l[d],u)?d-1:d}return o(s,"center"),{left:i,center:s,right:a}}function F3e(){return 0}var dA=N(()=>{"use strict";hA();WG();o(od,"bisector");o(F3e,"zero")});function pA(t){return t===null?NaN:+t}var qG=N(()=>{"use strict";o(pA,"number")});var YG,XG,$3e,z3e,mA,jG=N(()=>{"use strict";hA();dA();qG();YG=od(sd),XG=YG.right,$3e=YG.left,z3e=od(pA).center,mA=XG});function KG({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):r}function G3e({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):(t.set(n,r),r)}function V3e({_intern:t,_key:e},r){let n=e(r);return t.has(n)&&(r=t.get(n),t.delete(n)),r}function U3e(t){return t!==null&&typeof t=="object"?t.valueOf():t}var g0,QG=N(()=>{"use strict";g0=class extends Map{static{o(this,"InternMap")}constructor(e,r=U3e){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),e!=null)for(let[n,i]of e)this.set(n,i)}get(e){return super.get(KG(this,e))}has(e){return super.has(KG(this,e))}set(e,r){return super.set(G3e(this,e),r)}delete(e){return super.delete(V3e(this,e))}};o(KG,"intern_get");o(G3e,"intern_set");o(V3e,"intern_delete");o(U3e,"keyof")});function L3(t,e,r){let n=(e-t)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),s=a>=H3e?10:a>=W3e?5:a>=q3e?2:1,l,u,h;return i<0?(h=Math.pow(10,-i)/s,l=Math.round(t*h),u=Math.round(e*h),l/he&&--u,h=-h):(h=Math.pow(10,i)*s,l=Math.round(t/h),u=Math.round(e/h),l*he&&--u),u0))return[];if(t===e)return[t];let n=e=i))return[];let l=a-i+1,u=new Array(l);if(n)if(s<0)for(let h=0;h{"use strict";H3e=Math.sqrt(50),W3e=Math.sqrt(10),q3e=Math.sqrt(2);o(L3,"tickSpec");o(R3,"ticks");o(Zy,"tickIncrement");o(y0,"tickStep")});function N3(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r=i)&&(r=i)}return r}var JG=N(()=>{"use strict";o(N3,"max")});function M3(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var eV=N(()=>{"use strict";o(M3,"min")});function I3(t,e,r){t=+t,e=+e,r=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((e-t)/r))|0,a=new Array(i);++n{"use strict";o(I3,"range")});var vh=N(()=>{"use strict";jG();dA();JG();eV();tV();ZG();QG()});function gA(t){return t}var rV=N(()=>{"use strict";o(gA,"default")});function Y3e(t){return"translate("+t+",0)"}function X3e(t){return"translate(0,"+t+")"}function j3e(t){return e=>+t(e)}function K3e(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function Q3e(){return!this.__axis}function iV(t,e){var r=[],n=null,i=null,a=6,s=6,l=3,u=typeof window<"u"&&window.devicePixelRatio>1?0:.5,h=t===P3||t===O3?-1:1,f=t===O3||t===yA?"x":"y",d=t===P3||t===vA?Y3e:X3e;function p(m){var g=n??(e.ticks?e.ticks.apply(e,r):e.domain()),y=i??(e.tickFormat?e.tickFormat.apply(e,r):gA),v=Math.max(a,0)+l,x=e.range(),b=+x[0]+u,w=+x[x.length-1]+u,C=(e.bandwidth?K3e:j3e)(e.copy(),u),T=m.selection?m.selection():m,E=T.selectAll(".domain").data([null]),A=T.selectAll(".tick").data(g,e).order(),S=A.exit(),_=A.enter().append("g").attr("class","tick"),I=A.select("line"),D=A.select("text");E=E.merge(E.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),A=A.merge(_),I=I.merge(_.append("line").attr("stroke","currentColor").attr(f+"2",h*a)),D=D.merge(_.append("text").attr("fill","currentColor").attr(f,h*v).attr("dy",t===P3?"0em":t===vA?"0.71em":"0.32em")),m!==T&&(E=E.transition(m),A=A.transition(m),I=I.transition(m),D=D.transition(m),S=S.transition(m).attr("opacity",nV).attr("transform",function(k){return isFinite(k=C(k))?d(k+u):this.getAttribute("transform")}),_.attr("opacity",nV).attr("transform",function(k){var L=this.parentNode.__axis;return d((L&&isFinite(L=L(k))?L:C(k))+u)})),S.remove(),E.attr("d",t===O3||t===yA?s?"M"+h*s+","+b+"H"+u+"V"+w+"H"+h*s:"M"+u+","+b+"V"+w:s?"M"+b+","+h*s+"V"+u+"H"+w+"V"+h*s:"M"+b+","+u+"H"+w),A.attr("opacity",1).attr("transform",function(k){return d(C(k)+u)}),I.attr(f+"2",h*a),D.attr(f,h*v).text(y),T.filter(Q3e).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===yA?"start":t===O3?"end":"middle"),T.each(function(){this.__axis=C})}return o(p,"axis"),p.scale=function(m){return arguments.length?(e=m,p):e},p.ticks=function(){return r=Array.from(arguments),p},p.tickArguments=function(m){return arguments.length?(r=m==null?[]:Array.from(m),p):r.slice()},p.tickValues=function(m){return arguments.length?(n=m==null?null:Array.from(m),p):n&&n.slice()},p.tickFormat=function(m){return arguments.length?(i=m,p):i},p.tickSize=function(m){return arguments.length?(a=s=+m,p):a},p.tickSizeInner=function(m){return arguments.length?(a=+m,p):a},p.tickSizeOuter=function(m){return arguments.length?(s=+m,p):s},p.tickPadding=function(m){return arguments.length?(l=+m,p):l},p.offset=function(m){return arguments.length?(u=+m,p):u},p}function xA(t){return iV(P3,t)}function bA(t){return iV(vA,t)}var P3,yA,vA,O3,nV,aV=N(()=>{"use strict";rV();P3=1,yA=2,vA=3,O3=4,nV=1e-6;o(Y3e,"translateX");o(X3e,"translateY");o(j3e,"number");o(K3e,"center");o(Q3e,"entering");o(iV,"axis");o(xA,"axisTop");o(bA,"axisBottom")});var sV=N(()=>{"use strict";aV()});function lV(){for(var t=0,e=arguments.length,r={},n;t=0&&(n=r.slice(i+1),r=r.slice(0,i)),r&&!e.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}function e5e(t,e){for(var r=0,n=t.length,i;r{"use strict";Z3e={value:o(()=>{},"value")};o(lV,"dispatch");o(B3,"Dispatch");o(J3e,"parseTypenames");B3.prototype=lV.prototype={constructor:B3,on:o(function(t,e){var r=this._,n=J3e(t+"",r),i,a=-1,s=n.length;if(arguments.length<2){for(;++a0)for(var r=new Array(i),n=0,i,a;n{"use strict";cV()});var F3,kA,EA=N(()=>{"use strict";F3="http://www.w3.org/1999/xhtml",kA={svg:"http://www.w3.org/2000/svg",xhtml:F3,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}});function rc(t){var e=t+="",r=e.indexOf(":");return r>=0&&(e=t.slice(0,r))!=="xmlns"&&(t=t.slice(r+1)),kA.hasOwnProperty(e)?{space:kA[e],local:t}:t}var $3=N(()=>{"use strict";EA();o(rc,"default")});function t5e(t){return function(){var e=this.ownerDocument,r=this.namespaceURI;return r===F3&&e.documentElement.namespaceURI===F3?e.createElement(t):e.createElementNS(r,t)}}function r5e(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Jy(t){var e=rc(t);return(e.local?r5e:t5e)(e)}var SA=N(()=>{"use strict";$3();EA();o(t5e,"creatorInherit");o(r5e,"creatorFixed");o(Jy,"default")});function n5e(){}function xh(t){return t==null?n5e:function(){return this.querySelector(t)}}var z3=N(()=>{"use strict";o(n5e,"none");o(xh,"default")});function CA(t){typeof t!="function"&&(t=xh(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";hl();z3();o(CA,"default")});function AA(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}var hV=N(()=>{"use strict";o(AA,"array")});function i5e(){return[]}function v0(t){return t==null?i5e:function(){return this.querySelectorAll(t)}}var _A=N(()=>{"use strict";o(i5e,"empty");o(v0,"default")});function a5e(t){return function(){return AA(t.apply(this,arguments))}}function DA(t){typeof t=="function"?t=a5e(t):t=v0(t);for(var e=this._groups,r=e.length,n=[],i=[],a=0;a{"use strict";hl();hV();_A();o(a5e,"arrayAll");o(DA,"default")});function x0(t){return function(){return this.matches(t)}}function G3(t){return function(e){return e.matches(t)}}var ev=N(()=>{"use strict";o(x0,"default");o(G3,"childMatcher")});function o5e(t){return function(){return s5e.call(this.children,t)}}function l5e(){return this.firstElementChild}function LA(t){return this.select(t==null?l5e:o5e(typeof t=="function"?t:G3(t)))}var s5e,dV=N(()=>{"use strict";ev();s5e=Array.prototype.find;o(o5e,"childFind");o(l5e,"childFirst");o(LA,"default")});function u5e(){return Array.from(this.children)}function h5e(t){return function(){return c5e.call(this.children,t)}}function RA(t){return this.selectAll(t==null?u5e:h5e(typeof t=="function"?t:G3(t)))}var c5e,pV=N(()=>{"use strict";ev();c5e=Array.prototype.filter;o(u5e,"children");o(h5e,"childrenFilter");o(RA,"default")});function NA(t){typeof t!="function"&&(t=x0(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";hl();ev();o(NA,"default")});function tv(t){return new Array(t.length)}var MA=N(()=>{"use strict";o(tv,"default")});function IA(){return new oi(this._enter||this._groups.map(tv),this._parents)}function rv(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}var OA=N(()=>{"use strict";MA();hl();o(IA,"default");o(rv,"EnterNode");rv.prototype={constructor:rv,appendChild:o(function(t){return this._parent.insertBefore(t,this._next)},"appendChild"),insertBefore:o(function(t,e){return this._parent.insertBefore(t,e)},"insertBefore"),querySelector:o(function(t){return this._parent.querySelector(t)},"querySelector"),querySelectorAll:o(function(t){return this._parent.querySelectorAll(t)},"querySelectorAll")}});function PA(t){return function(){return t}}var gV=N(()=>{"use strict";o(PA,"default")});function f5e(t,e,r,n,i,a){for(var s=0,l,u=e.length,h=a.length;s=w&&(w=b+1);!(T=v[w])&&++w{"use strict";hl();OA();gV();o(f5e,"bindIndex");o(d5e,"bindKey");o(p5e,"datum");o(BA,"default");o(m5e,"arraylike")});function FA(){return new oi(this._exit||this._groups.map(tv),this._parents)}var vV=N(()=>{"use strict";MA();hl();o(FA,"default")});function $A(t,e,r){var n=this.enter(),i=this,a=this.exit();return typeof t=="function"?(n=t(n),n&&(n=n.selection())):n=n.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),r==null?a.remove():r(a),n&&i?n.merge(i).order():i}var xV=N(()=>{"use strict";o($A,"default")});function zA(t){for(var e=t.selection?t.selection():t,r=this._groups,n=e._groups,i=r.length,a=n.length,s=Math.min(i,a),l=new Array(i),u=0;u{"use strict";hl();o(zA,"default")});function GA(){for(var t=this._groups,e=-1,r=t.length;++e=0;)(s=n[i])&&(a&&s.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(s,a),a=s);return this}var wV=N(()=>{"use strict";o(GA,"default")});function VA(t){t||(t=g5e);function e(d,p){return d&&p?t(d.__data__,p.__data__):!d-!p}o(e,"compareNode");for(var r=this._groups,n=r.length,i=new Array(n),a=0;ae?1:t>=e?0:NaN}var TV=N(()=>{"use strict";hl();o(VA,"default");o(g5e,"ascending")});function UA(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}var kV=N(()=>{"use strict";o(UA,"default")});function HA(){return Array.from(this)}var EV=N(()=>{"use strict";o(HA,"default")});function WA(){for(var t=this._groups,e=0,r=t.length;e{"use strict";o(WA,"default")});function qA(){let t=0;for(let e of this)++t;return t}var CV=N(()=>{"use strict";o(qA,"default")});function YA(){return!this.node()}var AV=N(()=>{"use strict";o(YA,"default")});function XA(t){for(var e=this._groups,r=0,n=e.length;r{"use strict";o(XA,"default")});function y5e(t){return function(){this.removeAttribute(t)}}function v5e(t){return function(){this.removeAttributeNS(t.space,t.local)}}function x5e(t,e){return function(){this.setAttribute(t,e)}}function b5e(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function w5e(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttribute(t):this.setAttribute(t,r)}}function T5e(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function jA(t,e){var r=rc(t);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((e==null?r.local?v5e:y5e:typeof e=="function"?r.local?T5e:w5e:r.local?b5e:x5e)(r,e))}var DV=N(()=>{"use strict";$3();o(y5e,"attrRemove");o(v5e,"attrRemoveNS");o(x5e,"attrConstant");o(b5e,"attrConstantNS");o(w5e,"attrFunction");o(T5e,"attrFunctionNS");o(jA,"default")});function nv(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}var KA=N(()=>{"use strict";o(nv,"default")});function k5e(t){return function(){this.style.removeProperty(t)}}function E5e(t,e,r){return function(){this.style.setProperty(t,e,r)}}function S5e(t,e,r){return function(){var n=e.apply(this,arguments);n==null?this.style.removeProperty(t):this.style.setProperty(t,n,r)}}function QA(t,e,r){return arguments.length>1?this.each((e==null?k5e:typeof e=="function"?S5e:E5e)(t,e,r??"")):bh(this.node(),t)}function bh(t,e){return t.style.getPropertyValue(e)||nv(t).getComputedStyle(t,null).getPropertyValue(e)}var ZA=N(()=>{"use strict";KA();o(k5e,"styleRemove");o(E5e,"styleConstant");o(S5e,"styleFunction");o(QA,"default");o(bh,"styleValue")});function C5e(t){return function(){delete this[t]}}function A5e(t,e){return function(){this[t]=e}}function _5e(t,e){return function(){var r=e.apply(this,arguments);r==null?delete this[t]:this[t]=r}}function JA(t,e){return arguments.length>1?this.each((e==null?C5e:typeof e=="function"?_5e:A5e)(t,e)):this.node()[t]}var LV=N(()=>{"use strict";o(C5e,"propertyRemove");o(A5e,"propertyConstant");o(_5e,"propertyFunction");o(JA,"default")});function RV(t){return t.trim().split(/^|\s+/)}function e8(t){return t.classList||new NV(t)}function NV(t){this._node=t,this._names=RV(t.getAttribute("class")||"")}function MV(t,e){for(var r=e8(t),n=-1,i=e.length;++n{"use strict";o(RV,"classArray");o(e8,"classList");o(NV,"ClassList");NV.prototype={add:o(function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},"add"),remove:o(function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},"remove"),contains:o(function(t){return this._names.indexOf(t)>=0},"contains")};o(MV,"classedAdd");o(IV,"classedRemove");o(D5e,"classedTrue");o(L5e,"classedFalse");o(R5e,"classedFunction");o(t8,"default")});function N5e(){this.textContent=""}function M5e(t){return function(){this.textContent=t}}function I5e(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function r8(t){return arguments.length?this.each(t==null?N5e:(typeof t=="function"?I5e:M5e)(t)):this.node().textContent}var PV=N(()=>{"use strict";o(N5e,"textRemove");o(M5e,"textConstant");o(I5e,"textFunction");o(r8,"default")});function O5e(){this.innerHTML=""}function P5e(t){return function(){this.innerHTML=t}}function B5e(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function n8(t){return arguments.length?this.each(t==null?O5e:(typeof t=="function"?B5e:P5e)(t)):this.node().innerHTML}var BV=N(()=>{"use strict";o(O5e,"htmlRemove");o(P5e,"htmlConstant");o(B5e,"htmlFunction");o(n8,"default")});function F5e(){this.nextSibling&&this.parentNode.appendChild(this)}function i8(){return this.each(F5e)}var FV=N(()=>{"use strict";o(F5e,"raise");o(i8,"default")});function $5e(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function a8(){return this.each($5e)}var $V=N(()=>{"use strict";o($5e,"lower");o(a8,"default")});function s8(t){var e=typeof t=="function"?t:Jy(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}var zV=N(()=>{"use strict";SA();o(s8,"default")});function z5e(){return null}function o8(t,e){var r=typeof t=="function"?t:Jy(t),n=e==null?z5e:typeof e=="function"?e:xh(e);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}var GV=N(()=>{"use strict";SA();z3();o(z5e,"constantNull");o(o8,"default")});function G5e(){var t=this.parentNode;t&&t.removeChild(this)}function l8(){return this.each(G5e)}var VV=N(()=>{"use strict";o(G5e,"remove");o(l8,"default")});function V5e(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function U5e(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function c8(t){return this.select(t?U5e:V5e)}var UV=N(()=>{"use strict";o(V5e,"selection_cloneShallow");o(U5e,"selection_cloneDeep");o(c8,"default")});function u8(t){return arguments.length?this.property("__data__",t):this.node().__data__}var HV=N(()=>{"use strict";o(u8,"default")});function H5e(t){return function(e){t.call(this,e,this.__data__)}}function W5e(t){return t.trim().split(/^|\s+/).map(function(e){var r="",n=e.indexOf(".");return n>=0&&(r=e.slice(n+1),e=e.slice(0,n)),{type:e,name:r}})}function q5e(t){return function(){var e=this.__on;if(e){for(var r=0,n=-1,i=e.length,a;r{"use strict";o(H5e,"contextListener");o(W5e,"parseTypenames");o(q5e,"onRemove");o(Y5e,"onAdd");o(h8,"default")});function qV(t,e,r){var n=nv(t),i=n.CustomEvent;typeof i=="function"?i=new i(e,r):(i=n.document.createEvent("Event"),r?(i.initEvent(e,r.bubbles,r.cancelable),i.detail=r.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function X5e(t,e){return function(){return qV(this,t,e)}}function j5e(t,e){return function(){return qV(this,t,e.apply(this,arguments))}}function f8(t,e){return this.each((typeof e=="function"?j5e:X5e)(t,e))}var YV=N(()=>{"use strict";KA();o(qV,"dispatchEvent");o(X5e,"dispatchConstant");o(j5e,"dispatchFunction");o(f8,"default")});function*d8(){for(var t=this._groups,e=0,r=t.length;e{"use strict";o(d8,"default")});function oi(t,e){this._groups=t,this._parents=e}function jV(){return new oi([[document.documentElement]],p8)}function K5e(){return this}var p8,hu,hl=N(()=>{"use strict";uV();fV();dV();pV();mV();yV();OA();vV();xV();bV();wV();TV();kV();EV();SV();CV();AV();_V();DV();ZA();LV();OV();PV();BV();FV();$V();zV();GV();VV();UV();HV();WV();YV();XV();p8=[null];o(oi,"Selection");o(jV,"selection");o(K5e,"selection_selection");oi.prototype=jV.prototype={constructor:oi,select:CA,selectAll:DA,selectChild:LA,selectChildren:RA,filter:NA,data:BA,enter:IA,exit:FA,join:$A,merge:zA,selection:K5e,order:GA,sort:VA,call:UA,nodes:HA,node:WA,size:qA,empty:YA,each:XA,attr:jA,style:QA,property:JA,classed:t8,text:r8,html:n8,raise:i8,lower:a8,append:s8,insert:o8,remove:l8,clone:c8,datum:u8,on:h8,dispatch:f8,[Symbol.iterator]:d8};hu=jV});function Ge(t){return typeof t=="string"?new oi([[document.querySelector(t)]],[document.documentElement]):new oi([[t]],p8)}var KV=N(()=>{"use strict";hl();o(Ge,"default")});var fl=N(()=>{"use strict";ev();$3();KV();hl();z3();_A();ZA()});var QV=N(()=>{"use strict"});function wh(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function b0(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}var m8=N(()=>{"use strict";o(wh,"default");o(b0,"extend")});function Th(){}function JV(){return this.rgb().formatHex()}function iwe(){return this.rgb().formatHex8()}function awe(){return sU(this).formatHsl()}function eU(){return this.rgb().formatRgb()}function pl(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=Q5e.exec(t))?(r=e[1].length,e=parseInt(e[1],16),r===6?tU(e):r===3?new ua(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?V3(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?V3(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=Z5e.exec(t))?new ua(e[1],e[2],e[3],1):(e=J5e.exec(t))?new ua(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=ewe.exec(t))?V3(e[1],e[2],e[3],e[4]):(e=twe.exec(t))?V3(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=rwe.exec(t))?iU(e[1],e[2]/100,e[3]/100,1):(e=nwe.exec(t))?iU(e[1],e[2]/100,e[3]/100,e[4]):ZV.hasOwnProperty(t)?tU(ZV[t]):t==="transparent"?new ua(NaN,NaN,NaN,0):null}function tU(t){return new ua(t>>16&255,t>>8&255,t&255,1)}function V3(t,e,r,n){return n<=0&&(t=e=r=NaN),new ua(t,e,r,n)}function y8(t){return t instanceof Th||(t=pl(t)),t?(t=t.rgb(),new ua(t.r,t.g,t.b,t.opacity)):new ua}function T0(t,e,r,n){return arguments.length===1?y8(t):new ua(t,e,r,n??1)}function ua(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function rU(){return`#${ld(this.r)}${ld(this.g)}${ld(this.b)}`}function swe(){return`#${ld(this.r)}${ld(this.g)}${ld(this.b)}${ld((isNaN(this.opacity)?1:this.opacity)*255)}`}function nU(){let t=W3(this.opacity);return`${t===1?"rgb(":"rgba("}${cd(this.r)}, ${cd(this.g)}, ${cd(this.b)}${t===1?")":`, ${t})`}`}function W3(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function cd(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function ld(t){return t=cd(t),(t<16?"0":"")+t.toString(16)}function iU(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new dl(t,e,r,n)}function sU(t){if(t instanceof dl)return new dl(t.h,t.s,t.l,t.opacity);if(t instanceof Th||(t=pl(t)),!t)return new dl;if(t instanceof dl)return t;t=t.rgb();var e=t.r/255,r=t.g/255,n=t.b/255,i=Math.min(e,r,n),a=Math.max(e,r,n),s=NaN,l=a-i,u=(a+i)/2;return l?(e===a?s=(r-n)/l+(r0&&u<1?0:s,new dl(s,l,u,t.opacity)}function oU(t,e,r,n){return arguments.length===1?sU(t):new dl(t,e,r,n??1)}function dl(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function aU(t){return t=(t||0)%360,t<0?t+360:t}function U3(t){return Math.max(0,Math.min(1,t||0))}function g8(t,e,r){return(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)*255}var iv,H3,w0,av,nc,Q5e,Z5e,J5e,ewe,twe,rwe,nwe,ZV,v8=N(()=>{"use strict";m8();o(Th,"Color");iv=.7,H3=1/iv,w0="\\s*([+-]?\\d+)\\s*",av="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",nc="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Q5e=/^#([0-9a-f]{3,8})$/,Z5e=new RegExp(`^rgb\\(${w0},${w0},${w0}\\)$`),J5e=new RegExp(`^rgb\\(${nc},${nc},${nc}\\)$`),ewe=new RegExp(`^rgba\\(${w0},${w0},${w0},${av}\\)$`),twe=new RegExp(`^rgba\\(${nc},${nc},${nc},${av}\\)$`),rwe=new RegExp(`^hsl\\(${av},${nc},${nc}\\)$`),nwe=new RegExp(`^hsla\\(${av},${nc},${nc},${av}\\)$`),ZV={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};wh(Th,pl,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:JV,formatHex:JV,formatHex8:iwe,formatHsl:awe,formatRgb:eU,toString:eU});o(JV,"color_formatHex");o(iwe,"color_formatHex8");o(awe,"color_formatHsl");o(eU,"color_formatRgb");o(pl,"color");o(tU,"rgbn");o(V3,"rgba");o(y8,"rgbConvert");o(T0,"rgb");o(ua,"Rgb");wh(ua,T0,b0(Th,{brighter(t){return t=t==null?H3:Math.pow(H3,t),new ua(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?iv:Math.pow(iv,t),new ua(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ua(cd(this.r),cd(this.g),cd(this.b),W3(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:rU,formatHex:rU,formatHex8:swe,formatRgb:nU,toString:nU}));o(rU,"rgb_formatHex");o(swe,"rgb_formatHex8");o(nU,"rgb_formatRgb");o(W3,"clampa");o(cd,"clampi");o(ld,"hex");o(iU,"hsla");o(sU,"hslConvert");o(oU,"hsl");o(dl,"Hsl");wh(dl,oU,b0(Th,{brighter(t){return t=t==null?H3:Math.pow(H3,t),new dl(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?iv:Math.pow(iv,t),new dl(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new ua(g8(t>=240?t-240:t+120,i,n),g8(t,i,n),g8(t<120?t+240:t-120,i,n),this.opacity)},clamp(){return new dl(aU(this.h),U3(this.s),U3(this.l),W3(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(){let t=W3(this.opacity);return`${t===1?"hsl(":"hsla("}${aU(this.h)}, ${U3(this.s)*100}%, ${U3(this.l)*100}%${t===1?")":`, ${t})`}`}}));o(aU,"clamph");o(U3,"clampt");o(g8,"hsl2rgb")});var lU,cU,uU=N(()=>{"use strict";lU=Math.PI/180,cU=180/Math.PI});function gU(t){if(t instanceof ic)return new ic(t.l,t.a,t.b,t.opacity);if(t instanceof fu)return yU(t);t instanceof ua||(t=y8(t));var e=T8(t.r),r=T8(t.g),n=T8(t.b),i=x8((.2225045*e+.7168786*r+.0606169*n)/fU),a,s;return e===r&&r===n?a=s=i:(a=x8((.4360747*e+.3850649*r+.1430804*n)/hU),s=x8((.0139322*e+.0971045*r+.7141733*n)/dU)),new ic(116*i-16,500*(a-i),200*(i-s),t.opacity)}function k8(t,e,r,n){return arguments.length===1?gU(t):new ic(t,e,r,n??1)}function ic(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function x8(t){return t>owe?Math.pow(t,1/3):t/mU+pU}function b8(t){return t>k0?t*t*t:mU*(t-pU)}function w8(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function T8(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function lwe(t){if(t instanceof fu)return new fu(t.h,t.c,t.l,t.opacity);if(t instanceof ic||(t=gU(t)),t.a===0&&t.b===0)return new fu(NaN,0{"use strict";m8();v8();uU();q3=18,hU=.96422,fU=1,dU=.82521,pU=4/29,k0=6/29,mU=3*k0*k0,owe=k0*k0*k0;o(gU,"labConvert");o(k8,"lab");o(ic,"Lab");wh(ic,k8,b0(Th,{brighter(t){return new ic(this.l+q3*(t??1),this.a,this.b,this.opacity)},darker(t){return new ic(this.l-q3*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,r=isNaN(this.b)?t:t-this.b/200;return e=hU*b8(e),t=fU*b8(t),r=dU*b8(r),new ua(w8(3.1338561*e-1.6168667*t-.4906146*r),w8(-.9787684*e+1.9161415*t+.033454*r),w8(.0719453*e-.2289914*t+1.4052427*r),this.opacity)}}));o(x8,"xyz2lab");o(b8,"lab2xyz");o(w8,"lrgb2rgb");o(T8,"rgb2lrgb");o(lwe,"hclConvert");o(sv,"hcl");o(fu,"Hcl");o(yU,"hcl2lab");wh(fu,sv,b0(Th,{brighter(t){return new fu(this.h,this.c,this.l+q3*(t??1),this.opacity)},darker(t){return new fu(this.h,this.c,this.l-q3*(t??1),this.opacity)},rgb(){return yU(this).rgb()}}))});var E0=N(()=>{"use strict";v8();vU()});function E8(t,e,r,n,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*r+(1+3*t+3*a-3*s)*n+s*i)/6}function S8(t){var e=t.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,e-1):Math.floor(r*e),i=t[n],a=t[n+1],s=n>0?t[n-1]:2*i-a,l=n{"use strict";o(E8,"basis");o(S8,"default")});function A8(t){var e=t.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*e),i=t[(n+e-1)%e],a=t[n%e],s=t[(n+1)%e],l=t[(n+2)%e];return E8((r-n/e)*e,i,a,s,l)}}var xU=N(()=>{"use strict";C8();o(A8,"default")});var S0,_8=N(()=>{"use strict";S0=o(t=>()=>t,"default")});function bU(t,e){return function(r){return t+r*e}}function cwe(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}function wU(t,e){var r=e-t;return r?bU(t,r>180||r<-180?r-360*Math.round(r/360):r):S0(isNaN(t)?e:t)}function TU(t){return(t=+t)==1?du:function(e,r){return r-e?cwe(e,r,t):S0(isNaN(e)?r:e)}}function du(t,e){var r=e-t;return r?bU(t,r):S0(isNaN(t)?e:t)}var D8=N(()=>{"use strict";_8();o(bU,"linear");o(cwe,"exponential");o(wU,"hue");o(TU,"gamma");o(du,"nogamma")});function kU(t){return function(e){var r=e.length,n=new Array(r),i=new Array(r),a=new Array(r),s,l;for(s=0;s{"use strict";E0();C8();xU();D8();ud=o(function t(e){var r=TU(e);function n(i,a){var s=r((i=T0(i)).r,(a=T0(a)).r),l=r(i.g,a.g),u=r(i.b,a.b),h=du(i.opacity,a.opacity);return function(f){return i.r=s(f),i.g=l(f),i.b=u(f),i.opacity=h(f),i+""}}return o(n,"rgb"),n.gamma=t,n},"rgbGamma")(1);o(kU,"rgbSpline");uwe=kU(S8),hwe=kU(A8)});function R8(t,e){e||(e=[]);var r=t?Math.min(e.length,t.length):0,n=e.slice(),i;return function(a){for(i=0;i{"use strict";o(R8,"default");o(EU,"isNumberArray")});function CU(t,e){var r=e?e.length:0,n=t?Math.min(r,t.length):0,i=new Array(n),a=new Array(r),s;for(s=0;s{"use strict";Y3();o(CU,"genericArray")});function N8(t,e){var r=new Date;return t=+t,e=+e,function(n){return r.setTime(t*(1-n)+e*n),r}}var _U=N(()=>{"use strict";o(N8,"default")});function Ki(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}var ov=N(()=>{"use strict";o(Ki,"default")});function M8(t,e){var r={},n={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?r[i]=kh(t[i],e[i]):n[i]=e[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var DU=N(()=>{"use strict";Y3();o(M8,"default")});function fwe(t){return function(){return t}}function dwe(t){return function(e){return t(e)+""}}function C0(t,e){var r=O8.lastIndex=I8.lastIndex=0,n,i,a,s=-1,l=[],u=[];for(t=t+"",e=e+"";(n=O8.exec(t))&&(i=I8.exec(e));)(a=i.index)>r&&(a=e.slice(r,a),l[s]?l[s]+=a:l[++s]=a),(n=n[0])===(i=i[0])?l[s]?l[s]+=i:l[++s]=i:(l[++s]=null,u.push({i:s,x:Ki(n,i)})),r=I8.lastIndex;return r{"use strict";ov();O8=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,I8=new RegExp(O8.source,"g");o(fwe,"zero");o(dwe,"one");o(C0,"default")});function kh(t,e){var r=typeof e,n;return e==null||r==="boolean"?S0(e):(r==="number"?Ki:r==="string"?(n=pl(e))?(e=n,ud):C0:e instanceof pl?ud:e instanceof Date?N8:EU(e)?R8:Array.isArray(e)?CU:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?M8:Ki)(t,e)}var Y3=N(()=>{"use strict";E0();L8();AU();_U();ov();DU();P8();_8();SU();o(kh,"default")});function X3(t,e){return t=+t,e=+e,function(r){return Math.round(t*(1-r)+e*r)}}var LU=N(()=>{"use strict";o(X3,"default")});function K3(t,e,r,n,i,a){var s,l,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*r+e*n)&&(r-=t*u,n-=e*u),(l=Math.sqrt(r*r+n*n))&&(r/=l,n/=l,u/=l),t*n{"use strict";RU=180/Math.PI,j3={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};o(K3,"default")});function MU(t){let e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?j3:K3(e.a,e.b,e.c,e.d,e.e,e.f)}function IU(t){return t==null?j3:(Q3||(Q3=document.createElementNS("http://www.w3.org/2000/svg","g")),Q3.setAttribute("transform",t),(t=Q3.transform.baseVal.consolidate())?(t=t.matrix,K3(t.a,t.b,t.c,t.d,t.e,t.f)):j3)}var Q3,OU=N(()=>{"use strict";NU();o(MU,"parseCss");o(IU,"parseSvg")});function PU(t,e,r,n){function i(h){return h.length?h.pop()+" ":""}o(i,"pop");function a(h,f,d,p,m,g){if(h!==d||f!==p){var y=m.push("translate(",null,e,null,r);g.push({i:y-4,x:Ki(h,d)},{i:y-2,x:Ki(f,p)})}else(d||p)&&m.push("translate("+d+e+p+r)}o(a,"translate");function s(h,f,d,p){h!==f?(h-f>180?f+=360:f-h>180&&(h+=360),p.push({i:d.push(i(d)+"rotate(",null,n)-2,x:Ki(h,f)})):f&&d.push(i(d)+"rotate("+f+n)}o(s,"rotate");function l(h,f,d,p){h!==f?p.push({i:d.push(i(d)+"skewX(",null,n)-2,x:Ki(h,f)}):f&&d.push(i(d)+"skewX("+f+n)}o(l,"skewX");function u(h,f,d,p,m,g){if(h!==d||f!==p){var y=m.push(i(m)+"scale(",null,",",null,")");g.push({i:y-4,x:Ki(h,d)},{i:y-2,x:Ki(f,p)})}else(d!==1||p!==1)&&m.push(i(m)+"scale("+d+","+p+")")}return o(u,"scale"),function(h,f){var d=[],p=[];return h=t(h),f=t(f),a(h.translateX,h.translateY,f.translateX,f.translateY,d,p),s(h.rotate,f.rotate,d,p),l(h.skewX,f.skewX,d,p),u(h.scaleX,h.scaleY,f.scaleX,f.scaleY,d,p),h=f=null,function(m){for(var g=-1,y=p.length,v;++g{"use strict";ov();OU();o(PU,"interpolateTransform");B8=PU(MU,"px, ","px)","deg)"),F8=PU(IU,", ",")",")")});function FU(t){return function(e,r){var n=t((e=sv(e)).h,(r=sv(r)).h),i=du(e.c,r.c),a=du(e.l,r.l),s=du(e.opacity,r.opacity);return function(l){return e.h=n(l),e.c=i(l),e.l=a(l),e.opacity=s(l),e+""}}}var $8,pwe,$U=N(()=>{"use strict";E0();D8();o(FU,"hcl");$8=FU(wU),pwe=FU(du)});var A0=N(()=>{"use strict";Y3();ov();LU();P8();BU();L8();$U()});function dv(){return hd||(VU(mwe),hd=hv.now()+e5)}function mwe(){hd=0}function fv(){this._call=this._time=this._next=null}function t5(t,e,r){var n=new fv;return n.restart(t,e,r),n}function UU(){dv(),++_0;for(var t=Z3,e;t;)(e=hd-t._time)>=0&&t._call.call(void 0,e),t=t._next;--_0}function zU(){hd=(J3=hv.now())+e5,_0=cv=0;try{UU()}finally{_0=0,ywe(),hd=0}}function gwe(){var t=hv.now(),e=t-J3;e>GU&&(e5-=e,J3=t)}function ywe(){for(var t,e=Z3,r,n=1/0;e;)e._call?(n>e._time&&(n=e._time),t=e,e=e._next):(r=e._next,e._next=null,e=t?t._next=r:Z3=r);uv=t,z8(n)}function z8(t){if(!_0){cv&&(cv=clearTimeout(cv));var e=t-hd;e>24?(t<1/0&&(cv=setTimeout(zU,t-hv.now()-e5)),lv&&(lv=clearInterval(lv))):(lv||(J3=hv.now(),lv=setInterval(gwe,GU)),_0=1,VU(zU))}}var _0,cv,lv,GU,Z3,uv,J3,hd,e5,hv,VU,G8=N(()=>{"use strict";_0=0,cv=0,lv=0,GU=1e3,J3=0,hd=0,e5=0,hv=typeof performance=="object"&&performance.now?performance:Date,VU=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};o(dv,"now");o(mwe,"clearNow");o(fv,"Timer");fv.prototype=t5.prototype={constructor:fv,restart:o(function(t,e,r){if(typeof t!="function")throw new TypeError("callback is not a function");r=(r==null?dv():+r)+(e==null?0:+e),!this._next&&uv!==this&&(uv?uv._next=this:Z3=this,uv=this),this._call=t,this._time=r,z8()},"restart"),stop:o(function(){this._call&&(this._call=null,this._time=1/0,z8())},"stop")};o(t5,"timer");o(UU,"timerFlush");o(zU,"wake");o(gwe,"poke");o(ywe,"nap");o(z8,"sleep")});function pv(t,e,r){var n=new fv;return e=e==null?0:+e,n.restart(i=>{n.stop(),t(i+e)},e,r),n}var HU=N(()=>{"use strict";G8();o(pv,"default")});var r5=N(()=>{"use strict";G8();HU()});function pu(t,e,r,n,i,a){var s=t.__transition;if(!s)t.__transition={};else if(r in s)return;bwe(t,r,{name:e,index:n,group:i,on:vwe,tween:xwe,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:YU})}function gv(t,e){var r=Bi(t,e);if(r.state>YU)throw new Error("too late; already scheduled");return r}function ha(t,e){var r=Bi(t,e);if(r.state>n5)throw new Error("too late; already running");return r}function Bi(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function bwe(t,e,r){var n=t.__transition,i;n[e]=r,r.timer=t5(a,0,r.time);function a(h){r.state=WU,r.timer.restart(s,r.delay,r.time),r.delay<=h&&s(h-r.delay)}o(a,"schedule");function s(h){var f,d,p,m;if(r.state!==WU)return u();for(f in n)if(m=n[f],m.name===r.name){if(m.state===n5)return pv(s);m.state===qU?(m.state=mv,m.timer.stop(),m.on.call("interrupt",t,t.__data__,m.index,m.group),delete n[f]):+f{"use strict";TA();r5();vwe=wA("start","end","cancel","interrupt"),xwe=[],YU=0,WU=1,i5=2,n5=3,qU=4,a5=5,mv=6;o(pu,"default");o(gv,"init");o(ha,"set");o(Bi,"get");o(bwe,"create")});function yv(t,e){var r=t.__transition,n,i,a=!0,s;if(r){e=e==null?null:e+"";for(s in r){if((n=r[s]).name!==e){a=!1;continue}i=n.state>i5&&n.state{"use strict";Es();o(yv,"default")});function V8(t){return this.each(function(){yv(this,t)})}var jU=N(()=>{"use strict";XU();o(V8,"default")});function wwe(t,e){var r,n;return function(){var i=ha(this,t),a=i.tween;if(a!==r){n=r=a;for(var s=0,l=n.length;s{"use strict";Es();o(wwe,"tweenRemove");o(Twe,"tweenFunction");o(U8,"default");o(D0,"tweenValue")});function xv(t,e){var r;return(typeof e=="number"?Ki:e instanceof pl?ud:(r=pl(e))?(e=r,ud):C0)(t,e)}var H8=N(()=>{"use strict";E0();A0();o(xv,"default")});function kwe(t){return function(){this.removeAttribute(t)}}function Ewe(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Swe(t,e,r){var n,i=r+"",a;return function(){var s=this.getAttribute(t);return s===i?null:s===n?a:a=e(n=s,r)}}function Cwe(t,e,r){var n,i=r+"",a;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===n?a:a=e(n=s,r)}}function Awe(t,e,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttribute(t):(s=this.getAttribute(t),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l)))}}function _we(t,e,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l)))}}function W8(t,e){var r=rc(t),n=r==="transform"?F8:xv;return this.attrTween(t,typeof e=="function"?(r.local?_we:Awe)(r,n,D0(this,"attr."+t,e)):e==null?(r.local?Ewe:kwe)(r):(r.local?Cwe:Swe)(r,n,e))}var KU=N(()=>{"use strict";A0();fl();vv();H8();o(kwe,"attrRemove");o(Ewe,"attrRemoveNS");o(Swe,"attrConstant");o(Cwe,"attrConstantNS");o(Awe,"attrFunction");o(_we,"attrFunctionNS");o(W8,"default")});function Dwe(t,e){return function(r){this.setAttribute(t,e.call(this,r))}}function Lwe(t,e){return function(r){this.setAttributeNS(t.space,t.local,e.call(this,r))}}function Rwe(t,e){var r,n;function i(){var a=e.apply(this,arguments);return a!==n&&(r=(n=a)&&Lwe(t,a)),r}return o(i,"tween"),i._value=e,i}function Nwe(t,e){var r,n;function i(){var a=e.apply(this,arguments);return a!==n&&(r=(n=a)&&Dwe(t,a)),r}return o(i,"tween"),i._value=e,i}function q8(t,e){var r="attr."+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;var n=rc(t);return this.tween(r,(n.local?Rwe:Nwe)(n,e))}var QU=N(()=>{"use strict";fl();o(Dwe,"attrInterpolate");o(Lwe,"attrInterpolateNS");o(Rwe,"attrTweenNS");o(Nwe,"attrTween");o(q8,"default")});function Mwe(t,e){return function(){gv(this,t).delay=+e.apply(this,arguments)}}function Iwe(t,e){return e=+e,function(){gv(this,t).delay=e}}function Y8(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Mwe:Iwe)(e,t)):Bi(this.node(),e).delay}var ZU=N(()=>{"use strict";Es();o(Mwe,"delayFunction");o(Iwe,"delayConstant");o(Y8,"default")});function Owe(t,e){return function(){ha(this,t).duration=+e.apply(this,arguments)}}function Pwe(t,e){return e=+e,function(){ha(this,t).duration=e}}function X8(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Owe:Pwe)(e,t)):Bi(this.node(),e).duration}var JU=N(()=>{"use strict";Es();o(Owe,"durationFunction");o(Pwe,"durationConstant");o(X8,"default")});function Bwe(t,e){if(typeof e!="function")throw new Error;return function(){ha(this,t).ease=e}}function j8(t){var e=this._id;return arguments.length?this.each(Bwe(e,t)):Bi(this.node(),e).ease}var eH=N(()=>{"use strict";Es();o(Bwe,"easeConstant");o(j8,"default")});function Fwe(t,e){return function(){var r=e.apply(this,arguments);if(typeof r!="function")throw new Error;ha(this,t).ease=r}}function K8(t){if(typeof t!="function")throw new Error;return this.each(Fwe(this._id,t))}var tH=N(()=>{"use strict";Es();o(Fwe,"easeVarying");o(K8,"default")});function Q8(t){typeof t!="function"&&(t=x0(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";fl();fd();o(Q8,"default")});function Z8(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,r=t._groups,n=e.length,i=r.length,a=Math.min(n,i),s=new Array(n),l=0;l{"use strict";fd();o(Z8,"default")});function $we(t){return(t+"").trim().split(/^|\s+/).every(function(e){var r=e.indexOf(".");return r>=0&&(e=e.slice(0,r)),!e||e==="start"})}function zwe(t,e,r){var n,i,a=$we(e)?gv:ha;return function(){var s=a(this,t),l=s.on;l!==n&&(i=(n=l).copy()).on(e,r),s.on=i}}function J8(t,e){var r=this._id;return arguments.length<2?Bi(this.node(),r).on.on(t):this.each(zwe(r,t,e))}var iH=N(()=>{"use strict";Es();o($we,"start");o(zwe,"onFunction");o(J8,"default")});function Gwe(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}function e_(){return this.on("end.remove",Gwe(this._id))}var aH=N(()=>{"use strict";o(Gwe,"removeFunction");o(e_,"default")});function t_(t){var e=this._name,r=this._id;typeof t!="function"&&(t=xh(t));for(var n=this._groups,i=n.length,a=new Array(i),s=0;s{"use strict";fl();fd();Es();o(t_,"default")});function r_(t){var e=this._name,r=this._id;typeof t!="function"&&(t=v0(t));for(var n=this._groups,i=n.length,a=[],s=[],l=0;l{"use strict";fl();fd();Es();o(r_,"default")});function n_(){return new Vwe(this._groups,this._parents)}var Vwe,lH=N(()=>{"use strict";fl();Vwe=hu.prototype.constructor;o(n_,"default")});function Uwe(t,e){var r,n,i;return function(){var a=bh(this,t),s=(this.style.removeProperty(t),bh(this,t));return a===s?null:a===r&&s===n?i:i=e(r=a,n=s)}}function cH(t){return function(){this.style.removeProperty(t)}}function Hwe(t,e,r){var n,i=r+"",a;return function(){var s=bh(this,t);return s===i?null:s===n?a:a=e(n=s,r)}}function Wwe(t,e,r){var n,i,a;return function(){var s=bh(this,t),l=r(this),u=l+"";return l==null&&(u=l=(this.style.removeProperty(t),bh(this,t))),s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l))}}function qwe(t,e){var r,n,i,a="style."+e,s="end."+a,l;return function(){var u=ha(this,t),h=u.on,f=u.value[a]==null?l||(l=cH(e)):void 0;(h!==r||i!==f)&&(n=(r=h).copy()).on(s,i=f),u.on=n}}function i_(t,e,r){var n=(t+="")=="transform"?B8:xv;return e==null?this.styleTween(t,Uwe(t,n)).on("end.style."+t,cH(t)):typeof e=="function"?this.styleTween(t,Wwe(t,n,D0(this,"style."+t,e))).each(qwe(this._id,t)):this.styleTween(t,Hwe(t,n,e),r).on("end.style."+t,null)}var uH=N(()=>{"use strict";A0();fl();Es();vv();H8();o(Uwe,"styleNull");o(cH,"styleRemove");o(Hwe,"styleConstant");o(Wwe,"styleFunction");o(qwe,"styleMaybeRemove");o(i_,"default")});function Ywe(t,e,r){return function(n){this.style.setProperty(t,e.call(this,n),r)}}function Xwe(t,e,r){var n,i;function a(){var s=e.apply(this,arguments);return s!==i&&(n=(i=s)&&Ywe(t,s,r)),n}return o(a,"tween"),a._value=e,a}function a_(t,e,r){var n="style."+(t+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;return this.tween(n,Xwe(t,e,r??""))}var hH=N(()=>{"use strict";o(Ywe,"styleInterpolate");o(Xwe,"styleTween");o(a_,"default")});function jwe(t){return function(){this.textContent=t}}function Kwe(t){return function(){var e=t(this);this.textContent=e??""}}function s_(t){return this.tween("text",typeof t=="function"?Kwe(D0(this,"text",t)):jwe(t==null?"":t+""))}var fH=N(()=>{"use strict";vv();o(jwe,"textConstant");o(Kwe,"textFunction");o(s_,"default")});function Qwe(t){return function(e){this.textContent=t.call(this,e)}}function Zwe(t){var e,r;function n(){var i=t.apply(this,arguments);return i!==r&&(e=(r=i)&&Qwe(i)),e}return o(n,"tween"),n._value=t,n}function o_(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,Zwe(t))}var dH=N(()=>{"use strict";o(Qwe,"textInterpolate");o(Zwe,"textTween");o(o_,"default")});function l_(){for(var t=this._name,e=this._id,r=s5(),n=this._groups,i=n.length,a=0;a{"use strict";fd();Es();o(l_,"default")});function c_(){var t,e,r=this,n=r._id,i=r.size();return new Promise(function(a,s){var l={value:s},u={value:o(function(){--i===0&&a()},"value")};r.each(function(){var h=ha(this,n),f=h.on;f!==t&&(e=(t=f).copy(),e._.cancel.push(l),e._.interrupt.push(l),e._.end.push(u)),h.on=e}),i===0&&a()})}var mH=N(()=>{"use strict";Es();o(c_,"default")});function es(t,e,r,n){this._groups=t,this._parents=e,this._name=r,this._id=n}function gH(t){return hu().transition(t)}function s5(){return++Jwe}var Jwe,mu,fd=N(()=>{"use strict";fl();KU();QU();ZU();JU();eH();tH();rH();nH();iH();aH();sH();oH();lH();uH();hH();fH();dH();pH();vv();mH();Jwe=0;o(es,"Transition");o(gH,"transition");o(s5,"newId");mu=hu.prototype;es.prototype=gH.prototype={constructor:es,select:t_,selectAll:r_,selectChild:mu.selectChild,selectChildren:mu.selectChildren,filter:Q8,merge:Z8,selection:n_,transition:l_,call:mu.call,nodes:mu.nodes,node:mu.node,size:mu.size,empty:mu.empty,each:mu.each,on:J8,attr:W8,attrTween:q8,style:i_,styleTween:a_,text:s_,textTween:o_,remove:e_,tween:U8,delay:Y8,duration:X8,ease:j8,easeVarying:K8,end:c_,[Symbol.iterator]:mu[Symbol.iterator]}});function o5(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var yH=N(()=>{"use strict";o(o5,"cubicInOut")});var u_=N(()=>{"use strict";yH()});function tTe(t,e){for(var r;!(r=t.__transition)||!(r=r[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return r}function h_(t){var e,r;t instanceof es?(e=t._id,t=t._name):(e=s5(),(r=eTe).time=dv(),t=t==null?null:t+"");for(var n=this._groups,i=n.length,a=0;a{"use strict";fd();Es();u_();r5();eTe={time:null,delay:0,duration:250,ease:o5};o(tTe,"inherit");o(h_,"default")});var xH=N(()=>{"use strict";fl();jU();vH();hu.prototype.interrupt=V8;hu.prototype.transition=h_});var l5=N(()=>{"use strict";xH()});var bH=N(()=>{"use strict"});var wH=N(()=>{"use strict"});var TH=N(()=>{"use strict"});function kH(t){return[+t[0],+t[1]]}function rTe(t){return[kH(t[0]),kH(t[1])]}function f_(t){return{type:t}}var Z0t,J0t,emt,tmt,rmt,nmt,EH=N(()=>{"use strict";l5();bH();wH();TH();({abs:Z0t,max:J0t,min:emt}=Math);o(kH,"number1");o(rTe,"number2");tmt={name:"x",handles:["w","e"].map(f_),input:o(function(t,e){return t==null?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},"input"),output:o(function(t){return t&&[t[0][0],t[1][0]]},"output")},rmt={name:"y",handles:["n","s"].map(f_),input:o(function(t,e){return t==null?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},"input"),output:o(function(t){return t&&[t[0][1],t[1][1]]},"output")},nmt={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(f_),input:o(function(t){return t==null?null:rTe(t)},"input"),output:o(function(t){return t},"output")};o(f_,"type")});var SH=N(()=>{"use strict";EH()});function CH(t){this._+=t[0];for(let e=1,r=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return CH;let r=10**e;return function(n){this._+=n[0];for(let i=1,a=n.length;i{"use strict";d_=Math.PI,p_=2*d_,dd=1e-6,nTe=p_-dd;o(CH,"append");o(iTe,"appendRound");pd=class{static{o(this,"Path")}constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=e==null?CH:iTe(e)}moveTo(e,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,r){this._append`L${this._x1=+e},${this._y1=+r}`}quadraticCurveTo(e,r,n,i){this._append`Q${+e},${+r},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(e,r,n,i,a,s){this._append`C${+e},${+r},${+n},${+i},${this._x1=+a},${this._y1=+s}`}arcTo(e,r,n,i,a){if(e=+e,r=+r,n=+n,i=+i,a=+a,a<0)throw new Error(`negative radius: ${a}`);let s=this._x1,l=this._y1,u=n-e,h=i-r,f=s-e,d=l-r,p=f*f+d*d;if(this._x1===null)this._append`M${this._x1=e},${this._y1=r}`;else if(p>dd)if(!(Math.abs(d*u-h*f)>dd)||!a)this._append`L${this._x1=e},${this._y1=r}`;else{let m=n-s,g=i-l,y=u*u+h*h,v=m*m+g*g,x=Math.sqrt(y),b=Math.sqrt(p),w=a*Math.tan((d_-Math.acos((y+p-v)/(2*x*b)))/2),C=w/b,T=w/x;Math.abs(C-1)>dd&&this._append`L${e+C*f},${r+C*d}`,this._append`A${a},${a},0,0,${+(d*m>f*g)},${this._x1=e+T*u},${this._y1=r+T*h}`}}arc(e,r,n,i,a,s){if(e=+e,r=+r,n=+n,s=!!s,n<0)throw new Error(`negative radius: ${n}`);let l=n*Math.cos(i),u=n*Math.sin(i),h=e+l,f=r+u,d=1^s,p=s?i-a:a-i;this._x1===null?this._append`M${h},${f}`:(Math.abs(this._x1-h)>dd||Math.abs(this._y1-f)>dd)&&this._append`L${h},${f}`,n&&(p<0&&(p=p%p_+p_),p>nTe?this._append`A${n},${n},0,1,${d},${e-l},${r-u}A${n},${n},0,1,${d},${this._x1=h},${this._y1=f}`:p>dd&&this._append`A${n},${n},0,${+(p>=d_)},${d},${this._x1=e+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(e,r,n,i){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}};o(AH,"path");AH.prototype=pd.prototype});var m_=N(()=>{"use strict";_H()});var DH=N(()=>{"use strict"});var LH=N(()=>{"use strict"});var RH=N(()=>{"use strict"});var NH=N(()=>{"use strict"});var MH=N(()=>{"use strict"});var IH=N(()=>{"use strict"});var OH=N(()=>{"use strict"});function g_(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function md(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}var bv=N(()=>{"use strict";o(g_,"default");o(md,"formatDecimalParts")});function ml(t){return t=md(Math.abs(t)),t?t[1]:NaN}var wv=N(()=>{"use strict";bv();o(ml,"default")});function y_(t,e){return function(r,n){for(var i=r.length,a=[],s=0,l=t[0],u=0;i>0&&l>0&&(u+l+1>n&&(l=Math.max(1,n-u)),a.push(r.substring(i-=l,i+l)),!((u+=l+1)>n));)l=t[s=(s+1)%t.length];return a.reverse().join(e)}}var PH=N(()=>{"use strict";o(y_,"default")});function v_(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var BH=N(()=>{"use strict";o(v_,"default")});function Eh(t){if(!(e=aTe.exec(t)))throw new Error("invalid format: "+t);var e;return new c5({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 c5(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}var aTe,x_=N(()=>{"use strict";aTe=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;o(Eh,"formatSpecifier");Eh.prototype=c5.prototype;o(c5,"FormatSpecifier");c5.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type}});function b_(t){e:for(var e=t.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?t.slice(0,n)+t.slice(i+1):t}var FH=N(()=>{"use strict";o(b_,"default")});function T_(t,e){var r=md(t,e);if(!r)return t+"";var n=r[0],i=r[1],a=i-(w_=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=n.length;return a===s?n:a>s?n+new Array(a-s+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+md(t,Math.max(0,e+a-1))[0]}var w_,k_=N(()=>{"use strict";bv();o(T_,"default")});function u5(t,e){var r=md(t,e);if(!r)return t+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var $H=N(()=>{"use strict";bv();o(u5,"default")});var E_,zH=N(()=>{"use strict";bv();k_();$H();E_={"%":o((t,e)=>(t*100).toFixed(e),"%"),b:o(t=>Math.round(t).toString(2),"b"),c:o(t=>t+"","c"),d:g_,e:o((t,e)=>t.toExponential(e),"e"),f:o((t,e)=>t.toFixed(e),"f"),g:o((t,e)=>t.toPrecision(e),"g"),o:o(t=>Math.round(t).toString(8),"o"),p:o((t,e)=>u5(t*100,e),"p"),r:u5,s:T_,X:o(t=>Math.round(t).toString(16).toUpperCase(),"X"),x:o(t=>Math.round(t).toString(16),"x")}});function h5(t){return t}var GH=N(()=>{"use strict";o(h5,"default")});function S_(t){var e=t.grouping===void 0||t.thousands===void 0?h5:y_(VH.call(t.grouping,Number),t.thousands+""),r=t.currency===void 0?"":t.currency[0]+"",n=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",a=t.numerals===void 0?h5:v_(VH.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",l=t.minus===void 0?"\u2212":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function h(d){d=Eh(d);var p=d.fill,m=d.align,g=d.sign,y=d.symbol,v=d.zero,x=d.width,b=d.comma,w=d.precision,C=d.trim,T=d.type;T==="n"?(b=!0,T="g"):E_[T]||(w===void 0&&(w=12),C=!0,T="g"),(v||p==="0"&&m==="=")&&(v=!0,p="0",m="=");var E=y==="$"?r:y==="#"&&/[boxX]/.test(T)?"0"+T.toLowerCase():"",A=y==="$"?n:/[%p]/.test(T)?s:"",S=E_[T],_=/[defgprs%]/.test(T);w=w===void 0?6:/[gprs]/.test(T)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function I(D){var k=E,L=A,R,O,M;if(T==="c")L=S(D)+L,D="";else{D=+D;var B=D<0||1/D<0;if(D=isNaN(D)?u:S(Math.abs(D),w),C&&(D=b_(D)),B&&+D==0&&g!=="+"&&(B=!1),k=(B?g==="("?g:l:g==="-"||g==="("?"":g)+k,L=(T==="s"?UH[8+w_/3]:"")+L+(B&&g==="("?")":""),_){for(R=-1,O=D.length;++RM||M>57){L=(M===46?i+D.slice(R+1):D.slice(R))+L,D=D.slice(0,R);break}}}b&&!v&&(D=e(D,1/0));var F=k.length+D.length+L.length,P=F>1)+k+D+L+P.slice(F);break;default:D=P+k+D+L;break}return a(D)}return o(I,"format"),I.toString=function(){return d+""},I}o(h,"newFormat");function f(d,p){var m=h((d=Eh(d),d.type="f",d)),g=Math.max(-8,Math.min(8,Math.floor(ml(p)/3)))*3,y=Math.pow(10,-g),v=UH[8+g/3];return function(x){return m(y*x)+v}}return o(f,"formatPrefix"),{format:h,formatPrefix:f}}var VH,UH,HH=N(()=>{"use strict";wv();PH();BH();x_();FH();zH();k_();GH();VH=Array.prototype.map,UH=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];o(S_,"default")});function C_(t){return f5=S_(t),d5=f5.format,p5=f5.formatPrefix,f5}var f5,d5,p5,WH=N(()=>{"use strict";HH();C_({thousands:",",grouping:[3],currency:["$",""]});o(C_,"defaultLocale")});function m5(t){return Math.max(0,-ml(Math.abs(t)))}var qH=N(()=>{"use strict";wv();o(m5,"default")});function g5(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(ml(e)/3)))*3-ml(Math.abs(t)))}var YH=N(()=>{"use strict";wv();o(g5,"default")});function y5(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,ml(e)-ml(t))+1}var XH=N(()=>{"use strict";wv();o(y5,"default")});var A_=N(()=>{"use strict";WH();x_();qH();YH();XH()});var jH=N(()=>{"use strict"});var KH=N(()=>{"use strict"});var QH=N(()=>{"use strict"});var ZH=N(()=>{"use strict"});function Sh(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}var Tv=N(()=>{"use strict";o(Sh,"initRange")});function gu(){var t=new g0,e=[],r=[],n=__;function i(a){let s=t.get(a);if(s===void 0){if(n!==__)return n;t.set(a,s=e.push(a)-1)}return r[s%r.length]}return o(i,"scale"),i.domain=function(a){if(!arguments.length)return e.slice();e=[],t=new g0;for(let s of a)t.has(s)||t.set(s,e.push(s)-1);return i},i.range=function(a){return arguments.length?(r=Array.from(a),i):r.slice()},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return gu(e,r).unknown(n)},Sh.apply(i,arguments),i}var __,D_=N(()=>{"use strict";vh();Tv();__=Symbol("implicit");o(gu,"ordinal")});function L0(){var t=gu().unknown(void 0),e=t.domain,r=t.range,n=0,i=1,a,s,l=!1,u=0,h=0,f=.5;delete t.unknown;function d(){var p=e().length,m=i{"use strict";vh();Tv();D_();o(L0,"band")});function L_(t){return function(){return t}}var eW=N(()=>{"use strict";o(L_,"constants")});function R_(t){return+t}var tW=N(()=>{"use strict";o(R_,"number")});function R0(t){return t}function N_(t,e){return(e-=t=+t)?function(r){return(r-t)/e}:L_(isNaN(e)?NaN:.5)}function sTe(t,e){var r;return t>e&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function oTe(t,e,r){var n=t[0],i=t[1],a=e[0],s=e[1];return i2?lTe:oTe,u=h=null,d}o(f,"rescale");function d(p){return p==null||isNaN(p=+p)?a:(u||(u=l(t.map(n),e,r)))(n(s(p)))}return o(d,"scale"),d.invert=function(p){return s(i((h||(h=l(e,t.map(n),Ki)))(p)))},d.domain=function(p){return arguments.length?(t=Array.from(p,R_),f()):t.slice()},d.range=function(p){return arguments.length?(e=Array.from(p),f()):e.slice()},d.rangeRound=function(p){return e=Array.from(p),r=X3,f()},d.clamp=function(p){return arguments.length?(s=p?!0:R0,f()):s!==R0},d.interpolate=function(p){return arguments.length?(r=p,f()):r},d.unknown=function(p){return arguments.length?(a=p,d):a},function(p,m){return n=p,i=m,f()}}function kv(){return cTe()(R0,R0)}var rW,M_=N(()=>{"use strict";vh();A0();eW();tW();rW=[0,1];o(R0,"identity");o(N_,"normalize");o(sTe,"clamper");o(oTe,"bimap");o(lTe,"polymap");o(v5,"copy");o(cTe,"transformer");o(kv,"continuous")});function I_(t,e,r,n){var i=y0(t,e,r),a;switch(n=Eh(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(a=g5(i,s))&&(n.precision=a),p5(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=y5(i,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=m5(i))&&(n.precision=a-(n.type==="%")*2);break}}return d5(n)}var nW=N(()=>{"use strict";vh();A_();o(I_,"tickFormat")});function uTe(t){var e=t.domain;return t.ticks=function(r){var n=e();return R3(n[0],n[n.length-1],r??10)},t.tickFormat=function(r,n){var i=e();return I_(i[0],i[i.length-1],r??10,n)},t.nice=function(r){r==null&&(r=10);var n=e(),i=0,a=n.length-1,s=n[i],l=n[a],u,h,f=10;for(l0;){if(h=Zy(s,l,r),h===u)return n[i]=s,n[a]=l,e(n);if(h>0)s=Math.floor(s/h)*h,l=Math.ceil(l/h)*h;else if(h<0)s=Math.ceil(s*h)/h,l=Math.floor(l*h)/h;else break;u=h}return t},t}function gl(){var t=kv();return t.copy=function(){return v5(t,gl())},Sh.apply(t,arguments),uTe(t)}var iW=N(()=>{"use strict";vh();M_();Tv();nW();o(uTe,"linearish");o(gl,"linear")});function O_(t,e){t=t.slice();var r=0,n=t.length-1,i=t[r],a=t[n],s;return a{"use strict";o(O_,"nice")});function xn(t,e,r,n){function i(a){return t(a=arguments.length===0?new Date:new Date(+a)),a}return o(i,"interval"),i.floor=a=>(t(a=new Date(+a)),a),i.ceil=a=>(t(a=new Date(a-1)),e(a,1),t(a),a),i.round=a=>{let s=i(a),l=i.ceil(a);return a-s(e(a=new Date(+a),s==null?1:Math.floor(s)),a),i.range=(a,s,l)=>{let u=[];if(a=i.ceil(a),l=l==null?1:Math.floor(l),!(a0))return u;let h;do u.push(h=new Date(+a)),e(a,l),t(a);while(hxn(s=>{if(s>=s)for(;t(s),!a(s);)s.setTime(s-1)},(s,l)=>{if(s>=s)if(l<0)for(;++l<=0;)for(;e(s,-1),!a(s););else for(;--l>=0;)for(;e(s,1),!a(s););}),r&&(i.count=(a,s)=>(P_.setTime(+a),B_.setTime(+s),t(P_),t(B_),Math.floor(r(P_,B_))),i.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?i.filter(n?s=>n(s)%a===0:s=>i.count(0,s)%a===0):i)),i}var P_,B_,yu=N(()=>{"use strict";P_=new Date,B_=new Date;o(xn,"timeInterval")});var ac,sW,F_=N(()=>{"use strict";yu();ac=xn(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);ac.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?xn(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):ac);sW=ac.range});var Ks,oW,$_=N(()=>{"use strict";yu();Ks=xn(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),oW=Ks.range});var vu,hTe,x5,fTe,z_=N(()=>{"use strict";yu();vu=xn(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),hTe=vu.range,x5=xn(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),fTe=x5.range});var xu,dTe,b5,pTe,G_=N(()=>{"use strict";yu();xu=xn(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3-t.getMinutes()*6e4)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getHours()),dTe=xu.range,b5=xn(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),pTe=b5.range});var _o,mTe,Sv,gTe,w5,yTe,V_=N(()=>{"use strict";yu();_o=xn(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1),mTe=_o.range,Sv=xn(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),gTe=Sv.range,w5=xn(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),yTe=w5.range});function vd(t){return xn(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,r)=>{e.setDate(e.getDate()+r*7)},(e,r)=>(r-e-(r.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/6048e5)}function xd(t){return xn(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCDate(e.getUTCDate()+r*7)},(e,r)=>(r-e)/6048e5)}var yl,Ch,T5,k5,oc,E5,S5,cW,vTe,xTe,bTe,wTe,TTe,kTe,bd,N0,uW,hW,Ah,fW,dW,pW,ETe,STe,CTe,ATe,_Te,DTe,U_=N(()=>{"use strict";yu();o(vd,"timeWeekday");yl=vd(0),Ch=vd(1),T5=vd(2),k5=vd(3),oc=vd(4),E5=vd(5),S5=vd(6),cW=yl.range,vTe=Ch.range,xTe=T5.range,bTe=k5.range,wTe=oc.range,TTe=E5.range,kTe=S5.range;o(xd,"utcWeekday");bd=xd(0),N0=xd(1),uW=xd(2),hW=xd(3),Ah=xd(4),fW=xd(5),dW=xd(6),pW=bd.range,ETe=N0.range,STe=uW.range,CTe=hW.range,ATe=Ah.range,_Te=fW.range,DTe=dW.range});var bu,LTe,C5,RTe,H_=N(()=>{"use strict";yu();bu=xn(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth()),LTe=bu.range,C5=xn(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth()),RTe=C5.range});var Qs,NTe,vl,MTe,W_=N(()=>{"use strict";yu();Qs=xn(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());Qs.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:xn(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)});NTe=Qs.range,vl=xn(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());vl.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:xn(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)});MTe=vl.range});function gW(t,e,r,n,i,a){let s=[[Ks,1,1e3],[Ks,5,5*1e3],[Ks,15,15*1e3],[Ks,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[e,1,2592e6],[e,3,3*2592e6],[t,1,31536e6]];function l(h,f,d){let p=fv).right(s,p);if(m===s.length)return t.every(y0(h/31536e6,f/31536e6,d));if(m===0)return ac.every(Math.max(y0(h,f,d),1));let[g,y]=s[p/s[m-1][2]{"use strict";vh();F_();$_();z_();G_();V_();U_();H_();W_();o(gW,"ticker");[OTe,PTe]=gW(vl,C5,bd,w5,b5,x5),[q_,Y_]=gW(Qs,bu,yl,_o,xu,vu)});var A5=N(()=>{"use strict";F_();$_();z_();G_();V_();U_();H_();W_();yW()});function X_(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 j_(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 Cv(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function K_(t){var e=t.dateTime,r=t.date,n=t.time,i=t.periods,a=t.days,s=t.shortDays,l=t.months,u=t.shortMonths,h=Av(i),f=_v(i),d=Av(a),p=_v(a),m=Av(s),g=_v(s),y=Av(l),v=_v(l),x=Av(u),b=_v(u),w={a:B,A:F,b:P,B:z,c:null,d:kW,e:kW,f:ake,g:mke,G:yke,H:rke,I:nke,j:ike,L:_W,m:ske,M:oke,p:$,q:H,Q:CW,s:AW,S:lke,u:cke,U:uke,V:hke,w:fke,W:dke,x:null,X:null,y:pke,Y:gke,Z:vke,"%":SW},C={a:Q,A:j,b:ie,B:ne,c:null,d:EW,e:EW,f:Tke,g:Nke,G:Ike,H:xke,I:bke,j:wke,L:LW,m:kke,M:Eke,p:le,q:he,Q:CW,s:AW,S:Ske,u:Cke,U:Ake,V:_ke,w:Dke,W:Lke,x:null,X:null,y:Rke,Y:Mke,Z:Oke,"%":SW},T={a:I,A:D,b:k,B:L,c:R,d:wW,e:wW,f:ZTe,g:bW,G:xW,H:TW,I:TW,j:XTe,L:QTe,m:YTe,M:jTe,p:_,q:qTe,Q:eke,s:tke,S:KTe,u:GTe,U:VTe,V:UTe,w:zTe,W:HTe,x:O,X:M,y:bW,Y:xW,Z:WTe,"%":JTe};w.x=E(r,w),w.X=E(n,w),w.c=E(e,w),C.x=E(r,C),C.X=E(n,C),C.c=E(e,C);function E(K,X){return function(te){var J=[],se=-1,ue=0,Z=K.length,Se,ce,ae;for(te instanceof Date||(te=new Date(+te));++se53)return null;"w"in J||(J.w=1),"Z"in J?(ue=j_(Cv(J.y,0,1)),Z=ue.getUTCDay(),ue=Z>4||Z===0?N0.ceil(ue):N0(ue),ue=Sv.offset(ue,(J.V-1)*7),J.y=ue.getUTCFullYear(),J.m=ue.getUTCMonth(),J.d=ue.getUTCDate()+(J.w+6)%7):(ue=X_(Cv(J.y,0,1)),Z=ue.getDay(),ue=Z>4||Z===0?Ch.ceil(ue):Ch(ue),ue=_o.offset(ue,(J.V-1)*7),J.y=ue.getFullYear(),J.m=ue.getMonth(),J.d=ue.getDate()+(J.w+6)%7)}else("W"in J||"U"in J)&&("w"in J||(J.w="u"in J?J.u%7:"W"in J?1:0),Z="Z"in J?j_(Cv(J.y,0,1)).getUTCDay():X_(Cv(J.y,0,1)).getDay(),J.m=0,J.d="W"in J?(J.w+6)%7+J.W*7-(Z+5)%7:J.w+J.U*7-(Z+6)%7);return"Z"in J?(J.H+=J.Z/100|0,J.M+=J.Z%100,j_(J)):X_(J)}}o(A,"newParse");function S(K,X,te,J){for(var se=0,ue=X.length,Z=te.length,Se,ce;se=Z)return-1;if(Se=X.charCodeAt(se++),Se===37){if(Se=X.charAt(se++),ce=T[Se in vW?X.charAt(se++):Se],!ce||(J=ce(K,te,J))<0)return-1}else if(Se!=te.charCodeAt(J++))return-1}return J}o(S,"parseSpecifier");function _(K,X,te){var J=h.exec(X.slice(te));return J?(K.p=f.get(J[0].toLowerCase()),te+J[0].length):-1}o(_,"parsePeriod");function I(K,X,te){var J=m.exec(X.slice(te));return J?(K.w=g.get(J[0].toLowerCase()),te+J[0].length):-1}o(I,"parseShortWeekday");function D(K,X,te){var J=d.exec(X.slice(te));return J?(K.w=p.get(J[0].toLowerCase()),te+J[0].length):-1}o(D,"parseWeekday");function k(K,X,te){var J=x.exec(X.slice(te));return J?(K.m=b.get(J[0].toLowerCase()),te+J[0].length):-1}o(k,"parseShortMonth");function L(K,X,te){var J=y.exec(X.slice(te));return J?(K.m=v.get(J[0].toLowerCase()),te+J[0].length):-1}o(L,"parseMonth");function R(K,X,te){return S(K,e,X,te)}o(R,"parseLocaleDateTime");function O(K,X,te){return S(K,r,X,te)}o(O,"parseLocaleDate");function M(K,X,te){return S(K,n,X,te)}o(M,"parseLocaleTime");function B(K){return s[K.getDay()]}o(B,"formatShortWeekday");function F(K){return a[K.getDay()]}o(F,"formatWeekday");function P(K){return u[K.getMonth()]}o(P,"formatShortMonth");function z(K){return l[K.getMonth()]}o(z,"formatMonth");function $(K){return i[+(K.getHours()>=12)]}o($,"formatPeriod");function H(K){return 1+~~(K.getMonth()/3)}o(H,"formatQuarter");function Q(K){return s[K.getUTCDay()]}o(Q,"formatUTCShortWeekday");function j(K){return a[K.getUTCDay()]}o(j,"formatUTCWeekday");function ie(K){return u[K.getUTCMonth()]}o(ie,"formatUTCShortMonth");function ne(K){return l[K.getUTCMonth()]}o(ne,"formatUTCMonth");function le(K){return i[+(K.getUTCHours()>=12)]}o(le,"formatUTCPeriod");function he(K){return 1+~~(K.getUTCMonth()/3)}return o(he,"formatUTCQuarter"),{format:o(function(K){var X=E(K+="",w);return X.toString=function(){return K},X},"format"),parse:o(function(K){var X=A(K+="",!1);return X.toString=function(){return K},X},"parse"),utcFormat:o(function(K){var X=E(K+="",C);return X.toString=function(){return K},X},"utcFormat"),utcParse:o(function(K){var X=A(K+="",!0);return X.toString=function(){return K},X},"utcParse")}}function Wr(t,e,r){var n=t<0?"-":"",i=(n?-t:t)+"",a=i.length;return n+(a[e.toLowerCase(),r]))}function zTe(t,e,r){var n=Qi.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function GTe(t,e,r){var n=Qi.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function VTe(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function UTe(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function HTe(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function xW(t,e,r){var n=Qi.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function bW(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function WTe(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function qTe(t,e,r){var n=Qi.exec(e.slice(r,r+1));return n?(t.q=n[0]*3-3,r+n[0].length):-1}function YTe(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function wW(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function XTe(t,e,r){var n=Qi.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function TW(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function jTe(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function KTe(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function QTe(t,e,r){var n=Qi.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function ZTe(t,e,r){var n=Qi.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function JTe(t,e,r){var n=BTe.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function eke(t,e,r){var n=Qi.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function tke(t,e,r){var n=Qi.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function kW(t,e){return Wr(t.getDate(),e,2)}function rke(t,e){return Wr(t.getHours(),e,2)}function nke(t,e){return Wr(t.getHours()%12||12,e,2)}function ike(t,e){return Wr(1+_o.count(Qs(t),t),e,3)}function _W(t,e){return Wr(t.getMilliseconds(),e,3)}function ake(t,e){return _W(t,e)+"000"}function ske(t,e){return Wr(t.getMonth()+1,e,2)}function oke(t,e){return Wr(t.getMinutes(),e,2)}function lke(t,e){return Wr(t.getSeconds(),e,2)}function cke(t){var e=t.getDay();return e===0?7:e}function uke(t,e){return Wr(yl.count(Qs(t)-1,t),e,2)}function DW(t){var e=t.getDay();return e>=4||e===0?oc(t):oc.ceil(t)}function hke(t,e){return t=DW(t),Wr(oc.count(Qs(t),t)+(Qs(t).getDay()===4),e,2)}function fke(t){return t.getDay()}function dke(t,e){return Wr(Ch.count(Qs(t)-1,t),e,2)}function pke(t,e){return Wr(t.getFullYear()%100,e,2)}function mke(t,e){return t=DW(t),Wr(t.getFullYear()%100,e,2)}function gke(t,e){return Wr(t.getFullYear()%1e4,e,4)}function yke(t,e){var r=t.getDay();return t=r>=4||r===0?oc(t):oc.ceil(t),Wr(t.getFullYear()%1e4,e,4)}function vke(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Wr(e/60|0,"0",2)+Wr(e%60,"0",2)}function EW(t,e){return Wr(t.getUTCDate(),e,2)}function xke(t,e){return Wr(t.getUTCHours(),e,2)}function bke(t,e){return Wr(t.getUTCHours()%12||12,e,2)}function wke(t,e){return Wr(1+Sv.count(vl(t),t),e,3)}function LW(t,e){return Wr(t.getUTCMilliseconds(),e,3)}function Tke(t,e){return LW(t,e)+"000"}function kke(t,e){return Wr(t.getUTCMonth()+1,e,2)}function Eke(t,e){return Wr(t.getUTCMinutes(),e,2)}function Ske(t,e){return Wr(t.getUTCSeconds(),e,2)}function Cke(t){var e=t.getUTCDay();return e===0?7:e}function Ake(t,e){return Wr(bd.count(vl(t)-1,t),e,2)}function RW(t){var e=t.getUTCDay();return e>=4||e===0?Ah(t):Ah.ceil(t)}function _ke(t,e){return t=RW(t),Wr(Ah.count(vl(t),t)+(vl(t).getUTCDay()===4),e,2)}function Dke(t){return t.getUTCDay()}function Lke(t,e){return Wr(N0.count(vl(t)-1,t),e,2)}function Rke(t,e){return Wr(t.getUTCFullYear()%100,e,2)}function Nke(t,e){return t=RW(t),Wr(t.getUTCFullYear()%100,e,2)}function Mke(t,e){return Wr(t.getUTCFullYear()%1e4,e,4)}function Ike(t,e){var r=t.getUTCDay();return t=r>=4||r===0?Ah(t):Ah.ceil(t),Wr(t.getUTCFullYear()%1e4,e,4)}function Oke(){return"+0000"}function SW(){return"%"}function CW(t){return+t}function AW(t){return Math.floor(+t/1e3)}var vW,Qi,BTe,FTe,NW=N(()=>{"use strict";A5();o(X_,"localDate");o(j_,"utcDate");o(Cv,"newDate");o(K_,"formatLocale");vW={"-":"",_:" ",0:"0"},Qi=/^\s*\d+/,BTe=/^%/,FTe=/[\\^$*+?|[\]().{}]/g;o(Wr,"pad");o($Te,"requote");o(Av,"formatRe");o(_v,"formatLookup");o(zTe,"parseWeekdayNumberSunday");o(GTe,"parseWeekdayNumberMonday");o(VTe,"parseWeekNumberSunday");o(UTe,"parseWeekNumberISO");o(HTe,"parseWeekNumberMonday");o(xW,"parseFullYear");o(bW,"parseYear");o(WTe,"parseZone");o(qTe,"parseQuarter");o(YTe,"parseMonthNumber");o(wW,"parseDayOfMonth");o(XTe,"parseDayOfYear");o(TW,"parseHour24");o(jTe,"parseMinutes");o(KTe,"parseSeconds");o(QTe,"parseMilliseconds");o(ZTe,"parseMicroseconds");o(JTe,"parseLiteralPercent");o(eke,"parseUnixTimestamp");o(tke,"parseUnixTimestampSeconds");o(kW,"formatDayOfMonth");o(rke,"formatHour24");o(nke,"formatHour12");o(ike,"formatDayOfYear");o(_W,"formatMilliseconds");o(ake,"formatMicroseconds");o(ske,"formatMonthNumber");o(oke,"formatMinutes");o(lke,"formatSeconds");o(cke,"formatWeekdayNumberMonday");o(uke,"formatWeekNumberSunday");o(DW,"dISO");o(hke,"formatWeekNumberISO");o(fke,"formatWeekdayNumberSunday");o(dke,"formatWeekNumberMonday");o(pke,"formatYear");o(mke,"formatYearISO");o(gke,"formatFullYear");o(yke,"formatFullYearISO");o(vke,"formatZone");o(EW,"formatUTCDayOfMonth");o(xke,"formatUTCHour24");o(bke,"formatUTCHour12");o(wke,"formatUTCDayOfYear");o(LW,"formatUTCMilliseconds");o(Tke,"formatUTCMicroseconds");o(kke,"formatUTCMonthNumber");o(Eke,"formatUTCMinutes");o(Ske,"formatUTCSeconds");o(Cke,"formatUTCWeekdayNumberMonday");o(Ake,"formatUTCWeekNumberSunday");o(RW,"UTCdISO");o(_ke,"formatUTCWeekNumberISO");o(Dke,"formatUTCWeekdayNumberSunday");o(Lke,"formatUTCWeekNumberMonday");o(Rke,"formatUTCYear");o(Nke,"formatUTCYearISO");o(Mke,"formatUTCFullYear");o(Ike,"formatUTCFullYearISO");o(Oke,"formatUTCZone");o(SW,"formatLiteralPercent");o(CW,"formatUnixTimestamp");o(AW,"formatUnixTimestampSeconds")});function Q_(t){return M0=K_(t),wd=M0.format,MW=M0.parse,IW=M0.utcFormat,OW=M0.utcParse,M0}var M0,wd,MW,IW,OW,PW=N(()=>{"use strict";NW();Q_({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"]});o(Q_,"defaultLocale")});var Z_=N(()=>{"use strict";PW()});function Pke(t){return new Date(t)}function Bke(t){return t instanceof Date?+t:+new Date(+t)}function BW(t,e,r,n,i,a,s,l,u,h){var f=kv(),d=f.invert,p=f.domain,m=h(".%L"),g=h(":%S"),y=h("%I:%M"),v=h("%I %p"),x=h("%a %d"),b=h("%b %d"),w=h("%B"),C=h("%Y");function T(E){return(u(E){"use strict";A5();Z_();M_();Tv();aW();o(Pke,"date");o(Bke,"number");o(BW,"calendar");o(_5,"time")});var $W=N(()=>{"use strict";JH();iW();D_();FW()});function J_(t){for(var e=t.length/6|0,r=new Array(e),n=0;n{"use strict";o(J_,"default")});var e9,GW=N(()=>{"use strict";zW();e9=J_("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab")});var VW=N(()=>{"use strict";GW()});function Bn(t){return o(function(){return t},"constant")}var D5=N(()=>{"use strict";o(Bn,"default")});function HW(t){return t>1?0:t<-1?I0:Math.acos(t)}function r9(t){return t>=1?Dv:t<=-1?-Dv:Math.asin(t)}var t9,fa,_h,UW,L5,xl,Td,Zi,I0,Dv,O0,R5=N(()=>{"use strict";t9=Math.abs,fa=Math.atan2,_h=Math.cos,UW=Math.max,L5=Math.min,xl=Math.sin,Td=Math.sqrt,Zi=1e-12,I0=Math.PI,Dv=I0/2,O0=2*I0;o(HW,"acos");o(r9,"asin")});function N5(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(r==null)e=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);e=n}return t},()=>new pd(e)}var n9=N(()=>{"use strict";m_();o(N5,"withPath")});function Fke(t){return t.innerRadius}function $ke(t){return t.outerRadius}function zke(t){return t.startAngle}function Gke(t){return t.endAngle}function Vke(t){return t&&t.padAngle}function Uke(t,e,r,n,i,a,s,l){var u=r-t,h=n-e,f=s-i,d=l-a,p=d*u-f*h;if(!(p*pR*R+O*O&&(S=I,_=D),{cx:S,cy:_,x01:-f,y01:-d,x11:S*(i/T-1),y11:_*(i/T-1)}}function bl(){var t=Fke,e=$ke,r=Bn(0),n=null,i=zke,a=Gke,s=Vke,l=null,u=N5(h);function h(){var f,d,p=+t.apply(this,arguments),m=+e.apply(this,arguments),g=i.apply(this,arguments)-Dv,y=a.apply(this,arguments)-Dv,v=t9(y-g),x=y>g;if(l||(l=f=u()),mZi))l.moveTo(0,0);else if(v>O0-Zi)l.moveTo(m*_h(g),m*xl(g)),l.arc(0,0,m,g,y,!x),p>Zi&&(l.moveTo(p*_h(y),p*xl(y)),l.arc(0,0,p,y,g,x));else{var b=g,w=y,C=g,T=y,E=v,A=v,S=s.apply(this,arguments)/2,_=S>Zi&&(n?+n.apply(this,arguments):Td(p*p+m*m)),I=L5(t9(m-p)/2,+r.apply(this,arguments)),D=I,k=I,L,R;if(_>Zi){var O=r9(_/p*xl(S)),M=r9(_/m*xl(S));(E-=O*2)>Zi?(O*=x?1:-1,C+=O,T-=O):(E=0,C=T=(g+y)/2),(A-=M*2)>Zi?(M*=x?1:-1,b+=M,w-=M):(A=0,b=w=(g+y)/2)}var B=m*_h(b),F=m*xl(b),P=p*_h(T),z=p*xl(T);if(I>Zi){var $=m*_h(w),H=m*xl(w),Q=p*_h(C),j=p*xl(C),ie;if(vZi?k>Zi?(L=M5(Q,j,B,F,m,k,x),R=M5($,H,P,z,m,k,x),l.moveTo(L.cx+L.x01,L.cy+L.y01),kZi)||!(E>Zi)?l.lineTo(P,z):D>Zi?(L=M5(P,z,$,H,p,-D,x),R=M5(B,F,Q,j,p,-D,x),l.lineTo(L.cx+L.x01,L.cy+L.y01),D{"use strict";D5();R5();n9();o(Fke,"arcInnerRadius");o($ke,"arcOuterRadius");o(zke,"arcStartAngle");o(Gke,"arcEndAngle");o(Vke,"arcPadAngle");o(Uke,"intersect");o(M5,"cornerTangents");o(bl,"default")});function Lv(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}var Nyt,i9=N(()=>{"use strict";Nyt=Array.prototype.slice;o(Lv,"default")});function qW(t){this._context=t}function wu(t){return new qW(t)}var a9=N(()=>{"use strict";o(qW,"Linear");qW.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(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);break}},"point")};o(wu,"default")});function YW(t){return t[0]}function XW(t){return t[1]}var jW=N(()=>{"use strict";o(YW,"x");o(XW,"y")});function wl(t,e){var r=Bn(!0),n=null,i=wu,a=null,s=N5(l);t=typeof t=="function"?t:t===void 0?YW:Bn(t),e=typeof e=="function"?e:e===void 0?XW:Bn(e);function l(u){var h,f=(u=Lv(u)).length,d,p=!1,m;for(n==null&&(a=i(m=s())),h=0;h<=f;++h)!(h{"use strict";i9();D5();a9();n9();jW();o(wl,"default")});function s9(t,e){return et?1:e>=t?0:NaN}var QW=N(()=>{"use strict";o(s9,"default")});function o9(t){return t}var ZW=N(()=>{"use strict";o(o9,"default")});function I5(){var t=o9,e=s9,r=null,n=Bn(0),i=Bn(O0),a=Bn(0);function s(l){var u,h=(l=Lv(l)).length,f,d,p=0,m=new Array(h),g=new Array(h),y=+n.apply(this,arguments),v=Math.min(O0,Math.max(-O0,i.apply(this,arguments)-y)),x,b=Math.min(Math.abs(v)/h,a.apply(this,arguments)),w=b*(v<0?-1:1),C;for(u=0;u0&&(p+=C);for(e!=null?m.sort(function(T,E){return e(g[T],g[E])}):r!=null&&m.sort(function(T,E){return r(l[T],l[E])}),u=0,d=p?(v-h*w)/p:0;u0?C*d:0)+w,g[f]={data:l[f],index:u,value:C,startAngle:y,endAngle:x,padAngle:b};return g}return o(s,"pie"),s.value=function(l){return arguments.length?(t=typeof l=="function"?l:Bn(+l),s):t},s.sortValues=function(l){return arguments.length?(e=l,r=null,s):e},s.sort=function(l){return arguments.length?(r=l,e=null,s):r},s.startAngle=function(l){return arguments.length?(n=typeof l=="function"?l:Bn(+l),s):n},s.endAngle=function(l){return arguments.length?(i=typeof l=="function"?l:Bn(+l),s):i},s.padAngle=function(l){return arguments.length?(a=typeof l=="function"?l:Bn(+l),s):a},s}var JW=N(()=>{"use strict";i9();D5();QW();ZW();R5();o(I5,"default")});function Rv(t){return new O5(t,!0)}function Nv(t){return new O5(t,!1)}var O5,eq=N(()=>{"use strict";O5=class{static{o(this,"Bump")}constructor(e,r){this._context=e,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,r){switch(e=+e,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,r,e,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,e,this._y0,e,r);break}}this._x0=e,this._y0=r}};o(Rv,"bumpX");o(Nv,"bumpY")});function Zs(){}var Mv=N(()=>{"use strict";o(Zs,"default")});function P0(t,e,r){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+r)/6)}function Iv(t){this._context=t}function Do(t){return new Iv(t)}var Ov=N(()=>{"use strict";o(P0,"point");o(Iv,"Basis");Iv.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 3:P0(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(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:P0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(Do,"default")});function tq(t){this._context=t}function P5(t){return new tq(t)}var rq=N(()=>{"use strict";Mv();Ov();o(tq,"BasisClosed");tq.prototype={areaStart:Zs,areaEnd:Zs,lineStart:o(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},"lineStart"),lineEnd:o(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);break}}},"lineEnd"),point:o(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:P0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(P5,"default")});function nq(t){this._context=t}function B5(t){return new nq(t)}var iq=N(()=>{"use strict";Ov();o(nq,"BasisOpen");nq.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(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 r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:P0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(B5,"default")});function aq(t,e){this._basis=new Iv(t),this._beta=e}var l9,sq=N(()=>{"use strict";Ov();o(aq,"Bundle");aq.prototype={lineStart:o(function(){this._x=[],this._y=[],this._basis.lineStart()},"lineStart"),lineEnd:o(function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n=t[0],i=e[0],a=t[r]-n,s=e[r]-i,l=-1,u;++l<=r;)u=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(n+u*a),this._beta*e[l]+(1-this._beta)*(i+u*s));this._x=this._y=null,this._basis.lineEnd()},"lineEnd"),point:o(function(t,e){this._x.push(+t),this._y.push(+e)},"point")};l9=o(function t(e){function r(n){return e===1?new Iv(n):new aq(n,e)}return o(r,"bundle"),r.beta=function(n){return t(+n)},r},"custom")(.85)});function B0(t,e,r){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-r),t._x2,t._y2)}function F5(t,e){this._context=t,this._k=(1-e)/6}var Pv,Bv=N(()=>{"use strict";o(B0,"point");o(F5,"Cardinal");F5.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:B0(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(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:B0(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};Pv=o(function t(e){function r(n){return new F5(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r},"custom")(0)});function $5(t,e){this._context=t,this._k=(1-e)/6}var c9,u9=N(()=>{"use strict";Mv();Bv();o($5,"CardinalClosed");$5.prototype={areaStart:Zs,areaEnd:Zs,lineStart:o(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},"lineStart"),lineEnd:o(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);break}}},"lineEnd"),point:o(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:B0(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};c9=o(function t(e){function r(n){return new $5(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r},"custom")(0)});function z5(t,e){this._context=t,this._k=(1-e)/6}var h9,f9=N(()=>{"use strict";Bv();o(z5,"CardinalOpen");z5.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(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:B0(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};h9=o(function t(e){function r(n){return new z5(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r},"custom")(0)});function Fv(t,e,r){var n=t._x1,i=t._y1,a=t._x2,s=t._y2;if(t._l01_a>Zi){var l=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,u=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*l-t._x0*t._l12_2a+t._x2*t._l01_2a)/u,i=(i*l-t._y0*t._l12_2a+t._y2*t._l01_2a)/u}if(t._l23_a>Zi){var h=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,f=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*h+t._x1*t._l23_2a-e*t._l12_2a)/f,s=(s*h+t._y1*t._l23_2a-r*t._l12_2a)/f}t._context.bezierCurveTo(n,i,a,s,t._x2,t._y2)}function oq(t,e){this._context=t,this._alpha=e}var $v,G5=N(()=>{"use strict";R5();Bv();o(Fv,"point");o(oq,"CatmullRom");oq.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(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},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,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:Fv(this,t,e);break}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},"point")};$v=o(function t(e){function r(n){return e?new oq(n,e):new F5(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r},"custom")(.5)});function lq(t,e){this._context=t,this._alpha=e}var d9,cq=N(()=>{"use strict";u9();Mv();G5();o(lq,"CatmullRomClosed");lq.prototype={areaStart:Zs,areaEnd:Zs,lineStart:o(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},"lineStart"),lineEnd:o(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);break}}},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,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:Fv(this,t,e);break}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},"point")};d9=o(function t(e){function r(n){return e?new lq(n,e):new $5(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r},"custom")(.5)});function uq(t,e){this._context=t,this._alpha=e}var p9,hq=N(()=>{"use strict";f9();G5();o(uq,"CatmullRomOpen");uq.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(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},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,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:Fv(this,t,e);break}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},"point")};p9=o(function t(e){function r(n){return e?new uq(n,e):new z5(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r},"custom")(.5)});function fq(t){this._context=t}function V5(t){return new fq(t)}var dq=N(()=>{"use strict";Mv();o(fq,"LinearClosed");fq.prototype={areaStart:Zs,areaEnd:Zs,lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){this._point&&this._context.closePath()},"lineEnd"),point:o(function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))},"point")};o(V5,"default")});function pq(t){return t<0?-1:1}function mq(t,e,r){var n=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(n||i<0&&-0),s=(r-t._y1)/(i||n<0&&-0),l=(a*i+s*n)/(n+i);return(pq(a)+pq(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(l))||0}function gq(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function m9(t,e,r){var n=t._x0,i=t._y0,a=t._x1,s=t._y1,l=(a-n)/3;t._context.bezierCurveTo(n+l,i+l*e,a-l,s-l*r,a,s)}function U5(t){this._context=t}function yq(t){this._context=new vq(t)}function vq(t){this._context=t}function zv(t){return new U5(t)}function Gv(t){return new yq(t)}var xq=N(()=>{"use strict";o(pq,"sign");o(mq,"slope3");o(gq,"slope2");o(m9,"point");o(U5,"MonotoneX");U5.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:m9(this,this._t0,gq(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){var r=NaN;if(t=+t,e=+e,!(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,m9(this,gq(this,r=mq(this,t,e)),r);break;default:m9(this,this._t0,r=mq(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=r}},"point")};o(yq,"MonotoneY");(yq.prototype=Object.create(U5.prototype)).point=function(t,e){U5.prototype.point.call(this,e,t)};o(vq,"ReflectContext");vq.prototype={moveTo:o(function(t,e){this._context.moveTo(e,t)},"moveTo"),closePath:o(function(){this._context.closePath()},"closePath"),lineTo:o(function(t,e){this._context.lineTo(e,t)},"lineTo"),bezierCurveTo:o(function(t,e,r,n,i,a){this._context.bezierCurveTo(e,t,n,r,a,i)},"bezierCurveTo")};o(zv,"monotoneX");o(Gv,"monotoneY")});function wq(t){this._context=t}function bq(t){var e,r=t.length-1,n,i=new Array(r),a=new Array(r),s=new Array(r);for(i[0]=0,a[0]=2,s[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(s[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e{"use strict";o(wq,"Natural");wq.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=[],this._y=[]},"lineStart"),lineEnd:o(function(){var t=this._x,e=this._y,r=t.length;if(r)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),r===2)this._context.lineTo(t[1],e[1]);else for(var n=bq(t),i=bq(e),a=0,s=1;s{"use strict";o(H5,"Step");H5.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=this._y=NaN,this._point=0},"lineStart"),lineEnd:o(function(){0=0&&(this._t=1-this._t,this._line=1-this._line)},"lineEnd"),point:o(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 r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}break}}this._x=t,this._y=e},"point")};o($0,"default");o(Vv,"stepBefore");o(Uv,"stepAfter")});var Eq=N(()=>{"use strict";WW();KW();JW();rq();iq();Ov();eq();sq();u9();f9();Bv();cq();hq();G5();dq();a9();xq();Tq();kq()});var Sq=N(()=>{"use strict"});var Cq=N(()=>{"use strict"});function Dh(t,e,r){this.k=t,this.x=e,this.y=r}function y9(t){for(;!t.__zoom;)if(!(t=t.parentNode))return g9;return t.__zoom}var g9,v9=N(()=>{"use strict";o(Dh,"Transform");Dh.prototype={constructor:Dh,scale:o(function(t){return t===1?this:new Dh(this.k*t,this.x,this.y)},"scale"),translate:o(function(t,e){return t===0&e===0?this:new Dh(this.k,this.x+this.k*t,this.y+this.k*e)},"translate"),apply:o(function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},"apply"),applyX:o(function(t){return t*this.k+this.x},"applyX"),applyY:o(function(t){return t*this.k+this.y},"applyY"),invert:o(function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},"invert"),invertX:o(function(t){return(t-this.x)/this.k},"invertX"),invertY:o(function(t){return(t-this.y)/this.k},"invertY"),rescaleX:o(function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},"rescaleX"),rescaleY:o(function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},"rescaleY"),toString:o(function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"},"toString")};g9=new Dh(1,0,0);y9.prototype=Dh.prototype;o(y9,"transform")});var Aq=N(()=>{"use strict"});var _q=N(()=>{"use strict";l5();Sq();Cq();v9();Aq()});var Dq=N(()=>{"use strict";_q();v9()});var dr=N(()=>{"use strict";vh();sV();SH();DH();E0();LH();RH();TA();QV();NH();u_();MH();OH();A_();jH();KH();A0();m_();QH();IH();ZH();$W();VW();fl();Eq();A5();Z_();r5();l5();Dq()});var Lq=Mi(Ji=>{"use strict";Object.defineProperty(Ji,"__esModule",{value:!0});Ji.BLANK_URL=Ji.relativeFirstCharacters=Ji.whitespaceEscapeCharsRegex=Ji.urlSchemeRegex=Ji.ctrlCharactersRegex=Ji.htmlCtrlEntityRegex=Ji.htmlEntitiesRegex=Ji.invalidProtocolRegex=void 0;Ji.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;Ji.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g;Ji.htmlCtrlEntityRegex=/&(newline|tab);/gi;Ji.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;Ji.urlSchemeRegex=/^.+(:|:)/gim;Ji.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;Ji.relativeFirstCharacters=[".","/"];Ji.BLANK_URL="about:blank"});var z0=Mi(W5=>{"use strict";Object.defineProperty(W5,"__esModule",{value:!0});W5.sanitizeUrl=void 0;var Aa=Lq();function Hke(t){return Aa.relativeFirstCharacters.indexOf(t[0])>-1}o(Hke,"isRelativeUrlWithoutProtocol");function Wke(t){var e=t.replace(Aa.ctrlCharactersRegex,"");return e.replace(Aa.htmlEntitiesRegex,function(r,n){return String.fromCharCode(n)})}o(Wke,"decodeHtmlCharacters");function qke(t){return URL.canParse(t)}o(qke,"isValidUrl");function Rq(t){try{return decodeURIComponent(t)}catch{return t}}o(Rq,"decodeURI");function Yke(t){if(!t)return Aa.BLANK_URL;var e,r=Rq(t.trim());do r=Wke(r).replace(Aa.htmlCtrlEntityRegex,"").replace(Aa.ctrlCharactersRegex,"").replace(Aa.whitespaceEscapeCharsRegex,"").trim(),r=Rq(r),e=r.match(Aa.ctrlCharactersRegex)||r.match(Aa.htmlEntitiesRegex)||r.match(Aa.htmlCtrlEntityRegex)||r.match(Aa.whitespaceEscapeCharsRegex);while(e&&e.length>0);var n=r;if(!n)return Aa.BLANK_URL;if(Hke(n))return n;var i=n.trimStart(),a=i.match(Aa.urlSchemeRegex);if(!a)return n;var s=a[0].toLowerCase().trim();if(Aa.invalidProtocolRegex.test(s))return Aa.BLANK_URL;var l=i.replace(/\\/g,"/");if(s==="mailto:"||s.includes("://"))return l;if(s==="http:"||s==="https:"){if(!qke(l))return Aa.BLANK_URL;var u=new URL(l);return u.protocol=u.protocol.toLowerCase(),u.hostname=u.hostname.toLowerCase(),u.toString()}return l}o(Yke,"sanitizeUrl");W5.sanitizeUrl=Yke});var x9,kd,q5,Nq,Mq,Iq,Tl,Hv,Wv=N(()=>{"use strict";x9=Sa(z0(),1);gr();kd=o((t,e)=>{let r=t.append("rect");if(r.attr("x",e.x),r.attr("y",e.y),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("width",e.width),r.attr("height",e.height),e.name&&r.attr("name",e.name),e.rx&&r.attr("rx",e.rx),e.ry&&r.attr("ry",e.ry),e.attrs!==void 0)for(let n in e.attrs)r.attr(n,e.attrs[n]);return e.class&&r.attr("class",e.class),r},"drawRect"),q5=o((t,e)=>{let r={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};kd(t,r).lower()},"drawBackgroundRect"),Nq=o((t,e)=>{let r=e.text.replace(nd," "),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.attr("class","legend"),n.style("text-anchor",e.anchor),e.class&&n.attr("class",e.class);let i=n.append("tspan");return i.attr("x",e.x+e.textMargin*2),i.text(r),n},"drawText"),Mq=o((t,e,r,n)=>{let i=t.append("image");i.attr("x",e),i.attr("y",r);let a=(0,x9.sanitizeUrl)(n);i.attr("xlink:href",a)},"drawImage"),Iq=o((t,e,r,n)=>{let i=t.append("use");i.attr("x",e),i.attr("y",r);let a=(0,x9.sanitizeUrl)(n);i.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),Tl=o(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),Hv=o(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")});var Oq,b9,Pq,Xke,jke,Kke,Qke,Zke,Jke,eEe,tEe,rEe,nEe,iEe,aEe,Tu,kl,Bq=N(()=>{"use strict";gr();Wv();Oq=Sa(z0(),1),b9=o(function(t,e){return kd(t,e)},"drawRect"),Pq=o(function(t,e,r,n,i,a){let s=t.append("image");s.attr("width",e),s.attr("height",r),s.attr("x",n),s.attr("y",i);let l=a.startsWith("data:image/png;base64")?a:(0,Oq.sanitizeUrl)(a);s.attr("xlink:href",l)},"drawImage"),Xke=o((t,e,r)=>{let n=t.append("g"),i=0;for(let a of e){let s=a.textColor?a.textColor:"#444444",l=a.lineColor?a.lineColor:"#444444",u=a.offsetX?parseInt(a.offsetX):0,h=a.offsetY?parseInt(a.offsetY):0,f="";if(i===0){let p=n.append("line");p.attr("x1",a.startPoint.x),p.attr("y1",a.startPoint.y),p.attr("x2",a.endPoint.x),p.attr("y2",a.endPoint.y),p.attr("stroke-width","1"),p.attr("stroke",l),p.style("fill","none"),a.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)"),i=-1}else{let p=n.append("path");p.attr("fill","none").attr("stroke-width","1").attr("stroke",l).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",a.startPoint.x).replaceAll("starty",a.startPoint.y).replaceAll("controlx",a.startPoint.x+(a.endPoint.x-a.startPoint.x)/2-(a.endPoint.x-a.startPoint.x)/4).replaceAll("controly",a.startPoint.y+(a.endPoint.y-a.startPoint.y)/2).replaceAll("stopx",a.endPoint.x).replaceAll("stopy",a.endPoint.y)),a.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)")}let d=r.messageFont();Tu(r)(a.label.text,n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+u,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+h,a.label.width,a.label.height,{fill:s},d),a.techn&&a.techn.text!==""&&(d=r.messageFont(),Tu(r)("["+a.techn.text+"]",n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+u,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+r.messageFontSize+5+h,Math.max(a.label.width,a.techn.width),a.techn.height,{fill:s,"font-style":"italic"},d))}},"drawRels"),jke=o(function(t,e,r){let n=t.append("g"),i=e.bgColor?e.bgColor:"none",a=e.borderColor?e.borderColor:"#444444",s=e.fontColor?e.fontColor:"black",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};e.nodeType&&(l={"stroke-width":1});let u={x:e.x,y:e.y,fill:i,stroke:a,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:l};b9(n,u);let h=r.boundaryFont();h.fontWeight="bold",h.fontSize=h.fontSize+2,h.fontColor=s,Tu(r)(e.label.text,n,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},h),e.type&&e.type.text!==""&&(h=r.boundaryFont(),h.fontColor=s,Tu(r)(e.type.text,n,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},h)),e.descr&&e.descr.text!==""&&(h=r.boundaryFont(),h.fontSize=h.fontSize-2,h.fontColor=s,Tu(r)(e.descr.text,n,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},h))},"drawBoundary"),Kke=o(function(t,e,r){let n=e.bgColor?e.bgColor:r[e.typeC4Shape.text+"_bg_color"],i=e.borderColor?e.borderColor:r[e.typeC4Shape.text+"_border_color"],a=e.fontColor?e.fontColor:"#FFFFFF",s="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":s="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":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}let l=t.append("g");l.attr("class","person-man");let u=Tl();switch(e.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":u.x=e.x,u.y=e.y,u.fill=n,u.width=e.width,u.height=e.height,u.stroke=i,u.rx=2.5,u.ry=2.5,u.attrs={"stroke-width":.5},b9(l,u);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":l.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).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)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).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":l.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).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)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).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));break}let h=aEe(r,e.typeC4Shape.text);switch(l.append("text").attr("fill",a).attr("font-family",h.fontFamily).attr("font-size",h.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":Pq(l,48,48,e.x+e.width/2-24,e.y+e.image.Y,s);break}let f=r[e.typeC4Shape.text+"Font"]();return f.fontWeight="bold",f.fontSize=f.fontSize+2,f.fontColor=a,Tu(r)(e.label.text,l,e.x,e.y+e.label.Y,e.width,e.height,{fill:a},f),f=r[e.typeC4Shape.text+"Font"](),f.fontColor=a,e.techn&&e.techn?.text!==""?Tu(r)(e.techn.text,l,e.x,e.y+e.techn.Y,e.width,e.height,{fill:a,"font-style":"italic"},f):e.type&&e.type.text!==""&&Tu(r)(e.type.text,l,e.x,e.y+e.type.Y,e.width,e.height,{fill:a,"font-style":"italic"},f),e.descr&&e.descr.text!==""&&(f=r.personFont(),f.fontColor=a,Tu(r)(e.descr.text,l,e.x,e.y+e.descr.Y,e.width,e.height,{fill:a},f)),e.height},"drawC4Shape"),Qke=o(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")},"insertDatabaseIcon"),Zke=o(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")},"insertComputerIcon"),Jke=o(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")},"insertClockIcon"),eEe=o(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")},"insertArrowHead"),tEe=o(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")},"insertArrowEnd"),rEe=o(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")},"insertArrowFilledHead"),nEe=o(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)},"insertDynamicNumber"),iEe=o(function(t){let r=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);r.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"),r.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")},"insertArrowCrossHead"),aEe=o((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"getC4ShapeFont"),Tu=function(){function t(i,a,s,l,u,h,f){let d=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("text-anchor","middle").text(i);n(d,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d){let{fontSize:p,fontFamily:m,fontWeight:g}=d,y=i.split(Ze.lineBreakRegex);for(let v=0;v{"use strict";sEe=typeof global=="object"&&global&&global.Object===Object&&global,X5=sEe});var oEe,lEe,li,Lo=N(()=>{"use strict";w9();oEe=typeof self=="object"&&self&&self.Object===Object&&self,lEe=X5||oEe||Function("return this")(),li=lEe});var cEe,ea,Ed=N(()=>{"use strict";Lo();cEe=li.Symbol,ea=cEe});function fEe(t){var e=uEe.call(t,qv),r=t[qv];try{t[qv]=void 0;var n=!0}catch{}var i=hEe.call(t);return n&&(e?t[qv]=r:delete t[qv]),i}var Fq,uEe,hEe,qv,$q,zq=N(()=>{"use strict";Ed();Fq=Object.prototype,uEe=Fq.hasOwnProperty,hEe=Fq.toString,qv=ea?ea.toStringTag:void 0;o(fEe,"getRawTag");$q=fEe});function mEe(t){return pEe.call(t)}var dEe,pEe,Gq,Vq=N(()=>{"use strict";dEe=Object.prototype,pEe=dEe.toString;o(mEe,"objectToString");Gq=mEe});function vEe(t){return t==null?t===void 0?yEe:gEe:Uq&&Uq in Object(t)?$q(t):Gq(t)}var gEe,yEe,Uq,da,ku=N(()=>{"use strict";Ed();zq();Vq();gEe="[object Null]",yEe="[object Undefined]",Uq=ea?ea.toStringTag:void 0;o(vEe,"baseGetTag");da=vEe});function xEe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var bn,Js=N(()=>{"use strict";o(xEe,"isObject");bn=xEe});function EEe(t){if(!bn(t))return!1;var e=da(t);return e==wEe||e==TEe||e==bEe||e==kEe}var bEe,wEe,TEe,kEe,Si,Yv=N(()=>{"use strict";ku();Js();bEe="[object AsyncFunction]",wEe="[object Function]",TEe="[object GeneratorFunction]",kEe="[object Proxy]";o(EEe,"isFunction");Si=EEe});var SEe,j5,Hq=N(()=>{"use strict";Lo();SEe=li["__core-js_shared__"],j5=SEe});function CEe(t){return!!Wq&&Wq in t}var Wq,qq,Yq=N(()=>{"use strict";Hq();Wq=function(){var t=/[^.]+$/.exec(j5&&j5.keys&&j5.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();o(CEe,"isMasked");qq=CEe});function DEe(t){if(t!=null){try{return _Ee.call(t)}catch{}try{return t+""}catch{}}return""}var AEe,_Ee,Eu,T9=N(()=>{"use strict";AEe=Function.prototype,_Ee=AEe.toString;o(DEe,"toSource");Eu=DEe});function BEe(t){if(!bn(t)||qq(t))return!1;var e=Si(t)?PEe:REe;return e.test(Eu(t))}var LEe,REe,NEe,MEe,IEe,OEe,PEe,Xq,jq=N(()=>{"use strict";Yv();Yq();Js();T9();LEe=/[\\^$.*+?()[\]{}|]/g,REe=/^\[object .+?Constructor\]$/,NEe=Function.prototype,MEe=Object.prototype,IEe=NEe.toString,OEe=MEe.hasOwnProperty,PEe=RegExp("^"+IEe.call(OEe).replace(LEe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(BEe,"baseIsNative");Xq=BEe});function FEe(t,e){return t?.[e]}var Kq,Qq=N(()=>{"use strict";o(FEe,"getValue");Kq=FEe});function $Ee(t,e){var r=Kq(t,e);return Xq(r)?r:void 0}var Ss,Lh=N(()=>{"use strict";jq();Qq();o($Ee,"getNative");Ss=$Ee});var zEe,Su,Xv=N(()=>{"use strict";Lh();zEe=Ss(Object,"create"),Su=zEe});function GEe(){this.__data__=Su?Su(null):{},this.size=0}var Zq,Jq=N(()=>{"use strict";Xv();o(GEe,"hashClear");Zq=GEe});function VEe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var eY,tY=N(()=>{"use strict";o(VEe,"hashDelete");eY=VEe});function qEe(t){var e=this.__data__;if(Su){var r=e[t];return r===UEe?void 0:r}return WEe.call(e,t)?e[t]:void 0}var UEe,HEe,WEe,rY,nY=N(()=>{"use strict";Xv();UEe="__lodash_hash_undefined__",HEe=Object.prototype,WEe=HEe.hasOwnProperty;o(qEe,"hashGet");rY=qEe});function jEe(t){var e=this.__data__;return Su?e[t]!==void 0:XEe.call(e,t)}var YEe,XEe,iY,aY=N(()=>{"use strict";Xv();YEe=Object.prototype,XEe=YEe.hasOwnProperty;o(jEe,"hashHas");iY=jEe});function QEe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=Su&&e===void 0?KEe:e,this}var KEe,sY,oY=N(()=>{"use strict";Xv();KEe="__lodash_hash_undefined__";o(QEe,"hashSet");sY=QEe});function G0(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";Jq();tY();nY();aY();oY();o(G0,"Hash");G0.prototype.clear=Zq;G0.prototype.delete=eY;G0.prototype.get=rY;G0.prototype.has=iY;G0.prototype.set=sY;k9=G0});function ZEe(){this.__data__=[],this.size=0}var cY,uY=N(()=>{"use strict";o(ZEe,"listCacheClear");cY=ZEe});function JEe(t,e){return t===e||t!==t&&e!==e}var Ro,Sd=N(()=>{"use strict";o(JEe,"eq");Ro=JEe});function e6e(t,e){for(var r=t.length;r--;)if(Ro(t[r][0],e))return r;return-1}var Rh,jv=N(()=>{"use strict";Sd();o(e6e,"assocIndexOf");Rh=e6e});function n6e(t){var e=this.__data__,r=Rh(e,t);if(r<0)return!1;var n=e.length-1;return r==n?e.pop():r6e.call(e,r,1),--this.size,!0}var t6e,r6e,hY,fY=N(()=>{"use strict";jv();t6e=Array.prototype,r6e=t6e.splice;o(n6e,"listCacheDelete");hY=n6e});function i6e(t){var e=this.__data__,r=Rh(e,t);return r<0?void 0:e[r][1]}var dY,pY=N(()=>{"use strict";jv();o(i6e,"listCacheGet");dY=i6e});function a6e(t){return Rh(this.__data__,t)>-1}var mY,gY=N(()=>{"use strict";jv();o(a6e,"listCacheHas");mY=a6e});function s6e(t,e){var r=this.__data__,n=Rh(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}var yY,vY=N(()=>{"use strict";jv();o(s6e,"listCacheSet");yY=s6e});function V0(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";uY();fY();pY();gY();vY();o(V0,"ListCache");V0.prototype.clear=cY;V0.prototype.delete=hY;V0.prototype.get=dY;V0.prototype.has=mY;V0.prototype.set=yY;Nh=V0});var o6e,Mh,K5=N(()=>{"use strict";Lh();Lo();o6e=Ss(li,"Map"),Mh=o6e});function l6e(){this.size=0,this.__data__={hash:new k9,map:new(Mh||Nh),string:new k9}}var xY,bY=N(()=>{"use strict";lY();Kv();K5();o(l6e,"mapCacheClear");xY=l6e});function c6e(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var wY,TY=N(()=>{"use strict";o(c6e,"isKeyable");wY=c6e});function u6e(t,e){var r=t.__data__;return wY(e)?r[typeof e=="string"?"string":"hash"]:r.map}var Ih,Qv=N(()=>{"use strict";TY();o(u6e,"getMapData");Ih=u6e});function h6e(t){var e=Ih(this,t).delete(t);return this.size-=e?1:0,e}var kY,EY=N(()=>{"use strict";Qv();o(h6e,"mapCacheDelete");kY=h6e});function f6e(t){return Ih(this,t).get(t)}var SY,CY=N(()=>{"use strict";Qv();o(f6e,"mapCacheGet");SY=f6e});function d6e(t){return Ih(this,t).has(t)}var AY,_Y=N(()=>{"use strict";Qv();o(d6e,"mapCacheHas");AY=d6e});function p6e(t,e){var r=Ih(this,t),n=r.size;return r.set(t,e),this.size+=r.size==n?0:1,this}var DY,LY=N(()=>{"use strict";Qv();o(p6e,"mapCacheSet");DY=p6e});function U0(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";bY();EY();CY();_Y();LY();o(U0,"MapCache");U0.prototype.clear=xY;U0.prototype.delete=kY;U0.prototype.get=SY;U0.prototype.has=AY;U0.prototype.set=DY;Cd=U0});function E9(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(m6e);var r=o(function(){var n=arguments,i=e?e.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var s=t.apply(this,n);return r.cache=a.set(i,s)||a,s},"memoized");return r.cache=new(E9.Cache||Cd),r}var m6e,H0,S9=N(()=>{"use strict";Q5();m6e="Expected a function";o(E9,"memoize");E9.Cache=Cd;H0=E9});function g6e(){this.__data__=new Nh,this.size=0}var RY,NY=N(()=>{"use strict";Kv();o(g6e,"stackClear");RY=g6e});function y6e(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var MY,IY=N(()=>{"use strict";o(y6e,"stackDelete");MY=y6e});function v6e(t){return this.__data__.get(t)}var OY,PY=N(()=>{"use strict";o(v6e,"stackGet");OY=v6e});function x6e(t){return this.__data__.has(t)}var BY,FY=N(()=>{"use strict";o(x6e,"stackHas");BY=x6e});function w6e(t,e){var r=this.__data__;if(r instanceof Nh){var n=r.__data__;if(!Mh||n.length{"use strict";Kv();K5();Q5();b6e=200;o(w6e,"stackSet");$Y=w6e});function W0(t){var e=this.__data__=new Nh(t);this.size=e.size}var lc,Zv=N(()=>{"use strict";Kv();NY();IY();PY();FY();zY();o(W0,"Stack");W0.prototype.clear=RY;W0.prototype.delete=MY;W0.prototype.get=OY;W0.prototype.has=BY;W0.prototype.set=$Y;lc=W0});var T6e,q0,C9=N(()=>{"use strict";Lh();T6e=function(){try{var t=Ss(Object,"defineProperty");return t({},"",{}),t}catch{}}(),q0=T6e});function k6e(t,e,r){e=="__proto__"&&q0?q0(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var cc,Y0=N(()=>{"use strict";C9();o(k6e,"baseAssignValue");cc=k6e});function E6e(t,e,r){(r!==void 0&&!Ro(t[e],r)||r===void 0&&!(e in t))&&cc(t,e,r)}var Jv,A9=N(()=>{"use strict";Y0();Sd();o(E6e,"assignMergeValue");Jv=E6e});function S6e(t){return function(e,r,n){for(var i=-1,a=Object(e),s=n(e),l=s.length;l--;){var u=s[t?l:++i];if(r(a[u],u,a)===!1)break}return e}}var GY,VY=N(()=>{"use strict";o(S6e,"createBaseFor");GY=S6e});var C6e,X0,Z5=N(()=>{"use strict";VY();C6e=GY(),X0=C6e});function _6e(t,e){if(e)return t.slice();var r=t.length,n=WY?WY(r):new t.constructor(r);return t.copy(n),n}var qY,UY,A6e,HY,WY,J5,_9=N(()=>{"use strict";Lo();qY=typeof exports=="object"&&exports&&!exports.nodeType&&exports,UY=qY&&typeof module=="object"&&module&&!module.nodeType&&module,A6e=UY&&UY.exports===qY,HY=A6e?li.Buffer:void 0,WY=HY?HY.allocUnsafe:void 0;o(_6e,"cloneBuffer");J5=_6e});var D6e,j0,D9=N(()=>{"use strict";Lo();D6e=li.Uint8Array,j0=D6e});function L6e(t){var e=new t.constructor(t.byteLength);return new j0(e).set(new j0(t)),e}var K0,ew=N(()=>{"use strict";D9();o(L6e,"cloneArrayBuffer");K0=L6e});function R6e(t,e){var r=e?K0(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}var tw,L9=N(()=>{"use strict";ew();o(R6e,"cloneTypedArray");tw=R6e});function N6e(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r{"use strict";o(N6e,"copyArray");rw=N6e});var YY,M6e,XY,jY=N(()=>{"use strict";Js();YY=Object.create,M6e=function(){function t(){}return o(t,"object"),function(e){if(!bn(e))return{};if(YY)return YY(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}(),XY=M6e});function I6e(t,e){return function(r){return t(e(r))}}var nw,N9=N(()=>{"use strict";o(I6e,"overArg");nw=I6e});var O6e,Q0,iw=N(()=>{"use strict";N9();O6e=nw(Object.getPrototypeOf,Object),Q0=O6e});function B6e(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||P6e;return t===r}var P6e,uc,Z0=N(()=>{"use strict";P6e=Object.prototype;o(B6e,"isPrototype");uc=B6e});function F6e(t){return typeof t.constructor=="function"&&!uc(t)?XY(Q0(t)):{}}var aw,M9=N(()=>{"use strict";jY();iw();Z0();o(F6e,"initCloneObject");aw=F6e});function $6e(t){return t!=null&&typeof t=="object"}var ri,No=N(()=>{"use strict";o($6e,"isObjectLike");ri=$6e});function G6e(t){return ri(t)&&da(t)==z6e}var z6e,I9,KY=N(()=>{"use strict";ku();No();z6e="[object Arguments]";o(G6e,"baseIsArguments");I9=G6e});var QY,V6e,U6e,H6e,El,J0=N(()=>{"use strict";KY();No();QY=Object.prototype,V6e=QY.hasOwnProperty,U6e=QY.propertyIsEnumerable,H6e=I9(function(){return arguments}())?I9:function(t){return ri(t)&&V6e.call(t,"callee")&&!U6e.call(t,"callee")},El=H6e});var W6e,Pt,Un=N(()=>{"use strict";W6e=Array.isArray,Pt=W6e});function Y6e(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=q6e}var q6e,em,sw=N(()=>{"use strict";q6e=9007199254740991;o(Y6e,"isLength");em=Y6e});function X6e(t){return t!=null&&em(t.length)&&!Si(t)}var ci,Mo=N(()=>{"use strict";Yv();sw();o(X6e,"isArrayLike");ci=X6e});function j6e(t){return ri(t)&&ci(t)}var Ad,ow=N(()=>{"use strict";Mo();No();o(j6e,"isArrayLikeObject");Ad=j6e});function K6e(){return!1}var ZY,JY=N(()=>{"use strict";o(K6e,"stubFalse");ZY=K6e});var rX,eX,Q6e,tX,Z6e,J6e,Sl,tm=N(()=>{"use strict";Lo();JY();rX=typeof exports=="object"&&exports&&!exports.nodeType&&exports,eX=rX&&typeof module=="object"&&module&&!module.nodeType&&module,Q6e=eX&&eX.exports===rX,tX=Q6e?li.Buffer:void 0,Z6e=tX?tX.isBuffer:void 0,J6e=Z6e||ZY,Sl=J6e});function aSe(t){if(!ri(t)||da(t)!=eSe)return!1;var e=Q0(t);if(e===null)return!0;var r=nSe.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&nX.call(r)==iSe}var eSe,tSe,rSe,nX,nSe,iSe,iX,aX=N(()=>{"use strict";ku();iw();No();eSe="[object Object]",tSe=Function.prototype,rSe=Object.prototype,nX=tSe.toString,nSe=rSe.hasOwnProperty,iSe=nX.call(Object);o(aSe,"isPlainObject");iX=aSe});function LSe(t){return ri(t)&&em(t.length)&&!!Fn[da(t)]}var sSe,oSe,lSe,cSe,uSe,hSe,fSe,dSe,pSe,mSe,gSe,ySe,vSe,xSe,bSe,wSe,TSe,kSe,ESe,SSe,CSe,ASe,_Se,DSe,Fn,sX,oX=N(()=>{"use strict";ku();sw();No();sSe="[object Arguments]",oSe="[object Array]",lSe="[object Boolean]",cSe="[object Date]",uSe="[object Error]",hSe="[object Function]",fSe="[object Map]",dSe="[object Number]",pSe="[object Object]",mSe="[object RegExp]",gSe="[object Set]",ySe="[object String]",vSe="[object WeakMap]",xSe="[object ArrayBuffer]",bSe="[object DataView]",wSe="[object Float32Array]",TSe="[object Float64Array]",kSe="[object Int8Array]",ESe="[object Int16Array]",SSe="[object Int32Array]",CSe="[object Uint8Array]",ASe="[object Uint8ClampedArray]",_Se="[object Uint16Array]",DSe="[object Uint32Array]",Fn={};Fn[wSe]=Fn[TSe]=Fn[kSe]=Fn[ESe]=Fn[SSe]=Fn[CSe]=Fn[ASe]=Fn[_Se]=Fn[DSe]=!0;Fn[sSe]=Fn[oSe]=Fn[xSe]=Fn[lSe]=Fn[bSe]=Fn[cSe]=Fn[uSe]=Fn[hSe]=Fn[fSe]=Fn[dSe]=Fn[pSe]=Fn[mSe]=Fn[gSe]=Fn[ySe]=Fn[vSe]=!1;o(LSe,"baseIsTypedArray");sX=LSe});function RSe(t){return function(e){return t(e)}}var Io,_d=N(()=>{"use strict";o(RSe,"baseUnary");Io=RSe});var lX,e2,NSe,O9,MSe,Oo,t2=N(()=>{"use strict";w9();lX=typeof exports=="object"&&exports&&!exports.nodeType&&exports,e2=lX&&typeof module=="object"&&module&&!module.nodeType&&module,NSe=e2&&e2.exports===lX,O9=NSe&&X5.process,MSe=function(){try{var t=e2&&e2.require&&e2.require("util").types;return t||O9&&O9.binding&&O9.binding("util")}catch{}}(),Oo=MSe});var cX,ISe,Oh,r2=N(()=>{"use strict";oX();_d();t2();cX=Oo&&Oo.isTypedArray,ISe=cX?Io(cX):sX,Oh=ISe});function OSe(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}var n2,P9=N(()=>{"use strict";o(OSe,"safeGet");n2=OSe});function FSe(t,e,r){var n=t[e];(!(BSe.call(t,e)&&Ro(n,r))||r===void 0&&!(e in t))&&cc(t,e,r)}var PSe,BSe,hc,rm=N(()=>{"use strict";Y0();Sd();PSe=Object.prototype,BSe=PSe.hasOwnProperty;o(FSe,"assignValue");hc=FSe});function $Se(t,e,r,n){var i=!r;r||(r={});for(var a=-1,s=e.length;++a{"use strict";rm();Y0();o($Se,"copyObject");Po=$Se});function zSe(t,e){for(var r=-1,n=Array(t);++r{"use strict";o(zSe,"baseTimes");uX=zSe});function USe(t,e){var r=typeof t;return e=e??GSe,!!e&&(r=="number"||r!="symbol"&&VSe.test(t))&&t>-1&&t%1==0&&t{"use strict";GSe=9007199254740991,VSe=/^(?:0|[1-9]\d*)$/;o(USe,"isIndex");Ph=USe});function qSe(t,e){var r=Pt(t),n=!r&&El(t),i=!r&&!n&&Sl(t),a=!r&&!n&&!i&&Oh(t),s=r||n||i||a,l=s?uX(t.length,String):[],u=l.length;for(var h in t)(e||WSe.call(t,h))&&!(s&&(h=="length"||i&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||Ph(h,u)))&&l.push(h);return l}var HSe,WSe,lw,B9=N(()=>{"use strict";hX();J0();Un();tm();i2();r2();HSe=Object.prototype,WSe=HSe.hasOwnProperty;o(qSe,"arrayLikeKeys");lw=qSe});function YSe(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}var fX,dX=N(()=>{"use strict";o(YSe,"nativeKeysIn");fX=YSe});function KSe(t){if(!bn(t))return fX(t);var e=uc(t),r=[];for(var n in t)n=="constructor"&&(e||!jSe.call(t,n))||r.push(n);return r}var XSe,jSe,pX,mX=N(()=>{"use strict";Js();Z0();dX();XSe=Object.prototype,jSe=XSe.hasOwnProperty;o(KSe,"baseKeysIn");pX=KSe});function QSe(t){return ci(t)?lw(t,!0):pX(t)}var Cs,Bh=N(()=>{"use strict";B9();mX();Mo();o(QSe,"keysIn");Cs=QSe});function ZSe(t){return Po(t,Cs(t))}var gX,yX=N(()=>{"use strict";Dd();Bh();o(ZSe,"toPlainObject");gX=ZSe});function JSe(t,e,r,n,i,a,s){var l=n2(t,r),u=n2(e,r),h=s.get(u);if(h){Jv(t,r,h);return}var f=a?a(l,u,r+"",t,e,s):void 0,d=f===void 0;if(d){var p=Pt(u),m=!p&&Sl(u),g=!p&&!m&&Oh(u);f=u,p||m||g?Pt(l)?f=l:Ad(l)?f=rw(l):m?(d=!1,f=J5(u,!0)):g?(d=!1,f=tw(u,!0)):f=[]:iX(u)||El(u)?(f=l,El(l)?f=gX(l):(!bn(l)||Si(l))&&(f=aw(u))):d=!1}d&&(s.set(u,f),i(f,u,n,a,s),s.delete(u)),Jv(t,r,f)}var vX,xX=N(()=>{"use strict";A9();_9();L9();R9();M9();J0();Un();ow();tm();Yv();Js();aX();r2();P9();yX();o(JSe,"baseMergeDeep");vX=JSe});function bX(t,e,r,n,i){t!==e&&X0(e,function(a,s){if(i||(i=new lc),bn(a))vX(t,e,s,r,bX,n,i);else{var l=n?n(n2(t,s),a,s+"",t,e,i):void 0;l===void 0&&(l=a),Jv(t,s,l)}},Cs)}var wX,TX=N(()=>{"use strict";Zv();A9();Z5();xX();Js();Bh();P9();o(bX,"baseMerge");wX=bX});function eCe(t){return t}var ta,Cu=N(()=>{"use strict";o(eCe,"identity");ta=eCe});function tCe(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}var kX,EX=N(()=>{"use strict";o(tCe,"apply");kX=tCe});function rCe(t,e,r){return e=SX(e===void 0?t.length-1:e,0),function(){for(var n=arguments,i=-1,a=SX(n.length-e,0),s=Array(a);++i{"use strict";EX();SX=Math.max;o(rCe,"overRest");cw=rCe});function nCe(t){return function(){return t}}var As,$9=N(()=>{"use strict";o(nCe,"constant");As=nCe});var iCe,CX,AX=N(()=>{"use strict";$9();C9();Cu();iCe=q0?function(t,e){return q0(t,"toString",{configurable:!0,enumerable:!1,value:As(e),writable:!0})}:ta,CX=iCe});function lCe(t){var e=0,r=0;return function(){var n=oCe(),i=sCe-(n-r);if(r=n,i>0){if(++e>=aCe)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var aCe,sCe,oCe,_X,DX=N(()=>{"use strict";aCe=800,sCe=16,oCe=Date.now;o(lCe,"shortOut");_X=lCe});var cCe,uw,z9=N(()=>{"use strict";AX();DX();cCe=_X(CX),uw=cCe});function uCe(t,e){return uw(cw(t,e,ta),t+"")}var fc,nm=N(()=>{"use strict";Cu();F9();z9();o(uCe,"baseRest");fc=uCe});function hCe(t,e,r){if(!bn(r))return!1;var n=typeof e;return(n=="number"?ci(r)&&Ph(e,r.length):n=="string"&&e in r)?Ro(r[e],t):!1}var eo,Ld=N(()=>{"use strict";Sd();Mo();i2();Js();o(hCe,"isIterateeCall");eo=hCe});function fCe(t){return fc(function(e,r){var n=-1,i=r.length,a=i>1?r[i-1]:void 0,s=i>2?r[2]:void 0;for(a=t.length>3&&typeof a=="function"?(i--,a):void 0,s&&eo(r[0],r[1],s)&&(a=i<3?void 0:a,i=1),e=Object(e);++n{"use strict";nm();Ld();o(fCe,"createAssigner");hw=fCe});var dCe,Fh,V9=N(()=>{"use strict";TX();G9();dCe=hw(function(t,e,r){wX(t,e,r)}),Fh=dCe});function W9(t,e){if(!t)return e;let r=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return pCe[r]??e}function vCe(t,e){let r=t.trim();if(r)return e.securityLevel!=="loose"?(0,NX.sanitizeUrl)(r):r}function OX(t,e){return!t||!e?0:Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function bCe(t){let e,r=0;t.forEach(i=>{r+=OX(i,e),e=i});let n=r/2;return q9(t,n)}function wCe(t){return t.length===1?t[0]:bCe(t)}function kCe(t,e,r){let n=structuredClone(r);Y.info("our points",n),e!=="start_left"&&e!=="start_right"&&n.reverse();let i=25+t,a=q9(n,i),s=10+t*.5,l=Math.atan2(n[0].y-a.y,n[0].x-a.x),u={x:0,y:0};return e==="start_left"?(u.x=Math.sin(l+Math.PI)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l+Math.PI)*s+(n[0].y+a.y)/2):e==="end_right"?(u.x=Math.sin(l-Math.PI)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l-Math.PI)*s+(n[0].y+a.y)/2-5):e==="end_left"?(u.x=Math.sin(l)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2-5):(u.x=Math.sin(l)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2),u}function Y9(t){let e="",r="";for(let n of t)n!==void 0&&(n.startsWith("color:")||n.startsWith("text-align:")?r=r+n+";":e=e+n+";");return{style:e,labelStyle:r}}function ECe(t){let e="",r="0123456789abcdef",n=r.length;for(let i=0;i{"use strict";NX=Sa(z0(),1);dr();gr();e7();vt();Xf();s0();S9();V9();$4();H9="\u200B",pCe={curveBasis:Do,curveBasisClosed:P5,curveBasisOpen:B5,curveBumpX:Rv,curveBumpY:Nv,curveBundle:l9,curveCardinalClosed:c9,curveCardinalOpen:h9,curveCardinal:Pv,curveCatmullRomClosed:d9,curveCatmullRomOpen:p9,curveCatmullRom:$v,curveLinear:wu,curveLinearClosed:V5,curveMonotoneX:zv,curveMonotoneY:Gv,curveNatural:F0,curveStep:$0,curveStepAfter:Uv,curveStepBefore:Vv},mCe=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,gCe=o(function(t,e){let r=MX(t,/(?:init\b)|(?:initialize\b)/),n={};if(Array.isArray(r)){let s=r.map(l=>l.args);l0(s),n=Gn(n,[...s])}else n=r.args;if(!n)return;let i=a0(t,e),a="config";return n[a]!==void 0&&(i==="flowchart-v2"&&(i="flowchart"),n[i]=n[a],delete n[a]),n},"detectInit"),MX=o(function(t,e=null){try{let r=new RegExp(`[%]{2}(?![{]${mCe.source})(?=[}][%]{2}).* +`,"ig");t=t.trim().replace(r,"").replace(/'/gm,'"'),Y.debug(`Detecting diagram directive${e!==null?" type:"+e:""} based on the text:${t}`);let n,i=[];for(;(n=qf.exec(t))!==null;)if(n.index===qf.lastIndex&&qf.lastIndex++,n&&!e||e&&n[1]?.match(e)||e&&n[2]?.match(e)){let a=n[1]?n[1]:n[2],s=n[3]?n[3].trim():n[4]?JSON.parse(n[4].trim()):null;i.push({type:a,args:s})}return i.length===0?{type:t,args:null}:i.length===1?i[0]:i}catch(r){return Y.error(`ERROR: ${r.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},"detectDirective"),IX=o(function(t){return t.replace(qf,"")},"removeDirectives"),yCe=o(function(t,e){for(let[r,n]of e.entries())if(n.match(t))return r;return-1},"isSubstringInArray");o(W9,"interpolateToCurve");o(vCe,"formatUrl");xCe=o((t,...e)=>{let r=t.split("."),n=r.length-1,i=r[n],a=window;for(let s=0;s{let r=Math.pow(10,e);return Math.round(t*r)/r},"roundNumber"),q9=o((t,e)=>{let r,n=e;for(let i of t){if(r){let a=OX(i,r);if(a===0)return r;if(a=1)return{x:i.x,y:i.y};if(s>0&&s<1)return{x:LX((1-s)*r.x+s*i.x,5),y:LX((1-s)*r.y+s*i.y,5)}}}r=i}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),TCe=o((t,e,r)=>{Y.info(`our points ${JSON.stringify(e)}`),e[0]!==r&&(e=e.reverse());let i=q9(e,25),a=t?10:5,s=Math.atan2(e[0].y-i.y,e[0].x-i.x),l={x:0,y:0};return l.x=Math.sin(s)*a+(e[0].x+i.x)/2,l.y=-Math.cos(s)*a+(e[0].y+i.y)/2,l},"calcCardinalityPosition");o(kCe,"calcTerminalLabelPosition");o(Y9,"getStylesFromArray");RX=0,X9=o(()=>(RX++,"id-"+Math.random().toString(36).substr(2,12)+"-"+RX),"generateId");o(ECe,"makeRandomHex");j9=o(t=>ECe(t.length),"random"),SCe=o(function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},"getTextObj"),CCe=o(function(t,e){let r=e.text.replace(Ze.lineBreakRegex," "),[,n]=Bo(e.fontSize),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.style("text-anchor",e.anchor),i.style("font-family",e.fontFamily),i.style("font-size",n),i.style("font-weight",e.fontWeight),i.attr("fill",e.fill),e.class!==void 0&&i.attr("class",e.class);let a=i.append("tspan");return a.attr("x",e.x+e.textMargin*2),a.attr("fill",e.fill),a.text(r),i},"drawSimpleText"),K9=H0((t,e,r)=>{if(!t||(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
"},r),Ze.lineBreakRegex.test(t)))return t;let n=t.split(" ").filter(Boolean),i=[],a="";return n.forEach((s,l)=>{let u=ra(`${s} `,r),h=ra(a,r);if(u>e){let{hyphenatedStrings:p,remainingWord:m}=ACe(s,e,"-",r);i.push(a,...p),a=m}else h+u>=e?(i.push(a),a=s):a=[a,s].filter(Boolean).join(" ");l+1===n.length&&i.push(a)}),i.filter(s=>s!=="").join(r.joinWith)},(t,e,r)=>`${t}${e}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),ACe=H0((t,e,r="-",n)=>{n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},n);let i=[...t],a=[],s="";return i.forEach((l,u)=>{let h=`${s}${l}`;if(ra(h,n)>=e){let d=u+1,p=i.length===d,m=`${h}${r}`;a.push(p?h:m),s=""}else s=h}),{hyphenatedStrings:a,remainingWord:s}},(t,e,r="-",n)=>`${t}${e}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`);o(dw,"calculateTextHeight");o(ra,"calculateTextWidth");Q9=H0((t,e)=>{let{fontSize:r=12,fontFamily:n="Arial",fontWeight:i=400}=e;if(!t)return{width:0,height:0};let[,a]=Bo(r),s=["sans-serif",n],l=t.split(Ze.lineBreakRegex),u=[],h=Ge("body");if(!h.remove)return{width:0,height:0,lineHeight:0};let f=h.append("svg");for(let p of s){let m=0,g={width:0,height:0,lineHeight:0};for(let y of l){let v=SCe();v.text=y||H9;let x=CCe(f,v).style("font-size",a).style("font-weight",i).style("font-family",p),b=(x._groups||x)[0][0].getBBox();if(b.width===0&&b.height===0)throw new Error("svg element not in render tree");g.width=Math.round(Math.max(g.width,b.width)),m=Math.round(b.height),g.height+=m,g.lineHeight=Math.round(Math.max(g.lineHeight,m))}u.push(g)}f.remove();let d=isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1;return u[d]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`),U9=class{constructor(e=!1,r){this.count=0;this.count=r?r.length:0,this.next=e?()=>this.count++:()=>Date.now()}static{o(this,"InitIDGenerator")}},_Ce=o(function(t){return fw=fw||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),fw.innerHTML=t,unescape(fw.textContent)},"entityDecode");o(Z9,"isDetailedError");DCe=o((t,e,r,n)=>{if(!n)return;let i=t.node()?.getBBox();i&&t.append("text").text(n).attr("text-anchor","middle").attr("x",i.x+i.width/2).attr("y",-r).attr("class",e)},"insertTitle"),Bo=o(t=>{if(typeof t=="number")return[t,t+"px"];let e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]},"parseFontSize");o(Fi,"cleanAndMerge");Gt={assignWithDepth:Gn,wrapLabel:K9,calculateTextHeight:dw,calculateTextWidth:ra,calculateTextDimensions:Q9,cleanAndMerge:Fi,detectInit:gCe,detectDirective:MX,isSubstringInArray:yCe,interpolateToCurve:W9,calcLabelPosition:wCe,calcCardinalityPosition:TCe,calcTerminalLabelPosition:kCe,formatUrl:vCe,getStylesFromArray:Y9,generateId:X9,random:j9,runFunc:xCe,entityDecode:_Ce,insertTitle:DCe,parseFontSize:Bo,InitIDGenerator:U9},PX=o(function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/#\w+;/g,function(r){let n=r.substring(1,r.length-1);return/^\+?\d+$/.test(n)?"\uFB02\xB0\xB0"+n+"\xB6\xDF":"\uFB02\xB0"+n+"\xB6\xDF"}),e},"encodeEntities"),na=o(function(t){return t.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities"),$h=o((t,e,{counter:r=0,prefix:n,suffix:i},a)=>a||`${n?`${n}_`:""}${t}_${e}_${r}${i?`_${i}`:""}`,"getEdgeId");o($n,"handleUndefinedAttr")});function Cl(t,e,r,n,i){if(!e[t].width)if(r)e[t].text=K9(e[t].text,i,n),e[t].textLines=e[t].text.split(Ze.lineBreakRegex).length,e[t].width=i,e[t].height=dw(e[t].text,n);else{let a=e[t].text.split(Ze.lineBreakRegex);e[t].textLines=a.length;let s=0;e[t].height=0,e[t].width=0;for(let l of a)e[t].width=Math.max(ra(l,n),e[t].width),s=dw(l,n),e[t].height=e[t].height+s}}function GX(t,e,r,n,i){let a=new yw(i);a.data.widthLimit=r.data.widthLimit/Math.min(J9,n.length);for(let[s,l]of n.entries()){let u=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=u,u=l.image.Y+l.image.height);let h=l.wrap&&Vt.wrap,f=pw(Vt);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",Cl("label",l,h,f,a.data.widthLimit),l.label.Y=u+8,u=l.label.Y+l.label.height,l.type&&l.type.text!==""){l.type.text="["+l.type.text+"]";let g=pw(Vt);Cl("type",l,h,g,a.data.widthLimit),l.type.Y=u+5,u=l.type.Y+l.type.height}if(l.descr&&l.descr.text!==""){let g=pw(Vt);g.fontSize=g.fontSize-2,Cl("descr",l,h,g,a.data.widthLimit),l.descr.Y=u+20,u=l.descr.Y+l.descr.height}if(s==0||s%J9===0){let g=r.data.startx+Vt.diagramMarginX,y=r.data.stopy+Vt.diagramMarginY+u;a.setData(g,g,y,y)}else{let g=a.data.stopx!==a.data.startx?a.data.stopx+Vt.diagramMarginX:a.data.startx,y=a.data.starty;a.setData(g,g,y,y)}a.name=l.alias;let d=i.db.getC4ShapeArray(l.alias),p=i.db.getC4ShapeKeys(l.alias);p.length>0&&zX(a,t,d,p),e=l.alias;let m=i.db.getBoundarys(e);m.length>0&&GX(t,e,a,m,i),l.alias!=="global"&&$X(t,l,a),r.data.stopy=Math.max(a.data.stopy+Vt.c4ShapeMargin,r.data.stopy),r.data.stopx=Math.max(a.data.stopx+Vt.c4ShapeMargin,r.data.stopx),mw=Math.max(mw,r.data.stopx),gw=Math.max(gw,r.data.stopy)}}var mw,gw,FX,J9,Vt,yw,eD,a2,pw,LCe,$X,zX,_s,BX,RCe,NCe,MCe,tD,VX=N(()=>{"use strict";dr();Bq();vt();$C();gr();uA();zt();s0();ir();Ei();mw=0,gw=0,FX=4,J9=2;Ty.yy=Qy;Vt={},yw=class{static{o(this,"Bounds")}constructor(e){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,eD(e.db.getConfig())}setData(e,r,n,i){this.nextData.startx=this.data.startx=e,this.nextData.stopx=this.data.stopx=r,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=i}updateVal(e,r,n,i){e[r]===void 0?e[r]=n:e[r]=i(n,e[r])}insert(e){this.nextData.cnt=this.nextData.cnt+1;let r=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+e.margin:this.nextData.stopx+e.margin*2,n=r+e.width,i=this.nextData.starty+e.margin*2,a=i+e.height;(r>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>FX)&&(r=this.nextData.startx+e.margin+Vt.nextLinePaddingX,i=this.nextData.stopy+e.margin*2,this.nextData.stopx=n=r+e.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=a=i+e.height,this.nextData.cnt=1),e.x=r,e.y=i,this.updateVal(this.data,"startx",r,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",r,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(e){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},eD(e.db.getConfig())}bumpLastMargin(e){this.data.stopx+=e,this.data.stopy+=e}},eD=o(function(t){Gn(Vt,t),t.fontFamily&&(Vt.personFontFamily=Vt.systemFontFamily=Vt.messageFontFamily=t.fontFamily),t.fontSize&&(Vt.personFontSize=Vt.systemFontSize=Vt.messageFontSize=t.fontSize),t.fontWeight&&(Vt.personFontWeight=Vt.systemFontWeight=Vt.messageFontWeight=t.fontWeight)},"setConf"),a2=o((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"c4ShapeFont"),pw=o(t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight}),"boundaryFont"),LCe=o(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont");o(Cl,"calcC4ShapeTextWH");$X=o(function(t,e,r){e.x=r.data.startx,e.y=r.data.starty,e.width=r.data.stopx-r.data.startx,e.height=r.data.stopy-r.data.starty,e.label.y=Vt.c4ShapeMargin-35;let n=e.wrap&&Vt.wrap,i=pw(Vt);i.fontSize=i.fontSize+2,i.fontWeight="bold";let a=ra(e.label.text,i);Cl("label",e,n,i,a),kl.drawBoundary(t,e,Vt)},"drawBoundary"),zX=o(function(t,e,r,n){let i=0;for(let a of n){i=0;let s=r[a],l=a2(Vt,s.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,s.typeC4Shape.width=ra("\xAB"+s.typeC4Shape.text+"\xBB",l),s.typeC4Shape.height=l.fontSize+2,s.typeC4Shape.Y=Vt.c4ShapePadding,i=s.typeC4Shape.Y+s.typeC4Shape.height-4,s.image={width:0,height:0,Y:0},s.typeC4Shape.text){case"person":case"external_person":s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height;break}s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height);let u=s.wrap&&Vt.wrap,h=Vt.width-Vt.c4ShapePadding*2,f=a2(Vt,s.typeC4Shape.text);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",Cl("label",s,u,f,h),s.label.Y=i+8,i=s.label.Y+s.label.height,s.type&&s.type.text!==""){s.type.text="["+s.type.text+"]";let m=a2(Vt,s.typeC4Shape.text);Cl("type",s,u,m,h),s.type.Y=i+5,i=s.type.Y+s.type.height}else if(s.techn&&s.techn.text!==""){s.techn.text="["+s.techn.text+"]";let m=a2(Vt,s.techn.text);Cl("techn",s,u,m,h),s.techn.Y=i+5,i=s.techn.Y+s.techn.height}let d=i,p=s.label.width;if(s.descr&&s.descr.text!==""){let m=a2(Vt,s.typeC4Shape.text);Cl("descr",s,u,m,h),s.descr.Y=i+20,i=s.descr.Y+s.descr.height,p=Math.max(s.label.width,s.descr.width),d=i-s.descr.textLines*5}p=p+Vt.c4ShapePadding,s.width=Math.max(s.width||Vt.width,p,Vt.width),s.height=Math.max(s.height||Vt.height,d,Vt.height),s.margin=s.margin||Vt.c4ShapeMargin,t.insert(s),kl.drawC4Shape(e,s,Vt)}t.bumpLastMargin(Vt.c4ShapeMargin)},"drawC4ShapeArray"),_s=class{static{o(this,"Point")}constructor(e,r){this.x=e,this.y=r}},BX=o(function(t,e){let r=t.x,n=t.y,i=e.x,a=e.y,s=r+t.width/2,l=n+t.height/2,u=Math.abs(r-i),h=Math.abs(n-a),f=h/u,d=t.height/t.width,p=null;return n==a&&ri?p=new _s(r,l):r==i&&na&&(p=new _s(s,n)),r>i&&n=f?p=new _s(r,l+f*t.width/2):p=new _s(s-u/h*t.height/2,n+t.height):r=f?p=new _s(r+t.width,l+f*t.width/2):p=new _s(s+u/h*t.height/2,n+t.height):ra?d>=f?p=new _s(r+t.width,l-f*t.width/2):p=new _s(s+t.height/2*u/h,n):r>i&&n>a&&(d>=f?p=new _s(r,l-t.width/2*f):p=new _s(s-t.height/2*u/h,n)),p},"getIntersectPoint"),RCe=o(function(t,e){let r={x:0,y:0};r.x=e.x+e.width/2,r.y=e.y+e.height/2;let n=BX(t,r);r.x=t.x+t.width/2,r.y=t.y+t.height/2;let i=BX(e,r);return{startPoint:n,endPoint:i}},"getIntersectPoints"),NCe=o(function(t,e,r,n){let i=0;for(let a of e){i=i+1;let s=a.wrap&&Vt.wrap,l=LCe(Vt);n.db.getC4Type()==="C4Dynamic"&&(a.label.text=i+": "+a.label.text);let h=ra(a.label.text,l);Cl("label",a,s,l,h),a.techn&&a.techn.text!==""&&(h=ra(a.techn.text,l),Cl("techn",a,s,l,h)),a.descr&&a.descr.text!==""&&(h=ra(a.descr.text,l),Cl("descr",a,s,l,h));let f=r(a.from),d=r(a.to),p=RCe(f,d);a.startPoint=p.startPoint,a.endPoint=p.endPoint}kl.drawRels(t,e,Vt)},"drawRels");o(GX,"drawInsideBoundary");MCe=o(function(t,e,r,n){Vt=me().c4;let i=me().securityLevel,a;i==="sandbox"&&(a=Ge("#i"+e));let s=i==="sandbox"?Ge(a.nodes()[0].contentDocument.body):Ge("body"),l=n.db;n.db.setWrap(Vt.wrap),FX=l.getC4ShapeInRow(),J9=l.getC4BoundaryInRow(),Y.debug(`C:${JSON.stringify(Vt,null,2)}`);let u=i==="sandbox"?s.select(`[id="${e}"]`):Ge(`[id="${e}"]`);kl.insertComputerIcon(u),kl.insertDatabaseIcon(u),kl.insertClockIcon(u);let h=new yw(n);h.setData(Vt.diagramMarginX,Vt.diagramMarginX,Vt.diagramMarginY,Vt.diagramMarginY),h.data.widthLimit=screen.availWidth,mw=Vt.diagramMarginX,gw=Vt.diagramMarginY;let f=n.db.getTitle(),d=n.db.getBoundarys("");GX(u,"",h,d,n),kl.insertArrowHead(u),kl.insertArrowEnd(u),kl.insertArrowCrossHead(u),kl.insertArrowFilledHead(u),NCe(u,n.db.getRels(),n.db.getC4Shape,n),h.data.stopx=mw,h.data.stopy=gw;let p=h.data,g=p.stopy-p.starty+2*Vt.diagramMarginY,v=p.stopx-p.startx+2*Vt.diagramMarginX;f&&u.append("text").text(f).attr("x",(p.stopx-p.startx)/2-4*Vt.diagramMarginX).attr("y",p.starty+Vt.diagramMarginY),vn(u,g,v,Vt.useMaxWidth);let x=f?60:0;u.attr("viewBox",p.startx-Vt.diagramMarginX+" -"+(Vt.diagramMarginY+x)+" "+v+" "+(g+x)),Y.debug("models:",p)},"draw"),tD={drawPersonOrSystemArray:zX,drawBoundary:$X,setConf:eD,draw:MCe}});var ICe,UX,HX=N(()=>{"use strict";ICe=o(t=>`.person { + stroke: ${t.personBorder}; + fill: ${t.personBkg}; + } +`,"getStyles"),UX=ICe});var WX={};hr(WX,{diagram:()=>OCe});var OCe,qX=N(()=>{"use strict";$C();uA();VX();HX();OCe={parser:JF,db:Qy,renderer:tD,styles:UX,init:o(({c4:t,wrap:e})=>{tD.setConf(t),Qy.setWrap(e)},"init")}});function uj(t){return typeof t>"u"||t===null}function $Ce(t){return typeof t=="object"&&t!==null}function zCe(t){return Array.isArray(t)?t:uj(t)?[]:[t]}function GCe(t,e){var r,n,i,a;if(e)for(a=Object.keys(e),r=0,n=a.length;rl&&(a=" ... ",e=n-l+a.length),r-n>l&&(s=" ...",r=n+l-s.length),{str:a+t.slice(e,r).replace(/\t/g,"\u2192")+s,pos:n-e+a.length}}function nD(t,e){return $i.repeat(" ",e-t.length)+t}function KCe(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),typeof e.indent!="number"&&(e.indent=1),typeof e.linesBefore!="number"&&(e.linesBefore=3),typeof e.linesAfter!="number"&&(e.linesAfter=2);for(var r=/\r?\n|\r|\0/g,n=[0],i=[],a,s=-1;a=r.exec(t.buffer);)i.push(a.index),n.push(a.index+a[0].length),t.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var l="",u,h,f=Math.min(t.line+e.linesAfter,i.length).toString().length,d=e.maxLength-(e.indent+f+3);for(u=1;u<=e.linesBefore&&!(s-u<0);u++)h=rD(t.buffer,n[s-u],i[s-u],t.position-(n[s]-n[s-u]),d),l=$i.repeat(" ",e.indent)+nD((t.line-u+1).toString(),f)+" | "+h.str+` +`+l;for(h=rD(t.buffer,n[s],i[s],t.position,d),l+=$i.repeat(" ",e.indent)+nD((t.line+1).toString(),f)+" | "+h.str+` +`,l+=$i.repeat("-",e.indent+f+3+h.pos)+`^ +`,u=1;u<=e.linesAfter&&!(s+u>=i.length);u++)h=rD(t.buffer,n[s+u],i[s+u],t.position-(n[s]-n[s+u]),d),l+=$i.repeat(" ",e.indent)+nD((t.line+u+1).toString(),f)+" | "+h.str+` +`;return l.replace(/\n$/,"")}function e7e(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(n){e[String(n)]=r})}),e}function t7e(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(ZCe.indexOf(r)===-1)throw new Ds('Unknown option "'+r+'" 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(r){return r},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=e7e(e.styleAliases||null),JCe.indexOf(this.kind)===-1)throw new Ds('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}function jX(t,e){var r=[];return t[e].forEach(function(n){var i=r.length;r.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(i=s)}),r[i]=n}),r}function r7e(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},e,r;function n(i){i.multi?(t.multi[i.kind].push(i),t.multi.fallback.push(i)):t[i.kind][i.tag]=t.fallback[i.tag]=i}for(o(n,"collectType"),e=0,r=arguments.length;e=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:r*parseFloat(e,10)}function A7e(t,e){var r;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($i.isNegativeZero(t))return"-0.0";return r=t.toString(10),C7e.test(r)?r.replace("e",".e"):r}function _7e(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||$i.isNegativeZero(t))}function R7e(t){return t===null?!1:dj.exec(t)!==null||pj.exec(t)!==null}function N7e(t){var e,r,n,i,a,s,l,u=0,h=null,f,d,p;if(e=dj.exec(t),e===null&&(e=pj.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],n=+e[2]-1,i=+e[3],!e[4])return new Date(Date.UTC(r,n,i));if(a=+e[4],s=+e[5],l=+e[6],e[7]){for(u=e[7].slice(0,3);u.length<3;)u+="0";u=+u}return e[9]&&(f=+e[10],d=+(e[11]||0),h=(f*60+d)*6e4,e[9]==="-"&&(h=-h)),p=new Date(Date.UTC(r,n,i,a,s,l,u)),h&&p.setTime(p.getTime()-h),p}function M7e(t){return t.toISOString()}function O7e(t){return t==="<<"||t===null}function B7e(t){if(t===null)return!1;var e,r,n=0,i=t.length,a=uD;for(r=0;r64)){if(e<0)return!1;n+=6}return n%8===0}function F7e(t){var e,r,n=t.replace(/[\r\n=]/g,""),i=n.length,a=uD,s=0,l=[];for(e=0;e>16&255),l.push(s>>8&255),l.push(s&255)),s=s<<6|a.indexOf(n.charAt(e));return r=i%4*6,r===0?(l.push(s>>16&255),l.push(s>>8&255),l.push(s&255)):r===18?(l.push(s>>10&255),l.push(s>>2&255)):r===12&&l.push(s>>4&255),new Uint8Array(l)}function $7e(t){var e="",r=0,n,i,a=t.length,s=uD;for(n=0;n>18&63],e+=s[r>>12&63],e+=s[r>>6&63],e+=s[r&63]),r=(r<<8)+t[n];return i=a%3,i===0?(e+=s[r>>18&63],e+=s[r>>12&63],e+=s[r>>6&63],e+=s[r&63]):i===2?(e+=s[r>>10&63],e+=s[r>>4&63],e+=s[r<<2&63],e+=s[64]):i===1&&(e+=s[r>>2&63],e+=s[r<<4&63],e+=s[64],e+=s[64]),e}function z7e(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}function H7e(t){if(t===null)return!0;var e=[],r,n,i,a,s,l=t;for(r=0,n=l.length;r>10)+55296,(t-65536&1023)+56320)}function cAe(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||mj,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 Tj(t,e){var r={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return r.snippet=QCe(r),new Ds(e,r)}function Qt(t,e){throw Tj(t,e)}function bw(t,e){t.onWarning&&t.onWarning.call(null,Tj(t,e))}function zh(t,e,r,n){var i,a,s,l;if(e1&&(t.result+=$i.repeat(` +`,e-1))}function uAe(t,e,r){var n,i,a,s,l,u,h,f,d=t.kind,p=t.result,m;if(m=t.input.charCodeAt(t.position),Ls(m)||am(m)||m===35||m===38||m===42||m===33||m===124||m===62||m===39||m===34||m===37||m===64||m===96||(m===63||m===45)&&(i=t.input.charCodeAt(t.position+1),Ls(i)||r&&am(i)))return!1;for(t.kind="scalar",t.result="",a=s=t.position,l=!1;m!==0;){if(m===58){if(i=t.input.charCodeAt(t.position+1),Ls(i)||r&&am(i))break}else if(m===35){if(n=t.input.charCodeAt(t.position-1),Ls(n))break}else{if(t.position===t.lineStart&&kw(t)||r&&am(m))break;if(dc(m))if(u=t.line,h=t.lineStart,f=t.lineIndent,Ci(t,!1,-1),t.lineIndent>=e){l=!0,m=t.input.charCodeAt(t.position);continue}else{t.position=s,t.line=u,t.lineStart=h,t.lineIndent=f;break}}l&&(zh(t,a,s,!1),fD(t,t.line-u),a=s=t.position,l=!1),Nd(m)||(s=t.position+1),m=t.input.charCodeAt(++t.position)}return zh(t,a,s,!1),t.result?!0:(t.kind=d,t.result=p,!1)}function hAe(t,e){var r,n,i;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,n=i=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(zh(t,n,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)n=t.position,t.position++,i=t.position;else return!0;else dc(r)?(zh(t,n,i,!0),fD(t,Ci(t,!1,e)),n=i=t.position):t.position===t.lineStart&&kw(t)?Qt(t,"unexpected end of the document within a single quoted scalar"):(t.position++,i=t.position);Qt(t,"unexpected end of the stream within a single quoted scalar")}function fAe(t,e){var r,n,i,a,s,l;if(l=t.input.charCodeAt(t.position),l!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=n=t.position;(l=t.input.charCodeAt(t.position))!==0;){if(l===34)return zh(t,r,t.position,!0),t.position++,!0;if(l===92){if(zh(t,r,t.position,!0),l=t.input.charCodeAt(++t.position),dc(l))Ci(t,!1,e);else if(l<256&&bj[l])t.result+=wj[l],t.position++;else if((s=sAe(l))>0){for(i=s,a=0;i>0;i--)l=t.input.charCodeAt(++t.position),(s=aAe(l))>=0?a=(a<<4)+s:Qt(t,"expected hexadecimal character");t.result+=lAe(a),t.position++}else Qt(t,"unknown escape sequence");r=n=t.position}else dc(l)?(zh(t,r,n,!0),fD(t,Ci(t,!1,e)),r=n=t.position):t.position===t.lineStart&&kw(t)?Qt(t,"unexpected end of the document within a double quoted scalar"):(t.position++,n=t.position)}Qt(t,"unexpected end of the stream within a double quoted scalar")}function dAe(t,e){var r=!0,n,i,a,s=t.tag,l,u=t.anchor,h,f,d,p,m,g=Object.create(null),y,v,x,b;if(b=t.input.charCodeAt(t.position),b===91)f=93,m=!1,l=[];else if(b===123)f=125,m=!0,l={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=l),b=t.input.charCodeAt(++t.position);b!==0;){if(Ci(t,!0,e),b=t.input.charCodeAt(t.position),b===f)return t.position++,t.tag=s,t.anchor=u,t.kind=m?"mapping":"sequence",t.result=l,!0;r?b===44&&Qt(t,"expected the node content, but found ','"):Qt(t,"missed comma between flow collection entries"),v=y=x=null,d=p=!1,b===63&&(h=t.input.charCodeAt(t.position+1),Ls(h)&&(d=p=!0,t.position++,Ci(t,!0,e))),n=t.line,i=t.lineStart,a=t.position,om(t,e,vw,!1,!0),v=t.tag,y=t.result,Ci(t,!0,e),b=t.input.charCodeAt(t.position),(p||t.line===n)&&b===58&&(d=!0,b=t.input.charCodeAt(++t.position),Ci(t,!0,e),om(t,e,vw,!1,!0),x=t.result),m?sm(t,l,g,v,y,x,n,i,a):d?l.push(sm(t,null,g,v,y,x,n,i,a)):l.push(y),Ci(t,!0,e),b=t.input.charCodeAt(t.position),b===44?(r=!0,b=t.input.charCodeAt(++t.position)):r=!1}Qt(t,"unexpected end of the stream within a flow collection")}function pAe(t,e){var r,n,i=iD,a=!1,s=!1,l=e,u=0,h=!1,f,d;if(d=t.input.charCodeAt(t.position),d===124)n=!1;else if(d===62)n=!0;else return!1;for(t.kind="scalar",t.result="";d!==0;)if(d=t.input.charCodeAt(++t.position),d===43||d===45)iD===i?i=d===43?KX:tAe:Qt(t,"repeat of a chomping mode identifier");else if((f=oAe(d))>=0)f===0?Qt(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?Qt(t,"repeat of an indentation width identifier"):(l=e+f-1,s=!0);else break;if(Nd(d)){do d=t.input.charCodeAt(++t.position);while(Nd(d));if(d===35)do d=t.input.charCodeAt(++t.position);while(!dc(d)&&d!==0)}for(;d!==0;){for(hD(t),t.lineIndent=0,d=t.input.charCodeAt(t.position);(!s||t.lineIndentl&&(l=t.lineIndent),dc(d)){u++;continue}if(t.lineIndente)&&u!==0)Qt(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(v&&(s=t.line,l=t.lineStart,u=t.position),om(t,e,xw,!0,i)&&(v?g=t.result:y=t.result),v||(sm(t,d,p,m,g,y,s,l,u),m=g=y=null),Ci(t,!0,-1),b=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&b!==0)Qt(t,"bad indentation of a mapping entry");else if(t.lineIndente?u=1:t.lineIndent===e?u=0:t.lineIndente?u=1:t.lineIndent===e?u=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),d=0,p=t.implicitTypes.length;d"),t.result!==null&&g.kind!==t.kind&&Qt(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+g.kind+'", not "'+t.kind+'"'),g.resolve(t.result,t.tag)?(t.result=g.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Qt(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||f}function xAe(t){var e=t.position,r,n,i,a=!1,s;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(s=t.input.charCodeAt(t.position))!==0&&(Ci(t,!0,-1),s=t.input.charCodeAt(t.position),!(t.lineIndent>0||s!==37));){for(a=!0,s=t.input.charCodeAt(++t.position),r=t.position;s!==0&&!Ls(s);)s=t.input.charCodeAt(++t.position);for(n=t.input.slice(r,t.position),i=[],n.length<1&&Qt(t,"directive name must not be less than one character in length");s!==0;){for(;Nd(s);)s=t.input.charCodeAt(++t.position);if(s===35){do s=t.input.charCodeAt(++t.position);while(s!==0&&!dc(s));break}if(dc(s))break;for(r=t.position;s!==0&&!Ls(s);)s=t.input.charCodeAt(++t.position);i.push(t.input.slice(r,t.position))}s!==0&&hD(t),Gh.call(JX,n)?JX[n](t,n,i):bw(t,'unknown document directive "'+n+'"')}if(Ci(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,Ci(t,!0,-1)):a&&Qt(t,"directives end mark is expected"),om(t,t.lineIndent-1,xw,!1,!0),Ci(t,!0,-1),t.checkLineBreaks&&nAe.test(t.input.slice(e,t.position))&&bw(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&kw(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Ci(t,!0,-1));return}if(t.position"u"&&(r=e,e=null);var n=kj(t,r);if(typeof e!="function")return n;for(var i=0,a=n.length;i=55296&&r<=56319&&e+1=56320&&n<=57343)?(r-55296)*1024+n-56320+65536:r}function Nj(t){var e=/^\n* /;return e.test(t)}function jAe(t,e,r,n,i,a,s,l){var u,h=0,f=null,d=!1,p=!1,m=n!==-1,g=-1,y=YAe(s2(t,0))&&XAe(s2(t,t.length-1));if(e||s)for(u=0;u=65536?u+=2:u++){if(h=s2(t,u),!u2(h))return im;y=y&&ij(h,f,l),f=h}else{for(u=0;u=65536?u+=2:u++){if(h=s2(t,u),h===l2)d=!0,m&&(p=p||u-g-1>n&&t[g+1]!==" ",g=u);else if(!u2(h))return im;y=y&&ij(h,f,l),f=h}p=p||m&&u-g-1>n&&t[g+1]!==" "}return!d&&!p?y&&!s&&!i(t)?Mj:a===c2?im:lD:r>9&&Nj(t)?im:s?a===c2?im:lD:p?Oj:Ij}function KAe(t,e,r,n,i){t.dump=function(){if(e.length===0)return t.quotingType===c2?'""':"''";if(!t.noCompatMode&&(zAe.indexOf(e)!==-1||GAe.test(e)))return t.quotingType===c2?'"'+e+'"':"'"+e+"'";var a=t.indent*Math.max(1,r),s=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),l=n||t.flowLevel>-1&&r>=t.flowLevel;function u(h){return qAe(t,h)}switch(o(u,"testAmbiguity"),jAe(e,l,t.indent,s,u,t.quotingType,t.forceQuotes&&!n,i)){case Mj:return e;case lD:return"'"+e.replace(/'/g,"''")+"'";case Ij:return"|"+aj(e,t.indent)+sj(rj(e,a));case Oj:return">"+aj(e,t.indent)+sj(rj(QAe(e,s),a));case im:return'"'+ZAe(e)+'"';default:throw new Ds("impossible error: invalid scalar style")}}()}function aj(t,e){var r=Nj(t)?String(e):"",n=t[t.length-1]===` +`,i=n&&(t[t.length-2]===` +`||t===` +`),a=i?"+":n?"":"-";return r+a+` +`}function sj(t){return t[t.length-1]===` +`?t.slice(0,-1):t}function QAe(t,e){for(var r=/(\n+)([^\n]*)/g,n=function(){var h=t.indexOf(` +`);return h=h!==-1?h:t.length,r.lastIndex=h,oj(t.slice(0,h),e)}(),i=t[0]===` +`||t[0]===" ",a,s;s=r.exec(t);){var l=s[1],u=s[2];a=u[0]===" ",n+=l+(!i&&!a&&u!==""?` +`:"")+oj(u,e),i=a}return n}function oj(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,n,i=0,a,s=0,l=0,u="";n=r.exec(t);)l=n.index,l-i>e&&(a=s>i?s:l,u+=` +`+t.slice(i,a),i=a+1),s=l;return u+=` +`,t.length-i>e&&s>i?u+=t.slice(i,s)+` +`+t.slice(s+1):u+=t.slice(i),u.slice(1)}function ZAe(t){for(var e="",r=0,n,i=0;i=65536?i+=2:i++)r=s2(t,i),n=Da[r],!n&&u2(r)?(e+=t[i],r>=65536&&(e+=t[i+1])):e+=n||UAe(r);return e}function JAe(t,e,r){var n="",i=t.tag,a,s,l;for(a=0,s=r.length;a"u"&&Au(t,e,null,!1,!1))&&(n!==""&&(n+=","+(t.condenseFlow?"":" ")),n+=t.dump);t.tag=i,t.dump="["+n+"]"}function lj(t,e,r,n){var i="",a=t.tag,s,l,u;for(s=0,l=r.length;s"u"&&Au(t,e+1,null,!0,!0,!1,!0))&&((!n||i!=="")&&(i+=oD(t,e)),t.dump&&l2===t.dump.charCodeAt(0)?i+="-":i+="- ",i+=t.dump);t.tag=a,t.dump=i||"[]"}function e8e(t,e,r){var n="",i=t.tag,a=Object.keys(r),s,l,u,h,f;for(s=0,l=a.length;s1024&&(f+="? "),f+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Au(t,e,h,!1,!1)&&(f+=t.dump,n+=f));t.tag=i,t.dump="{"+n+"}"}function t8e(t,e,r,n){var i="",a=t.tag,s=Object.keys(r),l,u,h,f,d,p;if(t.sortKeys===!0)s.sort();else if(typeof t.sortKeys=="function")s.sort(t.sortKeys);else if(t.sortKeys)throw new Ds("sortKeys must be a boolean or a function");for(l=0,u=s.length;l1024,d&&(t.dump&&l2===t.dump.charCodeAt(0)?p+="?":p+="? "),p+=t.dump,d&&(p+=oD(t,e)),Au(t,e+1,f,!0,d)&&(t.dump&&l2===t.dump.charCodeAt(0)?p+=":":p+=": ",p+=t.dump,i+=p));t.tag=a,t.dump=i||"{}"}function cj(t,e,r){var n,i,a,s,l,u;for(i=r?t.explicitTypes:t.implicitTypes,a=0,s=i.length;a tag resolver accepts not "'+u+'" style');t.dump=n}return!0}return!1}function Au(t,e,r,n,i,a,s){t.tag=null,t.dump=r,cj(t,r,!1)||cj(t,r,!0);var l=Sj.call(t.dump),u=n,h;n&&(n=t.flowLevel<0||t.flowLevel>e);var f=l==="[object Object]"||l==="[object Array]",d,p;if(f&&(d=t.duplicates.indexOf(r),p=d!==-1),(t.tag!==null&&t.tag!=="?"||p||t.indent!==2&&e>0)&&(i=!1),p&&t.usedDuplicates[d])t.dump="*ref_"+d;else{if(f&&p&&!t.usedDuplicates[d]&&(t.usedDuplicates[d]=!0),l==="[object Object]")n&&Object.keys(t.dump).length!==0?(t8e(t,e,t.dump,i),p&&(t.dump="&ref_"+d+t.dump)):(e8e(t,e,t.dump),p&&(t.dump="&ref_"+d+" "+t.dump));else if(l==="[object Array]")n&&t.dump.length!==0?(t.noArrayIndent&&!s&&e>0?lj(t,e-1,t.dump,i):lj(t,e,t.dump,i),p&&(t.dump="&ref_"+d+t.dump)):(JAe(t,e,t.dump),p&&(t.dump="&ref_"+d+" "+t.dump));else if(l==="[object String]")t.tag!=="?"&&KAe(t,t.dump,e,a,u);else{if(l==="[object Undefined]")return!1;if(t.skipInvalid)return!1;throw new Ds("unacceptable kind of an object to dump "+l)}t.tag!==null&&t.tag!=="?"&&(h=encodeURI(t.tag[0]==="!"?t.tag.slice(1):t.tag).replace(/!/g,"%21"),t.tag[0]==="!"?h="!"+h:h.slice(0,18)==="tag:yaml.org,2002:"?h="!!"+h.slice(18):h="!<"+h+">",t.dump=h+" "+t.dump)}return!0}function r8e(t,e){var r=[],n=[],i,a;for(cD(t,r,n),i=0,a=n.length;i{"use strict";o(uj,"isNothing");o($Ce,"isObject");o(zCe,"toArray");o(GCe,"extend");o(VCe,"repeat");o(UCe,"isNegativeZero");HCe=uj,WCe=$Ce,qCe=zCe,YCe=VCe,XCe=UCe,jCe=GCe,$i={isNothing:HCe,isObject:WCe,toArray:qCe,repeat:YCe,isNegativeZero:XCe,extend:jCe};o(hj,"formatError");o(o2,"YAMLException$1");o2.prototype=Object.create(Error.prototype);o2.prototype.constructor=o2;o2.prototype.toString=o(function(e){return this.name+": "+hj(this,e)},"toString");Ds=o2;o(rD,"getLine");o(nD,"padStart");o(KCe,"makeSnippet");QCe=KCe,ZCe=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],JCe=["scalar","sequence","mapping"];o(e7e,"compileStyleAliases");o(t7e,"Type$1");_a=t7e;o(jX,"compileList");o(r7e,"compileMap");o(aD,"Schema$1");aD.prototype.extend=o(function(e){var r=[],n=[];if(e instanceof _a)n.push(e);else if(Array.isArray(e))n=n.concat(e);else if(e&&(Array.isArray(e.implicit)||Array.isArray(e.explicit)))e.implicit&&(r=r.concat(e.implicit)),e.explicit&&(n=n.concat(e.explicit));else throw new Ds("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");r.forEach(function(a){if(!(a instanceof _a))throw new Ds("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new Ds("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(a.multi)throw new Ds("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),n.forEach(function(a){if(!(a instanceof _a))throw new Ds("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(aD.prototype);return i.implicit=(this.implicit||[]).concat(r),i.explicit=(this.explicit||[]).concat(n),i.compiledImplicit=jX(i,"implicit"),i.compiledExplicit=jX(i,"explicit"),i.compiledTypeMap=r7e(i.compiledImplicit,i.compiledExplicit),i},"extend");n7e=aD,i7e=new _a("tag:yaml.org,2002:str",{kind:"scalar",construct:o(function(t){return t!==null?t:""},"construct")}),a7e=new _a("tag:yaml.org,2002:seq",{kind:"sequence",construct:o(function(t){return t!==null?t:[]},"construct")}),s7e=new _a("tag:yaml.org,2002:map",{kind:"mapping",construct:o(function(t){return t!==null?t:{}},"construct")}),o7e=new n7e({explicit:[i7e,a7e,s7e]});o(l7e,"resolveYamlNull");o(c7e,"constructYamlNull");o(u7e,"isNull");h7e=new _a("tag:yaml.org,2002:null",{kind:"scalar",resolve:l7e,construct:c7e,predicate:u7e,represent:{canonical:o(function(){return"~"},"canonical"),lowercase:o(function(){return"null"},"lowercase"),uppercase:o(function(){return"NULL"},"uppercase"),camelcase:o(function(){return"Null"},"camelcase"),empty:o(function(){return""},"empty")},defaultStyle:"lowercase"});o(f7e,"resolveYamlBoolean");o(d7e,"constructYamlBoolean");o(p7e,"isBoolean");m7e=new _a("tag:yaml.org,2002:bool",{kind:"scalar",resolve:f7e,construct:d7e,predicate:p7e,represent:{lowercase:o(function(t){return t?"true":"false"},"lowercase"),uppercase:o(function(t){return t?"TRUE":"FALSE"},"uppercase"),camelcase:o(function(t){return t?"True":"False"},"camelcase")},defaultStyle:"lowercase"});o(g7e,"isHexCode");o(y7e,"isOctCode");o(v7e,"isDecCode");o(x7e,"resolveYamlInteger");o(b7e,"constructYamlInteger");o(w7e,"isInteger");T7e=new _a("tag:yaml.org,2002:int",{kind:"scalar",resolve:x7e,construct:b7e,predicate:w7e,represent:{binary:o(function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},"binary"),octal:o(function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},"octal"),decimal:o(function(t){return t.toString(10)},"decimal"),hexadecimal:o(function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),k7e=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");o(E7e,"resolveYamlFloat");o(S7e,"constructYamlFloat");C7e=/^[-+]?[0-9]+e/;o(A7e,"representYamlFloat");o(_7e,"isFloat");D7e=new _a("tag:yaml.org,2002:float",{kind:"scalar",resolve:E7e,construct:S7e,predicate:_7e,represent:A7e,defaultStyle:"lowercase"}),fj=o7e.extend({implicit:[h7e,m7e,T7e,D7e]}),L7e=fj,dj=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),pj=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]))?))?$");o(R7e,"resolveYamlTimestamp");o(N7e,"constructYamlTimestamp");o(M7e,"representYamlTimestamp");I7e=new _a("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:R7e,construct:N7e,instanceOf:Date,represent:M7e});o(O7e,"resolveYamlMerge");P7e=new _a("tag:yaml.org,2002:merge",{kind:"scalar",resolve:O7e}),uD=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;o(B7e,"resolveYamlBinary");o(F7e,"constructYamlBinary");o($7e,"representYamlBinary");o(z7e,"isBinary");G7e=new _a("tag:yaml.org,2002:binary",{kind:"scalar",resolve:B7e,construct:F7e,predicate:z7e,represent:$7e}),V7e=Object.prototype.hasOwnProperty,U7e=Object.prototype.toString;o(H7e,"resolveYamlOmap");o(W7e,"constructYamlOmap");q7e=new _a("tag:yaml.org,2002:omap",{kind:"sequence",resolve:H7e,construct:W7e}),Y7e=Object.prototype.toString;o(X7e,"resolveYamlPairs");o(j7e,"constructYamlPairs");K7e=new _a("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:X7e,construct:j7e}),Q7e=Object.prototype.hasOwnProperty;o(Z7e,"resolveYamlSet");o(J7e,"constructYamlSet");eAe=new _a("tag:yaml.org,2002:set",{kind:"mapping",resolve:Z7e,construct:J7e}),mj=L7e.extend({implicit:[I7e,P7e],explicit:[G7e,q7e,K7e,eAe]}),Gh=Object.prototype.hasOwnProperty,vw=1,gj=2,yj=3,xw=4,iD=1,tAe=2,KX=3,rAe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,nAe=/[\x85\u2028\u2029]/,iAe=/[,\[\]\{\}]/,vj=/^(?:!|!!|![a-z\-]+!)$/i,xj=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;o(QX,"_class");o(dc,"is_EOL");o(Nd,"is_WHITE_SPACE");o(Ls,"is_WS_OR_EOL");o(am,"is_FLOW_INDICATOR");o(aAe,"fromHexCode");o(sAe,"escapedHexLen");o(oAe,"fromDecimalCode");o(ZX,"simpleEscapeSequence");o(lAe,"charFromCodepoint");bj=new Array(256),wj=new Array(256);for(Rd=0;Rd<256;Rd++)bj[Rd]=ZX(Rd)?1:0,wj[Rd]=ZX(Rd);o(cAe,"State$1");o(Tj,"generateError");o(Qt,"throwError");o(bw,"throwWarning");JX={YAML:o(function(e,r,n){var i,a,s;e.version!==null&&Qt(e,"duplication of %YAML directive"),n.length!==1&&Qt(e,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),i===null&&Qt(e,"ill-formed argument of the YAML directive"),a=parseInt(i[1],10),s=parseInt(i[2],10),a!==1&&Qt(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=s<2,s!==1&&s!==2&&bw(e,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:o(function(e,r,n){var i,a;n.length!==2&&Qt(e,"TAG directive accepts exactly two arguments"),i=n[0],a=n[1],vj.test(i)||Qt(e,"ill-formed tag handle (first argument) of the TAG directive"),Gh.call(e.tagMap,i)&&Qt(e,'there is a previously declared suffix for "'+i+'" tag handle'),xj.test(a)||Qt(e,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{Qt(e,"tag prefix is malformed: "+a)}e.tagMap[i]=a},"handleTagDirective")};o(zh,"captureSegment");o(ej,"mergeMappings");o(sm,"storeMappingPair");o(hD,"readLineBreak");o(Ci,"skipSeparationSpace");o(kw,"testDocumentSeparator");o(fD,"writeFoldedLines");o(uAe,"readPlainScalar");o(hAe,"readSingleQuotedScalar");o(fAe,"readDoubleQuotedScalar");o(dAe,"readFlowCollection");o(pAe,"readBlockScalar");o(tj,"readBlockSequence");o(mAe,"readBlockMapping");o(gAe,"readTagProperty");o(yAe,"readAnchorProperty");o(vAe,"readAlias");o(om,"composeNode");o(xAe,"readDocument");o(kj,"loadDocuments");o(bAe,"loadAll$1");o(wAe,"load$1");TAe=bAe,kAe=wAe,Ej={loadAll:TAe,load:kAe},Sj=Object.prototype.toString,Cj=Object.prototype.hasOwnProperty,dD=65279,EAe=9,l2=10,SAe=13,CAe=32,AAe=33,_Ae=34,sD=35,DAe=37,LAe=38,RAe=39,NAe=42,Aj=44,MAe=45,ww=58,IAe=61,OAe=62,PAe=63,BAe=64,_j=91,Dj=93,FAe=96,Lj=123,$Ae=124,Rj=125,Da={};Da[0]="\\0";Da[7]="\\a";Da[8]="\\b";Da[9]="\\t";Da[10]="\\n";Da[11]="\\v";Da[12]="\\f";Da[13]="\\r";Da[27]="\\e";Da[34]='\\"';Da[92]="\\\\";Da[133]="\\N";Da[160]="\\_";Da[8232]="\\L";Da[8233]="\\P";zAe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],GAe=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;o(VAe,"compileStyleMap");o(UAe,"encodeHex");HAe=1,c2=2;o(WAe,"State");o(rj,"indentString");o(oD,"generateNextLine");o(qAe,"testImplicitResolving");o(Tw,"isWhitespace");o(u2,"isPrintable");o(nj,"isNsCharOrWhitespace");o(ij,"isPlainSafe");o(YAe,"isPlainSafeFirst");o(XAe,"isPlainSafeLast");o(s2,"codePointAt");o(Nj,"needIndentIndicator");Mj=1,lD=2,Ij=3,Oj=4,im=5;o(jAe,"chooseScalarStyle");o(KAe,"writeScalar");o(aj,"blockHeader");o(sj,"dropEndingNewline");o(QAe,"foldString");o(oj,"foldLine");o(ZAe,"escapeString");o(JAe,"writeFlowSequence");o(lj,"writeBlockSequence");o(e8e,"writeFlowMapping");o(t8e,"writeBlockMapping");o(cj,"detectType");o(Au,"writeNode");o(r8e,"getDuplicateReferences");o(cD,"inspectNode");o(n8e,"dump$1");i8e=n8e,a8e={dump:i8e};o(pD,"renamed");lm=fj,cm=Ej.load,okt=Ej.loadAll,lkt=a8e.dump,ckt=pD("safeLoad","load"),ukt=pD("safeLoadAll","loadAll"),hkt=pD("safeDump","dump")});function vD(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function Gj(t){Id=t}function nn(t,e=""){let r=typeof t=="string"?t:t.source,n={replace:o((i,a)=>{let s=typeof a=="string"?a:a.source;return s=s.replace(ts.caret,"$1"),r=r.replace(i,s),n},"replace"),getRegex:o(()=>new RegExp(r,e),"getRegex")};return n}function pc(t,e){if(e){if(ts.escapeTest.test(t))return t.replace(ts.escapeReplace,Bj)}else if(ts.escapeTestNoEncode.test(t))return t.replace(ts.escapeReplaceNoEncode,Bj);return t}function Fj(t){try{t=encodeURI(t).replace(ts.percentDecode,"%")}catch{return null}return t}function $j(t,e){let r=t.replace(ts.findPipe,(a,s,l)=>{let u=!1,h=s;for(;--h>=0&&l[h]==="\\";)u=!u;return u?"|":" |"}),n=r.split(ts.splitPipe),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length{let s=a.match(r.other.beginningSpace);if(s===null)return a;let[l]=s;return l.length>=i.length?a.slice(i.length):a}).join(` +`)}function Jr(t,e){return Md.parse(t,e)}var Id,d2,ts,s8e,o8e,l8e,m2,c8e,xD,Vj,Uj,u8e,bD,h8e,wD,f8e,d8e,Aw,TD,p8e,Hj,m8e,kD,Pj,g8e,y8e,v8e,x8e,Wj,b8e,_w,ED,qj,w8e,Yj,T8e,k8e,E8e,Xj,S8e,C8e,jj,A8e,_8e,D8e,L8e,R8e,N8e,M8e,Cw,I8e,Kj,Qj,O8e,SD,P8e,gD,B8e,Sw,h2,F8e,Bj,hm,Al,fm,p2,_l,um,yD,Md,dkt,pkt,mkt,gkt,ykt,vkt,xkt,Zj=N(()=>{"use strict";o(vD,"_getDefaults");Id=vD();o(Gj,"changeDefaults");d2={exec:o(()=>null,"exec")};o(nn,"edit");ts={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:o(t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),"listItemRegex"),nextBulletRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),"nextBulletRegex"),hrRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),"hrRegex"),fencesBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),"fencesBeginRegex"),headingBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),"headingBeginRegex"),htmlBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i"),"htmlBeginRegex")},s8e=/^(?:[ \t]*(?:\n|$))+/,o8e=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,l8e=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,m2=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,c8e=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,xD=/(?:[*+-]|\d{1,9}[.)])/,Vj=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Uj=nn(Vj).replace(/bull/g,xD).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),u8e=nn(Vj).replace(/bull/g,xD).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),bD=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,h8e=/^[^\n]+/,wD=/(?!\s*\])(?:\\.|[^\[\]\\])+/,f8e=nn(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",wD).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),d8e=nn(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,xD).getRegex(),Aw="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|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",TD=/|$))/,p8e=nn("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",TD).replace("tag",Aw).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Hj=nn(bD).replace("hr",m2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Aw).getRegex(),m8e=nn(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Hj).getRegex(),kD={blockquote:m8e,code:o8e,def:f8e,fences:l8e,heading:c8e,hr:m2,html:p8e,lheading:Uj,list:d8e,newline:s8e,paragraph:Hj,table:d2,text:h8e},Pj=nn("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",m2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Aw).getRegex(),g8e={...kD,lheading:u8e,table:Pj,paragraph:nn(bD).replace("hr",m2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Pj).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Aw).getRegex()},y8e={...kD,html:nn(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",TD).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:d2,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:nn(bD).replace("hr",m2).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",Uj).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},v8e=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,x8e=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Wj=/^( {2,}|\\)\n(?!\s*$)/,b8e=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,Xj=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,S8e=nn(Xj,"u").replace(/punct/g,_w).getRegex(),C8e=nn(Xj,"u").replace(/punct/g,Yj).getRegex(),jj="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",A8e=nn(jj,"gu").replace(/notPunctSpace/g,qj).replace(/punctSpace/g,ED).replace(/punct/g,_w).getRegex(),_8e=nn(jj,"gu").replace(/notPunctSpace/g,k8e).replace(/punctSpace/g,T8e).replace(/punct/g,Yj).getRegex(),D8e=nn("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,qj).replace(/punctSpace/g,ED).replace(/punct/g,_w).getRegex(),L8e=nn(/\\(punct)/,"gu").replace(/punct/g,_w).getRegex(),R8e=nn(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),N8e=nn(TD).replace("(?:-->|$)","-->").getRegex(),M8e=nn("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",N8e).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Cw=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,I8e=nn(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",Cw).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Kj=nn(/^!?\[(label)\]\[(ref)\]/).replace("label",Cw).replace("ref",wD).getRegex(),Qj=nn(/^!?\[(ref)\](?:\[\])?/).replace("ref",wD).getRegex(),O8e=nn("reflink|nolink(?!\\()","g").replace("reflink",Kj).replace("nolink",Qj).getRegex(),SD={_backpedal:d2,anyPunctuation:L8e,autolink:R8e,blockSkip:E8e,br:Wj,code:x8e,del:d2,emStrongLDelim:S8e,emStrongRDelimAst:A8e,emStrongRDelimUnd:D8e,escape:v8e,link:I8e,nolink:Qj,punctuation:w8e,reflink:Kj,reflinkSearch:O8e,tag:M8e,text:b8e,url:d2},P8e={...SD,link:nn(/^!?\[(label)\]\((.*?)\)/).replace("label",Cw).getRegex(),reflink:nn(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Cw).getRegex()},gD={...SD,emStrongRDelimAst:_8e,emStrongLDelim:C8e,url:nn(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},Bj=o(t=>F8e[t],"getEscapeReplacement");o(pc,"escape");o(Fj,"cleanUrl");o($j,"splitCells");o(f2,"rtrim");o($8e,"findClosingBracket");o(zj,"outputLink");o(z8e,"indentCodeCompensation");hm=class{static{o(this,"_Tokenizer")}options;rules;lexer;constructor(e){this.options=e||Id}space(e){let r=this.rules.block.newline.exec(e);if(r&&r[0].length>0)return{type:"space",raw:r[0]}}code(e){let r=this.rules.block.code.exec(e);if(r){let n=r[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:r[0],codeBlockStyle:"indented",text:this.options.pedantic?n:f2(n,` +`)}}}fences(e){let r=this.rules.block.fences.exec(e);if(r){let n=r[0],i=z8e(n,r[3]||"",this.rules);return{type:"code",raw:n,lang:r[2]?r[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):r[2],text:i}}}heading(e){let r=this.rules.block.heading.exec(e);if(r){let n=r[2].trim();if(this.rules.other.endingHash.test(n)){let i=f2(n,"#");(this.options.pedantic||!i||this.rules.other.endingSpaceChar.test(i))&&(n=i.trim())}return{type:"heading",raw:r[0],depth:r[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let r=this.rules.block.hr.exec(e);if(r)return{type:"hr",raw:f2(r[0],` +`)}}blockquote(e){let r=this.rules.block.blockquote.exec(e);if(r){let n=f2(r[0],` +`).split(` +`),i="",a="",s=[];for(;n.length>0;){let l=!1,u=[],h;for(h=0;h1,a={type:"list",raw:"",ordered:i,start:i?+n.slice(0,-1):"",loose:!1,items:[]};n=i?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=i?n:"[*+-]");let s=this.rules.other.listItemRegex(n),l=!1;for(;e;){let h=!1,f="",d="";if(!(r=s.exec(e))||this.rules.block.hr.test(e))break;f=r[0],e=e.substring(f.length);let p=r[2].split(` +`,1)[0].replace(this.rules.other.listReplaceTabs,b=>" ".repeat(3*b.length)),m=e.split(` +`,1)[0],g=!p.trim(),y=0;if(this.options.pedantic?(y=2,d=p.trimStart()):g?y=r[1].length+1:(y=r[2].search(this.rules.other.nonSpaceChar),y=y>4?1:y,d=p.slice(y),y+=r[1].length),g&&this.rules.other.blankLine.test(m)&&(f+=m+` +`,e=e.substring(m.length+1),h=!0),!h){let b=this.rules.other.nextBulletRegex(y),w=this.rules.other.hrRegex(y),C=this.rules.other.fencesBeginRegex(y),T=this.rules.other.headingBeginRegex(y),E=this.rules.other.htmlBeginRegex(y);for(;e;){let A=e.split(` +`,1)[0],S;if(m=A,this.options.pedantic?(m=m.replace(this.rules.other.listReplaceNesting," "),S=m):S=m.replace(this.rules.other.tabCharGlobal," "),C.test(m)||T.test(m)||E.test(m)||b.test(m)||w.test(m))break;if(S.search(this.rules.other.nonSpaceChar)>=y||!m.trim())d+=` +`+S.slice(y);else{if(g||p.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||C.test(p)||T.test(p)||w.test(p))break;d+=` +`+m}!g&&!m.trim()&&(g=!0),f+=A+` +`,e=e.substring(A.length+1),p=S.slice(y)}}a.loose||(l?a.loose=!0:this.rules.other.doubleBlankLine.test(f)&&(l=!0));let v=null,x;this.options.gfm&&(v=this.rules.other.listIsTask.exec(d),v&&(x=v[0]!=="[ ] ",d=d.replace(this.rules.other.listReplaceTask,""))),a.items.push({type:"list_item",raw:f,task:!!v,checked:x,loose:!1,text:d,tokens:[]}),a.raw+=f}let u=a.items.at(-1);if(u)u.raw=u.raw.trimEnd(),u.text=u.text.trimEnd();else return;a.raw=a.raw.trimEnd();for(let h=0;hp.type==="space"),d=f.length>0&&f.some(p=>this.rules.other.anyLine.test(p.raw));a.loose=d}if(a.loose)for(let h=0;h({text:u,tokens:this.lexer.inline(u),header:!1,align:s.align[h]})));return s}}lheading(e){let r=this.rules.block.lheading.exec(e);if(r)return{type:"heading",raw:r[0],depth:r[2].charAt(0)==="="?1:2,text:r[1],tokens:this.lexer.inline(r[1])}}paragraph(e){let r=this.rules.block.paragraph.exec(e);if(r){let n=r[1].charAt(r[1].length-1)===` +`?r[1].slice(0,-1):r[1];return{type:"paragraph",raw:r[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let r=this.rules.block.text.exec(e);if(r)return{type:"text",raw:r[0],text:r[0],tokens:this.lexer.inline(r[0])}}escape(e){let r=this.rules.inline.escape.exec(e);if(r)return{type:"escape",raw:r[0],text:r[1]}}tag(e){let r=this.rules.inline.tag.exec(e);if(r)return!this.lexer.state.inLink&&this.rules.other.startATag.test(r[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(r[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(r[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(r[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:r[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:r[0]}}link(e){let r=this.rules.inline.link.exec(e);if(r){let n=r[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=f2(n.slice(0,-1),"\\");if((n.length-s.length)%2===0)return}else{let s=$8e(r[2],"()");if(s>-1){let u=(r[0].indexOf("!")===0?5:4)+r[1].length+s;r[2]=r[2].substring(0,s),r[0]=r[0].substring(0,u).trim(),r[3]=""}}let i=r[2],a="";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(i);s&&(i=s[1],a=s[3])}else a=r[3]?r[3].slice(1,-1):"";return i=i.trim(),this.rules.other.startAngleBracket.test(i)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?i=i.slice(1):i=i.slice(1,-1)),zj(r,{href:i&&i.replace(this.rules.inline.anyPunctuation,"$1"),title:a&&a.replace(this.rules.inline.anyPunctuation,"$1")},r[0],this.lexer,this.rules)}}reflink(e,r){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let i=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),a=r[i.toLowerCase()];if(!a){let s=n[0].charAt(0);return{type:"text",raw:s,text:s}}return zj(n,a,n[0],this.lexer,this.rules)}}emStrong(e,r,n=""){let i=this.rules.inline.emStrongLDelim.exec(e);if(!i||i[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(i[1]||i[2]||"")||!n||this.rules.inline.punctuation.exec(n)){let s=[...i[0]].length-1,l,u,h=s,f=0,d=i[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(d.lastIndex=0,r=r.slice(-1*e.length+s);(i=d.exec(r))!=null;){if(l=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!l)continue;if(u=[...l].length,i[3]||i[4]){h+=u;continue}else if((i[5]||i[6])&&s%3&&!((s+u)%3)){f+=u;continue}if(h-=u,h>0)continue;u=Math.min(u,u+h+f);let p=[...i[0]][0].length,m=e.slice(0,s+i.index+p+u);if(Math.min(s,u)%2){let y=m.slice(1,-1);return{type:"em",raw:m,text:y,tokens:this.lexer.inlineTokens(y)}}let g=m.slice(2,-2);return{type:"strong",raw:m,text:g,tokens:this.lexer.inlineTokens(g)}}}}codespan(e){let r=this.rules.inline.code.exec(e);if(r){let n=r[2].replace(this.rules.other.newLineCharGlobal," "),i=this.rules.other.nonSpaceChar.test(n),a=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return i&&a&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:r[0],text:n}}}br(e){let r=this.rules.inline.br.exec(e);if(r)return{type:"br",raw:r[0]}}del(e){let r=this.rules.inline.del.exec(e);if(r)return{type:"del",raw:r[0],text:r[2],tokens:this.lexer.inlineTokens(r[2])}}autolink(e){let r=this.rules.inline.autolink.exec(e);if(r){let n,i;return r[2]==="@"?(n=r[1],i="mailto:"+n):(n=r[1],i=n),{type:"link",raw:r[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let r;if(r=this.rules.inline.url.exec(e)){let n,i;if(r[2]==="@")n=r[0],i="mailto:"+n;else{let a;do a=r[0],r[0]=this.rules.inline._backpedal.exec(r[0])?.[0]??"";while(a!==r[0]);n=r[0],r[1]==="www."?i="http://"+r[0]:i=r[0]}return{type:"link",raw:r[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e){let r=this.rules.inline.text.exec(e);if(r){let n=this.lexer.state.inRawBlock;return{type:"text",raw:r[0],text:r[0],escaped:n}}}},Al=class t{static{o(this,"_Lexer")}tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Id,this.options.tokenizer=this.options.tokenizer||new hm,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:ts,block:Sw.normal,inline:h2.normal};this.options.pedantic?(r.block=Sw.pedantic,r.inline=h2.pedantic):this.options.gfm&&(r.block=Sw.gfm,this.options.breaks?r.inline=h2.breaks:r.inline=h2.gfm),this.tokenizer.rules=r}static get rules(){return{block:Sw,inline:h2}}static lex(e,r){return new t(r).lex(e)}static lexInline(e,r){return new t(r).inlineTokens(e)}lex(e){e=e.replace(ts.carriageReturn,` +`),this.blockTokens(e,this.tokens);for(let r=0;r(i=s.call({lexer:this},e,r))?(e=e.substring(i.raw.length),r.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let s=r.at(-1);i.raw.length===1&&s!==void 0?s.raw+=` +`:r.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=` +`+i.raw,s.text+=` +`+i.text,this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=` +`+i.raw,s.text+=` +`+i.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title});continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),r.push(i);continue}let a=e;if(this.options.extensions?.startBlock){let s=1/0,l=e.slice(1),u;this.options.extensions.startBlock.forEach(h=>{u=h.call({lexer:this},l),typeof u=="number"&&u>=0&&(s=Math.min(s,u))}),s<1/0&&s>=0&&(a=e.substring(0,s+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let s=r.at(-1);n&&s?.type==="paragraph"?(s.raw+=` +`+i.raw,s.text+=` +`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i),n=a.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="text"?(s.raw+=` +`+i.raw,s.text+=` +`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(e){let s="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,r}inline(e,r=[]){return this.inlineQueue.push({src:e,tokens:r}),r}inlineTokens(e,r=[]){let n=e,i=null;if(this.tokens.links){let l=Object.keys(this.tokens.links);if(l.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)l.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(i=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,i.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let a=!1,s="";for(;e;){a||(s=""),a=!1;let l;if(this.options.extensions?.inline?.some(h=>(l=h.call({lexer:this},e,r))?(e=e.substring(l.raw.length),r.push(l),!0):!1))continue;if(l=this.tokenizer.escape(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.tag(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.link(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(l.raw.length);let h=r.at(-1);l.type==="text"&&h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(l=this.tokenizer.emStrong(e,n,s)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.codespan(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.br(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.del(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.autolink(e)){e=e.substring(l.raw.length),r.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(e))){e=e.substring(l.raw.length),r.push(l);continue}let u=e;if(this.options.extensions?.startInline){let h=1/0,f=e.slice(1),d;this.options.extensions.startInline.forEach(p=>{d=p.call({lexer:this},f),typeof d=="number"&&d>=0&&(h=Math.min(h,d))}),h<1/0&&h>=0&&(u=e.substring(0,h+1))}if(l=this.tokenizer.inlineText(u)){e=e.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(s=l.raw.slice(-1)),a=!0;let h=r.at(-1);h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(e){let h="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(h);break}else throw new Error(h)}}return r}},fm=class{static{o(this,"_Renderer")}options;parser;constructor(e){this.options=e||Id}space(e){return""}code({text:e,lang:r,escaped:n}){let i=(r||"").match(ts.notSpaceStart)?.[0],a=e.replace(ts.endingNewline,"")+` +`;return i?'
'+(n?a:pc(a,!0))+`
+`:"
"+(n?a:pc(a,!0))+`
+`}blockquote({tokens:e}){return`
+${this.parser.parse(e)}
+`}html({text:e}){return e}heading({tokens:e,depth:r}){return`${this.parser.parseInline(e)} +`}hr(e){return`
+`}list(e){let r=e.ordered,n=e.start,i="";for(let l=0;l +`+i+" +`}listitem(e){let r="";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type==="paragraph"?(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type==="text"&&(e.tokens[0].tokens[0].text=n+" "+pc(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:n+" ",text:n+" ",escaped:!0}):r+=n+" "}return r+=this.parser.parse(e.tokens,!!e.loose),`
  • ${r}
  • +`}checkbox({checked:e}){return"'}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    +`}table(e){let r="",n="";for(let a=0;a${i}`),` + +`+r+` +`+i+`
    +`}tablerow({text:e}){return` +${e} +`}tablecell(e){let r=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+r+` +`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${pc(e,!0)}`}br(e){return"
    "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:r,tokens:n}){let i=this.parser.parseInline(n),a=Fj(e);if(a===null)return i;e=a;let s='
    ",s}image({href:e,title:r,text:n}){let i=Fj(e);if(i===null)return pc(n);e=i;let a=`${n}{let l=a[s].flat(1/0);n=n.concat(this.walkTokens(l,r))}):a.tokens&&(n=n.concat(this.walkTokens(a.tokens,r)))}}return n}use(...e){let r=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let i={...n};if(i.async=this.defaults.async||i.async||!1,n.extensions&&(n.extensions.forEach(a=>{if(!a.name)throw new Error("extension name required");if("renderer"in a){let s=r.renderers[a.name];s?r.renderers[a.name]=function(...l){let u=a.renderer.apply(this,l);return u===!1&&(u=s.apply(this,l)),u}:r.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||a.level!=="block"&&a.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let s=r[a.level];s?s.unshift(a.tokenizer):r[a.level]=[a.tokenizer],a.start&&(a.level==="block"?r.startBlock?r.startBlock.push(a.start):r.startBlock=[a.start]:a.level==="inline"&&(r.startInline?r.startInline.push(a.start):r.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(r.childTokens[a.name]=a.childTokens)}),i.extensions=r),n.renderer){let a=this.defaults.renderer||new fm(this.defaults);for(let s in n.renderer){if(!(s in a))throw new Error(`renderer '${s}' does not exist`);if(["options","parser"].includes(s))continue;let l=s,u=n.renderer[l],h=a[l];a[l]=(...f)=>{let d=u.apply(a,f);return d===!1&&(d=h.apply(a,f)),d||""}}i.renderer=a}if(n.tokenizer){let a=this.defaults.tokenizer||new hm(this.defaults);for(let s in n.tokenizer){if(!(s in a))throw new Error(`tokenizer '${s}' does not exist`);if(["options","rules","lexer"].includes(s))continue;let l=s,u=n.tokenizer[l],h=a[l];a[l]=(...f)=>{let d=u.apply(a,f);return d===!1&&(d=h.apply(a,f)),d}}i.tokenizer=a}if(n.hooks){let a=this.defaults.hooks||new um;for(let s in n.hooks){if(!(s in a))throw new Error(`hook '${s}' does not exist`);if(["options","block"].includes(s))continue;let l=s,u=n.hooks[l],h=a[l];um.passThroughHooks.has(s)?a[l]=f=>{if(this.defaults.async)return Promise.resolve(u.call(a,f)).then(p=>h.call(a,p));let d=u.call(a,f);return h.call(a,d)}:a[l]=(...f)=>{let d=u.apply(a,f);return d===!1&&(d=h.apply(a,f)),d}}i.hooks=a}if(n.walkTokens){let a=this.defaults.walkTokens,s=n.walkTokens;i.walkTokens=function(l){let u=[];return u.push(s.call(this,l)),a&&(u=u.concat(a.call(this,l))),u}}this.defaults={...this.defaults,...i}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,r){return Al.lex(e,r??this.defaults)}parser(e,r){return _l.parse(e,r??this.defaults)}parseMarkdown(e){return o((n,i)=>{let a={...i},s={...this.defaults,...a},l=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&a.async===!1)return l(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof n>"u"||n===null)return l(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));s.hooks&&(s.hooks.options=s,s.hooks.block=e);let u=s.hooks?s.hooks.provideLexer():e?Al.lex:Al.lexInline,h=s.hooks?s.hooks.provideParser():e?_l.parse:_l.parseInline;if(s.async)return Promise.resolve(s.hooks?s.hooks.preprocess(n):n).then(f=>u(f,s)).then(f=>s.hooks?s.hooks.processAllTokens(f):f).then(f=>s.walkTokens?Promise.all(this.walkTokens(f,s.walkTokens)).then(()=>f):f).then(f=>h(f,s)).then(f=>s.hooks?s.hooks.postprocess(f):f).catch(l);try{s.hooks&&(n=s.hooks.preprocess(n));let f=u(n,s);s.hooks&&(f=s.hooks.processAllTokens(f)),s.walkTokens&&this.walkTokens(f,s.walkTokens);let d=h(f,s);return s.hooks&&(d=s.hooks.postprocess(d)),d}catch(f){return l(f)}},"parse")}onError(e,r){return n=>{if(n.message+=` +Please report this to https://github.com/markedjs/marked.`,e){let i="

    An error occurred:

    "+pc(n.message+"",!0)+"
    ";return r?Promise.resolve(i):i}if(r)return Promise.reject(n);throw n}}},Md=new yD;o(Jr,"marked");Jr.options=Jr.setOptions=function(t){return Md.setOptions(t),Jr.defaults=Md.defaults,Gj(Jr.defaults),Jr};Jr.getDefaults=vD;Jr.defaults=Id;Jr.use=function(...t){return Md.use(...t),Jr.defaults=Md.defaults,Gj(Jr.defaults),Jr};Jr.walkTokens=function(t,e){return Md.walkTokens(t,e)};Jr.parseInline=Md.parseInline;Jr.Parser=_l;Jr.parser=_l.parse;Jr.Renderer=fm;Jr.TextRenderer=p2;Jr.Lexer=Al;Jr.lexer=Al.lex;Jr.Tokenizer=hm;Jr.Hooks=um;Jr.parse=Jr;dkt=Jr.options,pkt=Jr.setOptions,mkt=Jr.use,gkt=Jr.walkTokens,ykt=Jr.parseInline,vkt=_l.parse,xkt=Al.lex});function G8e(t,{markdownAutoWrap:e}){let n=t.replace(//g,` +`).replace(/\n{2,}/g,` +`),i=B4(n);return e===!1?i.replace(/ /g," "):i}function Jj(t,e={}){let r=G8e(t,e),n=Jr.lexer(r),i=[[]],a=0;function s(l,u="normal"){l.type==="text"?l.text.split(` +`).forEach((f,d)=>{d!==0&&(a++,i.push([])),f.split(" ").forEach(p=>{p=p.replace(/'/g,"'"),p&&i[a].push({content:p,type:u})})}):l.type==="strong"||l.type==="em"?l.tokens.forEach(h=>{s(h,l.type)}):l.type==="html"&&i[a].push({content:l.text,type:"normal"})}return o(s,"processNode"),n.forEach(l=>{l.type==="paragraph"?l.tokens?.forEach(u=>{s(u)}):l.type==="html"&&i[a].push({content:l.text,type:"normal"})}),i}function eK(t,{markdownAutoWrap:e}={}){let r=Jr.lexer(t);function n(i){return i.type==="text"?e===!1?i.text.replace(/\n */g,"
    ").replace(/ /g," "):i.text.replace(/\n */g,"
    "):i.type==="strong"?`${i.tokens?.map(n).join("")}`:i.type==="em"?`${i.tokens?.map(n).join("")}`:i.type==="paragraph"?`

    ${i.tokens?.map(n).join("")}

    `:i.type==="space"?"":i.type==="html"?`${i.text}`:i.type==="escape"?i.text:`Unsupported markdown: ${i.type}`}return o(n,"output"),r.map(n).join("")}var tK=N(()=>{"use strict";Zj();PC();o(G8e,"preprocessMarkdown");o(Jj,"markdownToLines");o(eK,"markdownToHTML")});function V8e(t){return Intl.Segmenter?[...new Intl.Segmenter().segment(t)].map(e=>e.segment):[...t]}function U8e(t,e){let r=V8e(e.content);return rK(t,[],r,e.type)}function rK(t,e,r,n){if(r.length===0)return[{content:e.join(""),type:n},{content:"",type:n}];let[i,...a]=r,s=[...e,i];return t([{content:s.join(""),type:n}])?rK(t,s,a,n):(e.length===0&&i&&(e.push(i),r.shift()),[{content:e.join(""),type:n},{content:r.join(""),type:n}])}function nK(t,e){if(t.some(({content:r})=>r.includes(` +`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return CD(t,e)}function CD(t,e,r=[],n=[]){if(t.length===0)return n.length>0&&r.push(n),r.length>0?r:[];let i="";t[0].content===" "&&(i=" ",t.shift());let a=t.shift()??{content:" ",type:"normal"},s=[...n];if(i!==""&&s.push({content:i,type:"normal"}),s.push(a),e(s))return CD(t,e,r,s);if(n.length>0)r.push(n),t.unshift(a);else if(a.content){let[l,u]=U8e(e,a);r.push([l]),u.content&&t.unshift(u)}return CD(t,e,r)}var iK=N(()=>{"use strict";o(V8e,"splitTextToChars");o(U8e,"splitWordToFitWidth");o(rK,"splitWordToFitWidthRecursion");o(nK,"splitLineToFitWidth");o(CD,"splitLineToFitWidthRecursion")});function aK(t,e){e&&t.attr("style",e)}async function H8e(t,e,r,n,i=!1){let a=t.append("foreignObject");a.attr("width",`${10*r}px`),a.attr("height",`${10*r}px`);let s=a.append("xhtml:div"),l=e.label;e.label&&pi(e.label)&&(l=await mh(e.label.replace(Ze.lineBreakRegex,` +`),me()));let u=e.isNode?"nodeLabel":"edgeLabel",h=s.append("span");h.html(l),aK(h,e.labelStyle),h.attr("class",`${u} ${n}`),aK(s,e.labelStyle),s.style("display","table-cell"),s.style("white-space","nowrap"),s.style("line-height","1.5"),s.style("max-width",r+"px"),s.style("text-align","center"),s.attr("xmlns","http://www.w3.org/1999/xhtml"),i&&s.attr("class","labelBkg");let f=s.node().getBoundingClientRect();return f.width===r&&(s.style("display","table"),s.style("white-space","break-spaces"),s.style("width",r+"px"),f=s.node().getBoundingClientRect()),a.node()}function AD(t,e,r){return t.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",e*r-.1+"em").attr("dy",r+"em")}function W8e(t,e,r){let n=t.append("text"),i=AD(n,1,e);_D(i,r);let a=i.node().getComputedTextLength();return n.remove(),a}function sK(t,e,r){let n=t.append("text"),i=AD(n,1,e);_D(i,[{content:r,type:"normal"}]);let a=i.node()?.getBoundingClientRect();return a&&n.remove(),a}function q8e(t,e,r,n=!1){let a=e.append("g"),s=a.insert("rect").attr("class","background").attr("style","stroke: none"),l=a.append("text").attr("y","-10.1"),u=0;for(let h of r){let f=o(p=>W8e(a,1.1,p)<=t,"checkWidth"),d=f(h)?[h]:nK(h,f);for(let p of d){let m=AD(l,u,1.1);_D(m,p),u++}}if(n){let h=l.node().getBBox(),f=2;return s.attr("x",h.x-f).attr("y",h.y-f).attr("width",h.width+2*f).attr("height",h.height+2*f),a.node()}else return l.node()}function _D(t,e){t.text(""),e.forEach((r,n)=>{let i=t.append("tspan").attr("font-style",r.type==="em"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",r.type==="strong"?"bold":"normal");n===0?i.text(r.content):i.text(" "+r.content)})}function DD(t){return t.replace(/fa[bklrs]?:fa-[\w-]+/g,e=>``)}var Hn,to=N(()=>{"use strict";zt();gr();dr();vt();tK();ir();iK();o(aK,"applyStyle");o(H8e,"addHtmlSpan");o(AD,"createTspan");o(W8e,"computeWidthOfText");o(sK,"computeDimensionOfText");o(q8e,"createFormattedText");o(_D,"updateTextContentAndStyles");o(DD,"replaceIconSubstring");Hn=o(async(t,e="",{style:r="",isTitle:n=!1,classes:i="",useHtmlLabels:a=!0,isNode:s=!0,width:l=200,addSvgBackground:u=!1}={},h)=>{if(Y.debug("XYZ createText",e,r,n,i,a,s,"addSvgBackground: ",u),a){let f=eK(e,h),d=DD(na(f)),p=e.replace(/\\\\/g,"\\"),m={isNode:s,label:pi(e)?p:d,labelStyle:r.replace("fill:","color:")};return await H8e(t,m,l,i,u)}else{let f=e.replace(//g,"
    "),d=Jj(f.replace("
    ","
    "),h),p=q8e(l,t,d,e?u:!1);if(s){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));let m=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");Ge(p).attr("style",m)}else{let m=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");Ge(p).select("rect").attr("style",m.replace(/background:/g,"fill:"));let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");Ge(p).select("text").attr("style",g)}return p}},"createText")});function Xt(t){let e=t.map((r,n)=>`${n===0?"M":"L"}${r.x},${r.y}`);return e.push("Z"),e.join(" ")}function Fo(t,e,r,n,i,a){let s=[],u=r-t,h=n-e,f=u/a,d=2*Math.PI/f,p=e+h/2;for(let m=0;m<=50;m++){let g=m/50,y=t+g*u,v=p+i*Math.sin(d*(y-t));s.push({x:y,y:v})}return s}function Lw(t,e,r,n,i,a){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;d{"use strict";to();zt();dr();Ya();gr();ir();pt=o(async(t,e,r)=>{let n,i=e.useHtmlLabels||fr(me()?.htmlLabels);r?n=r:n="node default";let a=t.insert("g").attr("class",n).attr("id",e.domId||e.id),s=a.insert("g").attr("class","label").attr("style",$n(e.labelStyle)),l;e.label===void 0?l="":l=typeof e.label=="string"?e.label:e.label[0];let u=await Hn(s,Tr(na(l),me()),{useHtmlLabels:i,width:e.width||me().flowchart?.wrappingWidth,cssClasses:"markdown-node-label",style:e.labelStyle,addSvgBackground:!!e.icon||!!e.img}),h=u.getBBox(),f=(e?.padding??0)/2;if(i){let d=u.children[0],p=Ge(u),m=d.getElementsByTagName("img");if(m){let g=l.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=me().fontSize?me().fontSize:window.getComputedStyle(document.body).fontSize,w=5,[C=or.fontSize]=Bo(b),T=C*w+"px";y.style.minWidth=T,y.style.maxWidth=T}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=d.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}return i?s.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"):s.attr("transform","translate(0, "+-h.height/2+")"),e.centerLabel&&s.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),s.insert("rect",":first-child"),{shapeSvg:a,bbox:h,halfPadding:f,label:s}},"labelHelper"),Dw=o(async(t,e,r)=>{let n=r.useHtmlLabels||fr(me()?.flowchart?.htmlLabels),i=t.insert("g").attr("class","label").attr("style",r.labelStyle||""),a=await Hn(i,Tr(na(e),me()),{useHtmlLabels:n,width:r.width||me()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img}),s=a.getBBox(),l=r.padding/2;if(fr(me()?.flowchart?.htmlLabels)){let u=a.children[0],h=Ge(a);s=u.getBoundingClientRect(),h.attr("width",s.width),h.attr("height",s.height)}return n?i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"):i.attr("transform","translate(0, "+-s.height/2+")"),r.centerLabel&&i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),i.insert("rect",":first-child"),{shapeSvg:t,bbox:s,halfPadding:l,label:i}},"insertLabel"),je=o((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds"),ht=o((t,e)=>(t.look==="handDrawn"?"rough-node":"node")+" "+t.cssClasses+" "+(e||""),"getNodeClasses");o(Xt,"createPathFromPoints");o(Fo,"generateFullSineWavePoints");o(Lw,"generateCirclePoints")});function Y8e(t,e){return t.intersect(e)}var oK,lK=N(()=>{"use strict";o(Y8e,"intersectNode");oK=Y8e});function X8e(t,e,r,n){var i=t.x,a=t.y,s=i-n.x,l=a-n.y,u=Math.sqrt(e*e*l*l+r*r*s*s),h=Math.abs(e*r*s/u);n.x{"use strict";o(X8e,"intersectEllipse");Rw=X8e});function j8e(t,e,r){return Rw(t,e,e,r)}var cK,uK=N(()=>{"use strict";LD();o(j8e,"intersectCircle");cK=j8e});function K8e(t,e,r,n){var i,a,s,l,u,h,f,d,p,m,g,y,v,x,b;if(i=e.y-t.y,s=t.x-e.x,u=e.x*t.y-t.x*e.y,p=i*r.x+s*r.y+u,m=i*n.x+s*n.y+u,!(p!==0&&m!==0&&hK(p,m))&&(a=n.y-r.y,l=r.x-n.x,h=n.x*r.y-r.x*n.y,f=a*t.x+l*t.y+h,d=a*e.x+l*e.y+h,!(f!==0&&d!==0&&hK(f,d))&&(g=i*l-a*s,g!==0)))return y=Math.abs(g/2),v=s*h-l*u,x=v<0?(v-y)/g:(v+y)/g,v=a*u-i*h,b=v<0?(v-y)/g:(v+y)/g,{x,y:b}}function hK(t,e){return t*e>0}var fK,dK=N(()=>{"use strict";o(K8e,"intersectLine");o(hK,"sameSign");fK=K8e});function Q8e(t,e,r){let n=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof e.forEach=="function"?e.forEach(function(f){s=Math.min(s,f.x),l=Math.min(l,f.y)}):(s=Math.min(s,e.x),l=Math.min(l,e.y));let u=n-t.width/2-s,h=i-t.height/2-l;for(let f=0;f1&&a.sort(function(f,d){let p=f.x-r.x,m=f.y-r.y,g=Math.sqrt(p*p+m*m),y=d.x-r.x,v=d.y-r.y,x=Math.sqrt(y*y+v*v);return g{"use strict";dK();o(Q8e,"intersectPolygon");pK=Q8e});var Z8e,Vh,RD=N(()=>{"use strict";Z8e=o((t,e)=>{var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),Vh=Z8e});var Ye,Ht=N(()=>{"use strict";lK();uK();LD();mK();RD();Ye={node:oK,circle:cK,ellipse:Rw,polygon:pK,rect:Vh}});var gK,mc,J8e,ND,Qe,Ke,Ut=N(()=>{"use strict";zt();gK=o(t=>{let{handDrawnSeed:e}=me();return{fill:t,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:t,seed:e}},"solidStateFill"),mc=o(t=>{let e=J8e([...t.cssCompiledStyles||[],...t.cssStyles||[]]);return{stylesMap:e,stylesArray:[...e]}},"compileStyles"),J8e=o(t=>{let e=new Map;return t.forEach(r=>{let[n,i]=r.split(":");e.set(n.trim(),i?.trim())}),e},"styles2Map"),ND=o(t=>t==="color"||t==="font-size"||t==="font-family"||t==="font-weight"||t==="font-style"||t==="text-decoration"||t==="text-align"||t==="text-transform"||t==="line-height"||t==="letter-spacing"||t==="word-spacing"||t==="text-shadow"||t==="text-overflow"||t==="white-space"||t==="word-wrap"||t==="word-break"||t==="overflow-wrap"||t==="hyphens","isLabelStyle"),Qe=o(t=>{let{stylesArray:e}=mc(t),r=[],n=[],i=[],a=[];return e.forEach(s=>{let l=s[0];ND(l)?r.push(s.join(":")+" !important"):(n.push(s.join(":")+" !important"),l.includes("stroke")&&i.push(s.join(":")+" !important"),l==="fill"&&a.push(s.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:n.join(";"),stylesArray:e,borderStyles:i,backgroundStyles:a}},"styles2String"),Ke=o((t,e)=>{let{themeVariables:r,handDrawnSeed:n}=me(),{nodeBorder:i,mainBkg:a}=r,{stylesMap:s}=mc(t);return Object.assign({roughness:.7,fill:s.get("fill")||a,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:s.get("stroke")||i,seed:n,strokeWidth:s.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0]},e)},"userNodeOverrides")});function MD(t,e,r){if(t&&t.length){let[n,i]=e,a=Math.PI/180*r,s=Math.cos(a),l=Math.sin(a);for(let u of t){let[h,f]=u;u[0]=(h-n)*s-(f-i)*l+n,u[1]=(h-n)*l+(f-i)*s+i}}}function e_e(t,e){return t[0]===e[0]&&t[1]===e[1]}function t_e(t,e,r,n=1){let i=r,a=Math.max(e,.1),s=t[0]&&t[0][0]&&typeof t[0][0]=="number"?[t]:t,l=[0,0];if(i)for(let h of s)MD(h,l,i);let u=function(h,f,d){let p=[];for(let b of h){let w=[...b];e_e(w[0],w[w.length-1])||w.push([w[0][0],w[0][1]]),w.length>2&&p.push(w)}let m=[];f=Math.max(f,.1);let g=[];for(let b of p)for(let w=0;wb.yminw.ymin?1:b.xw.x?1:b.ymax===w.ymax?0:(b.ymax-w.ymax)/Math.abs(b.ymax-w.ymax)),!g.length)return m;let y=[],v=g[0].ymin,x=0;for(;y.length||g.length;){if(g.length){let b=-1;for(let w=0;wv);w++)b=w;g.splice(0,b+1).forEach(w=>{y.push({s:v,edge:w})})}if(y=y.filter(b=>!(b.edge.ymax<=v)),y.sort((b,w)=>b.edge.x===w.edge.x?0:(b.edge.x-w.edge.x)/Math.abs(b.edge.x-w.edge.x)),(d!==1||x%f==0)&&y.length>1)for(let b=0;b=y.length)break;let C=y[b].edge,T=y[w].edge;m.push([[Math.round(C.x),v],[Math.round(T.x),v]])}v+=d,y.forEach(b=>{b.edge.x=b.edge.x+d*b.edge.islope}),x++}return m}(s,a,n);if(i){for(let h of s)MD(h,l,-i);(function(h,f,d){let p=[];h.forEach(m=>p.push(...m)),MD(p,f,d)})(u,l,-i)}return u}function x2(t,e){var r;let n=e.hachureAngle+90,i=e.hachureGap;i<0&&(i=4*e.strokeWidth),i=Math.round(Math.max(i,.1));let a=1;return e.roughness>=1&&(((r=e.randomizer)===null||r===void 0?void 0:r.next())||Math.random())>.7&&(a=i),t_e(t,i,n,a||1)}function zw(t){let e=t[0],r=t[1];return Math.sqrt(Math.pow(e[0]-r[0],2)+Math.pow(e[1]-r[1],2))}function OD(t,e){return t.type===e}function jD(t){let e=[],r=function(s){let l=new Array;for(;s!=="";)if(s.match(/^([ \t\r\n,]+)/))s=s.substr(RegExp.$1.length);else if(s.match(/^([aAcChHlLmMqQsStTvVzZ])/))l[l.length]={type:r_e,text:RegExp.$1},s=s.substr(RegExp.$1.length);else{if(!s.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];l[l.length]={type:ID,text:`${parseFloat(RegExp.$1)}`},s=s.substr(RegExp.$1.length)}return l[l.length]={type:yK,text:""},l}(t),n="BOD",i=0,a=r[i];for(;!OD(a,yK);){let s=0,l=[];if(n==="BOD"){if(a.text!=="M"&&a.text!=="m")return jD("M0,0"+t);i++,s=Nw[a.text],n=a.text}else OD(a,ID)?s=Nw[n]:(i++,s=Nw[a.text],n=a.text);if(!(i+sf%2?h+r:h+e);a.push({key:"C",data:u}),e=u[4],r=u[5];break}case"Q":a.push({key:"Q",data:[...l]}),e=l[2],r=l[3];break;case"q":{let u=l.map((h,f)=>f%2?h+r:h+e);a.push({key:"Q",data:u}),e=u[2],r=u[3];break}case"A":a.push({key:"A",data:[...l]}),e=l[5],r=l[6];break;case"a":e+=l[5],r+=l[6],a.push({key:"A",data:[l[0],l[1],l[2],l[3],l[4],e,r]});break;case"H":a.push({key:"H",data:[...l]}),e=l[0];break;case"h":e+=l[0],a.push({key:"H",data:[e]});break;case"V":a.push({key:"V",data:[...l]}),r=l[0];break;case"v":r+=l[0],a.push({key:"V",data:[r]});break;case"S":a.push({key:"S",data:[...l]}),e=l[2],r=l[3];break;case"s":{let u=l.map((h,f)=>f%2?h+r:h+e);a.push({key:"S",data:u}),e=u[2],r=u[3];break}case"T":a.push({key:"T",data:[...l]}),e=l[0],r=l[1];break;case"t":e+=l[0],r+=l[1],a.push({key:"T",data:[e,r]});break;case"Z":case"z":a.push({key:"Z",data:[]}),e=n,r=i}return a}function CK(t){let e=[],r="",n=0,i=0,a=0,s=0,l=0,u=0;for(let{key:h,data:f}of t){switch(h){case"M":e.push({key:"M",data:[...f]}),[n,i]=f,[a,s]=f;break;case"C":e.push({key:"C",data:[...f]}),n=f[4],i=f[5],l=f[2],u=f[3];break;case"L":e.push({key:"L",data:[...f]}),[n,i]=f;break;case"H":n=f[0],e.push({key:"L",data:[n,i]});break;case"V":i=f[0],e.push({key:"L",data:[n,i]});break;case"S":{let d=0,p=0;r==="C"||r==="S"?(d=n+(n-l),p=i+(i-u)):(d=n,p=i),e.push({key:"C",data:[d,p,...f]}),l=f[0],u=f[1],n=f[2],i=f[3];break}case"T":{let[d,p]=f,m=0,g=0;r==="Q"||r==="T"?(m=n+(n-l),g=i+(i-u)):(m=n,g=i);let y=n+2*(m-n)/3,v=i+2*(g-i)/3,x=d+2*(m-d)/3,b=p+2*(g-p)/3;e.push({key:"C",data:[y,v,x,b,d,p]}),l=m,u=g,n=d,i=p;break}case"Q":{let[d,p,m,g]=f,y=n+2*(d-n)/3,v=i+2*(p-i)/3,x=m+2*(d-m)/3,b=g+2*(p-g)/3;e.push({key:"C",data:[y,v,x,b,m,g]}),l=d,u=p,n=m,i=g;break}case"A":{let d=Math.abs(f[0]),p=Math.abs(f[1]),m=f[2],g=f[3],y=f[4],v=f[5],x=f[6];d===0||p===0?(e.push({key:"C",data:[n,i,v,x,v,x]}),n=v,i=x):(n!==v||i!==x)&&(AK(n,i,v,x,d,p,m,g,y).forEach(function(b){e.push({key:"C",data:b})}),n=v,i=x);break}case"Z":e.push({key:"Z",data:[]}),n=a,i=s}r=h}return e}function g2(t,e,r){return[t*Math.cos(r)-e*Math.sin(r),t*Math.sin(r)+e*Math.cos(r)]}function AK(t,e,r,n,i,a,s,l,u,h){let f=(d=s,Math.PI*d/180);var d;let p=[],m=0,g=0,y=0,v=0;if(h)[m,g,y,v]=h;else{[t,e]=g2(t,e,-f),[r,n]=g2(r,n,-f);let L=(t-r)/2,R=(e-n)/2,O=L*L/(i*i)+R*R/(a*a);O>1&&(O=Math.sqrt(O),i*=O,a*=O);let M=i*i,B=a*a,F=M*B-M*R*R-B*L*L,P=M*R*R+B*L*L,z=(l===u?-1:1)*Math.sqrt(Math.abs(F/P));y=z*i*R/a+(t+r)/2,v=z*-a*L/i+(e+n)/2,m=Math.asin(parseFloat(((e-v)/a).toFixed(9))),g=Math.asin(parseFloat(((n-v)/a).toFixed(9))),tg&&(m-=2*Math.PI),!u&&g>m&&(g-=2*Math.PI)}let x=g-m;if(Math.abs(x)>120*Math.PI/180){let L=g,R=r,O=n;g=u&&g>m?m+120*Math.PI/180*1:m+120*Math.PI/180*-1,p=AK(r=y+i*Math.cos(g),n=v+a*Math.sin(g),R,O,i,a,s,0,u,[g,L,y,v])}x=g-m;let b=Math.cos(m),w=Math.sin(m),C=Math.cos(g),T=Math.sin(g),E=Math.tan(x/4),A=4/3*i*E,S=4/3*a*E,_=[t,e],I=[t+A*w,e-S*b],D=[r+A*T,n-S*C],k=[r,n];if(I[0]=2*_[0]-I[0],I[1]=2*_[1]-I[1],h)return[I,D,k].concat(p);{p=[I,D,k].concat(p);let L=[];for(let R=0;R2){let i=[];for(let a=0;a2*Math.PI&&(m=0,g=2*Math.PI);let y=2*Math.PI/u.curveStepCount,v=Math.min(y/2,(g-m)/2),x=kK(v,h,f,d,p,m,g,1,u);if(!u.disableMultiStroke){let b=kK(v,h,f,d,p,m,g,1.5,u);x.push(...b)}return s&&(l?x.push(...Uh(h,f,h+d*Math.cos(m),f+p*Math.sin(m),u),...Uh(h,f,h+d*Math.cos(g),f+p*Math.sin(g),u)):x.push({op:"lineTo",data:[h,f]},{op:"lineTo",data:[h+d*Math.cos(m),f+p*Math.sin(m)]})),{type:"path",ops:x}}function bK(t,e){let r=CK(SK(jD(t))),n=[],i=[0,0],a=[0,0];for(let{key:s,data:l}of r)switch(s){case"M":a=[l[0],l[1]],i=[l[0],l[1]];break;case"L":n.push(...Uh(a[0],a[1],l[0],l[1],e)),a=[l[0],l[1]];break;case"C":{let[u,h,f,d,p,m]=l;n.push(...a_e(u,h,f,d,p,m,a,e)),a=[p,m];break}case"Z":n.push(...Uh(a[0],a[1],i[0],i[1],e)),a=[i[0],i[1]]}return{type:"path",ops:n}}function PD(t,e){let r=[];for(let n of t)if(n.length){let i=e.maxRandomnessOffset||0,a=n.length;if(a>2){r.push({op:"move",data:[n[0][0]+nr(i,e),n[0][1]+nr(i,e)]});for(let s=1;s500?.4:-.0016668*u+1.233334;let f=i.maxRandomnessOffset||0;f*f*100>l&&(f=u/10);let d=f/2,p=.2+.2*LK(i),m=i.bowing*i.maxRandomnessOffset*(n-e)/200,g=i.bowing*i.maxRandomnessOffset*(t-r)/200;m=nr(m,i,h),g=nr(g,i,h);let y=[],v=o(()=>nr(d,i,h),"M"),x=o(()=>nr(f,i,h),"k"),b=i.preserveVertices;return a&&(s?y.push({op:"move",data:[t+(b?0:v()),e+(b?0:v())]}):y.push({op:"move",data:[t+(b?0:nr(f,i,h)),e+(b?0:nr(f,i,h))]})),s?y.push({op:"bcurveTo",data:[m+t+(r-t)*p+v(),g+e+(n-e)*p+v(),m+t+2*(r-t)*p+v(),g+e+2*(n-e)*p+v(),r+(b?0:v()),n+(b?0:v())]}):y.push({op:"bcurveTo",data:[m+t+(r-t)*p+x(),g+e+(n-e)*p+x(),m+t+2*(r-t)*p+x(),g+e+2*(n-e)*p+x(),r+(b?0:x()),n+(b?0:x())]}),y}function Mw(t,e,r){if(!t.length)return[];let n=[];n.push([t[0][0]+nr(e,r),t[0][1]+nr(e,r)]),n.push([t[0][0]+nr(e,r),t[0][1]+nr(e,r)]);for(let i=1;i3){let a=[],s=1-r.curveTightness;i.push({op:"move",data:[t[1][0],t[1][1]]});for(let l=1;l+21&&i.push(l)):i.push(l),i.push(t[e+3])}else{let u=t[e+0],h=t[e+1],f=t[e+2],d=t[e+3],p=Od(u,h,.5),m=Od(h,f,.5),g=Od(f,d,.5),y=Od(p,m,.5),v=Od(m,g,.5),x=Od(y,v,.5);qD([u,p,y,x],0,r,i),qD([x,v,g,d],0,r,i)}var a,s;return i}function o_e(t,e){return $w(t,0,t.length,e)}function $w(t,e,r,n,i){let a=i||[],s=t[e],l=t[r-1],u=0,h=1;for(let f=e+1;fu&&(u=d,h=f)}return Math.sqrt(u)>n?($w(t,e,h+1,n,a),$w(t,h,r,n,a)):(a.length||a.push(s),a.push(l)),a}function BD(t,e=.15,r){let n=[],i=(t.length-1)/3;for(let a=0;a0?$w(n,0,n.length,r):n}var v2,FD,$D,zD,GD,VD,Rs,UD,r_e,ID,yK,Nw,n_e,ro,pm,YD,Iw,XD,Xe,Wt=N(()=>{"use strict";o(MD,"t");o(e_e,"e");o(t_e,"s");o(x2,"n");v2=class{static{o(this,"o")}constructor(e){this.helper=e}fillPolygons(e,r){return this._fillPolygons(e,r)}_fillPolygons(e,r){let n=x2(e,r);return{type:"fillSketch",ops:this.renderLines(n,r)}}renderLines(e,r){let n=[];for(let i of e)n.push(...this.helper.doubleLineOps(i[0][0],i[0][1],i[1][0],i[1][1],r));return n}};o(zw,"a");FD=class extends v2{static{o(this,"h")}fillPolygons(e,r){let n=r.hachureGap;n<0&&(n=4*r.strokeWidth),n=Math.max(n,.1);let i=x2(e,Object.assign({},r,{hachureGap:n})),a=Math.PI/180*r.hachureAngle,s=[],l=.5*n*Math.cos(a),u=.5*n*Math.sin(a);for(let[h,f]of i)zw([h,f])&&s.push([[h[0]-l,h[1]+u],[...f]],[[h[0]+l,h[1]-u],[...f]]);return{type:"fillSketch",ops:this.renderLines(s,r)}}},$D=class extends v2{static{o(this,"r")}fillPolygons(e,r){let n=this._fillPolygons(e,r),i=Object.assign({},r,{hachureAngle:r.hachureAngle+90}),a=this._fillPolygons(e,i);return n.ops=n.ops.concat(a.ops),n}},zD=class{static{o(this,"i")}constructor(e){this.helper=e}fillPolygons(e,r){let n=x2(e,r=Object.assign({},r,{hachureAngle:0}));return this.dotsOnLines(n,r)}dotsOnLines(e,r){let n=[],i=r.hachureGap;i<0&&(i=4*r.strokeWidth),i=Math.max(i,.1);let a=r.fillWeight;a<0&&(a=r.strokeWidth/2);let s=i/4;for(let l of e){let u=zw(l),h=u/i,f=Math.ceil(h)-1,d=u-f*i,p=(l[0][0]+l[1][0])/2-i/4,m=Math.min(l[0][1],l[1][1]);for(let g=0;g{let l=zw(s),u=Math.floor(l/(n+i)),h=(l+i-u*(n+i))/2,f=s[0],d=s[1];f[0]>d[0]&&(f=s[1],d=s[0]);let p=Math.atan((d[1]-f[1])/(d[0]-f[0]));for(let m=0;m{let s=zw(a),l=Math.round(s/(2*r)),u=a[0],h=a[1];u[0]>h[0]&&(u=a[1],h=a[0]);let f=Math.atan((h[1]-u[1])/(h[0]-u[0]));for(let d=0;d2*Math.PI&&(A=0,S=2*Math.PI);let _=(S-A)/b.curveStepCount,I=[];for(let D=A;D<=S;D+=_)I.push([w+T*Math.cos(D),C+E*Math.sin(D)]);return I.push([w+T*Math.cos(S),C+E*Math.sin(S)]),I.push([w,C]),dm([I],b)}(e,r,n,i,a,s,h));return h.stroke!==ro&&f.push(d),this._d("arc",f,h)}curve(e,r){let n=this._o(r),i=[],a=vK(e,n);if(n.fill&&n.fill!==ro)if(n.fillStyle==="solid"){let s=vK(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(s.ops)})}else{let s=[],l=e;if(l.length){let u=typeof l[0][0]=="number"?[l]:l;for(let h of u)h.length<3?s.push(...h):h.length===3?s.push(...BD(EK([h[0],h[0],h[1],h[2]]),10,(1+n.roughness)/2)):s.push(...BD(EK(h),10,(1+n.roughness)/2))}s.length&&i.push(dm([s],n))}return n.stroke!==ro&&i.push(a),this._d("curve",i,n)}polygon(e,r){let n=this._o(r),i=[],a=Ow(e,!0,n);return n.fill&&(n.fillStyle==="solid"?i.push(PD([e],n)):i.push(dm([e],n))),n.stroke!==ro&&i.push(a),this._d("polygon",i,n)}path(e,r){let n=this._o(r),i=[];if(!e)return this._d("path",i,n);e=(e||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");let a=n.fill&&n.fill!=="transparent"&&n.fill!==ro,s=n.stroke!==ro,l=!!(n.simplification&&n.simplification<1),u=function(f,d,p){let m=CK(SK(jD(f))),g=[],y=[],v=[0,0],x=[],b=o(()=>{x.length>=4&&y.push(...BD(x,d)),x=[]},"i"),w=o(()=>{b(),y.length&&(g.push(y),y=[])},"c");for(let{key:T,data:E}of m)switch(T){case"M":w(),v=[E[0],E[1]],y.push(v);break;case"L":b(),y.push([E[0],E[1]]);break;case"C":if(!x.length){let A=y.length?y[y.length-1]:v;x.push([A[0],A[1]])}x.push([E[0],E[1]]),x.push([E[2],E[3]]),x.push([E[4],E[5]]);break;case"Z":b(),y.push([v[0],v[1]])}if(w(),!p)return g;let C=[];for(let T of g){let E=o_e(T,p);E.length&&C.push(E)}return C}(e,1,l?4-4*(n.simplification||1):(1+n.roughness)/2),h=bK(e,n);if(a)if(n.fillStyle==="solid")if(u.length===1){let f=bK(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(f.ops)})}else i.push(PD(u,n));else i.push(dm(u,n));return s&&(l?u.forEach(f=>{i.push(Ow(f,!1,n))}):i.push(h)),this._d("path",i,n)}opsToPath(e,r){let n="";for(let i of e.ops){let a=typeof r=="number"&&r>=0?i.data.map(s=>+s.toFixed(r)):i.data;switch(i.op){case"move":n+=`M${a[0]} ${a[1]} `;break;case"bcurveTo":n+=`C${a[0]} ${a[1]}, ${a[2]} ${a[3]}, ${a[4]} ${a[5]} `;break;case"lineTo":n+=`L${a[0]} ${a[1]} `}}return n.trim()}toPaths(e){let r=e.sets||[],n=e.options||this.defaultOptions,i=[];for(let a of r){let s=null;switch(a.type){case"path":s={d:this.opsToPath(a),stroke:n.stroke,strokeWidth:n.strokeWidth,fill:ro};break;case"fillPath":s={d:this.opsToPath(a),stroke:ro,strokeWidth:0,fill:n.fill||ro};break;case"fillSketch":s=this.fillSketch(a,n)}s&&i.push(s)}return i}fillSketch(e,r){let n=r.fillWeight;return n<0&&(n=r.strokeWidth/2),{d:this.opsToPath(e),stroke:r.fill||ro,strokeWidth:n,fill:ro}}_mergedShape(e){return e.filter((r,n)=>n===0||r.op!=="move")}},YD=class{static{o(this,"st")}constructor(e,r){this.canvas=e,this.ctx=this.canvas.getContext("2d"),this.gen=new pm(r)}draw(e){let r=e.sets||[],n=e.options||this.getDefaultOptions(),i=this.ctx,a=e.options.fixedDecimalPlaceDigits;for(let s of r)switch(s.type){case"path":i.save(),i.strokeStyle=n.stroke==="none"?"transparent":n.stroke,i.lineWidth=n.strokeWidth,n.strokeLineDash&&i.setLineDash(n.strokeLineDash),n.strokeLineDashOffset&&(i.lineDashOffset=n.strokeLineDashOffset),this._drawToContext(i,s,a),i.restore();break;case"fillPath":{i.save(),i.fillStyle=n.fill||"";let l=e.shape==="curve"||e.shape==="polygon"||e.shape==="path"?"evenodd":"nonzero";this._drawToContext(i,s,a,l),i.restore();break}case"fillSketch":this.fillSketch(i,s,n)}}fillSketch(e,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2),e.save(),n.fillLineDash&&e.setLineDash(n.fillLineDash),n.fillLineDashOffset&&(e.lineDashOffset=n.fillLineDashOffset),e.strokeStyle=n.fill||"",e.lineWidth=i,this._drawToContext(e,r,n.fixedDecimalPlaceDigits),e.restore()}_drawToContext(e,r,n,i="nonzero"){e.beginPath();for(let a of r.ops){let s=typeof n=="number"&&n>=0?a.data.map(l=>+l.toFixed(n)):a.data;switch(a.op){case"move":e.moveTo(s[0],s[1]);break;case"bcurveTo":e.bezierCurveTo(s[0],s[1],s[2],s[3],s[4],s[5]);break;case"lineTo":e.lineTo(s[0],s[1])}}r.type==="fillPath"?e.fill(i):e.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(e,r,n,i,a){let s=this.gen.line(e,r,n,i,a);return this.draw(s),s}rectangle(e,r,n,i,a){let s=this.gen.rectangle(e,r,n,i,a);return this.draw(s),s}ellipse(e,r,n,i,a){let s=this.gen.ellipse(e,r,n,i,a);return this.draw(s),s}circle(e,r,n,i){let a=this.gen.circle(e,r,n,i);return this.draw(a),a}linearPath(e,r){let n=this.gen.linearPath(e,r);return this.draw(n),n}polygon(e,r){let n=this.gen.polygon(e,r);return this.draw(n),n}arc(e,r,n,i,a,s,l=!1,u){let h=this.gen.arc(e,r,n,i,a,s,l,u);return this.draw(h),h}curve(e,r){let n=this.gen.curve(e,r);return this.draw(n),n}path(e,r){let n=this.gen.path(e,r);return this.draw(n),n}},Iw="http://www.w3.org/2000/svg",XD=class{static{o(this,"ot")}constructor(e,r){this.svg=e,this.gen=new pm(r)}draw(e){let r=e.sets||[],n=e.options||this.getDefaultOptions(),i=this.svg.ownerDocument||window.document,a=i.createElementNS(Iw,"g"),s=e.options.fixedDecimalPlaceDigits;for(let l of r){let u=null;switch(l.type){case"path":u=i.createElementNS(Iw,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke",n.stroke),u.setAttribute("stroke-width",n.strokeWidth+""),u.setAttribute("fill","none"),n.strokeLineDash&&u.setAttribute("stroke-dasharray",n.strokeLineDash.join(" ").trim()),n.strokeLineDashOffset&&u.setAttribute("stroke-dashoffset",`${n.strokeLineDashOffset}`);break;case"fillPath":u=i.createElementNS(Iw,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke","none"),u.setAttribute("stroke-width","0"),u.setAttribute("fill",n.fill||""),e.shape!=="curve"&&e.shape!=="polygon"||u.setAttribute("fill-rule","evenodd");break;case"fillSketch":u=this.fillSketch(i,l,n)}u&&a.appendChild(u)}return a}fillSketch(e,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2);let a=e.createElementNS(Iw,"path");return a.setAttribute("d",this.opsToPath(r,n.fixedDecimalPlaceDigits)),a.setAttribute("stroke",n.fill||""),a.setAttribute("stroke-width",i+""),a.setAttribute("fill","none"),n.fillLineDash&&a.setAttribute("stroke-dasharray",n.fillLineDash.join(" ").trim()),n.fillLineDashOffset&&a.setAttribute("stroke-dashoffset",`${n.fillLineDashOffset}`),a}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(e,r){return this.gen.opsToPath(e,r)}line(e,r,n,i,a){let s=this.gen.line(e,r,n,i,a);return this.draw(s)}rectangle(e,r,n,i,a){let s=this.gen.rectangle(e,r,n,i,a);return this.draw(s)}ellipse(e,r,n,i,a){let s=this.gen.ellipse(e,r,n,i,a);return this.draw(s)}circle(e,r,n,i){let a=this.gen.circle(e,r,n,i);return this.draw(a)}linearPath(e,r){let n=this.gen.linearPath(e,r);return this.draw(n)}polygon(e,r){let n=this.gen.polygon(e,r);return this.draw(n)}arc(e,r,n,i,a,s,l=!1,u){let h=this.gen.arc(e,r,n,i,a,s,l,u);return this.draw(h)}curve(e,r){let n=this.gen.curve(e,r);return this.draw(n)}path(e,r){let n=this.gen.path(e,r);return this.draw(n)}},Xe={canvas:o((t,e)=>new YD(t,e),"canvas"),svg:o((t,e)=>new XD(t,e),"svg"),generator:o(t=>new pm(t),"generator"),newSeed:o(()=>pm.newSeed(),"newSeed")}});function RK(t,e){let{labelStyles:r}=Qe(e);e.labelStyle=r;let n=ht(e),i=n;n||(i="anchor");let a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=1,{cssStyles:l}=e,u=Xe.svg(a),h=Ke(e,{fill:"black",stroke:"none",fillStyle:"solid"});e.look!=="handDrawn"&&(h.roughness=0);let f=u.circle(0,0,s*2,h),d=a.insert(()=>f,":first-child");return d.attr("class","anchor").attr("style",$n(l)),je(e,d),e.intersect=function(p){return Y.info("Circle intersect",e,s,p),Ye.circle(e,s,p)},a}var NK=N(()=>{"use strict";vt();Ft();Ht();Ut();Wt();ir();o(RK,"anchor")});function MK(t,e,r,n,i,a,s){let u=(t+r)/2,h=(e+n)/2,f=Math.atan2(n-e,r-t),d=(r-t)/2,p=(n-e)/2,m=d/i,g=p/a,y=Math.sqrt(m**2+g**2);if(y>1)throw new Error("The given radii are too small to create an arc between the points.");let v=Math.sqrt(1-y**2),x=u+v*a*Math.sin(f)*(s?-1:1),b=h-v*i*Math.cos(f)*(s?-1:1),w=Math.atan2((e-b)/a,(t-x)/i),T=Math.atan2((n-b)/a,(r-x)/i)-w;s&&T<0&&(T+=2*Math.PI),!s&&T>0&&(T-=2*Math.PI);let E=[];for(let A=0;A<20;A++){let S=A/19,_=w+S*T,I=x+i*Math.cos(_),D=b+a*Math.sin(_);E.push({x:I,y:D})}return E}async function IK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=a.width+e.padding+20,l=a.height+e.padding,u=l/2,h=u/(2.5+l/50),{cssStyles:f}=e,d=[{x:s/2,y:-l/2},{x:-s/2,y:-l/2},...MK(-s/2,-l/2,-s/2,l/2,h,u,!1),{x:s/2,y:l/2},...MK(s/2,l/2,s/2,-l/2,h,u,!0)],p=Xe.svg(i),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=Xt(d),y=p.path(g,m),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(${h/2}, 0)`),je(e,v),e.intersect=function(x){return Ye.polygon(e,d,x)},i}var OK=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(MK,"generateArcPoints");o(IK,"bowTieRect")});function La(t,e,r,n){return t.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}var _u=N(()=>{"use strict";o(La,"insertPolygonShape")});async function PK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=a.height+e.padding,l=12,u=a.width+e.padding+l,h=0,f=u,d=-s,p=0,m=[{x:h+l,y:d},{x:f,y:d},{x:f,y:p},{x:h,y:p},{x:h,y:d+l},{x:h+l,y:d}],g,{cssStyles:y}=e;if(e.look==="handDrawn"){let v=Xe.svg(i),x=Ke(e,{}),b=Xt(m),w=v.path(b,x);g=i.insert(()=>w,":first-child").attr("transform",`translate(${-u/2}, ${s/2})`),y&&g.attr("style",y)}else g=La(i,u,s,m);return n&&g.attr("style",n),je(e,g),e.intersect=function(v){return Ye.polygon(e,m,v)},i}var BK=N(()=>{"use strict";Ft();Ht();Ut();Wt();_u();Ft();o(PK,"card")});function FK(t,e){let{nodeStyles:r}=Qe(e);e.label="";let n=t.insert("g").attr("class",ht(e)).attr("id",e.domId??e.id),{cssStyles:i}=e,a=Math.max(28,e.width??0),s=[{x:0,y:a/2},{x:a/2,y:0},{x:0,y:-a/2},{x:-a/2,y:0}],l=Xe.svg(n),u=Ke(e,{});e.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=Xt(s),f=l.path(h,u),d=n.insert(()=>f,":first-child");return i&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",i),r&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",r),e.width=28,e.height=28,e.intersect=function(p){return Ye.polygon(e,s,p)},n}var $K=N(()=>{"use strict";Ht();Wt();Ut();Ft();o(FK,"choice")});async function zK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s}=await pt(t,e,ht(e)),l=a.width/2+s,u,{cssStyles:h}=e;if(e.look==="handDrawn"){let f=Xe.svg(i),d=Ke(e,{}),p=f.circle(0,0,l*2,d);u=i.insert(()=>p,":first-child"),u.attr("class","basic label-container").attr("style",$n(h))}else u=i.insert("circle",":first-child").attr("class","basic label-container").attr("style",n).attr("r",l).attr("cx",0).attr("cy",0);return je(e,u),e.intersect=function(f){return Y.info("Circle intersect",e,l,f),Ye.circle(e,l,f)},i}var GK=N(()=>{"use strict";vt();Ft();Ht();Ut();Wt();ir();o(zK,"circle")});function l_e(t){let e=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),n=t*2,i={x:n/2*e,y:n/2*r},a={x:-(n/2)*e,y:n/2*r},s={x:-(n/2)*e,y:-(n/2)*r},l={x:n/2*e,y:-(n/2)*r};return`M ${a.x},${a.y} L ${l.x},${l.y} + M ${i.x},${i.y} L ${s.x},${s.y}`}function VK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r,e.label="";let i=t.insert("g").attr("class",ht(e)).attr("id",e.domId??e.id),a=Math.max(30,e?.width??0),{cssStyles:s}=e,l=Xe.svg(i),u=Ke(e,{});e.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=l.circle(0,0,a*2,u),f=l_e(a),d=l.path(f,u),p=i.insert(()=>h,":first-child");return p.insert(()=>d),s&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",s),n&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",n),je(e,p),e.intersect=function(m){return Y.info("crossedCircle intersect",e,{radius:a,point:m}),Ye.circle(e,a,m)},i}var UK=N(()=>{"use strict";vt();Ft();Ut();Wt();Ht();o(l_e,"createLine");o(VK,"crossedCircle")});function Hh(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dw,":first-child").attr("stroke-opacity",0),C.insert(()=>x,":first-child"),C.attr("class","text"),f&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(${h}, 0)`),s.attr("transform",`translate(${-l/2+h-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),je(e,C),e.intersect=function(T){return Ye.polygon(e,p,T)},i}var WK=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(Hh,"generateCirclePoints");o(HK,"curlyBraceLeft")});function Wh(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dw,":first-child").attr("stroke-opacity",0),C.insert(()=>x,":first-child"),C.attr("class","text"),f&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(${-h}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),je(e,C),e.intersect=function(T){return Ye.polygon(e,p,T)},i}var YK=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(Wh,"generateCirclePoints");o(qK,"curlyBraceRight")});function Ra(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dA,":first-child").attr("stroke-opacity",0),S.insert(()=>b,":first-child"),S.insert(()=>T,":first-child"),S.attr("class","text"),f&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(${h-h/4}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),je(e,S),e.intersect=function(_){return Ye.polygon(e,m,_)},i}var jK=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(Ra,"generateCirclePoints");o(XK,"curlyBraces")});async function KK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=80,l=20,u=Math.max(s,(a.width+(e.padding??0)*2)*1.25,e?.width??0),h=Math.max(l,a.height+(e.padding??0)*2,e?.height??0),f=h/2,{cssStyles:d}=e,p=Xe.svg(i),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=u,y=h,v=g-f,x=y/4,b=[{x:v,y:0},{x,y:0},{x:0,y:y/2},{x,y},{x:v,y},...Lw(-v,-y/2,f,50,270,90)],w=Xt(b),C=p.path(w,m),T=i.insert(()=>C,":first-child");return T.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&T.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&T.selectChildren("path").attr("style",n),T.attr("transform",`translate(${-u/2}, ${-h/2})`),je(e,T),e.intersect=function(E){return Ye.polygon(e,b,E)},i}var QK=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(KK,"curvedTrapezoid")});async function ZK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+e.padding,e.width??0),u=l/2,h=u/(2.5+l/50),f=Math.max(a.height+h+e.padding,e.height??0),d,{cssStyles:p}=e;if(e.look==="handDrawn"){let m=Xe.svg(i),g=u_e(0,0,l,f,u,h),y=h_e(0,h,l,f,u,h),v=m.path(g,Ke(e,{})),x=m.path(y,Ke(e,{fill:"none"}));d=i.insert(()=>x,":first-child"),d=i.insert(()=>v,":first-child"),d.attr("class","basic label-container"),p&&d.attr("style",p)}else{let m=c_e(0,0,l,f,u,h);d=i.insert("path",":first-child").attr("d",m).attr("class","basic label-container").attr("style",$n(p)).attr("style",n)}return d.attr("label-offset-y",h),d.attr("transform",`translate(${-l/2}, ${-(f/2+h)})`),je(e,d),s.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+(e.padding??0)/1.5-(a.y-(a.top??0))})`),e.intersect=function(m){let g=Ye.rect(e,m),y=g.x-(e.x??0);if(u!=0&&(Math.abs(y)<(e.width??0)/2||Math.abs(y)==(e.width??0)/2&&Math.abs(g.y-(e.y??0))>(e.height??0)/2-h)){let v=h*h*(1-y*y/(u*u));v>0&&(v=Math.sqrt(v)),v=h-v,m.y-(e.y??0)>0&&(v=-v),g.y+=v}return g},i}var c_e,u_e,h_e,JK=N(()=>{"use strict";Ft();Ht();Ut();Wt();ir();c_e=o((t,e,r,n,i,a)=>[`M${t},${e+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createCylinderPathD"),u_e=o((t,e,r,n,i,a)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createOuterCylinderPathD"),h_e=o((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");o(ZK,"cylinder")});async function eQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=a.width+e.padding,u=a.height+e.padding,h=u*.2,f=-l/2,d=-u/2-h/2,{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:f,y:d+h},{x:-f,y:d+h},{x:-f,y:-d},{x:f,y:-d},{x:f,y:d},{x:-f,y:d},{x:-f,y:d+h}],v=m.polygon(y.map(b=>[b.x,b.y]),g),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),s.attr("transform",`translate(${f+(e.padding??0)/2-(a.x-(a.left??0))}, ${d+h+(e.padding??0)/2-(a.y-(a.top??0))})`),je(e,x),e.intersect=function(b){return Ye.rect(e,b)},i}var tQ=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(eQ,"dividedRectangle")});async function rQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s}=await pt(t,e,ht(e)),u=a.width/2+s+5,h=a.width/2+s,f,{cssStyles:d}=e;if(e.look==="handDrawn"){let p=Xe.svg(i),m=Ke(e,{roughness:.2,strokeWidth:2.5}),g=Ke(e,{roughness:.2,strokeWidth:1.5}),y=p.circle(0,0,u*2,m),v=p.circle(0,0,h*2,g);f=i.insert("g",":first-child"),f.attr("class",$n(e.cssClasses)).attr("style",$n(d)),f.node()?.appendChild(y),f.node()?.appendChild(v)}else{f=i.insert("g",":first-child");let p=f.insert("circle",":first-child"),m=f.insert("circle");f.attr("class","basic label-container").attr("style",n),p.attr("class","outer-circle").attr("style",n).attr("r",u).attr("cx",0).attr("cy",0),m.attr("class","inner-circle").attr("style",n).attr("r",h).attr("cx",0).attr("cy",0)}return je(e,f),e.intersect=function(p){return Y.info("DoubleCircle intersect",e,u,p),Ye.circle(e,u,p)},i}var nQ=N(()=>{"use strict";vt();Ft();Ht();Ut();Wt();ir();o(rQ,"doublecircle")});function iQ(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=Qe(e);e.label="",e.labelStyle=n;let a=t.insert("g").attr("class",ht(e)).attr("id",e.domId??e.id),s=7,{cssStyles:l}=e,u=Xe.svg(a),{nodeBorder:h}=r,f=Ke(e,{fillStyle:"solid"});e.look!=="handDrawn"&&(f.roughness=0);let d=u.circle(0,0,s*2,f),p=a.insert(()=>d,":first-child");return p.selectAll("path").attr("style",`fill: ${h} !important;`),l&&l.length>0&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",l),i&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",i),je(e,p),e.intersect=function(m){return Y.info("filledCircle intersect",e,{radius:s,point:m}),Ye.circle(e,s,m)},a}var aQ=N(()=>{"use strict";Wt();vt();Ht();Ut();Ft();o(iQ,"filledCircle")});async function sQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=a.width+(e.padding??0),u=l+a.height,h=l+a.height,f=[{x:0,y:-u},{x:h,y:-u},{x:h/2,y:0}],{cssStyles:d}=e,p=Xe.svg(i),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=Xt(f),y=p.path(g,m),v=i.insert(()=>y,":first-child").attr("transform",`translate(${-u/2}, ${u/2})`);return d&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",n),e.width=l,e.height=u,je(e,v),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${-u/2+(e.padding??0)/2+(a.y-(a.top??0))})`),e.intersect=function(x){return Y.info("Triangle intersect",e,f,x),Ye.polygon(e,f,x)},i}var oQ=N(()=>{"use strict";vt();Ft();Ht();Ut();Wt();Ft();o(sQ,"flippedTriangle")});function lQ(t,e,{dir:r,config:{state:n,themeVariables:i}}){let{nodeStyles:a}=Qe(e);e.label="";let s=t.insert("g").attr("class",ht(e)).attr("id",e.domId??e.id),{cssStyles:l}=e,u=Math.max(70,e?.width??0),h=Math.max(10,e?.height??0);r==="LR"&&(u=Math.max(10,e?.width??0),h=Math.max(70,e?.height??0));let f=-1*u/2,d=-1*h/2,p=Xe.svg(s),m=Ke(e,{stroke:i.lineColor,fill:i.lineColor});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=p.rectangle(f,d,u,h,m),y=s.insert(()=>g,":first-child");l&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",l),a&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",a),je(e,y);let v=n?.padding??0;return e.width&&e.height&&(e.width+=v/2||0,e.height+=v/2||0),e.intersect=function(x){return Ye.rect(e,x)},s}var cQ=N(()=>{"use strict";Wt();Ht();Ut();Ft();o(lQ,"forkJoin")});async function uQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let i=80,a=50,{shapeSvg:s,bbox:l}=await pt(t,e,ht(e)),u=Math.max(i,l.width+(e.padding??0)*2,e?.width??0),h=Math.max(a,l.height+(e.padding??0)*2,e?.height??0),f=h/2,{cssStyles:d}=e,p=Xe.svg(s),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-u/2,y:-h/2},{x:u/2-f,y:-h/2},...Lw(-u/2+f,0,f,50,90,270),{x:u/2-f,y:h/2},{x:-u/2,y:h/2}],y=Xt(g),v=p.path(y,m),x=s.insert(()=>v,":first-child");return x.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),je(e,x),e.intersect=function(b){return Y.info("Pill intersect",e,{radius:f,point:b}),Ye.polygon(e,g,b)},s}var hQ=N(()=>{"use strict";vt();Ft();Ht();Ut();Wt();o(uQ,"halfRoundedRectangle")});async function fQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=4,l=a.height+e.padding,u=l/s,h=a.width+2*u+e.padding,f=[{x:u,y:0},{x:h-u,y:0},{x:h,y:-l/2},{x:h-u,y:-l},{x:u,y:-l},{x:0,y:-l/2}],d,{cssStyles:p}=e;if(e.look==="handDrawn"){let m=Xe.svg(i),g=Ke(e,{}),y=f_e(0,0,h,l,u),v=m.path(y,g);d=i.insert(()=>v,":first-child").attr("transform",`translate(${-h/2}, ${l/2})`),p&&d.attr("style",p)}else d=La(i,h,l,f);return n&&d.attr("style",n),e.width=h,e.height=l,je(e,d),e.intersect=function(m){return Ye.polygon(e,f,m)},i}var f_e,dQ=N(()=>{"use strict";Ft();Ht();Ut();Wt();_u();f_e=o((t,e,r,n,i)=>[`M${t+i},${e}`,`L${t+r-i},${e}`,`L${t+r},${e-n/2}`,`L${t+r-i},${e-n}`,`L${t+i},${e-n}`,`L${t},${e-n/2}`,"Z"].join(" "),"createHexagonPathD");o(fQ,"hexagon")});async function pQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.label="",e.labelStyle=r;let{shapeSvg:i}=await pt(t,e,ht(e)),a=Math.max(30,e?.width??0),s=Math.max(30,e?.height??0),{cssStyles:l}=e,u=Xe.svg(i),h=Ke(e,{});e.look!=="handDrawn"&&(h.roughness=0,h.fillStyle="solid");let f=[{x:0,y:0},{x:a,y:0},{x:0,y:s},{x:a,y:s}],d=Xt(f),p=u.path(d,h),m=i.insert(()=>p,":first-child");return m.attr("class","basic label-container"),l&&e.look!=="handDrawn"&&m.selectChildren("path").attr("style",l),n&&e.look!=="handDrawn"&&m.selectChildren("path").attr("style",n),m.attr("transform",`translate(${-a/2}, ${-s/2})`),je(e,m),e.intersect=function(g){return Y.info("Pill intersect",e,{points:f}),Ye.polygon(e,f,g)},i}var mQ=N(()=>{"use strict";vt();Ft();Ht();Ut();Wt();o(pQ,"hourglass")});async function gQ(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=Qe(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,label:d}=await pt(t,e,"icon-shape default"),p=e.pos==="t",m=l,g=l,{nodeBorder:y}=r,{stylesMap:v}=mc(e),x=-g/2,b=-m/2,w=e.label?8:0,C=Xe.svg(h),T=Ke(e,{stroke:"none",fill:"none"});e.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let E=C.rectangle(x,b,g,m,T),A=Math.max(g,f.width),S=m+f.height+w,_=C.rectangle(-A/2,-S/2,A,S,{...T,fill:"transparent",stroke:"none"}),I=h.insert(()=>E,":first-child"),D=h.insert(()=>_);if(e.icon){let k=h.append("g");k.html(`${await wo(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let L=k.node().getBBox(),R=L.width,O=L.height,M=L.x,B=L.y;k.attr("transform",`translate(${-R/2-M},${p?f.height/2+w/2-O/2-B:-f.height/2-w/2-O/2-B})`),k.attr("style",`color: ${v.get("stroke")??y};`)}return d.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${p?-S/2:S/2-f.height})`),I.attr("transform",`translate(0,${p?f.height/2+w/2:-f.height/2-w/2})`),je(e,D),e.intersect=function(k){if(Y.info("iconSquare intersect",e,k),!e.label)return Ye.rect(e,k);let L=e.x??0,R=e.y??0,O=e.height??0,M=[];return p?M=[{x:L-f.width/2,y:R-O/2},{x:L+f.width/2,y:R-O/2},{x:L+f.width/2,y:R-O/2+f.height+w},{x:L+g/2,y:R-O/2+f.height+w},{x:L+g/2,y:R+O/2},{x:L-g/2,y:R+O/2},{x:L-g/2,y:R-O/2+f.height+w},{x:L-f.width/2,y:R-O/2+f.height+w}]:M=[{x:L-g/2,y:R-O/2},{x:L+g/2,y:R-O/2},{x:L+g/2,y:R-O/2+m},{x:L+f.width/2,y:R-O/2+m},{x:L+f.width/2/2,y:R+O/2},{x:L-f.width/2,y:R+O/2},{x:L-f.width/2,y:R-O/2+m},{x:L-g/2,y:R-O/2+m}],Ye.polygon(e,M,k)},h}var yQ=N(()=>{"use strict";Wt();vt();tu();Ht();Ut();Ft();o(gQ,"icon")});async function vQ(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=Qe(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,label:d}=await pt(t,e,"icon-shape default"),p=20,m=e.label?8:0,g=e.pos==="t",{nodeBorder:y,mainBkg:v}=r,{stylesMap:x}=mc(e),b=Xe.svg(h),w=Ke(e,{});e.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let C=x.get("fill");w.stroke=C??v;let T=h.append("g");e.icon&&T.html(`${await wo(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let E=T.node().getBBox(),A=E.width,S=E.height,_=E.x,I=E.y,D=Math.max(A,S)*Math.SQRT2+p*2,k=b.circle(0,0,D,w),L=Math.max(D,f.width),R=D+f.height+m,O=b.rectangle(-L/2,-R/2,L,R,{...w,fill:"transparent",stroke:"none"}),M=h.insert(()=>k,":first-child"),B=h.insert(()=>O);return T.attr("transform",`translate(${-A/2-_},${g?f.height/2+m/2-S/2-I:-f.height/2-m/2-S/2-I})`),T.attr("style",`color: ${x.get("stroke")??y};`),d.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${g?-R/2:R/2-f.height})`),M.attr("transform",`translate(0,${g?f.height/2+m/2:-f.height/2-m/2})`),je(e,B),e.intersect=function(F){return Y.info("iconSquare intersect",e,F),Ye.rect(e,F)},h}var xQ=N(()=>{"use strict";Wt();vt();tu();Ht();Ut();Ft();o(vQ,"iconCircle")});var Na,qh=N(()=>{"use strict";Na=o((t,e,r,n,i)=>["M",t+i,e,"H",t+r-i,"A",i,i,0,0,1,t+r,e+i,"V",e+n-i,"A",i,i,0,0,1,t+r-i,e+n,"H",t+i,"A",i,i,0,0,1,t,e+n-i,"V",e+i,"A",i,i,0,0,1,t+i,e,"Z"].join(" "),"createRoundedRectPathD")});async function bQ(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=Qe(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,halfPadding:d,label:p}=await pt(t,e,"icon-shape default"),m=e.pos==="t",g=l+d*2,y=l+d*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=mc(e),w=-y/2,C=-g/2,T=e.label?8:0,E=Xe.svg(h),A=Ke(e,{});e.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");let S=b.get("fill");A.stroke=S??x;let _=E.path(Na(w,C,y,g,5),A),I=Math.max(y,f.width),D=g+f.height+T,k=E.rectangle(-I/2,-D/2,I,D,{...A,fill:"transparent",stroke:"none"}),L=h.insert(()=>_,":first-child").attr("class","icon-shape2"),R=h.insert(()=>k);if(e.icon){let O=h.append("g");O.html(`${await wo(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let M=O.node().getBBox(),B=M.width,F=M.height,P=M.x,z=M.y;O.attr("transform",`translate(${-B/2-P},${m?f.height/2+T/2-F/2-z:-f.height/2-T/2-F/2-z})`),O.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${m?-D/2:D/2-f.height})`),L.attr("transform",`translate(0,${m?f.height/2+T/2:-f.height/2-T/2})`),je(e,R),e.intersect=function(O){if(Y.info("iconSquare intersect",e,O),!e.label)return Ye.rect(e,O);let M=e.x??0,B=e.y??0,F=e.height??0,P=[];return m?P=[{x:M-f.width/2,y:B-F/2},{x:M+f.width/2,y:B-F/2},{x:M+f.width/2,y:B-F/2+f.height+T},{x:M+y/2,y:B-F/2+f.height+T},{x:M+y/2,y:B+F/2},{x:M-y/2,y:B+F/2},{x:M-y/2,y:B-F/2+f.height+T},{x:M-f.width/2,y:B-F/2+f.height+T}]:P=[{x:M-y/2,y:B-F/2},{x:M+y/2,y:B-F/2},{x:M+y/2,y:B-F/2+g},{x:M+f.width/2,y:B-F/2+g},{x:M+f.width/2/2,y:B+F/2},{x:M-f.width/2,y:B+F/2},{x:M-f.width/2,y:B-F/2+g},{x:M-y/2,y:B-F/2+g}],Ye.polygon(e,P,O)},h}var wQ=N(()=>{"use strict";Wt();vt();tu();Ht();Ut();qh();Ft();o(bQ,"iconRounded")});async function TQ(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=Qe(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,halfPadding:d,label:p}=await pt(t,e,"icon-shape default"),m=e.pos==="t",g=l+d*2,y=l+d*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=mc(e),w=-y/2,C=-g/2,T=e.label?8:0,E=Xe.svg(h),A=Ke(e,{});e.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");let S=b.get("fill");A.stroke=S??x;let _=E.path(Na(w,C,y,g,.1),A),I=Math.max(y,f.width),D=g+f.height+T,k=E.rectangle(-I/2,-D/2,I,D,{...A,fill:"transparent",stroke:"none"}),L=h.insert(()=>_,":first-child"),R=h.insert(()=>k);if(e.icon){let O=h.append("g");O.html(`${await wo(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let M=O.node().getBBox(),B=M.width,F=M.height,P=M.x,z=M.y;O.attr("transform",`translate(${-B/2-P},${m?f.height/2+T/2-F/2-z:-f.height/2-T/2-F/2-z})`),O.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${m?-D/2:D/2-f.height})`),L.attr("transform",`translate(0,${m?f.height/2+T/2:-f.height/2-T/2})`),je(e,R),e.intersect=function(O){if(Y.info("iconSquare intersect",e,O),!e.label)return Ye.rect(e,O);let M=e.x??0,B=e.y??0,F=e.height??0,P=[];return m?P=[{x:M-f.width/2,y:B-F/2},{x:M+f.width/2,y:B-F/2},{x:M+f.width/2,y:B-F/2+f.height+T},{x:M+y/2,y:B-F/2+f.height+T},{x:M+y/2,y:B+F/2},{x:M-y/2,y:B+F/2},{x:M-y/2,y:B-F/2+f.height+T},{x:M-f.width/2,y:B-F/2+f.height+T}]:P=[{x:M-y/2,y:B-F/2},{x:M+y/2,y:B-F/2},{x:M+y/2,y:B-F/2+g},{x:M+f.width/2,y:B-F/2+g},{x:M+f.width/2/2,y:B+F/2},{x:M-f.width/2,y:B+F/2},{x:M-f.width/2,y:B-F/2+g},{x:M-y/2,y:B-F/2+g}],Ye.polygon(e,P,O)},h}var kQ=N(()=>{"use strict";Wt();vt();tu();Ht();qh();Ut();Ft();o(TQ,"iconSquare")});async function EQ(t,e,{config:{flowchart:r}}){let n=new Image;n.src=e?.img??"",await n.decode();let i=Number(n.naturalWidth.toString().replace("px","")),a=Number(n.naturalHeight.toString().replace("px",""));e.imageAspectRatio=i/a;let{labelStyles:s}=Qe(e);e.labelStyle=s;let l=r?.wrappingWidth;e.defaultWidth=r?.wrappingWidth;let u=Math.max(e.label?l??0:0,e?.assetWidth??i),h=e.constraint==="on"&&e?.assetHeight?e.assetHeight*e.imageAspectRatio:u,f=e.constraint==="on"?h/e.imageAspectRatio:e?.assetHeight??a;e.width=Math.max(h,l??0);let{shapeSvg:d,bbox:p,label:m}=await pt(t,e,"image-shape default"),g=e.pos==="t",y=-h/2,v=-f/2,x=e.label?8:0,b=Xe.svg(d),w=Ke(e,{});e.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let C=b.rectangle(y,v,h,f,w),T=Math.max(h,p.width),E=f+p.height+x,A=b.rectangle(-T/2,-E/2,T,E,{...w,fill:"none",stroke:"none"}),S=d.insert(()=>C,":first-child"),_=d.insert(()=>A);if(e.img){let I=d.append("image");I.attr("href",e.img),I.attr("width",h),I.attr("height",f),I.attr("preserveAspectRatio","none"),I.attr("transform",`translate(${-h/2},${g?E/2-f:-E/2})`)}return m.attr("transform",`translate(${-p.width/2-(p.x-(p.left??0))},${g?-f/2-p.height/2-x/2:f/2-p.height/2+x/2})`),S.attr("transform",`translate(0,${g?p.height/2+x/2:-p.height/2-x/2})`),je(e,_),e.intersect=function(I){if(Y.info("iconSquare intersect",e,I),!e.label)return Ye.rect(e,I);let D=e.x??0,k=e.y??0,L=e.height??0,R=[];return g?R=[{x:D-p.width/2,y:k-L/2},{x:D+p.width/2,y:k-L/2},{x:D+p.width/2,y:k-L/2+p.height+x},{x:D+h/2,y:k-L/2+p.height+x},{x:D+h/2,y:k+L/2},{x:D-h/2,y:k+L/2},{x:D-h/2,y:k-L/2+p.height+x},{x:D-p.width/2,y:k-L/2+p.height+x}]:R=[{x:D-h/2,y:k-L/2},{x:D+h/2,y:k-L/2},{x:D+h/2,y:k-L/2+f},{x:D+p.width/2,y:k-L/2+f},{x:D+p.width/2/2,y:k+L/2},{x:D-p.width/2,y:k+L/2},{x:D-p.width/2,y:k-L/2+f},{x:D-h/2,y:k-L/2+f}],Ye.polygon(e,R,I)},d}var SQ=N(()=>{"use strict";Wt();vt();Ht();Ut();Ft();o(EQ,"imageSquare")});async function CQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=[{x:0,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:-3*l/6,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Xe.svg(i),p=Ke(e,{}),m=Xt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=La(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,je(e,h),e.intersect=function(d){return Ye.polygon(e,u,d)},i}var AQ=N(()=>{"use strict";Ft();Ht();Ut();Wt();_u();o(CQ,"inv_trapezoid")});async function Du(t,e,r){let{labelStyles:n,nodeStyles:i}=Qe(e);e.labelStyle=n;let{shapeSvg:a,bbox:s}=await pt(t,e,ht(e)),l=Math.max(s.width+r.labelPaddingX*2,e?.width||0),u=Math.max(s.height+r.labelPaddingY*2,e?.height||0),h=-l/2,f=-u/2,d,{rx:p,ry:m}=e,{cssStyles:g}=e;if(r?.rx&&r.ry&&(p=r.rx,m=r.ry),e.look==="handDrawn"){let y=Xe.svg(a),v=Ke(e,{}),x=p||m?y.path(Na(h,f,l,u,p||0),v):y.rectangle(h,f,l,u,v);d=a.insert(()=>x,":first-child"),d.attr("class","basic label-container").attr("style",$n(g))}else d=a.insert("rect",":first-child"),d.attr("class","basic label-container").attr("style",i).attr("rx",$n(p)).attr("ry",$n(m)).attr("x",h).attr("y",f).attr("width",l).attr("height",u);return je(e,d),e.intersect=function(y){return Ye.rect(e,y)},a}var mm=N(()=>{"use strict";Ft();Ht();qh();Ut();Wt();ir();o(Du,"drawRect")});async function _Q(t,e){let{shapeSvg:r,bbox:n,label:i}=await pt(t,e,"label"),a=r.insert("rect",":first-child");return a.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),i.attr("transform",`translate(${-(n.width/2)-(n.x-(n.left??0))}, ${-(n.height/2)-(n.y-(n.top??0))})`),je(e,a),e.intersect=function(u){return Ye.rect(e,u)},r}var DQ=N(()=>{"use strict";mm();Ft();Ht();o(_Q,"labelRect")});async function LQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=Math.max(a.width+(e.padding??0),e?.width??0),l=Math.max(a.height+(e.padding??0),e?.height??0),u=[{x:0,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:-(3*l)/6,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Xe.svg(i),p=Ke(e,{}),m=Xt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=La(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,je(e,h),e.intersect=function(d){return Ye.polygon(e,u,d)},i}var RQ=N(()=>{"use strict";Ft();Ht();Ut();Wt();_u();o(LQ,"lean_left")});async function NQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=Math.max(a.width+(e.padding??0),e?.width??0),l=Math.max(a.height+(e.padding??0),e?.height??0),u=[{x:-3*l/6,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:0,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Xe.svg(i),p=Ke(e,{}),m=Xt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=La(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,je(e,h),e.intersect=function(d){return Ye.polygon(e,u,d)},i}var MQ=N(()=>{"use strict";Ft();Ht();Ut();Wt();_u();o(NQ,"lean_right")});function IQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.label="",e.labelStyle=r;let i=t.insert("g").attr("class",ht(e)).attr("id",e.domId??e.id),{cssStyles:a}=e,s=Math.max(35,e?.width??0),l=Math.max(35,e?.height??0),u=7,h=[{x:s,y:0},{x:0,y:l+u/2},{x:s-2*u,y:l+u/2},{x:0,y:2*l},{x:s,y:l-u/2},{x:2*u,y:l-u/2}],f=Xe.svg(i),d=Ke(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=Xt(h),m=f.path(p,d),g=i.insert(()=>m,":first-child");return a&&e.look!=="handDrawn"&&g.selectAll("path").attr("style",a),n&&e.look!=="handDrawn"&&g.selectAll("path").attr("style",n),g.attr("transform",`translate(-${s/2},${-l})`),je(e,g),e.intersect=function(y){return Y.info("lightningBolt intersect",e,y),Ye.polygon(e,h,y)},i}var OQ=N(()=>{"use strict";vt();Ft();Ut();Wt();Ht();Ft();o(IQ,"lightningBolt")});async function PQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0),e.width??0),u=l/2,h=u/(2.5+l/50),f=Math.max(a.height+h+(e.padding??0),e.height??0),d=f*.1,p,{cssStyles:m}=e;if(e.look==="handDrawn"){let g=Xe.svg(i),y=p_e(0,0,l,f,u,h,d),v=m_e(0,h,l,f,u,h),x=Ke(e,{}),b=g.path(y,x),w=g.path(v,x);i.insert(()=>w,":first-child").attr("class","line"),p=i.insert(()=>b,":first-child"),p.attr("class","basic label-container"),m&&p.attr("style",m)}else{let g=d_e(0,0,l,f,u,h,d);p=i.insert("path",":first-child").attr("d",g).attr("class","basic label-container").attr("style",$n(m)).attr("style",n)}return p.attr("label-offset-y",h),p.attr("transform",`translate(${-l/2}, ${-(f/2+h)})`),je(e,p),s.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+h-(a.y-(a.top??0))})`),e.intersect=function(g){let y=Ye.rect(e,g),v=y.x-(e.x??0);if(u!=0&&(Math.abs(v)<(e.width??0)/2||Math.abs(v)==(e.width??0)/2&&Math.abs(y.y-(e.y??0))>(e.height??0)/2-h)){let x=h*h*(1-v*v/(u*u));x>0&&(x=Math.sqrt(x)),x=h-x,g.y-(e.y??0)>0&&(x=-x),y.y+=x}return y},i}var d_e,p_e,m_e,BQ=N(()=>{"use strict";Ft();Ht();Ut();Wt();ir();d_e=o((t,e,r,n,i,a,s)=>[`M${t},${e+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${t},${e+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createCylinderPathD"),p_e=o((t,e,r,n,i,a,s)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${t},${e+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createOuterCylinderPathD"),m_e=o((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");o(PQ,"linedCylinder")});async function FQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=u+h,{cssStyles:d}=e,p=Xe.svg(i),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-l/2-l/2*.1,y:-f/2},{x:-l/2-l/2*.1,y:f/2},...Fo(-l/2-l/2*.1,f/2,l/2+l/2*.1,f/2,h,.8),{x:l/2+l/2*.1,y:-f/2},{x:-l/2-l/2*.1,y:-f/2},{x:-l/2,y:-f/2},{x:-l/2,y:f/2*1.1},{x:-l/2,y:-f/2}],y=p.polygon(g.map(x=>[x.x,x.y]),m),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)+l/2*.1/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h/2-(a.y-(a.top??0))})`),je(e,v),e.intersect=function(x){return Ye.polygon(e,g,x)},i}var $Q=N(()=>{"use strict";Ft();Ht();Wt();Ut();o(FQ,"linedWaveEdgedRect")});async function zQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=5,f=-l/2,d=-u/2,{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{}),y=[{x:f-h,y:d+h},{x:f-h,y:d+u+h},{x:f+l-h,y:d+u+h},{x:f+l-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d+u-h},{x:f+l+h,y:d+u-h},{x:f+l+h,y:d-h},{x:f+h,y:d-h},{x:f+h,y:d},{x:f,y:d},{x:f,y:d+h}],v=[{x:f,y:d+h},{x:f+l-h,y:d+h},{x:f+l-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d},{x:f,y:d}];e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=Xt(y),b=m.path(x,g),w=Xt(v),C=m.path(w,{...g,fill:"none"}),T=i.insert(()=>C,":first-child");return T.insert(()=>b,":first-child"),T.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",n),s.attr("transform",`translate(${-(a.width/2)-h-(a.x-(a.left??0))}, ${-(a.height/2)+h-(a.y-(a.top??0))})`),je(e,T),e.intersect=function(E){return Ye.polygon(e,y,E)},i}var GQ=N(()=>{"use strict";Ft();Ut();Wt();Ht();o(zQ,"multiRect")});async function VQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=u+h,d=-l/2,p=-f/2,m=5,{cssStyles:g}=e,y=Fo(d-m,p+f+m,d+l-m,p+f+m,h,.8),v=y?.[y.length-1],x=[{x:d-m,y:p+m},{x:d-m,y:p+f+m},...y,{x:d+l-m,y:v.y-m},{x:d+l,y:v.y-m},{x:d+l,y:v.y-2*m},{x:d+l+m,y:v.y-2*m},{x:d+l+m,y:p-m},{x:d+m,y:p-m},{x:d+m,y:p},{x:d,y:p},{x:d,y:p+m}],b=[{x:d,y:p+m},{x:d+l-m,y:p+m},{x:d+l-m,y:v.y-m},{x:d+l,y:v.y-m},{x:d+l,y:p},{x:d,y:p}],w=Xe.svg(i),C=Ke(e,{});e.look!=="handDrawn"&&(C.roughness=0,C.fillStyle="solid");let T=Xt(x),E=w.path(T,C),A=Xt(b),S=w.path(A,C),_=i.insert(()=>E,":first-child");return _.insert(()=>S),_.attr("class","basic label-container"),g&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",g),n&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",n),_.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-(a.width/2)-m-(a.x-(a.left??0))}, ${-(a.height/2)+m-h/2-(a.y-(a.top??0))})`),je(e,_),e.intersect=function(I){return Ye.polygon(e,x,I)},i}var UQ=N(()=>{"use strict";Ft();Ht();Wt();Ut();o(VQ,"multiWaveEdgedRectangle")});async function HQ(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=Qe(e);e.labelStyle=n,e.useHtmlLabels||cr().flowchart?.htmlLabels!==!1||(e.centerLabel=!0);let{shapeSvg:s,bbox:l}=await pt(t,e,ht(e)),u=Math.max(l.width+(e.padding??0)*2,e?.width??0),h=Math.max(l.height+(e.padding??0)*2,e?.height??0),f=-u/2,d=-h/2,{cssStyles:p}=e,m=Xe.svg(s),g=Ke(e,{fill:r.noteBkgColor,stroke:r.noteBorderColor});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=m.rectangle(f,d,u,h,g),v=s.insert(()=>y,":first-child");return v.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",p),i&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",i),je(e,v),e.intersect=function(x){return Ye.rect(e,x)},s}var WQ=N(()=>{"use strict";Wt();Ht();Ut();Ft();ji();o(HQ,"note")});async function qQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=a.width+e.padding,l=a.height+e.padding,u=s+l,h=[{x:u/2,y:0},{x:u,y:-u/2},{x:u/2,y:-u},{x:0,y:-u/2}],f,{cssStyles:d}=e;if(e.look==="handDrawn"){let p=Xe.svg(i),m=Ke(e,{}),g=g_e(0,0,u),y=p.path(g,m);f=i.insert(()=>y,":first-child").attr("transform",`translate(${-u/2}, ${u/2})`),d&&f.attr("style",d)}else f=La(i,u,u,h);return n&&f.attr("style",n),je(e,f),e.intersect=function(p){return Y.debug(`APA12 Intersect called SPLIT +point:`,p,` +node: +`,e,` +res:`,Ye.polygon(e,h,p)),Ye.polygon(e,h,p)},i}var g_e,YQ=N(()=>{"use strict";vt();Ft();Ht();Ut();Wt();_u();g_e=o((t,e,r)=>[`M${t+r/2},${e}`,`L${t+r},${e-r/2}`,`L${t+r/2},${e-r}`,`L${t},${e-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");o(qQ,"question")});async function XQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0),e?.width??0),u=Math.max(a.height+(e.padding??0),e?.height??0),h=-l/2,f=-u/2,d=f/2,p=[{x:h+d,y:f},{x:h,y:0},{x:h+d,y:-f},{x:-h,y:-f},{x:-h,y:f}],{cssStyles:m}=e,g=Xe.svg(i),y=Ke(e,{});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=Xt(p),x=g.path(v,y),b=i.insert(()=>x,":first-child");return b.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",m),n&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",n),b.attr("transform",`translate(${-d/2},0)`),s.attr("transform",`translate(${-d/2-a.width/2-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),je(e,b),e.intersect=function(w){return Ye.polygon(e,p,w)},i}var jQ=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(XQ,"rect_left_inv_arrow")});function y_e(t,e){e&&t.attr("style",e)}async function v_e(t){let e=Ge(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),n=t.label;t.label&&pi(t.label)&&(n=await mh(t.label.replace(Ze.lineBreakRegex,` +`),me()));let i=t.isNode?"nodeLabel":"edgeLabel";return r.html('"+n+""),y_e(r,t.labelStyle),r.style("display","inline-block"),r.style("padding-right","1px"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}var x_e,gc,Gw=N(()=>{"use strict";dr();vt();zt();gr();ir();o(y_e,"applyStyle");o(v_e,"addHtmlLabel");x_e=o(async(t,e,r,n)=>{let i=t||"";if(typeof i=="object"&&(i=i[0]),fr(me().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),Y.info("vertexText"+i);let a={isNode:n,label:na(i).replace(/fa[blrs]?:fa-[\w-]+/g,l=>``),labelStyle:e&&e.replace("fill:","color:")};return await v_e(a)}else{let a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",e.replace("color:","fill:"));let s=[];typeof i=="string"?s=i.split(/\\n|\n|/gi):Array.isArray(i)?s=i:s=[];for(let l of s){let u=document.createElementNS("http://www.w3.org/2000/svg","tspan");u.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),u.setAttribute("dy","1em"),u.setAttribute("x","0"),r?u.setAttribute("class","title-row"):u.setAttribute("class","row"),u.textContent=l.trim(),a.appendChild(u)}return a}},"createLabel"),gc=x_e});async function KQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let i;e.cssClasses?i="node "+e.cssClasses:i="node default";let a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=a.insert("g"),l=a.insert("g").attr("class","label").attr("style",n),u=e.description,h=e.label,f=l.node().appendChild(await gc(h,e.labelStyle,!0,!0)),d={width:0,height:0};if(fr(me()?.flowchart?.htmlLabels)){let S=f.children[0],_=Ge(f);d=S.getBoundingClientRect(),_.attr("width",d.width),_.attr("height",d.height)}Y.info("Text 2",u);let p=u||[],m=f.getBBox(),g=l.node().appendChild(await gc(p.join?p.join("
    "):p,e.labelStyle,!0,!0)),y=g.children[0],v=Ge(g);d=y.getBoundingClientRect(),v.attr("width",d.width),v.attr("height",d.height);let x=(e.padding||0)/2;Ge(g).attr("transform","translate( "+(d.width>m.width?0:(m.width-d.width)/2)+", "+(m.height+x+5)+")"),Ge(f).attr("transform","translate( "+(d.width(Y.debug("Rough node insert CXC",I),D),":first-child"),E=a.insert(()=>(Y.debug("Rough node insert CXC",I),I),":first-child")}else E=s.insert("rect",":first-child"),A=s.insert("line"),E.attr("class","outer title-state").attr("style",n).attr("x",-d.width/2-x).attr("y",-d.height/2-x).attr("width",d.width+(e.padding||0)).attr("height",d.height+(e.padding||0)),A.attr("class","divider").attr("x1",-d.width/2-x).attr("x2",d.width/2+x).attr("y1",-d.height/2-x+m.height+x).attr("y2",-d.height/2-x+m.height+x);return je(e,E),e.intersect=function(S){return Ye.rect(e,S)},a}var QQ=N(()=>{"use strict";dr();gr();Ft();Gw();Ht();Ut();Wt();zt();qh();vt();o(KQ,"rectWithTitle")});async function ZQ(t,e){let r={rx:5,ry:5,classes:"",labelPaddingX:(e?.padding||0)*1,labelPaddingY:(e?.padding||0)*1};return Du(t,e,r)}var JQ=N(()=>{"use strict";mm();o(ZQ,"roundedRect")});async function eZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=e?.padding??0,u=Math.max(a.width+(e.padding??0)*2,e?.width??0),h=Math.max(a.height+(e.padding??0)*2,e?.height??0),f=-a.width/2-l,d=-a.height/2-l,{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:f,y:d},{x:f+u+8,y:d},{x:f+u+8,y:d+h},{x:f-8,y:d+h},{x:f-8,y:d},{x:f,y:d},{x:f,y:d+h}],v=m.polygon(y.map(b=>[b.x,b.y]),g),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container").attr("style",$n(p)),n&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),p&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),s.attr("transform",`translate(${-u/2+4+(e.padding??0)-(a.x-(a.left??0))},${-h/2+(e.padding??0)-(a.y-(a.top??0))})`),je(e,x),e.intersect=function(b){return Ye.rect(e,b)},i}var tZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();ir();o(eZ,"shadedProcess")});async function rZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=-l/2,f=-u/2,{cssStyles:d}=e,p=Xe.svg(i),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:h,y:f},{x:h,y:f+u},{x:h+l,y:f+u},{x:h+l,y:f-u/2}],y=Xt(g),v=p.path(y,m),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),x.attr("transform",`translate(0, ${u/4})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))}, ${-u/4+(e.padding??0)-(a.y-(a.top??0))})`),je(e,x),e.intersect=function(b){return Ye.polygon(e,g,b)},i}var nZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(rZ,"slopedRect")});async function iZ(t,e){let r={rx:0,ry:0,classes:"",labelPaddingX:(e?.padding||0)*2,labelPaddingY:(e?.padding||0)*1};return Du(t,e,r)}var aZ=N(()=>{"use strict";mm();o(iZ,"squareRect")});async function sZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=a.height+e.padding,l=a.width+s/4+e.padding,u,{cssStyles:h}=e;if(e.look==="handDrawn"){let f=Xe.svg(i),d=Ke(e,{}),p=Na(-l/2,-s/2,l,s,s/2),m=f.path(p,d);u=i.insert(()=>m,":first-child"),u.attr("class","basic label-container").attr("style",$n(h))}else u=i.insert("rect",":first-child"),u.attr("class","basic label-container").attr("style",n).attr("rx",s/2).attr("ry",s/2).attr("x",-l/2).attr("y",-s/2).attr("width",l).attr("height",s);return je(e,u),e.intersect=function(f){return Ye.rect(e,f)},i}var oZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();qh();ir();o(sZ,"stadium")});async function lZ(t,e){return Du(t,e,{rx:5,ry:5,classes:"flowchart-node"})}var cZ=N(()=>{"use strict";mm();o(lZ,"state")});function uZ(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=Qe(e);e.labelStyle=n;let{cssStyles:a}=e,{lineColor:s,stateBorder:l,nodeBorder:u}=r,h=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),f=Xe.svg(h),d=Ke(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=f.circle(0,0,14,{...d,stroke:s,strokeWidth:2}),m=l??u,g=f.circle(0,0,5,{...d,fill:m,stroke:m,strokeWidth:2,fillStyle:"solid"}),y=h.insert(()=>p,":first-child");return y.insert(()=>g),a&&y.selectAll("path").attr("style",a),i&&y.selectAll("path").attr("style",i),je(e,y),e.intersect=function(v){return Ye.circle(e,7,v)},h}var hZ=N(()=>{"use strict";Wt();Ht();Ut();Ft();o(uZ,"stateEnd")});function fZ(t,e,{config:{themeVariables:r}}){let{lineColor:n}=r,i=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a;if(e.look==="handDrawn"){let l=Xe.svg(i).circle(0,0,14,gK(n));a=i.insert(()=>l),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14)}else a=i.insert("circle",":first-child"),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14);return je(e,a),e.intersect=function(s){return Ye.circle(e,7,s)},i}var dZ=N(()=>{"use strict";Wt();Ht();Ut();Ft();o(fZ,"stateStart")});async function pZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=(e?.padding||0)/2,l=a.width+e.padding,u=a.height+e.padding,h=-a.width/2-s,f=-a.height/2-s,d=[{x:0,y:0},{x:l,y:0},{x:l,y:-u},{x:0,y:-u},{x:0,y:0},{x:-8,y:0},{x:l+8,y:0},{x:l+8,y:-u},{x:-8,y:-u},{x:-8,y:0}];if(e.look==="handDrawn"){let p=Xe.svg(i),m=Ke(e,{}),g=p.rectangle(h-8,f,l+16,u,m),y=p.line(h,f,h,f+u,m),v=p.line(h+l,f,h+l,f+u,m);i.insert(()=>y,":first-child"),i.insert(()=>v,":first-child");let x=i.insert(()=>g,":first-child"),{cssStyles:b}=e;x.attr("class","basic label-container").attr("style",$n(b)),je(e,x)}else{let p=La(i,l,u,d);n&&p.attr("style",n),je(e,p)}return e.intersect=function(p){return Ye.polygon(e,d,p)},i}var mZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();_u();ir();o(pZ,"subroutine")});async function gZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=-s/2,h=-l/2,f=.2*l,d=.2*l,{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{}),y=[{x:u-f/2,y:h},{x:u+s+f/2,y:h},{x:u+s+f/2,y:h+l},{x:u-f/2,y:h+l}],v=[{x:u+s-f/2,y:h+l},{x:u+s+f/2,y:h+l},{x:u+s+f/2,y:h+l-d}];e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=Xt(y),b=m.path(x,g),w=Xt(v),C=m.path(w,{...g,fillStyle:"solid"}),T=i.insert(()=>C,":first-child");return T.insert(()=>b,":first-child"),T.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",n),je(e,T),e.intersect=function(E){return Ye.polygon(e,y,E)},i}var yZ=N(()=>{"use strict";Ft();Ut();Wt();Ht();o(gZ,"taggedRect")});async function vZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=.2*l,d=.2*u,p=u+h,{cssStyles:m}=e,g=Xe.svg(i),y=Ke(e,{});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-l/2-l/2*.1,y:p/2},...Fo(-l/2-l/2*.1,p/2,l/2+l/2*.1,p/2,h,.8),{x:l/2+l/2*.1,y:-p/2},{x:-l/2-l/2*.1,y:-p/2}],x=-l/2+l/2*.1,b=-p/2-d*.4,w=[{x:x+l-f,y:(b+u)*1.4},{x:x+l,y:b+u-d},{x:x+l,y:(b+u)*.9},...Fo(x+l,(b+u)*1.3,x+l-f,(b+u)*1.5,-u*.03,.5)],C=Xt(v),T=g.path(C,y),E=Xt(w),A=g.path(E,{...y,fillStyle:"solid"}),S=i.insert(()=>A,":first-child");return S.insert(()=>T,":first-child"),S.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",m),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h/2-(a.y-(a.top??0))})`),je(e,S),e.intersect=function(_){return Ye.polygon(e,v,_)},i}var xZ=N(()=>{"use strict";Ft();Ht();Wt();Ut();o(vZ,"taggedWaveEdgedRectangle")});async function bZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=Math.max(a.width+e.padding,e?.width||0),l=Math.max(a.height+e.padding,e?.height||0),u=-s/2,h=-l/2,f=i.insert("rect",":first-child");return f.attr("class","text").attr("style",n).attr("rx",0).attr("ry",0).attr("x",u).attr("y",h).attr("width",s).attr("height",l),je(e,f),e.intersect=function(d){return Ye.rect(e,d)},i}var wZ=N(()=>{"use strict";Ft();Ht();Ut();o(bZ,"text")});async function TZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s,halfPadding:l}=await pt(t,e,ht(e)),u=e.look==="neo"?l*2:l,h=a.height+u,f=h/2,d=f/(2.5+h/50),p=a.width+d+u,{cssStyles:m}=e,g;if(e.look==="handDrawn"){let y=Xe.svg(i),v=w_e(0,0,p,h,d,f),x=T_e(0,0,p,h,d,f),b=y.path(v,Ke(e,{})),w=y.path(x,Ke(e,{fill:"none"}));g=i.insert(()=>w,":first-child"),g=i.insert(()=>b,":first-child"),g.attr("class","basic label-container"),m&&g.attr("style",m)}else{let y=b_e(0,0,p,h,d,f);g=i.insert("path",":first-child").attr("d",y).attr("class","basic label-container").attr("style",$n(m)).attr("style",n),g.attr("class","basic label-container"),m&&g.selectAll("path").attr("style",m),n&&g.selectAll("path").attr("style",n)}return g.attr("label-offset-x",d),g.attr("transform",`translate(${-p/2}, ${h/2} )`),s.attr("transform",`translate(${-(a.width/2)-d-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),je(e,g),e.intersect=function(y){let v=Ye.rect(e,y),x=v.y-(e.y??0);if(f!=0&&(Math.abs(x)<(e.height??0)/2||Math.abs(x)==(e.height??0)/2&&Math.abs(v.x-(e.x??0))>(e.width??0)/2-d)){let b=d*d*(1-x*x/(f*f));b!=0&&(b=Math.sqrt(Math.abs(b))),b=d-b,y.x-(e.x??0)>0&&(b=-b),v.x+=b}return v},i}var b_e,w_e,T_e,kZ=N(()=>{"use strict";Ft();Ut();Wt();Ht();ir();b_e=o((t,e,r,n,i,a)=>`M${t},${e} + a${i},${a} 0,0,1 0,${-n} + l${r},0 + a${i},${a} 0,0,1 0,${n} + M${r},${-n} + a${i},${a} 0,0,0 0,${n} + l${-r},0`,"createCylinderPathD"),w_e=o((t,e,r,n,i,a)=>[`M${t},${e}`,`M${t+r},${e}`,`a${i},${a} 0,0,0 0,${-n}`,`l${-r},0`,`a${i},${a} 0,0,0 0,${n}`,`l${r},0`].join(" "),"createOuterCylinderPathD"),T_e=o((t,e,r,n,i,a)=>[`M${t+r/2},${-n/2}`,`a${i},${a} 0,0,0 0,${n}`].join(" "),"createInnerCylinderPathD");o(TZ,"tiltedCylinder")});async function EZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=a.width+e.padding,l=a.height+e.padding,u=[{x:-3*l/6,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:0,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Xe.svg(i),p=Ke(e,{}),m=Xt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=La(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,je(e,h),e.intersect=function(d){return Ye.polygon(e,u,d)},i}var SZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();_u();o(EZ,"trapezoid")});async function CZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=60,l=20,u=Math.max(s,a.width+(e.padding??0)*2,e?.width??0),h=Math.max(l,a.height+(e.padding??0)*2,e?.height??0),{cssStyles:f}=e,d=Xe.svg(i),p=Ke(e,{});e.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let m=[{x:-u/2*.8,y:-h/2},{x:u/2*.8,y:-h/2},{x:u/2,y:-h/2*.6},{x:u/2,y:h/2},{x:-u/2,y:h/2},{x:-u/2,y:-h/2*.6}],g=Xt(m),y=d.path(g,p),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",f),n&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",n),je(e,v),e.intersect=function(x){return Ye.polygon(e,m,x)},i}var AZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(CZ,"trapezoidalPentagon")});async function _Z(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=fr(me().flowchart?.htmlLabels),u=a.width+(e.padding??0),h=u+a.height,f=u+a.height,d=[{x:0,y:0},{x:f,y:0},{x:f/2,y:-h}],{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=Xt(d),v=m.path(y,g),x=i.insert(()=>v,":first-child").attr("transform",`translate(${-h/2}, ${h/2})`);return p&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",p),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),e.width=u,e.height=h,je(e,x),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${h/2-(a.height+(e.padding??0)/(l?2:1)-(a.y-(a.top??0)))})`),e.intersect=function(b){return Y.info("Triangle intersect",e,d,b),Ye.polygon(e,d,b)},i}var DZ=N(()=>{"use strict";vt();Ft();Ht();Ut();Wt();Ft();gr();zt();o(_Z,"triangle")});async function LZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/8,f=u+h,{cssStyles:d}=e,m=70-l,g=m>0?m/2:0,y=Xe.svg(i),v=Ke(e,{});e.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=[{x:-l/2-g,y:f/2},...Fo(-l/2-g,f/2,l/2+g,f/2,h,.8),{x:l/2+g,y:-f/2},{x:-l/2-g,y:-f/2}],b=Xt(x),w=y.path(b,v),C=i.insert(()=>w,":first-child");return C.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h-(a.y-(a.top??0))})`),je(e,C),e.intersect=function(T){return Ye.polygon(e,x,T)},i}var RZ=N(()=>{"use strict";Ft();Ht();Wt();Ut();o(LZ,"waveEdgedRectangle")});async function NZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=100,l=50,u=Math.max(a.width+(e.padding??0)*2,e?.width??0),h=Math.max(a.height+(e.padding??0)*2,e?.height??0),f=u/h,d=u,p=h;d>p*f?p=d/f:d=p*f,d=Math.max(d,s),p=Math.max(p,l);let m=Math.min(p*.2,p/4),g=p+m*2,{cssStyles:y}=e,v=Xe.svg(i),x=Ke(e,{});e.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let b=[{x:-d/2,y:g/2},...Fo(-d/2,g/2,d/2,g/2,m,1),{x:d/2,y:-g/2},...Fo(d/2,-g/2,-d/2,-g/2,m,-1)],w=Xt(b),C=v.path(w,x),T=i.insert(()=>C,":first-child");return T.attr("class","basic label-container"),y&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",y),n&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",n),je(e,T),e.intersect=function(E){return Ye.polygon(e,b,E)},i}var MZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(NZ,"waveRectangle")});async function IZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=5,f=-l/2,d=-u/2,{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{}),y=[{x:f-h,y:d-h},{x:f-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d-h}],v=`M${f-h},${d-h} L${f+l},${d-h} L${f+l},${d+u} L${f-h},${d+u} L${f-h},${d-h} + M${f-h},${d} L${f+l},${d} + M${f},${d-h} L${f},${d+u}`;e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=m.path(v,g),b=i.insert(()=>x,":first-child");return b.attr("transform",`translate(${h/2}, ${h/2})`),b.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",n),s.attr("transform",`translate(${-(a.width/2)+h/2-(a.x-(a.left??0))}, ${-(a.height/2)+h/2-(a.y-(a.top??0))})`),je(e,b),e.intersect=function(w){return Ye.polygon(e,y,w)},i}var OZ=N(()=>{"use strict";Ft();Ut();Wt();Ht();o(IZ,"windowPane")});async function KD(t,e){let r=e;if(r.alias&&(e.label=r.alias),e.look==="handDrawn"){let{themeVariables:P}=cr(),{background:z}=P,$={...e,id:e.id+"-background",look:"default",cssStyles:["stroke: none",`fill: ${z}`]};await KD(t,$)}let n=cr();e.useHtmlLabels=n.htmlLabels;let i=n.er?.diagramPadding??10,a=n.er?.entityPadding??6,{cssStyles:s}=e,{labelStyles:l}=Qe(e);if(r.attributes.length===0&&e.label){let P={rx:0,ry:0,labelPaddingX:i,labelPaddingY:i*1.5,classes:""};ra(e.label,n)+P.labelPaddingX*20){let P=f.width+i*2-(m+g+y+v);m+=P/w,g+=P/w,y>0&&(y+=P/w),v>0&&(v+=P/w)}let T=m+g+y+v,E=Xe.svg(h),A=Ke(e,{});e.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");let S=Math.max(C.width+i*2,e?.width||0,T),_=Math.max(C.height+(p[0]||d)+a,e?.height||0),I=-S/2,D=-_/2;h.selectAll("g:not(:first-child)").each((P,z,$)=>{let H=Ge($[z]),Q=H.attr("transform"),j=0,ie=0;if(Q){let le=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(Q);le&&(j=parseFloat(le[1]),ie=parseFloat(le[2]),H.attr("class").includes("attribute-name")?j+=m:H.attr("class").includes("attribute-keys")?j+=m+g:H.attr("class").includes("attribute-comment")&&(j+=m+g+y))}H.attr("transform",`translate(${I+i/2+j}, ${ie+D+f.height+a/2})`)}),h.select(".name").attr("transform","translate("+-f.width/2+", "+(D+a/2)+")");let k=E.rectangle(I,D,S,_,A),L=h.insert(()=>k,":first-child").attr("style",s.join("")),{themeVariables:R}=cr(),{rowEven:O,rowOdd:M,nodeBorder:B}=R;p.push(0);for(let[P,z]of p.entries()){if(P===0&&p.length>1)continue;let $=P%2===0&&z!==0,H=E.rectangle(I,f.height+D+z,S,f.height,{...A,fill:$?O:M,stroke:B});h.insert(()=>H,"g.label").attr("style",s.join("")).attr("class",`row-rect-${P%2===0?"even":"odd"}`)}let F=E.line(I,f.height+D,S+I,f.height+D,A);h.insert(()=>F).attr("class","divider"),F=E.line(m+I,f.height+D,m+I,_+D,A),h.insert(()=>F).attr("class","divider"),x&&(F=E.line(m+g+I,f.height+D,m+g+I,_+D,A),h.insert(()=>F).attr("class","divider")),b&&(F=E.line(m+g+y+I,f.height+D,m+g+y+I,_+D,A),h.insert(()=>F).attr("class","divider"));for(let P of p)F=E.line(I,f.height+D+P,S+I,f.height+D+P,A),h.insert(()=>F).attr("class","divider");return je(e,L),e.intersect=function(P){return Ye.rect(e,P)},h}async function b2(t,e,r,n=0,i=0,a=[],s=""){let l=t.insert("g").attr("class",`label ${a.join(" ")}`).attr("transform",`translate(${n}, ${i})`).attr("style",s);e!==ec(e)&&(e=ec(e),e=e.replaceAll("<","<").replaceAll(">",">"));let u=l.node().appendChild(await Hn(l,e,{width:ra(e,r)+100,style:s,useHtmlLabels:r.htmlLabels},r));if(e.includes("<")||e.includes(">")){let f=u.children[0];for(f.textContent=f.textContent.replaceAll("<","<").replaceAll(">",">");f.childNodes[0];)f=f.childNodes[0],f.textContent=f.textContent.replaceAll("<","<").replaceAll(">",">")}let h=u.getBBox();if(fr(r.htmlLabels)){let f=u.children[0];f.style.textAlign="start";let d=Ge(u);h=f.getBoundingClientRect(),d.attr("width",h.width),d.attr("height",h.height)}return h}var PZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();mm();ji();to();gr();dr();ir();o(KD,"erBox");o(b2,"addText")});async function BZ(t,e,r,n,i=r.class.padding??12){let a=n?0:3,s=t.insert("g").attr("class",ht(e)).attr("id",e.domId||e.id),l=null,u=null,h=null,f=null,d=0,p=0,m=0;if(l=s.insert("g").attr("class","annotation-group text"),e.annotations.length>0){let b=e.annotations[0];await Vw(l,{text:`\xAB${b}\xBB`},0),d=l.node().getBBox().height}u=s.insert("g").attr("class","label-group text"),await Vw(u,e,0,["font-weight: bolder"]);let g=u.node().getBBox();p=g.height,h=s.insert("g").attr("class","members-group text");let y=0;for(let b of e.members){let w=await Vw(h,b,y,[b.parseClassifier()]);y+=w+a}m=h.node().getBBox().height,m<=0&&(m=i/2),f=s.insert("g").attr("class","methods-group text");let v=0;for(let b of e.methods){let w=await Vw(f,b,v,[b.parseClassifier()]);v+=w+a}let x=s.node().getBBox();if(l!==null){let b=l.node().getBBox();l.attr("transform",`translate(${-b.width/2})`)}return u.attr("transform",`translate(${-g.width/2}, ${d})`),x=s.node().getBBox(),h.attr("transform",`translate(0, ${d+p+i*2})`),x=s.node().getBBox(),f.attr("transform",`translate(0, ${d+p+(m?m+i*4:i*2)})`),x=s.node().getBBox(),{shapeSvg:s,bbox:x}}async function Vw(t,e,r,n=[]){let i=t.insert("g").attr("class","label").attr("style",n.join("; ")),a=cr(),s="useHtmlLabels"in e?e.useHtmlLabels:fr(a.htmlLabels)??!0,l="";"text"in e?l=e.text:l=e.label,!s&&l.startsWith("\\")&&(l=l.substring(1)),pi(l)&&(s=!0);let u=await Hn(i,Xy(na(l)),{width:ra(l,a)+50,classes:"markdown-node-label",useHtmlLabels:s},a),h,f=1;if(s){let d=u.children[0],p=Ge(u);f=d.innerHTML.split("
    ").length,d.innerHTML.includes("")&&(f+=d.innerHTML.split("").length-1);let m=d.getElementsByTagName("img");if(m){let g=l.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=a.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,C=parseInt(b,10)*5+"px";y.style.minWidth=C,y.style.maxWidth=C}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=d.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}else{n.includes("font-weight: bolder")&&Ge(u).selectAll("tspan").attr("font-weight",""),f=u.children.length;let d=u.children[0];(u.textContent===""||u.textContent.includes(">"))&&(d.textContent=l[0]+l.substring(1).replaceAll(">",">").replaceAll("<","<").trim(),l[1]===" "&&(d.textContent=d.textContent[0]+" "+d.textContent.substring(1))),d.textContent==="undefined"&&(d.textContent=""),h=u.getBBox()}return i.attr("transform","translate(0,"+(-h.height/(2*f)+r)+")"),h.height}var FZ=N(()=>{"use strict";dr();ji();Ft();ir();zt();to();gr();o(BZ,"textHelper");o(Vw,"addText")});async function $Z(t,e){let r=me(),n=r.class.padding??12,i=n,a=e.useHtmlLabels??fr(r.htmlLabels)??!0,s=e;s.annotations=s.annotations??[],s.members=s.members??[],s.methods=s.methods??[];let{shapeSvg:l,bbox:u}=await BZ(t,e,r,a,i),{labelStyles:h,nodeStyles:f}=Qe(e);e.labelStyle=h,e.cssStyles=s.styles||"";let d=s.styles?.join(";")||f||"";e.cssStyles||(e.cssStyles=d.replaceAll("!important","").split(";"));let p=s.members.length===0&&s.methods.length===0&&!r.class?.hideEmptyMembersBox,m=Xe.svg(l),g=Ke(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=u.width,v=u.height;s.members.length===0&&s.methods.length===0?v+=i:s.members.length>0&&s.methods.length===0&&(v+=i*2);let x=-y/2,b=-v/2,w=m.rectangle(x-n,b-n-(p?n:s.members.length===0&&s.methods.length===0?-n/2:0),y+2*n,v+2*n+(p?n*2:s.members.length===0&&s.methods.length===0?-n:0),g),C=l.insert(()=>w,":first-child");C.attr("class","basic label-container");let T=C.node().getBBox();l.selectAll(".text").each((_,I,D)=>{let k=Ge(D[I]),L=k.attr("transform"),R=0;if(L){let F=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(L);F&&(R=parseFloat(F[2]))}let O=R+b+n-(p?n:s.members.length===0&&s.methods.length===0?-n/2:0);a||(O-=4);let M=x;(k.attr("class").includes("label-group")||k.attr("class").includes("annotation-group"))&&(M=-k.node()?.getBBox().width/2||0,l.selectAll("text").each(function(B,F,P){window.getComputedStyle(P[F]).textAnchor==="middle"&&(M=0)})),k.attr("transform",`translate(${M}, ${O})`)});let E=l.select(".annotation-group").node().getBBox().height-(p?n/2:0)||0,A=l.select(".label-group").node().getBBox().height-(p?n/2:0)||0,S=l.select(".members-group").node().getBBox().height-(p?n/2:0)||0;if(s.members.length>0||s.methods.length>0||p){let _=m.line(T.x,E+A+b+n,T.x+T.width,E+A+b+n,g);l.insert(()=>_).attr("class","divider").attr("style",d)}if(p||s.members.length>0||s.methods.length>0){let _=m.line(T.x,E+A+S+b+i*2+n,T.x+T.width,E+A+S+b+n+i*2,g);l.insert(()=>_).attr("class","divider").attr("style",d)}if(s.look!=="handDrawn"&&l.selectAll("path").attr("style",d),C.select(":nth-child(2)").attr("style",d),l.selectAll(".divider").select("path").attr("style",d),e.labelStyle?l.selectAll("span").attr("style",e.labelStyle):l.selectAll("span").attr("style",d),!a){let _=RegExp(/color\s*:\s*([^;]*)/),I=_.exec(d);if(I){let D=I[0].replace("color","fill");l.selectAll("tspan").attr("style",D)}else if(h){let D=_.exec(h);if(D){let k=D[0].replace("color","fill");l.selectAll("tspan").attr("style",k)}}}return je(e,C),e.intersect=function(_){return Ye.rect(e,_)},l}var zZ=N(()=>{"use strict";Ft();zt();dr();Wt();Ut();Ht();FZ();gr();o($Z,"classBox")});async function GZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let i=e,a=e,s=20,l=20,u="verifyMethod"in e,h=ht(e),f=t.insert("g").attr("class",h).attr("id",e.domId??e.id),d;u?d=await Lu(f,`<<${i.type}>>`,0,e.labelStyle):d=await Lu(f,"<<Element>>",0,e.labelStyle);let p=d,m=await Lu(f,i.name,p,e.labelStyle+"; font-weight: bold;");if(p+=m+l,u){let E=await Lu(f,`${i.requirementId?`Id: ${i.requirementId}`:""}`,p,e.labelStyle);p+=E;let A=await Lu(f,`${i.text?`Text: ${i.text}`:""}`,p,e.labelStyle);p+=A;let S=await Lu(f,`${i.risk?`Risk: ${i.risk}`:""}`,p,e.labelStyle);p+=S,await Lu(f,`${i.verifyMethod?`Verification: ${i.verifyMethod}`:""}`,p,e.labelStyle)}else{let E=await Lu(f,`${a.type?`Type: ${a.type}`:""}`,p,e.labelStyle);p+=E,await Lu(f,`${a.docRef?`Doc Ref: ${a.docRef}`:""}`,p,e.labelStyle)}let g=(f.node()?.getBBox().width??200)+s,y=(f.node()?.getBBox().height??200)+s,v=-g/2,x=-y/2,b=Xe.svg(f),w=Ke(e,{});e.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let C=b.rectangle(v,x,g,y,w),T=f.insert(()=>C,":first-child");if(T.attr("class","basic label-container").attr("style",n),f.selectAll(".label").each((E,A,S)=>{let _=Ge(S[A]),I=_.attr("transform"),D=0,k=0;if(I){let M=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(I);M&&(D=parseFloat(M[1]),k=parseFloat(M[2]))}let L=k-y/2,R=v+s/2;(A===0||A===1)&&(R=D),_.attr("transform",`translate(${R}, ${L+s})`)}),p>d+m+l){let E=b.line(v,x+d+m+l,v+g,x+d+m+l,w);f.insert(()=>E).attr("style",n)}return je(e,T),e.intersect=function(E){return Ye.rect(e,E)},f}async function Lu(t,e,r,n=""){if(e==="")return 0;let i=t.insert("g").attr("class","label").attr("style",n),a=me(),s=a.htmlLabels??!0,l=await Hn(i,Xy(na(e)),{width:ra(e,a)+50,classes:"markdown-node-label",useHtmlLabels:s,style:n},a),u;if(s){let h=l.children[0],f=Ge(l);u=h.getBoundingClientRect(),f.attr("width",u.width),f.attr("height",u.height)}else{let h=l.children[0];for(let f of h.children)f.textContent=f.textContent.replaceAll(">",">").replaceAll("<","<"),n&&f.setAttribute("style",n);u=l.getBBox(),u.height+=6}return i.attr("transform",`translate(${-u.width/2},${-u.height/2+r})`),u.height}var VZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();ir();zt();to();dr();o(GZ,"requirementBox");o(Lu,"addText")});async function UZ(t,e,{config:r}){let{labelStyles:n,nodeStyles:i}=Qe(e);e.labelStyle=n||"";let a=10,s=e.width;e.width=(e.width??200)-10;let{shapeSvg:l,bbox:u,label:h}=await pt(t,e,ht(e)),f=e.padding||10,d="",p;"ticket"in e&&e.ticket&&r?.kanban?.ticketBaseUrl&&(d=r?.kanban?.ticketBaseUrl.replace("#TICKET#",e.ticket),p=l.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",d).attr("target","_blank"));let m={useHtmlLabels:e.useHtmlLabels,labelStyle:e.labelStyle||"",width:e.width,img:e.img,padding:e.padding||8,centerLabel:!1},g,y;p?{label:g,bbox:y}=await Dw(p,"ticket"in e&&e.ticket||"",m):{label:g,bbox:y}=await Dw(l,"ticket"in e&&e.ticket||"",m);let{label:v,bbox:x}=await Dw(l,"assigned"in e&&e.assigned||"",m);e.width=s;let b=10,w=e?.width||0,C=Math.max(y.height,x.height)/2,T=Math.max(u.height+b*2,e?.height||0)+C,E=-w/2,A=-T/2;h.attr("transform","translate("+(f-w/2)+", "+(-C-u.height/2)+")"),g.attr("transform","translate("+(f-w/2)+", "+(-C+u.height/2)+")"),v.attr("transform","translate("+(f+w/2-x.width-2*a)+", "+(-C+u.height/2)+")");let S,{rx:_,ry:I}=e,{cssStyles:D}=e;if(e.look==="handDrawn"){let k=Xe.svg(l),L=Ke(e,{}),R=_||I?k.path(Na(E,A,w,T,_||0),L):k.rectangle(E,A,w,T,L);S=l.insert(()=>R,":first-child"),S.attr("class","basic label-container").attr("style",D||null)}else{S=l.insert("rect",":first-child"),S.attr("class","basic label-container __APA__").attr("style",i).attr("rx",_??5).attr("ry",I??5).attr("x",E).attr("y",A).attr("width",w).attr("height",T);let k="priority"in e&&e.priority;if(k){let L=l.append("line"),R=E+2,O=A+Math.floor((_??0)/2),M=A+T-Math.floor((_??0)/2);L.attr("x1",R).attr("y1",O).attr("x2",R).attr("y2",M).attr("stroke-width","4").attr("stroke",k_e(k))}}return je(e,S),e.height=T,e.intersect=function(k){return Ye.rect(e,k)},l}var k_e,HZ=N(()=>{"use strict";Ft();Ht();qh();Ut();Wt();k_e=o(t=>{switch(t){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");o(UZ,"kanbanItem")});function WZ(t){return t in QD}var E_e,S_e,QD,ZD=N(()=>{"use strict";NK();OK();BK();$K();GK();UK();WK();YK();jK();QK();JK();tQ();nQ();aQ();oQ();cQ();hQ();dQ();mQ();yQ();xQ();wQ();kQ();SQ();AQ();DQ();RQ();MQ();OQ();BQ();$Q();GQ();UQ();WQ();YQ();jQ();QQ();JQ();tZ();nZ();aZ();oZ();cZ();hZ();dZ();mZ();yZ();xZ();wZ();kZ();SZ();AZ();DZ();RZ();MZ();OZ();PZ();zZ();VZ();HZ();E_e=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:iZ},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:ZQ},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:sZ},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:pZ},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:ZK},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:zK},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:qQ},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:fQ},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:NQ},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:LQ},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:EZ},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:CQ},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:rQ},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:bZ},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:PK},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:eZ},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:fZ},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:uZ},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:lQ},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:pQ},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:HK},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:qK},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:XK},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:IQ},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:LZ},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:uQ},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:TZ},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:PQ},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:KK},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:eQ},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:_Z},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:IZ},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:iQ},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:CZ},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:sQ},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:rZ},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:VQ},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:zQ},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:IK},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:VK},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:vZ},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:gZ},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:NZ},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:XQ},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:FQ}],S_e=o(()=>{let e=[...Object.entries({state:lZ,choice:FK,note:HQ,rectWithTitle:KQ,labelRect:_Q,iconSquare:TQ,iconCircle:vQ,icon:gQ,iconRounded:bQ,imageSquare:EQ,anchor:RK,kanbanItem:UZ,classBox:$Z,erBox:KD,requirementBox:GZ}),...E_e.flatMap(r=>[r.shortName,..."aliases"in r?r.aliases:[],..."internalAliases"in r?r.internalAliases:[]].map(i=>[i,r.handler]))];return Object.fromEntries(e)},"generateShapeMap"),QD=S_e();o(WZ,"isValidShape")});var C_e,Uw,qZ=N(()=>{"use strict";dr();Ew();zt();vt();ZD();ir();gr();mi();C_e="flowchart-",Uw=class{constructor(){this.vertexCounter=0;this.config=me();this.vertices=new Map;this.edges=[];this.classes=new Map;this.subGraphs=[];this.subGraphLookup=new Map;this.tooltips=new Map;this.subCount=0;this.firstGraphFlag=!0;this.secCount=-1;this.posCrossRef=[];this.funs=[];this.setAccTitle=Lr;this.setAccDescription=Nr;this.setDiagramTitle=$r;this.getAccTitle=Rr;this.getAccDescription=Mr;this.getDiagramTitle=Ir;this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{o(this,"FlowDB")}sanitizeText(e){return Ze.sanitizeText(e,this.config)}lookUpDomId(e){for(let r of this.vertices.values())if(r.id===e)return r.domId;return e}addVertex(e,r,n,i,a,s,l={},u){if(!e||e.trim().length===0)return;let h;if(u!==void 0){let m;u.includes(` +`)?m=u+` +`:m=`{ +`+u+` +}`,h=cm(m,{schema:lm})}let f=this.edges.find(m=>m.id===e);if(f){let m=h;m?.animate!==void 0&&(f.animate=m.animate),m?.animation!==void 0&&(f.animation=m.animation);return}let d,p=this.vertices.get(e);if(p===void 0&&(p={id:e,labelType:"text",domId:C_e+e+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(e,p)),this.vertexCounter++,r!==void 0?(this.config=me(),d=this.sanitizeText(r.text.trim()),p.labelType=r.type,d.startsWith('"')&&d.endsWith('"')&&(d=d.substring(1,d.length-1)),p.text=d):p.text===void 0&&(p.text=e),n!==void 0&&(p.type=n),i?.forEach(m=>{p.styles.push(m)}),a?.forEach(m=>{p.classes.push(m)}),s!==void 0&&(p.dir=s),p.props===void 0?p.props=l:l!==void 0&&Object.assign(p.props,l),h!==void 0){if(h.shape){if(h.shape!==h.shape.toLowerCase()||h.shape.includes("_"))throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`);if(!WZ(h.shape))throw new Error(`No such shape: ${h.shape}.`);p.type=h?.shape}h?.label&&(p.text=h?.label),h?.icon&&(p.icon=h?.icon,!h.label?.trim()&&p.text===e&&(p.text="")),h?.form&&(p.form=h?.form),h?.pos&&(p.pos=h?.pos),h?.img&&(p.img=h?.img,!h.label?.trim()&&p.text===e&&(p.text="")),h?.constraint&&(p.constraint=h.constraint),h.w&&(p.assetWidth=Number(h.w)),h.h&&(p.assetHeight=Number(h.h))}}addSingleLink(e,r,n,i){let l={start:e,end:r,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};Y.info("abc78 Got edge...",l);let u=n.text;if(u!==void 0&&(l.text=this.sanitizeText(u.text.trim()),l.text.startsWith('"')&&l.text.endsWith('"')&&(l.text=l.text.substring(1,l.text.length-1)),l.labelType=u.type),n!==void 0&&(l.type=n.type,l.stroke=n.stroke,l.length=n.length>10?10:n.length),i&&!this.edges.some(h=>h.id===i))l.id=i,l.isUserDefinedId=!0;else{let h=this.edges.filter(f=>f.start===l.start&&f.end===l.end);h.length===0?l.id=$h(l.start,l.end,{counter:0,prefix:"L"}):l.id=$h(l.start,l.end,{counter:h.length+1,prefix:"L"})}if(this.edges.length<(this.config.maxEdges??500))Y.info("Pushing edge..."),this.edges.push(l);else throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}. + +Initialize mermaid with maxEdges set to a higher number to allow more edges. +You cannot set this config via configuration inside the diagram as it is a secure config. +You have to call mermaid.initialize.`)}isLinkData(e){return e!==null&&typeof e=="object"&&"id"in e&&typeof e.id=="string"}addLink(e,r,n){let i=this.isLinkData(n)?n.id.replace("@",""):void 0;Y.info("addLink",e,r,i);for(let a of e)for(let s of r){let l=a===e[e.length-1],u=s===r[0];l&&u?this.addSingleLink(a,s,n,i):this.addSingleLink(a,s,n,void 0)}}updateLinkInterpolate(e,r){e.forEach(n=>{n==="default"?this.edges.defaultInterpolate=r:this.edges[n].interpolate=r})}updateLink(e,r){e.forEach(n=>{if(typeof n=="number"&&n>=this.edges.length)throw new Error(`The index ${n} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);n==="default"?this.edges.defaultStyle=r:(this.edges[n].style=r,(this.edges[n]?.style?.length??0)>0&&!this.edges[n]?.style?.some(i=>i?.startsWith("fill"))&&this.edges[n]?.style?.push("fill:none"))})}addClass(e,r){let n=r.join().replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");e.split(",").forEach(i=>{let a=this.classes.get(i);a===void 0&&(a={id:i,styles:[],textStyles:[]},this.classes.set(i,a)),n?.forEach(s=>{if(/color/.exec(s)){let l=s.replace("fill","bgFill");a.textStyles.push(l)}a.styles.push(s)})})}setDirection(e){this.direction=e,/.*/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),this.direction==="TD"&&(this.direction="TB")}setClass(e,r){for(let n of e.split(",")){let i=this.vertices.get(n);i&&i.classes.push(r);let a=this.edges.find(l=>l.id===n);a&&a.classes.push(r);let s=this.subGraphLookup.get(n);s&&s.classes.push(r)}}setTooltip(e,r){if(r!==void 0){r=this.sanitizeText(r);for(let n of e.split(","))this.tooltips.set(this.version==="gen-1"?this.lookUpDomId(n):n,r)}}setClickFun(e,r,n){let i=this.lookUpDomId(e);if(me().securityLevel!=="loose"||r===void 0)return;let a=[];if(typeof n=="string"){a=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let l=0;l{let l=document.querySelector(`[id="${i}"]`);l!==null&&l.addEventListener("click",()=>{Gt.runFunc(r,...a)},!1)}))}setLink(e,r,n){e.split(",").forEach(i=>{let a=this.vertices.get(i);a!==void 0&&(a.link=Gt.formatUrl(r,this.config),a.linkTarget=n)}),this.setClass(e,"clickable")}getTooltip(e){return this.tooltips.get(e)}setClickEvent(e,r,n){e.split(",").forEach(i=>{this.setClickFun(i,r,n)}),this.setClass(e,"clickable")}bindFunctions(e){this.funs.forEach(r=>{r(e)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(e){let r=Ge(".mermaidTooltip");(r._groups||r)[0][0]===null&&(r=Ge("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),Ge(e).select("svg").selectAll("g.node").on("mouseover",a=>{let s=Ge(a.currentTarget);if(s.attr("title")===null)return;let u=a.currentTarget?.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.text(s.attr("title")).style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.bottom+"px"),r.html(r.html().replace(/<br\/>/g,"
    ")),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),Ge(a.currentTarget).classed("hover",!1)})}clear(e="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=e,this.config=me(),Ar()}setGen(e){this.version=e||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(e,r,n){let i=e.text.trim(),a=n.text;e===n&&/\s/.exec(n.text)&&(i=void 0);let s=o(f=>{let d={boolean:{},number:{},string:{}},p=[],m;return{nodeList:f.filter(function(y){let v=typeof y;return y.stmt&&y.stmt==="dir"?(m=y.value,!1):y.trim()===""?!1:v in d?d[v].hasOwnProperty(y)?!1:d[v][y]=!0:p.includes(y)?!1:p.push(y)}),dir:m}},"uniq"),{nodeList:l,dir:u}=s(r.flat());if(this.version==="gen-1")for(let f=0;f2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=r,this.subGraphs[r].id===e)return{result:!0,count:0};let i=0,a=1;for(;i=0){let l=this.indexNodes2(e,s);if(l.result)return{result:!0,count:a+l.count};a=a+l.count}i=i+1}return{result:!1,count:a}}getDepthFirstPos(e){return this.posCrossRef[e]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return this.firstGraphFlag?(this.firstGraphFlag=!1,!0):!1}destructStartLink(e){let r=e.trim(),n="arrow_open";switch(r[0]){case"<":n="arrow_point",r=r.slice(1);break;case"x":n="arrow_cross",r=r.slice(1);break;case"o":n="arrow_circle",r=r.slice(1);break}let i="normal";return r.includes("=")&&(i="thick"),r.includes(".")&&(i="dotted"),{type:n,stroke:i}}countChar(e,r){let n=r.length,i=0;for(let a=0;a":i="arrow_point",r.startsWith("<")&&(i="double_"+i,n=n.slice(1));break;case"o":i="arrow_circle",r.startsWith("o")&&(i="double_"+i,n=n.slice(1));break}let a="normal",s=n.length-1;n.startsWith("=")&&(a="thick"),n.startsWith("~")&&(a="invisible");let l=this.countChar(".",n);return l&&(a="dotted",s=l),{type:i,stroke:a,length:s}}destructLink(e,r){let n=this.destructEndLink(e),i;if(r){if(i=this.destructStartLink(r),i.stroke!==n.stroke)return{type:"INVALID",stroke:"INVALID"};if(i.type==="arrow_open")i.type=n.type;else{if(i.type!==n.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return i.type==="double_arrow"&&(i.type="double_arrow_point"),i.length=n.length,i}return n}exists(e,r){for(let n of e)if(n.nodes.includes(r))return!0;return!1}makeUniq(e,r){let n=[];return e.nodes.forEach((i,a)=>{this.exists(r,i)||n.push(e.nodes[a])}),{nodes:n}}getTypeFromVertex(e){if(e.img)return"imageSquare";if(e.icon)return e.form==="circle"?"iconCircle":e.form==="square"?"iconSquare":e.form==="rounded"?"iconRounded":"icon";switch(e.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return e.type}}findNode(e,r){return e.find(n=>n.id===r)}destructEdgeType(e){let r="none",n="arrow_point";switch(e){case"arrow_point":case"arrow_circle":case"arrow_cross":n=e;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":r=e.replace("double_",""),n=r;break}return{arrowTypeStart:r,arrowTypeEnd:n}}addNodeFromVertex(e,r,n,i,a,s){let l=n.get(e.id),u=i.get(e.id)??!1,h=this.findNode(r,e.id);if(h)h.cssStyles=e.styles,h.cssCompiledStyles=this.getCompiledStyles(e.classes),h.cssClasses=e.classes.join(" ");else{let f={id:e.id,label:e.text,labelStyle:"",parentId:l,padding:a.flowchart?.padding||8,cssStyles:e.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...e.classes]),cssClasses:"default "+e.classes.join(" "),dir:e.dir,domId:e.domId,look:s,link:e.link,linkTarget:e.linkTarget,tooltip:this.getTooltip(e.id),icon:e.icon,pos:e.pos,img:e.img,assetWidth:e.assetWidth,assetHeight:e.assetHeight,constraint:e.constraint};u?r.push({...f,isGroup:!0,shape:"rect"}):r.push({...f,isGroup:!1,shape:this.getTypeFromVertex(e)})}}getCompiledStyles(e){let r=[];for(let n of e){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}getData(){let e=me(),r=[],n=[],i=this.getSubGraphs(),a=new Map,s=new Map;for(let h=i.length-1;h>=0;h--){let f=i[h];f.nodes.length>0&&s.set(f.id,!0);for(let d of f.nodes)a.set(d,f.id)}for(let h=i.length-1;h>=0;h--){let f=i[h];r.push({id:f.id,label:f.title,labelStyle:"",parentId:a.get(f.id),padding:8,cssCompiledStyles:this.getCompiledStyles(f.classes),cssClasses:f.classes.join(" "),shape:"rect",dir:f.dir,isGroup:!0,look:e.look})}this.getVertices().forEach(h=>{this.addNodeFromVertex(h,r,a,s,e,e.look||"classic")});let u=this.getEdges();return u.forEach((h,f)=>{let{arrowTypeStart:d,arrowTypeEnd:p}=this.destructEdgeType(h.type),m=[...u.defaultStyle??[]];h.style&&m.push(...h.style);let g={id:$h(h.start,h.end,{counter:f,prefix:"L"},h.id),isUserDefinedId:h.isUserDefinedId,start:h.start,end:h.end,type:h.type??"normal",label:h.text,labelpos:"c",thickness:h.stroke,minlen:h.length,classes:h?.stroke==="invisible"?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":d,arrowTypeEnd:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":p,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(h.classes),labelStyle:m,style:m,pattern:h.stroke,look:e.look,animate:h.animate,animation:h.animation,curve:h.interpolate||this.edges.defaultInterpolate||e.flowchart?.curve};n.push(g)}),{nodes:r,edges:n,other:{},config:e}}defaultConfig(){return A3.flowchart}}});var yc,gm=N(()=>{"use strict";dr();yc=o((t,e)=>{let r;return e==="sandbox"&&(r=Ge("#i"+t)),(e==="sandbox"?Ge(r.nodes()[0].contentDocument.body):Ge("body")).select(`[id="${t}"]`)},"getDiagramElement")});var Ru,w2=N(()=>{"use strict";Ru=o(({flowchart:t})=>{let e=t?.subGraphTitleMargin?.top??0,r=t?.subGraphTitleMargin?.bottom??0,n=e+r;return{subGraphTitleTopMargin:e,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:n}},"getSubGraphTitleMargins")});var YZ,A_e,__e,D_e,L_e,R_e,N_e,XZ,ym,jZ,Hw=N(()=>{"use strict";zt();gr();vt();w2();dr();Wt();to();RD();Gw();qh();Ut();YZ=o(async(t,e)=>{Y.info("Creating subgraph rect for ",e.id,e);let r=me(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:f}=Qe(e),d=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),p=fr(r.flowchart.htmlLabels),m=d.insert("g").attr("class","cluster-label "),g=await Hn(m,e.label,{style:e.labelStyle,useHtmlLabels:p,isNode:!0}),y=g.getBBox();if(fr(r.flowchart.htmlLabels)){let A=g.children[0],S=Ge(g);y=A.getBoundingClientRect(),S.attr("width",y.width),S.attr("height",y.height)}let v=e.width<=y.width+e.padding?y.width+e.padding:e.width;e.width<=y.width+e.padding?e.diff=(v-e.width)/2-e.padding:e.diff=-e.padding;let x=e.height,b=e.x-v/2,w=e.y-x/2;Y.trace("Data ",e,JSON.stringify(e));let C;if(e.look==="handDrawn"){let A=Xe.svg(d),S=Ke(e,{roughness:.7,fill:a,stroke:s,fillWeight:3,seed:i}),_=A.path(Na(b,w,v,x,0),S);C=d.insert(()=>(Y.debug("Rough node insert CXC",_),_),":first-child"),C.select("path:nth-child(2)").attr("style",h.join(";")),C.select("path").attr("style",f.join(";").replace("fill","stroke"))}else C=d.insert("rect",":first-child"),C.attr("style",u).attr("rx",e.rx).attr("ry",e.ry).attr("x",b).attr("y",w).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:T}=Ru(r);if(m.attr("transform",`translate(${e.x-y.width/2}, ${e.y-e.height/2+T})`),l){let A=m.select("span");A&&A.attr("style",l)}let E=C.node().getBBox();return e.offsetX=0,e.width=E.width,e.height=E.height,e.offsetY=y.height-e.padding/2,e.intersect=function(A){return Vh(e,A)},{cluster:d,labelBBox:y}},"rect"),A_e=o((t,e)=>{let r=t.insert("g").attr("class","note-cluster").attr("id",e.id),n=r.insert("rect",":first-child"),i=0*e.padding,a=i/2;n.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+i).attr("height",e.height+i).attr("fill","none");let s=n.node().getBBox();return e.width=s.width,e.height=s.height,e.intersect=function(l){return Vh(e,l)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),__e=o(async(t,e)=>{let r=me(),{themeVariables:n,handDrawnSeed:i}=r,{altBackground:a,compositeBackground:s,compositeTitleBackground:l,nodeBorder:u}=n,h=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-id",e.id).attr("data-look",e.look),f=h.insert("g",":first-child"),d=h.insert("g").attr("class","cluster-label"),p=h.append("rect"),m=d.node().appendChild(await gc(e.label,e.labelStyle,void 0,!0)),g=m.getBBox();if(fr(r.flowchart.htmlLabels)){let _=m.children[0],I=Ge(m);g=_.getBoundingClientRect(),I.attr("width",g.width),I.attr("height",g.height)}let y=0*e.padding,v=y/2,x=(e.width<=g.width+e.padding?g.width+e.padding:e.width)+y;e.width<=g.width+e.padding?e.diff=(x-e.width)/2-e.padding:e.diff=-e.padding;let b=e.height+y,w=e.height+y-g.height-6,C=e.x-x/2,T=e.y-b/2;e.width=x;let E=e.y-e.height/2-v+g.height+2,A;if(e.look==="handDrawn"){let _=e.cssClasses.includes("statediagram-cluster-alt"),I=Xe.svg(h),D=e.rx||e.ry?I.path(Na(C,T,x,b,10),{roughness:.7,fill:l,fillStyle:"solid",stroke:u,seed:i}):I.rectangle(C,T,x,b,{seed:i});A=h.insert(()=>D,":first-child");let k=I.rectangle(C,E,x,w,{fill:_?a:s,fillStyle:_?"hachure":"solid",stroke:u,seed:i});A=h.insert(()=>D,":first-child"),p=h.insert(()=>k)}else A=f.insert("rect",":first-child"),A.attr("class","outer").attr("x",C).attr("y",T).attr("width",x).attr("height",b).attr("data-look",e.look),p.attr("class","inner").attr("x",C).attr("y",E).attr("width",x).attr("height",w);d.attr("transform",`translate(${e.x-g.width/2}, ${T+1-(fr(r.flowchart.htmlLabels)?0:3)})`);let S=A.node().getBBox();return e.height=S.height,e.offsetX=0,e.offsetY=g.height-e.padding/2,e.labelBBox=g,e.intersect=function(_){return Vh(e,_)},{cluster:h,labelBBox:g}},"roundedWithTitle"),D_e=o(async(t,e)=>{Y.info("Creating subgraph rect for ",e.id,e);let r=me(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:f}=Qe(e),d=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),p=fr(r.flowchart.htmlLabels),m=d.insert("g").attr("class","cluster-label "),g=await Hn(m,e.label,{style:e.labelStyle,useHtmlLabels:p,isNode:!0,width:e.width}),y=g.getBBox();if(fr(r.flowchart.htmlLabels)){let A=g.children[0],S=Ge(g);y=A.getBoundingClientRect(),S.attr("width",y.width),S.attr("height",y.height)}let v=e.width<=y.width+e.padding?y.width+e.padding:e.width;e.width<=y.width+e.padding?e.diff=(v-e.width)/2-e.padding:e.diff=-e.padding;let x=e.height,b=e.x-v/2,w=e.y-x/2;Y.trace("Data ",e,JSON.stringify(e));let C;if(e.look==="handDrawn"){let A=Xe.svg(d),S=Ke(e,{roughness:.7,fill:a,stroke:s,fillWeight:4,seed:i}),_=A.path(Na(b,w,v,x,e.rx),S);C=d.insert(()=>(Y.debug("Rough node insert CXC",_),_),":first-child"),C.select("path:nth-child(2)").attr("style",h.join(";")),C.select("path").attr("style",f.join(";").replace("fill","stroke"))}else C=d.insert("rect",":first-child"),C.attr("style",u).attr("rx",e.rx).attr("ry",e.ry).attr("x",b).attr("y",w).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:T}=Ru(r);if(m.attr("transform",`translate(${e.x-y.width/2}, ${e.y-e.height/2+T})`),l){let A=m.select("span");A&&A.attr("style",l)}let E=C.node().getBBox();return e.offsetX=0,e.width=E.width,e.height=E.height,e.offsetY=y.height-e.padding/2,e.intersect=function(A){return Vh(e,A)},{cluster:d,labelBBox:y}},"kanbanSection"),L_e=o((t,e)=>{let r=me(),{themeVariables:n,handDrawnSeed:i}=r,{nodeBorder:a}=n,s=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-look",e.look),l=s.insert("g",":first-child"),u=0*e.padding,h=e.width+u;e.diff=-e.padding;let f=e.height+u,d=e.x-h/2,p=e.y-f/2;e.width=h;let m;if(e.look==="handDrawn"){let v=Xe.svg(s).rectangle(d,p,h,f,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:i});m=s.insert(()=>v,":first-child")}else m=l.insert("rect",":first-child"),m.attr("class","divider").attr("x",d).attr("y",p).attr("width",h).attr("height",f).attr("data-look",e.look);let g=m.node().getBBox();return e.height=g.height,e.offsetX=0,e.offsetY=0,e.intersect=function(y){return Vh(e,y)},{cluster:s,labelBBox:{}}},"divider"),R_e=YZ,N_e={rect:YZ,squareRect:R_e,roundedWithTitle:__e,noteGroup:A_e,divider:L_e,kanbanSection:D_e},XZ=new Map,ym=o(async(t,e)=>{let r=e.shape||"rect",n=await N_e[r](t,e);return XZ.set(e.id,n),n},"insertCluster"),jZ=o(()=>{XZ=new Map},"clear")});function Ww(t,e){if(t===void 0||e===void 0)return{angle:0,deltaX:0,deltaY:0};t=Wn(t),e=Wn(e);let[r,n]=[t.x,t.y],[i,a]=[e.x,e.y],s=i-r,l=a-n;return{angle:Math.atan(l/s),deltaX:s,deltaY:l}}var $o,Wn,qw,JD=N(()=>{"use strict";$o={aggregation:18,extension:18,composition:18,dependency:6,lollipop:13.5,arrow_point:4};o(Ww,"calculateDeltaAndAngle");Wn=o(t=>Array.isArray(t)?{x:t[0],y:t[1]}:t,"pointTransformer"),qw=o(t=>({x:o(function(e,r,n){let i=0,a=Wn(n[0]).x=0?1:-1)}else if(r===n.length-1&&Object.hasOwn($o,t.arrowTypeEnd)){let{angle:m,deltaX:g}=Ww(n[n.length-1],n[n.length-2]);i=$o[t.arrowTypeEnd]*Math.cos(m)*(g>=0?1:-1)}let s=Math.abs(Wn(e).x-Wn(n[n.length-1]).x),l=Math.abs(Wn(e).y-Wn(n[n.length-1]).y),u=Math.abs(Wn(e).x-Wn(n[0]).x),h=Math.abs(Wn(e).y-Wn(n[0]).y),f=$o[t.arrowTypeStart],d=$o[t.arrowTypeEnd],p=1;if(s0&&l0&&h=0?1:-1)}else if(r===n.length-1&&Object.hasOwn($o,t.arrowTypeEnd)){let{angle:m,deltaY:g}=Ww(n[n.length-1],n[n.length-2]);i=$o[t.arrowTypeEnd]*Math.abs(Math.sin(m))*(g>=0?1:-1)}let s=Math.abs(Wn(e).y-Wn(n[n.length-1]).y),l=Math.abs(Wn(e).x-Wn(n[n.length-1]).x),u=Math.abs(Wn(e).y-Wn(n[0]).y),h=Math.abs(Wn(e).x-Wn(n[0]).x),f=$o[t.arrowTypeStart],d=$o[t.arrowTypeEnd],p=1;if(s0&&l0&&h{"use strict";vt();QZ=o((t,e,r,n,i,a)=>{e.arrowTypeStart&&KZ(t,"start",e.arrowTypeStart,r,n,i,a),e.arrowTypeEnd&&KZ(t,"end",e.arrowTypeEnd,r,n,i,a)},"addEdgeMarkers"),M_e={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},KZ=o((t,e,r,n,i,a,s)=>{let l=M_e[r];if(!l){Y.warn(`Unknown arrow type: ${r}`);return}let u=l.type,f=`${i}_${a}-${u}${e==="start"?"Start":"End"}`;if(s&&s.trim()!==""){let d=s.replace(/[^\dA-Za-z]/g,"_"),p=`${f}_${d}`;if(!document.getElementById(p)){let m=document.getElementById(f);if(m){let g=m.cloneNode(!0);g.id=p,g.querySelectorAll("path, circle, line").forEach(v=>{v.setAttribute("stroke",s),l.fill&&v.setAttribute("fill",s)}),m.parentNode?.appendChild(g)}}t.attr(`marker-${e}`,`url(${n}#${p})`)}else t.attr(`marker-${e}`,`url(${n}#${f})`)},"addEdgeMarker")});function Yw(t,e){me().flowchart.htmlLabels&&t&&(t.style.width=e.length*9+"px",t.style.height="12px")}function P_e(t){let e=[],r=[];for(let n=1;n5&&Math.abs(a.y-i.y)>5||i.y===a.y&&a.x===s.x&&Math.abs(a.x-i.x)>5&&Math.abs(a.y-s.y)>5)&&(e.push(a),r.push(n))}return{cornerPoints:e,cornerPointPositions:r}}var Xw,pa,tJ,T2,jw,Kw,I_e,O_e,JZ,eJ,B_e,Qw,eL=N(()=>{"use strict";zt();gr();vt();to();ir();JD();w2();dr();Wt();Gw();ZZ();Ut();Xw=new Map,pa=new Map,tJ=o(()=>{Xw.clear(),pa.clear()},"clear"),T2=o(t=>t?t.reduce((r,n)=>r+";"+n,""):"","getLabelStyles"),jw=o(async(t,e)=>{let r=fr(me().flowchart.htmlLabels),n=await Hn(t,e.label,{style:T2(e.labelStyle),useHtmlLabels:r,addSvgBackground:!0,isNode:!1});Y.info("abc82",e,e.labelType);let i=t.insert("g").attr("class","edgeLabel"),a=i.insert("g").attr("class","label");a.node().appendChild(n);let s=n.getBBox();if(r){let u=n.children[0],h=Ge(n);s=u.getBoundingClientRect(),h.attr("width",s.width),h.attr("height",s.height)}a.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),Xw.set(e.id,i),e.width=s.width,e.height=s.height;let l;if(e.startLabelLeft){let u=await gc(e.startLabelLeft,T2(e.labelStyle)),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),pa.get(e.id)||pa.set(e.id,{}),pa.get(e.id).startLeft=h,Yw(l,e.startLabelLeft)}if(e.startLabelRight){let u=await gc(e.startLabelRight,T2(e.labelStyle)),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=h.node().appendChild(u),f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),pa.get(e.id)||pa.set(e.id,{}),pa.get(e.id).startRight=h,Yw(l,e.startLabelRight)}if(e.endLabelLeft){let u=await gc(e.endLabelLeft,T2(e.labelStyle)),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),h.node().appendChild(u),pa.get(e.id)||pa.set(e.id,{}),pa.get(e.id).endLeft=h,Yw(l,e.endLabelLeft)}if(e.endLabelRight){let u=await gc(e.endLabelRight,T2(e.labelStyle)),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),h.node().appendChild(u),pa.get(e.id)||pa.set(e.id,{}),pa.get(e.id).endRight=h,Yw(l,e.endLabelRight)}return n},"insertEdgeLabel");o(Yw,"setTerminalWidth");Kw=o((t,e)=>{Y.debug("Moving label abc88 ",t.id,t.label,Xw.get(t.id),e);let r=e.updatedPath?e.updatedPath:e.originalPath,n=me(),{subGraphTitleTotalMargin:i}=Ru(n);if(t.label){let a=Xw.get(t.id),s=t.x,l=t.y;if(r){let u=Gt.calcLabelPosition(r);Y.debug("Moving label "+t.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),e.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(t.startLabelLeft){let a=pa.get(t.id).startLeft,s=t.x,l=t.y;if(r){let u=Gt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.startLabelRight){let a=pa.get(t.id).startRight,s=t.x,l=t.y;if(r){let u=Gt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelLeft){let a=pa.get(t.id).endLeft,s=t.x,l=t.y;if(r){let u=Gt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelRight){let a=pa.get(t.id).endRight,s=t.x,l=t.y;if(r){let u=Gt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),I_e=o((t,e)=>{let r=t.x,n=t.y,i=Math.abs(e.x-r),a=Math.abs(e.y-n),s=t.width/2,l=t.height/2;return i>=s||a>=l},"outsideNode"),O_e=o((t,e,r)=>{Y.debug(`intersection calc abc89: + outsidePoint: ${JSON.stringify(e)} + insidePoint : ${JSON.stringify(r)} + node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);let n=t.x,i=t.y,a=Math.abs(n-r.x),s=t.width/2,l=r.xMath.abs(n-e.x)*u){let d=r.y{Y.warn("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(a=>{if(Y.info("abc88 checking point",a,e),!I_e(e,a)&&!i){let s=O_e(e,n,a);Y.debug("abc88 inside",a,n,s),Y.debug("abc88 intersection",s,e);let l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)?Y.warn("abc88 no intersect",s,r):r.push(s),i=!0}else Y.warn("abc88 outside",a,n),n=a,i||r.push(a)}),Y.debug("returning points",r),r},"cutPathAtIntersect");o(P_e,"extractCornerPoints");eJ=o(function(t,e,r){let n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),s=r/a;return{x:e.x-s*n,y:e.y-s*i}},"findAdjacentPoint"),B_e=o(function(t){let{cornerPointPositions:e}=P_e(t),r=[];for(let n=0;n10&&Math.abs(a.y-i.y)>=10){Y.debug("Corner point fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));let m=5;s.x===l.x?p={x:h<0?l.x-m+d:l.x+m-d,y:f<0?l.y-d:l.y+d}:p={x:h<0?l.x-d:l.x+d,y:f<0?l.y-m+d:l.y+m-d}}else Y.debug("Corner point skipping fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));r.push(p,u)}else r.push(t[n]);return r},"fixCorners"),Qw=o(function(t,e,r,n,i,a,s){let{handDrawnSeed:l}=me(),u=e.points,h=!1,f=i;var d=a;let p=[];for(let _ in e.cssCompiledStyles)ND(_)||p.push(e.cssCompiledStyles[_]);d.intersect&&f.intersect&&(u=u.slice(1,e.points.length-1),u.unshift(f.intersect(u[0])),Y.debug("Last point APA12",e.start,"-->",e.end,u[u.length-1],d,d.intersect(u[u.length-1])),u.push(d.intersect(u[u.length-1]))),e.toCluster&&(Y.info("to cluster abc88",r.get(e.toCluster)),u=JZ(e.points,r.get(e.toCluster).node),h=!0),e.fromCluster&&(Y.debug("from cluster abc88",r.get(e.fromCluster),JSON.stringify(u,null,2)),u=JZ(u.reverse(),r.get(e.fromCluster).node).reverse(),h=!0);let m=u.filter(_=>!Number.isNaN(_.y));m=B_e(m);let g=Do;switch(g=wu,e.curve){case"linear":g=wu;break;case"basis":g=Do;break;case"cardinal":g=Pv;break;case"bumpX":g=Rv;break;case"bumpY":g=Nv;break;case"catmullRom":g=$v;break;case"monotoneX":g=zv;break;case"monotoneY":g=Gv;break;case"natural":g=F0;break;case"step":g=$0;break;case"stepAfter":g=Uv;break;case"stepBefore":g=Vv;break;default:g=Do}let{x:y,y:v}=qw(e),x=wl().x(y).y(v).curve(g),b;switch(e.thickness){case"normal":b="edge-thickness-normal";break;case"thick":b="edge-thickness-thick";break;case"invisible":b="edge-thickness-invisible";break;default:b="edge-thickness-normal"}switch(e.pattern){case"solid":b+=" edge-pattern-solid";break;case"dotted":b+=" edge-pattern-dotted";break;case"dashed":b+=" edge-pattern-dashed";break;default:b+=" edge-pattern-solid"}let w,C=x(m),T=Array.isArray(e.style)?e.style:[e.style],E=T.find(_=>_?.startsWith("stroke:"));if(e.look==="handDrawn"){let _=Xe.svg(t);Object.assign([],m);let I=_.path(C,{roughness:.3,seed:l});b+=" transition",w=Ge(I).select("path").attr("id",e.id).attr("class"," "+b+(e.classes?" "+e.classes:"")).attr("style",T?T.reduce((k,L)=>k+";"+L,""):"");let D=w.attr("d");w.attr("d",D),t.node().appendChild(w.node())}else{let _=p.join(";"),I=T?T.reduce((L,R)=>L+R+";",""):"",D="";e.animate&&(D=" edge-animation-fast"),e.animation&&(D=" edge-animation-"+e.animation);let k=_?_+";"+I+";":I;w=t.append("path").attr("d",C).attr("id",e.id).attr("class"," "+b+(e.classes?" "+e.classes:"")+(D??"")).attr("style",k),E=k.match(/stroke:([^;]+)/)?.[1]}let A="";(me().flowchart.arrowMarkerAbsolute||me().state.arrowMarkerAbsolute)&&(A=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,A=A.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),Y.info("arrowTypeStart",e.arrowTypeStart),Y.info("arrowTypeEnd",e.arrowTypeEnd),QZ(w,e,A,s,n,E);let S={};return h&&(S.updatedPath=u),S.originalPath=e.points,S},"insertEdge")});var F_e,$_e,z_e,G_e,V_e,U_e,H_e,W_e,q_e,Y_e,X_e,j_e,K_e,Q_e,Z_e,J_e,e9e,Zw,tL=N(()=>{"use strict";vt();F_e=o((t,e,r,n)=>{e.forEach(i=>{e9e[i](t,r,n)})},"insertMarkers"),$_e=o((t,e,r)=>{Y.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),z_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).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",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).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")},"composition"),G_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).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",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).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")},"aggregation"),V_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).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"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).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")},"dependency"),U_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),H_e=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),W_e=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),q_e=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),Y_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),X_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneStart").attr("class","marker onlyOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneEnd").attr("class","marker onlyOne "+e).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),j_e=o((t,e,r)=>{let n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneStart").attr("class","marker zeroOrOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("d","M9,0 L9,18");let i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+e).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),i.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),K_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreStart").attr("class","marker oneOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").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",r+"_"+e+"-oneOrMoreEnd").attr("class","marker oneOrMore "+e).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),Q_e=o((t,e,r)=>{let n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");let i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+e).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),i.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),Z_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d",`M0,0 + L20,10 + M20,10 + L0,20`)},"requirement_arrow"),J_e=o((t,e,r)=>{let n=t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");n.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),n.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),n.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),e9e={extension:$_e,composition:z_e,aggregation:G_e,dependency:V_e,lollipop:U_e,point:H_e,circle:W_e,cross:q_e,barb:Y_e,only_one:X_e,zero_or_one:j_e,one_or_more:K_e,zero_or_more:Q_e,requirement_arrow:Z_e,requirement_contains:J_e},Zw=F_e});async function vm(t,e,r){let n,i;e.shape==="rect"&&(e.rx&&e.ry?e.shape="roundedRect":e.shape="squareRect");let a=e.shape?QD[e.shape]:void 0;if(!a)throw new Error(`No such shape: ${e.shape}. Please check your syntax.`);if(e.link){let s;r.config.securityLevel==="sandbox"?s="_top":e.linkTarget&&(s=e.linkTarget||"_blank"),n=t.insert("svg:a").attr("xlink:href",e.link).attr("target",s??null),i=await a(n,e,r)}else i=await a(t,e,r),n=i;return e.tooltip&&i.attr("title",e.tooltip),Jw.set(e.id,n),e.haveCallback&&n.attr("class",n.attr("class")+" clickable"),n}var Jw,rJ,nJ,k2,eT=N(()=>{"use strict";vt();ZD();Jw=new Map;o(vm,"insertNode");rJ=o((t,e)=>{Jw.set(e.id,t)},"setNodeElem"),nJ=o(()=>{Jw.clear()},"clear"),k2=o(t=>{let e=Jw.get(t.id);Y.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");let r=8,n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-r)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},"positionNode")});var iJ,aJ=N(()=>{"use strict";ji();gr();vt();Hw();eL();tL();eT();Ft();ir();iJ={common:Ze,getConfig:cr,insertCluster:ym,insertEdge:Qw,insertEdgeLabel:jw,insertMarkers:Zw,insertNode:vm,interpolateToCurve:W9,labelHelper:pt,log:Y,positionEdgeLabel:Kw}});function r9e(t){return typeof t=="symbol"||ri(t)&&da(t)==t9e}var t9e,no,Pd=N(()=>{"use strict";ku();No();t9e="[object Symbol]";o(r9e,"isSymbol");no=r9e});function n9e(t,e){for(var r=-1,n=t==null?0:t.length,i=Array(n);++r{"use strict";o(n9e,"arrayMap");Ns=n9e});function lJ(t){if(typeof t=="string")return t;if(Pt(t))return Ns(t,lJ)+"";if(no(t))return oJ?oJ.call(t):"";var e=t+"";return e=="0"&&1/t==-i9e?"-0":e}var i9e,sJ,oJ,cJ,uJ=N(()=>{"use strict";Ed();Bd();Un();Pd();i9e=1/0,sJ=ea?ea.prototype:void 0,oJ=sJ?sJ.toString:void 0;o(lJ,"baseToString");cJ=lJ});function s9e(t){for(var e=t.length;e--&&a9e.test(t.charAt(e)););return e}var a9e,hJ,fJ=N(()=>{"use strict";a9e=/\s/;o(s9e,"trimmedEndIndex");hJ=s9e});function l9e(t){return t&&t.slice(0,hJ(t)+1).replace(o9e,"")}var o9e,dJ,pJ=N(()=>{"use strict";fJ();o9e=/^\s+/;o(l9e,"baseTrim");dJ=l9e});function d9e(t){if(typeof t=="number")return t;if(no(t))return mJ;if(bn(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=bn(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=dJ(t);var r=u9e.test(t);return r||h9e.test(t)?f9e(t.slice(2),r?2:8):c9e.test(t)?mJ:+t}var mJ,c9e,u9e,h9e,f9e,gJ,yJ=N(()=>{"use strict";pJ();Js();Pd();mJ=NaN,c9e=/^[-+]0x[0-9a-f]+$/i,u9e=/^0b[01]+$/i,h9e=/^0o[0-7]+$/i,f9e=parseInt;o(d9e,"toNumber");gJ=d9e});function m9e(t){if(!t)return t===0?t:0;if(t=gJ(t),t===vJ||t===-vJ){var e=t<0?-1:1;return e*p9e}return t===t?t:0}var vJ,p9e,xm,rL=N(()=>{"use strict";yJ();vJ=1/0,p9e=17976931348623157e292;o(m9e,"toFinite");xm=m9e});function g9e(t){var e=xm(t),r=e%1;return e===e?r?e-r:e:0}var vc,bm=N(()=>{"use strict";rL();o(g9e,"toInteger");vc=g9e});var y9e,tT,xJ=N(()=>{"use strict";Lh();Lo();y9e=Ss(li,"WeakMap"),tT=y9e});function v9e(){}var ni,nL=N(()=>{"use strict";o(v9e,"noop");ni=v9e});function x9e(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(x9e,"arrayEach");rT=x9e});function b9e(t,e,r,n){for(var i=t.length,a=r+(n?1:-1);n?a--:++a{"use strict";o(b9e,"baseFindIndex");nT=b9e});function w9e(t){return t!==t}var bJ,wJ=N(()=>{"use strict";o(w9e,"baseIsNaN");bJ=w9e});function T9e(t,e,r){for(var n=r-1,i=t.length;++n{"use strict";o(T9e,"strictIndexOf");TJ=T9e});function k9e(t,e,r){return e===e?TJ(t,e,r):nT(t,bJ,r)}var wm,iT=N(()=>{"use strict";aL();wJ();kJ();o(k9e,"baseIndexOf");wm=k9e});function E9e(t,e){var r=t==null?0:t.length;return!!r&&wm(t,e,0)>-1}var aT,sL=N(()=>{"use strict";iT();o(E9e,"arrayIncludes");aT=E9e});var S9e,EJ,SJ=N(()=>{"use strict";N9();S9e=nw(Object.keys,Object),EJ=S9e});function _9e(t){if(!uc(t))return EJ(t);var e=[];for(var r in Object(t))A9e.call(t,r)&&r!="constructor"&&e.push(r);return e}var C9e,A9e,Tm,sT=N(()=>{"use strict";Z0();SJ();C9e=Object.prototype,A9e=C9e.hasOwnProperty;o(_9e,"baseKeys");Tm=_9e});function D9e(t){return ci(t)?lw(t):Tm(t)}var zr,xc=N(()=>{"use strict";B9();sT();Mo();o(D9e,"keys");zr=D9e});var L9e,R9e,N9e,ma,CJ=N(()=>{"use strict";rm();Dd();G9();Mo();Z0();xc();L9e=Object.prototype,R9e=L9e.hasOwnProperty,N9e=hw(function(t,e){if(uc(e)||ci(e)){Po(e,zr(e),t);return}for(var r in e)R9e.call(e,r)&&hc(t,r,e[r])}),ma=N9e});function O9e(t,e){if(Pt(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||no(t)?!0:I9e.test(t)||!M9e.test(t)||e!=null&&t in Object(e)}var M9e,I9e,km,oT=N(()=>{"use strict";Un();Pd();M9e=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,I9e=/^\w*$/;o(O9e,"isKey");km=O9e});function B9e(t){var e=H0(t,function(n){return r.size===P9e&&r.clear(),n}),r=e.cache;return e}var P9e,AJ,_J=N(()=>{"use strict";S9();P9e=500;o(B9e,"memoizeCapped");AJ=B9e});var F9e,$9e,z9e,DJ,LJ=N(()=>{"use strict";_J();F9e=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,$9e=/\\(\\)?/g,z9e=AJ(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(F9e,function(r,n,i,a){e.push(i?a.replace($9e,"$1"):n||r)}),e}),DJ=z9e});function G9e(t){return t==null?"":cJ(t)}var lT,oL=N(()=>{"use strict";uJ();o(G9e,"toString");lT=G9e});function V9e(t,e){return Pt(t)?t:km(t,e)?[t]:DJ(lT(t))}var Yh,E2=N(()=>{"use strict";Un();oT();LJ();oL();o(V9e,"castPath");Yh=V9e});function H9e(t){if(typeof t=="string"||no(t))return t;var e=t+"";return e=="0"&&1/t==-U9e?"-0":e}var U9e,bc,Em=N(()=>{"use strict";Pd();U9e=1/0;o(H9e,"toKey");bc=H9e});function W9e(t,e){e=Yh(e,t);for(var r=0,n=e.length;t!=null&&r{"use strict";E2();Em();o(W9e,"baseGet");Xh=W9e});function q9e(t,e,r){var n=t==null?void 0:Xh(t,e);return n===void 0?r:n}var RJ,NJ=N(()=>{"use strict";S2();o(q9e,"get");RJ=q9e});function Y9e(t,e){for(var r=-1,n=e.length,i=t.length;++r{"use strict";o(Y9e,"arrayPush");Sm=Y9e});function X9e(t){return Pt(t)||El(t)||!!(MJ&&t&&t[MJ])}var MJ,IJ,OJ=N(()=>{"use strict";Ed();J0();Un();MJ=ea?ea.isConcatSpreadable:void 0;o(X9e,"isFlattenable");IJ=X9e});function PJ(t,e,r,n,i){var a=-1,s=t.length;for(r||(r=IJ),i||(i=[]);++a0&&r(l)?e>1?PJ(l,e-1,r,n,i):Sm(i,l):n||(i[i.length]=l)}return i}var wc,Cm=N(()=>{"use strict";cT();OJ();o(PJ,"baseFlatten");wc=PJ});function j9e(t){var e=t==null?0:t.length;return e?wc(t,1):[]}var qr,uT=N(()=>{"use strict";Cm();o(j9e,"flatten");qr=j9e});function K9e(t){return uw(cw(t,void 0,qr),t+"")}var BJ,FJ=N(()=>{"use strict";uT();F9();z9();o(K9e,"flatRest");BJ=K9e});function Q9e(t,e,r){var n=-1,i=t.length;e<0&&(e=-e>i?0:i+e),r=r>i?i:r,r<0&&(r+=i),i=e>r?0:r-e>>>0,e>>>=0;for(var a=Array(i);++n{"use strict";o(Q9e,"baseSlice");hT=Q9e});function sDe(t){return aDe.test(t)}var Z9e,J9e,eDe,tDe,rDe,nDe,iDe,aDe,$J,zJ=N(()=>{"use strict";Z9e="\\ud800-\\udfff",J9e="\\u0300-\\u036f",eDe="\\ufe20-\\ufe2f",tDe="\\u20d0-\\u20ff",rDe=J9e+eDe+tDe,nDe="\\ufe0e\\ufe0f",iDe="\\u200d",aDe=RegExp("["+iDe+Z9e+rDe+nDe+"]");o(sDe,"hasUnicode");$J=sDe});function oDe(t,e,r,n){var i=-1,a=t==null?0:t.length;for(n&&a&&(r=t[++i]);++i{"use strict";o(oDe,"arrayReduce");GJ=oDe});function lDe(t,e){return t&&Po(e,zr(e),t)}var UJ,HJ=N(()=>{"use strict";Dd();xc();o(lDe,"baseAssign");UJ=lDe});function cDe(t,e){return t&&Po(e,Cs(e),t)}var WJ,qJ=N(()=>{"use strict";Dd();Bh();o(cDe,"baseAssignIn");WJ=cDe});function uDe(t,e){for(var r=-1,n=t==null?0:t.length,i=0,a=[];++r{"use strict";o(uDe,"arrayFilter");Am=uDe});function hDe(){return[]}var dT,cL=N(()=>{"use strict";o(hDe,"stubArray");dT=hDe});var fDe,dDe,YJ,pDe,_m,pT=N(()=>{"use strict";fT();cL();fDe=Object.prototype,dDe=fDe.propertyIsEnumerable,YJ=Object.getOwnPropertySymbols,pDe=YJ?function(t){return t==null?[]:(t=Object(t),Am(YJ(t),function(e){return dDe.call(t,e)}))}:dT,_m=pDe});function mDe(t,e){return Po(t,_m(t),e)}var XJ,jJ=N(()=>{"use strict";Dd();pT();o(mDe,"copySymbols");XJ=mDe});var gDe,yDe,mT,uL=N(()=>{"use strict";cT();iw();pT();cL();gDe=Object.getOwnPropertySymbols,yDe=gDe?function(t){for(var e=[];t;)Sm(e,_m(t)),t=Q0(t);return e}:dT,mT=yDe});function vDe(t,e){return Po(t,mT(t),e)}var KJ,QJ=N(()=>{"use strict";Dd();uL();o(vDe,"copySymbolsIn");KJ=vDe});function xDe(t,e,r){var n=e(t);return Pt(t)?n:Sm(n,r(t))}var gT,hL=N(()=>{"use strict";cT();Un();o(xDe,"baseGetAllKeys");gT=xDe});function bDe(t){return gT(t,zr,_m)}var C2,fL=N(()=>{"use strict";hL();pT();xc();o(bDe,"getAllKeys");C2=bDe});function wDe(t){return gT(t,Cs,mT)}var yT,dL=N(()=>{"use strict";hL();uL();Bh();o(wDe,"getAllKeysIn");yT=wDe});var TDe,vT,ZJ=N(()=>{"use strict";Lh();Lo();TDe=Ss(li,"DataView"),vT=TDe});var kDe,xT,JJ=N(()=>{"use strict";Lh();Lo();kDe=Ss(li,"Promise"),xT=kDe});var EDe,jh,pL=N(()=>{"use strict";Lh();Lo();EDe=Ss(li,"Set"),jh=EDe});var eee,SDe,tee,ree,nee,iee,CDe,ADe,_De,DDe,LDe,Fd,io,$d=N(()=>{"use strict";ZJ();K5();JJ();pL();xJ();ku();T9();eee="[object Map]",SDe="[object Object]",tee="[object Promise]",ree="[object Set]",nee="[object WeakMap]",iee="[object DataView]",CDe=Eu(vT),ADe=Eu(Mh),_De=Eu(xT),DDe=Eu(jh),LDe=Eu(tT),Fd=da;(vT&&Fd(new vT(new ArrayBuffer(1)))!=iee||Mh&&Fd(new Mh)!=eee||xT&&Fd(xT.resolve())!=tee||jh&&Fd(new jh)!=ree||tT&&Fd(new tT)!=nee)&&(Fd=o(function(t){var e=da(t),r=e==SDe?t.constructor:void 0,n=r?Eu(r):"";if(n)switch(n){case CDe:return iee;case ADe:return eee;case _De:return tee;case DDe:return ree;case LDe:return nee}return e},"getTag"));io=Fd});function MDe(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&NDe.call(t,"index")&&(r.index=t.index,r.input=t.input),r}var RDe,NDe,aee,see=N(()=>{"use strict";RDe=Object.prototype,NDe=RDe.hasOwnProperty;o(MDe,"initCloneArray");aee=MDe});function IDe(t,e){var r=e?K0(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}var oee,lee=N(()=>{"use strict";ew();o(IDe,"cloneDataView");oee=IDe});function PDe(t){var e=new t.constructor(t.source,ODe.exec(t));return e.lastIndex=t.lastIndex,e}var ODe,cee,uee=N(()=>{"use strict";ODe=/\w*$/;o(PDe,"cloneRegExp");cee=PDe});function BDe(t){return fee?Object(fee.call(t)):{}}var hee,fee,dee,pee=N(()=>{"use strict";Ed();hee=ea?ea.prototype:void 0,fee=hee?hee.valueOf:void 0;o(BDe,"cloneSymbol");dee=BDe});function nLe(t,e,r){var n=t.constructor;switch(e){case qDe:return K0(t);case FDe:case $De:return new n(+t);case YDe:return oee(t,r);case XDe:case jDe:case KDe:case QDe:case ZDe:case JDe:case eLe:case tLe:case rLe:return tw(t,r);case zDe:return new n;case GDe:case HDe:return new n(t);case VDe:return cee(t);case UDe:return new n;case WDe:return dee(t)}}var FDe,$De,zDe,GDe,VDe,UDe,HDe,WDe,qDe,YDe,XDe,jDe,KDe,QDe,ZDe,JDe,eLe,tLe,rLe,mee,gee=N(()=>{"use strict";ew();lee();uee();pee();L9();FDe="[object Boolean]",$De="[object Date]",zDe="[object Map]",GDe="[object Number]",VDe="[object RegExp]",UDe="[object Set]",HDe="[object String]",WDe="[object Symbol]",qDe="[object ArrayBuffer]",YDe="[object DataView]",XDe="[object Float32Array]",jDe="[object Float64Array]",KDe="[object Int8Array]",QDe="[object Int16Array]",ZDe="[object Int32Array]",JDe="[object Uint8Array]",eLe="[object Uint8ClampedArray]",tLe="[object Uint16Array]",rLe="[object Uint32Array]";o(nLe,"initCloneByTag");mee=nLe});function aLe(t){return ri(t)&&io(t)==iLe}var iLe,yee,vee=N(()=>{"use strict";$d();No();iLe="[object Map]";o(aLe,"baseIsMap");yee=aLe});var xee,sLe,bee,wee=N(()=>{"use strict";vee();_d();t2();xee=Oo&&Oo.isMap,sLe=xee?Io(xee):yee,bee=sLe});function lLe(t){return ri(t)&&io(t)==oLe}var oLe,Tee,kee=N(()=>{"use strict";$d();No();oLe="[object Set]";o(lLe,"baseIsSet");Tee=lLe});var Eee,cLe,See,Cee=N(()=>{"use strict";kee();_d();t2();Eee=Oo&&Oo.isSet,cLe=Eee?Io(Eee):Tee,See=cLe});function bT(t,e,r,n,i,a){var s,l=e&uLe,u=e&hLe,h=e&fLe;if(r&&(s=i?r(t,n,i,a):r(t)),s!==void 0)return s;if(!bn(t))return t;var f=Pt(t);if(f){if(s=aee(t),!l)return rw(t,s)}else{var d=io(t),p=d==_ee||d==yLe;if(Sl(t))return J5(t,l);if(d==Dee||d==Aee||p&&!i){if(s=u||p?{}:aw(t),!l)return u?KJ(t,WJ(s,t)):XJ(t,UJ(s,t))}else{if(!_n[d])return i?t:{};s=mee(t,d,l)}}a||(a=new lc);var m=a.get(t);if(m)return m;a.set(t,s),See(t)?t.forEach(function(v){s.add(bT(v,e,r,v,t,a))}):bee(t)&&t.forEach(function(v,x){s.set(x,bT(v,e,r,x,t,a))});var g=h?u?yT:C2:u?Cs:zr,y=f?void 0:g(t);return rT(y||t,function(v,x){y&&(x=v,v=t[x]),hc(s,x,bT(v,e,r,x,t,a))}),s}var uLe,hLe,fLe,Aee,dLe,pLe,mLe,gLe,_ee,yLe,vLe,xLe,Dee,bLe,wLe,TLe,kLe,ELe,SLe,CLe,ALe,_Le,DLe,LLe,RLe,NLe,MLe,ILe,OLe,_n,wT,mL=N(()=>{"use strict";Zv();iL();rm();HJ();qJ();_9();R9();jJ();QJ();fL();dL();$d();see();gee();M9();Un();tm();wee();Js();Cee();xc();Bh();uLe=1,hLe=2,fLe=4,Aee="[object Arguments]",dLe="[object Array]",pLe="[object Boolean]",mLe="[object Date]",gLe="[object Error]",_ee="[object Function]",yLe="[object GeneratorFunction]",vLe="[object Map]",xLe="[object Number]",Dee="[object Object]",bLe="[object RegExp]",wLe="[object Set]",TLe="[object String]",kLe="[object Symbol]",ELe="[object WeakMap]",SLe="[object ArrayBuffer]",CLe="[object DataView]",ALe="[object Float32Array]",_Le="[object Float64Array]",DLe="[object Int8Array]",LLe="[object Int16Array]",RLe="[object Int32Array]",NLe="[object Uint8Array]",MLe="[object Uint8ClampedArray]",ILe="[object Uint16Array]",OLe="[object Uint32Array]",_n={};_n[Aee]=_n[dLe]=_n[SLe]=_n[CLe]=_n[pLe]=_n[mLe]=_n[ALe]=_n[_Le]=_n[DLe]=_n[LLe]=_n[RLe]=_n[vLe]=_n[xLe]=_n[Dee]=_n[bLe]=_n[wLe]=_n[TLe]=_n[kLe]=_n[NLe]=_n[MLe]=_n[ILe]=_n[OLe]=!0;_n[gLe]=_n[_ee]=_n[ELe]=!1;o(bT,"baseClone");wT=bT});function BLe(t){return wT(t,PLe)}var PLe,an,gL=N(()=>{"use strict";mL();PLe=4;o(BLe,"clone");an=BLe});function zLe(t){return wT(t,FLe|$Le)}var FLe,$Le,yL,Lee=N(()=>{"use strict";mL();FLe=1,$Le=4;o(zLe,"cloneDeep");yL=zLe});function GLe(t){for(var e=-1,r=t==null?0:t.length,n=0,i=[];++e{"use strict";o(GLe,"compact");Tc=GLe});function ULe(t){return this.__data__.set(t,VLe),this}var VLe,Nee,Mee=N(()=>{"use strict";VLe="__lodash_hash_undefined__";o(ULe,"setCacheAdd");Nee=ULe});function HLe(t){return this.__data__.has(t)}var Iee,Oee=N(()=>{"use strict";o(HLe,"setCacheHas");Iee=HLe});function TT(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new Cd;++e{"use strict";Q5();Mee();Oee();o(TT,"SetCache");TT.prototype.add=TT.prototype.push=Nee;TT.prototype.has=Iee;Dm=TT});function WLe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(WLe,"arraySome");ET=WLe});function qLe(t,e){return t.has(e)}var Lm,ST=N(()=>{"use strict";o(qLe,"cacheHas");Lm=qLe});function jLe(t,e,r,n,i,a){var s=r&YLe,l=t.length,u=e.length;if(l!=u&&!(s&&u>l))return!1;var h=a.get(t),f=a.get(e);if(h&&f)return h==e&&f==t;var d=-1,p=!0,m=r&XLe?new Dm:void 0;for(a.set(t,e),a.set(e,t);++d{"use strict";kT();vL();ST();YLe=1,XLe=2;o(jLe,"equalArrays");CT=jLe});function KLe(t){var e=-1,r=Array(t.size);return t.forEach(function(n,i){r[++e]=[i,n]}),r}var Pee,Bee=N(()=>{"use strict";o(KLe,"mapToArray");Pee=KLe});function QLe(t){var e=-1,r=Array(t.size);return t.forEach(function(n){r[++e]=n}),r}var Rm,AT=N(()=>{"use strict";o(QLe,"setToArray");Rm=QLe});function hRe(t,e,r,n,i,a,s){switch(r){case uRe:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case cRe:return!(t.byteLength!=e.byteLength||!a(new j0(t),new j0(e)));case eRe:case tRe:case iRe:return Ro(+t,+e);case rRe:return t.name==e.name&&t.message==e.message;case aRe:case oRe:return t==e+"";case nRe:var l=Pee;case sRe:var u=n&ZLe;if(l||(l=Rm),t.size!=e.size&&!u)return!1;var h=s.get(t);if(h)return h==e;n|=JLe,s.set(t,e);var f=CT(l(t),l(e),n,i,a,s);return s.delete(t),f;case lRe:if(bL)return bL.call(t)==bL.call(e)}return!1}var ZLe,JLe,eRe,tRe,rRe,nRe,iRe,aRe,sRe,oRe,lRe,cRe,uRe,Fee,bL,$ee,zee=N(()=>{"use strict";Ed();D9();Sd();xL();Bee();AT();ZLe=1,JLe=2,eRe="[object Boolean]",tRe="[object Date]",rRe="[object Error]",nRe="[object Map]",iRe="[object Number]",aRe="[object RegExp]",sRe="[object Set]",oRe="[object String]",lRe="[object Symbol]",cRe="[object ArrayBuffer]",uRe="[object DataView]",Fee=ea?ea.prototype:void 0,bL=Fee?Fee.valueOf:void 0;o(hRe,"equalByTag");$ee=hRe});function mRe(t,e,r,n,i,a){var s=r&fRe,l=C2(t),u=l.length,h=C2(e),f=h.length;if(u!=f&&!s)return!1;for(var d=u;d--;){var p=l[d];if(!(s?p in e:pRe.call(e,p)))return!1}var m=a.get(t),g=a.get(e);if(m&&g)return m==e&&g==t;var y=!0;a.set(t,e),a.set(e,t);for(var v=s;++d{"use strict";fL();fRe=1,dRe=Object.prototype,pRe=dRe.hasOwnProperty;o(mRe,"equalObjects");Gee=mRe});function vRe(t,e,r,n,i,a){var s=Pt(t),l=Pt(e),u=s?Hee:io(t),h=l?Hee:io(e);u=u==Uee?_T:u,h=h==Uee?_T:h;var f=u==_T,d=h==_T,p=u==h;if(p&&Sl(t)){if(!Sl(e))return!1;s=!0,f=!1}if(p&&!f)return a||(a=new lc),s||Oh(t)?CT(t,e,r,n,i,a):$ee(t,e,u,r,n,i,a);if(!(r&gRe)){var m=f&&Wee.call(t,"__wrapped__"),g=d&&Wee.call(e,"__wrapped__");if(m||g){var y=m?t.value():t,v=g?e.value():e;return a||(a=new lc),i(y,v,r,n,a)}}return p?(a||(a=new lc),Gee(t,e,r,n,i,a)):!1}var gRe,Uee,Hee,_T,yRe,Wee,qee,Yee=N(()=>{"use strict";Zv();xL();zee();Vee();$d();Un();tm();r2();gRe=1,Uee="[object Arguments]",Hee="[object Array]",_T="[object Object]",yRe=Object.prototype,Wee=yRe.hasOwnProperty;o(vRe,"baseIsEqualDeep");qee=vRe});function Xee(t,e,r,n,i){return t===e?!0:t==null||e==null||!ri(t)&&!ri(e)?t!==t&&e!==e:qee(t,e,r,n,Xee,i)}var DT,wL=N(()=>{"use strict";Yee();No();o(Xee,"baseIsEqual");DT=Xee});function wRe(t,e,r,n){var i=r.length,a=i,s=!n;if(t==null)return!a;for(t=Object(t);i--;){var l=r[i];if(s&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++i{"use strict";Zv();wL();xRe=1,bRe=2;o(wRe,"baseIsMatch");jee=wRe});function TRe(t){return t===t&&!bn(t)}var LT,TL=N(()=>{"use strict";Js();o(TRe,"isStrictComparable");LT=TRe});function kRe(t){for(var e=zr(t),r=e.length;r--;){var n=e[r],i=t[n];e[r]=[n,i,LT(i)]}return e}var Qee,Zee=N(()=>{"use strict";TL();xc();o(kRe,"getMatchData");Qee=kRe});function ERe(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}var RT,kL=N(()=>{"use strict";o(ERe,"matchesStrictComparable");RT=ERe});function SRe(t){var e=Qee(t);return e.length==1&&e[0][2]?RT(e[0][0],e[0][1]):function(r){return r===t||jee(r,t,e)}}var Jee,ete=N(()=>{"use strict";Kee();Zee();kL();o(SRe,"baseMatches");Jee=SRe});function CRe(t,e){return t!=null&&e in Object(t)}var tte,rte=N(()=>{"use strict";o(CRe,"baseHasIn");tte=CRe});function ARe(t,e,r){e=Yh(e,t);for(var n=-1,i=e.length,a=!1;++n{"use strict";E2();J0();Un();i2();sw();Em();o(ARe,"hasPath");NT=ARe});function _Re(t,e){return t!=null&&NT(t,e,tte)}var MT,SL=N(()=>{"use strict";rte();EL();o(_Re,"hasIn");MT=_Re});function RRe(t,e){return km(t)&<(e)?RT(bc(t),e):function(r){var n=RJ(r,t);return n===void 0&&n===e?MT(r,t):DT(e,n,DRe|LRe)}}var DRe,LRe,nte,ite=N(()=>{"use strict";wL();NJ();SL();oT();TL();kL();Em();DRe=1,LRe=2;o(RRe,"baseMatchesProperty");nte=RRe});function NRe(t){return function(e){return e?.[t]}}var IT,CL=N(()=>{"use strict";o(NRe,"baseProperty");IT=NRe});function MRe(t){return function(e){return Xh(e,t)}}var ate,ste=N(()=>{"use strict";S2();o(MRe,"basePropertyDeep");ate=MRe});function IRe(t){return km(t)?IT(bc(t)):ate(t)}var ote,lte=N(()=>{"use strict";CL();ste();oT();Em();o(IRe,"property");ote=IRe});function ORe(t){return typeof t=="function"?t:t==null?ta:typeof t=="object"?Pt(t)?nte(t[0],t[1]):Jee(t):ote(t)}var pn,rs=N(()=>{"use strict";ete();ite();Cu();Un();lte();o(ORe,"baseIteratee");pn=ORe});function PRe(t,e,r,n){for(var i=-1,a=t==null?0:t.length;++i{"use strict";o(PRe,"arrayAggregator");cte=PRe});function BRe(t,e){return t&&X0(t,e,zr)}var Nm,OT=N(()=>{"use strict";Z5();xc();o(BRe,"baseForOwn");Nm=BRe});function FRe(t,e){return function(r,n){if(r==null)return r;if(!ci(r))return t(r,n);for(var i=r.length,a=e?i:-1,s=Object(r);(e?a--:++a{"use strict";Mo();o(FRe,"createBaseEach");hte=FRe});var $Re,Ms,Kh=N(()=>{"use strict";OT();fte();$Re=hte(Nm),Ms=$Re});function zRe(t,e,r,n){return Ms(t,function(i,a,s){e(n,i,r(i),s)}),n}var dte,pte=N(()=>{"use strict";Kh();o(zRe,"baseAggregator");dte=zRe});function GRe(t,e){return function(r,n){var i=Pt(r)?cte:dte,a=e?e():{};return i(r,t,pn(n,2),a)}}var mte,gte=N(()=>{"use strict";ute();pte();rs();Un();o(GRe,"createAggregator");mte=GRe});var VRe,PT,yte=N(()=>{"use strict";Lo();VRe=o(function(){return li.Date.now()},"now"),PT=VRe});var vte,URe,HRe,Qh,xte=N(()=>{"use strict";nm();Sd();Ld();Bh();vte=Object.prototype,URe=vte.hasOwnProperty,HRe=fc(function(t,e){t=Object(t);var r=-1,n=e.length,i=n>2?e[2]:void 0;for(i&&eo(e[0],e[1],i)&&(n=1);++r{"use strict";o(WRe,"arrayIncludesWith");BT=WRe});function YRe(t,e,r,n){var i=-1,a=aT,s=!0,l=t.length,u=[],h=e.length;if(!l)return u;r&&(e=Ns(e,Io(r))),n?(a=BT,s=!1):e.length>=qRe&&(a=Lm,s=!1,e=new Dm(e));e:for(;++i{"use strict";kT();sL();AL();Bd();_d();ST();qRe=200;o(YRe,"baseDifference");bte=YRe});var XRe,Zh,Tte=N(()=>{"use strict";wte();Cm();nm();ow();XRe=fc(function(t,e){return Ad(t)?bte(t,wc(e,1,Ad,!0)):[]}),Zh=XRe});function jRe(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}var ga,kte=N(()=>{"use strict";o(jRe,"last");ga=jRe});function KRe(t,e,r){var n=t==null?0:t.length;return n?(e=r||e===void 0?1:vc(e),hT(t,e<0?0:e,n)):[]}var gi,Ete=N(()=>{"use strict";lL();bm();o(KRe,"drop");gi=KRe});function QRe(t,e,r){var n=t==null?0:t.length;return n?(e=r||e===void 0?1:vc(e),e=n-e,hT(t,0,e<0?0:e)):[]}var Nu,Ste=N(()=>{"use strict";lL();bm();o(QRe,"dropRight");Nu=QRe});function ZRe(t){return typeof t=="function"?t:ta}var Mm,FT=N(()=>{"use strict";Cu();o(ZRe,"castFunction");Mm=ZRe});function JRe(t,e){var r=Pt(t)?rT:Ms;return r(t,Mm(e))}var Ae,$T=N(()=>{"use strict";iL();Kh();FT();Un();o(JRe,"forEach");Ae=JRe});var Cte=N(()=>{"use strict";$T()});function eNe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(eNe,"arrayEvery");Ate=eNe});function tNe(t,e){var r=!0;return Ms(t,function(n,i,a){return r=!!e(n,i,a),r}),r}var Dte,Lte=N(()=>{"use strict";Kh();o(tNe,"baseEvery");Dte=tNe});function rNe(t,e,r){var n=Pt(t)?Ate:Dte;return r&&eo(t,e,r)&&(e=void 0),n(t,pn(e,3))}var Ma,Rte=N(()=>{"use strict";_te();Lte();rs();Un();Ld();o(rNe,"every");Ma=rNe});function nNe(t,e){var r=[];return Ms(t,function(n,i,a){e(n,i,a)&&r.push(n)}),r}var zT,_L=N(()=>{"use strict";Kh();o(nNe,"baseFilter");zT=nNe});function iNe(t,e){var r=Pt(t)?Am:zT;return r(t,pn(e,3))}var Yr,DL=N(()=>{"use strict";fT();_L();rs();Un();o(iNe,"filter");Yr=iNe});function aNe(t){return function(e,r,n){var i=Object(e);if(!ci(e)){var a=pn(r,3);e=zr(e),r=o(function(l){return a(i[l],l,i)},"predicate")}var s=t(e,r,n);return s>-1?i[a?e[s]:s]:void 0}}var Nte,Mte=N(()=>{"use strict";rs();Mo();xc();o(aNe,"createFind");Nte=aNe});function oNe(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:vc(r);return i<0&&(i=sNe(n+i,0)),nT(t,pn(e,3),i)}var sNe,Ite,Ote=N(()=>{"use strict";aL();rs();bm();sNe=Math.max;o(oNe,"findIndex");Ite=oNe});var lNe,ns,Pte=N(()=>{"use strict";Mte();Ote();lNe=Nte(Ite),ns=lNe});function cNe(t){return t&&t.length?t[0]:void 0}var ia,Bte=N(()=>{"use strict";o(cNe,"head");ia=cNe});var Fte=N(()=>{"use strict";Bte()});function uNe(t,e){var r=-1,n=ci(t)?Array(t.length):[];return Ms(t,function(i,a,s){n[++r]=e(i,a,s)}),n}var GT,LL=N(()=>{"use strict";Kh();Mo();o(uNe,"baseMap");GT=uNe});function hNe(t,e){var r=Pt(t)?Ns:GT;return r(t,pn(e,3))}var Je,Im=N(()=>{"use strict";Bd();rs();LL();Un();o(hNe,"map");Je=hNe});function fNe(t,e){return wc(Je(t,e),1)}var ya,RL=N(()=>{"use strict";Cm();Im();o(fNe,"flatMap");ya=fNe});function dNe(t,e){return t==null?t:X0(t,Mm(e),Cs)}var NL,$te=N(()=>{"use strict";Z5();FT();Bh();o(dNe,"forIn");NL=dNe});function pNe(t,e){return t&&Nm(t,Mm(e))}var ML,zte=N(()=>{"use strict";OT();FT();o(pNe,"forOwn");ML=pNe});var mNe,gNe,yNe,IL,Gte=N(()=>{"use strict";Y0();gte();mNe=Object.prototype,gNe=mNe.hasOwnProperty,yNe=mte(function(t,e,r){gNe.call(t,r)?t[r].push(e):cc(t,r,[e])}),IL=yNe});function vNe(t,e){return t>e}var Vte,Ute=N(()=>{"use strict";o(vNe,"baseGt");Vte=vNe});function wNe(t,e){return t!=null&&bNe.call(t,e)}var xNe,bNe,Hte,Wte=N(()=>{"use strict";xNe=Object.prototype,bNe=xNe.hasOwnProperty;o(wNe,"baseHas");Hte=wNe});function TNe(t,e){return t!=null&&NT(t,e,Hte)}var Bt,qte=N(()=>{"use strict";Wte();EL();o(TNe,"has");Bt=TNe});function ENe(t){return typeof t=="string"||!Pt(t)&&ri(t)&&da(t)==kNe}var kNe,yi,VT=N(()=>{"use strict";ku();Un();No();kNe="[object String]";o(ENe,"isString");yi=ENe});function SNe(t,e){return Ns(e,function(r){return t[r]})}var Yte,Xte=N(()=>{"use strict";Bd();o(SNe,"baseValues");Yte=SNe});function CNe(t){return t==null?[]:Yte(t,zr(t))}var br,OL=N(()=>{"use strict";Xte();xc();o(CNe,"values");br=CNe});function _Ne(t,e,r,n){t=ci(t)?t:br(t),r=r&&!n?vc(r):0;var i=t.length;return r<0&&(r=ANe(i+r,0)),yi(t)?r<=i&&t.indexOf(e,r)>-1:!!i&&wm(t,e,r)>-1}var ANe,qn,jte=N(()=>{"use strict";iT();Mo();VT();bm();OL();ANe=Math.max;o(_Ne,"includes");qn=_Ne});function LNe(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:vc(r);return i<0&&(i=DNe(n+i,0)),wm(t,e,i)}var DNe,UT,Kte=N(()=>{"use strict";iT();bm();DNe=Math.max;o(LNe,"indexOf");UT=LNe});function ONe(t){if(t==null)return!0;if(ci(t)&&(Pt(t)||typeof t=="string"||typeof t.splice=="function"||Sl(t)||Oh(t)||El(t)))return!t.length;var e=io(t);if(e==RNe||e==NNe)return!t.size;if(uc(t))return!Tm(t).length;for(var r in t)if(INe.call(t,r))return!1;return!0}var RNe,NNe,MNe,INe,ur,HT=N(()=>{"use strict";sT();$d();J0();Un();Mo();tm();Z0();r2();RNe="[object Map]",NNe="[object Set]",MNe=Object.prototype,INe=MNe.hasOwnProperty;o(ONe,"isEmpty");ur=ONe});function BNe(t){return ri(t)&&da(t)==PNe}var PNe,Qte,Zte=N(()=>{"use strict";ku();No();PNe="[object RegExp]";o(BNe,"baseIsRegExp");Qte=BNe});var Jte,FNe,zo,ere=N(()=>{"use strict";Zte();_d();t2();Jte=Oo&&Oo.isRegExp,FNe=Jte?Io(Jte):Qte,zo=FNe});function $Ne(t){return t===void 0}var pr,tre=N(()=>{"use strict";o($Ne,"isUndefined");pr=$Ne});function zNe(t,e){return t{"use strict";o(zNe,"baseLt");WT=zNe});function GNe(t,e){var r={};return e=pn(e,3),Nm(t,function(n,i,a){cc(r,i,e(n,i,a))}),r}var zd,rre=N(()=>{"use strict";Y0();OT();rs();o(GNe,"mapValues");zd=GNe});function VNe(t,e,r){for(var n=-1,i=t.length;++n{"use strict";Pd();o(VNe,"baseExtremum");Om=VNe});function UNe(t){return t&&t.length?Om(t,ta,Vte):void 0}var Is,nre=N(()=>{"use strict";qT();Ute();Cu();o(UNe,"max");Is=UNe});function HNe(t){return t&&t.length?Om(t,ta,WT):void 0}var Dl,BL=N(()=>{"use strict";qT();PL();Cu();o(HNe,"min");Dl=HNe});function WNe(t,e){return t&&t.length?Om(t,pn(e,2),WT):void 0}var Gd,ire=N(()=>{"use strict";qT();rs();PL();o(WNe,"minBy");Gd=WNe});function YNe(t){if(typeof t!="function")throw new TypeError(qNe);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}var qNe,are,sre=N(()=>{"use strict";qNe="Expected a function";o(YNe,"negate");are=YNe});function XNe(t,e,r,n){if(!bn(t))return t;e=Yh(e,t);for(var i=-1,a=e.length,s=a-1,l=t;l!=null&&++i{"use strict";rm();E2();i2();Js();Em();o(XNe,"baseSet");ore=XNe});function jNe(t,e,r){for(var n=-1,i=e.length,a={};++n{"use strict";S2();lre();E2();o(jNe,"basePickBy");YT=jNe});function KNe(t,e){if(t==null)return{};var r=Ns(yT(t),function(n){return[n]});return e=pn(e),YT(t,r,function(n,i){return e(n,i[0])})}var Os,cre=N(()=>{"use strict";Bd();rs();FL();dL();o(KNe,"pickBy");Os=KNe});function QNe(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}var ure,hre=N(()=>{"use strict";o(QNe,"baseSortBy");ure=QNe});function ZNe(t,e){if(t!==e){var r=t!==void 0,n=t===null,i=t===t,a=no(t),s=e!==void 0,l=e===null,u=e===e,h=no(e);if(!l&&!h&&!a&&t>e||a&&s&&u&&!l&&!h||n&&s&&u||!r&&u||!i)return 1;if(!n&&!a&&!h&&t{"use strict";Pd();o(ZNe,"compareAscending");fre=ZNe});function JNe(t,e,r){for(var n=-1,i=t.criteria,a=e.criteria,s=i.length,l=r.length;++n=l)return u;var h=r[n];return u*(h=="desc"?-1:1)}}return t.index-e.index}var pre,mre=N(()=>{"use strict";dre();o(JNe,"compareMultiple");pre=JNe});function eMe(t,e,r){e.length?e=Ns(e,function(a){return Pt(a)?function(s){return Xh(s,a.length===1?a[0]:a)}:a}):e=[ta];var n=-1;e=Ns(e,Io(pn));var i=GT(t,function(a,s,l){var u=Ns(e,function(h){return h(a)});return{criteria:u,index:++n,value:a}});return ure(i,function(a,s){return pre(a,s,r)})}var gre,yre=N(()=>{"use strict";Bd();S2();rs();LL();hre();_d();mre();Cu();Un();o(eMe,"baseOrderBy");gre=eMe});var tMe,vre,xre=N(()=>{"use strict";CL();tMe=IT("length"),vre=tMe});function dMe(t){for(var e=bre.lastIndex=0;bre.test(t);)++e;return e}var wre,rMe,nMe,iMe,aMe,sMe,oMe,$L,zL,lMe,Tre,kre,Ere,cMe,Sre,Cre,uMe,hMe,fMe,bre,Are,_re=N(()=>{"use strict";wre="\\ud800-\\udfff",rMe="\\u0300-\\u036f",nMe="\\ufe20-\\ufe2f",iMe="\\u20d0-\\u20ff",aMe=rMe+nMe+iMe,sMe="\\ufe0e\\ufe0f",oMe="["+wre+"]",$L="["+aMe+"]",zL="\\ud83c[\\udffb-\\udfff]",lMe="(?:"+$L+"|"+zL+")",Tre="[^"+wre+"]",kre="(?:\\ud83c[\\udde6-\\uddff]){2}",Ere="[\\ud800-\\udbff][\\udc00-\\udfff]",cMe="\\u200d",Sre=lMe+"?",Cre="["+sMe+"]?",uMe="(?:"+cMe+"(?:"+[Tre,kre,Ere].join("|")+")"+Cre+Sre+")*",hMe=Cre+Sre+uMe,fMe="(?:"+[Tre+$L+"?",$L,kre,Ere,oMe].join("|")+")",bre=RegExp(zL+"(?="+zL+")|"+fMe+hMe,"g");o(dMe,"unicodeSize");Are=dMe});function pMe(t){return $J(t)?Are(t):vre(t)}var Dre,Lre=N(()=>{"use strict";xre();zJ();_re();o(pMe,"stringSize");Dre=pMe});function mMe(t,e){return YT(t,e,function(r,n){return MT(t,n)})}var Rre,Nre=N(()=>{"use strict";FL();SL();o(mMe,"basePick");Rre=mMe});var gMe,Vd,Mre=N(()=>{"use strict";Nre();FJ();gMe=BJ(function(t,e){return t==null?{}:Rre(t,e)}),Vd=gMe});function xMe(t,e,r,n){for(var i=-1,a=vMe(yMe((e-t)/(r||1)),0),s=Array(a);a--;)s[n?a:++i]=t,t+=r;return s}var yMe,vMe,Ire,Ore=N(()=>{"use strict";yMe=Math.ceil,vMe=Math.max;o(xMe,"baseRange");Ire=xMe});function bMe(t){return function(e,r,n){return n&&typeof n!="number"&&eo(e,r,n)&&(r=n=void 0),e=xm(e),r===void 0?(r=e,e=0):r=xm(r),n=n===void 0?e{"use strict";Ore();Ld();rL();o(bMe,"createRange");Pre=bMe});var wMe,Go,Fre=N(()=>{"use strict";Bre();wMe=Pre(),Go=wMe});function TMe(t,e,r,n,i){return i(t,function(a,s,l){r=n?(n=!1,a):e(r,a,s,l)}),r}var $re,zre=N(()=>{"use strict";o(TMe,"baseReduce");$re=TMe});function kMe(t,e,r){var n=Pt(t)?GJ:$re,i=arguments.length<3;return n(t,pn(e,4),r,i,Ms)}var Xr,GL=N(()=>{"use strict";VJ();Kh();rs();zre();Un();o(kMe,"reduce");Xr=kMe});function EMe(t,e){var r=Pt(t)?Am:zT;return r(t,are(pn(e,3)))}var Jh,Gre=N(()=>{"use strict";fT();_L();rs();Un();sre();o(EMe,"reject");Jh=EMe});function AMe(t){if(t==null)return 0;if(ci(t))return yi(t)?Dre(t):t.length;var e=io(t);return e==SMe||e==CMe?t.size:Tm(t).length}var SMe,CMe,VL,Vre=N(()=>{"use strict";sT();$d();Mo();VT();Lre();SMe="[object Map]",CMe="[object Set]";o(AMe,"size");VL=AMe});function _Me(t,e){var r;return Ms(t,function(n,i,a){return r=e(n,i,a),!r}),!!r}var Ure,Hre=N(()=>{"use strict";Kh();o(_Me,"baseSome");Ure=_Me});function DMe(t,e,r){var n=Pt(t)?ET:Ure;return r&&eo(t,e,r)&&(e=void 0),n(t,pn(e,3))}var A2,Wre=N(()=>{"use strict";vL();rs();Hre();Un();Ld();o(DMe,"some");A2=DMe});var LMe,kc,qre=N(()=>{"use strict";Cm();yre();nm();Ld();LMe=fc(function(t,e){if(t==null)return[];var r=e.length;return r>1&&eo(t,e[0],e[1])?e=[]:r>2&&eo(e[0],e[1],e[2])&&(e=[e[0]]),gre(t,wc(e,1),[])}),kc=LMe});var RMe,NMe,Yre,Xre=N(()=>{"use strict";pL();nL();AT();RMe=1/0,NMe=jh&&1/Rm(new jh([,-0]))[1]==RMe?function(t){return new jh(t)}:ni,Yre=NMe});function IMe(t,e,r){var n=-1,i=aT,a=t.length,s=!0,l=[],u=l;if(r)s=!1,i=BT;else if(a>=MMe){var h=e?null:Yre(t);if(h)return Rm(h);s=!1,i=Lm,u=new Dm}else u=e?[]:l;e:for(;++n{"use strict";kT();sL();AL();ST();Xre();AT();MMe=200;o(IMe,"baseUniq");Pm=IMe});var OMe,UL,jre=N(()=>{"use strict";Cm();nm();XT();ow();OMe=fc(function(t){return Pm(wc(t,1,Ad,!0))}),UL=OMe});function PMe(t){return t&&t.length?Pm(t):[]}var Bm,Kre=N(()=>{"use strict";XT();o(PMe,"uniq");Bm=PMe});function BMe(t,e){return t&&t.length?Pm(t,pn(e,2)):[]}var Qre,Zre=N(()=>{"use strict";rs();XT();o(BMe,"uniqBy");Qre=BMe});function $Me(t){var e=++FMe;return lT(t)+e}var FMe,Ud,Jre=N(()=>{"use strict";oL();FMe=0;o($Me,"uniqueId");Ud=$Me});function zMe(t,e,r){for(var n=-1,i=t.length,a=e.length,s={};++n{"use strict";o(zMe,"baseZipObject");ene=zMe});function GMe(t,e){return ene(t||[],e||[],hc)}var jT,rne=N(()=>{"use strict";rm();tne();o(GMe,"zipObject");jT=GMe});var qt=N(()=>{"use strict";CJ();gL();Lee();Ree();$9();xte();Tte();Ete();Ste();Cte();Rte();DL();Pte();Fte();RL();uT();$T();$te();zte();Gte();qte();Cu();jte();Kte();Un();HT();Yv();Js();ere();VT();tre();xc();kte();Im();rre();nre();V9();BL();ire();nL();yte();Mre();cre();Fre();GL();Gre();Vre();Wre();qre();jre();Kre();Jre();OL();rne();});function ine(t,e){t[e]?t[e]++:t[e]=1}function ane(t,e){--t[e]||delete t[e]}function _2(t,e,r,n){var i=""+e,a=""+r;if(!t&&i>a){var s=i;i=a,a=s}return i+nne+a+nne+(pr(n)?VMe:n)}function UMe(t,e,r,n){var i=""+e,a=""+r;if(!t&&i>a){var s=i;i=a,a=s}var l={v:i,w:a};return n&&(l.name=n),l}function HL(t,e){return _2(t,e.v,e.w,e.name)}var VMe,Hd,nne,sn,KT=N(()=>{"use strict";qt();VMe="\0",Hd="\0",nne="",sn=class{static{o(this,"Graph")}constructor(e={}){this._isDirected=Object.prototype.hasOwnProperty.call(e,"directed")?e.directed:!0,this._isMultigraph=Object.prototype.hasOwnProperty.call(e,"multigraph")?e.multigraph:!1,this._isCompound=Object.prototype.hasOwnProperty.call(e,"compound")?e.compound:!1,this._label=void 0,this._defaultNodeLabelFn=As(void 0),this._defaultEdgeLabelFn=As(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[Hd]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return Si(e)||(e=As(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return zr(this._nodes)}sources(){var e=this;return Yr(this.nodes(),function(r){return ur(e._in[r])})}sinks(){var e=this;return Yr(this.nodes(),function(r){return ur(e._out[r])})}setNodes(e,r){var n=arguments,i=this;return Ae(e,function(a){n.length>1?i.setNode(a,r):i.setNode(a)}),this}setNode(e,r){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=r),this):(this._nodes[e]=arguments.length>1?r:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=Hd,this._children[e]={},this._children[Hd][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var r=o(n=>this.removeEdge(this._edgeObjs[n]),"removeEdge");delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],Ae(this.children(e),n=>{this.setParent(n)}),delete this._children[e]),Ae(zr(this._in[e]),r),delete this._in[e],delete this._preds[e],Ae(zr(this._out[e]),r),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,r){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(pr(r))r=Hd;else{r+="";for(var n=r;!pr(n);n=this.parent(n))if(n===e)throw new Error("Setting "+r+" as parent of "+e+" would create a cycle");this.setNode(r)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=r,this._children[r][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var r=this._parent[e];if(r!==Hd)return r}}children(e){if(pr(e)&&(e=Hd),this._isCompound){var r=this._children[e];if(r)return zr(r)}else{if(e===Hd)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var r=this._preds[e];if(r)return zr(r)}successors(e){var r=this._sucs[e];if(r)return zr(r)}neighbors(e){var r=this.predecessors(e);if(r)return UL(r,this.successors(e))}isLeaf(e){var r;return this.isDirected()?r=this.successors(e):r=this.neighbors(e),r.length===0}filterNodes(e){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var n=this;Ae(this._nodes,function(s,l){e(l)&&r.setNode(l,s)}),Ae(this._edgeObjs,function(s){r.hasNode(s.v)&&r.hasNode(s.w)&&r.setEdge(s,n.edge(s))});var i={};function a(s){var l=n.parent(s);return l===void 0||r.hasNode(l)?(i[s]=l,l):l in i?i[l]:a(l)}return o(a,"findParent"),this._isCompound&&Ae(r.nodes(),function(s){r.setParent(s,a(s))}),r}setDefaultEdgeLabel(e){return Si(e)||(e=As(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return br(this._edgeObjs)}setPath(e,r){var n=this,i=arguments;return Xr(e,function(a,s){return i.length>1?n.setEdge(a,s,r):n.setEdge(a,s),s}),this}setEdge(){var e,r,n,i,a=!1,s=arguments[0];typeof s=="object"&&s!==null&&"v"in s?(e=s.v,r=s.w,n=s.name,arguments.length===2&&(i=arguments[1],a=!0)):(e=s,r=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),e=""+e,r=""+r,pr(n)||(n=""+n);var l=_2(this._isDirected,e,r,n);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,l))return a&&(this._edgeLabels[l]=i),this;if(!pr(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(r),this._edgeLabels[l]=a?i:this._defaultEdgeLabelFn(e,r,n);var u=UMe(this._isDirected,e,r,n);return e=u.v,r=u.w,Object.freeze(u),this._edgeObjs[l]=u,ine(this._preds[r],e),ine(this._sucs[e],r),this._in[r][l]=u,this._out[e][l]=u,this._edgeCount++,this}edge(e,r,n){var i=arguments.length===1?HL(this._isDirected,arguments[0]):_2(this._isDirected,e,r,n);return this._edgeLabels[i]}hasEdge(e,r,n){var i=arguments.length===1?HL(this._isDirected,arguments[0]):_2(this._isDirected,e,r,n);return Object.prototype.hasOwnProperty.call(this._edgeLabels,i)}removeEdge(e,r,n){var i=arguments.length===1?HL(this._isDirected,arguments[0]):_2(this._isDirected,e,r,n),a=this._edgeObjs[i];return a&&(e=a.v,r=a.w,delete this._edgeLabels[i],delete this._edgeObjs[i],ane(this._preds[r],e),ane(this._sucs[e],r),delete this._in[r][i],delete this._out[e][i],this._edgeCount--),this}inEdges(e,r){var n=this._in[e];if(n){var i=br(n);return r?Yr(i,function(a){return a.v===r}):i}}outEdges(e,r){var n=this._out[e];if(n){var i=br(n);return r?Yr(i,function(a){return a.w===r}):i}}nodeEdges(e,r){var n=this.inEdges(e,r);if(n)return n.concat(this.outEdges(e,r))}};sn.prototype._nodeCount=0;sn.prototype._edgeCount=0;o(ine,"incrementOrInitEntry");o(ane,"decrementOrRemoveEntry");o(_2,"edgeArgsToId");o(UMe,"edgeArgsToObj");o(HL,"edgeObjToId")});var Vo=N(()=>{"use strict";KT()});function sne(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function HMe(t,e){if(t!=="_next"&&t!=="_prev")return e}var ZT,one=N(()=>{"use strict";ZT=class{static{o(this,"List")}constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,r=e._prev;if(r!==e)return sne(r),r}enqueue(e){var r=this._sentinel;e._prev&&e._next&&sne(e),e._next=r._next,r._next._prev=e,r._next=e,e._prev=r}toString(){for(var e=[],r=this._sentinel,n=r._prev;n!==r;)e.push(JSON.stringify(n,HMe)),n=n._prev;return"["+e.join(", ")+"]"}};o(sne,"unlink");o(HMe,"filterOutLinks")});function lne(t,e){if(t.nodeCount()<=1)return[];var r=YMe(t,e||WMe),n=qMe(r.graph,r.buckets,r.zeroIdx);return qr(Je(n,function(i){return t.outEdges(i.v,i.w)}))}function qMe(t,e,r){for(var n=[],i=e[e.length-1],a=e[0],s;t.nodeCount();){for(;s=a.dequeue();)WL(t,e,r,s);for(;s=i.dequeue();)WL(t,e,r,s);if(t.nodeCount()){for(var l=e.length-2;l>0;--l)if(s=e[l].dequeue(),s){n=n.concat(WL(t,e,r,s,!0));break}}}return n}function WL(t,e,r,n,i){var a=i?[]:void 0;return Ae(t.inEdges(n.v),function(s){var l=t.edge(s),u=t.node(s.v);i&&a.push({v:s.v,w:s.w}),u.out-=l,qL(e,r,u)}),Ae(t.outEdges(n.v),function(s){var l=t.edge(s),u=s.w,h=t.node(u);h.in-=l,qL(e,r,h)}),t.removeNode(n.v),a}function YMe(t,e){var r=new sn,n=0,i=0;Ae(t.nodes(),function(l){r.setNode(l,{v:l,in:0,out:0})}),Ae(t.edges(),function(l){var u=r.edge(l.v,l.w)||0,h=e(l),f=u+h;r.setEdge(l.v,l.w,f),i=Math.max(i,r.node(l.v).out+=h),n=Math.max(n,r.node(l.w).in+=h)});var a=Go(i+n+3).map(function(){return new ZT}),s=n+1;return Ae(r.nodes(),function(l){qL(a,s,r.node(l))}),{graph:r,buckets:a,zeroIdx:s}}function qL(t,e,r){r.out?r.in?t[r.out-r.in+e].enqueue(r):t[t.length-1].enqueue(r):t[0].enqueue(r)}var WMe,cne=N(()=>{"use strict";qt();Vo();one();WMe=As(1);o(lne,"greedyFAS");o(qMe,"doGreedyFAS");o(WL,"removeNode");o(YMe,"buildState");o(qL,"assignBucket")});function une(t){var e=t.graph().acyclicer==="greedy"?lne(t,r(t)):XMe(t);Ae(e,function(n){var i=t.edge(n);t.removeEdge(n),i.forwardName=n.name,i.reversed=!0,t.setEdge(n.w,n.v,i,Ud("rev"))});function r(n){return function(i){return n.edge(i).weight}}o(r,"weightFn")}function XMe(t){var e=[],r={},n={};function i(a){Object.prototype.hasOwnProperty.call(n,a)||(n[a]=!0,r[a]=!0,Ae(t.outEdges(a),function(s){Object.prototype.hasOwnProperty.call(r,s.w)?e.push(s):i(s.w)}),delete r[a])}return o(i,"dfs"),Ae(t.nodes(),i),e}function hne(t){Ae(t.edges(),function(e){var r=t.edge(e);if(r.reversed){t.removeEdge(e);var n=r.forwardName;delete r.reversed,delete r.forwardName,t.setEdge(e.w,e.v,r,n)}})}var YL=N(()=>{"use strict";qt();cne();o(une,"run");o(XMe,"dfsFAS");o(hne,"undo")});function Ec(t,e,r,n){var i;do i=Ud(n);while(t.hasNode(i));return r.dummy=e,t.setNode(i,r),i}function dne(t){var e=new sn().setGraph(t.graph());return Ae(t.nodes(),function(r){e.setNode(r,t.node(r))}),Ae(t.edges(),function(r){var n=e.edge(r.v,r.w)||{weight:0,minlen:1},i=t.edge(r);e.setEdge(r.v,r.w,{weight:n.weight+i.weight,minlen:Math.max(n.minlen,i.minlen)})}),e}function JT(t){var e=new sn({multigraph:t.isMultigraph()}).setGraph(t.graph());return Ae(t.nodes(),function(r){t.children(r).length||e.setNode(r,t.node(r))}),Ae(t.edges(),function(r){e.setEdge(r,t.edge(r))}),e}function XL(t,e){var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2;if(!i&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=l*i/a,h=l):(i<0&&(s=-s),u=s,h=s*a/i),{x:r+u,y:n+h}}function ef(t){var e=Je(Go(KL(t)+1),function(){return[]});return Ae(t.nodes(),function(r){var n=t.node(r),i=n.rank;pr(i)||(e[i][n.order]=r)}),e}function pne(t){var e=Dl(Je(t.nodes(),function(r){return t.node(r).rank}));Ae(t.nodes(),function(r){var n=t.node(r);Bt(n,"rank")&&(n.rank-=e)})}function mne(t){var e=Dl(Je(t.nodes(),function(a){return t.node(a).rank})),r=[];Ae(t.nodes(),function(a){var s=t.node(a).rank-e;r[s]||(r[s]=[]),r[s].push(a)});var n=0,i=t.graph().nodeRankFactor;Ae(r,function(a,s){pr(a)&&s%i!==0?--n:n&&Ae(a,function(l){t.node(l).rank+=n})})}function jL(t,e,r,n){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=n),Ec(t,"border",i,e)}function KL(t){return Is(Je(t.nodes(),function(e){var r=t.node(e).rank;if(!pr(r))return r}))}function gne(t,e){var r={lhs:[],rhs:[]};return Ae(t,function(n){e(n)?r.lhs.push(n):r.rhs.push(n)}),r}function yne(t,e){var r=PT();try{return e()}finally{console.log(t+" time: "+(PT()-r)+"ms")}}function vne(t,e){return e()}var Sc=N(()=>{"use strict";qt();Vo();o(Ec,"addDummyNode");o(dne,"simplify");o(JT,"asNonCompoundGraph");o(XL,"intersectRect");o(ef,"buildLayerMatrix");o(pne,"normalizeRanks");o(mne,"removeEmptyRanks");o(jL,"addBorderNode");o(KL,"maxRank");o(gne,"partition");o(yne,"time");o(vne,"notime")});function bne(t){function e(r){var n=t.children(r),i=t.node(r);if(n.length&&Ae(n,e),Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,s=i.maxRank+1;a{"use strict";qt();Sc();o(bne,"addBorderSegments");o(xne,"addBorderNode")});function kne(t){var e=t.graph().rankdir.toLowerCase();(e==="lr"||e==="rl")&&Sne(t)}function Ene(t){var e=t.graph().rankdir.toLowerCase();(e==="bt"||e==="rl")&&jMe(t),(e==="lr"||e==="rl")&&(KMe(t),Sne(t))}function Sne(t){Ae(t.nodes(),function(e){Tne(t.node(e))}),Ae(t.edges(),function(e){Tne(t.edge(e))})}function Tne(t){var e=t.width;t.width=t.height,t.height=e}function jMe(t){Ae(t.nodes(),function(e){QL(t.node(e))}),Ae(t.edges(),function(e){var r=t.edge(e);Ae(r.points,QL),Object.prototype.hasOwnProperty.call(r,"y")&&QL(r)})}function QL(t){t.y=-t.y}function KMe(t){Ae(t.nodes(),function(e){ZL(t.node(e))}),Ae(t.edges(),function(e){var r=t.edge(e);Ae(r.points,ZL),Object.prototype.hasOwnProperty.call(r,"x")&&ZL(r)})}function ZL(t){var e=t.x;t.x=t.y,t.y=e}var Cne=N(()=>{"use strict";qt();o(kne,"adjust");o(Ene,"undo");o(Sne,"swapWidthHeight");o(Tne,"swapWidthHeightOne");o(jMe,"reverseY");o(QL,"reverseYOne");o(KMe,"swapXY");o(ZL,"swapXYOne")});function Ane(t){t.graph().dummyChains=[],Ae(t.edges(),function(e){ZMe(t,e)})}function ZMe(t,e){var r=e.v,n=t.node(r).rank,i=e.w,a=t.node(i).rank,s=e.name,l=t.edge(e),u=l.labelRank;if(a!==n+1){t.removeEdge(e);var h=void 0,f,d;for(d=0,++n;n{"use strict";qt();Sc();o(Ane,"run");o(ZMe,"normalizeEdge");o(_ne,"undo")});function D2(t){var e={};function r(n){var i=t.node(n);if(Object.prototype.hasOwnProperty.call(e,n))return i.rank;e[n]=!0;var a=Dl(Je(t.outEdges(n),function(s){return r(s.w)-t.edge(s).minlen}));return(a===Number.POSITIVE_INFINITY||a===void 0||a===null)&&(a=0),i.rank=a}o(r,"dfs"),Ae(t.sources(),r)}function Wd(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}var ek=N(()=>{"use strict";qt();o(D2,"longestPath");o(Wd,"slack")});function tk(t){var e=new sn({directed:!1}),r=t.nodes()[0],n=t.nodeCount();e.setNode(r,{});for(var i,a;JMe(e,t){"use strict";qt();Vo();ek();o(tk,"feasibleTree");o(JMe,"tightTree");o(eIe,"findMinSlackEdge");o(tIe,"shiftRanks")});var Lne=N(()=>{"use strict"});var tR=N(()=>{"use strict"});var cWt,rR=N(()=>{"use strict";qt();tR();cWt=As(1)});var Rne=N(()=>{"use strict";rR()});var nR=N(()=>{"use strict"});var Nne=N(()=>{"use strict";nR()});var bWt,Mne=N(()=>{"use strict";qt();bWt=As(1)});function iR(t){var e={},r={},n=[];function i(a){if(Object.prototype.hasOwnProperty.call(r,a))throw new L2;Object.prototype.hasOwnProperty.call(e,a)||(r[a]=!0,e[a]=!0,Ae(t.predecessors(a),i),delete r[a],n.push(a))}if(o(i,"visit"),Ae(t.sinks(),i),VL(e)!==t.nodeCount())throw new L2;return n}function L2(){}var aR=N(()=>{"use strict";qt();iR.CycleException=L2;o(iR,"topsort");o(L2,"CycleException");L2.prototype=new Error});var Ine=N(()=>{"use strict";aR()});function rk(t,e,r){Pt(e)||(e=[e]);var n=(t.isDirected()?t.successors:t.neighbors).bind(t),i=[],a={};return Ae(e,function(s){if(!t.hasNode(s))throw new Error("Graph does not have node: "+s);One(t,s,r==="post",a,n,i)}),i}function One(t,e,r,n,i,a){Object.prototype.hasOwnProperty.call(n,e)||(n[e]=!0,r||a.push(e),Ae(i(e),function(s){One(t,s,r,n,i,a)}),r&&a.push(e))}var sR=N(()=>{"use strict";qt();o(rk,"dfs");o(One,"doDfs")});function oR(t,e){return rk(t,e,"post")}var Pne=N(()=>{"use strict";sR();o(oR,"postorder")});function lR(t,e){return rk(t,e,"pre")}var Bne=N(()=>{"use strict";sR();o(lR,"preorder")});var Fne=N(()=>{"use strict";tR();KT()});var $ne=N(()=>{"use strict";Lne();rR();Rne();Nne();Mne();Ine();Pne();Bne();Fne();nR();aR()});function rf(t){t=dne(t),D2(t);var e=tk(t);uR(e),cR(e,t);for(var r,n;r=Une(e);)n=Hne(e,t,r),Wne(e,t,r,n)}function cR(t,e){var r=oR(t,t.nodes());r=r.slice(0,r.length-1),Ae(r,function(n){sIe(t,e,n)})}function sIe(t,e,r){var n=t.node(r),i=n.parent;t.edge(r,i).cutvalue=Gne(t,e,r)}function Gne(t,e,r){var n=t.node(r),i=n.parent,a=!0,s=e.edge(r,i),l=0;return s||(a=!1,s=e.edge(i,r)),l=s.weight,Ae(e.nodeEdges(r),function(u){var h=u.v===r,f=h?u.w:u.v;if(f!==i){var d=h===a,p=e.edge(u).weight;if(l+=d?p:-p,lIe(t,r,f)){var m=t.edge(r,f).cutvalue;l+=d?-m:m}}}),l}function uR(t,e){arguments.length<2&&(e=t.nodes()[0]),Vne(t,{},1,e)}function Vne(t,e,r,n,i){var a=r,s=t.node(n);return e[n]=!0,Ae(t.neighbors(n),function(l){Object.prototype.hasOwnProperty.call(e,l)||(r=Vne(t,e,r,l,n))}),s.low=a,s.lim=r++,i?s.parent=i:delete s.parent,r}function Une(t){return ns(t.edges(),function(e){return t.edge(e).cutvalue<0})}function Hne(t,e,r){var n=r.v,i=r.w;e.hasEdge(n,i)||(n=r.w,i=r.v);var a=t.node(n),s=t.node(i),l=a,u=!1;a.lim>s.lim&&(l=s,u=!0);var h=Yr(e.edges(),function(f){return u===zne(t,t.node(f.v),l)&&u!==zne(t,t.node(f.w),l)});return Gd(h,function(f){return Wd(e,f)})}function Wne(t,e,r,n){var i=r.v,a=r.w;t.removeEdge(i,a),t.setEdge(n.v,n.w,{}),uR(t),cR(t,e),oIe(t,e)}function oIe(t,e){var r=ns(t.nodes(),function(i){return!e.node(i).parent}),n=lR(t,r);n=n.slice(1),Ae(n,function(i){var a=t.node(i).parent,s=e.edge(i,a),l=!1;s||(s=e.edge(a,i),l=!0),e.node(i).rank=e.node(a).rank+(l?s.minlen:-s.minlen)})}function lIe(t,e,r){return t.hasEdge(e,r)}function zne(t,e,r){return r.low<=e.lim&&e.lim<=r.lim}var qne=N(()=>{"use strict";qt();$ne();Sc();eR();ek();rf.initLowLimValues=uR;rf.initCutValues=cR;rf.calcCutValue=Gne;rf.leaveEdge=Une;rf.enterEdge=Hne;rf.exchangeEdges=Wne;o(rf,"networkSimplex");o(cR,"initCutValues");o(sIe,"assignCutValue");o(Gne,"calcCutValue");o(uR,"initLowLimValues");o(Vne,"dfsAssignLowLim");o(Une,"leaveEdge");o(Hne,"enterEdge");o(Wne,"exchangeEdges");o(oIe,"updateRanks");o(lIe,"isTreeEdge");o(zne,"isDescendant")});function hR(t){switch(t.graph().ranker){case"network-simplex":Yne(t);break;case"tight-tree":uIe(t);break;case"longest-path":cIe(t);break;default:Yne(t)}}function uIe(t){D2(t),tk(t)}function Yne(t){rf(t)}var cIe,fR=N(()=>{"use strict";eR();qne();ek();o(hR,"rank");cIe=D2;o(uIe,"tightTreeRanker");o(Yne,"networkSimplexRanker")});function Xne(t){var e=Ec(t,"root",{},"_root"),r=hIe(t),n=Is(br(r))-1,i=2*n+1;t.graph().nestingRoot=e,Ae(t.edges(),function(s){t.edge(s).minlen*=i});var a=fIe(t)+1;Ae(t.children(),function(s){jne(t,e,i,a,n,r,s)}),t.graph().nodeRankFactor=i}function jne(t,e,r,n,i,a,s){var l=t.children(s);if(!l.length){s!==e&&t.setEdge(e,s,{weight:0,minlen:r});return}var u=jL(t,"_bt"),h=jL(t,"_bb"),f=t.node(s);t.setParent(u,s),f.borderTop=u,t.setParent(h,s),f.borderBottom=h,Ae(l,function(d){jne(t,e,r,n,i,a,d);var p=t.node(d),m=p.borderTop?p.borderTop:d,g=p.borderBottom?p.borderBottom:d,y=p.borderTop?n:2*n,v=m!==g?1:i-a[s]+1;t.setEdge(u,m,{weight:y,minlen:v,nestingEdge:!0}),t.setEdge(g,h,{weight:y,minlen:v,nestingEdge:!0})}),t.parent(s)||t.setEdge(e,u,{weight:0,minlen:i+a[s]})}function hIe(t){var e={};function r(n,i){var a=t.children(n);a&&a.length&&Ae(a,function(s){r(s,i+1)}),e[n]=i}return o(r,"dfs"),Ae(t.children(),function(n){r(n,1)}),e}function fIe(t){return Xr(t.edges(),function(e,r){return e+t.edge(r).weight},0)}function Kne(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,Ae(t.edges(),function(r){var n=t.edge(r);n.nestingEdge&&t.removeEdge(r)})}var Qne=N(()=>{"use strict";qt();Sc();o(Xne,"run");o(jne,"dfs");o(hIe,"treeDepths");o(fIe,"sumWeights");o(Kne,"cleanup")});function Zne(t,e,r){var n={},i;Ae(r,function(a){for(var s=t.parent(a),l,u;s;){if(l=t.parent(s),l?(u=n[l],n[l]=s):(u=i,i=s),u&&u!==s){e.setEdge(u,s);return}s=l}})}var Jne=N(()=>{"use strict";qt();o(Zne,"addSubgraphConstraints")});function eie(t,e,r){var n=pIe(t),i=new sn({compound:!0}).setGraph({root:n}).setDefaultNodeLabel(function(a){return t.node(a)});return Ae(t.nodes(),function(a){var s=t.node(a),l=t.parent(a);(s.rank===e||s.minRank<=e&&e<=s.maxRank)&&(i.setNode(a),i.setParent(a,l||n),Ae(t[r](a),function(u){var h=u.v===a?u.w:u.v,f=i.edge(h,a),d=pr(f)?0:f.weight;i.setEdge(h,a,{weight:t.edge(u).weight+d})}),Object.prototype.hasOwnProperty.call(s,"minRank")&&i.setNode(a,{borderLeft:s.borderLeft[e],borderRight:s.borderRight[e]}))}),i}function pIe(t){for(var e;t.hasNode(e=Ud("_root")););return e}var tie=N(()=>{"use strict";qt();Vo();o(eie,"buildLayerGraph");o(pIe,"createRootNode")});function rie(t,e){for(var r=0,n=1;n0;)f%2&&(d+=l[f+1]),f=f-1>>1,l[f]+=h.weight;u+=h.weight*d})),u}var nie=N(()=>{"use strict";qt();o(rie,"crossCount");o(mIe,"twoLayerCrossCount")});function iie(t){var e={},r=Yr(t.nodes(),function(l){return!t.children(l).length}),n=Is(Je(r,function(l){return t.node(l).rank})),i=Je(Go(n+1),function(){return[]});function a(l){if(!Bt(e,l)){e[l]=!0;var u=t.node(l);i[u.rank].push(l),Ae(t.successors(l),a)}}o(a,"dfs");var s=kc(r,function(l){return t.node(l).rank});return Ae(s,a),i}var aie=N(()=>{"use strict";qt();o(iie,"initOrder")});function sie(t,e){return Je(e,function(r){var n=t.inEdges(r);if(n.length){var i=Xr(n,function(a,s){var l=t.edge(s),u=t.node(s.v);return{sum:a.sum+l.weight*u.order,weight:a.weight+l.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}var oie=N(()=>{"use strict";qt();o(sie,"barycenter")});function lie(t,e){var r={};Ae(t,function(i,a){var s=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:a};pr(i.barycenter)||(s.barycenter=i.barycenter,s.weight=i.weight)}),Ae(e.edges(),function(i){var a=r[i.v],s=r[i.w];!pr(a)&&!pr(s)&&(s.indegree++,a.out.push(r[i.w]))});var n=Yr(r,function(i){return!i.indegree});return gIe(n)}function gIe(t){var e=[];function r(a){return function(s){s.merged||(pr(s.barycenter)||pr(a.barycenter)||s.barycenter>=a.barycenter)&&yIe(a,s)}}o(r,"handleIn");function n(a){return function(s){s.in.push(a),--s.indegree===0&&t.push(s)}}for(o(n,"handleOut");t.length;){var i=t.pop();e.push(i),Ae(i.in.reverse(),r(i)),Ae(i.out,n(i))}return Je(Yr(e,function(a){return!a.merged}),function(a){return Vd(a,["vs","i","barycenter","weight"])})}function yIe(t,e){var r=0,n=0;t.weight&&(r+=t.barycenter*t.weight,n+=t.weight),e.weight&&(r+=e.barycenter*e.weight,n+=e.weight),t.vs=e.vs.concat(t.vs),t.barycenter=r/n,t.weight=n,t.i=Math.min(e.i,t.i),e.merged=!0}var cie=N(()=>{"use strict";qt();o(lie,"resolveConflicts");o(gIe,"doResolveConflicts");o(yIe,"mergeEntries")});function hie(t,e){var r=gne(t,function(f){return Object.prototype.hasOwnProperty.call(f,"barycenter")}),n=r.lhs,i=kc(r.rhs,function(f){return-f.i}),a=[],s=0,l=0,u=0;n.sort(vIe(!!e)),u=uie(a,i,u),Ae(n,function(f){u+=f.vs.length,a.push(f.vs),s+=f.barycenter*f.weight,l+=f.weight,u=uie(a,i,u)});var h={vs:qr(a)};return l&&(h.barycenter=s/l,h.weight=l),h}function uie(t,e,r){for(var n;e.length&&(n=ga(e)).i<=r;)e.pop(),t.push(n.vs),r++;return r}function vIe(t){return function(e,r){return e.barycenterr.barycenter?1:t?r.i-e.i:e.i-r.i}}var fie=N(()=>{"use strict";qt();Sc();o(hie,"sort");o(uie,"consumeUnsortable");o(vIe,"compareWithBias")});function dR(t,e,r,n){var i=t.children(e),a=t.node(e),s=a?a.borderLeft:void 0,l=a?a.borderRight:void 0,u={};s&&(i=Yr(i,function(g){return g!==s&&g!==l}));var h=sie(t,i);Ae(h,function(g){if(t.children(g.v).length){var y=dR(t,g.v,r,n);u[g.v]=y,Object.prototype.hasOwnProperty.call(y,"barycenter")&&bIe(g,y)}});var f=lie(h,r);xIe(f,u);var d=hie(f,n);if(s&&(d.vs=qr([s,d.vs,l]),t.predecessors(s).length)){var p=t.node(t.predecessors(s)[0]),m=t.node(t.predecessors(l)[0]);Object.prototype.hasOwnProperty.call(d,"barycenter")||(d.barycenter=0,d.weight=0),d.barycenter=(d.barycenter*d.weight+p.order+m.order)/(d.weight+2),d.weight+=2}return d}function xIe(t,e){Ae(t,function(r){r.vs=qr(r.vs.map(function(n){return e[n]?e[n].vs:n}))})}function bIe(t,e){pr(t.barycenter)?(t.barycenter=e.barycenter,t.weight=e.weight):(t.barycenter=(t.barycenter*t.weight+e.barycenter*e.weight)/(t.weight+e.weight),t.weight+=e.weight)}var die=N(()=>{"use strict";qt();oie();cie();fie();o(dR,"sortSubgraph");o(xIe,"expandSubgraphs");o(bIe,"mergeBarycenters")});function gie(t){var e=KL(t),r=pie(t,Go(1,e+1),"inEdges"),n=pie(t,Go(e-1,-1,-1),"outEdges"),i=iie(t);mie(t,i);for(var a=Number.POSITIVE_INFINITY,s,l=0,u=0;u<4;++l,++u){wIe(l%2?r:n,l%4>=2),i=ef(t);var h=rie(t,i);h{"use strict";qt();Vo();Sc();Jne();tie();nie();aie();die();o(gie,"order");o(pie,"buildLayerGraphs");o(wIe,"sweepLayerGraphs");o(mie,"assignOrder")});function vie(t){var e=kIe(t);Ae(t.graph().dummyChains,function(r){for(var n=t.node(r),i=n.edgeObj,a=TIe(t,e,i.v,i.w),s=a.path,l=a.lca,u=0,h=s[u],f=!0;r!==i.w;){if(n=t.node(r),f){for(;(h=s[u])!==l&&t.node(h).maxRanks||l>e[u].lim));for(h=u,u=n;(u=t.parent(u))!==h;)a.push(u);return{path:i.concat(a.reverse()),lca:h}}function kIe(t){var e={},r=0;function n(i){var a=r;Ae(t.children(i),n),e[i]={low:a,lim:r++}}return o(n,"dfs"),Ae(t.children(),n),e}var xie=N(()=>{"use strict";qt();o(vie,"parentDummyChains");o(TIe,"findPath");o(kIe,"postorder")});function EIe(t,e){var r={};function n(i,a){var s=0,l=0,u=i.length,h=ga(a);return Ae(a,function(f,d){var p=CIe(t,f),m=p?t.node(p).order:u;(p||f===h)&&(Ae(a.slice(l,d+1),function(g){Ae(t.predecessors(g),function(y){var v=t.node(y),x=v.order;(xh)&&bie(r,p,f)})})}o(n,"scan");function i(a,s){var l=-1,u,h=0;return Ae(s,function(f,d){if(t.node(f).dummy==="border"){var p=t.predecessors(f);p.length&&(u=t.node(p[0]).order,n(s,h,d,l,u),h=d,l=u)}n(s,h,s.length,u,a.length)}),s}return o(i,"visitLayer"),Xr(e,i),r}function CIe(t,e){if(t.node(e).dummy)return ns(t.predecessors(e),function(r){return t.node(r).dummy})}function bie(t,e,r){if(e>r){var n=e;e=r,r=n}var i=t[e];i||(t[e]=i={}),i[r]=!0}function AIe(t,e,r){if(e>r){var n=e;e=r,r=n}return!!t[e]&&Object.prototype.hasOwnProperty.call(t[e],r)}function _Ie(t,e,r,n){var i={},a={},s={};return Ae(e,function(l){Ae(l,function(u,h){i[u]=u,a[u]=u,s[u]=h})}),Ae(e,function(l){var u=-1;Ae(l,function(h){var f=n(h);if(f.length){f=kc(f,function(y){return s[y]});for(var d=(f.length-1)/2,p=Math.floor(d),m=Math.ceil(d);p<=m;++p){var g=f[p];a[h]===h&&u{"use strict";qt();Vo();Sc();o(EIe,"findType1Conflicts");o(SIe,"findType2Conflicts");o(CIe,"findOtherInnerSegmentNode");o(bie,"addConflict");o(AIe,"hasConflict");o(_Ie,"verticalAlignment");o(DIe,"horizontalCompaction");o(LIe,"buildBlockGraph");o(RIe,"findSmallestWidthAlignment");o(NIe,"alignCoordinates");o(MIe,"balance");o(wie,"positionX");o(IIe,"sep");o(OIe,"width")});function kie(t){t=JT(t),PIe(t),ML(wie(t),function(e,r){t.node(r).x=e})}function PIe(t){var e=ef(t),r=t.graph().ranksep,n=0;Ae(e,function(i){var a=Is(Je(i,function(s){return t.node(s).height}));Ae(i,function(s){t.node(s).y=n+a/2}),n+=a+r})}var Eie=N(()=>{"use strict";qt();Sc();Tie();o(kie,"position");o(PIe,"positionY")});function R2(t,e){var r=e&&e.debugTiming?yne:vne;r("layout",()=>{var n=r(" buildLayoutGraph",()=>YIe(t));r(" runLayout",()=>BIe(n,r)),r(" updateInputGraph",()=>FIe(t,n))})}function BIe(t,e){e(" makeSpaceForEdgeLabels",()=>XIe(t)),e(" removeSelfEdges",()=>nOe(t)),e(" acyclic",()=>une(t)),e(" nestingGraph.run",()=>Xne(t)),e(" rank",()=>hR(JT(t))),e(" injectEdgeLabelProxies",()=>jIe(t)),e(" removeEmptyRanks",()=>mne(t)),e(" nestingGraph.cleanup",()=>Kne(t)),e(" normalizeRanks",()=>pne(t)),e(" assignRankMinMax",()=>KIe(t)),e(" removeEdgeLabelProxies",()=>QIe(t)),e(" normalize.run",()=>Ane(t)),e(" parentDummyChains",()=>vie(t)),e(" addBorderSegments",()=>bne(t)),e(" order",()=>gie(t)),e(" insertSelfEdges",()=>iOe(t)),e(" adjustCoordinateSystem",()=>kne(t)),e(" position",()=>kie(t)),e(" positionSelfEdges",()=>aOe(t)),e(" removeBorderNodes",()=>rOe(t)),e(" normalize.undo",()=>_ne(t)),e(" fixupEdgeLabelCoords",()=>eOe(t)),e(" undoCoordinateSystem",()=>Ene(t)),e(" translateGraph",()=>ZIe(t)),e(" assignNodeIntersects",()=>JIe(t)),e(" reversePoints",()=>tOe(t)),e(" acyclic.undo",()=>hne(t))}function FIe(t,e){Ae(t.nodes(),function(r){var n=t.node(r),i=e.node(r);n&&(n.x=i.x,n.y=i.y,e.children(r).length&&(n.width=i.width,n.height=i.height))}),Ae(t.edges(),function(r){var n=t.edge(r),i=e.edge(r);n.points=i.points,Object.prototype.hasOwnProperty.call(i,"x")&&(n.x=i.x,n.y=i.y)}),t.graph().width=e.graph().width,t.graph().height=e.graph().height}function YIe(t){var e=new sn({multigraph:!0,compound:!0}),r=mR(t.graph());return e.setGraph(Fh({},zIe,pR(r,$Ie),Vd(r,GIe))),Ae(t.nodes(),function(n){var i=mR(t.node(n));e.setNode(n,Qh(pR(i,VIe),UIe)),e.setParent(n,t.parent(n))}),Ae(t.edges(),function(n){var i=mR(t.edge(n));e.setEdge(n,Fh({},WIe,pR(i,HIe),Vd(i,qIe)))}),e}function XIe(t){var e=t.graph();e.ranksep/=2,Ae(t.edges(),function(r){var n=t.edge(r);n.minlen*=2,n.labelpos.toLowerCase()!=="c"&&(e.rankdir==="TB"||e.rankdir==="BT"?n.width+=n.labeloffset:n.height+=n.labeloffset)})}function jIe(t){Ae(t.edges(),function(e){var r=t.edge(e);if(r.width&&r.height){var n=t.node(e.v),i=t.node(e.w),a={rank:(i.rank-n.rank)/2+n.rank,e};Ec(t,"edge-proxy",a,"_ep")}})}function KIe(t){var e=0;Ae(t.nodes(),function(r){var n=t.node(r);n.borderTop&&(n.minRank=t.node(n.borderTop).rank,n.maxRank=t.node(n.borderBottom).rank,e=Is(e,n.maxRank))}),t.graph().maxRank=e}function QIe(t){Ae(t.nodes(),function(e){var r=t.node(e);r.dummy==="edge-proxy"&&(t.edge(r.e).labelRank=r.rank,t.removeNode(e))})}function ZIe(t){var e=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,a=t.graph(),s=a.marginx||0,l=a.marginy||0;function u(h){var f=h.x,d=h.y,p=h.width,m=h.height;e=Math.min(e,f-p/2),r=Math.max(r,f+p/2),n=Math.min(n,d-m/2),i=Math.max(i,d+m/2)}o(u,"getExtremes"),Ae(t.nodes(),function(h){u(t.node(h))}),Ae(t.edges(),function(h){var f=t.edge(h);Object.prototype.hasOwnProperty.call(f,"x")&&u(f)}),e-=s,n-=l,Ae(t.nodes(),function(h){var f=t.node(h);f.x-=e,f.y-=n}),Ae(t.edges(),function(h){var f=t.edge(h);Ae(f.points,function(d){d.x-=e,d.y-=n}),Object.prototype.hasOwnProperty.call(f,"x")&&(f.x-=e),Object.prototype.hasOwnProperty.call(f,"y")&&(f.y-=n)}),a.width=r-e+s,a.height=i-n+l}function JIe(t){Ae(t.edges(),function(e){var r=t.edge(e),n=t.node(e.v),i=t.node(e.w),a,s;r.points?(a=r.points[0],s=r.points[r.points.length-1]):(r.points=[],a=i,s=n),r.points.unshift(XL(n,a)),r.points.push(XL(i,s))})}function eOe(t){Ae(t.edges(),function(e){var r=t.edge(e);if(Object.prototype.hasOwnProperty.call(r,"x"))switch((r.labelpos==="l"||r.labelpos==="r")&&(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset;break}})}function tOe(t){Ae(t.edges(),function(e){var r=t.edge(e);r.reversed&&r.points.reverse()})}function rOe(t){Ae(t.nodes(),function(e){if(t.children(e).length){var r=t.node(e),n=t.node(r.borderTop),i=t.node(r.borderBottom),a=t.node(ga(r.borderLeft)),s=t.node(ga(r.borderRight));r.width=Math.abs(s.x-a.x),r.height=Math.abs(i.y-n.y),r.x=a.x+r.width/2,r.y=n.y+r.height/2}}),Ae(t.nodes(),function(e){t.node(e).dummy==="border"&&t.removeNode(e)})}function nOe(t){Ae(t.edges(),function(e){if(e.v===e.w){var r=t.node(e.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e,label:t.edge(e)}),t.removeEdge(e)}})}function iOe(t){var e=ef(t);Ae(e,function(r){var n=0;Ae(r,function(i,a){var s=t.node(i);s.order=a+n,Ae(s.selfEdges,function(l){Ec(t,"selfedge",{width:l.label.width,height:l.label.height,rank:s.rank,order:a+ ++n,e:l.e,label:l.label},"_se")}),delete s.selfEdges})})}function aOe(t){Ae(t.nodes(),function(e){var r=t.node(e);if(r.dummy==="selfedge"){var n=t.node(r.e.v),i=n.x+n.width/2,a=n.y,s=r.x-i,l=n.height/2;t.setEdge(r.e,r.label),t.removeNode(e),r.label.points=[{x:i+2*s/3,y:a-l},{x:i+5*s/6,y:a-l},{x:i+s,y:a},{x:i+5*s/6,y:a+l},{x:i+2*s/3,y:a+l}],r.label.x=r.x,r.label.y=r.y}})}function pR(t,e){return zd(Vd(t,e),Number)}function mR(t){var e={};return Ae(t,function(r,n){e[n.toLowerCase()]=r}),e}var $Ie,zIe,GIe,VIe,UIe,HIe,WIe,qIe,Sie=N(()=>{"use strict";qt();Vo();wne();Cne();YL();JL();fR();Qne();yie();xie();Eie();Sc();o(R2,"layout");o(BIe,"runLayout");o(FIe,"updateInputGraph");$Ie=["nodesep","edgesep","ranksep","marginx","marginy"],zIe={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},GIe=["acyclicer","ranker","rankdir","align"],VIe=["width","height"],UIe={width:0,height:0},HIe=["minlen","weight","width","height","labeloffset"],WIe={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},qIe=["labelpos"];o(YIe,"buildLayoutGraph");o(XIe,"makeSpaceForEdgeLabels");o(jIe,"injectEdgeLabelProxies");o(KIe,"assignRankMinMax");o(QIe,"removeEdgeLabelProxies");o(ZIe,"translateGraph");o(JIe,"assignNodeIntersects");o(eOe,"fixupEdgeLabelCoords");o(tOe,"reversePointsForReversedEdges");o(rOe,"removeBorderNodes");o(nOe,"removeSelfEdges");o(iOe,"insertSelfEdges");o(aOe,"positionSelfEdges");o(pR,"selectNumberAttrs");o(mR,"canonicalize")});var gR=N(()=>{"use strict";YL();Sie();JL();fR()});function Uo(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:sOe(t),edges:oOe(t)};return pr(t.graph())||(e.value=an(t.graph())),e}function sOe(t){return Je(t.nodes(),function(e){var r=t.node(e),n=t.parent(e),i={v:e};return pr(r)||(i.value=r),pr(n)||(i.parent=n),i})}function oOe(t){return Je(t.edges(),function(e){var r=t.edge(e),n={v:e.v,w:e.w};return pr(e.name)||(n.name=e.name),pr(r)||(n.value=r),n})}var yR=N(()=>{"use strict";qt();KT();o(Uo,"write");o(sOe,"writeNodes");o(oOe,"writeEdges")});var wr,qd,_ie,Die,nk,lOe,Lie,Rie,cOe,Fm,Aie,Nie,Mie,Iie,Oie,Pie=N(()=>{"use strict";vt();Vo();yR();wr=new Map,qd=new Map,_ie=new Map,Die=o(()=>{qd.clear(),_ie.clear(),wr.clear()},"clear"),nk=o((t,e)=>{let r=qd.get(e)||[];return Y.trace("In isDescendant",e," ",t," = ",r.includes(t)),r.includes(t)},"isDescendant"),lOe=o((t,e)=>{let r=qd.get(e)||[];return Y.info("Descendants of ",e," is ",r),Y.info("Edge is ",t),t.v===e||t.w===e?!1:r?r.includes(t.v)||nk(t.v,e)||nk(t.w,e)||r.includes(t.w):(Y.debug("Tilt, ",e,",not in descendants"),!1)},"edgeInCluster"),Lie=o((t,e,r,n)=>{Y.warn("Copying children of ",t,"root",n,"data",e.node(t),n);let i=e.children(t)||[];t!==n&&i.push(t),Y.warn("Copying (nodes) clusterId",t,"nodes",i),i.forEach(a=>{if(e.children(a).length>0)Lie(a,e,r,n);else{let s=e.node(a);Y.info("cp ",a," to ",n," with parent ",t),r.setNode(a,s),n!==e.parent(a)&&(Y.warn("Setting parent",a,e.parent(a)),r.setParent(a,e.parent(a))),t!==n&&a!==t?(Y.debug("Setting parent",a,t),r.setParent(a,t)):(Y.info("In copy ",t,"root",n,"data",e.node(t),n),Y.debug("Not Setting parent for node=",a,"cluster!==rootId",t!==n,"node!==clusterId",a!==t));let l=e.edges(a);Y.debug("Copying Edges",l),l.forEach(u=>{Y.info("Edge",u);let h=e.edge(u.v,u.w,u.name);Y.info("Edge data",h,n);try{lOe(u,n)?(Y.info("Copying as ",u.v,u.w,h,u.name),r.setEdge(u.v,u.w,h,u.name),Y.info("newGraph edges ",r.edges(),r.edge(r.edges()[0]))):Y.info("Skipping copy of edge ",u.v,"-->",u.w," rootId: ",n," clusterId:",t)}catch(f){Y.error(f)}})}Y.debug("Removing node",a),e.removeNode(a)})},"copy"),Rie=o((t,e)=>{let r=e.children(t),n=[...r];for(let i of r)_ie.set(i,t),n=[...n,...Rie(i,e)];return n},"extractDescendants"),cOe=o((t,e,r)=>{let n=t.edges().filter(u=>u.v===e||u.w===e),i=t.edges().filter(u=>u.v===r||u.w===r),a=n.map(u=>({v:u.v===e?r:u.v,w:u.w===e?e:u.w})),s=i.map(u=>({v:u.v,w:u.w}));return a.filter(u=>s.some(h=>u.v===h.v&&u.w===h.w))},"findCommonEdges"),Fm=o((t,e,r)=>{let n=e.children(t);if(Y.trace("Searching children of id ",t,n),n.length<1)return t;let i;for(let a of n){let s=Fm(a,e,r),l=cOe(e,r,s);if(s)if(l.length>0)i=s;else return s}return i},"findNonClusterChild"),Aie=o(t=>!wr.has(t)||!wr.get(t).externalConnections?t:wr.has(t)?wr.get(t).id:t,"getAnchorId"),Nie=o((t,e)=>{if(!t||e>10){Y.debug("Opting out, no graph ");return}else Y.debug("Opting in, graph ");t.nodes().forEach(function(r){t.children(r).length>0&&(Y.warn("Cluster identified",r," Replacement id in edges: ",Fm(r,t,r)),qd.set(r,Rie(r,t)),wr.set(r,{id:Fm(r,t,r),clusterData:t.node(r)}))}),t.nodes().forEach(function(r){let n=t.children(r),i=t.edges();n.length>0?(Y.debug("Cluster identified",r,qd),i.forEach(a=>{let s=nk(a.v,r),l=nk(a.w,r);s^l&&(Y.warn("Edge: ",a," leaves cluster ",r),Y.warn("Descendants of XXX ",r,": ",qd.get(r)),wr.get(r).externalConnections=!0)})):Y.debug("Not a cluster ",r,qd)});for(let r of wr.keys()){let n=wr.get(r).id,i=t.parent(n);i!==r&&wr.has(i)&&!wr.get(i).externalConnections&&(wr.get(r).id=i)}t.edges().forEach(function(r){let n=t.edge(r);Y.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(r)),Y.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(t.edge(r)));let i=r.v,a=r.w;if(Y.warn("Fix XXX",wr,"ids:",r.v,r.w,"Translating: ",wr.get(r.v)," --- ",wr.get(r.w)),wr.get(r.v)||wr.get(r.w)){if(Y.warn("Fixing and trying - removing XXX",r.v,r.w,r.name),i=Aie(r.v),a=Aie(r.w),t.removeEdge(r.v,r.w,r.name),i!==r.v){let s=t.parent(i);wr.get(s).externalConnections=!0,n.fromCluster=r.v}if(a!==r.w){let s=t.parent(a);wr.get(s).externalConnections=!0,n.toCluster=r.w}Y.warn("Fix Replacing with XXX",i,a,r.name),t.setEdge(i,a,n,r.name)}}),Y.warn("Adjusted Graph",Uo(t)),Mie(t,0),Y.trace(wr)},"adjustClustersAndEdges"),Mie=o((t,e)=>{if(Y.warn("extractor - ",e,Uo(t),t.children("D")),e>10){Y.error("Bailing out");return}let r=t.nodes(),n=!1;for(let i of r){let a=t.children(i);n=n||a.length>0}if(!n){Y.debug("Done, no node has children",t.nodes());return}Y.debug("Nodes = ",r,e);for(let i of r)if(Y.debug("Extracting node",i,wr,wr.has(i)&&!wr.get(i).externalConnections,!t.parent(i),t.node(i),t.children("D")," Depth ",e),!wr.has(i))Y.debug("Not a cluster",i,e);else if(!wr.get(i).externalConnections&&t.children(i)&&t.children(i).length>0){Y.warn("Cluster without external connections, without a parent and with children",i,e);let s=t.graph().rankdir==="TB"?"LR":"TB";wr.get(i)?.clusterData?.dir&&(s=wr.get(i).clusterData.dir,Y.warn("Fixing dir",wr.get(i).clusterData.dir,s));let l=new sn({multigraph:!0,compound:!0}).setGraph({rankdir:s,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});Y.warn("Old graph before copy",Uo(t)),Lie(i,t,l,i),t.setNode(i,{clusterNode:!0,id:i,clusterData:wr.get(i).clusterData,label:wr.get(i).label,graph:l}),Y.warn("New graph after copy node: (",i,")",Uo(l)),Y.debug("Old graph after copy",Uo(t))}else Y.warn("Cluster ** ",i," **not meeting the criteria !externalConnections:",!wr.get(i).externalConnections," no parent: ",!t.parent(i)," children ",t.children(i)&&t.children(i).length>0,t.children("D"),e),Y.debug(wr);r=t.nodes(),Y.warn("New list of nodes",r);for(let i of r){let a=t.node(i);Y.warn(" Now next level",i,a),a?.clusterNode&&Mie(a.graph,e+1)}},"extractor"),Iie=o((t,e)=>{if(e.length===0)return[];let r=Object.assign([],e);return e.forEach(n=>{let i=t.children(n),a=Iie(t,i);r=[...r,...a]}),r},"sorter"),Oie=o(t=>Iie(t,t.children()),"sortNodesByHierarchy")});var Fie={};hr(Fie,{render:()=>uOe});var Bie,uOe,$ie=N(()=>{"use strict";gR();yR();Vo();tL();Ft();Pie();eT();Hw();eL();vt();w2();zt();Bie=o(async(t,e,r,n,i,a)=>{Y.warn("Graph in recursive render:XAX",Uo(e),i);let s=e.graph().rankdir;Y.trace("Dir in recursive render - dir:",s);let l=t.insert("g").attr("class","root");e.nodes()?Y.info("Recursive render XXX",e.nodes()):Y.info("No nodes found for",e),e.edges().length>0&&Y.info("Recursive edges",e.edge(e.edges()[0]));let u=l.insert("g").attr("class","clusters"),h=l.insert("g").attr("class","edgePaths"),f=l.insert("g").attr("class","edgeLabels"),d=l.insert("g").attr("class","nodes");await Promise.all(e.nodes().map(async function(y){let v=e.node(y);if(i!==void 0){let x=JSON.parse(JSON.stringify(i.clusterData));Y.trace(`Setting data for parent cluster XXX + Node.id = `,y,` + data=`,x.height,` +Parent cluster`,i.height),e.setNode(i.id,x),e.parent(y)||(Y.trace("Setting parent",y,i.id),e.setParent(y,i.id,x))}if(Y.info("(Insert) Node XXX"+y+": "+JSON.stringify(e.node(y))),v?.clusterNode){Y.info("Cluster identified XBX",y,v.width,e.node(y));let{ranksep:x,nodesep:b}=e.graph();v.graph.setGraph({...v.graph.graph(),ranksep:x+25,nodesep:b});let w=await Bie(d,v.graph,r,n,e.node(y),a),C=w.elem;je(v,C),v.diff=w.diff||0,Y.info("New compound node after recursive render XAX",y,"width",v.width,"height",v.height),rJ(C,v)}else e.children(y).length>0?(Y.trace("Cluster - the non recursive path XBX",y,v.id,v,v.width,"Graph:",e),Y.trace(Fm(v.id,e)),wr.set(v.id,{id:Fm(v.id,e),node:v})):(Y.trace("Node - the non recursive path XAX",y,d,e.node(y),s),await vm(d,e.node(y),{config:a,dir:s}))})),await o(async()=>{let y=e.edges().map(async function(v){let x=e.edge(v.v,v.w,v.name);Y.info("Edge "+v.v+" -> "+v.w+": "+JSON.stringify(v)),Y.info("Edge "+v.v+" -> "+v.w+": ",v," ",JSON.stringify(e.edge(v))),Y.info("Fix",wr,"ids:",v.v,v.w,"Translating: ",wr.get(v.v),wr.get(v.w)),await jw(f,x)});await Promise.all(y)},"processEdges")(),Y.info("Graph before layout:",JSON.stringify(Uo(e))),Y.info("############################################# XXX"),Y.info("### Layout ### XXX"),Y.info("############################################# XXX"),R2(e),Y.info("Graph after layout:",JSON.stringify(Uo(e)));let m=0,{subGraphTitleTotalMargin:g}=Ru(a);return await Promise.all(Oie(e).map(async function(y){let v=e.node(y);if(Y.info("Position XBX => "+y+": ("+v.x,","+v.y,") width: ",v.width," height: ",v.height),v?.clusterNode)v.y+=g,Y.info("A tainted cluster node XBX1",y,v.id,v.width,v.height,v.x,v.y,e.parent(y)),wr.get(v.id).node=v,k2(v);else if(e.children(y).length>0){Y.info("A pure cluster node XBX1",y,v.id,v.x,v.y,v.width,v.height,e.parent(y)),v.height+=g,e.node(v.parentId);let x=v?.padding/2||0,b=v?.labelBBox?.height||0,w=b-x||0;Y.debug("OffsetY",w,"labelHeight",b,"halfPadding",x),await ym(u,v),wr.get(v.id).node=v}else{let x=e.node(v.parentId);v.y+=g/2,Y.info("A regular node XBX1 - using the padding",v.id,"parent",v.parentId,v.width,v.height,v.x,v.y,"offsetY",v.offsetY,"parent",x,x?.offsetY,v),k2(v)}})),e.edges().forEach(function(y){let v=e.edge(y);Y.info("Edge "+y.v+" -> "+y.w+": "+JSON.stringify(v),v),v.points.forEach(C=>C.y+=g/2);let x=e.node(y.v);var b=e.node(y.w);let w=Qw(h,v,wr,r,x,b,n);Kw(v,w)}),e.nodes().forEach(function(y){let v=e.node(y);Y.info(y,v.type,v.diff),v.isGroup&&(m=v.diff)}),Y.warn("Returning from recursive render XAX",l,m),{elem:l,diff:m}},"recursiveRender"),uOe=o(async(t,e)=>{let r=new sn({multigraph:!0,compound:!0}).setGraph({rankdir:t.direction,nodesep:t.config?.nodeSpacing||t.config?.flowchart?.nodeSpacing||t.nodeSpacing,ranksep:t.config?.rankSpacing||t.config?.flowchart?.rankSpacing||t.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),n=e.select("g");Zw(n,t.markers,t.type,t.diagramId),nJ(),tJ(),jZ(),Die(),t.nodes.forEach(a=>{r.setNode(a.id,{...a}),a.parentId&&r.setParent(a.id,a.parentId)}),Y.debug("Edges:",t.edges),t.edges.forEach(a=>{if(a.start===a.end){let s=a.start,l=s+"---"+s+"---1",u=s+"---"+s+"---2",h=r.node(s);r.setNode(l,{domId:l,id:l,parentId:h.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),r.setParent(l,h.parentId),r.setNode(u,{domId:u,id:u,parentId:h.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),r.setParent(u,h.parentId);let f=structuredClone(a),d=structuredClone(a),p=structuredClone(a);f.label="",f.arrowTypeEnd="none",f.id=s+"-cyclic-special-1",d.arrowTypeStart="none",d.arrowTypeEnd="none",d.id=s+"-cyclic-special-mid",p.label="",h.isGroup&&(f.fromCluster=s,p.toCluster=s),p.id=s+"-cyclic-special-2",p.arrowTypeStart="none",r.setEdge(s,l,f,s+"-cyclic-special-0"),r.setEdge(l,u,d,s+"-cyclic-special-1"),r.setEdge(u,s,p,s+"-cyc{"use strict";aJ();vt();N2={},vR=o(t=>{for(let e of t)N2[e.name]=e},"registerLayoutLoaders"),hOe=o(()=>{vR([{name:"dagre",loader:o(async()=>await Promise.resolve().then(()=>($ie(),Fie)),"loader")}])},"registerDefaultLayoutLoaders");hOe();Cc=o(async(t,e)=>{if(!(t.layoutAlgorithm in N2))throw new Error(`Unknown layout algorithm: ${t.layoutAlgorithm}`);let r=N2[t.layoutAlgorithm];return(await r.loader()).render(t,e,iJ,{algorithm:r.algorithm})},"render"),nf=o((t="",{fallback:e="dagre"}={})=>{if(t in N2)return t;if(e in N2)return Y.warn(`Layout algorithm ${t} is not registered. Using ${e} as fallback.`),e;throw new Error(`Both layout algorithms ${t} and ${e} are not registered.`)},"getRegisteredLayoutAlgorithm")});var Ac,fOe,dOe,$m=N(()=>{"use strict";Ei();vt();Ac=o((t,e,r,n)=>{t.attr("class",r);let{width:i,height:a,x:s,y:l}=fOe(t,e);vn(t,a,i,n);let u=dOe(s,l,i,a,e);t.attr("viewBox",u),Y.debug(`viewBox configured: ${u} with padding: ${e}`)},"setupViewPortForSVG"),fOe=o((t,e)=>{let r=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:r.width+e*2,height:r.height+e*2,x:r.x,y:r.y}},"calculateDimensionsWithPadding"),dOe=o((t,e,r,n,i)=>`${t-i} ${e-i} ${r} ${n}`,"createViewBox")});var pOe,mOe,zie,Gie=N(()=>{"use strict";dr();zt();vt();gm();Yd();$m();ir();pOe=o(function(t,e){return e.db.getClasses()},"getClasses"),mOe=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing state diagram (v2)",e);let{securityLevel:i,flowchart:a,layout:s}=me(),l;i==="sandbox"&&(l=Ge("#i"+e));let u=i==="sandbox"?l.nodes()[0].contentDocument:document;Y.debug("Before getData: ");let h=n.db.getData();Y.debug("Data: ",h);let f=yc(e,i),d=n.db.getDirection();h.type=n.type,h.layoutAlgorithm=nf(s),h.layoutAlgorithm==="dagre"&&s==="elk"&&Y.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),h.direction=d,h.nodeSpacing=a?.nodeSpacing||50,h.rankSpacing=a?.rankSpacing||50,h.markers=["point","circle","cross"],h.diagramId=e,Y.debug("REF1:",h),await Cc(h,f);let p=h.config.flowchart?.diagramPadding??8;Gt.insertTitle(f,"flowchartTitleText",a?.titleTopMargin||0,n.db.getDiagramTitle()),Ac(f,p,"flowchart",a?.useMaxWidth||!1);for(let m of h.nodes){let g=Ge(`#${e} [id="${m.id}"]`);if(!g||!m.link)continue;let y=u.createElementNS("http://www.w3.org/2000/svg","a");y.setAttributeNS("http://www.w3.org/2000/svg","class",m.cssClasses),y.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),i==="sandbox"?y.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):m.linkTarget&&y.setAttributeNS("http://www.w3.org/2000/svg","target",m.linkTarget);let v=g.insert(function(){return y},":first-child"),x=g.select(".label-container");x&&v.append(function(){return x.node()});let b=g.select(".label");b&&v.append(function(){return b.node()})}},"draw"),zie={getClasses:pOe,draw:mOe}});var xR,bR,Vie=N(()=>{"use strict";xR=function(){var t=o(function(Hr,et,mt,Kt){for(mt=mt||{},Kt=Hr.length;Kt--;mt[Hr[Kt]]=et);return mt},"o"),e=[1,4],r=[1,3],n=[1,5],i=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],a=[2,2],s=[1,13],l=[1,14],u=[1,15],h=[1,16],f=[1,23],d=[1,25],p=[1,26],m=[1,27],g=[1,49],y=[1,48],v=[1,29],x=[1,30],b=[1,31],w=[1,32],C=[1,33],T=[1,44],E=[1,46],A=[1,42],S=[1,47],_=[1,43],I=[1,50],D=[1,45],k=[1,51],L=[1,52],R=[1,34],O=[1,35],M=[1,36],B=[1,37],F=[1,57],P=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],z=[1,61],$=[1,60],H=[1,62],Q=[8,9,11,75,77,78],j=[1,78],ie=[1,91],ne=[1,96],le=[1,95],he=[1,92],K=[1,88],X=[1,94],te=[1,90],J=[1,97],se=[1,93],ue=[1,98],Z=[1,89],Se=[8,9,10,11,40,75,77,78],ce=[8,9,10,11,40,46,75,77,78],ae=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],Oe=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],ge=[44,60,89,102,105,106,109,111,114,115,116],ze=[1,121],He=[1,122],$e=[1,124],Re=[1,123],Ie=[44,60,62,74,89,102,105,106,109,111,114,115,116],be=[1,133],W=[1,147],de=[1,148],re=[1,149],oe=[1,150],V=[1,135],xe=[1,137],q=[1,141],pe=[1,142],ve=[1,143],Pe=[1,144],_e=[1,145],we=[1,146],Ve=[1,151],De=[1,152],qe=[1,131],at=[1,132],Rt=[1,139],st=[1,134],Ue=[1,138],ct=[1,136],We=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],ot=[1,154],Yt=[1,156],bt=[8,9,11],Mt=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],xt=[1,176],ut=[1,172],Et=[1,173],ft=[1,177],yt=[1,174],nt=[1,175],dn=[77,116,119],Tt=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],On=[10,106],tn=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],_r=[1,247],Dr=[1,245],Pn=[1,249],At=[1,243],Ce=[1,244],tt=[1,246],St=[1,248],mr=[1,250],rn=[1,268],gn=[8,9,11,106],Zr=[8,9,10,11,60,84,105,106,109,110,111,112],Ni={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1]],performAction:o(function(et,mt,Kt,lt,Cn,ye,Vf){var Te=ye.length-1;switch(Cn){case 2:this.$=[];break;case 3:(!Array.isArray(ye[Te])||ye[Te].length>0)&&ye[Te-1].push(ye[Te]),this.$=ye[Te-1];break;case 4:case 183:this.$=ye[Te];break;case 11:lt.setDirection("TB"),this.$="TB";break;case 12:lt.setDirection(ye[Te-1]),this.$=ye[Te-1];break;case 27:this.$=ye[Te-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=lt.addSubGraph(ye[Te-6],ye[Te-1],ye[Te-4]);break;case 34:this.$=lt.addSubGraph(ye[Te-3],ye[Te-1],ye[Te-3]);break;case 35:this.$=lt.addSubGraph(void 0,ye[Te-1],void 0);break;case 37:this.$=ye[Te].trim(),lt.setAccTitle(this.$);break;case 38:case 39:this.$=ye[Te].trim(),lt.setAccDescription(this.$);break;case 43:this.$=ye[Te-1]+ye[Te];break;case 44:this.$=ye[Te];break;case 45:lt.addVertex(ye[Te-1][ye[Te-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,ye[Te]),lt.addLink(ye[Te-3].stmt,ye[Te-1],ye[Te-2]),this.$={stmt:ye[Te-1],nodes:ye[Te-1].concat(ye[Te-3].nodes)};break;case 46:lt.addLink(ye[Te-2].stmt,ye[Te],ye[Te-1]),this.$={stmt:ye[Te],nodes:ye[Te].concat(ye[Te-2].nodes)};break;case 47:lt.addLink(ye[Te-3].stmt,ye[Te-1],ye[Te-2]),this.$={stmt:ye[Te-1],nodes:ye[Te-1].concat(ye[Te-3].nodes)};break;case 48:this.$={stmt:ye[Te-1],nodes:ye[Te-1]};break;case 49:lt.addVertex(ye[Te-1][ye[Te-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,ye[Te]),this.$={stmt:ye[Te-1],nodes:ye[Te-1],shapeData:ye[Te]};break;case 50:this.$={stmt:ye[Te],nodes:ye[Te]};break;case 51:this.$=[ye[Te]];break;case 52:lt.addVertex(ye[Te-5][ye[Te-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,ye[Te-4]),this.$=ye[Te-5].concat(ye[Te]);break;case 53:this.$=ye[Te-4].concat(ye[Te]);break;case 54:this.$=ye[Te];break;case 55:this.$=ye[Te-2],lt.setClass(ye[Te-2],ye[Te]);break;case 56:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"square");break;case 57:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"doublecircle");break;case 58:this.$=ye[Te-5],lt.addVertex(ye[Te-5],ye[Te-2],"circle");break;case 59:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"ellipse");break;case 60:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"stadium");break;case 61:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"subroutine");break;case 62:this.$=ye[Te-7],lt.addVertex(ye[Te-7],ye[Te-1],"rect",void 0,void 0,void 0,Object.fromEntries([[ye[Te-5],ye[Te-3]]]));break;case 63:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"cylinder");break;case 64:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"round");break;case 65:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"diamond");break;case 66:this.$=ye[Te-5],lt.addVertex(ye[Te-5],ye[Te-2],"hexagon");break;case 67:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"odd");break;case 68:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"trapezoid");break;case 69:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"inv_trapezoid");break;case 70:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"lean_right");break;case 71:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"lean_left");break;case 72:this.$=ye[Te],lt.addVertex(ye[Te]);break;case 73:ye[Te-1].text=ye[Te],this.$=ye[Te-1];break;case 74:case 75:ye[Te-2].text=ye[Te-1],this.$=ye[Te-2];break;case 76:this.$=ye[Te];break;case 77:var wi=lt.destructLink(ye[Te],ye[Te-2]);this.$={type:wi.type,stroke:wi.stroke,length:wi.length,text:ye[Te-1]};break;case 78:var wi=lt.destructLink(ye[Te],ye[Te-2]);this.$={type:wi.type,stroke:wi.stroke,length:wi.length,text:ye[Te-1],id:ye[Te-3]};break;case 79:this.$={text:ye[Te],type:"text"};break;case 80:this.$={text:ye[Te-1].text+""+ye[Te],type:ye[Te-1].type};break;case 81:this.$={text:ye[Te],type:"string"};break;case 82:this.$={text:ye[Te],type:"markdown"};break;case 83:var wi=lt.destructLink(ye[Te]);this.$={type:wi.type,stroke:wi.stroke,length:wi.length};break;case 84:var wi=lt.destructLink(ye[Te]);this.$={type:wi.type,stroke:wi.stroke,length:wi.length,id:ye[Te-1]};break;case 85:this.$=ye[Te-1];break;case 86:this.$={text:ye[Te],type:"text"};break;case 87:this.$={text:ye[Te-1].text+""+ye[Te],type:ye[Te-1].type};break;case 88:this.$={text:ye[Te],type:"string"};break;case 89:case 104:this.$={text:ye[Te],type:"markdown"};break;case 101:this.$={text:ye[Te],type:"text"};break;case 102:this.$={text:ye[Te-1].text+""+ye[Te],type:ye[Te-1].type};break;case 103:this.$={text:ye[Te],type:"text"};break;case 105:this.$=ye[Te-4],lt.addClass(ye[Te-2],ye[Te]);break;case 106:this.$=ye[Te-4],lt.setClass(ye[Te-2],ye[Te]);break;case 107:case 115:this.$=ye[Te-1],lt.setClickEvent(ye[Te-1],ye[Te]);break;case 108:case 116:this.$=ye[Te-3],lt.setClickEvent(ye[Te-3],ye[Te-2]),lt.setTooltip(ye[Te-3],ye[Te]);break;case 109:this.$=ye[Te-2],lt.setClickEvent(ye[Te-2],ye[Te-1],ye[Te]);break;case 110:this.$=ye[Te-4],lt.setClickEvent(ye[Te-4],ye[Te-3],ye[Te-2]),lt.setTooltip(ye[Te-4],ye[Te]);break;case 111:this.$=ye[Te-2],lt.setLink(ye[Te-2],ye[Te]);break;case 112:this.$=ye[Te-4],lt.setLink(ye[Te-4],ye[Te-2]),lt.setTooltip(ye[Te-4],ye[Te]);break;case 113:this.$=ye[Te-4],lt.setLink(ye[Te-4],ye[Te-2],ye[Te]);break;case 114:this.$=ye[Te-6],lt.setLink(ye[Te-6],ye[Te-4],ye[Te]),lt.setTooltip(ye[Te-6],ye[Te-2]);break;case 117:this.$=ye[Te-1],lt.setLink(ye[Te-1],ye[Te]);break;case 118:this.$=ye[Te-3],lt.setLink(ye[Te-3],ye[Te-2]),lt.setTooltip(ye[Te-3],ye[Te]);break;case 119:this.$=ye[Te-3],lt.setLink(ye[Te-3],ye[Te-2],ye[Te]);break;case 120:this.$=ye[Te-5],lt.setLink(ye[Te-5],ye[Te-4],ye[Te]),lt.setTooltip(ye[Te-5],ye[Te-2]);break;case 121:this.$=ye[Te-4],lt.addVertex(ye[Te-2],void 0,void 0,ye[Te]);break;case 122:this.$=ye[Te-4],lt.updateLink([ye[Te-2]],ye[Te]);break;case 123:this.$=ye[Te-4],lt.updateLink(ye[Te-2],ye[Te]);break;case 124:this.$=ye[Te-8],lt.updateLinkInterpolate([ye[Te-6]],ye[Te-2]),lt.updateLink([ye[Te-6]],ye[Te]);break;case 125:this.$=ye[Te-8],lt.updateLinkInterpolate(ye[Te-6],ye[Te-2]),lt.updateLink(ye[Te-6],ye[Te]);break;case 126:this.$=ye[Te-6],lt.updateLinkInterpolate([ye[Te-4]],ye[Te]);break;case 127:this.$=ye[Te-6],lt.updateLinkInterpolate(ye[Te-4],ye[Te]);break;case 128:case 130:this.$=[ye[Te]];break;case 129:case 131:ye[Te-2].push(ye[Te]),this.$=ye[Te-2];break;case 133:this.$=ye[Te-1]+ye[Te];break;case 181:this.$=ye[Te];break;case 182:this.$=ye[Te-1]+""+ye[Te];break;case 184:this.$=ye[Te-1]+""+ye[Te];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188:this.$={stmt:"dir",value:"LR"};break}},"anonymous"),table:[{3:1,4:2,9:e,10:r,12:n},{1:[3]},t(i,a,{5:6}),{4:7,9:e,10:r,12:n},{4:8,9:e,10:r,12:n},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:w,88:C,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L,121:R,122:O,123:M,124:B},t(i,[2,9]),t(i,[2,10]),t(i,[2,11]),{8:[1,54],9:[1,55],10:F,15:53,18:56},t(P,[2,3]),t(P,[2,4]),t(P,[2,5]),t(P,[2,6]),t(P,[2,7]),t(P,[2,8]),{8:z,9:$,11:H,21:58,41:59,72:63,75:[1,64],77:[1,66],78:[1,65]},{8:z,9:$,11:H,21:67},{8:z,9:$,11:H,21:68},{8:z,9:$,11:H,21:69},{8:z,9:$,11:H,21:70},{8:z,9:$,11:H,21:71},{8:z,9:$,10:[1,72],11:H,21:73},t(P,[2,36]),{35:[1,74]},{37:[1,75]},t(P,[2,39]),t(Q,[2,50],{18:76,39:77,10:F,40:j}),{10:[1,79]},{10:[1,80]},{10:[1,81]},{10:[1,82]},{14:ie,44:ne,60:le,80:[1,86],89:he,95:[1,83],97:[1,84],101:85,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z,120:87},t(P,[2,185]),t(P,[2,186]),t(P,[2,187]),t(P,[2,188]),t(Se,[2,51]),t(Se,[2,54],{46:[1,99]}),t(ce,[2,72],{113:112,29:[1,100],44:g,48:[1,101],50:[1,102],52:[1,103],54:[1,104],56:[1,105],58:[1,106],60:y,63:[1,107],65:[1,108],67:[1,109],68:[1,110],70:[1,111],89:T,102:E,105:A,106:S,109:_,111:I,114:D,115:k,116:L}),t(ae,[2,181]),t(ae,[2,142]),t(ae,[2,143]),t(ae,[2,144]),t(ae,[2,145]),t(ae,[2,146]),t(ae,[2,147]),t(ae,[2,148]),t(ae,[2,149]),t(ae,[2,150]),t(ae,[2,151]),t(ae,[2,152]),t(i,[2,12]),t(i,[2,18]),t(i,[2,19]),{9:[1,113]},t(Oe,[2,26],{18:114,10:F}),t(P,[2,27]),{42:115,43:38,44:g,45:39,47:40,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},t(P,[2,40]),t(P,[2,41]),t(P,[2,42]),t(ge,[2,76],{73:116,62:[1,118],74:[1,117]}),{76:119,79:120,80:ze,81:He,116:$e,119:Re},{75:[1,125],77:[1,126]},t(Ie,[2,83]),t(P,[2,28]),t(P,[2,29]),t(P,[2,30]),t(P,[2,31]),t(P,[2,32]),{10:be,12:W,14:de,27:re,28:127,32:oe,44:V,60:xe,75:q,80:[1,129],81:[1,130],83:140,84:pe,85:ve,86:Pe,87:_e,88:we,89:Ve,90:De,91:128,105:qe,109:at,111:Rt,114:st,115:Ue,116:ct},t(We,a,{5:153}),t(P,[2,37]),t(P,[2,38]),t(Q,[2,48],{44:ot}),t(Q,[2,49],{18:155,10:F,40:Yt}),t(Se,[2,44]),{44:g,47:157,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},{102:[1,158],103:159,105:[1,160]},{44:g,47:161,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},{44:g,47:162,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},t(bt,[2,107],{10:[1,163],96:[1,164]}),{80:[1,165]},t(bt,[2,115],{120:167,10:[1,166],14:ie,44:ne,60:le,89:he,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z}),t(bt,[2,117],{10:[1,168]}),t(Mt,[2,183]),t(Mt,[2,170]),t(Mt,[2,171]),t(Mt,[2,172]),t(Mt,[2,173]),t(Mt,[2,174]),t(Mt,[2,175]),t(Mt,[2,176]),t(Mt,[2,177]),t(Mt,[2,178]),t(Mt,[2,179]),t(Mt,[2,180]),{44:g,47:169,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},{30:170,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:178,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:180,50:[1,179],67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:181,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:182,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:183,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{109:[1,184]},{30:185,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:186,65:[1,187],67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:188,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:189,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:190,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},t(ae,[2,182]),t(i,[2,20]),t(Oe,[2,25]),t(Q,[2,46],{39:191,18:192,10:F,40:j}),t(ge,[2,73],{10:[1,193]}),{10:[1,194]},{30:195,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{77:[1,196],79:197,116:$e,119:Re},t(dn,[2,79]),t(dn,[2,81]),t(dn,[2,82]),t(dn,[2,168]),t(dn,[2,169]),{76:198,79:120,80:ze,81:He,116:$e,119:Re},t(Ie,[2,84]),{8:z,9:$,10:be,11:H,12:W,14:de,21:200,27:re,29:[1,199],32:oe,44:V,60:xe,75:q,83:140,84:pe,85:ve,86:Pe,87:_e,88:we,89:Ve,90:De,91:201,105:qe,109:at,111:Rt,114:st,115:Ue,116:ct},t(Tt,[2,101]),t(Tt,[2,103]),t(Tt,[2,104]),t(Tt,[2,157]),t(Tt,[2,158]),t(Tt,[2,159]),t(Tt,[2,160]),t(Tt,[2,161]),t(Tt,[2,162]),t(Tt,[2,163]),t(Tt,[2,164]),t(Tt,[2,165]),t(Tt,[2,166]),t(Tt,[2,167]),t(Tt,[2,90]),t(Tt,[2,91]),t(Tt,[2,92]),t(Tt,[2,93]),t(Tt,[2,94]),t(Tt,[2,95]),t(Tt,[2,96]),t(Tt,[2,97]),t(Tt,[2,98]),t(Tt,[2,99]),t(Tt,[2,100]),{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,202],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:w,88:C,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L,121:R,122:O,123:M,124:B},{10:F,18:203},{44:[1,204]},t(Se,[2,43]),{10:[1,205],44:g,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:112,114:D,115:k,116:L},{10:[1,206]},{10:[1,207],106:[1,208]},t(On,[2,128]),{10:[1,209],44:g,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:112,114:D,115:k,116:L},{10:[1,210],44:g,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:112,114:D,115:k,116:L},{80:[1,211]},t(bt,[2,109],{10:[1,212]}),t(bt,[2,111],{10:[1,213]}),{80:[1,214]},t(Mt,[2,184]),{80:[1,215],98:[1,216]},t(Se,[2,55],{113:112,44:g,60:y,89:T,102:E,105:A,106:S,109:_,111:I,114:D,115:k,116:L}),{31:[1,217],67:xt,82:218,116:ft,117:yt,118:nt},t(tn,[2,86]),t(tn,[2,88]),t(tn,[2,89]),t(tn,[2,153]),t(tn,[2,154]),t(tn,[2,155]),t(tn,[2,156]),{49:[1,219],67:xt,82:218,116:ft,117:yt,118:nt},{30:220,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{51:[1,221],67:xt,82:218,116:ft,117:yt,118:nt},{53:[1,222],67:xt,82:218,116:ft,117:yt,118:nt},{55:[1,223],67:xt,82:218,116:ft,117:yt,118:nt},{57:[1,224],67:xt,82:218,116:ft,117:yt,118:nt},{60:[1,225]},{64:[1,226],67:xt,82:218,116:ft,117:yt,118:nt},{66:[1,227],67:xt,82:218,116:ft,117:yt,118:nt},{30:228,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{31:[1,229],67:xt,82:218,116:ft,117:yt,118:nt},{67:xt,69:[1,230],71:[1,231],82:218,116:ft,117:yt,118:nt},{67:xt,69:[1,233],71:[1,232],82:218,116:ft,117:yt,118:nt},t(Q,[2,45],{18:155,10:F,40:Yt}),t(Q,[2,47],{44:ot}),t(ge,[2,75]),t(ge,[2,74]),{62:[1,234],67:xt,82:218,116:ft,117:yt,118:nt},t(ge,[2,77]),t(dn,[2,80]),{77:[1,235],79:197,116:$e,119:Re},{30:236,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},t(We,a,{5:237}),t(Tt,[2,102]),t(P,[2,35]),{43:238,44:g,45:39,47:40,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},{10:F,18:239},{10:_r,60:Dr,84:Pn,92:240,105:At,107:241,108:242,109:Ce,110:tt,111:St,112:mr},{10:_r,60:Dr,84:Pn,92:251,104:[1,252],105:At,107:241,108:242,109:Ce,110:tt,111:St,112:mr},{10:_r,60:Dr,84:Pn,92:253,104:[1,254],105:At,107:241,108:242,109:Ce,110:tt,111:St,112:mr},{105:[1,255]},{10:_r,60:Dr,84:Pn,92:256,105:At,107:241,108:242,109:Ce,110:tt,111:St,112:mr},{44:g,47:257,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},t(bt,[2,108]),{80:[1,258]},{80:[1,259],98:[1,260]},t(bt,[2,116]),t(bt,[2,118],{10:[1,261]}),t(bt,[2,119]),t(ce,[2,56]),t(tn,[2,87]),t(ce,[2,57]),{51:[1,262],67:xt,82:218,116:ft,117:yt,118:nt},t(ce,[2,64]),t(ce,[2,59]),t(ce,[2,60]),t(ce,[2,61]),{109:[1,263]},t(ce,[2,63]),t(ce,[2,65]),{66:[1,264],67:xt,82:218,116:ft,117:yt,118:nt},t(ce,[2,67]),t(ce,[2,68]),t(ce,[2,70]),t(ce,[2,69]),t(ce,[2,71]),t([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),t(ge,[2,78]),{31:[1,265],67:xt,82:218,116:ft,117:yt,118:nt},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,266],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:w,88:C,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L,121:R,122:O,123:M,124:B},t(Se,[2,53]),{43:267,44:g,45:39,47:40,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},t(bt,[2,121],{106:rn}),t(gn,[2,130],{108:269,10:_r,60:Dr,84:Pn,105:At,109:Ce,110:tt,111:St,112:mr}),t(Zr,[2,132]),t(Zr,[2,134]),t(Zr,[2,135]),t(Zr,[2,136]),t(Zr,[2,137]),t(Zr,[2,138]),t(Zr,[2,139]),t(Zr,[2,140]),t(Zr,[2,141]),t(bt,[2,122],{106:rn}),{10:[1,270]},t(bt,[2,123],{106:rn}),{10:[1,271]},t(On,[2,129]),t(bt,[2,105],{106:rn}),t(bt,[2,106],{113:112,44:g,60:y,89:T,102:E,105:A,106:S,109:_,111:I,114:D,115:k,116:L}),t(bt,[2,110]),t(bt,[2,112],{10:[1,272]}),t(bt,[2,113]),{98:[1,273]},{51:[1,274]},{62:[1,275]},{66:[1,276]},{8:z,9:$,11:H,21:277},t(P,[2,34]),t(Se,[2,52]),{10:_r,60:Dr,84:Pn,105:At,107:278,108:242,109:Ce,110:tt,111:St,112:mr},t(Zr,[2,133]),{14:ie,44:ne,60:le,89:he,101:279,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z,120:87},{14:ie,44:ne,60:le,89:he,101:280,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z,120:87},{98:[1,281]},t(bt,[2,120]),t(ce,[2,58]),{30:282,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},t(ce,[2,66]),t(We,a,{5:283}),t(gn,[2,131],{108:269,10:_r,60:Dr,84:Pn,105:At,109:Ce,110:tt,111:St,112:mr}),t(bt,[2,126],{120:167,10:[1,284],14:ie,44:ne,60:le,89:he,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z}),t(bt,[2,127],{120:167,10:[1,285],14:ie,44:ne,60:le,89:he,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z}),t(bt,[2,114]),{31:[1,286],67:xt,82:218,116:ft,117:yt,118:nt},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,287],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:w,88:C,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L,121:R,122:O,123:M,124:B},{10:_r,60:Dr,84:Pn,92:288,105:At,107:241,108:242,109:Ce,110:tt,111:St,112:mr},{10:_r,60:Dr,84:Pn,92:289,105:At,107:241,108:242,109:Ce,110:tt,111:St,112:mr},t(ce,[2,62]),t(P,[2,33]),t(bt,[2,124],{106:rn}),t(bt,[2,125],{106:rn})],defaultActions:{},parseError:o(function(et,mt){if(mt.recoverable)this.trace(et);else{var Kt=new Error(et);throw Kt.hash=mt,Kt}},"parseError"),parse:o(function(et){var mt=this,Kt=[0],lt=[],Cn=[null],ye=[],Vf=this.table,Te="",wi=0,TF=0,kF=0,M2e=2,EF=1,I2e=ye.slice.call(arguments,1),Xi=Object.create(this.lexer),Uf={yy:{}};for(var xC in this.yy)Object.prototype.hasOwnProperty.call(this.yy,xC)&&(Uf.yy[xC]=this.yy[xC]);Xi.setInput(et,Uf.yy),Uf.yy.lexer=Xi,Uf.yy.parser=this,typeof Xi.yylloc>"u"&&(Xi.yylloc={});var bC=Xi.yylloc;ye.push(bC);var O2e=Xi.options&&Xi.options.ranges;typeof Uf.yy.parseError=="function"?this.parseError=Uf.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function wnt(Ws){Kt.length=Kt.length-2*Ws,Cn.length=Cn.length-Ws,ye.length=ye.length-Ws}o(wnt,"popStack");function P2e(){var Ws;return Ws=lt.pop()||Xi.lex()||EF,typeof Ws!="number"&&(Ws instanceof Array&&(lt=Ws,Ws=lt.pop()),Ws=mt.symbols_[Ws]||Ws),Ws}o(P2e,"lex");for(var Wa,wC,Hf,xo,Tnt,TC,Jp={},_4,Jc,SF,D4;;){if(Hf=Kt[Kt.length-1],this.defaultActions[Hf]?xo=this.defaultActions[Hf]:((Wa===null||typeof Wa>"u")&&(Wa=P2e()),xo=Vf[Hf]&&Vf[Hf][Wa]),typeof xo>"u"||!xo.length||!xo[0]){var kC="";D4=[];for(_4 in Vf[Hf])this.terminals_[_4]&&_4>M2e&&D4.push("'"+this.terminals_[_4]+"'");Xi.showPosition?kC="Parse error on line "+(wi+1)+`: +`+Xi.showPosition()+` +Expecting `+D4.join(", ")+", got '"+(this.terminals_[Wa]||Wa)+"'":kC="Parse error on line "+(wi+1)+": Unexpected "+(Wa==EF?"end of input":"'"+(this.terminals_[Wa]||Wa)+"'"),this.parseError(kC,{text:Xi.match,token:this.terminals_[Wa]||Wa,line:Xi.yylineno,loc:bC,expected:D4})}if(xo[0]instanceof Array&&xo.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Hf+", token: "+Wa);switch(xo[0]){case 1:Kt.push(Wa),Cn.push(Xi.yytext),ye.push(Xi.yylloc),Kt.push(xo[1]),Wa=null,wC?(Wa=wC,wC=null):(TF=Xi.yyleng,Te=Xi.yytext,wi=Xi.yylineno,bC=Xi.yylloc,kF>0&&kF--);break;case 2:if(Jc=this.productions_[xo[1]][1],Jp.$=Cn[Cn.length-Jc],Jp._$={first_line:ye[ye.length-(Jc||1)].first_line,last_line:ye[ye.length-1].last_line,first_column:ye[ye.length-(Jc||1)].first_column,last_column:ye[ye.length-1].last_column},O2e&&(Jp._$.range=[ye[ye.length-(Jc||1)].range[0],ye[ye.length-1].range[1]]),TC=this.performAction.apply(Jp,[Te,TF,wi,Uf.yy,xo[1],Cn,ye].concat(I2e)),typeof TC<"u")return TC;Jc&&(Kt=Kt.slice(0,-1*Jc*2),Cn=Cn.slice(0,-1*Jc),ye=ye.slice(0,-1*Jc)),Kt.push(this.productions_[xo[1]][0]),Cn.push(Jp.$),ye.push(Jp._$),SF=Vf[Kt[Kt.length-2]][Kt[Kt.length-1]],Kt.push(SF);break;case 3:return!0}}return!0},"parse")},Zn=function(){var Hr={EOF:1,parseError:o(function(mt,Kt){if(this.yy.parser)this.yy.parser.parseError(mt,Kt);else throw new Error(mt)},"parseError"),setInput:o(function(et,mt){return this.yy=mt||this.yy||{},this._input=et,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},"setInput"),input:o(function(){var et=this._input[0];this.yytext+=et,this.yyleng++,this.offset++,this.match+=et,this.matched+=et;var mt=et.match(/(?:\r\n?|\n).*/g);return mt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),et},"input"),unput:o(function(et){var mt=et.length,Kt=et.split(/(?:\r\n?|\n)/g);this._input=et+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-mt),this.offset-=mt;var lt=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),Kt.length-1&&(this.yylineno-=Kt.length-1);var Cn=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:Kt?(Kt.length===lt.length?this.yylloc.first_column:0)+lt[lt.length-Kt.length].length-Kt[0].length:this.yylloc.first_column-mt},this.options.ranges&&(this.yylloc.range=[Cn[0],Cn[0]+this.yyleng-mt]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(et){this.unput(this.match.slice(et))},"less"),pastInput:o(function(){var et=this.matched.substr(0,this.matched.length-this.match.length);return(et.length>20?"...":"")+et.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var et=this.match;return et.length<20&&(et+=this._input.substr(0,20-et.length)),(et.substr(0,20)+(et.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var et=this.pastInput(),mt=new Array(et.length+1).join("-");return et+this.upcomingInput()+` +`+mt+"^"},"showPosition"),test_match:o(function(et,mt){var Kt,lt,Cn;if(this.options.backtrack_lexer&&(Cn={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&&(Cn.yylloc.range=this.yylloc.range.slice(0))),lt=et[0].match(/(?:\r\n?|\n).*/g),lt&&(this.yylineno+=lt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:lt?lt[lt.length-1].length-lt[lt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+et[0].length},this.yytext+=et[0],this.match+=et[0],this.matches=et,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(et[0].length),this.matched+=et[0],Kt=this.performAction.call(this,this.yy,this,mt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Kt)return Kt;if(this._backtrack){for(var ye in Cn)this[ye]=Cn[ye];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var et,mt,Kt,lt;this._more||(this.yytext="",this.match="");for(var Cn=this._currentRules(),ye=0;yemt[0].length)){if(mt=Kt,lt=ye,this.options.backtrack_lexer){if(et=this.test_match(Kt,Cn[ye]),et!==!1)return et;if(this._backtrack){mt=!1;continue}else return!1}else if(!this.options.flex)break}return mt?(et=this.test_match(mt,Cn[lt]),et!==!1?et:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var mt=this.next();return mt||this.lex()},"lex"),begin:o(function(mt){this.conditionStack.push(mt)},"begin"),popState:o(function(){var mt=this.conditionStack.length-1;return mt>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(mt){return mt=this.conditionStack.length-1-Math.abs(mt||0),mt>=0?this.conditionStack[mt]:"INITIAL"},"topState"),pushState:o(function(mt){this.begin(mt)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(mt,Kt,lt,Cn){var ye=Cn;switch(lt){case 0:return this.begin("acc_title"),34;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),36;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),Kt.yytext="",40;break;case 8:return this.pushState("shapeDataStr"),40;break;case 9:return this.popState(),40;break;case 10:let Vf=/\n\s*/g;return Kt.yytext=Kt.yytext.replace(Vf,"
    "),40;break;case 11:return 40;case 12:this.popState();break;case 13:this.begin("callbackname");break;case 14:this.popState();break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 95;case 17:this.popState();break;case 18:return 96;case 19:return"MD_STR";case 20:this.popState();break;case 21:this.begin("md_string");break;case 22:return"STR";case 23:this.popState();break;case 24:this.pushState("string");break;case 25:return 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 33:this.popState();break;case 34:return 88;case 35:return mt.lex.firstGraph()&&this.begin("dir"),12;break;case 36:return mt.lex.firstGraph()&&this.begin("dir"),12;break;case 37:return mt.lex.firstGraph()&&this.begin("dir"),12;break;case 38:return 27;case 39:return 32;case 40:return 98;case 41:return 98;case 42:return 98;case 43:return 98;case 44:return this.popState(),13;break;case 45:return this.popState(),14;break;case 46:return this.popState(),14;break;case 47:return this.popState(),14;break;case 48:return this.popState(),14;break;case 49:return this.popState(),14;break;case 50:return this.popState(),14;break;case 51:return this.popState(),14;break;case 52:return this.popState(),14;break;case 53:return this.popState(),14;break;case 54:return this.popState(),14;break;case 55:return 121;case 56:return 122;case 57:return 123;case 58:return 124;case 59:return 78;case 60:return 105;case 61:return 111;case 62:return 46;case 63:return 60;case 64:return 44;case 65:return 8;case 66:return 106;case 67:return 115;case 68:return this.popState(),77;break;case 69:return this.pushState("edgeText"),75;break;case 70:return 119;case 71:return this.popState(),77;break;case 72:return this.pushState("thickEdgeText"),75;break;case 73:return 119;case 74:return this.popState(),77;break;case 75:return this.pushState("dottedEdgeText"),75;break;case 76:return 119;case 77:return 77;case 78:return this.popState(),53;break;case 79:return"TEXT";case 80:return this.pushState("ellipseText"),52;break;case 81:return this.popState(),55;break;case 82:return this.pushState("text"),54;break;case 83:return this.popState(),57;break;case 84:return this.pushState("text"),56;break;case 85:return 58;case 86:return this.pushState("text"),67;break;case 87:return this.popState(),64;break;case 88:return this.pushState("text"),63;break;case 89:return this.popState(),49;break;case 90:return this.pushState("text"),48;break;case 91:return this.popState(),69;break;case 92:return this.popState(),71;break;case 93:return 117;case 94:return this.pushState("trapText"),68;break;case 95:return this.pushState("trapText"),70;break;case 96:return 118;case 97:return 67;case 98:return 90;case 99:return"SEP";case 100:return 89;case 101:return 115;case 102:return 111;case 103:return 44;case 104:return 109;case 105:return 114;case 106:return 116;case 107:return this.popState(),62;break;case 108:return this.pushState("text"),62;break;case 109:return this.popState(),51;break;case 110:return this.pushState("text"),50;break;case 111:return this.popState(),31;break;case 112:return this.pushState("text"),29;break;case 113:return this.popState(),66;break;case 114:return this.pushState("text"),65;break;case 115:return"TEXT";case 116:return"QUOTE";case 117:return 9;case 118:return 10;case 119:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-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])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeData:{rules:[8,11,12,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackargs:{rules:[17,18,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackname:{rules:[14,15,16,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},href:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},click:{rules:[21,24,33,34,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dottedEdgeText:{rules:[21,24,74,76,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},thickEdgeText:{rules:[21,24,71,73,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},edgeText:{rules:[21,24,68,70,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},trapText:{rules:[21,24,77,80,82,84,88,90,91,92,93,94,95,108,110,112,114],inclusive:!1},ellipseText:{rules:[21,24,77,78,79,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},text:{rules:[21,24,77,80,81,82,83,84,87,88,89,90,94,95,107,108,109,110,111,112,113,114,115],inclusive:!1},vertex:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr:{rules:[3,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_title:{rules:[1,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},md_string:{rules:[19,20,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},string:{rules:[21,22,23,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,71,72,74,75,77,80,82,84,85,86,88,90,94,95,96,97,98,99,100,101,102,103,104,105,106,108,110,112,114,116,117,118,119],inclusive:!0}}};return Hr}();Ni.lexer=Zn;function Sn(){this.yy={}}return o(Sn,"Parser"),Sn.prototype=Ni,Ni.Parser=Sn,new Sn}();xR.parser=xR;bR=xR});var Uie,Hie,Wie=N(()=>{"use strict";Vie();Uie=Object.assign({},bR);Uie.parse=t=>{let e=t.replace(/}\s*\n/g,`} +`);return bR.parse(e)};Hie=Uie});var gOe,yOe,qie,Yie=N(()=>{"use strict";Ys();gOe=o((t,e)=>{let r=Kf,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return qa(n,i,a,e)},"fade"),yOe=o(t=>`.label { + font-family: ${t.fontFamily}; + color: ${t.nodeTextColor||t.textColor}; + } + .cluster-label text { + fill: ${t.titleColor}; + } + .cluster-label span { + color: ${t.titleColor}; + } + .cluster-label span p { + background-color: transparent; + } + + .label text,span { + fill: ${t.nodeTextColor||t.textColor}; + color: ${t.nodeTextColor||t.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + stroke-width: 1px; + } + .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .katex path { + fill: #000; + stroke: #000; + stroke-width: 1px; + } + + .rough-node .label,.node .label, .image-shape .label, .icon-shape .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + + .root .anchor path { + fill: ${t.lineColor} !important; + stroke-width: 0; + stroke: ${t.lineColor}; + } + + .arrowheadPath { + fill: ${t.arrowheadColor}; + } + + .edgePath .path { + stroke: ${t.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${t.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${t.edgeLabelBackground}; + p { + background-color: ${t.edgeLabelBackground}; + } + rect { + opacity: 0.5; + background-color: ${t.edgeLabelBackground}; + fill: ${t.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${gOe(t.edgeLabelBackground,.5)}; + // background-color: + } + + .cluster rect { + fill: ${t.clusterBkg}; + stroke: ${t.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${t.titleColor}; + } + + .cluster span { + color: ${t.titleColor}; + } + /* .cluster div { + color: ${t.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${t.fontFamily}; + font-size: 12px; + background: ${t.tertiaryColor}; + border: 1px solid ${t.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; + } + + rect.text { + fill: none; + stroke-width: 0; + } + + .icon-shape, .image-shape { + background-color: ${t.edgeLabelBackground}; + p { + background-color: ${t.edgeLabelBackground}; + padding: 2px; + } + rect { + opacity: 0.5; + background-color: ${t.edgeLabelBackground}; + fill: ${t.edgeLabelBackground}; + } + text-align: center; + } +`,"getStyles"),qie=yOe});var ik={};hr(ik,{diagram:()=>vOe});var vOe,ak=N(()=>{"use strict";zt();qZ();Gie();Wie();Yie();vOe={parser:Hie,get db(){return new Uw},renderer:zie,styles:qie,init:o(t=>{t.flowchart||(t.flowchart={}),t.layout&&Yy({layout:t.layout}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,Yy({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}})},"init")}});var wR,Zie,Jie=N(()=>{"use strict";wR=function(){var t=o(function(J,se,ue,Z){for(ue=ue||{},Z=J.length;Z--;ue[J[Z]]=se);return ue},"o"),e=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,50],r=[1,10],n=[1,11],i=[1,12],a=[1,13],s=[1,20],l=[1,21],u=[1,22],h=[1,23],f=[1,24],d=[1,19],p=[1,25],m=[1,26],g=[1,18],y=[1,33],v=[1,34],x=[1,35],b=[1,36],w=[1,37],C=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,50,63,64,65,66,67],T=[1,42],E=[1,43],A=[1,52],S=[40,50,68,69],_=[1,63],I=[1,61],D=[1,58],k=[1,62],L=[1,64],R=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,63,64,65,66,67],O=[63,64,65,66,67],M=[1,81],B=[1,80],F=[1,78],P=[1,79],z=[6,10,42,47],$=[6,10,13,41,42,47,48,49],H=[1,89],Q=[1,88],j=[1,87],ie=[19,56],ne=[1,98],le=[1,97],he=[19,56,58,60],K={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,attribute:51,attributeType:52,attributeName:53,attributeKeyTypeList:54,attributeComment:55,ATTRIBUTE_WORD:56,attributeKeyType:57,",":58,ATTRIBUTE_KEY:59,COMMENT:60,cardinality:61,relType:62,ZERO_OR_ONE:63,ZERO_OR_MORE:64,ONE_OR_MORE:65,ONLY_ONE:66,MD_PARENT:67,NON_IDENTIFYING:68,IDENTIFYING:69,WORD:70,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",56:"ATTRIBUTE_WORD",58:",",59:"ATTRIBUTE_KEY",60:"COMMENT",63:"ZERO_OR_ONE",64:"ZERO_OR_MORE",65:"ONE_OR_MORE",66:"ONLY_ONE",67:"MD_PARENT",68:"NON_IDENTIFYING",69:"IDENTIFYING",70:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[18,1],[18,2],[51,2],[51,3],[51,3],[51,4],[52,1],[53,1],[54,1],[54,3],[57,1],[55,1],[12,3],[61,1],[61,1],[61,1],[61,1],[61,1],[62,1],[62,1],[14,1],[14,1],[14,1]],performAction:o(function(se,ue,Z,Se,ce,ae,Oe){var ge=ae.length-1;switch(ce){case 1:break;case 2:this.$=[];break;case 3:ae[ge-1].push(ae[ge]),this.$=ae[ge-1];break;case 4:case 5:this.$=ae[ge];break;case 6:case 7:this.$=[];break;case 8:Se.addEntity(ae[ge-4]),Se.addEntity(ae[ge-2]),Se.addRelationship(ae[ge-4],ae[ge],ae[ge-2],ae[ge-3]);break;case 9:Se.addEntity(ae[ge-8]),Se.addEntity(ae[ge-4]),Se.addRelationship(ae[ge-8],ae[ge],ae[ge-4],ae[ge-5]),Se.setClass([ae[ge-8]],ae[ge-6]),Se.setClass([ae[ge-4]],ae[ge-2]);break;case 10:Se.addEntity(ae[ge-6]),Se.addEntity(ae[ge-2]),Se.addRelationship(ae[ge-6],ae[ge],ae[ge-2],ae[ge-3]),Se.setClass([ae[ge-6]],ae[ge-4]);break;case 11:Se.addEntity(ae[ge-6]),Se.addEntity(ae[ge-4]),Se.addRelationship(ae[ge-6],ae[ge],ae[ge-4],ae[ge-5]),Se.setClass([ae[ge-4]],ae[ge-2]);break;case 12:Se.addEntity(ae[ge-3]),Se.addAttributes(ae[ge-3],ae[ge-1]);break;case 13:Se.addEntity(ae[ge-5]),Se.addAttributes(ae[ge-5],ae[ge-1]),Se.setClass([ae[ge-5]],ae[ge-3]);break;case 14:Se.addEntity(ae[ge-2]);break;case 15:Se.addEntity(ae[ge-4]),Se.setClass([ae[ge-4]],ae[ge-2]);break;case 16:Se.addEntity(ae[ge]);break;case 17:Se.addEntity(ae[ge-2]),Se.setClass([ae[ge-2]],ae[ge]);break;case 18:Se.addEntity(ae[ge-6],ae[ge-4]),Se.addAttributes(ae[ge-6],ae[ge-1]);break;case 19:Se.addEntity(ae[ge-8],ae[ge-6]),Se.addAttributes(ae[ge-8],ae[ge-1]),Se.setClass([ae[ge-8]],ae[ge-3]);break;case 20:Se.addEntity(ae[ge-5],ae[ge-3]);break;case 21:Se.addEntity(ae[ge-7],ae[ge-5]),Se.setClass([ae[ge-7]],ae[ge-2]);break;case 22:Se.addEntity(ae[ge-3],ae[ge-1]);break;case 23:Se.addEntity(ae[ge-5],ae[ge-3]),Se.setClass([ae[ge-5]],ae[ge]);break;case 24:case 25:this.$=ae[ge].trim(),Se.setAccTitle(this.$);break;case 26:case 27:this.$=ae[ge].trim(),Se.setAccDescription(this.$);break;case 32:Se.setDirection("TB");break;case 33:Se.setDirection("BT");break;case 34:Se.setDirection("RL");break;case 35:Se.setDirection("LR");break;case 36:this.$=ae[ge-3],Se.addClass(ae[ge-2],ae[ge-1]);break;case 37:case 38:case 56:case 64:this.$=[ae[ge]];break;case 39:case 40:this.$=ae[ge-2].concat([ae[ge]]);break;case 41:this.$=ae[ge-2],Se.setClass(ae[ge-1],ae[ge]);break;case 42:this.$=ae[ge-3],Se.addCssStyles(ae[ge-2],ae[ge-1]);break;case 43:this.$=[ae[ge]];break;case 44:ae[ge-2].push(ae[ge]),this.$=ae[ge-2];break;case 46:this.$=ae[ge-1]+ae[ge];break;case 54:case 76:case 77:this.$=ae[ge].replace(/"/g,"");break;case 55:case 78:this.$=ae[ge];break;case 57:ae[ge].push(ae[ge-1]),this.$=ae[ge];break;case 58:this.$={type:ae[ge-1],name:ae[ge]};break;case 59:this.$={type:ae[ge-2],name:ae[ge-1],keys:ae[ge]};break;case 60:this.$={type:ae[ge-2],name:ae[ge-1],comment:ae[ge]};break;case 61:this.$={type:ae[ge-3],name:ae[ge-2],keys:ae[ge-1],comment:ae[ge]};break;case 62:case 63:case 66:this.$=ae[ge];break;case 65:ae[ge-2].push(ae[ge]),this.$=ae[ge-2];break;case 67:this.$=ae[ge].replace(/"/g,"");break;case 68:this.$={cardA:ae[ge],relType:ae[ge-1],cardB:ae[ge-2]};break;case 69:this.$=Se.Cardinality.ZERO_OR_ONE;break;case 70:this.$=Se.Cardinality.ZERO_OR_MORE;break;case 71:this.$=Se.Cardinality.ONE_OR_MORE;break;case 72:this.$=Se.Cardinality.ONLY_ONE;break;case 73:this.$=Se.Cardinality.MD_PARENT;break;case 74:this.$=Se.Identification.NON_IDENTIFYING;break;case 75:this.$=Se.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:f,40:d,43:p,44:m,50:g},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:27,11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:f,40:d,43:p,44:m,50:g},t(e,[2,5]),t(e,[2,6]),t(e,[2,16],{12:28,61:32,15:[1,29],17:[1,30],20:[1,31],63:y,64:v,65:x,66:b,67:w}),{23:[1,38]},{25:[1,39]},{27:[1,40]},t(e,[2,27]),t(e,[2,28]),t(e,[2,29]),t(e,[2,30]),t(e,[2,31]),t(C,[2,54]),t(C,[2,55]),t(e,[2,32]),t(e,[2,33]),t(e,[2,34]),t(e,[2,35]),{16:41,40:T,41:E},{16:44,40:T,41:E},{16:45,40:T,41:E},t(e,[2,4]),{11:46,40:d,50:g},{16:47,40:T,41:E},{18:48,19:[1,49],51:50,52:51,56:A},{11:53,40:d,50:g},{62:54,68:[1,55],69:[1,56]},t(S,[2,69]),t(S,[2,70]),t(S,[2,71]),t(S,[2,72]),t(S,[2,73]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),{13:_,38:57,41:I,42:D,45:59,46:60,48:k,49:L},t(R,[2,37]),t(R,[2,38]),{16:65,40:T,41:E,42:D},{13:_,38:66,41:I,42:D,45:59,46:60,48:k,49:L},{13:[1,67],15:[1,68]},t(e,[2,17],{61:32,12:69,17:[1,70],42:D,63:y,64:v,65:x,66:b,67:w}),{19:[1,71]},t(e,[2,14]),{18:72,19:[2,56],51:50,52:51,56:A},{53:73,56:[1,74]},{56:[2,62]},{21:[1,75]},{61:76,63:y,64:v,65:x,66:b,67:w},t(O,[2,74]),t(O,[2,75]),{6:M,10:B,39:77,42:F,47:P},{40:[1,82],41:[1,83]},t(z,[2,43],{46:84,13:_,41:I,48:k,49:L}),t($,[2,45]),t($,[2,50]),t($,[2,51]),t($,[2,52]),t($,[2,53]),t(e,[2,41],{42:D}),{6:M,10:B,39:85,42:F,47:P},{14:86,40:H,50:Q,70:j},{16:90,40:T,41:E},{11:91,40:d,50:g},{18:92,19:[1,93],51:50,52:51,56:A},t(e,[2,12]),{19:[2,57]},t(ie,[2,58],{54:94,55:95,57:96,59:ne,60:le}),t([19,56,59,60],[2,63]),t(e,[2,22],{15:[1,100],17:[1,99]}),t([40,50],[2,68]),t(e,[2,36]),{13:_,41:I,45:101,46:60,48:k,49:L},t(e,[2,47]),t(e,[2,48]),t(e,[2,49]),t(R,[2,39]),t(R,[2,40]),t($,[2,46]),t(e,[2,42]),t(e,[2,8]),t(e,[2,76]),t(e,[2,77]),t(e,[2,78]),{13:[1,102],42:D},{13:[1,104],15:[1,103]},{19:[1,105]},t(e,[2,15]),t(ie,[2,59],{55:106,58:[1,107],60:le}),t(ie,[2,60]),t(he,[2,64]),t(ie,[2,67]),t(he,[2,66]),{18:108,19:[1,109],51:50,52:51,56:A},{16:110,40:T,41:E},t(z,[2,44],{46:84,13:_,41:I,48:k,49:L}),{14:111,40:H,50:Q,70:j},{16:112,40:T,41:E},{14:113,40:H,50:Q,70:j},t(e,[2,13]),t(ie,[2,61]),{57:114,59:ne},{19:[1,115]},t(e,[2,20]),t(e,[2,23],{17:[1,116],42:D}),t(e,[2,11]),{13:[1,117],42:D},t(e,[2,10]),t(he,[2,65]),t(e,[2,18]),{18:118,19:[1,119],51:50,52:51,56:A},{14:120,40:H,50:Q,70:j},{19:[1,121]},t(e,[2,21]),t(e,[2,9]),t(e,[2,19])],defaultActions:{52:[2,62],72:[2,57]},parseError:o(function(se,ue){if(ue.recoverable)this.trace(se);else{var Z=new Error(se);throw Z.hash=ue,Z}},"parseError"),parse:o(function(se){var ue=this,Z=[0],Se=[],ce=[null],ae=[],Oe=this.table,ge="",ze=0,He=0,$e=0,Re=2,Ie=1,be=ae.slice.call(arguments,1),W=Object.create(this.lexer),de={yy:{}};for(var re in this.yy)Object.prototype.hasOwnProperty.call(this.yy,re)&&(de.yy[re]=this.yy[re]);W.setInput(se,de.yy),de.yy.lexer=W,de.yy.parser=this,typeof W.yylloc>"u"&&(W.yylloc={});var oe=W.yylloc;ae.push(oe);var V=W.options&&W.options.ranges;typeof de.yy.parseError=="function"?this.parseError=de.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xe(ct){Z.length=Z.length-2*ct,ce.length=ce.length-ct,ae.length=ae.length-ct}o(xe,"popStack");function q(){var ct;return ct=Se.pop()||W.lex()||Ie,typeof ct!="number"&&(ct instanceof Array&&(Se=ct,ct=Se.pop()),ct=ue.symbols_[ct]||ct),ct}o(q,"lex");for(var pe,ve,Pe,_e,we,Ve,De={},qe,at,Rt,st;;){if(Pe=Z[Z.length-1],this.defaultActions[Pe]?_e=this.defaultActions[Pe]:((pe===null||typeof pe>"u")&&(pe=q()),_e=Oe[Pe]&&Oe[Pe][pe]),typeof _e>"u"||!_e.length||!_e[0]){var Ue="";st=[];for(qe in Oe[Pe])this.terminals_[qe]&&qe>Re&&st.push("'"+this.terminals_[qe]+"'");W.showPosition?Ue="Parse error on line "+(ze+1)+`: +`+W.showPosition()+` +Expecting `+st.join(", ")+", got '"+(this.terminals_[pe]||pe)+"'":Ue="Parse error on line "+(ze+1)+": Unexpected "+(pe==Ie?"end of input":"'"+(this.terminals_[pe]||pe)+"'"),this.parseError(Ue,{text:W.match,token:this.terminals_[pe]||pe,line:W.yylineno,loc:oe,expected:st})}if(_e[0]instanceof Array&&_e.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Pe+", token: "+pe);switch(_e[0]){case 1:Z.push(pe),ce.push(W.yytext),ae.push(W.yylloc),Z.push(_e[1]),pe=null,ve?(pe=ve,ve=null):(He=W.yyleng,ge=W.yytext,ze=W.yylineno,oe=W.yylloc,$e>0&&$e--);break;case 2:if(at=this.productions_[_e[1]][1],De.$=ce[ce.length-at],De._$={first_line:ae[ae.length-(at||1)].first_line,last_line:ae[ae.length-1].last_line,first_column:ae[ae.length-(at||1)].first_column,last_column:ae[ae.length-1].last_column},V&&(De._$.range=[ae[ae.length-(at||1)].range[0],ae[ae.length-1].range[1]]),Ve=this.performAction.apply(De,[ge,He,ze,de.yy,_e[1],ce,ae].concat(be)),typeof Ve<"u")return Ve;at&&(Z=Z.slice(0,-1*at*2),ce=ce.slice(0,-1*at),ae=ae.slice(0,-1*at)),Z.push(this.productions_[_e[1]][0]),ce.push(De.$),ae.push(De._$),Rt=Oe[Z[Z.length-2]][Z[Z.length-1]],Z.push(Rt);break;case 3:return!0}}return!0},"parse")},X=function(){var J={EOF:1,parseError:o(function(ue,Z){if(this.yy.parser)this.yy.parser.parseError(ue,Z);else throw new Error(ue)},"parseError"),setInput:o(function(se,ue){return this.yy=ue||this.yy||{},this._input=se,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},"setInput"),input:o(function(){var se=this._input[0];this.yytext+=se,this.yyleng++,this.offset++,this.match+=se,this.matched+=se;var ue=se.match(/(?:\r\n?|\n).*/g);return ue?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),se},"input"),unput:o(function(se){var ue=se.length,Z=se.split(/(?:\r\n?|\n)/g);this._input=se+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ue),this.offset-=ue;var Se=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),Z.length-1&&(this.yylineno-=Z.length-1);var ce=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:Z?(Z.length===Se.length?this.yylloc.first_column:0)+Se[Se.length-Z.length].length-Z[0].length:this.yylloc.first_column-ue},this.options.ranges&&(this.yylloc.range=[ce[0],ce[0]+this.yyleng-ue]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(se){this.unput(this.match.slice(se))},"less"),pastInput:o(function(){var se=this.matched.substr(0,this.matched.length-this.match.length);return(se.length>20?"...":"")+se.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var se=this.match;return se.length<20&&(se+=this._input.substr(0,20-se.length)),(se.substr(0,20)+(se.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var se=this.pastInput(),ue=new Array(se.length+1).join("-");return se+this.upcomingInput()+` +`+ue+"^"},"showPosition"),test_match:o(function(se,ue){var Z,Se,ce;if(this.options.backtrack_lexer&&(ce={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&&(ce.yylloc.range=this.yylloc.range.slice(0))),Se=se[0].match(/(?:\r\n?|\n).*/g),Se&&(this.yylineno+=Se.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Se?Se[Se.length-1].length-Se[Se.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+se[0].length},this.yytext+=se[0],this.match+=se[0],this.matches=se,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(se[0].length),this.matched+=se[0],Z=this.performAction.call(this,this.yy,this,ue,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Z)return Z;if(this._backtrack){for(var ae in ce)this[ae]=ce[ae];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var se,ue,Z,Se;this._more||(this.yytext="",this.match="");for(var ce=this._currentRules(),ae=0;aeue[0].length)){if(ue=Z,Se=ae,this.options.backtrack_lexer){if(se=this.test_match(Z,ce[ae]),se!==!1)return se;if(this._backtrack){ue=!1;continue}else return!1}else if(!this.options.flex)break}return ue?(se=this.test_match(ue,ce[Se]),se!==!1?se:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var ue=this.next();return ue||this.lex()},"lex"),begin:o(function(ue){this.conditionStack.push(ue)},"begin"),popState:o(function(){var ue=this.conditionStack.length-1;return ue>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(ue){return ue=this.conditionStack.length-1-Math.abs(ue||0),ue>=0?this.conditionStack[ue]:"INITIAL"},"topState"),pushState:o(function(ue){this.begin(ue)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(ue,Z,Se,ce){var ae=ce;switch(Se){case 0:return this.begin("acc_title"),24;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),26;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:break;case 13:return 8;case 14:return 50;case 15:return 70;case 16:return 4;case 17:return this.begin("block"),17;break;case 18:return 49;case 19:return 49;case 20:return 42;case 21:return 15;case 22:return 13;case 23:break;case 24:return 59;case 25:return 56;case 26:return 56;case 27:return 60;case 28:break;case 29:return this.popState(),19;break;case 30:return Z.yytext[0];case 31:return 20;case 32:return 21;case 33:return this.begin("style"),44;break;case 34:return this.popState(),10;break;case 35:break;case 36:return 13;case 37:return 42;case 38:return 49;case 39:return this.begin("style"),37;break;case 40:return 43;case 41:return 63;case 42:return 65;case 43:return 65;case 44:return 65;case 45:return 63;case 46:return 63;case 47:return 64;case 48:return 64;case 49:return 64;case 50:return 64;case 51:return 64;case 52:return 65;case 53:return 64;case 54:return 65;case 55:return 66;case 56:return 66;case 57:return 66;case 58:return 66;case 59:return 63;case 60:return 64;case 61:return 65;case 62:return 67;case 63:return 68;case 64:return 69;case 65:return 69;case 66:return 68;case 67:return 68;case 68:return 68;case 69:return 41;case 70:return 47;case 71:return 40;case 72:return 48;case 73:return Z.yytext[0];case 74:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/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,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:[0-9])/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[34,35,36,37,38,69,70],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[23,24,25,26,27,28,29,30],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33,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,71,72,73,74],inclusive:!0}}};return J}();K.lexer=X;function te(){this.yy={}}return o(te,"Parser"),te.prototype=K,K.Parser=te,new te}();wR.parser=wR;Zie=wR});var sk,eae=N(()=>{"use strict";vt();zt();mi();ir();sk=class{constructor(){this.entities=new Map;this.relationships=[];this.classes=new Map;this.direction="TB";this.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"};this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"};this.setAccTitle=Lr;this.getAccTitle=Rr;this.setAccDescription=Nr;this.getAccDescription=Mr;this.setDiagramTitle=$r;this.getDiagramTitle=Ir;this.getConfig=o(()=>me().er,"getConfig");this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"ErDB")}addEntity(e,r=""){return this.entities.has(e)?!this.entities.get(e)?.alias&&r&&(this.entities.get(e).alias=r,Y.info(`Add alias '${r}' to entity '${e}'`)):(this.entities.set(e,{id:`entity-${e}-${this.entities.size}`,label:e,attributes:[],alias:r,shape:"erBox",look:me().look??"default",cssClasses:"default",cssStyles:[]}),Y.info("Added new entity :",e)),this.entities.get(e)}getEntity(e){return this.entities.get(e)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(e,r){let n=this.addEntity(e),i;for(i=r.length-1;i>=0;i--)r[i].keys||(r[i].keys=[]),r[i].comment||(r[i].comment=""),n.attributes.push(r[i]),Y.debug("Added attribute ",r[i].name)}addRelationship(e,r,n,i){let a=this.entities.get(e),s=this.entities.get(n);if(!a||!s)return;let l={entityA:a.id,roleA:r,entityB:s.id,relSpec:i};this.relationships.push(l),Y.debug("Added new relationship :",l)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(e){this.direction=e}getCompiledStyles(e){let r=[];for(let n of e){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}addCssStyles(e,r){for(let n of e){let i=this.entities.get(n);if(!r||!i)return;for(let a of r)i.cssStyles.push(a)}}addClass(e,r){e.forEach(n=>{let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)})})}setClass(e,r){for(let n of e){let i=this.entities.get(n);if(i)for(let a of r)i.cssClasses+=" "+a}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],Ar()}getData(){let e=[],r=[],n=me();for(let a of this.entities.keys()){let s=this.entities.get(a);s&&(s.cssCompiledStyles=this.getCompiledStyles(s.cssClasses.split(" ")),e.push(s))}let i=0;for(let a of this.relationships){let s={id:$h(a.entityA,a.entityB,{prefix:"id",counter:i++}),type:"normal",curve:"basis",start:a.entityA,end:a.entityB,label:a.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:a.relSpec.cardB.toLowerCase(),arrowTypeEnd:a.relSpec.cardA.toLowerCase(),pattern:a.relSpec.relType=="IDENTIFYING"?"solid":"dashed",look:n.look};r.push(s)}return{nodes:e,edges:r,other:{},config:n,direction:"TB"}}}});var TR={};hr(TR,{draw:()=>SOe});var SOe,tae=N(()=>{"use strict";zt();vt();gm();Yd();$m();ir();dr();SOe=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing er diagram (unified)",e);let{securityLevel:i,er:a,layout:s}=me(),l=n.db.getData(),u=yc(e,i);l.type=n.type,l.layoutAlgorithm=nf(s),l.config.flowchart.nodeSpacing=a?.nodeSpacing||140,l.config.flowchart.rankSpacing=a?.rankSpacing||80,l.direction=n.db.getDirection(),l.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],l.diagramId=e,await Cc(l,u),l.layoutAlgorithm==="elk"&&u.select(".edges").lower();let h=u.selectAll('[id*="-background"]');Array.from(h).length>0&&h.each(function(){let d=Ge(this),m=d.attr("id").replace("-background",""),g=u.select(`#${CSS.escape(m)}`);if(!g.empty()){let y=g.attr("transform");d.attr("transform",y)}});let f=8;Gt.insertTitle(u,"erDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ac(u,f,"erDiagram",a?.useMaxWidth??!0)},"draw")});var COe,AOe,rae,nae=N(()=>{"use strict";Ys();COe=o((t,e)=>{let r=Kf,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return qa(n,i,a,e)},"fade"),AOe=o(t=>` + .entityBox { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + } + + .relationshipLabelBox { + fill: ${t.tertiaryColor}; + opacity: 0.7; + background-color: ${t.tertiaryColor}; + rect { + opacity: 0.5; + } + } + + .labelBkg { + background-color: ${COe(t.tertiaryColor,.5)}; + } + + .edgeLabel .label { + fill: ${t.nodeBorder}; + font-size: 14px; + } + + .label { + font-family: ${t.fontFamily}; + color: ${t.nodeTextColor||t.textColor}; + } + + .edge-pattern-dashed { + stroke-dasharray: 8,8; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon + { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + stroke-width: 1px; + } + + .relationshipLine { + stroke: ${t.lineColor}; + stroke-width: 1; + fill: none; + } + + .marker { + fill: none !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; + } +`,"getStyles"),rae=AOe});var iae={};hr(iae,{diagram:()=>_Oe});var _Oe,aae=N(()=>{"use strict";Jie();eae();tae();nae();_Oe={parser:Zie,get db(){return new sk},renderer:TR,styles:rae}});function ii(t){return typeof t=="object"&&t!==null&&typeof t.$type=="string"}function va(t){return typeof t=="object"&&t!==null&&typeof t.$refText=="string"}function kR(t){return typeof t=="object"&&t!==null&&typeof t.name=="string"&&typeof t.type=="string"&&typeof t.path=="string"}function jd(t){return typeof t=="object"&&t!==null&&ii(t.container)&&va(t.reference)&&typeof t.message=="string"}function Ll(t){return typeof t=="object"&&t!==null&&Array.isArray(t.content)}function af(t){return typeof t=="object"&&t!==null&&typeof t.tokenType=="object"}function M2(t){return Ll(t)&&typeof t.fullText=="string"}var Xd,Rl=N(()=>{"use strict";o(ii,"isAstNode");o(va,"isReference");o(kR,"isAstNodeDescription");o(jd,"isLinkingError");Xd=class{static{o(this,"AbstractAstReflection")}constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,r){return ii(e)&&this.isSubtype(e.$type,r)}isSubtype(e,r){if(e===r)return!0;let n=this.subtypes[e];n||(n=this.subtypes[e]={});let i=n[r];if(i!==void 0)return i;{let a=this.computeIsSubtype(e,r);return n[r]=a,a}}getAllSubTypes(e){let r=this.allSubtypes[e];if(r)return r;{let n=this.getAllTypes(),i=[];for(let a of n)this.isSubtype(a,e)&&i.push(a);return this.allSubtypes[e]=i,i}}};o(Ll,"isCompositeCstNode");o(af,"isLeafCstNode");o(M2,"isRootCstNode")});function NOe(t){return typeof t=="string"?t:typeof t>"u"?"undefined":typeof t.toString=="function"?t.toString():Object.prototype.toString.call(t)}function ok(t){return!!t&&typeof t[Symbol.iterator]=="function"}function en(...t){if(t.length===1){let e=t[0];if(e instanceof ao)return e;if(ok(e))return new ao(()=>e[Symbol.iterator](),r=>r.next());if(typeof e.length=="number")return new ao(()=>({index:0}),r=>r.index1?new ao(()=>({collIndex:0,arrIndex:0}),e=>{do{if(e.iterator){let r=e.iterator.next();if(!r.done)return r;e.iterator=void 0}if(e.array){if(e.arrIndex{"use strict";ao=class t{static{o(this,"StreamImpl")}constructor(e,r){this.startFn=e,this.nextFn=r}iterator(){let e={state:this.startFn(),next:o(()=>this.nextFn(e.state),"next"),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let e=this.iterator(),r=0,n=e.next();for(;!n.done;)r++,n=e.next();return r}toArray(){let e=[],r=this.iterator(),n;do n=r.next(),n.value!==void 0&&e.push(n.value);while(!n.done);return e}toSet(){return new Set(this)}toMap(e,r){let n=this.map(i=>[e?e(i):i,r?r(i):i]);return new Map(n)}toString(){return this.join()}concat(e){return new t(()=>({first:this.startFn(),firstDone:!1,iterator:e[Symbol.iterator]()}),r=>{let n;if(!r.firstDone){do if(n=this.nextFn(r.first),!n.done)return n;while(!n.done);r.firstDone=!0}do if(n=r.iterator.next(),!n.done)return n;while(!n.done);return Ia})}join(e=","){let r=this.iterator(),n="",i,a=!1;do i=r.next(),i.done||(a&&(n+=e),n+=NOe(i.value)),a=!0;while(!i.done);return n}indexOf(e,r=0){let n=this.iterator(),i=0,a=n.next();for(;!a.done;){if(i>=r&&a.value===e)return i;a=n.next(),i++}return-1}every(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(!e(n.value))return!1;n=r.next()}return!0}some(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(e(n.value))return!0;n=r.next()}return!1}forEach(e){let r=this.iterator(),n=0,i=r.next();for(;!i.done;)e(i.value,n),i=r.next(),n++}map(e){return new t(this.startFn,r=>{let{done:n,value:i}=this.nextFn(r);return n?Ia:{done:!1,value:e(i)}})}filter(e){return new t(this.startFn,r=>{let n;do if(n=this.nextFn(r),!n.done&&e(n.value))return n;while(!n.done);return Ia})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,r){let n=this.iterator(),i=r,a=n.next();for(;!a.done;)i===void 0?i=a.value:i=e(i,a.value),a=n.next();return i}reduceRight(e,r){return this.recursiveReduce(this.iterator(),e,r)}recursiveReduce(e,r,n){let i=e.next();if(i.done)return n;let a=this.recursiveReduce(e,r,n);return a===void 0?i.value:r(a,i.value)}find(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(e(n.value))return n.value;n=r.next()}}findIndex(e){let r=this.iterator(),n=0,i=r.next();for(;!i.done;){if(e(i.value))return n;i=r.next(),n++}return-1}includes(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(n.value===e)return!0;n=r.next()}return!1}flatMap(e){return new t(()=>({this:this.startFn()}),r=>{do{if(r.iterator){let a=r.iterator.next();if(a.done)r.iterator=void 0;else return a}let{done:n,value:i}=this.nextFn(r.this);if(!n){let a=e(i);if(ok(a))r.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}}while(r.iterator);return Ia})}flat(e){if(e===void 0&&(e=1),e<=0)return this;let r=e>1?this.flat(e-1):this;return new t(()=>({this:r.startFn()}),n=>{do{if(n.iterator){let s=n.iterator.next();if(s.done)n.iterator=void 0;else return s}let{done:i,value:a}=r.nextFn(n.this);if(!i)if(ok(a))n.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}while(n.iterator);return Ia})}head(){let r=this.iterator().next();if(!r.done)return r.value}tail(e=1){return new t(()=>{let r=this.startFn();for(let n=0;n({size:0,state:this.startFn()}),r=>(r.size++,r.size>e?Ia:this.nextFn(r.state)))}distinct(e){return new t(()=>({set:new Set,internalState:this.startFn()}),r=>{let n;do if(n=this.nextFn(r.internalState),!n.done){let i=e?e(n.value):n.value;if(!r.set.has(i))return r.set.add(i),n}while(!n.done);return Ia})}exclude(e,r){let n=new Set;for(let i of e){let a=r?r(i):i;n.add(a)}return this.filter(i=>{let a=r?r(i):i;return!n.has(a)})}};o(NOe,"toString");o(ok,"isIterable");I2=new ao(()=>{},()=>Ia),Ia=Object.freeze({done:!0,value:void 0});o(en,"stream");_c=class extends ao{static{o(this,"TreeStreamImpl")}constructor(e,r,n){super(()=>({iterators:n?.includeRoot?[[e][Symbol.iterator]()]:[r(e)[Symbol.iterator]()],pruned:!1}),i=>{for(i.pruned&&(i.iterators.pop(),i.pruned=!1);i.iterators.length>0;){let s=i.iterators[i.iterators.length-1].next();if(s.done)i.iterators.pop();else return i.iterators.push(r(s.value)[Symbol.iterator]()),s}return Ia})}iterator(){let e={state:this.startFn(),next:o(()=>this.nextFn(e.state),"next"),prune:o(()=>{e.state.pruned=!0},"prune"),[Symbol.iterator]:()=>e};return e}};(function(t){function e(a){return a.reduce((s,l)=>s+l,0)}o(e,"sum"),t.sum=e;function r(a){return a.reduce((s,l)=>s*l,0)}o(r,"product"),t.product=r;function n(a){return a.reduce((s,l)=>Math.min(s,l))}o(n,"min"),t.min=n;function i(a){return a.reduce((s,l)=>Math.max(s,l))}o(i,"max"),t.max=i})(zm||(zm={}))});var ck={};hr(ck,{DefaultNameRegexp:()=>lk,RangeComparison:()=>Dc,compareRange:()=>cae,findCommentNode:()=>AR,findDeclarationNodeAtOffset:()=>IOe,findLeafNodeAtOffset:()=>_R,findLeafNodeBeforeOffset:()=>uae,flattenCst:()=>MOe,getInteriorNodes:()=>BOe,getNextNode:()=>OOe,getPreviousNode:()=>fae,getStartlineNode:()=>POe,inRange:()=>CR,isChildNode:()=>SR,isCommentNode:()=>ER,streamCst:()=>Kd,toDocumentSegment:()=>Qd,tokenToRange:()=>Gm});function Kd(t){return new _c(t,e=>Ll(e)?e.content:[],{includeRoot:!0})}function MOe(t){return Kd(t).filter(af)}function SR(t,e){for(;t.container;)if(t=t.container,t===e)return!0;return!1}function Gm(t){return{start:{character:t.startColumn-1,line:t.startLine-1},end:{character:t.endColumn,line:t.endLine-1}}}function Qd(t){if(!t)return;let{offset:e,end:r,range:n}=t;return{range:n,offset:e,end:r,length:r-e}}function cae(t,e){if(t.end.linee.end.line||t.start.line===e.end.line&&t.start.character>=e.end.character)return Dc.After;let r=t.start.line>e.start.line||t.start.line===e.start.line&&t.start.character>=e.start.character,n=t.end.lineDc.After}function IOe(t,e,r=lk){if(t){if(e>0){let n=e-t.offset,i=t.text.charAt(n);r.test(i)||e--}return _R(t,e)}}function AR(t,e){if(t){let r=fae(t,!0);if(r&&ER(r,e))return r;if(M2(t)){let n=t.content.findIndex(i=>!i.hidden);for(let i=n-1;i>=0;i--){let a=t.content[i];if(ER(a,e))return a}}}}function ER(t,e){return af(t)&&e.includes(t.tokenType.name)}function _R(t,e){if(af(t))return t;if(Ll(t)){let r=hae(t,e,!1);if(r)return _R(r,e)}}function uae(t,e){if(af(t))return t;if(Ll(t)){let r=hae(t,e,!0);if(r)return uae(r,e)}}function hae(t,e,r){let n=0,i=t.content.length-1,a;for(;n<=i;){let s=Math.floor((n+i)/2),l=t.content[s];if(l.offset<=e&&l.end>e)return l;l.end<=e?(a=r?l:void 0,n=s+1):i=s-1}return a}function fae(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t);for(;n>0;){n--;let i=r.content[n];if(e||!i.hidden)return i}t=r}}function OOe(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t),i=r.content.length-1;for(;n{"use strict";Rl();Ps();o(Kd,"streamCst");o(MOe,"flattenCst");o(SR,"isChildNode");o(Gm,"tokenToRange");o(Qd,"toDocumentSegment");(function(t){t[t.Before=0]="Before",t[t.After=1]="After",t[t.OverlapFront=2]="OverlapFront",t[t.OverlapBack=3]="OverlapBack",t[t.Inside=4]="Inside",t[t.Outside=5]="Outside"})(Dc||(Dc={}));o(cae,"compareRange");o(CR,"inRange");lk=/^[\w\p{L}]$/u;o(IOe,"findDeclarationNodeAtOffset");o(AR,"findCommentNode");o(ER,"isCommentNode");o(_R,"findLeafNodeAtOffset");o(uae,"findLeafNodeBeforeOffset");o(hae,"binarySearch");o(fae,"getPreviousNode");o(OOe,"getNextNode");o(POe,"getStartlineNode");o(BOe,"getInteriorNodes");o(FOe,"getCommonParent");o(lae,"getParentChain")});function Lc(t){throw new Error("Error! The input value was not handled.")}var Zd,uk=N(()=>{"use strict";Zd=class extends Error{static{o(this,"ErrorWithLocation")}constructor(e,r){super(e?`${r} at ${e.range.start.line}:${e.range.start.character}`:r)}};o(Lc,"assertUnreachable")});var U2={};hr(U2,{AbstractElement:()=>Hm,AbstractRule:()=>Vm,AbstractType:()=>Um,Action:()=>cg,Alternatives:()=>ug,ArrayLiteral:()=>Wm,ArrayType:()=>qm,Assignment:()=>hg,BooleanLiteral:()=>Ym,CharacterRange:()=>fg,Condition:()=>O2,Conjunction:()=>Xm,CrossReference:()=>dg,Disjunction:()=>jm,EndOfFile:()=>pg,Grammar:()=>Km,GrammarImport:()=>B2,Group:()=>mg,InferredType:()=>Qm,Interface:()=>Zm,Keyword:()=>gg,LangiumGrammarAstReflection:()=>Cg,LangiumGrammarTerminals:()=>$Oe,NamedArgument:()=>F2,NegatedToken:()=>yg,Negation:()=>Jm,NumberLiteral:()=>eg,Parameter:()=>tg,ParameterReference:()=>rg,ParserRule:()=>ng,ReferenceType:()=>ig,RegexToken:()=>vg,ReturnType:()=>$2,RuleCall:()=>xg,SimpleType:()=>ag,StringLiteral:()=>sg,TerminalAlternatives:()=>bg,TerminalGroup:()=>wg,TerminalRule:()=>Jd,TerminalRuleCall:()=>Tg,Type:()=>og,TypeAttribute:()=>z2,TypeDefinition:()=>hk,UnionType:()=>lg,UnorderedGroup:()=>kg,UntilToken:()=>Eg,ValueLiteral:()=>P2,Wildcard:()=>Sg,isAbstractElement:()=>G2,isAbstractRule:()=>zOe,isAbstractType:()=>GOe,isAction:()=>Mu,isAlternatives:()=>mk,isArrayLiteral:()=>qOe,isArrayType:()=>DR,isAssignment:()=>Ml,isBooleanLiteral:()=>LR,isCharacterRange:()=>FR,isCondition:()=>VOe,isConjunction:()=>RR,isCrossReference:()=>ep,isDisjunction:()=>NR,isEndOfFile:()=>$R,isFeatureName:()=>UOe,isGrammar:()=>YOe,isGrammarImport:()=>XOe,isGroup:()=>sf,isInferredType:()=>fk,isInterface:()=>dk,isKeyword:()=>Ho,isNamedArgument:()=>jOe,isNegatedToken:()=>zR,isNegation:()=>MR,isNumberLiteral:()=>KOe,isParameter:()=>QOe,isParameterReference:()=>IR,isParserRule:()=>Oa,isPrimitiveType:()=>dae,isReferenceType:()=>OR,isRegexToken:()=>GR,isReturnType:()=>PR,isRuleCall:()=>Il,isSimpleType:()=>pk,isStringLiteral:()=>ZOe,isTerminalAlternatives:()=>VR,isTerminalGroup:()=>UR,isTerminalRule:()=>so,isTerminalRuleCall:()=>gk,isType:()=>V2,isTypeAttribute:()=>JOe,isTypeDefinition:()=>HOe,isUnionType:()=>BR,isUnorderedGroup:()=>yk,isUntilToken:()=>HR,isValueLiteral:()=>WOe,isWildcard:()=>WR,reflection:()=>lr});function zOe(t){return lr.isInstance(t,Vm)}function GOe(t){return lr.isInstance(t,Um)}function VOe(t){return lr.isInstance(t,O2)}function UOe(t){return dae(t)||t==="current"||t==="entry"||t==="extends"||t==="false"||t==="fragment"||t==="grammar"||t==="hidden"||t==="import"||t==="interface"||t==="returns"||t==="terminal"||t==="true"||t==="type"||t==="infer"||t==="infers"||t==="with"||typeof t=="string"&&/\^?[_a-zA-Z][\w_]*/.test(t)}function dae(t){return t==="string"||t==="number"||t==="boolean"||t==="Date"||t==="bigint"}function HOe(t){return lr.isInstance(t,hk)}function WOe(t){return lr.isInstance(t,P2)}function G2(t){return lr.isInstance(t,Hm)}function qOe(t){return lr.isInstance(t,Wm)}function DR(t){return lr.isInstance(t,qm)}function LR(t){return lr.isInstance(t,Ym)}function RR(t){return lr.isInstance(t,Xm)}function NR(t){return lr.isInstance(t,jm)}function YOe(t){return lr.isInstance(t,Km)}function XOe(t){return lr.isInstance(t,B2)}function fk(t){return lr.isInstance(t,Qm)}function dk(t){return lr.isInstance(t,Zm)}function jOe(t){return lr.isInstance(t,F2)}function MR(t){return lr.isInstance(t,Jm)}function KOe(t){return lr.isInstance(t,eg)}function QOe(t){return lr.isInstance(t,tg)}function IR(t){return lr.isInstance(t,rg)}function Oa(t){return lr.isInstance(t,ng)}function OR(t){return lr.isInstance(t,ig)}function PR(t){return lr.isInstance(t,$2)}function pk(t){return lr.isInstance(t,ag)}function ZOe(t){return lr.isInstance(t,sg)}function so(t){return lr.isInstance(t,Jd)}function V2(t){return lr.isInstance(t,og)}function JOe(t){return lr.isInstance(t,z2)}function BR(t){return lr.isInstance(t,lg)}function Mu(t){return lr.isInstance(t,cg)}function mk(t){return lr.isInstance(t,ug)}function Ml(t){return lr.isInstance(t,hg)}function FR(t){return lr.isInstance(t,fg)}function ep(t){return lr.isInstance(t,dg)}function $R(t){return lr.isInstance(t,pg)}function sf(t){return lr.isInstance(t,mg)}function Ho(t){return lr.isInstance(t,gg)}function zR(t){return lr.isInstance(t,yg)}function GR(t){return lr.isInstance(t,vg)}function Il(t){return lr.isInstance(t,xg)}function VR(t){return lr.isInstance(t,bg)}function UR(t){return lr.isInstance(t,wg)}function gk(t){return lr.isInstance(t,Tg)}function yk(t){return lr.isInstance(t,kg)}function HR(t){return lr.isInstance(t,Eg)}function WR(t){return lr.isInstance(t,Sg)}var $Oe,Vm,Um,O2,hk,P2,Hm,Wm,qm,Ym,Xm,jm,Km,B2,Qm,Zm,F2,Jm,eg,tg,rg,ng,ig,$2,ag,sg,Jd,og,z2,lg,cg,ug,hg,fg,dg,pg,mg,gg,yg,vg,xg,bg,wg,Tg,kg,Eg,Sg,Cg,lr,Rc=N(()=>{"use strict";Rl();$Oe={ID:/\^?[_a-zA-Z][\w_]*/,STRING:/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,NUMBER:/NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/,RegexLiteral:/\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/,WS:/\s+/,ML_COMMENT:/\/\*[\s\S]*?\*\//,SL_COMMENT:/\/\/[^\n\r]*/},Vm="AbstractRule";o(zOe,"isAbstractRule");Um="AbstractType";o(GOe,"isAbstractType");O2="Condition";o(VOe,"isCondition");o(UOe,"isFeatureName");o(dae,"isPrimitiveType");hk="TypeDefinition";o(HOe,"isTypeDefinition");P2="ValueLiteral";o(WOe,"isValueLiteral");Hm="AbstractElement";o(G2,"isAbstractElement");Wm="ArrayLiteral";o(qOe,"isArrayLiteral");qm="ArrayType";o(DR,"isArrayType");Ym="BooleanLiteral";o(LR,"isBooleanLiteral");Xm="Conjunction";o(RR,"isConjunction");jm="Disjunction";o(NR,"isDisjunction");Km="Grammar";o(YOe,"isGrammar");B2="GrammarImport";o(XOe,"isGrammarImport");Qm="InferredType";o(fk,"isInferredType");Zm="Interface";o(dk,"isInterface");F2="NamedArgument";o(jOe,"isNamedArgument");Jm="Negation";o(MR,"isNegation");eg="NumberLiteral";o(KOe,"isNumberLiteral");tg="Parameter";o(QOe,"isParameter");rg="ParameterReference";o(IR,"isParameterReference");ng="ParserRule";o(Oa,"isParserRule");ig="ReferenceType";o(OR,"isReferenceType");$2="ReturnType";o(PR,"isReturnType");ag="SimpleType";o(pk,"isSimpleType");sg="StringLiteral";o(ZOe,"isStringLiteral");Jd="TerminalRule";o(so,"isTerminalRule");og="Type";o(V2,"isType");z2="TypeAttribute";o(JOe,"isTypeAttribute");lg="UnionType";o(BR,"isUnionType");cg="Action";o(Mu,"isAction");ug="Alternatives";o(mk,"isAlternatives");hg="Assignment";o(Ml,"isAssignment");fg="CharacterRange";o(FR,"isCharacterRange");dg="CrossReference";o(ep,"isCrossReference");pg="EndOfFile";o($R,"isEndOfFile");mg="Group";o(sf,"isGroup");gg="Keyword";o(Ho,"isKeyword");yg="NegatedToken";o(zR,"isNegatedToken");vg="RegexToken";o(GR,"isRegexToken");xg="RuleCall";o(Il,"isRuleCall");bg="TerminalAlternatives";o(VR,"isTerminalAlternatives");wg="TerminalGroup";o(UR,"isTerminalGroup");Tg="TerminalRuleCall";o(gk,"isTerminalRuleCall");kg="UnorderedGroup";o(yk,"isUnorderedGroup");Eg="UntilToken";o(HR,"isUntilToken");Sg="Wildcard";o(WR,"isWildcard");Cg=class extends Xd{static{o(this,"LangiumGrammarAstReflection")}getAllTypes(){return[Hm,Vm,Um,cg,ug,Wm,qm,hg,Ym,fg,O2,Xm,dg,jm,pg,Km,B2,mg,Qm,Zm,gg,F2,yg,Jm,eg,tg,rg,ng,ig,vg,$2,xg,ag,sg,bg,wg,Jd,Tg,og,z2,hk,lg,kg,Eg,P2,Sg]}computeIsSubtype(e,r){switch(e){case cg:case ug:case hg:case fg:case dg:case pg:case mg:case gg:case yg:case vg:case xg:case bg:case wg:case Tg:case kg:case Eg:case Sg:return this.isSubtype(Hm,r);case Wm:case eg:case sg:return this.isSubtype(P2,r);case qm:case ig:case ag:case lg:return this.isSubtype(hk,r);case Ym:return this.isSubtype(O2,r)||this.isSubtype(P2,r);case Xm:case jm:case Jm:case rg:return this.isSubtype(O2,r);case Qm:case Zm:case og:return this.isSubtype(Um,r);case ng:return this.isSubtype(Vm,r)||this.isSubtype(Um,r);case Jd:return this.isSubtype(Vm,r);default:return!1}}getReferenceType(e){let r=`${e.container.$type}:${e.property}`;switch(r){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return Um;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return Vm;case"Grammar:usedGrammars":return Km;case"NamedArgument:parameter":case"ParameterReference:parameter":return tg;case"TerminalRuleCall:rule":return Jd;default:throw new Error(`${r} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case Hm:return{name:Hm,properties:[{name:"cardinality"},{name:"lookahead"}]};case Wm:return{name:Wm,properties:[{name:"elements",defaultValue:[]}]};case qm:return{name:qm,properties:[{name:"elementType"}]};case Ym:return{name:Ym,properties:[{name:"true",defaultValue:!1}]};case Xm:return{name:Xm,properties:[{name:"left"},{name:"right"}]};case jm:return{name:jm,properties:[{name:"left"},{name:"right"}]};case Km:return{name:Km,properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case B2:return{name:B2,properties:[{name:"path"}]};case Qm:return{name:Qm,properties:[{name:"name"}]};case Zm:return{name:Zm,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case F2:return{name:F2,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case Jm:return{name:Jm,properties:[{name:"value"}]};case eg:return{name:eg,properties:[{name:"value"}]};case tg:return{name:tg,properties:[{name:"name"}]};case rg:return{name:rg,properties:[{name:"parameter"}]};case ng:return{name:ng,properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case ig:return{name:ig,properties:[{name:"referenceType"}]};case $2:return{name:$2,properties:[{name:"name"}]};case ag:return{name:ag,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case sg:return{name:sg,properties:[{name:"value"}]};case Jd:return{name:Jd,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case og:return{name:og,properties:[{name:"name"},{name:"type"}]};case z2:return{name:z2,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case lg:return{name:lg,properties:[{name:"types",defaultValue:[]}]};case cg:return{name:cg,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case ug:return{name:ug,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case hg:return{name:hg,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case fg:return{name:fg,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case dg:return{name:dg,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case pg:return{name:pg,properties:[{name:"cardinality"},{name:"lookahead"}]};case mg:return{name:mg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case gg:return{name:gg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case yg:return{name:yg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case vg:return{name:vg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case xg:return{name:xg,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case bg:return{name:bg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case wg:return{name:wg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Tg:return{name:Tg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case kg:return{name:kg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Eg:return{name:Eg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case Sg:return{name:Sg,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:e,properties:[]}}}},lr=new Cg});var xk={};hr(xk,{assignMandatoryProperties:()=>XR,copyAstNode:()=>YR,findLocalReferences:()=>tPe,findRootNode:()=>H2,getContainerOfType:()=>tp,getDocument:()=>Pa,hasContainerOfType:()=>ePe,linkContentToContainer:()=>vk,streamAllContents:()=>Nc,streamAst:()=>Wo,streamContents:()=>W2,streamReferences:()=>Ag});function vk(t){for(let[e,r]of Object.entries(t))e.startsWith("$")||(Array.isArray(r)?r.forEach((n,i)=>{ii(n)&&(n.$container=t,n.$containerProperty=e,n.$containerIndex=i)}):ii(r)&&(r.$container=t,r.$containerProperty=e))}function tp(t,e){let r=t;for(;r;){if(e(r))return r;r=r.$container}}function ePe(t,e){let r=t;for(;r;){if(e(r))return!0;r=r.$container}return!1}function Pa(t){let r=H2(t).$document;if(!r)throw new Error("AST node has no document.");return r}function H2(t){for(;t.$container;)t=t.$container;return t}function W2(t,e){if(!t)throw new Error("Node must be an AstNode.");let r=e?.range;return new ao(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),n=>{for(;n.keyIndexW2(r,e))}function Wo(t,e){if(t){if(e?.range&&!qR(t,e.range))return new _c(t,()=>[])}else throw new Error("Root node must be an AstNode.");return new _c(t,r=>W2(r,e),{includeRoot:!0})}function qR(t,e){var r;if(!e)return!0;let n=(r=t.$cstNode)===null||r===void 0?void 0:r.range;return n?CR(n,e):!1}function Ag(t){return new ao(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),e=>{for(;e.keyIndex{Ag(n).forEach(i=>{i.reference.ref===t&&r.push(i.reference)})}),en(r)}function XR(t,e){let r=t.getTypeMetaData(e.$type),n=e;for(let i of r.properties)i.defaultValue!==void 0&&n[i.name]===void 0&&(n[i.name]=pae(i.defaultValue))}function pae(t){return Array.isArray(t)?[...t.map(pae)]:t}function YR(t,e){let r={$type:t.$type};for(let[n,i]of Object.entries(t))if(!n.startsWith("$"))if(ii(i))r[n]=YR(i,e);else if(va(i))r[n]=e(r,n,i.$refNode,i.$refText);else if(Array.isArray(i)){let a=[];for(let s of i)ii(s)?a.push(YR(s,e)):va(s)?a.push(e(r,n,s.$refNode,s.$refText)):a.push(s);r[n]=a}else r[n]=i;return vk(r),r}var is=N(()=>{"use strict";Rl();Ps();Nl();o(vk,"linkContentToContainer");o(tp,"getContainerOfType");o(ePe,"hasContainerOfType");o(Pa,"getDocument");o(H2,"findRootNode");o(W2,"streamContents");o(Nc,"streamAllContents");o(Wo,"streamAst");o(qR,"isAstNodeInRange");o(Ag,"streamReferences");o(tPe,"findLocalReferences");o(XR,"assignMandatoryProperties");o(pae,"copyDefaultValue");o(YR,"copyAstNode")});function ar(t){return t.charCodeAt(0)}function bk(t,e){Array.isArray(t)?t.forEach(function(r){e.push(r)}):e.push(t)}function _g(t,e){if(t[e]===!0)throw"duplicate flag "+e;let r=t[e];t[e]=!0}function rp(t){if(t===void 0)throw Error("Internal Error - Should never get here!");return!0}function q2(){throw Error("Internal Error - Should never get here!")}function jR(t){return t.type==="Character"}var KR=N(()=>{"use strict";o(ar,"cc");o(bk,"insertToSet");o(_g,"addFlag");o(rp,"ASSERT_EXISTS");o(q2,"ASSERT_NEVER_REACH_HERE");o(jR,"isCharacter")});var Y2,X2,QR,mae=N(()=>{"use strict";KR();Y2=[];for(let t=ar("0");t<=ar("9");t++)Y2.push(t);X2=[ar("_")].concat(Y2);for(let t=ar("a");t<=ar("z");t++)X2.push(t);for(let t=ar("A");t<=ar("Z");t++)X2.push(t);QR=[ar(" "),ar("\f"),ar(` +`),ar("\r"),ar(" "),ar("\v"),ar(" "),ar("\xA0"),ar("\u1680"),ar("\u2000"),ar("\u2001"),ar("\u2002"),ar("\u2003"),ar("\u2004"),ar("\u2005"),ar("\u2006"),ar("\u2007"),ar("\u2008"),ar("\u2009"),ar("\u200A"),ar("\u2028"),ar("\u2029"),ar("\u202F"),ar("\u205F"),ar("\u3000"),ar("\uFEFF")]});var rPe,wk,nPe,np,gae=N(()=>{"use strict";KR();mae();rPe=/[0-9a-fA-F]/,wk=/[0-9]/,nPe=/[1-9]/,np=class{static{o(this,"RegExpParser")}constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");let r=this.disjunction();this.consumeChar("/");let n={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":_g(n,"global");break;case"i":_g(n,"ignoreCase");break;case"m":_g(n,"multiLine");break;case"u":_g(n,"unicode");break;case"y":_g(n,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:n,value:r,loc:this.loc(0)}}disjunction(){let e=[],r=this.idx;for(e.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(r)}}alternative(){let e=[],r=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(r)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){let e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let r;switch(this.popChar()){case"=":r="Lookahead";break;case"!":r="NegativeLookahead";break}rp(r);let n=this.disjunction();return this.consumeChar(")"),{type:r,value:n,loc:this.loc(e)}}return q2()}quantifier(e=!1){let r,n=this.idx;switch(this.popChar()){case"*":r={atLeast:0,atMost:1/0};break;case"+":r={atLeast:1,atMost:1/0};break;case"?":r={atLeast:0,atMost:1};break;case"{":let i=this.integerIncludingZero();switch(this.popChar()){case"}":r={atLeast:i,atMost:i};break;case",":let a;this.isDigit()?(a=this.integerIncludingZero(),r={atLeast:i,atMost:a}):r={atLeast:i,atMost:1/0},this.consumeChar("}");break}if(e===!0&&r===void 0)return;rp(r);break}if(!(e===!0&&r===void 0)&&rp(r))return this.peekChar(0)==="?"?(this.consumeChar("?"),r.greedy=!1):r.greedy=!0,r.type="Quantifier",r.loc=this.loc(n),r}atom(){let e,r=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),rp(e)?(e.loc=this.loc(r),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):q2()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[ar(` +`),ar("\r"),ar("\u2028"),ar("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,r=!1;switch(this.popChar()){case"d":e=Y2;break;case"D":e=Y2,r=!0;break;case"s":e=QR;break;case"S":e=QR,r=!0;break;case"w":e=X2;break;case"W":e=X2,r=!0;break}return rp(e)?{type:"Set",value:e,complement:r}:q2()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=ar("\f");break;case"n":e=ar(` +`);break;case"r":e=ar("\r");break;case"t":e=ar(" ");break;case"v":e=ar("\v");break}return rp(e)?{type:"Character",value:e}:q2()}controlLetterEscapeAtom(){this.consumeChar("c");let e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:ar("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){let e=this.popChar();return{type:"Character",value:ar(e)}}classPatternCharacterAtom(){switch(this.peekChar()){case` +`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:let e=this.popChar();return{type:"Character",value:ar(e)}}}characterClass(){let e=[],r=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),r=!0);this.isClassAtom();){let n=this.classAtom(),i=n.type==="Character";if(jR(n)&&this.isRangeDash()){this.consumeChar("-");let a=this.classAtom(),s=a.type==="Character";if(jR(a)){if(a.value=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}}});var Mc,yae=N(()=>{"use strict";Mc=class{static{o(this,"BaseRegExpVisitor")}visitChildren(e){for(let r in e){let n=e[r];e.hasOwnProperty(r)&&(n.type!==void 0?this.visit(n):Array.isArray(n)&&n.forEach(i=>{this.visit(i)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e);break}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}}});var j2=N(()=>{"use strict";gae();yae()});var Tk={};hr(Tk,{NEWLINE_REGEXP:()=>JR,escapeRegExp:()=>ap,getCaseInsensitivePattern:()=>tN,getTerminalParts:()=>iPe,isMultilineComment:()=>eN,isWhitespace:()=>Dg,partialMatches:()=>rN,partialRegExp:()=>bae,whitespaceCharacters:()=>xae});function iPe(t){try{typeof t!="string"&&(t=t.source),t=`/${t}/`;let e=vae.pattern(t),r=[];for(let n of e.value.value)ip.reset(t),ip.visit(n),r.push({start:ip.startRegexp,end:ip.endRegex});return r}catch{return[]}}function eN(t){try{return typeof t=="string"&&(t=new RegExp(t)),t=t.toString(),ip.reset(t),ip.visit(vae.pattern(t)),ip.multiline}catch{return!1}}function Dg(t){let e=typeof t=="string"?new RegExp(t):t;return xae.some(r=>e.test(r))}function ap(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function tN(t){return Array.prototype.map.call(t,e=>/\w/.test(e)?`[${e.toLowerCase()}${e.toUpperCase()}]`:ap(e)).join("")}function rN(t,e){let r=bae(t),n=e.match(r);return!!n&&n[0].length>0}function bae(t){typeof t=="string"&&(t=new RegExp(t));let e=t,r=t.source,n=0;function i(){let a="",s;function l(h){a+=r.substr(n,h),n+=h}o(l,"appendRaw");function u(h){a+="(?:"+r.substr(n,h)+"|$)",n+=h}for(o(u,"appendOptional");n",n)-n+1);break;default:u(2);break}break;case"[":s=/\[(?:\\.|.)*?\]/g,s.lastIndex=n,s=s.exec(r)||[],u(s[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":l(1);break;case"{":s=/\{\d+,?\d*\}/g,s.lastIndex=n,s=s.exec(r),s?l(s[0].length):u(1);break;case"(":if(r[n+1]==="?")switch(r[n+2]){case":":a+="(?:",n+=3,a+=i()+"|$)";break;case"=":a+="(?=",n+=3,a+=i()+")";break;case"!":s=n,n+=3,i(),a+=r.substr(s,n-s);break;case"<":switch(r[n+3]){case"=":case"!":s=n,n+=4,i(),a+=r.substr(s,n-s);break;default:l(r.indexOf(">",n)-n+1),a+=i()+"|$)";break}break}else l(1),a+=i()+"|$)";break;case")":return++n,a;default:u(1);break}return a}return o(i,"process"),new RegExp(i(),t.flags)}var JR,vae,ZR,ip,xae,Lg=N(()=>{"use strict";j2();JR=/\r?\n/gm,vae=new np,ZR=class extends Mc{static{o(this,"TerminalRegExpVisitor")}constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){let r=String.fromCharCode(e.value);if(!this.multiline&&r===` +`&&(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let n=ap(r);this.endRegexpStack.push(n),this.isStarting&&(this.startRegexp+=n)}}visitSet(e){if(!this.multiline){let r=this.regex.substring(e.loc.begin,e.loc.end),n=new RegExp(r);this.multiline=!!` +`.match(n)}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let r=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(r),this.isStarting&&(this.startRegexp+=r)}}visitChildren(e){e.type==="Group"&&e.quantifier||super.visitChildren(e)}},ip=new ZR;o(iPe,"getTerminalParts");o(eN,"isMultilineComment");xae=`\f +\r \v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF`.split("");o(Dg,"isWhitespace");o(ap,"escapeRegExp");o(tN,"getCaseInsensitivePattern");o(rN,"partialMatches");o(bae,"partialRegExp")});var Ek={};hr(Ek,{findAssignment:()=>hN,findNameAssignment:()=>kk,findNodeForKeyword:()=>cN,findNodeForProperty:()=>Q2,findNodesForKeyword:()=>aPe,findNodesForKeywordInternal:()=>uN,findNodesForProperty:()=>oN,getActionAtElement:()=>Sae,getActionType:()=>Aae,getAllReachableRules:()=>K2,getCrossReferenceTerminal:()=>aN,getEntryRule:()=>wae,getExplicitRuleType:()=>Rg,getHiddenRules:()=>Tae,getRuleType:()=>fN,getRuleTypeName:()=>uPe,getTypeName:()=>J2,isArrayCardinality:()=>oPe,isArrayOperator:()=>lPe,isCommentTerminal:()=>sN,isDataType:()=>cPe,isDataTypeRule:()=>Z2,isOptionalCardinality:()=>sPe,terminalRegex:()=>Ng});function wae(t){return t.rules.find(e=>Oa(e)&&e.entry)}function Tae(t){return t.rules.filter(e=>so(e)&&e.hidden)}function K2(t,e){let r=new Set,n=wae(t);if(!n)return new Set(t.rules);let i=[n].concat(Tae(t));for(let s of i)kae(s,r,e);let a=new Set;for(let s of t.rules)(r.has(s.name)||so(s)&&s.hidden)&&a.add(s);return a}function kae(t,e,r){e.add(t.name),Nc(t).forEach(n=>{if(Il(n)||r&&gk(n)){let i=n.rule.ref;i&&!e.has(i.name)&&kae(i,e,r)}})}function aN(t){if(t.terminal)return t.terminal;if(t.type.ref){let e=kk(t.type.ref);return e?.terminal}}function sN(t){return t.hidden&&!Dg(Ng(t))}function oN(t,e){return!t||!e?[]:lN(t,e,t.astNode,!0)}function Q2(t,e,r){if(!t||!e)return;let n=lN(t,e,t.astNode,!0);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function lN(t,e,r,n){if(!n){let i=tp(t.grammarSource,Ml);if(i&&i.feature===e)return[t]}return Ll(t)&&t.astNode===r?t.content.flatMap(i=>lN(i,e,r,!1)):[]}function aPe(t,e){return t?uN(t,e,t?.astNode):[]}function cN(t,e,r){if(!t)return;let n=uN(t,e,t?.astNode);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function uN(t,e,r){if(t.astNode!==r)return[];if(Ho(t.grammarSource)&&t.grammarSource.value===e)return[t];let n=Kd(t).iterator(),i,a=[];do if(i=n.next(),!i.done){let s=i.value;s.astNode===r?Ho(s.grammarSource)&&s.grammarSource.value===e&&a.push(s):n.prune()}while(!i.done);return a}function hN(t){var e;let r=t.astNode;for(;r===((e=t.container)===null||e===void 0?void 0:e.astNode);){let n=tp(t.grammarSource,Ml);if(n)return n;t=t.container}}function kk(t){let e=t;return fk(e)&&(Mu(e.$container)?e=e.$container.$container:Oa(e.$container)?e=e.$container:Lc(e.$container)),Eae(t,e,new Map)}function Eae(t,e,r){var n;function i(a,s){let l;return tp(a,Ml)||(l=Eae(s,s,r)),r.set(t,l),l}if(o(i,"go"),r.has(t))return r.get(t);r.set(t,void 0);for(let a of Nc(e)){if(Ml(a)&&a.feature.toLowerCase()==="name")return r.set(t,a),a;if(Il(a)&&Oa(a.rule.ref))return i(a,a.rule.ref);if(pk(a)&&(!((n=a.typeRef)===null||n===void 0)&&n.ref))return i(a,a.typeRef.ref)}}function Sae(t){let e=t.$container;if(sf(e)){let r=e.elements,n=r.indexOf(t);for(let i=n-1;i>=0;i--){let a=r[i];if(Mu(a))return a;{let s=Nc(r[i]).find(Mu);if(s)return s}}}if(G2(e))return Sae(e)}function sPe(t,e){return t==="?"||t==="*"||sf(e)&&!!e.guardCondition}function oPe(t){return t==="*"||t==="+"}function lPe(t){return t==="+="}function Z2(t){return Cae(t,new Set)}function Cae(t,e){if(e.has(t))return!0;e.add(t);for(let r of Nc(t))if(Il(r)){if(!r.rule.ref||Oa(r.rule.ref)&&!Cae(r.rule.ref,e))return!1}else{if(Ml(r))return!1;if(Mu(r))return!1}return!!t.definition}function cPe(t){return iN(t.type,new Set)}function iN(t,e){if(e.has(t))return!0;if(e.add(t),DR(t))return!1;if(OR(t))return!1;if(BR(t))return t.types.every(r=>iN(r,e));if(pk(t)){if(t.primitiveType!==void 0)return!0;if(t.stringType!==void 0)return!0;if(t.typeRef!==void 0){let r=t.typeRef.ref;return V2(r)?iN(r.type,e):!1}else return!1}else return!1}function Rg(t){if(t.inferredType)return t.inferredType.name;if(t.dataType)return t.dataType;if(t.returnType){let e=t.returnType.ref;if(e){if(Oa(e))return e.name;if(dk(e)||V2(e))return e.name}}}function J2(t){var e;if(Oa(t))return Z2(t)?t.name:(e=Rg(t))!==null&&e!==void 0?e:t.name;if(dk(t)||V2(t)||PR(t))return t.name;if(Mu(t)){let r=Aae(t);if(r)return r}else if(fk(t))return t.name;throw new Error("Cannot get name of Unknown Type")}function Aae(t){var e;if(t.inferredType)return t.inferredType.name;if(!((e=t.type)===null||e===void 0)&&e.ref)return J2(t.type.ref)}function uPe(t){var e,r,n;return so(t)?(r=(e=t.type)===null||e===void 0?void 0:e.name)!==null&&r!==void 0?r:"string":Z2(t)?t.name:(n=Rg(t))!==null&&n!==void 0?n:t.name}function fN(t){var e,r,n;return so(t)?(r=(e=t.type)===null||e===void 0?void 0:e.name)!==null&&r!==void 0?r:"string":(n=Rg(t))!==null&&n!==void 0?n:t.name}function Ng(t){let e={s:!1,i:!1,u:!1},r=Mg(t.definition,e),n=Object.entries(e).filter(([,i])=>i).map(([i])=>i).join("");return new RegExp(r,n)}function Mg(t,e){if(VR(t))return hPe(t);if(UR(t))return fPe(t);if(FR(t))return mPe(t);if(gk(t)){let r=t.rule.ref;if(!r)throw new Error("Missing rule reference.");return Iu(Mg(r.definition),{cardinality:t.cardinality,lookahead:t.lookahead})}else{if(zR(t))return pPe(t);if(HR(t))return dPe(t);if(GR(t)){let r=t.regex.lastIndexOf("/"),n=t.regex.substring(1,r),i=t.regex.substring(r+1);return e&&(e.i=i.includes("i"),e.s=i.includes("s"),e.u=i.includes("u")),Iu(n,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}else{if(WR(t))return Iu(dN,{cardinality:t.cardinality,lookahead:t.lookahead});throw new Error(`Invalid terminal element: ${t?.$type}`)}}}function hPe(t){return Iu(t.elements.map(e=>Mg(e)).join("|"),{cardinality:t.cardinality,lookahead:t.lookahead})}function fPe(t){return Iu(t.elements.map(e=>Mg(e)).join(""),{cardinality:t.cardinality,lookahead:t.lookahead})}function dPe(t){return Iu(`${dN}*?${Mg(t.terminal)}`,{cardinality:t.cardinality,lookahead:t.lookahead})}function pPe(t){return Iu(`(?!${Mg(t.terminal)})${dN}*?`,{cardinality:t.cardinality,lookahead:t.lookahead})}function mPe(t){return t.right?Iu(`[${nN(t.left)}-${nN(t.right)}]`,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1}):Iu(nN(t.left),{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}function nN(t){return ap(t.value)}function Iu(t,e){var r;return(e.wrap!==!1||e.lookahead)&&(t=`(${(r=e.lookahead)!==null&&r!==void 0?r:""}${t})`),e.cardinality?`${t}${e.cardinality}`:t}var dN,Ol=N(()=>{"use strict";uk();Rc();Rl();is();Nl();Lg();o(wae,"getEntryRule");o(Tae,"getHiddenRules");o(K2,"getAllReachableRules");o(kae,"ruleDfs");o(aN,"getCrossReferenceTerminal");o(sN,"isCommentTerminal");o(oN,"findNodesForProperty");o(Q2,"findNodeForProperty");o(lN,"findNodesForPropertyInternal");o(aPe,"findNodesForKeyword");o(cN,"findNodeForKeyword");o(uN,"findNodesForKeywordInternal");o(hN,"findAssignment");o(kk,"findNameAssignment");o(Eae,"findNameAssignmentInternal");o(Sae,"getActionAtElement");o(sPe,"isOptionalCardinality");o(oPe,"isArrayCardinality");o(lPe,"isArrayOperator");o(Z2,"isDataTypeRule");o(Cae,"isDataTypeRuleInternal");o(cPe,"isDataType");o(iN,"isDataTypeInternal");o(Rg,"getExplicitRuleType");o(J2,"getTypeName");o(Aae,"getActionType");o(uPe,"getRuleTypeName");o(fN,"getRuleType");o(Ng,"terminalRegex");dN=/[\s\S]/.source;o(Mg,"abstractElementToRegex");o(hPe,"terminalAlternativesToRegex");o(fPe,"terminalGroupToRegex");o(dPe,"untilTokenToRegex");o(pPe,"negateTokenToRegex");o(mPe,"characterRangeToRegex");o(nN,"keywordToRegex");o(Iu,"withCardinality")});function pN(t){let e=[],r=t.Grammar;for(let n of r.rules)so(n)&&sN(n)&&eN(Ng(n))&&e.push(n.name);return{multilineCommentRules:e,nameRegexp:lk}}var mN=N(()=>{"use strict";Nl();Ol();Lg();Rc();o(pN,"createGrammarConfig")});var gN=N(()=>{"use strict"});function Ig(t){console&&console.error&&console.error(`Error: ${t}`)}function ex(t){console&&console.warn&&console.warn(`Warning: ${t}`)}var _ae=N(()=>{"use strict";o(Ig,"PRINT_ERROR");o(ex,"PRINT_WARNING")});function tx(t){let e=new Date().getTime(),r=t();return{time:new Date().getTime()-e,value:r}}var Dae=N(()=>{"use strict";o(tx,"timer")});function rx(t){function e(){}o(e,"FakeConstructor"),e.prototype=t;let r=new e;function n(){return typeof r.bar}return o(n,"fakeAccess"),n(),n(),t;(0,eval)(t)}var Lae=N(()=>{"use strict";o(rx,"toFastProperties")});var Og=N(()=>{"use strict";_ae();Dae();Lae()});function gPe(t){return yPe(t)?t.LABEL:t.name}function yPe(t){return yi(t.LABEL)&&t.LABEL!==""}function Sk(t){return Je(t,Pg)}function Pg(t){function e(r){return Je(r,Pg)}if(o(e,"convertDefinition"),t instanceof on){let r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return yi(t.label)&&(r.label=t.label),r}else{if(t instanceof Dn)return{type:"Alternative",definition:e(t.definition)};if(t instanceof ln)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof Ln)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof Rn)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:Pg(new kr({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof wn)return{type:"RepetitionWithSeparator",idx:t.idx,separator:Pg(new kr({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof Or)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof Tn)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof kr){let r={type:"Terminal",name:t.terminalType.name,label:gPe(t.terminalType),idx:t.idx};yi(t.label)&&(r.terminalLabel=t.label);let n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(r.pattern=zo(n)?n.source:n),r}else{if(t instanceof as)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}var oo,on,as,Dn,ln,Ln,Rn,Or,wn,Tn,kr,Ck=N(()=>{"use strict";qt();o(gPe,"tokenLabel");o(yPe,"hasTokenLabel");oo=class{static{o(this,"AbstractProduction")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),Ae(this.definition,r=>{r.accept(e)})}},on=class extends oo{static{o(this,"NonTerminal")}constructor(e){super([]),this.idx=1,ma(this,Os(e,r=>r!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}},as=class extends oo{static{o(this,"Rule")}constructor(e){super(e.definition),this.orgText="",ma(this,Os(e,r=>r!==void 0))}},Dn=class extends oo{static{o(this,"Alternative")}constructor(e){super(e.definition),this.ignoreAmbiguities=!1,ma(this,Os(e,r=>r!==void 0))}},ln=class extends oo{static{o(this,"Option")}constructor(e){super(e.definition),this.idx=1,ma(this,Os(e,r=>r!==void 0))}},Ln=class extends oo{static{o(this,"RepetitionMandatory")}constructor(e){super(e.definition),this.idx=1,ma(this,Os(e,r=>r!==void 0))}},Rn=class extends oo{static{o(this,"RepetitionMandatoryWithSeparator")}constructor(e){super(e.definition),this.idx=1,ma(this,Os(e,r=>r!==void 0))}},Or=class extends oo{static{o(this,"Repetition")}constructor(e){super(e.definition),this.idx=1,ma(this,Os(e,r=>r!==void 0))}},wn=class extends oo{static{o(this,"RepetitionWithSeparator")}constructor(e){super(e.definition),this.idx=1,ma(this,Os(e,r=>r!==void 0))}},Tn=class extends oo{static{o(this,"Alternation")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,ma(this,Os(e,r=>r!==void 0))}},kr=class{static{o(this,"Terminal")}constructor(e){this.idx=1,ma(this,Os(e,r=>r!==void 0))}accept(e){e.visit(this)}};o(Sk,"serializeGrammar");o(Pg,"serializeProduction")});var ss,Rae=N(()=>{"use strict";Ck();ss=class{static{o(this,"GAstVisitor")}visit(e){let r=e;switch(r.constructor){case on:return this.visitNonTerminal(r);case Dn:return this.visitAlternative(r);case ln:return this.visitOption(r);case Ln:return this.visitRepetitionMandatory(r);case Rn:return this.visitRepetitionMandatoryWithSeparator(r);case wn:return this.visitRepetitionWithSeparator(r);case Or:return this.visitRepetition(r);case Tn:return this.visitAlternation(r);case kr:return this.visitTerminal(r);case as:return this.visitRule(r);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}}});function yN(t){return t instanceof Dn||t instanceof ln||t instanceof Or||t instanceof Ln||t instanceof Rn||t instanceof wn||t instanceof kr||t instanceof as}function sp(t,e=[]){return t instanceof ln||t instanceof Or||t instanceof wn?!0:t instanceof Tn?A2(t.definition,n=>sp(n,e)):t instanceof on&&qn(e,t)?!1:t instanceof oo?(t instanceof on&&e.push(t),Ma(t.definition,n=>sp(n,e))):!1}function vN(t){return t instanceof Tn}function Bs(t){if(t instanceof on)return"SUBRULE";if(t instanceof ln)return"OPTION";if(t instanceof Tn)return"OR";if(t instanceof Ln)return"AT_LEAST_ONE";if(t instanceof Rn)return"AT_LEAST_ONE_SEP";if(t instanceof wn)return"MANY_SEP";if(t instanceof Or)return"MANY";if(t instanceof kr)return"CONSUME";throw Error("non exhaustive match")}var Nae=N(()=>{"use strict";qt();Ck();o(yN,"isSequenceProd");o(sp,"isOptionalProd");o(vN,"isBranchingProd");o(Bs,"getProductionDslName")});var os=N(()=>{"use strict";Ck();Rae();Nae()});function Mae(t,e,r){return[new ln({definition:[new kr({terminalType:t.separator})].concat(t.definition)})].concat(e,r)}var Ou,Ak=N(()=>{"use strict";qt();os();Ou=class{static{o(this,"RestWalker")}walk(e,r=[]){Ae(e.definition,(n,i)=>{let a=gi(e.definition,i+1);if(n instanceof on)this.walkProdRef(n,a,r);else if(n instanceof kr)this.walkTerminal(n,a,r);else if(n instanceof Dn)this.walkFlat(n,a,r);else if(n instanceof ln)this.walkOption(n,a,r);else if(n instanceof Ln)this.walkAtLeastOne(n,a,r);else if(n instanceof Rn)this.walkAtLeastOneSep(n,a,r);else if(n instanceof wn)this.walkManySep(n,a,r);else if(n instanceof Or)this.walkMany(n,a,r);else if(n instanceof Tn)this.walkOr(n,a,r);else throw Error("non exhaustive match")})}walkTerminal(e,r,n){}walkProdRef(e,r,n){}walkFlat(e,r,n){let i=r.concat(n);this.walk(e,i)}walkOption(e,r,n){let i=r.concat(n);this.walk(e,i)}walkAtLeastOne(e,r,n){let i=[new ln({definition:e.definition})].concat(r,n);this.walk(e,i)}walkAtLeastOneSep(e,r,n){let i=Mae(e,r,n);this.walk(e,i)}walkMany(e,r,n){let i=[new ln({definition:e.definition})].concat(r,n);this.walk(e,i)}walkManySep(e,r,n){let i=Mae(e,r,n);this.walk(e,i)}walkOr(e,r,n){let i=r.concat(n);Ae(e.definition,a=>{let s=new Dn({definition:[a]});this.walk(s,i)})}};o(Mae,"restForRepetitionWithSeparator")});function op(t){if(t instanceof on)return op(t.referencedRule);if(t instanceof kr)return bPe(t);if(yN(t))return vPe(t);if(vN(t))return xPe(t);throw Error("non exhaustive match")}function vPe(t){let e=[],r=t.definition,n=0,i=r.length>n,a,s=!0;for(;i&&s;)a=r[n],s=sp(a),e=e.concat(op(a)),n=n+1,i=r.length>n;return Bm(e)}function xPe(t){let e=Je(t.definition,r=>op(r));return Bm(qr(e))}function bPe(t){return[t.terminalType]}var xN=N(()=>{"use strict";qt();os();o(op,"first");o(vPe,"firstForSequence");o(xPe,"firstForBranching");o(bPe,"firstForTerminal")});var _k,bN=N(()=>{"use strict";_k="_~IN~_"});function Iae(t){let e={};return Ae(t,r=>{let n=new wN(r).startWalking();ma(e,n)}),e}function wPe(t,e){return t.name+e+_k}var wN,Oae=N(()=>{"use strict";Ak();xN();qt();bN();os();wN=class extends Ou{static{o(this,"ResyncFollowsWalker")}constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,r,n){}walkProdRef(e,r,n){let i=wPe(e.referencedRule,e.idx)+this.topProd.name,a=r.concat(n),s=new Dn({definition:a}),l=op(s);this.follows[i]=l}};o(Iae,"computeAllProdsFollows");o(wPe,"buildBetweenProdsFollowPrefix")});function Bg(t){let e=t.toString();if(Dk.hasOwnProperty(e))return Dk[e];{let r=TPe.pattern(e);return Dk[e]=r,r}}function Pae(){Dk={}}var Dk,TPe,Lk=N(()=>{"use strict";j2();Dk={},TPe=new np;o(Bg,"getRegExpAst");o(Pae,"clearRegExpParserCache")});function $ae(t,e=!1){try{let r=Bg(t);return TN(r.value,{},r.flags.ignoreCase)}catch(r){if(r.message===Fae)e&&ex(`${nx} Unable to optimize: < ${t.toString()} > + Complement Sets cannot be automatically optimized. + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let n="";e&&(n=` + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),Ig(`${nx} + Failed parsing: < ${t.toString()} > + Using the @chevrotain/regexp-to-ast library + Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function TN(t,e,r){switch(t.type){case"Disjunction":for(let i=0;i{if(typeof u=="number")Rk(u,e,r);else{let h=u;if(r===!0)for(let f=h.from;f<=h.to;f++)Rk(f,e,r);else{for(let f=h.from;f<=h.to&&f=Fg){let f=h.from>=Fg?h.from:Fg,d=h.to,p=Ic(f),m=Ic(d);for(let g=p;g<=m;g++)e[g]=g}}}});break;case"Group":TN(s.value,e,r);break;default:throw Error("Non Exhaustive Match")}let l=s.quantifier!==void 0&&s.quantifier.atLeast===0;if(s.type==="Group"&&kN(s)===!1||s.type!=="Group"&&l===!1)break}break;default:throw Error("non exhaustive match!")}return br(e)}function Rk(t,e,r){let n=Ic(t);e[n]=n,r===!0&&kPe(t,e)}function kPe(t,e){let r=String.fromCharCode(t),n=r.toUpperCase();if(n!==r){let i=Ic(n.charCodeAt(0));e[i]=i}else{let i=r.toLowerCase();if(i!==r){let a=Ic(i.charCodeAt(0));e[a]=a}}}function Bae(t,e){return ns(t.value,r=>{if(typeof r=="number")return qn(e,r);{let n=r;return ns(e,i=>n.from<=i&&i<=n.to)!==void 0}})}function kN(t){let e=t.quantifier;return e&&e.atLeast===0?!0:t.value?Pt(t.value)?Ma(t.value,kN):kN(t.value):!1}function Nk(t,e){if(e instanceof RegExp){let r=Bg(e),n=new EN(t);return n.visit(r),n.found}else return ns(e,r=>qn(t,r.charCodeAt(0)))!==void 0}var Fae,nx,EN,zae=N(()=>{"use strict";j2();qt();Og();Lk();SN();Fae="Complement Sets are not supported for first char optimization",nx=`Unable to use "first char" lexer optimizations: +`;o($ae,"getOptimizedStartCodesIndices");o(TN,"firstCharOptimizedIndices");o(Rk,"addOptimizedIdxToResult");o(kPe,"handleIgnoreCase");o(Bae,"findCode");o(kN,"isWholeOptional");EN=class extends Mc{static{o(this,"CharCodeFinder")}constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(this.found!==!0){switch(e.type){case"Lookahead":this.visitLookahead(e);return;case"NegativeLookahead":this.visitNegativeLookahead(e);return}super.visitChildren(e)}}visitCharacter(e){qn(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?Bae(e,this.targetCharCodes)===void 0&&(this.found=!0):Bae(e,this.targetCharCodes)!==void 0&&(this.found=!0)}};o(Nk,"canMatchCharCode")});function Uae(t,e){e=Qh(e,{useSticky:AN,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:o((b,w)=>w(),"tracer")});let r=e.tracer;r("initCharCodeToOptimizedIndexMap",()=>{GPe()});let n;r("Reject Lexer.NA",()=>{n=Jh(t,b=>b[lp]===Xn.NA)});let i=!1,a;r("Transform Patterns",()=>{i=!1,a=Je(n,b=>{let w=b[lp];if(zo(w)){let C=w.source;return C.length===1&&C!=="^"&&C!=="$"&&C!=="."&&!w.ignoreCase?C:C.length===2&&C[0]==="\\"&&!qn(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],C[1])?C[1]:e.useSticky?Vae(w):Gae(w)}else{if(Si(w))return i=!0,{exec:w};if(typeof w=="object")return i=!0,w;if(typeof w=="string"){if(w.length===1)return w;{let C=w.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),T=new RegExp(C);return e.useSticky?Vae(T):Gae(T)}}else throw Error("non exhaustive match")}})});let s,l,u,h,f;r("misc mapping",()=>{s=Je(n,b=>b.tokenTypeIdx),l=Je(n,b=>{let w=b.GROUP;if(w!==Xn.SKIPPED){if(yi(w))return w;if(pr(w))return!1;throw Error("non exhaustive match")}}),u=Je(n,b=>{let w=b.LONGER_ALT;if(w)return Pt(w)?Je(w,T=>UT(n,T)):[UT(n,w)]}),h=Je(n,b=>b.PUSH_MODE),f=Je(n,b=>Bt(b,"POP_MODE"))});let d;r("Line Terminator Handling",()=>{let b=Qae(e.lineTerminatorCharacters);d=Je(n,w=>!1),e.positionTracking!=="onlyOffset"&&(d=Je(n,w=>Bt(w,"LINE_BREAKS")?!!w.LINE_BREAKS:Kae(w,b)===!1&&Nk(b,w.PATTERN)))});let p,m,g,y;r("Misc Mapping #2",()=>{p=Je(n,Xae),m=Je(a,$Pe),g=Xr(n,(b,w)=>{let C=w.GROUP;return yi(C)&&C!==Xn.SKIPPED&&(b[C]=[]),b},{}),y=Je(a,(b,w)=>({pattern:a[w],longerAlt:u[w],canLineTerminator:d[w],isCustom:p[w],short:m[w],group:l[w],push:h[w],pop:f[w],tokenTypeIdx:s[w],tokenType:n[w]}))});let v=!0,x=[];return e.safeMode||r("First Char Optimization",()=>{x=Xr(n,(b,w,C)=>{if(typeof w.PATTERN=="string"){let T=w.PATTERN.charCodeAt(0),E=Ic(T);CN(b,E,y[C])}else if(Pt(w.START_CHARS_HINT)){let T;Ae(w.START_CHARS_HINT,E=>{let A=typeof E=="string"?E.charCodeAt(0):E,S=Ic(A);T!==S&&(T=S,CN(b,S,y[C]))})}else if(zo(w.PATTERN))if(w.PATTERN.unicode)v=!1,e.ensureOptimizations&&Ig(`${nx} Unable to analyze < ${w.PATTERN.toString()} > pattern. + The regexp unicode flag is not currently supported by the regexp-to-ast library. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{let T=$ae(w.PATTERN,e.ensureOptimizations);ur(T)&&(v=!1),Ae(T,E=>{CN(b,E,y[C])})}else e.ensureOptimizations&&Ig(`${nx} TokenType: <${w.name}> is using a custom token pattern without providing parameter. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),v=!1;return b},[])}),{emptyGroups:g,patternIdxToConfig:y,charCodeToPatternIdxToConfig:x,hasCustom:i,canBeOptimized:v}}function Hae(t,e){let r=[],n=SPe(t);r=r.concat(n.errors);let i=CPe(n.valid),a=i.valid;return r=r.concat(i.errors),r=r.concat(EPe(a)),r=r.concat(IPe(a)),r=r.concat(OPe(a,e)),r=r.concat(PPe(a)),r}function EPe(t){let e=[],r=Yr(t,n=>zo(n[lp]));return e=e.concat(_Pe(r)),e=e.concat(RPe(r)),e=e.concat(NPe(r)),e=e.concat(MPe(r)),e=e.concat(DPe(r)),e}function SPe(t){let e=Yr(t,i=>!Bt(i,lp)),r=Je(e,i=>({message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:Yn.MISSING_PATTERN,tokenTypes:[i]})),n=Zh(t,e);return{errors:r,valid:n}}function CPe(t){let e=Yr(t,i=>{let a=i[lp];return!zo(a)&&!Si(a)&&!Bt(a,"exec")&&!yi(a)}),r=Je(e,i=>({message:"Token Type: ->"+i.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:Yn.INVALID_PATTERN,tokenTypes:[i]})),n=Zh(t,e);return{errors:r,valid:n}}function _Pe(t){class e extends Mc{static{o(this,"EndAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitEndAnchor(a){this.found=!0}}let r=Yr(t,i=>{let a=i.PATTERN;try{let s=Bg(a),l=new e;return l.visit(s),l.found}catch{return APe.test(a.source)}});return Je(r,i=>({message:`Unexpected RegExp Anchor Error: + Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain end of input anchor '$' + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Yn.EOI_ANCHOR_FOUND,tokenTypes:[i]}))}function DPe(t){let e=Yr(t,n=>n.PATTERN.test(""));return Je(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' must not match an empty string",type:Yn.EMPTY_MATCH_PATTERN,tokenTypes:[n]}))}function RPe(t){class e extends Mc{static{o(this,"StartAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitStartAnchor(a){this.found=!0}}let r=Yr(t,i=>{let a=i.PATTERN;try{let s=Bg(a),l=new e;return l.visit(s),l.found}catch{return LPe.test(a.source)}});return Je(r,i=>({message:`Unexpected RegExp Anchor Error: + Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain start of input anchor '^' + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Yn.SOI_ANCHOR_FOUND,tokenTypes:[i]}))}function NPe(t){let e=Yr(t,n=>{let i=n[lp];return i instanceof RegExp&&(i.multiline||i.global)});return Je(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:Yn.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}))}function MPe(t){let e=[],r=Je(t,a=>Xr(t,(s,l)=>(a.PATTERN.source===l.PATTERN.source&&!qn(e,l)&&l.PATTERN!==Xn.NA&&(e.push(l),s.push(l)),s),[]));r=Tc(r);let n=Yr(r,a=>a.length>1);return Je(n,a=>{let s=Je(a,u=>u.name);return{message:`The same RegExp pattern ->${ia(a).PATTERN}<-has been used in all of the following Token Types: ${s.join(", ")} <-`,type:Yn.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}})}function IPe(t){let e=Yr(t,n=>{if(!Bt(n,"GROUP"))return!1;let i=n.GROUP;return i!==Xn.SKIPPED&&i!==Xn.NA&&!yi(i)});return Je(e,n=>({message:"Token Type: ->"+n.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:Yn.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}))}function OPe(t,e){let r=Yr(t,i=>i.PUSH_MODE!==void 0&&!qn(e,i.PUSH_MODE));return Je(r,i=>({message:`Token Type: ->${i.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${i.PUSH_MODE}<-which does not exist`,type:Yn.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}))}function PPe(t){let e=[],r=Xr(t,(n,i,a)=>{let s=i.PATTERN;return s===Xn.NA||(yi(s)?n.push({str:s,idx:a,tokenType:i}):zo(s)&&FPe(s)&&n.push({str:s.source,idx:a,tokenType:i})),n},[]);return Ae(t,(n,i)=>{Ae(r,({str:a,idx:s,tokenType:l})=>{if(i${l.name}<- can never be matched. +Because it appears AFTER the Token Type ->${n.name}<-in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:u,type:Yn.UNREACHABLE_PATTERN,tokenTypes:[n,l]})}})}),e}function BPe(t,e){if(zo(e)){let r=e.exec(t);return r!==null&&r.index===0}else{if(Si(e))return e(t,0,[],{});if(Bt(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function FPe(t){return ns([".","\\","[","]","|","^","$","(",")","?","*","+","{"],r=>t.source.indexOf(r)!==-1)===void 0}function Gae(t){let e=t.ignoreCase?"i":"";return new RegExp(`^(?:${t.source})`,e)}function Vae(t){let e=t.ignoreCase?"iy":"y";return new RegExp(`${t.source}`,e)}function Wae(t,e,r){let n=[];return Bt(t,$g)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+$g+`> property in its definition +`,type:Yn.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),Bt(t,Mk)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+Mk+`> property in its definition +`,type:Yn.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),Bt(t,Mk)&&Bt(t,$g)&&!Bt(t.modes,t.defaultMode)&&n.push({message:`A MultiMode Lexer cannot be initialized with a ${$g}: <${t.defaultMode}>which does not exist +`,type:Yn.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),Bt(t,Mk)&&Ae(t.modes,(i,a)=>{Ae(i,(s,l)=>{if(pr(s))n.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${a}> at index: <${l}> +`,type:Yn.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(Bt(s,"LONGER_ALT")){let u=Pt(s.LONGER_ALT)?s.LONGER_ALT:[s.LONGER_ALT];Ae(u,h=>{!pr(h)&&!qn(i,h)&&n.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${h.name}> on token <${s.name}> outside of mode <${a}> +`,type:Yn.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),n}function qae(t,e,r){let n=[],i=!1,a=Tc(qr(br(t.modes))),s=Jh(a,u=>u[lp]===Xn.NA),l=Qae(r);return e&&Ae(s,u=>{let h=Kae(u,l);if(h!==!1){let d={message:zPe(u,h),type:h.issue,tokenType:u};n.push(d)}else Bt(u,"LINE_BREAKS")?u.LINE_BREAKS===!0&&(i=!0):Nk(l,u.PATTERN)&&(i=!0)}),e&&!i&&n.push({message:`Warning: No LINE_BREAKS Found. + This Lexer has been defined to track line and column information, + But none of the Token Types can be identified as matching a line terminator. + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS + for details.`,type:Yn.NO_LINE_BREAKS_FLAGS}),n}function Yae(t){let e={},r=zr(t);return Ae(r,n=>{let i=t[n];if(Pt(i))e[n]=[];else throw Error("non exhaustive match")}),e}function Xae(t){let e=t.PATTERN;if(zo(e))return!1;if(Si(e))return!0;if(Bt(e,"exec"))return!0;if(yi(e))return!1;throw Error("non exhaustive match")}function $Pe(t){return yi(t)&&t.length===1?t.charCodeAt(0):!1}function Kae(t,e){if(Bt(t,"LINE_BREAKS"))return!1;if(zo(t.PATTERN)){try{Nk(e,t.PATTERN)}catch(r){return{issue:Yn.IDENTIFY_TERMINATOR,errMsg:r.message}}return!1}else{if(yi(t.PATTERN))return!1;if(Xae(t))return{issue:Yn.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}}function zPe(t,e){if(e.issue===Yn.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern. + The problem is in the <${t.name}> Token Type + Root cause: ${e.errMsg}. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(e.issue===Yn.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. + The problem is in the <${t.name}> Token Type + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}function Qae(t){return Je(t,r=>yi(r)?r.charCodeAt(0):r)}function CN(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Ic(t){return t255?255+~~(t/255):t}}var lp,$g,Mk,AN,APe,LPe,jae,Fg,Ik,SN=N(()=>{"use strict";j2();ix();qt();Og();zae();Lk();lp="PATTERN",$g="defaultMode",Mk="modes",AN=typeof new RegExp("(?:)").sticky=="boolean";o(Uae,"analyzeTokenTypes");o(Hae,"validatePatterns");o(EPe,"validateRegExpPattern");o(SPe,"findMissingPatterns");o(CPe,"findInvalidPatterns");APe=/[^\\][$]/;o(_Pe,"findEndOfInputAnchor");o(DPe,"findEmptyMatchRegExps");LPe=/[^\\[][\^]|^\^/;o(RPe,"findStartOfInputAnchor");o(NPe,"findUnsupportedFlags");o(MPe,"findDuplicatePatterns");o(IPe,"findInvalidGroupType");o(OPe,"findModesThatDoNotExist");o(PPe,"findUnreachablePatterns");o(BPe,"testTokenType");o(FPe,"noMetaChar");o(Gae,"addStartOfInput");o(Vae,"addStickyFlag");o(Wae,"performRuntimeChecks");o(qae,"performWarningRuntimeChecks");o(Yae,"cloneEmptyGroups");o(Xae,"isCustomPattern");o($Pe,"isShortPattern");jae={test:o(function(t){let e=t.length;for(let r=this.lastIndex;r{r.isParent=r.categoryMatches.length>0})}function VPe(t){let e=an(t),r=t,n=!0;for(;n;){r=Tc(qr(Je(r,a=>a.CATEGORIES)));let i=Zh(r,e);e=e.concat(i),ur(i)?n=!1:r=i}return e}function UPe(t){Ae(t,e=>{_N(e)||(ese[Zae]=e,e.tokenTypeIdx=Zae++),Jae(e)&&!Pt(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Jae(e)||(e.CATEGORIES=[]),qPe(e)||(e.categoryMatches=[]),YPe(e)||(e.categoryMatchesMap={})})}function HPe(t){Ae(t,e=>{e.categoryMatches=[],Ae(e.categoryMatchesMap,(r,n)=>{e.categoryMatches.push(ese[n].tokenTypeIdx)})})}function WPe(t){Ae(t,e=>{tse([],e)})}function tse(t,e){Ae(t,r=>{e.categoryMatchesMap[r.tokenTypeIdx]=!0}),Ae(e.CATEGORIES,r=>{let n=t.concat(e);qn(n,r)||tse(n,r)})}function _N(t){return Bt(t,"tokenTypeIdx")}function Jae(t){return Bt(t,"CATEGORIES")}function qPe(t){return Bt(t,"categoryMatches")}function YPe(t){return Bt(t,"categoryMatchesMap")}function rse(t){return Bt(t,"tokenTypeIdx")}var Zae,ese,cp=N(()=>{"use strict";qt();o(Pu,"tokenStructuredMatcher");o(zg,"tokenStructuredMatcherNoCategories");Zae=1,ese={};o(Bu,"augmentTokenTypes");o(VPe,"expandCategories");o(UPe,"assignTokenDefaultProps");o(HPe,"assignCategoriesTokensProp");o(WPe,"assignCategoriesMapProp");o(tse,"singleAssignCategoriesToksMap");o(_N,"hasShortKeyProperty");o(Jae,"hasCategoriesProperty");o(qPe,"hasExtendingTokensTypesProperty");o(YPe,"hasExtendingTokensTypesMapProperty");o(rse,"isTokenType")});var Gg,DN=N(()=>{"use strict";Gg={buildUnableToPopLexerModeMessage(t){return`Unable to pop Lexer Mode after encountering Token ->${t.image}<- The Mode Stack is empty`},buildUnexpectedCharactersMessage(t,e,r,n,i){return`unexpected character: ->${t.charAt(e)}<- at offset: ${e}, skipped ${r} characters.`}}});var Yn,ax,Xn,ix=N(()=>{"use strict";SN();qt();Og();cp();DN();Lk();(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",t[t.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"})(Yn||(Yn={}));ax={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:Gg,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(ax);Xn=class{static{o(this,"Lexer")}constructor(e,r=ax){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(i,a)=>{if(this.traceInitPerf===!0){this.traceInitIndent++;let s=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${i}>`);let{time:l,value:u}=tx(a),h=l>10?console.warn:console.log;return this.traceInitIndent time: ${l}ms`),this.traceInitIndent--,u}else return a()},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=ma({},ax,r);let n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let i,a=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===ax.lineTerminatorsPattern)this.config.lineTerminatorsPattern=jae;else if(this.config.lineTerminatorCharacters===ax.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(r.safeMode&&r.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),Pt(e)?i={modes:{defaultMode:an(e)},defaultMode:$g}:(a=!1,i=an(e))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Wae(i,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(qae(i,this.trackStartLines,this.config.lineTerminatorCharacters))})),i.modes=i.modes?i.modes:{},Ae(i.modes,(l,u)=>{i.modes[u]=Jh(l,h=>pr(h))});let s=zr(i.modes);if(Ae(i.modes,(l,u)=>{this.TRACE_INIT(`Mode: <${u}> processing`,()=>{if(this.modes.push(u),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Hae(l,s))}),ur(this.lexerDefinitionErrors)){Bu(l);let h;this.TRACE_INIT("analyzeTokenTypes",()=>{h=Uae(l,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[u]=h.patternIdxToConfig,this.charCodeToPatternIdxToConfig[u]=h.charCodeToPatternIdxToConfig,this.emptyGroups=ma({},this.emptyGroups,h.emptyGroups),this.hasCustom=h.hasCustom||this.hasCustom,this.canModeBeOptimized[u]=h.canBeOptimized}})}),this.defaultMode=i.defaultMode,!ur(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){let u=Je(this.lexerDefinitionErrors,h=>h.message).join(`----------------------- +`);throw new Error(`Errors detected in definition of Lexer: +`+u)}Ae(this.lexerDefinitionWarning,l=>{ex(l.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(AN?(this.chopInput=ta,this.match=this.matchWithTest):(this.updateLastIndex=ni,this.match=this.matchWithExec),a&&(this.handleModes=ni),this.trackStartLines===!1&&(this.computeNewColumn=ta),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=ni),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else if(/onlyOffset/i.test(this.config.positionTracking))this.createTokenInstance=this.createOffsetOnlyToken;else throw Error(`Invalid config option: "${this.config.positionTracking}"`);this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{let l=Xr(this.canModeBeOptimized,(u,h,f)=>(h===!1&&u.push(f),u),[]);if(r.ensureOptimizations&&!ur(l))throw Error(`Lexer Modes: < ${l.join(", ")} > cannot be optimized. + Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. + Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{Pae()}),this.TRACE_INIT("toFastProperties",()=>{rx(this)})})}tokenize(e,r=this.defaultMode){if(!ur(this.lexerDefinitionErrors)){let i=Je(this.lexerDefinitionErrors,a=>a.message).join(`----------------------- +`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: +`+i)}return this.tokenizeInternal(e,r)}tokenizeInternal(e,r){let n,i,a,s,l,u,h,f,d,p,m,g,y,v,x,b,w=e,C=w.length,T=0,E=0,A=this.hasCustom?0:Math.floor(e.length/10),S=new Array(A),_=[],I=this.trackStartLines?1:void 0,D=this.trackStartLines?1:void 0,k=Yae(this.emptyGroups),L=this.trackStartLines,R=this.config.lineTerminatorsPattern,O=0,M=[],B=[],F=[],P=[];Object.freeze(P);let z;function $(){return M}o($,"getPossiblePatternsSlow");function H(le){let he=Ic(le),K=B[he];return K===void 0?P:K}o(H,"getPossiblePatternsOptimized");let Q=o(le=>{if(F.length===1&&le.tokenType.PUSH_MODE===void 0){let he=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(le);_.push({offset:le.startOffset,line:le.startLine,column:le.startColumn,length:le.image.length,message:he})}else{F.pop();let he=ga(F);M=this.patternIdxToConfig[he],B=this.charCodeToPatternIdxToConfig[he],O=M.length;let K=this.canModeBeOptimized[he]&&this.config.safeMode===!1;B&&K?z=H:z=$}},"pop_mode");function j(le){F.push(le),B=this.charCodeToPatternIdxToConfig[le],M=this.patternIdxToConfig[le],O=M.length,O=M.length;let he=this.canModeBeOptimized[le]&&this.config.safeMode===!1;B&&he?z=H:z=$}o(j,"push_mode"),j.call(this,r);let ie,ne=this.config.recoveryEnabled;for(;Tu.length){u=s,h=f,ie=se;break}}}break}}if(u!==null){if(d=u.length,p=ie.group,p!==void 0&&(m=ie.tokenTypeIdx,g=this.createTokenInstance(u,T,m,ie.tokenType,I,D,d),this.handlePayload(g,h),p===!1?E=this.addToken(S,E,g):k[p].push(g)),e=this.chopInput(e,d),T=T+d,D=this.computeNewColumn(D,d),L===!0&&ie.canLineTerminator===!0){let X=0,te,J;R.lastIndex=0;do te=R.test(u),te===!0&&(J=R.lastIndex-1,X++);while(te===!0);X!==0&&(I=I+X,D=d-J,this.updateTokenEndLineColumnLocation(g,p,J,X,I,D,d))}this.handleModes(ie,Q,j,g)}else{let X=T,te=I,J=D,se=ne===!1;for(;se===!1&&T{"use strict";qt();ix();cp();o(Fu,"tokenLabel");o(LN,"hasTokenLabel");XPe="parent",nse="categories",ise="label",ase="group",sse="push_mode",ose="pop_mode",lse="longer_alt",cse="line_breaks",use="start_chars_hint";o(of,"createToken");o(jPe,"createTokenInternal");lo=of({name:"EOF",pattern:Xn.NA});Bu([lo]);o($u,"createTokenInstance");o(sx,"tokenMatcher")});var zu,hse,Pl,Vg=N(()=>{"use strict";up();qt();os();zu={buildMismatchTokenMessage({expected:t,actual:e,previous:r,ruleName:n}){return`Expecting ${LN(t)?`--> ${Fu(t)} <--`:`token of type --> ${t.name} <--`} but found --> '${e.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:t,ruleName:e}){return"Redundant input, expecting EOF but found: "+t.image},buildNoViableAltMessage({expectedPathsPerAlt:t,actual:e,previous:r,customUserDescription:n,ruleName:i}){let a="Expecting: ",l=` +but found: '`+ia(e).image+"'";if(n)return a+n+l;{let u=Xr(t,(p,m)=>p.concat(m),[]),h=Je(u,p=>`[${Je(p,m=>Fu(m)).join(", ")}]`),d=`one of these possible Token sequences: +${Je(h,(p,m)=>` ${m+1}. ${p}`).join(` +`)}`;return a+d+l}},buildEarlyExitMessage({expectedIterationPaths:t,actual:e,customUserDescription:r,ruleName:n}){let i="Expecting: ",s=` +but found: '`+ia(e).image+"'";if(r)return i+r+s;{let u=`expecting at least one iteration which starts with one of these possible Token sequences:: + <${Je(t,h=>`[${Je(h,f=>Fu(f)).join(",")}]`).join(" ,")}>`;return i+u+s}}};Object.freeze(zu);hse={buildRuleNotFoundError(t,e){return"Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- +inside top level rule: ->`+t.name+"<-"}},Pl={buildDuplicateFoundError(t,e){function r(f){return f instanceof kr?f.terminalType.name:f instanceof on?f.nonTerminalName:""}o(r,"getExtraProductionArgument");let n=t.name,i=ia(e),a=i.idx,s=Bs(i),l=r(i),u=a>0,h=`->${s}${u?a:""}<- ${l?`with argument: ->${l}<-`:""} + appears more than once (${e.length} times) in the top level rule: ->${n}<-. + For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES + `;return h=h.replace(/[ \t]+/g," "),h=h.replace(/\s\s+/g,` +`),h},buildNamespaceConflictError(t){return`Namespace conflict found in grammar. +The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${t.name}>. +To resolve this make sure each Terminal and Non-Terminal names are unique +This is easy to accomplish by using the convention that Terminal names start with an uppercase letter +and Non-Terminal names start with a lower case letter.`},buildAlternationPrefixAmbiguityError(t){let e=Je(t.prefixPath,i=>Fu(i)).join(", "),r=t.alternation.idx===0?"":t.alternation.idx;return`Ambiguous alternatives: <${t.ambiguityIndices.join(" ,")}> due to common lookahead prefix +in inside <${t.topLevelRule.name}> Rule, +<${e}> may appears as a prefix path in all these alternatives. +See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX +For Further details.`},buildAlternationAmbiguityError(t){let e=Je(t.prefixPath,i=>Fu(i)).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(" ,")}> in inside <${t.topLevelRule.name}> Rule, +<${e}> may appears as a prefix path in all these alternatives. +`;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,n},buildEmptyRepetitionError(t){let e=Bs(t.repetition);return t.repetition.idx!==0&&(e+=t.repetition.idx),`The repetition <${e}> within Rule <${t.topLevelRule.name}> can never consume any tokens. +This could lead to an infinite loop.`},buildTokenNameError(t){return"deprecated"},buildEmptyAlternationError(t){return`Ambiguous empty alternative: <${t.emptyChoiceIdx+1}> in inside <${t.topLevelRule.name}> Rule. +Only the last alternative may be an empty alternative.`},buildTooManyAlternativesError(t){return`An Alternation cannot have more than 256 alternatives: + inside <${t.topLevelRule.name}> Rule. + has ${t.alternation.definition.length+1} alternatives.`},buildLeftRecursionError(t){let e=t.topLevelRule.name,r=Je(t.leftRecursionPath,a=>a.name),n=`${e} --> ${r.concat([e]).join(" --> ")}`;return`Left Recursion found in grammar. +rule: <${e}> can be invoked from itself (directly or indirectly) +without consuming any Tokens. The grammar path that causes this is: + ${n} + To fix this refactor your grammar to remove the left recursion. +see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError(t){return"deprecated"},buildDuplicateRuleNameError(t){let e;return t.topLevelRule instanceof as?e=t.topLevelRule.name:e=t.topLevelRule,`Duplicate definition, rule: ->${e}<- is already defined in the grammar: ->${t.grammarName}<-`}}});function fse(t,e){let r=new RN(t,e);return r.resolveRefs(),r.errors}var RN,dse=N(()=>{"use strict";Fs();qt();os();o(fse,"resolveGrammar");RN=class extends ss{static{o(this,"GastRefResolverVisitor")}constructor(e,r){super(),this.nameToTopRule=e,this.errMsgProvider=r,this.errors=[]}resolveRefs(){Ae(br(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){let r=this.nameToTopRule[e.nonTerminalName];if(r)e.referencedRule=r;else{let n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:n,type:zi.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}}});function Fk(t,e,r=[]){r=an(r);let n=[],i=0;function a(l){return l.concat(gi(t,i+1))}o(a,"remainingPathWith");function s(l){let u=Fk(a(l),e,r);return n.concat(u)}for(o(s,"getAlternativesForProd");r.length{ur(u.definition)===!1&&(n=s(u.definition))}),n;if(l instanceof kr)r.push(l.terminalType);else throw Error("non exhaustive match")}i++}return n.push({partialPath:r,suffixDef:gi(t,i)}),n}function $k(t,e,r,n){let i="EXIT_NONE_TERMINAL",a=[i],s="EXIT_ALTERNATIVE",l=!1,u=e.length,h=u-n-1,f=[],d=[];for(d.push({idx:-1,def:t,ruleStack:[],occurrenceStack:[]});!ur(d);){let p=d.pop();if(p===s){l&&ga(d).idx<=h&&d.pop();continue}let m=p.def,g=p.idx,y=p.ruleStack,v=p.occurrenceStack;if(ur(m))continue;let x=m[0];if(x===i){let b={idx:g,def:gi(m),ruleStack:Nu(y),occurrenceStack:Nu(v)};d.push(b)}else if(x instanceof kr)if(g=0;b--){let w=x.definition[b],C={idx:g,def:w.definition.concat(gi(m)),ruleStack:y,occurrenceStack:v};d.push(C),d.push(s)}else if(x instanceof Dn)d.push({idx:g,def:x.definition.concat(gi(m)),ruleStack:y,occurrenceStack:v});else if(x instanceof as)d.push(KPe(x,g,y,v));else throw Error("non exhaustive match")}return f}function KPe(t,e,r,n){let i=an(r);i.push(t.name);let a=an(n);return a.push(1),{idx:e,def:t.definition,ruleStack:i,occurrenceStack:a}}var NN,Ok,Ug,Pk,ox,Bk,lx,cx=N(()=>{"use strict";qt();xN();Ak();os();NN=class extends Ou{static{o(this,"AbstractNextPossibleTokensWalker")}constructor(e,r){super(),this.topProd=e,this.path=r,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=an(this.path.ruleStack).reverse(),this.occurrenceStack=an(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,r=[]){this.found||super.walk(e,r)}walkProdRef(e,r,n){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){let i=r.concat(n);this.updateExpectedNext(),this.walk(e.referencedRule,i)}}updateExpectedNext(){ur(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},Ok=class extends NN{static{o(this,"NextAfterTokenWalker")}constructor(e,r){super(e,r),this.path=r,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,r,n){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){let i=r.concat(n),a=new Dn({definition:i});this.possibleTokTypes=op(a),this.found=!0}}},Ug=class extends Ou{static{o(this,"AbstractNextTerminalAfterProductionWalker")}constructor(e,r){super(),this.topRule=e,this.occurrence=r,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}},Pk=class extends Ug{static{o(this,"NextTerminalAfterManyWalker")}walkMany(e,r,n){if(e.idx===this.occurrence){let i=ia(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof kr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkMany(e,r,n)}},ox=class extends Ug{static{o(this,"NextTerminalAfterManySepWalker")}walkManySep(e,r,n){if(e.idx===this.occurrence){let i=ia(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof kr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkManySep(e,r,n)}},Bk=class extends Ug{static{o(this,"NextTerminalAfterAtLeastOneWalker")}walkAtLeastOne(e,r,n){if(e.idx===this.occurrence){let i=ia(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof kr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOne(e,r,n)}},lx=class extends Ug{static{o(this,"NextTerminalAfterAtLeastOneSepWalker")}walkAtLeastOneSep(e,r,n){if(e.idx===this.occurrence){let i=ia(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof kr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOneSep(e,r,n)}};o(Fk,"possiblePathsFrom");o($k,"nextPossibleTokensAfter");o(KPe,"expandTopLevelRule")});function ux(t){if(t instanceof ln||t==="Option")return jn.OPTION;if(t instanceof Or||t==="Repetition")return jn.REPETITION;if(t instanceof Ln||t==="RepetitionMandatory")return jn.REPETITION_MANDATORY;if(t instanceof Rn||t==="RepetitionMandatoryWithSeparator")return jn.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof wn||t==="RepetitionWithSeparator")return jn.REPETITION_WITH_SEPARATOR;if(t instanceof Tn||t==="Alternation")return jn.ALTERNATION;throw Error("non exhaustive match")}function Gk(t){let{occurrence:e,rule:r,prodType:n,maxLookahead:i}=t,a=ux(n);return a===jn.ALTERNATION?Hg(e,r,i):Wg(e,r,a,i)}function mse(t,e,r,n,i,a){let s=Hg(t,e,r),l=wse(s)?zg:Pu;return a(s,n,l,i)}function gse(t,e,r,n,i,a){let s=Wg(t,e,i,r),l=wse(s)?zg:Pu;return a(s[0],l,n)}function yse(t,e,r,n){let i=t.length,a=Ma(t,s=>Ma(s,l=>l.length===1));if(e)return function(s){let l=Je(s,u=>u.GATE);for(let u=0;uqr(u)),l=Xr(s,(u,h,f)=>(Ae(h,d=>{Bt(u,d.tokenTypeIdx)||(u[d.tokenTypeIdx]=f),Ae(d.categoryMatches,p=>{Bt(u,p)||(u[p]=f)})}),u),{});return function(){let u=this.LA(1);return l[u.tokenTypeIdx]}}else return function(){for(let s=0;sa.length===1),i=t.length;if(n&&!r){let a=qr(t);if(a.length===1&&ur(a[0].categoryMatches)){let l=a[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===l}}else{let s=Xr(a,(l,u,h)=>(l[u.tokenTypeIdx]=!0,Ae(u.categoryMatches,f=>{l[f]=!0}),l),[]);return function(){let l=this.LA(1);return s[l.tokenTypeIdx]===!0}}}else return function(){e:for(let a=0;aFk([s],1)),n=pse(r.length),i=Je(r,s=>{let l={};return Ae(s,u=>{let h=MN(u.partialPath);Ae(h,f=>{l[f]=!0})}),l}),a=r;for(let s=1;s<=e;s++){let l=a;a=pse(l.length);for(let u=0;u{let x=MN(v.partialPath);Ae(x,b=>{i[u][b]=!0})})}}}}return n}function Hg(t,e,r,n){let i=new zk(t,jn.ALTERNATION,n);return e.accept(i),xse(i.result,r)}function Wg(t,e,r,n){let i=new zk(t,r);e.accept(i);let a=i.result,l=new IN(e,t,r).startWalking(),u=new Dn({definition:a}),h=new Dn({definition:l});return xse([u,h],n)}function Vk(t,e){e:for(let r=0;r{let i=e[n];return r===i||i.categoryMatchesMap[r.tokenTypeIdx]})}function wse(t){return Ma(t,e=>Ma(e,r=>Ma(r,n=>ur(n.categoryMatches))))}var jn,IN,zk,qg=N(()=>{"use strict";qt();cx();Ak();cp();os();(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(jn||(jn={}));o(ux,"getProdType");o(Gk,"getLookaheadPaths");o(mse,"buildLookaheadFuncForOr");o(gse,"buildLookaheadFuncForOptionalProd");o(yse,"buildAlternativesLookAheadFunc");o(vse,"buildSingleAlternativeLookaheadFunction");IN=class extends Ou{static{o(this,"RestDefinitionFinderWalker")}constructor(e,r,n){super(),this.topProd=e,this.targetOccurrence=r,this.targetProdType=n}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(e,r,n,i){return e.idx===this.targetOccurrence&&this.targetProdType===r?(this.restDef=n.concat(i),!0):!1}walkOption(e,r,n){this.checkIsTarget(e,jn.OPTION,r,n)||super.walkOption(e,r,n)}walkAtLeastOne(e,r,n){this.checkIsTarget(e,jn.REPETITION_MANDATORY,r,n)||super.walkOption(e,r,n)}walkAtLeastOneSep(e,r,n){this.checkIsTarget(e,jn.REPETITION_MANDATORY_WITH_SEPARATOR,r,n)||super.walkOption(e,r,n)}walkMany(e,r,n){this.checkIsTarget(e,jn.REPETITION,r,n)||super.walkOption(e,r,n)}walkManySep(e,r,n){this.checkIsTarget(e,jn.REPETITION_WITH_SEPARATOR,r,n)||super.walkOption(e,r,n)}},zk=class extends ss{static{o(this,"InsideDefinitionFinderVisitor")}constructor(e,r,n){super(),this.targetOccurrence=e,this.targetProdType=r,this.targetRef=n,this.result=[]}checkIsTarget(e,r){e.idx===this.targetOccurrence&&this.targetProdType===r&&(this.targetRef===void 0||e===this.targetRef)&&(this.result=e.definition)}visitOption(e){this.checkIsTarget(e,jn.OPTION)}visitRepetition(e){this.checkIsTarget(e,jn.REPETITION)}visitRepetitionMandatory(e){this.checkIsTarget(e,jn.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(e){this.checkIsTarget(e,jn.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(e){this.checkIsTarget(e,jn.REPETITION_WITH_SEPARATOR)}visitAlternation(e){this.checkIsTarget(e,jn.ALTERNATION)}};o(pse,"initializeArrayOfArrays");o(MN,"pathToHashKeys");o(QPe,"isUniquePrefixHash");o(xse,"lookAheadSequenceFromAlternatives");o(Hg,"getLookaheadPathsForOr");o(Wg,"getLookaheadPathsForOptionalProd");o(Vk,"containsPath");o(bse,"isStrictPrefixOfPath");o(wse,"areTokenCategoriesNotUsed")});function Tse(t){let e=t.lookaheadStrategy.validate({rules:t.rules,tokenTypes:t.tokenTypes,grammarName:t.grammarName});return Je(e,r=>Object.assign({type:zi.CUSTOM_LOOKAHEAD_VALIDATION},r))}function kse(t,e,r,n){let i=ya(t,u=>ZPe(u,r)),a=iBe(t,e,r),s=ya(t,u=>tBe(u,r)),l=ya(t,u=>eBe(u,t,n,r));return i.concat(a,s,l)}function ZPe(t,e){let r=new ON;t.accept(r);let n=r.allProductions,i=IL(n,JPe),a=Os(i,l=>l.length>1);return Je(br(a),l=>{let u=ia(l),h=e.buildDuplicateFoundError(t,l),f=Bs(u),d={message:h,type:zi.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:f,occurrence:u.idx},p=Ese(u);return p&&(d.parameter=p),d})}function JPe(t){return`${Bs(t)}_#_${t.idx}_#_${Ese(t)}`}function Ese(t){return t instanceof kr?t.terminalType.name:t instanceof on?t.nonTerminalName:""}function eBe(t,e,r,n){let i=[];if(Xr(e,(s,l)=>l.name===t.name?s+1:s,0)>1){let s=n.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});i.push({message:s,type:zi.DUPLICATE_RULE_NAME,ruleName:t.name})}return i}function Sse(t,e,r){let n=[],i;return qn(e,t)||(i=`Invalid rule override, rule: ->${t}<- cannot be overridden in the grammar: ->${r}<-as it is not defined in any of the super grammars `,n.push({message:i,type:zi.INVALID_RULE_OVERRIDE,ruleName:t})),n}function BN(t,e,r,n=[]){let i=[],a=Uk(e.definition);if(ur(a))return[];{let s=t.name;qn(a,t)&&i.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:n}),type:zi.LEFT_RECURSION,ruleName:s});let u=Zh(a,n.concat([t])),h=ya(u,f=>{let d=an(n);return d.push(f),BN(t,f,r,d)});return i.concat(h)}}function Uk(t){let e=[];if(ur(t))return e;let r=ia(t);if(r instanceof on)e.push(r.referencedRule);else if(r instanceof Dn||r instanceof ln||r instanceof Ln||r instanceof Rn||r instanceof wn||r instanceof Or)e=e.concat(Uk(r.definition));else if(r instanceof Tn)e=qr(Je(r.definition,a=>Uk(a.definition)));else if(!(r instanceof kr))throw Error("non exhaustive match");let n=sp(r),i=t.length>1;if(n&&i){let a=gi(t);return e.concat(Uk(a))}else return e}function Cse(t,e){let r=new hx;t.accept(r);let n=r.alternations;return ya(n,a=>{let s=Nu(a.definition);return ya(s,(l,u)=>{let h=$k([l],[],Pu,1);return ur(h)?[{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:a,emptyChoiceIdx:u}),type:zi.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:a.idx,alternative:u+1}]:[]})})}function Ase(t,e,r){let n=new hx;t.accept(n);let i=n.alternations;return i=Jh(i,s=>s.ignoreAmbiguities===!0),ya(i,s=>{let l=s.idx,u=s.maxLookahead||e,h=Hg(l,t,u,s),f=rBe(h,s,t,r),d=nBe(h,s,t,r);return f.concat(d)})}function tBe(t,e){let r=new hx;t.accept(r);let n=r.alternations;return ya(n,a=>a.definition.length>255?[{message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:a}),type:zi.TOO_MANY_ALTS,ruleName:t.name,occurrence:a.idx}]:[])}function _se(t,e,r){let n=[];return Ae(t,i=>{let a=new PN;i.accept(a);let s=a.allProductions;Ae(s,l=>{let u=ux(l),h=l.maxLookahead||e,f=l.idx,p=Wg(f,i,u,h)[0];if(ur(qr(p))){let m=r.buildEmptyRepetitionError({topLevelRule:i,repetition:l});n.push({message:m,type:zi.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),n}function rBe(t,e,r,n){let i=[],a=Xr(t,(l,u,h)=>(e.definition[h].ignoreAmbiguities===!0||Ae(u,f=>{let d=[h];Ae(t,(p,m)=>{h!==m&&Vk(p,f)&&e.definition[m].ignoreAmbiguities!==!0&&d.push(m)}),d.length>1&&!Vk(i,f)&&(i.push(f),l.push({alts:d,path:f}))}),l),[]);return Je(a,l=>{let u=Je(l.alts,f=>f+1);return{message:n.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:u,prefixPath:l.path}),type:zi.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:l.alts}})}function nBe(t,e,r,n){let i=Xr(t,(s,l,u)=>{let h=Je(l,f=>({idx:u,path:f}));return s.concat(h)},[]);return Tc(ya(i,s=>{if(e.definition[s.idx].ignoreAmbiguities===!0)return[];let u=s.idx,h=s.path,f=Yr(i,p=>e.definition[p.idx].ignoreAmbiguities!==!0&&p.idx{let m=[p.idx+1,u+1],g=e.idx===0?"":e.idx;return{message:n.buildAlternationPrefixAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:m,prefixPath:p.path}),type:zi.AMBIGUOUS_PREFIX_ALTS,ruleName:r.name,occurrence:g,alternatives:m}})}))}function iBe(t,e,r){let n=[],i=Je(e,a=>a.name);return Ae(t,a=>{let s=a.name;if(qn(i,s)){let l=r.buildNamespaceConflictError(a);n.push({message:l,type:zi.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:s})}}),n}var ON,hx,PN,fx=N(()=>{"use strict";qt();Fs();os();qg();cx();cp();o(Tse,"validateLookahead");o(kse,"validateGrammar");o(ZPe,"validateDuplicateProductions");o(JPe,"identifyProductionForDuplicates");o(Ese,"getExtraProductionArgument");ON=class extends ss{static{o(this,"OccurrenceValidationCollector")}constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}};o(eBe,"validateRuleDoesNotAlreadyExist");o(Sse,"validateRuleIsOverridden");o(BN,"validateNoLeftRecursion");o(Uk,"getFirstNoneTerminal");hx=class extends ss{static{o(this,"OrCollector")}constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}};o(Cse,"validateEmptyOrAlternative");o(Ase,"validateAmbiguousAlternationAlternatives");PN=class extends ss{static{o(this,"RepetitionCollector")}constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}};o(tBe,"validateTooManyAlts");o(_se,"validateSomeNonEmptyLookaheadPath");o(rBe,"checkAlternativesAmbiguities");o(nBe,"checkPrefixAlternativesAmbiguities");o(iBe,"checkTerminalAndNoneTerminalsNameSpace")});function Dse(t){let e=Qh(t,{errMsgProvider:hse}),r={};return Ae(t.rules,n=>{r[n.name]=n}),fse(r,e.errMsgProvider)}function Lse(t){return t=Qh(t,{errMsgProvider:Pl}),kse(t.rules,t.tokenTypes,t.errMsgProvider,t.grammarName)}var Rse=N(()=>{"use strict";qt();dse();fx();Vg();o(Dse,"resolveGrammar");o(Lse,"validateGrammar")});function lf(t){return qn(Pse,t.name)}var Nse,Mse,Ise,Ose,Pse,Yg,hp,dx,px,mx,Xg=N(()=>{"use strict";qt();Nse="MismatchedTokenException",Mse="NoViableAltException",Ise="EarlyExitException",Ose="NotAllInputParsedException",Pse=[Nse,Mse,Ise,Ose];Object.freeze(Pse);o(lf,"isRecognitionException");Yg=class extends Error{static{o(this,"RecognitionException")}constructor(e,r){super(e),this.token=r,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},hp=class extends Yg{static{o(this,"MismatchedTokenException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=Nse}},dx=class extends Yg{static{o(this,"NoViableAltException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=Mse}},px=class extends Yg{static{o(this,"NotAllInputParsedException")}constructor(e,r){super(e,r),this.name=Ose}},mx=class extends Yg{static{o(this,"EarlyExitException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=Ise}}});function aBe(t,e,r,n,i,a,s){let l=this.getKeyForAutomaticLookahead(n,i),u=this.firstAfterRepMap[l];if(u===void 0){let p=this.getCurrRuleFullName(),m=this.getGAstProductions()[p];u=new a(m,i).startWalking(),this.firstAfterRepMap[l]=u}let h=u.token,f=u.occurrence,d=u.isEndOfRule;this.RULE_STACK.length===1&&d&&h===void 0&&(h=lo,f=1),!(h===void 0||f===void 0)&&this.shouldInRepetitionRecoveryBeTried(h,f,s)&&this.tryInRepetitionRecovery(t,e,r,h)}var FN,zN,$N,Hk,GN=N(()=>{"use strict";up();qt();Xg();bN();Fs();FN={},zN="InRuleRecoveryException",$N=class extends Error{static{o(this,"InRuleRecoveryException")}constructor(e){super(e),this.name=zN}},Hk=class{static{o(this,"Recoverable")}initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=Bt(e,"recoveryEnabled")?e.recoveryEnabled:ls.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=aBe)}getTokenToInsert(e){let r=$u(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,r,n,i){let a=this.findReSyncTokenType(),s=this.exportLexerState(),l=[],u=!1,h=this.LA(1),f=this.LA(1),d=o(()=>{let p=this.LA(0),m=this.errorMessageProvider.buildMismatchTokenMessage({expected:i,actual:h,previous:p,ruleName:this.getCurrRuleFullName()}),g=new hp(m,h,this.LA(0));g.resyncedTokens=Nu(l),this.SAVE_ERROR(g)},"generateErrorMessage");for(;!u;)if(this.tokenMatcher(f,i)){d();return}else if(n.call(this)){d(),e.apply(this,r);return}else this.tokenMatcher(f,a)?u=!0:(f=this.SKIP_TOKEN(),this.addToResyncTokens(f,l));this.importLexerState(s)}shouldInRepetitionRecoveryBeTried(e,r,n){return!(n===!1||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))}getFollowsForInRuleRecovery(e,r){let n=this.getCurrentGrammarPath(e,r);return this.getNextPossibleTokenTypes(n)}tryInRuleRecovery(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){let n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new $N("sad sad panda")}canPerformInRuleRecovery(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,r){if(!this.canTokenTypeBeInsertedInRecovery(e)||ur(r))return!1;let n=this.LA(1);return ns(r,a=>this.tokenMatcher(n,a))!==void 0}canRecoverWithSingleTokenDeletion(e){return this.canTokenTypeBeDeletedInRecovery(e)?this.tokenMatcher(this.LA(2),e):!1}isInCurrentRuleReSyncSet(e){let r=this.getCurrFollowKey(),n=this.getFollowSetFromFollowKey(r);return qn(n,e)}findReSyncTokenType(){let e=this.flattenFollowSet(),r=this.LA(1),n=2;for(;;){let i=ns(e,a=>sx(r,a));if(i!==void 0)return i;r=this.LA(n),n++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return FN;let e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(n)}}buildFullFollowKeyStack(){let e=this.RULE_STACK,r=this.RULE_OCCURRENCE_STACK;return Je(e,(n,i)=>i===0?FN:{ruleName:this.shortRuleNameToFullName(n),idxInCallingRule:r[i],inRule:this.shortRuleNameToFullName(e[i-1])})}flattenFollowSet(){let e=Je(this.buildFullFollowKeyStack(),r=>this.getFollowSetFromFollowKey(r));return qr(e)}getFollowSetFromFollowKey(e){if(e===FN)return[lo];let r=e.ruleName+e.idxInCallingRule+_k+e.inRule;return this.resyncFollows[r]}addToResyncTokens(e,r){return this.tokenMatcher(e,lo)||r.push(e),r}reSyncTo(e){let r=[],n=this.LA(1);for(;this.tokenMatcher(n,e)===!1;)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,r);return Nu(r)}attemptInRepetitionRecovery(e,r,n,i,a,s,l){}getCurrentGrammarPath(e,r){let n=this.getHumanReadableRuleStack(),i=an(this.RULE_OCCURRENCE_STACK);return{ruleStack:n,occurrenceStack:i,lastTok:e,lastTokOccurrence:r}}getHumanReadableRuleStack(){return Je(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}};o(aBe,"attemptInRepetitionRecovery")});function Wk(t,e,r){return r|e|t}var qk=N(()=>{"use strict";o(Wk,"getKeyForAutomaticLookahead")});var Gu,VN=N(()=>{"use strict";qt();Vg();Fs();fx();qg();Gu=class{static{o(this,"LLkLookaheadStrategy")}constructor(e){var r;this.maxLookahead=(r=e?.maxLookahead)!==null&&r!==void 0?r:ls.maxLookahead}validate(e){let r=this.validateNoLeftRecursion(e.rules);if(ur(r)){let n=this.validateEmptyOrAlternatives(e.rules),i=this.validateAmbiguousAlternationAlternatives(e.rules,this.maxLookahead),a=this.validateSomeNonEmptyLookaheadPath(e.rules,this.maxLookahead);return[...r,...n,...i,...a]}return r}validateNoLeftRecursion(e){return ya(e,r=>BN(r,r,Pl))}validateEmptyOrAlternatives(e){return ya(e,r=>Cse(r,Pl))}validateAmbiguousAlternationAlternatives(e,r){return ya(e,n=>Ase(n,r,Pl))}validateSomeNonEmptyLookaheadPath(e,r){return _se(e,r,Pl)}buildLookaheadForAlternation(e){return mse(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,yse)}buildLookaheadForOptional(e){return gse(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,ux(e.prodType),vse)}}});function sBe(t){Yk.reset(),t.accept(Yk);let e=Yk.dslMethods;return Yk.reset(),e}var Xk,UN,Yk,Bse=N(()=>{"use strict";qt();Fs();qk();os();VN();Xk=class{static{o(this,"LooksAhead")}initLooksAhead(e){this.dynamicTokensEnabled=Bt(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:ls.dynamicTokensEnabled,this.maxLookahead=Bt(e,"maxLookahead")?e.maxLookahead:ls.maxLookahead,this.lookaheadStrategy=Bt(e,"lookaheadStrategy")?e.lookaheadStrategy:new Gu({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){Ae(e,r=>{this.TRACE_INIT(`${r.name} Rule Lookahead`,()=>{let{alternation:n,repetition:i,option:a,repetitionMandatory:s,repetitionMandatoryWithSeparator:l,repetitionWithSeparator:u}=sBe(r);Ae(n,h=>{let f=h.idx===0?"":h.idx;this.TRACE_INIT(`${Bs(h)}${f}`,()=>{let d=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:h.idx,rule:r,maxLookahead:h.maxLookahead||this.maxLookahead,hasPredicates:h.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),p=Wk(this.fullRuleNameToShort[r.name],256,h.idx);this.setLaFuncCache(p,d)})}),Ae(i,h=>{this.computeLookaheadFunc(r,h.idx,768,"Repetition",h.maxLookahead,Bs(h))}),Ae(a,h=>{this.computeLookaheadFunc(r,h.idx,512,"Option",h.maxLookahead,Bs(h))}),Ae(s,h=>{this.computeLookaheadFunc(r,h.idx,1024,"RepetitionMandatory",h.maxLookahead,Bs(h))}),Ae(l,h=>{this.computeLookaheadFunc(r,h.idx,1536,"RepetitionMandatoryWithSeparator",h.maxLookahead,Bs(h))}),Ae(u,h=>{this.computeLookaheadFunc(r,h.idx,1280,"RepetitionWithSeparator",h.maxLookahead,Bs(h))})})})}computeLookaheadFunc(e,r,n,i,a,s){this.TRACE_INIT(`${s}${r===0?"":r}`,()=>{let l=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:r,rule:e,maxLookahead:a||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:i}),u=Wk(this.fullRuleNameToShort[e.name],n,r);this.setLaFuncCache(u,l)})}getKeyForAutomaticLookahead(e,r){let n=this.getLastExplicitRuleShortName();return Wk(n,e,r)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,r){this.lookAheadFuncsCache.set(e,r)}},UN=class extends ss{static{o(this,"DslMethodsCollectorVisitor")}constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}},Yk=new UN;o(sBe,"collectMethods")});function qN(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{"use strict";o(qN,"setNodeLocationOnlyOffset");o(YN,"setNodeLocationFull");o(Fse,"addTerminalToCst");o($se,"addNoneTerminalToCst")});function XN(t,e){Object.defineProperty(t,oBe,{enumerable:!1,configurable:!0,writable:!1,value:e})}var oBe,Gse=N(()=>{"use strict";oBe="name";o(XN,"defineNameProp")});function lBe(t,e){let r=zr(t),n=r.length;for(let i=0;is.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>: + ${a.join(` + +`).replace(/\n/g,` + `)}`)}},"validateVisitor")};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=e,r}function Use(t,e,r){let n=o(function(){},"derivedConstructor");XN(n,t+"BaseSemanticsWithDefaults");let i=Object.create(r.prototype);return Ae(e,a=>{i[a]=lBe}),n.prototype=i,n.prototype.constructor=n,n}function cBe(t,e){return uBe(t,e)}function uBe(t,e){let r=Yr(e,i=>Si(t[i])===!1),n=Je(r,i=>({msg:`Missing visitor method: <${i}> on ${t.constructor.name} CST Visitor.`,type:jN.MISSING_METHOD,methodName:i}));return Tc(n)}var jN,Hse=N(()=>{"use strict";qt();Gse();o(lBe,"defaultVisit");o(Vse,"createBaseSemanticVisitorConstructor");o(Use,"createBaseVisitorConstructorWithDefaults");(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(jN||(jN={}));o(cBe,"validateVisitor");o(uBe,"validateMissingCstMethods")});var Zk,Wse=N(()=>{"use strict";zse();qt();Hse();Fs();Zk=class{static{o(this,"TreeBuilder")}initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=Bt(e,"nodeLocationTracking")?e.nodeLocationTracking:ls.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=ni,this.cstFinallyStateUpdate=ni,this.cstPostTerminal=ni,this.cstPostNonTerminal=ni,this.cstPostRule=ni;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=YN,this.setNodeLocationFromNode=YN,this.cstPostRule=ni,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=ni,this.setNodeLocationFromNode=ni,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=qN,this.setNodeLocationFromNode=qN,this.cstPostRule=ni,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=ni,this.setNodeLocationFromNode=ni,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=ni,this.setNodeLocationFromNode=ni,this.cstPostRule=ni,this.setInitialNodeLocation=ni;else throw Error(`Invalid config option: "${e.nodeLocationTracking}"`)}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){let r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){let r={name:e,children:Object.create(null)};this.setInitialNodeLocation(r),this.CST_STACK.push(r)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){let r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?(n.endOffset=r.endOffset,n.endLine=r.endLine,n.endColumn=r.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)}cstPostRuleOnlyOffset(e){let r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?n.endOffset=r.endOffset:n.startOffset=NaN}cstPostTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];Fse(n,r,e),this.setNodeLocationFromToken(n.location,r)}cstPostNonTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];$se(n,r,e),this.setNodeLocationFromNode(n.location,e.location)}getBaseCstVisitorConstructor(){if(pr(this.baseCstVisitorConstructor)){let e=Vse(this.className,zr(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(pr(this.baseCstVisitorWithDefaultsConstructor)){let e=Use(this.className,zr(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){let e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}}});var Jk,qse=N(()=>{"use strict";Fs();Jk=class{static{o(this,"LexerAdapter")}initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):jg}LA(e){let r=this.currIdx+e;return r<0||this.tokVectorLength<=r?jg:this.tokVector[r]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}}});var eE,Yse=N(()=>{"use strict";qt();Xg();Fs();Vg();fx();os();eE=class{static{o(this,"RecognizerApi")}ACTION(e){return e.call(this)}consume(e,r,n){return this.consumeInternal(r,e,n)}subrule(e,r,n){return this.subruleInternal(r,e,n)}option(e,r){return this.optionInternal(r,e)}or(e,r){return this.orInternal(r,e)}many(e,r){return this.manyInternal(e,r)}atLeastOne(e,r){return this.atLeastOneInternal(e,r)}CONSUME(e,r){return this.consumeInternal(e,0,r)}CONSUME1(e,r){return this.consumeInternal(e,1,r)}CONSUME2(e,r){return this.consumeInternal(e,2,r)}CONSUME3(e,r){return this.consumeInternal(e,3,r)}CONSUME4(e,r){return this.consumeInternal(e,4,r)}CONSUME5(e,r){return this.consumeInternal(e,5,r)}CONSUME6(e,r){return this.consumeInternal(e,6,r)}CONSUME7(e,r){return this.consumeInternal(e,7,r)}CONSUME8(e,r){return this.consumeInternal(e,8,r)}CONSUME9(e,r){return this.consumeInternal(e,9,r)}SUBRULE(e,r){return this.subruleInternal(e,0,r)}SUBRULE1(e,r){return this.subruleInternal(e,1,r)}SUBRULE2(e,r){return this.subruleInternal(e,2,r)}SUBRULE3(e,r){return this.subruleInternal(e,3,r)}SUBRULE4(e,r){return this.subruleInternal(e,4,r)}SUBRULE5(e,r){return this.subruleInternal(e,5,r)}SUBRULE6(e,r){return this.subruleInternal(e,6,r)}SUBRULE7(e,r){return this.subruleInternal(e,7,r)}SUBRULE8(e,r){return this.subruleInternal(e,8,r)}SUBRULE9(e,r){return this.subruleInternal(e,9,r)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,r,n=Kg){if(qn(this.definedRulesNames,e)){let s={message:Pl.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:zi.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);let i=this.defineRule(e,r,n);return this[e]=i,i}OVERRIDE_RULE(e,r,n=Kg){let i=Sse(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(i);let a=this.defineRule(e,r,n);return this[e]=a,a}BACKTRACK(e,r){return function(){this.isBackTrackingStack.push(1);let n=this.saveRecogState();try{return e.apply(this,r),!0}catch(i){if(lf(i))return!1;throw i}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return Sk(br(this.gastProductionsCache))}}});var tE,Xse=N(()=>{"use strict";qt();qk();Xg();qg();cx();Fs();GN();up();cp();tE=class{static{o(this,"RecognizerEngine")}initRecognizerEngine(e,r){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=zg,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},Bt(r,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 + For Further details.`);if(Pt(e)){if(ur(e))throw Error(`A Token Vocabulary cannot be empty. + Note that the first argument for the parser constructor + is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 + For Further details.`)}if(Pt(e))this.tokensMap=Xr(e,(a,s)=>(a[s.name]=s,a),{});else if(Bt(e,"modes")&&Ma(qr(br(e.modes)),rse)){let a=qr(br(e.modes)),s=Bm(a);this.tokensMap=Xr(s,(l,u)=>(l[u.name]=u,l),{})}else if(bn(e))this.tokensMap=an(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=lo;let n=Bt(e,"modes")?qr(br(e.modes)):br(e),i=Ma(n,a=>ur(a.categoryMatches));this.tokenMatcher=i?zg:Pu,Bu(br(this.tokensMap))}defineRule(e,r,n){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);let i=Bt(n,"resyncEnabled")?n.resyncEnabled:Kg.resyncEnabled,a=Bt(n,"recoveryValueFunc")?n.recoveryValueFunc:Kg.recoveryValueFunc,s=this.ruleShortNameIdx<<12;this.ruleShortNameIdx++,this.shortRuleNameToFull[s]=e,this.fullRuleNameToShort[e]=s;let l;return this.outputCst===!0?l=o(function(...f){try{this.ruleInvocationStateUpdate(s,e,this.subruleIdx),r.apply(this,f);let d=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(d),d}catch(d){return this.invokeRuleCatch(d,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTry"):l=o(function(...f){try{return this.ruleInvocationStateUpdate(s,e,this.subruleIdx),r.apply(this,f)}catch(d){return this.invokeRuleCatch(d,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTryCst"),Object.assign(l,{ruleName:e,originalGrammarAction:r})}invokeRuleCatch(e,r,n){let i=this.RULE_STACK.length===1,a=r&&!this.isBackTracking()&&this.recoveryEnabled;if(lf(e)){let s=e;if(a){let l=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(l))if(s.resyncedTokens=this.reSyncTo(l),this.outputCst){let u=this.CST_STACK[this.CST_STACK.length-1];return u.recoveredNode=!0,u}else return n(e);else{if(this.outputCst){let u=this.CST_STACK[this.CST_STACK.length-1];u.recoveredNode=!0,s.partialCstResult=u}throw s}}else{if(i)return this.moveToTerminatedState(),n(e);throw s}}else throw e}optionInternal(e,r){let n=this.getKeyForAutomaticLookahead(512,r);return this.optionInternalLogic(e,r,n)}optionInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof e!="function"){a=e.DEF;let s=e.GATE;if(s!==void 0){let l=i;i=o(()=>s.call(this)&&l.call(this),"lookAheadFunc")}}else a=e;if(i.call(this)===!0)return a.call(this)}atLeastOneInternal(e,r){let n=this.getKeyForAutomaticLookahead(1024,e);return this.atLeastOneInternalLogic(e,r,n)}atLeastOneInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof r!="function"){a=r.DEF;let s=r.GATE;if(s!==void 0){let l=i;i=o(()=>s.call(this)&&l.call(this),"lookAheadFunc")}}else a=r;if(i.call(this)===!0){let s=this.doSingleRepetition(a);for(;i.call(this)===!0&&s===!0;)s=this.doSingleRepetition(a)}else throw this.raiseEarlyExitException(e,jn.REPETITION_MANDATORY,r.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,r],i,1024,e,Bk)}atLeastOneSepFirstInternal(e,r){let n=this.getKeyForAutomaticLookahead(1536,e);this.atLeastOneSepFirstInternalLogic(e,r,n)}atLeastOneSepFirstInternalLogic(e,r,n){let i=r.DEF,a=r.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let l=o(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,l,i,lx],l,1536,e,lx)}else throw this.raiseEarlyExitException(e,jn.REPETITION_MANDATORY_WITH_SEPARATOR,r.ERR_MSG)}manyInternal(e,r){let n=this.getKeyForAutomaticLookahead(768,e);return this.manyInternalLogic(e,r,n)}manyInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof r!="function"){a=r.DEF;let l=r.GATE;if(l!==void 0){let u=i;i=o(()=>l.call(this)&&u.call(this),"lookaheadFunction")}}else a=r;let s=!0;for(;i.call(this)===!0&&s===!0;)s=this.doSingleRepetition(a);this.attemptInRepetitionRecovery(this.manyInternal,[e,r],i,768,e,Pk,s)}manySepFirstInternal(e,r){let n=this.getKeyForAutomaticLookahead(1280,e);this.manySepFirstInternalLogic(e,r,n)}manySepFirstInternalLogic(e,r,n){let i=r.DEF,a=r.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let l=o(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,l,i,ox],l,1280,e,ox)}}repetitionSepSecondInternal(e,r,n,i,a){for(;n();)this.CONSUME(r),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,r,n,i,a],n,1536,e,a)}doSingleRepetition(e){let r=this.getLexerPosition();return e.call(this),this.getLexerPosition()>r}orInternal(e,r){let n=this.getKeyForAutomaticLookahead(256,r),i=Pt(e)?e:e.DEF,s=this.getLaFuncFromCache(n).call(this,i);if(s!==void 0)return i[s].ALT.call(this);this.raiseNoAltException(r,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){let e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new px(r,e))}}subruleInternal(e,r,n){let i;try{let a=n!==void 0?n.ARGS:void 0;return this.subruleIdx=r,i=e.apply(this,a),this.cstPostNonTerminal(i,n!==void 0&&n.LABEL!==void 0?n.LABEL:e.ruleName),i}catch(a){throw this.subruleInternalError(a,n,e.ruleName)}}subruleInternalError(e,r,n){throw lf(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:n),delete e.partialCstResult),e}consumeInternal(e,r,n){let i;try{let a=this.LA(1);this.tokenMatcher(a,e)===!0?(this.consumeToken(),i=a):this.consumeInternalError(e,a,n)}catch(a){i=this.consumeInternalRecovery(e,r,a)}return this.cstPostTerminal(n!==void 0&&n.LABEL!==void 0?n.LABEL:e.name,i),i}consumeInternalError(e,r,n){let i,a=this.LA(0);throw n!==void 0&&n.ERR_MSG?i=n.ERR_MSG:i=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:a,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new hp(i,r,a))}consumeInternalRecovery(e,r,n){if(this.recoveryEnabled&&n.name==="MismatchedTokenException"&&!this.isBackTracking()){let i=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,i)}catch(a){throw a.name===zN?n:a}}else throw n}saveRecogState(){let e=this.errors,r=an(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,r,n){this.RULE_OCCURRENCE_STACK.push(n),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r)}isBackTracking(){return this.isBackTrackingStack.length!==0}getCurrRuleFullName(){let e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),lo)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}}});var rE,jse=N(()=>{"use strict";Xg();qt();qg();Fs();rE=class{static{o(this,"ErrorHandler")}initErrorHandler(e){this._errors=[],this.errorMessageProvider=Bt(e,"errorMessageProvider")?e.errorMessageProvider:ls.errorMessageProvider}SAVE_ERROR(e){if(lf(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:an(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return an(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,r,n){let i=this.getCurrRuleFullName(),a=this.getGAstProductions()[i],l=Wg(e,a,r,this.maxLookahead)[0],u=[];for(let f=1;f<=this.maxLookahead;f++)u.push(this.LA(f));let h=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:l,actual:u,previous:this.LA(0),customUserDescription:n,ruleName:i});throw this.SAVE_ERROR(new mx(h,this.LA(1),this.LA(0)))}raiseNoAltException(e,r){let n=this.getCurrRuleFullName(),i=this.getGAstProductions()[n],a=Hg(e,i,this.maxLookahead),s=[];for(let h=1;h<=this.maxLookahead;h++)s.push(this.LA(h));let l=this.LA(0),u=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:a,actual:s,previous:l,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new dx(u,this.LA(1),l))}}});var nE,Kse=N(()=>{"use strict";cx();qt();nE=class{static{o(this,"ContentAssist")}initContentAssist(){}computeContentAssist(e,r){let n=this.gastProductionsCache[e];if(pr(n))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return $k([n],r,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){let r=ia(e.ruleStack),i=this.getGAstProductions()[r];return new Ok(i,e).startWalking()}}});function yx(t,e,r,n=!1){aE(r);let i=ga(this.recordingProdStack),a=Si(e)?e:e.DEF,s=new t({definition:[],idx:r});return n&&(s.separator=e.SEP),Bt(e,"MAX_LOOKAHEAD")&&(s.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(s),a.call(this),i.definition.push(s),this.recordingProdStack.pop(),sE}function dBe(t,e){aE(e);let r=ga(this.recordingProdStack),n=Pt(t)===!1,i=n===!1?t:t.DEF,a=new Tn({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});Bt(t,"MAX_LOOKAHEAD")&&(a.maxLookahead=t.MAX_LOOKAHEAD);let s=A2(i,l=>Si(l.GATE));return a.hasPredicates=s,r.definition.push(a),Ae(i,l=>{let u=new Dn({definition:[]});a.definition.push(u),Bt(l,"IGNORE_AMBIGUITIES")?u.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:Bt(l,"GATE")&&(u.ignoreAmbiguities=!0),this.recordingProdStack.push(u),l.ALT.call(this),this.recordingProdStack.pop()}),sE}function Jse(t){return t===0?"":`${t}`}function aE(t){if(t<0||t>Zse){let e=new Error(`Invalid DSL Method idx value: <${t}> + Idx value must be a none negative value smaller than ${Zse+1}`);throw e.KNOWN_RECORDER_ERROR=!0,e}}var sE,Qse,Zse,eoe,toe,fBe,iE,roe=N(()=>{"use strict";qt();os();ix();cp();up();Fs();qk();sE={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(sE);Qse=!0,Zse=Math.pow(2,8)-1,eoe=of({name:"RECORDING_PHASE_TOKEN",pattern:Xn.NA});Bu([eoe]);toe=$u(eoe,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(toe);fBe={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},iE=class{static{o(this,"GastRecorder")}initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){let r=e>0?e:"";this[`CONSUME${r}`]=function(n,i){return this.consumeInternalRecord(n,e,i)},this[`SUBRULE${r}`]=function(n,i){return this.subruleInternalRecord(n,e,i)},this[`OPTION${r}`]=function(n){return this.optionInternalRecord(n,e)},this[`OR${r}`]=function(n){return this.orInternalRecord(n,e)},this[`MANY${r}`]=function(n){this.manyInternalRecord(e,n)},this[`MANY_SEP${r}`]=function(n){this.manySepFirstInternalRecord(e,n)},this[`AT_LEAST_ONE${r}`]=function(n){this.atLeastOneInternalRecord(e,n)},this[`AT_LEAST_ONE_SEP${r}`]=function(n){this.atLeastOneSepFirstInternalRecord(e,n)}}this.consume=function(e,r,n){return this.consumeInternalRecord(r,e,n)},this.subrule=function(e,r,n){return this.subruleInternalRecord(r,e,n)},this.option=function(e,r){return this.optionInternalRecord(r,e)},this.or=function(e,r){return this.orInternalRecord(r,e)},this.many=function(e,r){this.manyInternalRecord(e,r)},this.atLeastOne=function(e,r){this.atLeastOneInternalRecord(e,r)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{let e=this;for(let r=0;r<10;r++){let n=r>0?r:"";delete e[`CONSUME${n}`],delete e[`SUBRULE${n}`],delete e[`OPTION${n}`],delete e[`OR${n}`],delete e[`MANY${n}`],delete e[`MANY_SEP${n}`],delete e[`AT_LEAST_ONE${n}`],delete e[`AT_LEAST_ONE_SEP${n}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,r){return()=>!0}LA_RECORD(e){return jg}topLevelRuleRecord(e,r){try{let n=new as({definition:[],name:e});return n.name=e,this.recordingProdStack.push(n),r.call(this),this.recordingProdStack.pop(),n}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` + This error was thrown during the "grammar recording phase" For more info see: + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}}optionInternalRecord(e,r){return yx.call(this,ln,e,r)}atLeastOneInternalRecord(e,r){yx.call(this,Ln,r,e)}atLeastOneSepFirstInternalRecord(e,r){yx.call(this,Rn,r,e,Qse)}manyInternalRecord(e,r){yx.call(this,Or,r,e)}manySepFirstInternalRecord(e,r){yx.call(this,wn,r,e,Qse)}orInternalRecord(e,r){return dBe.call(this,e,r)}subruleInternalRecord(e,r,n){if(aE(r),!e||Bt(e,"ruleName")===!1){let l=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}> + inside top level rule: <${this.recordingProdStack[0].name}>`);throw l.KNOWN_RECORDER_ERROR=!0,l}let i=ga(this.recordingProdStack),a=e.ruleName,s=new on({idx:r,nonTerminalName:a,label:n?.LABEL,referencedRule:void 0});return i.definition.push(s),this.outputCst?fBe:sE}consumeInternalRecord(e,r,n){if(aE(r),!_N(e)){let s=new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}> + inside top level rule: <${this.recordingProdStack[0].name}>`);throw s.KNOWN_RECORDER_ERROR=!0,s}let i=ga(this.recordingProdStack),a=new kr({idx:r,terminalType:e,label:n?.LABEL});return i.definition.push(a),toe}};o(yx,"recordProd");o(dBe,"recordOrProd");o(Jse,"getIdxSuffix");o(aE,"assertMethodIdxIsValid")});var oE,noe=N(()=>{"use strict";qt();Og();Fs();oE=class{static{o(this,"PerformanceTracer")}initPerformanceTracer(e){if(Bt(e,"traceInitPerf")){let r=e.traceInitPerf,n=typeof r=="number";this.traceInitMaxIdent=n?r:1/0,this.traceInitPerf=n?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=ls.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;let n=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${e}>`);let{time:i,value:a}=tx(r),s=i>10?console.warn:console.log;return this.traceInitIndent time: ${i}ms`),this.traceInitIndent--,a}else return r()}}});function ioe(t,e){e.forEach(r=>{let n=r.prototype;Object.getOwnPropertyNames(n).forEach(i=>{if(i==="constructor")return;let a=Object.getOwnPropertyDescriptor(n,i);a&&(a.get||a.set)?Object.defineProperty(t.prototype,i,a):t.prototype[i]=r.prototype[i]})})}var aoe=N(()=>{"use strict";o(ioe,"applyMixins")});function lE(t=void 0){return function(){return t}}var jg,ls,Kg,zi,vx,xx,Fs=N(()=>{"use strict";qt();Og();Oae();up();Vg();Rse();GN();Bse();Wse();qse();Yse();Xse();jse();Kse();roe();noe();aoe();fx();jg=$u(lo,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(jg);ls=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:zu,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),Kg=Object.freeze({recoveryValueFunc:o(()=>{},"recoveryValueFunc"),resyncEnabled:!0});(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",t[t.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"})(zi||(zi={}));o(lE,"EMPTY_ALT");vx=class t{static{o(this,"Parser")}static performSelfAnalysis(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let e;this.selfAnalysisDone=!0;let r=this.className;this.TRACE_INIT("toFastProps",()=>{rx(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),Ae(this.definedRulesNames,i=>{let s=this[i].originalGrammarAction,l;this.TRACE_INIT(`${i} Rule`,()=>{l=this.topLevelRuleRecord(i,s)}),this.gastProductionsCache[i]=l})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=Dse({rules:br(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(ur(n)&&this.skipValidations===!1){let i=Lse({rules:br(this.gastProductionsCache),tokenTypes:br(this.tokensMap),errMsgProvider:Pl,grammarName:r}),a=Tse({lookaheadStrategy:this.lookaheadStrategy,rules:br(this.gastProductionsCache),tokenTypes:br(this.tokensMap),grammarName:r});this.definitionErrors=this.definitionErrors.concat(i,a)}}),ur(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{let i=Iae(br(this.gastProductionsCache));this.resyncFollows=i}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var i,a;(a=(i=this.lookaheadStrategy).initialize)===null||a===void 0||a.call(i,{rules:br(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(br(this.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!ur(this.definitionErrors))throw e=Je(this.definitionErrors,i=>i.message),new Error(`Parser Definition Errors detected: + ${e.join(` +------------------------------- +`)}`)})}constructor(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;let n=this;if(n.initErrorHandler(r),n.initLexerAdapter(),n.initLooksAhead(r),n.initRecognizerEngine(e,r),n.initRecoverable(r),n.initTreeBuilder(r),n.initContentAssist(),n.initGastRecorder(r),n.initPerformanceTracer(r),Bt(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. + Please use the flag on the relevant DSL method instead. + See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES + For further details.`);this.skipValidations=Bt(r,"skipValidations")?r.skipValidations:ls.skipValidations}};vx.DEFER_DEFINITION_ERRORS_HANDLING=!1;ioe(vx,[Hk,Xk,Zk,Jk,tE,eE,rE,nE,iE,oE]);xx=class extends vx{static{o(this,"EmbeddedActionsParser")}constructor(e,r=ls){let n=an(r);n.outputCst=!1,super(e,n)}}});var soe=N(()=>{"use strict";os()});var ooe=N(()=>{"use strict"});var loe=N(()=>{"use strict";soe();ooe()});var coe=N(()=>{"use strict";gN()});var cf=N(()=>{"use strict";gN();Fs();ix();up();qg();VN();Vg();Xg();DN();os();os();loe();coe()});function fp(t,e,r){return`${t.name}_${e}_${r}`}function doe(t){let e={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};bBe(e,t);let r=t.length;for(let n=0;npoe(t,e,s));return e1(t,e,n,r,...i)}function CBe(t,e,r){let n=aa(t,e,r,{type:uf});hf(t,n);let i=e1(t,e,n,r,dp(t,e,r));return ABe(t,e,r,i)}function dp(t,e,r){let n=Yr(Je(r.definition,i=>poe(t,e,i)),i=>i!==void 0);return n.length===1?n[0]:n.length===0?void 0:DBe(t,n)}function moe(t,e,r,n,i){let a=n.left,s=n.right,l=aa(t,e,r,{type:xBe});hf(t,l);let u=aa(t,e,r,{type:foe});return a.loopback=l,u.loopback=l,t.decisionMap[fp(e,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",r.idx)]=l,Ai(s,l),i===void 0?(Ai(l,a),Ai(l,u)):(Ai(l,u),Ai(l,i.left),Ai(i.right,a)),{left:a,right:u}}function goe(t,e,r,n,i){let a=n.left,s=n.right,l=aa(t,e,r,{type:vBe});hf(t,l);let u=aa(t,e,r,{type:foe}),h=aa(t,e,r,{type:yBe});return l.loopback=h,u.loopback=h,Ai(l,a),Ai(l,u),Ai(s,h),i!==void 0?(Ai(h,u),Ai(h,i.left),Ai(i.right,a)):Ai(h,l),t.decisionMap[fp(e,i?"RepetitionWithSeparator":"Repetition",r.idx)]=l,{left:l,right:u}}function ABe(t,e,r,n){let i=n.left,a=n.right;return Ai(i,a),t.decisionMap[fp(e,"Option",r.idx)]=i,n}function hf(t,e){return t.decisionStates.push(e),e.decision=t.decisionStates.length-1,e.decision}function e1(t,e,r,n,...i){let a=aa(t,e,n,{type:gBe,start:r});r.end=a;for(let l of i)l!==void 0?(Ai(r,l.left),Ai(l.right,a)):Ai(r,a);let s={left:r,right:a};return t.decisionMap[fp(e,_Be(n),n.idx)]=r,s}function _Be(t){if(t instanceof Tn)return"Alternation";if(t instanceof ln)return"Option";if(t instanceof Or)return"Repetition";if(t instanceof wn)return"RepetitionWithSeparator";if(t instanceof Ln)return"RepetitionMandatory";if(t instanceof Rn)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function DBe(t,e){let r=e.length;for(let a=0;a{"use strict";Im();DL();cf();o(fp,"buildATNKey");uf=1,mBe=2,uoe=4,hoe=5,Jg=7,gBe=8,yBe=9,vBe=10,xBe=11,foe=12,bx=class{static{o(this,"AbstractTransition")}constructor(e){this.target=e}isEpsilon(){return!1}},Qg=class extends bx{static{o(this,"AtomTransition")}constructor(e,r){super(e),this.tokenType=r}},wx=class extends bx{static{o(this,"EpsilonTransition")}constructor(e){super(e)}isEpsilon(){return!0}},Zg=class extends bx{static{o(this,"RuleTransition")}constructor(e,r,n){super(e),this.rule=r,this.followState=n}isEpsilon(){return!0}};o(doe,"createATN");o(bBe,"createRuleStartAndStopATNStates");o(poe,"atom");o(wBe,"repetition");o(TBe,"repetitionSep");o(kBe,"repetitionMandatory");o(EBe,"repetitionMandatorySep");o(SBe,"alternation");o(CBe,"option");o(dp,"block");o(moe,"plus");o(goe,"star");o(ABe,"optional");o(hf,"defineDecisionState");o(e1,"makeAlts");o(_Be,"getProdType");o(DBe,"makeBlock");o(QN,"tokenRef");o(LBe,"ruleRef");o(RBe,"buildRuleHandle");o(Ai,"epsilon");o(aa,"newState");o(ZN,"addTransition");o(NBe,"removeState")});function JN(t,e=!0){return`${e?`a${t.alt}`:""}s${t.state.stateNumber}:${t.stack.map(r=>r.stateNumber.toString()).join("_")}`}var Tx,t1,voe=N(()=>{"use strict";Im();Tx={},t1=class{static{o(this,"ATNConfigSet")}constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(e){let r=JN(e);r in this.map||(this.map[r]=this.configs.length,this.configs.push(e))}get elements(){return this.configs}get alts(){return Je(this.configs,e=>e.alt)}get key(){let e="";for(let r in this.map)e+=r+":";return e}};o(JN,"getATNConfigKey")});function MBe(t,e){let r={};return n=>{let i=n.toString(),a=r[i];return a!==void 0||(a={atnStartState:t,decision:e,states:{}},r[i]=a),a}}function boe(t,e=!0){let r=new Set;for(let n of t){let i=new Set;for(let a of n){if(a===void 0){if(e)break;return!1}let s=[a.tokenTypeIdx].concat(a.categoryMatches);for(let l of s)if(r.has(l)){if(!i.has(l))return!1}else r.add(l),i.add(l)}}return!0}function IBe(t){let e=t.decisionStates.length,r=Array(e);for(let n=0;nFu(i)).join(", "),r=t.production.idx===0?"":t.production.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(", ")}> in <${$Be(t.production)}${r}> inside <${t.topLevelRule.name}> Rule, +<${e}> may appears as a prefix path in all these alternatives. +`;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,n}function $Be(t){if(t instanceof on)return"SUBRULE";if(t instanceof ln)return"OPTION";if(t instanceof Tn)return"OR";if(t instanceof Ln)return"AT_LEAST_ONE";if(t instanceof Rn)return"AT_LEAST_ONE_SEP";if(t instanceof wn)return"MANY_SEP";if(t instanceof Or)return"MANY";if(t instanceof kr)return"CONSUME";throw Error("non exhaustive match")}function zBe(t,e,r){let n=ya(e.configs.elements,a=>a.state.transitions),i=Qre(n.filter(a=>a instanceof Qg).map(a=>a.tokenType),a=>a.tokenTypeIdx);return{actualToken:r,possibleTokenTypes:i,tokenPath:t}}function GBe(t,e){return t.edges[e.tokenTypeIdx]}function VBe(t,e,r){let n=new t1,i=[];for(let s of t.elements){if(r.is(s.alt)===!1)continue;if(s.state.type===Jg){i.push(s);continue}let l=s.state.transitions.length;for(let u=0;u0&&!YBe(a))for(let s of i)a.add(s);return a}function UBe(t,e){if(t instanceof Qg&&sx(e,t.tokenType))return t.target}function HBe(t,e){let r;for(let n of t.elements)if(e.is(n.alt)===!0){if(r===void 0)r=n.alt;else if(r!==n.alt)return}return r}function Toe(t){return{configs:t,edges:{},isAcceptState:!1,prediction:-1}}function woe(t,e,r,n){return n=koe(t,n),e.edges[r.tokenTypeIdx]=n,n}function koe(t,e){if(e===Tx)return e;let r=e.configs.key,n=t.states[r];return n!==void 0?n:(e.configs.finalize(),t.states[r]=e,e)}function WBe(t){let e=new t1,r=t.transitions.length;for(let n=0;n0){let i=[...t.stack],s={state:i.pop(),alt:t.alt,stack:i};uE(s,e)}else e.add(t);return}r.epsilonOnlyTransitions||e.add(t);let n=r.transitions.length;for(let i=0;i1)return!0;return!1}function ZBe(t){for(let e of Array.from(t.values()))if(Object.keys(e).length===1)return!0;return!1}var cE,xoe,kx,Eoe=N(()=>{"use strict";cf();yoe();voe();BL();RL();Zre();Im();uT();$T();HT();GL();o(MBe,"createDFACache");cE=class{static{o(this,"PredicateSet")}constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,r){this.predicates[e]=r}toString(){let e="",r=this.predicates.length;for(let n=0;nconsole.log(n)}initialize(e){this.atn=doe(e.rules),this.dfas=IBe(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){let{prodOccurrence:r,rule:n,hasPredicates:i,dynamicTokensEnabled:a}=e,s=this.dfas,l=this.logging,u=fp(n,"Alternation",r),f=this.atn.decisionMap[u].decision,d=Je(Gk({maxLookahead:1,occurrence:r,prodType:"Alternation",rule:n}),p=>Je(p,m=>m[0]));if(boe(d,!1)&&!a){let p=Xr(d,(m,g,y)=>(Ae(g,v=>{v&&(m[v.tokenTypeIdx]=y,Ae(v.categoryMatches,x=>{m[x]=y}))}),m),{});return i?function(m){var g;let y=this.LA(1),v=p[y.tokenTypeIdx];if(m!==void 0&&v!==void 0){let x=(g=m[v])===null||g===void 0?void 0:g.GATE;if(x!==void 0&&x.call(this)===!1)return}return v}:function(){let m=this.LA(1);return p[m.tokenTypeIdx]}}else return i?function(p){let m=new cE,g=p===void 0?0:p.length;for(let v=0;vJe(p,m=>m[0]));if(boe(d)&&d[0][0]&&!a){let p=d[0],m=qr(p);if(m.length===1&&ur(m[0].categoryMatches)){let y=m[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===y}}else{let g=Xr(m,(y,v)=>(v!==void 0&&(y[v.tokenTypeIdx]=!0,Ae(v.categoryMatches,x=>{y[x]=!0})),y),{});return function(){let y=this.LA(1);return g[y.tokenTypeIdx]===!0}}}return function(){let p=eM.call(this,s,f,xoe,l);return typeof p=="object"?!1:p===0}}};o(boe,"isLL1Sequence");o(IBe,"initATNSimulator");o(eM,"adaptivePredict");o(OBe,"performLookahead");o(PBe,"computeLookaheadTarget");o(BBe,"reportLookaheadAmbiguity");o(FBe,"buildAmbiguityError");o($Be,"getProductionDslName");o(zBe,"buildAdaptivePredictError");o(GBe,"getExistingTargetState");o(VBe,"computeReachSet");o(UBe,"getReachableTarget");o(HBe,"getUniqueAlt");o(Toe,"newDFAState");o(woe,"addDFAEdge");o(koe,"addDFAState");o(WBe,"computeStartState");o(uE,"closure");o(qBe,"getEpsilonTarget");o(YBe,"hasConfigInRuleStopState");o(XBe,"allConfigsInRuleStopStates");o(jBe,"hasConflictTerminatingPrediction");o(KBe,"getConflictingAltSets");o(QBe,"hasConflictingAltSet");o(ZBe,"hasStateAssociatedWithOneAlt")});var Soe=N(()=>{"use strict";Eoe()});var Coe,tM,Aoe,hE,jr,Pr,fE,_oe,rM,Doe,Loe,Roe,Noe,nM,Moe,Ioe,Ooe,dE,r1,n1,iM,i1,Poe,aM,sM,oM,lM,cM,Boe,Foe,uM,$oe,hM,Ex,zoe,Goe,Voe,Uoe,Hoe,Woe,qoe,Yoe,pE,Xoe,joe,Koe,Qoe,Zoe,Joe,ele,tle,rle,nle,ile,mE,ale,sle,ole,lle,cle,ule,hle,fle,dle,ple,mle,gle,yle,fM,dM,vle,xle,ble,wle,Tle,kle,Ele,Sle,Cle,pM,Fe,mM=N(()=>{"use strict";(function(t){function e(r){return typeof r=="string"}o(e,"is"),t.is=e})(Coe||(Coe={}));(function(t){function e(r){return typeof r=="string"}o(e,"is"),t.is=e})(tM||(tM={}));(function(t){t.MIN_VALUE=-2147483648,t.MAX_VALUE=2147483647;function e(r){return typeof r=="number"&&t.MIN_VALUE<=r&&r<=t.MAX_VALUE}o(e,"is"),t.is=e})(Aoe||(Aoe={}));(function(t){t.MIN_VALUE=0,t.MAX_VALUE=2147483647;function e(r){return typeof r=="number"&&t.MIN_VALUE<=r&&r<=t.MAX_VALUE}o(e,"is"),t.is=e})(hE||(hE={}));(function(t){function e(n,i){return n===Number.MAX_VALUE&&(n=hE.MAX_VALUE),i===Number.MAX_VALUE&&(i=hE.MAX_VALUE),{line:n,character:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Fe.uinteger(i.line)&&Fe.uinteger(i.character)}o(r,"is"),t.is=r})(jr||(jr={}));(function(t){function e(n,i,a,s){if(Fe.uinteger(n)&&Fe.uinteger(i)&&Fe.uinteger(a)&&Fe.uinteger(s))return{start:jr.create(n,i),end:jr.create(a,s)};if(jr.is(n)&&jr.is(i))return{start:n,end:i};throw new Error(`Range#create called with invalid arguments[${n}, ${i}, ${a}, ${s}]`)}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&jr.is(i.start)&&jr.is(i.end)}o(r,"is"),t.is=r})(Pr||(Pr={}));(function(t){function e(n,i){return{uri:n,range:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Pr.is(i.range)&&(Fe.string(i.uri)||Fe.undefined(i.uri))}o(r,"is"),t.is=r})(fE||(fE={}));(function(t){function e(n,i,a,s){return{targetUri:n,targetRange:i,targetSelectionRange:a,originSelectionRange:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Pr.is(i.targetRange)&&Fe.string(i.targetUri)&&Pr.is(i.targetSelectionRange)&&(Pr.is(i.originSelectionRange)||Fe.undefined(i.originSelectionRange))}o(r,"is"),t.is=r})(_oe||(_oe={}));(function(t){function e(n,i,a,s){return{red:n,green:i,blue:a,alpha:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Fe.numberRange(i.red,0,1)&&Fe.numberRange(i.green,0,1)&&Fe.numberRange(i.blue,0,1)&&Fe.numberRange(i.alpha,0,1)}o(r,"is"),t.is=r})(rM||(rM={}));(function(t){function e(n,i){return{range:n,color:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Pr.is(i.range)&&rM.is(i.color)}o(r,"is"),t.is=r})(Doe||(Doe={}));(function(t){function e(n,i,a){return{label:n,textEdit:i,additionalTextEdits:a}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Fe.string(i.label)&&(Fe.undefined(i.textEdit)||n1.is(i))&&(Fe.undefined(i.additionalTextEdits)||Fe.typedArray(i.additionalTextEdits,n1.is))}o(r,"is"),t.is=r})(Loe||(Loe={}));(function(t){t.Comment="comment",t.Imports="imports",t.Region="region"})(Roe||(Roe={}));(function(t){function e(n,i,a,s,l,u){let h={startLine:n,endLine:i};return Fe.defined(a)&&(h.startCharacter=a),Fe.defined(s)&&(h.endCharacter=s),Fe.defined(l)&&(h.kind=l),Fe.defined(u)&&(h.collapsedText=u),h}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Fe.uinteger(i.startLine)&&Fe.uinteger(i.startLine)&&(Fe.undefined(i.startCharacter)||Fe.uinteger(i.startCharacter))&&(Fe.undefined(i.endCharacter)||Fe.uinteger(i.endCharacter))&&(Fe.undefined(i.kind)||Fe.string(i.kind))}o(r,"is"),t.is=r})(Noe||(Noe={}));(function(t){function e(n,i){return{location:n,message:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&fE.is(i.location)&&Fe.string(i.message)}o(r,"is"),t.is=r})(nM||(nM={}));(function(t){t.Error=1,t.Warning=2,t.Information=3,t.Hint=4})(Moe||(Moe={}));(function(t){t.Unnecessary=1,t.Deprecated=2})(Ioe||(Ioe={}));(function(t){function e(r){let n=r;return Fe.objectLiteral(n)&&Fe.string(n.href)}o(e,"is"),t.is=e})(Ooe||(Ooe={}));(function(t){function e(n,i,a,s,l,u){let h={range:n,message:i};return Fe.defined(a)&&(h.severity=a),Fe.defined(s)&&(h.code=s),Fe.defined(l)&&(h.source=l),Fe.defined(u)&&(h.relatedInformation=u),h}o(e,"create"),t.create=e;function r(n){var i;let a=n;return Fe.defined(a)&&Pr.is(a.range)&&Fe.string(a.message)&&(Fe.number(a.severity)||Fe.undefined(a.severity))&&(Fe.integer(a.code)||Fe.string(a.code)||Fe.undefined(a.code))&&(Fe.undefined(a.codeDescription)||Fe.string((i=a.codeDescription)===null||i===void 0?void 0:i.href))&&(Fe.string(a.source)||Fe.undefined(a.source))&&(Fe.undefined(a.relatedInformation)||Fe.typedArray(a.relatedInformation,nM.is))}o(r,"is"),t.is=r})(dE||(dE={}));(function(t){function e(n,i,...a){let s={title:n,command:i};return Fe.defined(a)&&a.length>0&&(s.arguments=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.string(i.title)&&Fe.string(i.command)}o(r,"is"),t.is=r})(r1||(r1={}));(function(t){function e(a,s){return{range:a,newText:s}}o(e,"replace"),t.replace=e;function r(a,s){return{range:{start:a,end:a},newText:s}}o(r,"insert"),t.insert=r;function n(a){return{range:a,newText:""}}o(n,"del"),t.del=n;function i(a){let s=a;return Fe.objectLiteral(s)&&Fe.string(s.newText)&&Pr.is(s.range)}o(i,"is"),t.is=i})(n1||(n1={}));(function(t){function e(n,i,a){let s={label:n};return i!==void 0&&(s.needsConfirmation=i),a!==void 0&&(s.description=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Fe.string(i.label)&&(Fe.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(Fe.string(i.description)||i.description===void 0)}o(r,"is"),t.is=r})(iM||(iM={}));(function(t){function e(r){let n=r;return Fe.string(n)}o(e,"is"),t.is=e})(i1||(i1={}));(function(t){function e(a,s,l){return{range:a,newText:s,annotationId:l}}o(e,"replace"),t.replace=e;function r(a,s,l){return{range:{start:a,end:a},newText:s,annotationId:l}}o(r,"insert"),t.insert=r;function n(a,s){return{range:a,newText:"",annotationId:s}}o(n,"del"),t.del=n;function i(a){let s=a;return n1.is(s)&&(iM.is(s.annotationId)||i1.is(s.annotationId))}o(i,"is"),t.is=i})(Poe||(Poe={}));(function(t){function e(n,i){return{textDocument:n,edits:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&uM.is(i.textDocument)&&Array.isArray(i.edits)}o(r,"is"),t.is=r})(aM||(aM={}));(function(t){function e(n,i,a){let s={kind:"create",uri:n};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="create"&&Fe.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||Fe.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||Fe.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||i1.is(i.annotationId))}o(r,"is"),t.is=r})(sM||(sM={}));(function(t){function e(n,i,a,s){let l={kind:"rename",oldUri:n,newUri:i};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(l.options=a),s!==void 0&&(l.annotationId=s),l}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="rename"&&Fe.string(i.oldUri)&&Fe.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||Fe.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||Fe.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||i1.is(i.annotationId))}o(r,"is"),t.is=r})(oM||(oM={}));(function(t){function e(n,i,a){let s={kind:"delete",uri:n};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="delete"&&Fe.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||Fe.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||Fe.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||i1.is(i.annotationId))}o(r,"is"),t.is=r})(lM||(lM={}));(function(t){function e(r){let n=r;return n&&(n.changes!==void 0||n.documentChanges!==void 0)&&(n.documentChanges===void 0||n.documentChanges.every(i=>Fe.string(i.kind)?sM.is(i)||oM.is(i)||lM.is(i):aM.is(i)))}o(e,"is"),t.is=e})(cM||(cM={}));(function(t){function e(n){return{uri:n}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.string(i.uri)}o(r,"is"),t.is=r})(Boe||(Boe={}));(function(t){function e(n,i){return{uri:n,version:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.string(i.uri)&&Fe.integer(i.version)}o(r,"is"),t.is=r})(Foe||(Foe={}));(function(t){function e(n,i){return{uri:n,version:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.string(i.uri)&&(i.version===null||Fe.integer(i.version))}o(r,"is"),t.is=r})(uM||(uM={}));(function(t){function e(n,i,a,s){return{uri:n,languageId:i,version:a,text:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.string(i.uri)&&Fe.string(i.languageId)&&Fe.integer(i.version)&&Fe.string(i.text)}o(r,"is"),t.is=r})($oe||($oe={}));(function(t){t.PlainText="plaintext",t.Markdown="markdown";function e(r){let n=r;return n===t.PlainText||n===t.Markdown}o(e,"is"),t.is=e})(hM||(hM={}));(function(t){function e(r){let n=r;return Fe.objectLiteral(r)&&hM.is(n.kind)&&Fe.string(n.value)}o(e,"is"),t.is=e})(Ex||(Ex={}));(function(t){t.Text=1,t.Method=2,t.Function=3,t.Constructor=4,t.Field=5,t.Variable=6,t.Class=7,t.Interface=8,t.Module=9,t.Property=10,t.Unit=11,t.Value=12,t.Enum=13,t.Keyword=14,t.Snippet=15,t.Color=16,t.File=17,t.Reference=18,t.Folder=19,t.EnumMember=20,t.Constant=21,t.Struct=22,t.Event=23,t.Operator=24,t.TypeParameter=25})(zoe||(zoe={}));(function(t){t.PlainText=1,t.Snippet=2})(Goe||(Goe={}));(function(t){t.Deprecated=1})(Voe||(Voe={}));(function(t){function e(n,i,a){return{newText:n,insert:i,replace:a}}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Fe.string(i.newText)&&Pr.is(i.insert)&&Pr.is(i.replace)}o(r,"is"),t.is=r})(Uoe||(Uoe={}));(function(t){t.asIs=1,t.adjustIndentation=2})(Hoe||(Hoe={}));(function(t){function e(r){let n=r;return n&&(Fe.string(n.detail)||n.detail===void 0)&&(Fe.string(n.description)||n.description===void 0)}o(e,"is"),t.is=e})(Woe||(Woe={}));(function(t){function e(r){return{label:r}}o(e,"create"),t.create=e})(qoe||(qoe={}));(function(t){function e(r,n){return{items:r||[],isIncomplete:!!n}}o(e,"create"),t.create=e})(Yoe||(Yoe={}));(function(t){function e(n){return n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}o(e,"fromPlainText"),t.fromPlainText=e;function r(n){let i=n;return Fe.string(i)||Fe.objectLiteral(i)&&Fe.string(i.language)&&Fe.string(i.value)}o(r,"is"),t.is=r})(pE||(pE={}));(function(t){function e(r){let n=r;return!!n&&Fe.objectLiteral(n)&&(Ex.is(n.contents)||pE.is(n.contents)||Fe.typedArray(n.contents,pE.is))&&(r.range===void 0||Pr.is(r.range))}o(e,"is"),t.is=e})(Xoe||(Xoe={}));(function(t){function e(r,n){return n?{label:r,documentation:n}:{label:r}}o(e,"create"),t.create=e})(joe||(joe={}));(function(t){function e(r,n,...i){let a={label:r};return Fe.defined(n)&&(a.documentation=n),Fe.defined(i)?a.parameters=i:a.parameters=[],a}o(e,"create"),t.create=e})(Koe||(Koe={}));(function(t){t.Text=1,t.Read=2,t.Write=3})(Qoe||(Qoe={}));(function(t){function e(r,n){let i={range:r};return Fe.number(n)&&(i.kind=n),i}o(e,"create"),t.create=e})(Zoe||(Zoe={}));(function(t){t.File=1,t.Module=2,t.Namespace=3,t.Package=4,t.Class=5,t.Method=6,t.Property=7,t.Field=8,t.Constructor=9,t.Enum=10,t.Interface=11,t.Function=12,t.Variable=13,t.Constant=14,t.String=15,t.Number=16,t.Boolean=17,t.Array=18,t.Object=19,t.Key=20,t.Null=21,t.EnumMember=22,t.Struct=23,t.Event=24,t.Operator=25,t.TypeParameter=26})(Joe||(Joe={}));(function(t){t.Deprecated=1})(ele||(ele={}));(function(t){function e(r,n,i,a,s){let l={name:r,kind:n,location:{uri:a,range:i}};return s&&(l.containerName=s),l}o(e,"create"),t.create=e})(tle||(tle={}));(function(t){function e(r,n,i,a){return a!==void 0?{name:r,kind:n,location:{uri:i,range:a}}:{name:r,kind:n,location:{uri:i}}}o(e,"create"),t.create=e})(rle||(rle={}));(function(t){function e(n,i,a,s,l,u){let h={name:n,detail:i,kind:a,range:s,selectionRange:l};return u!==void 0&&(h.children=u),h}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Fe.string(i.name)&&Fe.number(i.kind)&&Pr.is(i.range)&&Pr.is(i.selectionRange)&&(i.detail===void 0||Fe.string(i.detail))&&(i.deprecated===void 0||Fe.boolean(i.deprecated))&&(i.children===void 0||Array.isArray(i.children))&&(i.tags===void 0||Array.isArray(i.tags))}o(r,"is"),t.is=r})(nle||(nle={}));(function(t){t.Empty="",t.QuickFix="quickfix",t.Refactor="refactor",t.RefactorExtract="refactor.extract",t.RefactorInline="refactor.inline",t.RefactorRewrite="refactor.rewrite",t.Source="source",t.SourceOrganizeImports="source.organizeImports",t.SourceFixAll="source.fixAll"})(ile||(ile={}));(function(t){t.Invoked=1,t.Automatic=2})(mE||(mE={}));(function(t){function e(n,i,a){let s={diagnostics:n};return i!=null&&(s.only=i),a!=null&&(s.triggerKind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.typedArray(i.diagnostics,dE.is)&&(i.only===void 0||Fe.typedArray(i.only,Fe.string))&&(i.triggerKind===void 0||i.triggerKind===mE.Invoked||i.triggerKind===mE.Automatic)}o(r,"is"),t.is=r})(ale||(ale={}));(function(t){function e(n,i,a){let s={title:n},l=!0;return typeof i=="string"?(l=!1,s.kind=i):r1.is(i)?s.command=i:s.edit=i,l&&a!==void 0&&(s.kind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Fe.string(i.title)&&(i.diagnostics===void 0||Fe.typedArray(i.diagnostics,dE.is))&&(i.kind===void 0||Fe.string(i.kind))&&(i.edit!==void 0||i.command!==void 0)&&(i.command===void 0||r1.is(i.command))&&(i.isPreferred===void 0||Fe.boolean(i.isPreferred))&&(i.edit===void 0||cM.is(i.edit))}o(r,"is"),t.is=r})(sle||(sle={}));(function(t){function e(n,i){let a={range:n};return Fe.defined(i)&&(a.data=i),a}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Pr.is(i.range)&&(Fe.undefined(i.command)||r1.is(i.command))}o(r,"is"),t.is=r})(ole||(ole={}));(function(t){function e(n,i){return{tabSize:n,insertSpaces:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.uinteger(i.tabSize)&&Fe.boolean(i.insertSpaces)}o(r,"is"),t.is=r})(lle||(lle={}));(function(t){function e(n,i,a){return{range:n,target:i,data:a}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Pr.is(i.range)&&(Fe.undefined(i.target)||Fe.string(i.target))}o(r,"is"),t.is=r})(cle||(cle={}));(function(t){function e(n,i){return{range:n,parent:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Pr.is(i.range)&&(i.parent===void 0||t.is(i.parent))}o(r,"is"),t.is=r})(ule||(ule={}));(function(t){t.namespace="namespace",t.type="type",t.class="class",t.enum="enum",t.interface="interface",t.struct="struct",t.typeParameter="typeParameter",t.parameter="parameter",t.variable="variable",t.property="property",t.enumMember="enumMember",t.event="event",t.function="function",t.method="method",t.macro="macro",t.keyword="keyword",t.modifier="modifier",t.comment="comment",t.string="string",t.number="number",t.regexp="regexp",t.operator="operator",t.decorator="decorator"})(hle||(hle={}));(function(t){t.declaration="declaration",t.definition="definition",t.readonly="readonly",t.static="static",t.deprecated="deprecated",t.abstract="abstract",t.async="async",t.modification="modification",t.documentation="documentation",t.defaultLibrary="defaultLibrary"})(fle||(fle={}));(function(t){function e(r){let n=r;return Fe.objectLiteral(n)&&(n.resultId===void 0||typeof n.resultId=="string")&&Array.isArray(n.data)&&(n.data.length===0||typeof n.data[0]=="number")}o(e,"is"),t.is=e})(dle||(dle={}));(function(t){function e(n,i){return{range:n,text:i}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Pr.is(i.range)&&Fe.string(i.text)}o(r,"is"),t.is=r})(ple||(ple={}));(function(t){function e(n,i,a){return{range:n,variableName:i,caseSensitiveLookup:a}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Pr.is(i.range)&&Fe.boolean(i.caseSensitiveLookup)&&(Fe.string(i.variableName)||i.variableName===void 0)}o(r,"is"),t.is=r})(mle||(mle={}));(function(t){function e(n,i){return{range:n,expression:i}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Pr.is(i.range)&&(Fe.string(i.expression)||i.expression===void 0)}o(r,"is"),t.is=r})(gle||(gle={}));(function(t){function e(n,i){return{frameId:n,stoppedLocation:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Pr.is(n.stoppedLocation)}o(r,"is"),t.is=r})(yle||(yle={}));(function(t){t.Type=1,t.Parameter=2;function e(r){return r===1||r===2}o(e,"is"),t.is=e})(fM||(fM={}));(function(t){function e(n){return{value:n}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&(i.tooltip===void 0||Fe.string(i.tooltip)||Ex.is(i.tooltip))&&(i.location===void 0||fE.is(i.location))&&(i.command===void 0||r1.is(i.command))}o(r,"is"),t.is=r})(dM||(dM={}));(function(t){function e(n,i,a){let s={position:n,label:i};return a!==void 0&&(s.kind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&jr.is(i.position)&&(Fe.string(i.label)||Fe.typedArray(i.label,dM.is))&&(i.kind===void 0||fM.is(i.kind))&&i.textEdits===void 0||Fe.typedArray(i.textEdits,n1.is)&&(i.tooltip===void 0||Fe.string(i.tooltip)||Ex.is(i.tooltip))&&(i.paddingLeft===void 0||Fe.boolean(i.paddingLeft))&&(i.paddingRight===void 0||Fe.boolean(i.paddingRight))}o(r,"is"),t.is=r})(vle||(vle={}));(function(t){function e(r){return{kind:"snippet",value:r}}o(e,"createSnippet"),t.createSnippet=e})(xle||(xle={}));(function(t){function e(r,n,i,a){return{insertText:r,filterText:n,range:i,command:a}}o(e,"create"),t.create=e})(ble||(ble={}));(function(t){function e(r){return{items:r}}o(e,"create"),t.create=e})(wle||(wle={}));(function(t){t.Invoked=0,t.Automatic=1})(Tle||(Tle={}));(function(t){function e(r,n){return{range:r,text:n}}o(e,"create"),t.create=e})(kle||(kle={}));(function(t){function e(r,n){return{triggerKind:r,selectedCompletionInfo:n}}o(e,"create"),t.create=e})(Ele||(Ele={}));(function(t){function e(r){let n=r;return Fe.objectLiteral(n)&&tM.is(n.uri)&&Fe.string(n.name)}o(e,"is"),t.is=e})(Sle||(Sle={}));(function(t){function e(a,s,l,u){return new pM(a,s,l,u)}o(e,"create"),t.create=e;function r(a){let s=a;return!!(Fe.defined(s)&&Fe.string(s.uri)&&(Fe.undefined(s.languageId)||Fe.string(s.languageId))&&Fe.uinteger(s.lineCount)&&Fe.func(s.getText)&&Fe.func(s.positionAt)&&Fe.func(s.offsetAt))}o(r,"is"),t.is=r;function n(a,s){let l=a.getText(),u=i(s,(f,d)=>{let p=f.range.start.line-d.range.start.line;return p===0?f.range.start.character-d.range.start.character:p}),h=l.length;for(let f=u.length-1;f>=0;f--){let d=u[f],p=a.offsetAt(d.range.start),m=a.offsetAt(d.range.end);if(m<=h)l=l.substring(0,p)+d.newText+l.substring(m,l.length);else throw new Error("Overlapping edit");h=p}return l}o(n,"applyEdits"),t.applyEdits=n;function i(a,s){if(a.length<=1)return a;let l=a.length/2|0,u=a.slice(0,l),h=a.slice(l);i(u,s),i(h,s);let f=0,d=0,p=0;for(;f0&&e.push(r.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let r=this.getLineOffsets(),n=0,i=r.length;if(i===0)return jr.create(0,e);for(;ne?i=s:n=s+1}let a=n-1;return jr.create(a,e-r[a])}offsetAt(e){let r=this.getLineOffsets();if(e.line>=r.length)return this._content.length;if(e.line<0)return 0;let n=r[e.line],i=e.line+1"u"}o(n,"undefined"),t.undefined=n;function i(m){return m===!0||m===!1}o(i,"boolean"),t.boolean=i;function a(m){return e.call(m)==="[object String]"}o(a,"string"),t.string=a;function s(m){return e.call(m)==="[object Number]"}o(s,"number"),t.number=s;function l(m,g,y){return e.call(m)==="[object Number]"&&g<=m&&m<=y}o(l,"numberRange"),t.numberRange=l;function u(m){return e.call(m)==="[object Number]"&&-2147483648<=m&&m<=2147483647}o(u,"integer"),t.integer=u;function h(m){return e.call(m)==="[object Number]"&&0<=m&&m<=2147483647}o(h,"uinteger"),t.uinteger=h;function f(m){return e.call(m)==="[object Function]"}o(f,"func"),t.func=f;function d(m){return m!==null&&typeof m=="object"}o(d,"objectLiteral"),t.objectLiteral=d;function p(m,g){return Array.isArray(m)&&m.every(g)}o(p,"typedArray"),t.typedArray=p})(Fe||(Fe={}))});var Sx,Cx,pp,mp,gM,a1,gE=N(()=>{"use strict";mM();Nl();Sx=class{static{o(this,"CstNodeBuilder")}constructor(){this.nodeStack=[]}get current(){var e;return(e=this.nodeStack[this.nodeStack.length-1])!==null&&e!==void 0?e:this.rootNode}buildRootNode(e){return this.rootNode=new a1(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){let r=new mp;return r.grammarSource=e,r.root=this.rootNode,this.current.content.push(r),this.nodeStack.push(r),r}buildLeafNode(e,r){let n=new pp(e.startOffset,e.image.length,Gm(e),e.tokenType,!r);return n.grammarSource=r,n.root=this.rootNode,this.current.content.push(n),n}removeNode(e){let r=e.container;if(r){let n=r.content.indexOf(e);n>=0&&r.content.splice(n,1)}}addHiddenNodes(e){let r=[];for(let a of e){let s=new pp(a.startOffset,a.image.length,Gm(a),a.tokenType,!0);s.root=this.rootNode,r.push(s)}let n=this.current,i=!1;if(n.content.length>0){n.content.push(...r);return}for(;n.container;){let a=n.container.content.indexOf(n);if(a>0){n.container.content.splice(a,0,...r),i=!0;break}n=n.container}i||this.rootNode.content.unshift(...r)}construct(e){let r=this.current;typeof e.$type=="string"&&(this.current.astNode=e),e.$cstNode=r;let n=this.nodeStack.pop();n?.content.length===0&&this.removeNode(n)}},Cx=class{static{o(this,"AbstractCstNode")}get parent(){return this.container}get feature(){return this.grammarSource}get hidden(){return!1}get astNode(){var e,r;let n=typeof((e=this._astNode)===null||e===void 0?void 0:e.$type)=="string"?this._astNode:(r=this.container)===null||r===void 0?void 0:r.astNode;if(!n)throw new Error("This node has no associated AST element");return n}set astNode(e){this._astNode=e}get element(){return this.astNode}get text(){return this.root.fullText.substring(this.offset,this.end)}},pp=class extends Cx{static{o(this,"LeafCstNodeImpl")}get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,r,n,i,a=!1){super(),this._hidden=a,this._offset=e,this._tokenType=i,this._length=r,this._range=n}},mp=class extends Cx{static{o(this,"CompositeCstNodeImpl")}constructor(){super(...arguments),this.content=new gM(this)}get children(){return this.content}get offset(){var e,r;return(r=(e=this.firstNonHiddenNode)===null||e===void 0?void 0:e.offset)!==null&&r!==void 0?r:0}get length(){return this.end-this.offset}get end(){var e,r;return(r=(e=this.lastNonHiddenNode)===null||e===void 0?void 0:e.end)!==null&&r!==void 0?r:0}get range(){let e=this.firstNonHiddenNode,r=this.lastNonHiddenNode;if(e&&r){if(this._rangeCache===void 0){let{range:n}=e,{range:i}=r;this._rangeCache={start:n.start,end:i.end.line=0;e--){let r=this.content[e];if(!r.hidden)return r}return this.content[this.content.length-1]}},gM=class t extends Array{static{o(this,"CstNodeContainer")}constructor(e){super(),this.parent=e,Object.setPrototypeOf(this,t.prototype)}push(...e){return this.addParents(e),super.push(...e)}unshift(...e){return this.addParents(e),super.unshift(...e)}splice(e,r,...n){return this.addParents(n),super.splice(e,r,...n)}addParents(e){for(let r of e)r.container=this.parent}},a1=class extends mp{static{o(this,"RootCstNodeImpl")}get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}}});function yM(t){return t.$type===yE}var yE,Ale,_le,Ax,_x,vE,s1,Dx,JBe,vM,Lx=N(()=>{"use strict";cf();Soe();Rc();Ol();is();gE();yE=Symbol("Datatype");o(yM,"isDataTypeNode");Ale="\u200B",_le=o(t=>t.endsWith(Ale)?t:t+Ale,"withRuleSuffix"),Ax=class{static{o(this,"AbstractLangiumParser")}constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;let r=this.lexer.definition,n=e.LanguageMetaData.mode==="production";this.wrapper=new vM(r,Object.assign(Object.assign({},e.parser.ParserConfig),{skipValidations:n,errorMessageProvider:e.parser.ParserErrorMessageProvider}))}alternatives(e,r){this.wrapper.wrapOr(e,r)}optional(e,r){this.wrapper.wrapOption(e,r)}many(e,r){this.wrapper.wrapMany(e,r)}atLeastOne(e,r){this.wrapper.wrapAtLeastOne(e,r)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},_x=class extends Ax{static{o(this,"LangiumParser")}get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new Sx,this.stack=[],this.assignmentMap=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,r){let n=this.computeRuleType(e),i=this.wrapper.DEFINE_RULE(_le(e.name),this.startImplementation(n,r).bind(this));return this.allRules.set(e.name,i),e.entry&&(this.mainRule=i),i}computeRuleType(e){if(!e.fragment){if(Z2(e))return yE;{let r=Rg(e);return r??e.name}}}parse(e,r={}){this.nodeBuilder.buildRootNode(e);let n=this.lexerResult=this.lexer.tokenize(e);this.wrapper.input=n.tokens;let i=r.rule?this.allRules.get(r.rule):this.mainRule;if(!i)throw new Error(r.rule?`No rule found with name '${r.rule}'`:"No main rule available.");let a=i.call(this.wrapper,{});return this.nodeBuilder.addHiddenNodes(n.hidden),this.unorderedGroups.clear(),this.lexerResult=void 0,{value:a,lexerErrors:n.errors,lexerReport:n.report,parserErrors:this.wrapper.errors}}startImplementation(e,r){return n=>{let i=!this.isRecording()&&e!==void 0;if(i){let s={$type:e};this.stack.push(s),e===yE&&(s.value="")}let a;try{a=r(n)}catch{a=void 0}return a===void 0&&i&&(a=this.construct()),a}}extractHiddenTokens(e){let r=this.lexerResult.hidden;if(!r.length)return[];let n=e.startOffset;for(let i=0;in)return r.splice(0,i);return r.splice(0,r.length)}consume(e,r,n){let i=this.wrapper.wrapConsume(e,r);if(!this.isRecording()&&this.isValidToken(i)){let a=this.extractHiddenTokens(i);this.nodeBuilder.addHiddenNodes(a);let s=this.nodeBuilder.buildLeafNode(i,n),{assignment:l,isCrossRef:u}=this.getAssignment(n),h=this.current;if(l){let f=Ho(n)?i.image:this.converter.convert(i.image,s);this.assign(l.operator,l.feature,f,s,u)}else if(yM(h)){let f=i.image;Ho(n)||(f=this.converter.convert(f,s).toString()),h.value+=f}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&typeof e.endOffset=="number"&&!isNaN(e.endOffset)}subrule(e,r,n,i,a){let s;!this.isRecording()&&!n&&(s=this.nodeBuilder.buildCompositeNode(i));let l=this.wrapper.wrapSubrule(e,r,a);!this.isRecording()&&s&&s.length>0&&this.performSubruleAssignment(l,i,s)}performSubruleAssignment(e,r,n){let{assignment:i,isCrossRef:a}=this.getAssignment(r);if(i)this.assign(i.operator,i.feature,e,n,a);else if(!i){let s=this.current;if(yM(s))s.value+=e.toString();else if(typeof e=="object"&&e){let u=this.assignWithoutOverride(e,s);this.stack.pop(),this.stack.push(u)}}}action(e,r){if(!this.isRecording()){let n=this.current;if(r.feature&&r.operator){n=this.construct(),this.nodeBuilder.removeNode(n.$cstNode),this.nodeBuilder.buildCompositeNode(r).content.push(n.$cstNode);let a={$type:e};this.stack.push(a),this.assign(r.operator,r.feature,n,n.$cstNode,!1)}else n.$type=e}}construct(){if(this.isRecording())return;let e=this.current;return vk(e),this.nodeBuilder.construct(e),this.stack.pop(),yM(e)?this.converter.convert(e.value,e.$cstNode):(XR(this.astReflection,e),e)}getAssignment(e){if(!this.assignmentMap.has(e)){let r=tp(e,Ml);this.assignmentMap.set(e,{assignment:r,isCrossRef:r?ep(r.terminal):!1})}return this.assignmentMap.get(e)}assign(e,r,n,i,a){let s=this.current,l;switch(a&&typeof n=="string"?l=this.linker.buildReference(s,r,i,n):l=n,e){case"=":{s[r]=l;break}case"?=":{s[r]=!0;break}case"+=":Array.isArray(s[r])||(s[r]=[]),s[r].push(l)}}assignWithoutOverride(e,r){for(let[i,a]of Object.entries(r)){let s=e[i];s===void 0?e[i]=a:Array.isArray(s)&&Array.isArray(a)&&(a.push(...s),e[i]=a)}let n=e.$cstNode;return n&&(n.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}},vE=class{static{o(this,"AbstractParserErrorMessageProvider")}buildMismatchTokenMessage(e){return zu.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return zu.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return zu.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return zu.buildEarlyExitMessage(e)}},s1=class extends vE{static{o(this,"LangiumParserErrorMessageProvider")}buildMismatchTokenMessage({expected:e,actual:r}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${r.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}},Dx=class extends Ax{static{o(this,"LangiumCompletionParser")}constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();let r=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=r.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,r){let n=this.wrapper.DEFINE_RULE(_le(e.name),this.startImplementation(r).bind(this));return this.allRules.set(e.name,n),e.entry&&(this.mainRule=n),n}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return r=>{let n=this.keepStackSize();try{e(r)}finally{this.resetStackSize(n)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){let e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,r,n){this.wrapper.wrapConsume(e,r),this.isRecording()||(this.lastElementStack=[...this.elementStack,n],this.nextTokenIndex=this.currIdx+1)}subrule(e,r,n,i,a){this.before(i),this.wrapper.wrapSubrule(e,r,a),this.after(i)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){let r=this.elementStack.lastIndexOf(e);r>=0&&this.elementStack.splice(r)}}get currIdx(){return this.wrapper.currIdx}},JBe={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new s1},vM=class extends xx{static{o(this,"ChevrotainWrapper")}constructor(e,r){let n=r&&"maxLookahead"in r;super(e,Object.assign(Object.assign(Object.assign({},JBe),{lookaheadStrategy:n?new Gu({maxLookahead:r.maxLookahead}):new kx({logging:r.skipValidations?()=>{}:void 0})}),r))}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,r){return this.RULE(e,r)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,r){return this.consume(e,r)}wrapSubrule(e,r,n){return this.subrule(e,r,{ARGS:[n]})}wrapOr(e,r){this.or(e,r)}wrapOption(e,r){this.option(e,r)}wrapMany(e,r){this.many(e,r)}wrapAtLeastOne(e,r){this.atLeastOne(e,r)}}});function Rx(t,e,r){return eFe({parser:e,tokens:r,ruleNames:new Map},t),e}function eFe(t,e){let r=K2(e,!1),n=en(e.rules).filter(Oa).filter(i=>r.has(i));for(let i of n){let a=Object.assign(Object.assign({},t),{consume:1,optional:1,subrule:1,many:1,or:1});t.parser.rule(i,gp(a,i.definition))}}function gp(t,e,r=!1){let n;if(Ho(e))n=oFe(t,e);else if(Mu(e))n=tFe(t,e);else if(Ml(e))n=gp(t,e.terminal);else if(ep(e))n=Dle(t,e);else if(Il(e))n=rFe(t,e);else if(mk(e))n=iFe(t,e);else if(yk(e))n=aFe(t,e);else if(sf(e))n=sFe(t,e);else if($R(e)){let i=t.consume++;n=o(()=>t.parser.consume(i,lo,e),"method")}else throw new Zd(e.$cstNode,`Unexpected element type: ${e.$type}`);return Lle(t,r?void 0:xE(e),n,e.cardinality)}function tFe(t,e){let r=J2(e);return()=>t.parser.action(r,e)}function rFe(t,e){let r=e.rule.ref;if(Oa(r)){let n=t.subrule++,i=r.fragment,a=e.arguments.length>0?nFe(r,e.arguments):()=>({});return s=>t.parser.subrule(n,Rle(t,r),i,e,a(s))}else if(so(r)){let n=t.consume++,i=xM(t,r.name);return()=>t.parser.consume(n,i,e)}else if(r)Lc(r);else throw new Zd(e.$cstNode,`Undefined rule: ${e.rule.$refText}`)}function nFe(t,e){let r=e.map(n=>Vu(n.value));return n=>{let i={};for(let a=0;ae(n)||r(n)}else if(RR(t)){let e=Vu(t.left),r=Vu(t.right);return n=>e(n)&&r(n)}else if(MR(t)){let e=Vu(t.value);return r=>!e(r)}else if(IR(t)){let e=t.parameter.ref.name;return r=>r!==void 0&&r[e]===!0}else if(LR(t)){let e=!!t.true;return()=>e}Lc(t)}function iFe(t,e){if(e.elements.length===1)return gp(t,e.elements[0]);{let r=[];for(let i of e.elements){let a={ALT:gp(t,i,!0)},s=xE(i);s&&(a.GATE=Vu(s)),r.push(a)}let n=t.or++;return i=>t.parser.alternatives(n,r.map(a=>{let s={ALT:o(()=>a.ALT(i),"ALT")},l=a.GATE;return l&&(s.GATE=()=>l(i)),s}))}}function aFe(t,e){if(e.elements.length===1)return gp(t,e.elements[0]);let r=[];for(let l of e.elements){let u={ALT:gp(t,l,!0)},h=xE(l);h&&(u.GATE=Vu(h)),r.push(u)}let n=t.or++,i=o((l,u)=>{let h=u.getRuleStack().join("-");return`uGroup_${l}_${h}`},"idFunc"),a=o(l=>t.parser.alternatives(n,r.map((u,h)=>{let f={ALT:o(()=>!0,"ALT")},d=t.parser;f.ALT=()=>{if(u.ALT(l),!d.isRecording()){let m=i(n,d);d.unorderedGroups.get(m)||d.unorderedGroups.set(m,[]);let g=d.unorderedGroups.get(m);typeof g?.[h]>"u"&&(g[h]=!0)}};let p=u.GATE;return p?f.GATE=()=>p(l):f.GATE=()=>{let m=d.unorderedGroups.get(i(n,d));return!m?.[h]},f})),"alternatives"),s=Lle(t,xE(e),a,"*");return l=>{s(l),t.parser.isRecording()||t.parser.unorderedGroups.delete(i(n,t.parser))}}function sFe(t,e){let r=e.elements.map(n=>gp(t,n));return n=>r.forEach(i=>i(n))}function xE(t){if(sf(t))return t.guardCondition}function Dle(t,e,r=e.terminal){if(r)if(Il(r)&&Oa(r.rule.ref)){let n=r.rule.ref,i=t.subrule++;return a=>t.parser.subrule(i,Rle(t,n),!1,e,a)}else if(Il(r)&&so(r.rule.ref)){let n=t.consume++,i=xM(t,r.rule.ref.name);return()=>t.parser.consume(n,i,e)}else if(Ho(r)){let n=t.consume++,i=xM(t,r.value);return()=>t.parser.consume(n,i,e)}else throw new Error("Could not build cross reference parser");else{if(!e.type.ref)throw new Error("Could not resolve reference to type: "+e.type.$refText);let n=kk(e.type.ref),i=n?.terminal;if(!i)throw new Error("Could not find name assignment for type: "+J2(e.type.ref));return Dle(t,e,i)}}function oFe(t,e){let r=t.consume++,n=t.tokens[e.value];if(!n)throw new Error("Could not find token for keyword: "+e.value);return()=>t.parser.consume(r,n,e)}function Lle(t,e,r,n){let i=e&&Vu(e);if(!n)if(i){let a=t.or++;return s=>t.parser.alternatives(a,[{ALT:o(()=>r(s),"ALT"),GATE:o(()=>i(s),"GATE")},{ALT:lE(),GATE:o(()=>!i(s),"GATE")}])}else return r;if(n==="*"){let a=t.many++;return s=>t.parser.many(a,{DEF:o(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else if(n==="+"){let a=t.many++;if(i){let s=t.or++;return l=>t.parser.alternatives(s,[{ALT:o(()=>t.parser.atLeastOne(a,{DEF:o(()=>r(l),"DEF")}),"ALT"),GATE:o(()=>i(l),"GATE")},{ALT:lE(),GATE:o(()=>!i(l),"GATE")}])}else return s=>t.parser.atLeastOne(a,{DEF:o(()=>r(s),"DEF")})}else if(n==="?"){let a=t.optional++;return s=>t.parser.optional(a,{DEF:o(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else Lc(n)}function Rle(t,e){let r=lFe(t,e),n=t.parser.getRule(r);if(!n)throw new Error(`Rule "${r}" not found."`);return n}function lFe(t,e){if(Oa(e))return e.name;if(t.ruleNames.has(e))return t.ruleNames.get(e);{let r=e,n=r.$container,i=e.$type;for(;!Oa(n);)(sf(n)||mk(n)||yk(n))&&(i=n.elements.indexOf(r).toString()+":"+i),r=n,n=n.$container;return i=n.name+":"+i,t.ruleNames.set(e,i),i}}function xM(t,e){let r=t.tokens[e];if(!r)throw new Error(`Token "${e}" not found."`);return r}var bE=N(()=>{"use strict";cf();Rc();uk();Ps();Ol();o(Rx,"createParser");o(eFe,"buildRules");o(gp,"buildElement");o(tFe,"buildAction");o(rFe,"buildRuleCall");o(nFe,"buildRuleCallPredicate");o(Vu,"buildPredicate");o(iFe,"buildAlternatives");o(aFe,"buildUnorderedGroup");o(sFe,"buildGroup");o(xE,"getGuardCondition");o(Dle,"buildCrossReference");o(oFe,"buildKeyword");o(Lle,"wrap");o(Rle,"getRule");o(lFe,"getRuleName");o(xM,"getToken")});function bM(t){let e=t.Grammar,r=t.parser.Lexer,n=new Dx(t);return Rx(e,n,r.definition),n.finalize(),n}var wM=N(()=>{"use strict";Lx();bE();o(bM,"createCompletionParser")});function TM(t){let e=Nle(t);return e.finalize(),e}function Nle(t){let e=t.Grammar,r=t.parser.Lexer,n=new _x(t);return Rx(e,n,r.definition)}var kM=N(()=>{"use strict";Lx();bE();o(TM,"createLangiumParser");o(Nle,"prepareLangiumParser")});var Uu,wE=N(()=>{"use strict";cf();Rc();is();Ol();Lg();Ps();Uu=class{static{o(this,"DefaultTokenBuilder")}constructor(){this.diagnostics=[]}buildTokens(e,r){let n=en(K2(e,!1)),i=this.buildTerminalTokens(n),a=this.buildKeywordTokens(n,i,r);return i.forEach(s=>{let l=s.PATTERN;typeof l=="object"&&l&&"test"in l&&Dg(l)?a.unshift(s):a.push(s)}),a}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){let e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(so).filter(r=>!r.fragment).map(r=>this.buildTerminalToken(r)).toArray()}buildTerminalToken(e){let r=Ng(e),n=this.requiresCustomPattern(r)?this.regexPatternFunction(r):r,i={name:e.name,PATTERN:n};return typeof n=="function"&&(i.LINE_BREAKS=!0),e.hidden&&(i.GROUP=Dg(r)?Xn.SKIPPED:"hidden"),i}requiresCustomPattern(e){return e.flags.includes("u")||e.flags.includes("s")?!0:!!(e.source.includes("?<=")||e.source.includes("?(r.lastIndex=i,r.exec(n))}buildKeywordTokens(e,r,n){return e.filter(Oa).flatMap(i=>Nc(i).filter(Ho)).distinct(i=>i.value).toArray().sort((i,a)=>a.value.length-i.value.length).map(i=>this.buildKeywordToken(i,r,!!n?.caseInsensitive))}buildKeywordToken(e,r,n){let i=this.buildKeywordPattern(e,n),a={name:e.value,PATTERN:i,LONGER_ALT:this.findLongerAlt(e,r)};return typeof i=="function"&&(a.LINE_BREAKS=!0),a}buildKeywordPattern(e,r){return r?new RegExp(tN(e.value)):e.value}findLongerAlt(e,r){return r.reduce((n,i)=>{let a=i?.PATTERN;return a?.source&&rN("^"+a.source+"$",e.value)&&n.push(i),n},[])}}});var yp,Oc,EM=N(()=>{"use strict";Rc();Ol();yp=class{static{o(this,"DefaultValueConverter")}convert(e,r){let n=r.grammarSource;if(ep(n)&&(n=aN(n)),Il(n)){let i=n.rule.ref;if(!i)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(i,e,r)}return e}runConverter(e,r,n){var i;switch(e.name.toUpperCase()){case"INT":return Oc.convertInt(r);case"STRING":return Oc.convertString(r);case"ID":return Oc.convertID(r)}switch((i=fN(e))===null||i===void 0?void 0:i.toLowerCase()){case"number":return Oc.convertNumber(r);case"boolean":return Oc.convertBoolean(r);case"bigint":return Oc.convertBigint(r);case"date":return Oc.convertDate(r);default:return r}}};(function(t){function e(h){let f="";for(let d=1;d{"use strict";Object.defineProperty(AM,"__esModule",{value:!0});var SM;function CM(){if(SM===void 0)throw new Error("No runtime abstraction layer installed");return SM}o(CM,"RAL");(function(t){function e(r){if(r===void 0)throw new Error("No runtime abstraction layer provided");SM=r}o(e,"install"),t.install=e})(CM||(CM={}));AM.default=CM});var Ole=Mi(Ba=>{"use strict";Object.defineProperty(Ba,"__esModule",{value:!0});Ba.stringArray=Ba.array=Ba.func=Ba.error=Ba.number=Ba.string=Ba.boolean=void 0;function cFe(t){return t===!0||t===!1}o(cFe,"boolean");Ba.boolean=cFe;function Mle(t){return typeof t=="string"||t instanceof String}o(Mle,"string");Ba.string=Mle;function uFe(t){return typeof t=="number"||t instanceof Number}o(uFe,"number");Ba.number=uFe;function hFe(t){return t instanceof Error}o(hFe,"error");Ba.error=hFe;function fFe(t){return typeof t=="function"}o(fFe,"func");Ba.func=fFe;function Ile(t){return Array.isArray(t)}o(Ile,"array");Ba.array=Ile;function dFe(t){return Ile(t)&&t.every(e=>Mle(e))}o(dFe,"stringArray");Ba.stringArray=dFe});var LM=Mi(o1=>{"use strict";Object.defineProperty(o1,"__esModule",{value:!0});o1.Emitter=o1.Event=void 0;var pFe=_M(),Ple;(function(t){let e={dispose(){}};t.None=function(){return e}})(Ple||(o1.Event=Ple={}));var DM=class{static{o(this,"CallbackList")}add(e,r=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(r),Array.isArray(n)&&n.push({dispose:o(()=>this.remove(e,r),"dispose")})}remove(e,r=null){if(!this._callbacks)return;let n=!1;for(let i=0,a=this._callbacks.length;i{this._callbacks||(this._callbacks=new DM),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,r);let i={dispose:o(()=>{this._callbacks&&(this._callbacks.remove(e,r),i.dispose=t._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))},"dispose")};return Array.isArray(n)&&n.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};o1.Emitter=TE;TE._noop=function(){}});var Ble=Mi(l1=>{"use strict";Object.defineProperty(l1,"__esModule",{value:!0});l1.CancellationTokenSource=l1.CancellationToken=void 0;var mFe=_M(),gFe=Ole(),RM=LM(),kE;(function(t){t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:RM.Event.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:RM.Event.None});function e(r){let n=r;return n&&(n===t.None||n===t.Cancelled||gFe.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}o(e,"is"),t.is=e})(kE||(l1.CancellationToken=kE={}));var yFe=Object.freeze(function(t,e){let r=(0,mFe.default)().timer.setTimeout(t.bind(e),0);return{dispose(){r.dispose()}}}),EE=class{static{o(this,"MutableToken")}constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?yFe:(this._emitter||(this._emitter=new RM.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},NM=class{static{o(this,"CancellationTokenSource")}get token(){return this._token||(this._token=new EE),this._token}cancel(){this._token?this._token.cancel():this._token=kE.Cancelled}dispose(){this._token?this._token instanceof EE&&this._token.dispose():this._token=kE.None}};l1.CancellationTokenSource=NM});var yr={};var qo=N(()=>{"use strict";Sr(yr,Sa(Ble(),1))});function MM(){return new Promise(t=>{typeof setImmediate>"u"?setTimeout(t,0):setImmediate(t)})}function CE(){return SE=performance.now(),new yr.CancellationTokenSource}function $le(t){Fle=t}function Bc(t){return t===Pc}async function xi(t){if(t===yr.CancellationToken.None)return;let e=performance.now();if(e-SE>=Fle&&(SE=e,await MM(),SE=performance.now()),t.isCancellationRequested)throw Pc}var SE,Fle,Pc,cs,Yo=N(()=>{"use strict";qo();o(MM,"delayNextTick");SE=0,Fle=10;o(CE,"startCancelableOperation");o($le,"setInterruptionPeriod");Pc=Symbol("OperationCancelled");o(Bc,"isOperationCancelled");o(xi,"interruptAndCheck");cs=class{static{o(this,"Deferred")}constructor(){this.promise=new Promise((e,r)=>{this.resolve=n=>(e(n),this),this.reject=n=>(r(n),this)})}}});function IM(t,e){if(t.length<=1)return t;let r=t.length/2|0,n=t.slice(0,r),i=t.slice(r);IM(n,e),IM(i,e);let a=0,s=0,l=0;for(;ar.line||e.line===r.line&&e.character>r.character?{start:r,end:e}:t}function vFe(t){let e=Vle(t.range);return e!==t.range?{newText:t.newText,range:e}:t}var AE,c1,Ule=N(()=>{"use strict";AE=class t{static{o(this,"FullTextDocument")}constructor(e,r,n,i){this._uri=e,this._languageId=r,this._version=n,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let r=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(r,n)}return this._content}update(e,r){for(let n of e)if(t.isIncremental(n)){let i=Vle(n.range),a=this.offsetAt(i.start),s=this.offsetAt(i.end);this._content=this._content.substring(0,a)+n.text+this._content.substring(s,this._content.length);let l=Math.max(i.start.line,0),u=Math.max(i.end.line,0),h=this._lineOffsets,f=zle(n.text,!1,a);if(u-l===f.length)for(let p=0,m=f.length;pe?i=s:n=s+1}let a=n-1;return e=this.ensureBeforeEOL(e,r[a]),{line:a,character:e-r[a]}}offsetAt(e){let r=this.getLineOffsets();if(e.line>=r.length)return this._content.length;if(e.line<0)return 0;let n=r[e.line];if(e.character<=0)return n;let i=e.line+1r&&Gle(this._content.charCodeAt(e-1));)e--;return e}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){let r=e;return r!=null&&typeof r.text=="string"&&r.range!==void 0&&(r.rangeLength===void 0||typeof r.rangeLength=="number")}static isFull(e){let r=e;return r!=null&&typeof r.text=="string"&&r.range===void 0&&r.rangeLength===void 0}};(function(t){function e(i,a,s,l){return new AE(i,a,s,l)}o(e,"create"),t.create=e;function r(i,a,s){if(i instanceof AE)return i.update(a,s),i;throw new Error("TextDocument.update: document must be created by TextDocument.create")}o(r,"update"),t.update=r;function n(i,a){let s=i.getText(),l=IM(a.map(vFe),(f,d)=>{let p=f.range.start.line-d.range.start.line;return p===0?f.range.start.character-d.range.start.character:p}),u=0,h=[];for(let f of l){let d=i.offsetAt(f.range.start);if(du&&h.push(s.substring(u,d)),f.newText.length&&h.push(f.newText),u=i.offsetAt(f.range.end)}return h.push(s.substr(u)),h.join("")}o(n,"applyEdits"),t.applyEdits=n})(c1||(c1={}));o(IM,"mergeSort");o(zle,"computeLineOffsets");o(Gle,"isEOL");o(Vle,"getWellformedRange");o(vFe,"getWellformedEdit")});var Hle,us,u1,OM=N(()=>{"use strict";(()=>{"use strict";var t={470:i=>{function a(u){if(typeof u!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(u))}o(a,"e");function s(u,h){for(var f,d="",p=0,m=-1,g=0,y=0;y<=u.length;++y){if(y2){var v=d.lastIndexOf("/");if(v!==d.length-1){v===-1?(d="",p=0):p=(d=d.slice(0,v)).length-1-d.lastIndexOf("/"),m=y,g=0;continue}}else if(d.length===2||d.length===1){d="",p=0,m=y,g=0;continue}}h&&(d.length>0?d+="/..":d="..",p=2)}else d.length>0?d+="/"+u.slice(m+1,y):d=u.slice(m+1,y),p=y-m-1;m=y,g=0}else f===46&&g!==-1?++g:g=-1}return d}o(s,"r");var l={resolve:o(function(){for(var u,h="",f=!1,d=arguments.length-1;d>=-1&&!f;d--){var p;d>=0?p=arguments[d]:(u===void 0&&(u=process.cwd()),p=u),a(p),p.length!==0&&(h=p+"/"+h,f=p.charCodeAt(0)===47)}return h=s(h,!f),f?h.length>0?"/"+h:"/":h.length>0?h:"."},"resolve"),normalize:o(function(u){if(a(u),u.length===0)return".";var h=u.charCodeAt(0)===47,f=u.charCodeAt(u.length-1)===47;return(u=s(u,!h)).length!==0||h||(u="."),u.length>0&&f&&(u+="/"),h?"/"+u:u},"normalize"),isAbsolute:o(function(u){return a(u),u.length>0&&u.charCodeAt(0)===47},"isAbsolute"),join:o(function(){if(arguments.length===0)return".";for(var u,h=0;h0&&(u===void 0?u=f:u+="/"+f)}return u===void 0?".":l.normalize(u)},"join"),relative:o(function(u,h){if(a(u),a(h),u===h||(u=l.resolve(u))===(h=l.resolve(h)))return"";for(var f=1;fy){if(h.charCodeAt(m+x)===47)return h.slice(m+x+1);if(x===0)return h.slice(m+x)}else p>y&&(u.charCodeAt(f+x)===47?v=x:x===0&&(v=0));break}var b=u.charCodeAt(f+x);if(b!==h.charCodeAt(m+x))break;b===47&&(v=x)}var w="";for(x=f+v+1;x<=d;++x)x!==d&&u.charCodeAt(x)!==47||(w.length===0?w+="..":w+="/..");return w.length>0?w+h.slice(m+v):(m+=v,h.charCodeAt(m)===47&&++m,h.slice(m))},"relative"),_makeLong:o(function(u){return u},"_makeLong"),dirname:o(function(u){if(a(u),u.length===0)return".";for(var h=u.charCodeAt(0),f=h===47,d=-1,p=!0,m=u.length-1;m>=1;--m)if((h=u.charCodeAt(m))===47){if(!p){d=m;break}}else p=!1;return d===-1?f?"/":".":f&&d===1?"//":u.slice(0,d)},"dirname"),basename:o(function(u,h){if(h!==void 0&&typeof h!="string")throw new TypeError('"ext" argument must be a string');a(u);var f,d=0,p=-1,m=!0;if(h!==void 0&&h.length>0&&h.length<=u.length){if(h.length===u.length&&h===u)return"";var g=h.length-1,y=-1;for(f=u.length-1;f>=0;--f){var v=u.charCodeAt(f);if(v===47){if(!m){d=f+1;break}}else y===-1&&(m=!1,y=f+1),g>=0&&(v===h.charCodeAt(g)?--g==-1&&(p=f):(g=-1,p=y))}return d===p?p=y:p===-1&&(p=u.length),u.slice(d,p)}for(f=u.length-1;f>=0;--f)if(u.charCodeAt(f)===47){if(!m){d=f+1;break}}else p===-1&&(m=!1,p=f+1);return p===-1?"":u.slice(d,p)},"basename"),extname:o(function(u){a(u);for(var h=-1,f=0,d=-1,p=!0,m=0,g=u.length-1;g>=0;--g){var y=u.charCodeAt(g);if(y!==47)d===-1&&(p=!1,d=g+1),y===46?h===-1?h=g:m!==1&&(m=1):h!==-1&&(m=-1);else if(!p){f=g+1;break}}return h===-1||d===-1||m===0||m===1&&h===d-1&&h===f+1?"":u.slice(h,d)},"extname"),format:o(function(u){if(u===null||typeof u!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof u);return function(h,f){var d=f.dir||f.root,p=f.base||(f.name||"")+(f.ext||"");return d?d===f.root?d+p:d+"/"+p:p}(0,u)},"format"),parse:o(function(u){a(u);var h={root:"",dir:"",base:"",ext:"",name:""};if(u.length===0)return h;var f,d=u.charCodeAt(0),p=d===47;p?(h.root="/",f=1):f=0;for(var m=-1,g=0,y=-1,v=!0,x=u.length-1,b=0;x>=f;--x)if((d=u.charCodeAt(x))!==47)y===-1&&(v=!1,y=x+1),d===46?m===-1?m=x:b!==1&&(b=1):m!==-1&&(b=-1);else if(!v){g=x+1;break}return m===-1||y===-1||b===0||b===1&&m===y-1&&m===g+1?y!==-1&&(h.base=h.name=g===0&&p?u.slice(1,y):u.slice(g,y)):(g===0&&p?(h.name=u.slice(1,m),h.base=u.slice(1,y)):(h.name=u.slice(g,m),h.base=u.slice(g,y)),h.ext=u.slice(m,y)),g>0?h.dir=u.slice(0,g-1):p&&(h.dir="/"),h},"parse"),sep:"/",delimiter:":",win32:null,posix:null};l.posix=l,i.exports=l}},e={};function r(i){var a=e[i];if(a!==void 0)return a.exports;var s=e[i]={exports:{}};return t[i](s,s.exports,r),s.exports}o(r,"r"),r.d=(i,a)=>{for(var s in a)r.o(a,s)&&!r.o(i,s)&&Object.defineProperty(i,s,{enumerable:!0,get:a[s]})},r.o=(i,a)=>Object.prototype.hasOwnProperty.call(i,a),r.r=i=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var n={};(()=>{let i;r.r(n),r.d(n,{URI:o(()=>p,"URI"),Utils:o(()=>I,"Utils")}),typeof process=="object"?i=process.platform==="win32":typeof navigator=="object"&&(i=navigator.userAgent.indexOf("Windows")>=0);let a=/^\w[\w\d+.-]*$/,s=/^\//,l=/^\/\//;function u(D,k){if(!D.scheme&&k)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${D.authority}", path: "${D.path}", query: "${D.query}", fragment: "${D.fragment}"}`);if(D.scheme&&!a.test(D.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(D.path){if(D.authority){if(!s.test(D.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(l.test(D.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}o(u,"s");let h="",f="/",d=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class p{static{o(this,"f")}static isUri(k){return k instanceof p||!!k&&typeof k.authority=="string"&&typeof k.fragment=="string"&&typeof k.path=="string"&&typeof k.query=="string"&&typeof k.scheme=="string"&&typeof k.fsPath=="string"&&typeof k.with=="function"&&typeof k.toString=="function"}scheme;authority;path;query;fragment;constructor(k,L,R,O,M,B=!1){typeof k=="object"?(this.scheme=k.scheme||h,this.authority=k.authority||h,this.path=k.path||h,this.query=k.query||h,this.fragment=k.fragment||h):(this.scheme=function(F,P){return F||P?F:"file"}(k,B),this.authority=L||h,this.path=function(F,P){switch(F){case"https":case"http":case"file":P?P[0]!==f&&(P=f+P):P=f}return P}(this.scheme,R||h),this.query=O||h,this.fragment=M||h,u(this,B))}get fsPath(){return b(this,!1)}with(k){if(!k)return this;let{scheme:L,authority:R,path:O,query:M,fragment:B}=k;return L===void 0?L=this.scheme:L===null&&(L=h),R===void 0?R=this.authority:R===null&&(R=h),O===void 0?O=this.path:O===null&&(O=h),M===void 0?M=this.query:M===null&&(M=h),B===void 0?B=this.fragment:B===null&&(B=h),L===this.scheme&&R===this.authority&&O===this.path&&M===this.query&&B===this.fragment?this:new g(L,R,O,M,B)}static parse(k,L=!1){let R=d.exec(k);return R?new g(R[2]||h,E(R[4]||h),E(R[5]||h),E(R[7]||h),E(R[9]||h),L):new g(h,h,h,h,h)}static file(k){let L=h;if(i&&(k=k.replace(/\\/g,f)),k[0]===f&&k[1]===f){let R=k.indexOf(f,2);R===-1?(L=k.substring(2),k=f):(L=k.substring(2,R),k=k.substring(R)||f)}return new g("file",L,k,h,h)}static from(k){let L=new g(k.scheme,k.authority,k.path,k.query,k.fragment);return u(L,!0),L}toString(k=!1){return w(this,k)}toJSON(){return this}static revive(k){if(k){if(k instanceof p)return k;{let L=new g(k);return L._formatted=k.external,L._fsPath=k._sep===m?k.fsPath:null,L}}return k}}let m=i?1:void 0;class g extends p{static{o(this,"l")}_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=b(this,!1)),this._fsPath}toString(k=!1){return k?w(this,!0):(this._formatted||(this._formatted=w(this,!1)),this._formatted)}toJSON(){let k={$mid:1};return this._fsPath&&(k.fsPath=this._fsPath,k._sep=m),this._formatted&&(k.external=this._formatted),this.path&&(k.path=this.path),this.scheme&&(k.scheme=this.scheme),this.authority&&(k.authority=this.authority),this.query&&(k.query=this.query),this.fragment&&(k.fragment=this.fragment),k}}let y={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function v(D,k,L){let R,O=-1;for(let M=0;M=97&&B<=122||B>=65&&B<=90||B>=48&&B<=57||B===45||B===46||B===95||B===126||k&&B===47||L&&B===91||L&&B===93||L&&B===58)O!==-1&&(R+=encodeURIComponent(D.substring(O,M)),O=-1),R!==void 0&&(R+=D.charAt(M));else{R===void 0&&(R=D.substr(0,M));let F=y[B];F!==void 0?(O!==-1&&(R+=encodeURIComponent(D.substring(O,M)),O=-1),R+=F):O===-1&&(O=M)}}return O!==-1&&(R+=encodeURIComponent(D.substring(O))),R!==void 0?R:D}o(v,"d");function x(D){let k;for(let L=0;L1&&D.scheme==="file"?`//${D.authority}${D.path}`:D.path.charCodeAt(0)===47&&(D.path.charCodeAt(1)>=65&&D.path.charCodeAt(1)<=90||D.path.charCodeAt(1)>=97&&D.path.charCodeAt(1)<=122)&&D.path.charCodeAt(2)===58?k?D.path.substr(1):D.path[1].toLowerCase()+D.path.substr(2):D.path,i&&(L=L.replace(/\//g,"\\")),L}o(b,"m");function w(D,k){let L=k?x:v,R="",{scheme:O,authority:M,path:B,query:F,fragment:P}=D;if(O&&(R+=O,R+=":"),(M||O==="file")&&(R+=f,R+=f),M){let z=M.indexOf("@");if(z!==-1){let $=M.substr(0,z);M=M.substr(z+1),z=$.lastIndexOf(":"),z===-1?R+=L($,!1,!1):(R+=L($.substr(0,z),!1,!1),R+=":",R+=L($.substr(z+1),!1,!0)),R+="@"}M=M.toLowerCase(),z=M.lastIndexOf(":"),z===-1?R+=L(M,!1,!0):(R+=L(M.substr(0,z),!1,!0),R+=M.substr(z))}if(B){if(B.length>=3&&B.charCodeAt(0)===47&&B.charCodeAt(2)===58){let z=B.charCodeAt(1);z>=65&&z<=90&&(B=`/${String.fromCharCode(z+32)}:${B.substr(3)}`)}else if(B.length>=2&&B.charCodeAt(1)===58){let z=B.charCodeAt(0);z>=65&&z<=90&&(B=`${String.fromCharCode(z+32)}:${B.substr(2)}`)}R+=L(B,!0,!1)}return F&&(R+="?",R+=L(F,!1,!1)),P&&(R+="#",R+=k?P:v(P,!1,!1)),R}o(w,"y");function C(D){try{return decodeURIComponent(D)}catch{return D.length>3?D.substr(0,3)+C(D.substr(3)):D}}o(C,"v");let T=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function E(D){return D.match(T)?D.replace(T,k=>C(k)):D}o(E,"C");var A=r(470);let S=A.posix||A,_="/";var I;(function(D){D.joinPath=function(k,...L){return k.with({path:S.join(k.path,...L)})},D.resolvePath=function(k,...L){let R=k.path,O=!1;R[0]!==_&&(R=_+R,O=!0);let M=S.resolve(R,...L);return O&&M[0]===_&&!k.authority&&(M=M.substring(1)),k.with({path:M})},D.dirname=function(k){if(k.path.length===0||k.path===_)return k;let L=S.dirname(k.path);return L.length===1&&L.charCodeAt(0)===46&&(L=""),k.with({path:L})},D.basename=function(k){return S.basename(k.path)},D.extname=function(k){return S.extname(k.path)}})(I||(I={}))})(),Hle=n})();({URI:us,Utils:u1}=Hle)});var hs,Fc=N(()=>{"use strict";OM();(function(t){t.basename=u1.basename,t.dirname=u1.dirname,t.extname=u1.extname,t.joinPath=u1.joinPath,t.resolvePath=u1.resolvePath;function e(i,a){return i?.toString()===a?.toString()}o(e,"equals"),t.equals=e;function r(i,a){let s=typeof i=="string"?i:i.path,l=typeof a=="string"?a:a.path,u=s.split("/").filter(m=>m.length>0),h=l.split("/").filter(m=>m.length>0),f=0;for(;f{"use strict";Ule();h1();qo();Ps();Fc();(function(t){t[t.Changed=0]="Changed",t[t.Parsed=1]="Parsed",t[t.IndexedContent=2]="IndexedContent",t[t.ComputedScopes=3]="ComputedScopes",t[t.Linked=4]="Linked",t[t.IndexedReferences=5]="IndexedReferences",t[t.Validated=6]="Validated"})(kn||(kn={}));Nx=class{static{o(this,"DefaultLangiumDocumentFactory")}constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,r=yr.CancellationToken.None){let n=await this.fileSystemProvider.readFile(e);return this.createAsync(e,n,r)}fromTextDocument(e,r,n){return r=r??us.parse(e.uri),yr.CancellationToken.is(n)?this.createAsync(r,e,n):this.create(r,e,n)}fromString(e,r,n){return yr.CancellationToken.is(n)?this.createAsync(r,e,n):this.create(r,e,n)}fromModel(e,r){return this.create(r,{$model:e})}create(e,r,n){if(typeof r=="string"){let i=this.parse(e,r,n);return this.createLangiumDocument(i,e,void 0,r)}else if("$model"in r){let i={value:r.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(i,e)}else{let i=this.parse(e,r.getText(),n);return this.createLangiumDocument(i,e,r)}}async createAsync(e,r,n){if(typeof r=="string"){let i=await this.parseAsync(e,r,n);return this.createLangiumDocument(i,e,void 0,r)}else{let i=await this.parseAsync(e,r.getText(),n);return this.createLangiumDocument(i,e,r)}}createLangiumDocument(e,r,n,i){let a;if(n)a={parseResult:e,uri:r,state:kn.Parsed,references:[],textDocument:n};else{let s=this.createTextDocumentGetter(r,i);a={parseResult:e,uri:r,state:kn.Parsed,references:[],get textDocument(){return s()}}}return e.value.$document=a,a}async update(e,r){var n,i;let a=(n=e.parseResult.value.$cstNode)===null||n===void 0?void 0:n.root.fullText,s=(i=this.textDocuments)===null||i===void 0?void 0:i.get(e.uri.toString()),l=s?s.getText():await this.fileSystemProvider.readFile(e.uri);if(s)Object.defineProperty(e,"textDocument",{value:s});else{let u=this.createTextDocumentGetter(e.uri,l);Object.defineProperty(e,"textDocument",{get:u})}return a!==l&&(e.parseResult=await this.parseAsync(e.uri,l,r),e.parseResult.value.$document=e),e.state=kn.Parsed,e}parse(e,r,n){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(r,n)}parseAsync(e,r,n){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(r,n)}createTextDocumentGetter(e,r){let n=this.serviceRegistry,i;return()=>i??(i=c1.create(e.toString(),n.getServices(e).LanguageMetaData.languageId,0,r??""))}},Mx=class{static{o(this,"DefaultLangiumDocuments")}constructor(e){this.documentMap=new Map,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.serviceRegistry=e.ServiceRegistry}get all(){return en(this.documentMap.values())}addDocument(e){let r=e.uri.toString();if(this.documentMap.has(r))throw new Error(`A document with the URI '${r}' is already present.`);this.documentMap.set(r,e)}getDocument(e){let r=e.toString();return this.documentMap.get(r)}async getOrCreateDocument(e,r){let n=this.getDocument(e);return n||(n=await this.langiumDocumentFactory.fromUri(e,r),this.addDocument(n),n)}createDocument(e,r,n){if(n)return this.langiumDocumentFactory.fromString(r,e,n).then(i=>(this.addDocument(i),i));{let i=this.langiumDocumentFactory.fromString(r,e);return this.addDocument(i),i}}hasDocument(e){return this.documentMap.has(e.toString())}invalidateDocument(e){let r=e.toString(),n=this.documentMap.get(r);return n&&(this.serviceRegistry.getServices(e).references.Linker.unlink(n),n.state=kn.Changed,n.precomputedScopes=void 0,n.diagnostics=void 0),n}deleteDocument(e){let r=e.toString(),n=this.documentMap.get(r);return n&&(n.state=kn.Changed,this.documentMap.delete(r)),n}}});var PM,Ix,BM=N(()=>{"use strict";qo();Rl();is();Yo();h1();PM=Symbol("ref_resolving"),Ix=class{static{o(this,"DefaultLinker")}constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator}async link(e,r=yr.CancellationToken.None){for(let n of Wo(e.parseResult.value))await xi(r),Ag(n).forEach(i=>this.doLink(i,e))}doLink(e,r){var n;let i=e.reference;if(i._ref===void 0){i._ref=PM;try{let a=this.getCandidate(e);if(jd(a))i._ref=a;else if(i._nodeDescription=a,this.langiumDocuments().hasDocument(a.documentUri)){let s=this.loadAstNode(a);i._ref=s??this.createLinkingError(e,a)}else i._ref=void 0}catch(a){console.error(`An error occurred while resolving reference to '${i.$refText}':`,a);let s=(n=a.message)!==null&&n!==void 0?n:String(a);i._ref=Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${i.$refText}': ${s}`})}r.references.push(i)}}unlink(e){for(let r of e.references)delete r._ref,delete r._nodeDescription;e.references=[]}getCandidate(e){let n=this.scopeProvider.getScope(e).getElement(e.reference.$refText);return n??this.createLinkingError(e)}buildReference(e,r,n,i){let a=this,s={$refNode:n,$refText:i,get ref(){var l;if(ii(this._ref))return this._ref;if(kR(this._nodeDescription)){let u=a.loadAstNode(this._nodeDescription);this._ref=u??a.createLinkingError({reference:s,container:e,property:r},this._nodeDescription)}else if(this._ref===void 0){this._ref=PM;let u=H2(e).$document,h=a.getLinkedNode({reference:s,container:e,property:r});if(h.error&&u&&u.state{"use strict";Ol();o(Wle,"isNamed");Ox=class{static{o(this,"DefaultNameProvider")}getName(e){if(Wle(e))return e.name}getNameNode(e){return Q2(e.$cstNode,"name")}}});var Px,$M=N(()=>{"use strict";Ol();Rl();is();Nl();Ps();Fc();Px=class{static{o(this,"DefaultReferences")}constructor(e){this.nameProvider=e.references.NameProvider,this.index=e.shared.workspace.IndexManager,this.nodeLocator=e.workspace.AstNodeLocator}findDeclaration(e){if(e){let r=hN(e),n=e.astNode;if(r&&n){let i=n[r.feature];if(va(i))return i.ref;if(Array.isArray(i)){for(let a of i)if(va(a)&&a.$refNode&&a.$refNode.offset<=e.offset&&a.$refNode.end>=e.end)return a.ref}}if(n){let i=this.nameProvider.getNameNode(n);if(i&&(i===e||SR(e,i)))return n}}}findDeclarationNode(e){let r=this.findDeclaration(e);if(r?.$cstNode){let n=this.nameProvider.getNameNode(r);return n??r.$cstNode}}findReferences(e,r){let n=[];if(r.includeDeclaration){let a=this.getReferenceToSelf(e);a&&n.push(a)}let i=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return r.documentUri&&(i=i.filter(a=>hs.equals(a.sourceUri,r.documentUri))),n.push(...i),en(n)}getReferenceToSelf(e){let r=this.nameProvider.getNameNode(e);if(r){let n=Pa(e),i=this.nodeLocator.getAstNodePath(e);return{sourceUri:n.uri,sourcePath:i,targetUri:n.uri,targetPath:i,segment:Qd(r),local:!0}}}}});var Bl,vp,f1=N(()=>{"use strict";Ps();Bl=class{static{o(this,"MultiMap")}constructor(e){if(this.map=new Map,e)for(let[r,n]of e)this.add(r,n)}get size(){return zm.sum(en(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,r){if(r===void 0)return this.map.delete(e);{let n=this.map.get(e);if(n){let i=n.indexOf(r);if(i>=0)return n.length===1?this.map.delete(e):n.splice(i,1),!0}return!1}}get(e){var r;return(r=this.map.get(e))!==null&&r!==void 0?r:[]}has(e,r){if(r===void 0)return this.map.has(e);{let n=this.map.get(e);return n?n.indexOf(r)>=0:!1}}add(e,r){return this.map.has(e)?this.map.get(e).push(r):this.map.set(e,[r]),this}addAll(e,r){return this.map.has(e)?this.map.get(e).push(...r):this.map.set(e,Array.from(r)),this}forEach(e){this.map.forEach((r,n)=>r.forEach(i=>e(i,n,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return en(this.map.entries()).flatMap(([e,r])=>r.map(n=>[e,n]))}keys(){return en(this.map.keys())}values(){return en(this.map.values()).flat()}entriesGroupedByKey(){return en(this.map.entries())}},vp=class{static{o(this,"BiMap")}get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(let[r,n]of e)this.set(r,n)}clear(){this.map.clear(),this.inverse.clear()}set(e,r){return this.map.set(e,r),this.inverse.set(r,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){let r=this.map.get(e);return r!==void 0?(this.map.delete(e),this.inverse.delete(r),!0):!1}}});var Bx,zM=N(()=>{"use strict";qo();is();f1();Yo();Bx=class{static{o(this,"DefaultScopeComputation")}constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async computeExports(e,r=yr.CancellationToken.None){return this.computeExportsForNode(e.parseResult.value,e,void 0,r)}async computeExportsForNode(e,r,n=W2,i=yr.CancellationToken.None){let a=[];this.exportNode(e,a,r);for(let s of n(e))await xi(i),this.exportNode(s,a,r);return a}exportNode(e,r,n){let i=this.nameProvider.getName(e);i&&r.push(this.descriptions.createDescription(e,i,n))}async computeLocalScopes(e,r=yr.CancellationToken.None){let n=e.parseResult.value,i=new Bl;for(let a of Nc(n))await xi(r),this.processNode(a,e,i);return i}processNode(e,r,n){let i=e.$container;if(i){let a=this.nameProvider.getName(e);a&&n.add(i,this.descriptions.createDescription(e,a,r))}}}});var d1,Fx,xFe,GM=N(()=>{"use strict";Ps();d1=class{static{o(this,"StreamScope")}constructor(e,r,n){var i;this.elements=e,this.outerScope=r,this.caseInsensitive=(i=n?.caseInsensitive)!==null&&i!==void 0?i:!1}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){let r=this.caseInsensitive?this.elements.find(n=>n.name.toLowerCase()===e.toLowerCase()):this.elements.find(n=>n.name===e);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}},Fx=class{static{o(this,"MapScope")}constructor(e,r,n){var i;this.elements=new Map,this.caseInsensitive=(i=n?.caseInsensitive)!==null&&i!==void 0?i:!1;for(let a of e){let s=this.caseInsensitive?a.name.toLowerCase():a.name;this.elements.set(s,a)}this.outerScope=r}getElement(e){let r=this.caseInsensitive?e.toLowerCase():e,n=this.elements.get(r);if(n)return n;if(this.outerScope)return this.outerScope.getElement(e)}getAllElements(){let e=en(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},xFe={getElement(){},getAllElements(){return I2}}});var p1,$x,xp,_E,m1,DE=N(()=>{"use strict";p1=class{static{o(this,"DisposableCache")}constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}},$x=class extends p1{static{o(this,"SimpleCache")}constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,r){this.throwIfDisposed(),this.cache.set(e,r)}get(e,r){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(r){let n=r();return this.cache.set(e,n),n}else return}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}},xp=class extends p1{static{o(this,"ContextCache")}constructor(e){super(),this.cache=new Map,this.converter=e??(r=>r)}has(e,r){return this.throwIfDisposed(),this.cacheForContext(e).has(r)}set(e,r,n){this.throwIfDisposed(),this.cacheForContext(e).set(r,n)}get(e,r,n){this.throwIfDisposed();let i=this.cacheForContext(e);if(i.has(r))return i.get(r);if(n){let a=n();return i.set(r,a),a}else return}delete(e,r){return this.throwIfDisposed(),this.cacheForContext(e).delete(r)}clear(e){if(this.throwIfDisposed(),e){let r=this.converter(e);this.cache.delete(r)}else this.cache.clear()}cacheForContext(e){let r=this.converter(e),n=this.cache.get(r);return n||(n=new Map,this.cache.set(r,n)),n}},_E=class extends xp{static{o(this,"DocumentCache")}constructor(e,r){super(n=>n.toString()),r?(this.toDispose.push(e.workspace.DocumentBuilder.onDocumentPhase(r,n=>{this.clear(n.uri.toString())})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{for(let a of i)this.clear(a)}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{let a=n.concat(i);for(let s of a)this.clear(s)}))}},m1=class extends $x{static{o(this,"WorkspaceCache")}constructor(e,r){super(),r?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(r,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{i.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}}});var zx,VM=N(()=>{"use strict";GM();is();Ps();DE();zx=class{static{o(this,"DefaultScopeProvider")}constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new m1(e.shared)}getScope(e){let r=[],n=this.reflection.getReferenceType(e),i=Pa(e.container).precomputedScopes;if(i){let s=e.container;do{let l=i.get(s);l.length>0&&r.push(en(l).filter(u=>this.reflection.isSubtype(u.type,n))),s=s.$container}while(s)}let a=this.getGlobalScope(n,e);for(let s=r.length-1;s>=0;s--)a=this.createScope(r[s],a);return a}createScope(e,r,n){return new d1(en(e),r,n)}createScopeForNodes(e,r,n){let i=en(e).map(a=>{let s=this.nameProvider.getName(a);if(s)return this.descriptions.createDescription(a,s)}).nonNullable();return new d1(i,r,n)}getGlobalScope(e,r){return this.globalScopeCache.get(e,()=>new Fx(this.indexManager.allElements(e)))}}});function UM(t){return typeof t.$comment=="string"}function qle(t){return typeof t=="object"&&!!t&&("$ref"in t||"$error"in t)}var Gx,LE=N(()=>{"use strict";OM();Rl();is();Ol();o(UM,"isAstNodeWithComment");o(qle,"isIntermediateReference");Gx=class{static{o(this,"DefaultJsonSerializer")}constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,r){let n=r??{},i=r?.replacer,a=o((l,u)=>this.replacer(l,u,n),"defaultReplacer"),s=i?(l,u)=>i(l,u,a):a;try{return this.currentDocument=Pa(e),JSON.stringify(e,s,r?.space)}finally{this.currentDocument=void 0}}deserialize(e,r){let n=r??{},i=JSON.parse(e);return this.linkNode(i,i,n),i}replacer(e,r,{refText:n,sourceText:i,textRegions:a,comments:s,uriConverter:l}){var u,h,f,d;if(!this.ignoreProperties.has(e))if(va(r)){let p=r.ref,m=n?r.$refText:void 0;if(p){let g=Pa(p),y="";this.currentDocument&&this.currentDocument!==g&&(l?y=l(g.uri,r):y=g.uri.toString());let v=this.astNodeLocator.getAstNodePath(p);return{$ref:`${y}#${v}`,$refText:m}}else return{$error:(h=(u=r.error)===null||u===void 0?void 0:u.message)!==null&&h!==void 0?h:"Could not resolve reference",$refText:m}}else if(ii(r)){let p;if(a&&(p=this.addAstNodeRegionWithAssignmentsTo(Object.assign({},r)),(!e||r.$document)&&p?.$textRegion&&(p.$textRegion.documentURI=(f=this.currentDocument)===null||f===void 0?void 0:f.uri.toString())),i&&!e&&(p??(p=Object.assign({},r)),p.$sourceText=(d=r.$cstNode)===null||d===void 0?void 0:d.text),s){p??(p=Object.assign({},r));let m=this.commentProvider.getComment(r);m&&(p.$comment=m.replace(/\r/g,""))}return p??r}else return r}addAstNodeRegionWithAssignmentsTo(e){let r=o(n=>({offset:n.offset,end:n.end,length:n.length,range:n.range}),"createDocumentSegment");if(e.$cstNode){let n=e.$textRegion=r(e.$cstNode),i=n.assignments={};return Object.keys(e).filter(a=>!a.startsWith("$")).forEach(a=>{let s=oN(e.$cstNode,a).map(r);s.length!==0&&(i[a]=s)}),e}}linkNode(e,r,n,i,a,s){for(let[u,h]of Object.entries(e))if(Array.isArray(h))for(let f=0;f{"use strict";Fc();Vx=class{static{o(this,"DefaultServiceRegistry")}get map(){return this.fileExtensionMap}constructor(e){this.languageIdMap=new Map,this.fileExtensionMap=new Map,this.textDocuments=e?.workspace.TextDocuments}register(e){let r=e.LanguageMetaData;for(let n of r.fileExtensions)this.fileExtensionMap.has(n)&&console.warn(`The file extension ${n} is used by multiple languages. It is now assigned to '${r.languageId}'.`),this.fileExtensionMap.set(n,e);this.languageIdMap.set(r.languageId,e),this.languageIdMap.size===1?this.singleton=e:this.singleton=void 0}getServices(e){var r,n;if(this.singleton!==void 0)return this.singleton;if(this.languageIdMap.size===0)throw new Error("The service registry is empty. Use `register` to register the services of a language.");let i=(n=(r=this.textDocuments)===null||r===void 0?void 0:r.get(e))===null||n===void 0?void 0:n.languageId;if(i!==void 0){let l=this.languageIdMap.get(i);if(l)return l}let a=hs.extname(e),s=this.fileExtensionMap.get(a);if(!s)throw i?new Error(`The service registry contains no services for the extension '${a}' for language '${i}'.`):new Error(`The service registry contains no services for the extension '${a}'.`);return s}hasServices(e){try{return this.getServices(e),!0}catch{return!1}}get all(){return Array.from(this.languageIdMap.values())}}});function bp(t){return{code:t}}var g1,Ux,Hx=N(()=>{"use strict";Xo();f1();Yo();Ps();o(bp,"diagnosticData");(function(t){t.all=["fast","slow","built-in"]})(g1||(g1={}));Ux=class{static{o(this,"ValidationRegistry")}constructor(e){this.entries=new Bl,this.entriesBefore=[],this.entriesAfter=[],this.reflection=e.shared.AstReflection}register(e,r=this,n="fast"){if(n==="built-in")throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.");for(let[i,a]of Object.entries(e)){let s=a;if(Array.isArray(s))for(let l of s){let u={check:this.wrapValidationException(l,r),category:n};this.addEntry(i,u)}else if(typeof s=="function"){let l={check:this.wrapValidationException(s,r),category:n};this.addEntry(i,l)}else Lc(s)}}wrapValidationException(e,r){return async(n,i,a)=>{await this.handleException(()=>e.call(r,n,i,a),"An error occurred during validation",i,n)}}async handleException(e,r,n,i){try{await e()}catch(a){if(Bc(a))throw a;console.error(`${r}:`,a),a instanceof Error&&a.stack&&console.error(a.stack);let s=a instanceof Error?a.message:String(a);n("error",`${r}: ${s}`,{node:i})}}addEntry(e,r){if(e==="AstNode"){this.entries.add("AstNode",r);return}for(let n of this.reflection.getAllSubTypes(e))this.entries.add(n,r)}getChecks(e,r){let n=en(this.entries.get(e)).concat(this.entries.get("AstNode"));return r&&(n=n.filter(i=>r.includes(i.category))),n.map(i=>i.check)}registerBeforeDocument(e,r=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",r))}registerAfterDocument(e,r=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",r))}wrapPreparationException(e,r,n){return async(i,a,s,l)=>{await this.handleException(()=>e.call(n,i,a,s,l),r,a,i)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}}});function Yle(t){if(t.range)return t.range;let e;return typeof t.property=="string"?e=Q2(t.node.$cstNode,t.property,t.index):typeof t.keyword=="string"&&(e=cN(t.node.$cstNode,t.keyword,t.index)),e??(e=t.node.$cstNode),e?e.range:{start:{line:0,character:0},end:{line:0,character:0}}}function RE(t){switch(t){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+t)}}function Xle(t){switch(t){case"error":return bp(jo.LexingError);case"warning":return bp(jo.LexingWarning);case"info":return bp(jo.LexingInfo);case"hint":return bp(jo.LexingHint);default:throw new Error("Invalid diagnostic severity: "+t)}}var Wx,jo,WM=N(()=>{"use strict";qo();Ol();is();Nl();Yo();Hx();Wx=class{static{o(this,"DefaultDocumentValidator")}constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData}async validateDocument(e,r={},n=yr.CancellationToken.None){let i=e.parseResult,a=[];if(await xi(n),(!r.categories||r.categories.includes("built-in"))&&(this.processLexingErrors(i,a,r),r.stopAfterLexingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===jo.LexingError})||(this.processParsingErrors(i,a,r),r.stopAfterParsingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===jo.ParsingError}))||(this.processLinkingErrors(e,a,r),r.stopAfterLinkingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===jo.LinkingError}))))return a;try{a.push(...await this.validateAst(i.value,r,n))}catch(s){if(Bc(s))throw s;console.error("An error occurred during validation:",s)}return await xi(n),a}processLexingErrors(e,r,n){var i,a,s;let l=[...e.lexerErrors,...(a=(i=e.lexerReport)===null||i===void 0?void 0:i.diagnostics)!==null&&a!==void 0?a:[]];for(let u of l){let h=(s=u.severity)!==null&&s!==void 0?s:"error",f={severity:RE(h),range:{start:{line:u.line-1,character:u.column-1},end:{line:u.line-1,character:u.column+u.length-1}},message:u.message,data:Xle(h),source:this.getSource()};r.push(f)}}processParsingErrors(e,r,n){for(let i of e.parserErrors){let a;if(isNaN(i.token.startOffset)){if("previousToken"in i){let s=i.previousToken;if(isNaN(s.startOffset)){let l={line:0,character:0};a={start:l,end:l}}else{let l={line:s.endLine-1,character:s.endColumn};a={start:l,end:l}}}}else a=Gm(i.token);if(a){let s={severity:RE("error"),range:a,message:i.message,data:bp(jo.ParsingError),source:this.getSource()};r.push(s)}}}processLinkingErrors(e,r,n){for(let i of e.references){let a=i.error;if(a){let s={node:a.container,property:a.property,index:a.index,data:{code:jo.LinkingError,containerType:a.container.$type,property:a.property,refText:a.reference.$refText}};r.push(this.toDiagnostic("error",a.message,s))}}}async validateAst(e,r,n=yr.CancellationToken.None){let i=[],a=o((s,l,u)=>{i.push(this.toDiagnostic(s,l,u))},"acceptor");return await this.validateAstBefore(e,r,a,n),await this.validateAstNodes(e,r,a,n),await this.validateAstAfter(e,r,a,n),i}async validateAstBefore(e,r,n,i=yr.CancellationToken.None){var a;let s=this.validationRegistry.checksBefore;for(let l of s)await xi(i),await l(e,n,(a=r.categories)!==null&&a!==void 0?a:[],i)}async validateAstNodes(e,r,n,i=yr.CancellationToken.None){await Promise.all(Wo(e).map(async a=>{await xi(i);let s=this.validationRegistry.getChecks(a.$type,r.categories);for(let l of s)await l(a,n,i)}))}async validateAstAfter(e,r,n,i=yr.CancellationToken.None){var a;let s=this.validationRegistry.checksAfter;for(let l of s)await xi(i),await l(e,n,(a=r.categories)!==null&&a!==void 0?a:[],i)}toDiagnostic(e,r,n){return{message:r,range:Yle(n),severity:RE(e),code:n.code,codeDescription:n.codeDescription,tags:n.tags,relatedInformation:n.relatedInformation,data:n.data,source:this.getSource()}}getSource(){return this.metadata.languageId}};o(Yle,"getDiagnosticRange");o(RE,"toDiagnosticSeverity");o(Xle,"toDiagnosticData");(function(t){t.LexingError="lexing-error",t.LexingWarning="lexing-warning",t.LexingInfo="lexing-info",t.LexingHint="lexing-hint",t.ParsingError="parsing-error",t.LinkingError="linking-error"})(jo||(jo={}))});var qx,Yx,qM=N(()=>{"use strict";qo();Rl();is();Nl();Yo();Fc();qx=class{static{o(this,"DefaultAstNodeDescriptionProvider")}constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,r,n){let i=n??Pa(e);r??(r=this.nameProvider.getName(e));let a=this.astNodeLocator.getAstNodePath(e);if(!r)throw new Error(`Node at path ${a} has no name.`);let s,l=o(()=>{var u;return s??(s=Qd((u=this.nameProvider.getNameNode(e))!==null&&u!==void 0?u:e.$cstNode))},"nameSegmentGetter");return{node:e,name:r,get nameSegment(){return l()},selectionSegment:Qd(e.$cstNode),type:e.$type,documentUri:i.uri,path:a}}},Yx=class{static{o(this,"DefaultReferenceDescriptionProvider")}constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,r=yr.CancellationToken.None){let n=[],i=e.parseResult.value;for(let a of Wo(i))await xi(r),Ag(a).filter(s=>!jd(s)).forEach(s=>{let l=this.createDescription(s);l&&n.push(l)});return n}createDescription(e){let r=e.reference.$nodeDescription,n=e.reference.$refNode;if(!r||!n)return;let i=Pa(e.container).uri;return{sourceUri:i,sourcePath:this.nodeLocator.getAstNodePath(e.container),targetUri:r.documentUri,targetPath:r.path,segment:Qd(n),local:hs.equals(r.documentUri,i)}}}});var Xx,YM=N(()=>{"use strict";Xx=class{static{o(this,"DefaultAstNodeLocator")}constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){let r=this.getAstNodePath(e.$container),n=this.getPathSegment(e);return r+this.segmentSeparator+n}return""}getPathSegment({$containerProperty:e,$containerIndex:r}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return r!==void 0?e+this.indexSeparator+r:e}getAstNode(e,r){return r.split(this.segmentSeparator).reduce((i,a)=>{if(!i||a.length===0)return i;let s=a.indexOf(this.indexSeparator);if(s>0){let l=a.substring(0,s),u=parseInt(a.substring(s+1)),h=i[l];return h?.[u]}return i[a]},e)}}});var Kn={};var NE=N(()=>{"use strict";Sr(Kn,Sa(LM(),1))});var jx,XM=N(()=>{"use strict";NE();Yo();jx=class{static{o(this,"DefaultConfigurationProvider")}constructor(e){this._ready=new cs,this.settings={},this.workspaceConfig=!1,this.onConfigurationSectionUpdateEmitter=new Kn.Emitter,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){var r,n;this.workspaceConfig=(n=(r=e.capabilities.workspace)===null||r===void 0?void 0:r.configuration)!==null&&n!==void 0?n:!1}async initialized(e){if(this.workspaceConfig){if(e.register){let r=this.serviceRegistry.all;e.register({section:r.map(n=>this.toSectionName(n.LanguageMetaData.languageId))})}if(e.fetchConfiguration){let r=this.serviceRegistry.all.map(i=>({section:this.toSectionName(i.LanguageMetaData.languageId)})),n=await e.fetchConfiguration(r);r.forEach((i,a)=>{this.updateSectionConfiguration(i.section,n[a])})}}this._ready.resolve()}updateConfiguration(e){e.settings&&Object.keys(e.settings).forEach(r=>{let n=e.settings[r];this.updateSectionConfiguration(r,n),this.onConfigurationSectionUpdateEmitter.fire({section:r,configuration:n})})}updateSectionConfiguration(e,r){this.settings[e]=r}async getConfiguration(e,r){await this.ready;let n=this.toSectionName(e);if(this.settings[n])return this.settings[n][r]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}}});var ff,jM=N(()=>{"use strict";(function(t){function e(r){return{dispose:o(async()=>await r(),"dispose")}}o(e,"create"),t.create=e})(ff||(ff={}))});var Kx,KM=N(()=>{"use strict";qo();jM();f1();Yo();Ps();Hx();h1();Kx=class{static{o(this,"DefaultDocumentBuilder")}constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new Bl,this.documentPhaseListeners=new Bl,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=kn.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.serviceRegistry=e.ServiceRegistry}async build(e,r={},n=yr.CancellationToken.None){var i,a;for(let s of e){let l=s.uri.toString();if(s.state===kn.Validated){if(typeof r.validation=="boolean"&&r.validation)s.state=kn.IndexedReferences,s.diagnostics=void 0,this.buildState.delete(l);else if(typeof r.validation=="object"){let u=this.buildState.get(l),h=(i=u?.result)===null||i===void 0?void 0:i.validationChecks;if(h){let d=((a=r.validation.categories)!==null&&a!==void 0?a:g1.all).filter(p=>!h.includes(p));d.length>0&&(this.buildState.set(l,{completed:!1,options:{validation:Object.assign(Object.assign({},r.validation),{categories:d})},result:u.result}),s.state=kn.IndexedReferences)}}}else this.buildState.delete(l)}this.currentState=kn.Changed,await this.emitUpdate(e.map(s=>s.uri),[]),await this.buildDocuments(e,r,n)}async update(e,r,n=yr.CancellationToken.None){this.currentState=kn.Changed;for(let s of r)this.langiumDocuments.deleteDocument(s),this.buildState.delete(s.toString()),this.indexManager.remove(s);for(let s of e){if(!this.langiumDocuments.invalidateDocument(s)){let u=this.langiumDocumentFactory.fromModel({$type:"INVALID"},s);u.state=kn.Changed,this.langiumDocuments.addDocument(u)}this.buildState.delete(s.toString())}let i=en(e).concat(r).map(s=>s.toString()).toSet();this.langiumDocuments.all.filter(s=>!i.has(s.uri.toString())&&this.shouldRelink(s,i)).forEach(s=>{this.serviceRegistry.getServices(s.uri).references.Linker.unlink(s),s.state=Math.min(s.state,kn.ComputedScopes),s.diagnostics=void 0}),await this.emitUpdate(e,r),await xi(n);let a=this.sortDocuments(this.langiumDocuments.all.filter(s=>{var l;return s.staten(e,r)))}sortDocuments(e){let r=0,n=e.length-1;for(;r=0&&!this.hasTextDocument(e[n]);)n--;rn.error!==void 0)?!0:this.indexManager.isAffected(e,r)}onUpdate(e){return this.updateListeners.push(e),ff.create(()=>{let r=this.updateListeners.indexOf(e);r>=0&&this.updateListeners.splice(r,1)})}async buildDocuments(e,r,n){this.prepareBuild(e,r),await this.runCancelable(e,kn.Parsed,n,a=>this.langiumDocumentFactory.update(a,n)),await this.runCancelable(e,kn.IndexedContent,n,a=>this.indexManager.updateContent(a,n)),await this.runCancelable(e,kn.ComputedScopes,n,async a=>{let s=this.serviceRegistry.getServices(a.uri).references.ScopeComputation;a.precomputedScopes=await s.computeLocalScopes(a,n)}),await this.runCancelable(e,kn.Linked,n,a=>this.serviceRegistry.getServices(a.uri).references.Linker.link(a,n)),await this.runCancelable(e,kn.IndexedReferences,n,a=>this.indexManager.updateReferences(a,n));let i=e.filter(a=>this.shouldValidate(a));await this.runCancelable(i,kn.Validated,n,a=>this.validate(a,n));for(let a of e){let s=this.buildState.get(a.uri.toString());s&&(s.completed=!0)}}prepareBuild(e,r){for(let n of e){let i=n.uri.toString(),a=this.buildState.get(i);(!a||a.completed)&&this.buildState.set(i,{completed:!1,options:r,result:a?.result})}}async runCancelable(e,r,n,i){let a=e.filter(l=>l.statel.state===r);await this.notifyBuildPhase(s,r,n),this.currentState=r}onBuildPhase(e,r){return this.buildPhaseListeners.add(e,r),ff.create(()=>{this.buildPhaseListeners.delete(e,r)})}onDocumentPhase(e,r){return this.documentPhaseListeners.add(e,r),ff.create(()=>{this.documentPhaseListeners.delete(e,r)})}waitUntil(e,r,n){let i;if(r&&"path"in r?i=r:n=r,n??(n=yr.CancellationToken.None),i){let a=this.langiumDocuments.getDocument(i);if(a&&a.state>e)return Promise.resolve(i)}return this.currentState>=e?Promise.resolve(void 0):n.isCancellationRequested?Promise.reject(Pc):new Promise((a,s)=>{let l=this.onBuildPhase(e,()=>{if(l.dispose(),u.dispose(),i){let h=this.langiumDocuments.getDocument(i);a(h?.uri)}else a(void 0)}),u=n.onCancellationRequested(()=>{l.dispose(),u.dispose(),s(Pc)})})}async notifyDocumentPhase(e,r,n){let a=this.documentPhaseListeners.get(r).slice();for(let s of a)try{await s(e,n)}catch(l){if(!Bc(l))throw l}}async notifyBuildPhase(e,r,n){if(e.length===0)return;let a=this.buildPhaseListeners.get(r).slice();for(let s of a)await xi(n),await s(e,n)}shouldValidate(e){return!!this.getBuildOptions(e).validation}async validate(e,r){var n,i;let a=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,s=this.getBuildOptions(e).validation,l=typeof s=="object"?s:void 0,u=await a.validateDocument(e,l,r);e.diagnostics?e.diagnostics.push(...u):e.diagnostics=u;let h=this.buildState.get(e.uri.toString());if(h){(n=h.result)!==null&&n!==void 0||(h.result={});let f=(i=l?.categories)!==null&&i!==void 0?i:g1.all;h.result.validationChecks?h.result.validationChecks.push(...f):h.result.validationChecks=[...f]}}getBuildOptions(e){var r,n;return(n=(r=this.buildState.get(e.uri.toString()))===null||r===void 0?void 0:r.options)!==null&&n!==void 0?n:{}}}});var Qx,QM=N(()=>{"use strict";is();DE();qo();Ps();Fc();Qx=class{static{o(this,"DefaultIndexManager")}constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new xp,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,r){let n=Pa(e).uri,i=[];return this.referenceIndex.forEach(a=>{a.forEach(s=>{hs.equals(s.targetUri,n)&&s.targetPath===r&&i.push(s)})}),en(i)}allElements(e,r){let n=en(this.symbolIndex.keys());return r&&(n=n.filter(i=>!r||r.has(i))),n.map(i=>this.getFileDescriptions(i,e)).flat()}getFileDescriptions(e,r){var n;return r?this.symbolByTypeIndex.get(e,r,()=>{var a;return((a=this.symbolIndex.get(e))!==null&&a!==void 0?a:[]).filter(l=>this.astReflection.isSubtype(l.type,r))}):(n=this.symbolIndex.get(e))!==null&&n!==void 0?n:[]}remove(e){let r=e.toString();this.symbolIndex.delete(r),this.symbolByTypeIndex.clear(r),this.referenceIndex.delete(r)}async updateContent(e,r=yr.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.computeExports(e,r),a=e.uri.toString();this.symbolIndex.set(a,i),this.symbolByTypeIndex.clear(a)}async updateReferences(e,r=yr.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e,r);this.referenceIndex.set(e.uri.toString(),i)}isAffected(e,r){let n=this.referenceIndex.get(e.uri.toString());return n?n.some(i=>!i.local&&r.has(i.targetUri.toString())):!1}}});var Zx,ZM=N(()=>{"use strict";qo();Yo();Fc();Zx=class{static{o(this,"DefaultWorkspaceManager")}constructor(e){this.initialBuildOptions={},this._ready=new cs,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){var r;this.folders=(r=e.workspaceFolders)!==null&&r!==void 0?r:void 0}initialized(e){return this.mutex.write(r=>{var n;return this.initializeWorkspace((n=this.folders)!==null&&n!==void 0?n:[],r)})}async initializeWorkspace(e,r=yr.CancellationToken.None){let n=await this.performStartup(e);await xi(r),await this.documentBuilder.build(n,this.initialBuildOptions,r)}async performStartup(e){let r=this.serviceRegistry.all.flatMap(a=>a.LanguageMetaData.fileExtensions),n=[],i=o(a=>{n.push(a),this.langiumDocuments.hasDocument(a.uri)||this.langiumDocuments.addDocument(a)},"collector");return await this.loadAdditionalDocuments(e,i),await Promise.all(e.map(a=>[a,this.getRootFolder(a)]).map(async a=>this.traverseFolder(...a,r,i))),this._ready.resolve(),n}loadAdditionalDocuments(e,r){return Promise.resolve()}getRootFolder(e){return us.parse(e.uri)}async traverseFolder(e,r,n,i){let a=await this.fileSystemProvider.readDirectory(r);await Promise.all(a.map(async s=>{if(this.includeEntry(e,s,n)){if(s.isDirectory)await this.traverseFolder(e,s.uri,n,i);else if(s.isFile){let l=await this.langiumDocuments.getOrCreateDocument(s.uri);i(l)}}}))}includeEntry(e,r,n){let i=hs.basename(r.uri);if(i.startsWith("."))return!1;if(r.isDirectory)return i!=="node_modules"&&i!=="out";if(r.isFile){let a=hs.extname(r.uri);return n.includes(a)}return!1}}});function IE(t){return Array.isArray(t)&&(t.length===0||"name"in t[0])}function eI(t){return t&&"modes"in t&&"defaultMode"in t}function JM(t){return!IE(t)&&!eI(t)}var Jx,ME,wp,OE=N(()=>{"use strict";cf();Jx=class{static{o(this,"DefaultLexerErrorMessageProvider")}buildUnexpectedCharactersMessage(e,r,n,i,a){return Gg.buildUnexpectedCharactersMessage(e,r,n,i,a)}buildUnableToPopLexerModeMessage(e){return Gg.buildUnableToPopLexerModeMessage(e)}},ME={mode:"full"},wp=class{static{o(this,"DefaultLexer")}constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;let r=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(r);let n=JM(r)?Object.values(r):r,i=e.LanguageMetaData.mode==="production";this.chevrotainLexer=new Xn(n,{positionTracking:"full",skipValidations:i,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,r=ME){var n,i,a;let s=this.chevrotainLexer.tokenize(e);return{tokens:s.tokens,errors:s.errors,hidden:(n=s.groups.hidden)!==null&&n!==void 0?n:[],report:(a=(i=this.tokenBuilder).flushLexingReport)===null||a===void 0?void 0:a.call(i,e)}}toTokenTypeDictionary(e){if(JM(e))return e;let r=eI(e)?Object.values(e.modes).flat():e,n={};return r.forEach(i=>n[i.name]=i),n}};o(IE,"isTokenTypeArray");o(eI,"isIMultiModeLexerDefinition");o(JM,"isTokenTypeDictionary")});function nI(t,e,r){let n,i;typeof t=="string"?(i=e,n=r):(i=t.range.start,n=e),i||(i=jr.create(0,0));let a=Qle(t),s=aI(n),l=wFe({lines:a,position:i,options:s});return CFe({index:0,tokens:l,position:i})}function iI(t,e){let r=aI(e),n=Qle(t);if(n.length===0)return!1;let i=n[0],a=n[n.length-1],s=r.start,l=r.end;return!!s?.exec(i)&&!!l?.exec(a)}function Qle(t){let e="";return typeof t=="string"?e=t:e=t.text,e.split(JR)}function wFe(t){var e,r,n;let i=[],a=t.position.line,s=t.position.character;for(let l=0;l=f.length){if(i.length>0){let m=jr.create(a,s);i.push({type:"break",content:"",range:Pr.create(m,m)})}}else{jle.lastIndex=d;let m=jle.exec(f);if(m){let g=m[0],y=m[1],v=jr.create(a,s+d),x=jr.create(a,s+d+g.length);i.push({type:"tag",content:y,range:Pr.create(v,x)}),d+=g.length,d=rI(f,d)}if(d0&&i[i.length-1].type==="break"?i.slice(0,-1):i}function TFe(t,e,r,n){let i=[];if(t.length===0){let a=jr.create(r,n),s=jr.create(r,n+e.length);i.push({type:"text",content:e,range:Pr.create(a,s)})}else{let a=0;for(let l of t){let u=l.index,h=e.substring(a,u);h.length>0&&i.push({type:"text",content:e.substring(a,u),range:Pr.create(jr.create(r,a+n),jr.create(r,u+n))});let f=h.length+1,d=l[1];if(i.push({type:"inline-tag",content:d,range:Pr.create(jr.create(r,a+f+n),jr.create(r,a+f+d.length+n))}),f+=d.length,l.length===4){f+=l[2].length;let p=l[3];i.push({type:"text",content:p,range:Pr.create(jr.create(r,a+f+n),jr.create(r,a+f+p.length+n))})}else i.push({type:"text",content:"",range:Pr.create(jr.create(r,a+f+n),jr.create(r,a+f+n))});a=u+l[0].length}let s=e.substring(a);s.length>0&&i.push({type:"text",content:s,range:Pr.create(jr.create(r,a+n),jr.create(r,a+n+s.length))})}return i}function rI(t,e){let r=t.substring(e).match(kFe);return r?e+r.index:t.length}function SFe(t){let e=t.match(EFe);if(e&&typeof e.index=="number")return e.index}function CFe(t){var e,r,n,i;let a=jr.create(t.position.line,t.position.character);if(t.tokens.length===0)return new PE([],Pr.create(a,a));let s=[];for(;t.index0){let u=rI(e,a);s=e.substring(u),e=e.substring(0,a)}return(t==="linkcode"||t==="link"&&r.link==="code")&&(s=`\`${s}\``),(i=(n=r.renderLink)===null||n===void 0?void 0:n.call(r,e,s))!==null&&i!==void 0?i:RFe(e,s)}}function RFe(t,e){try{return us.parse(t,!0),`[${e}](${t})`}catch{return t}}function Kle(t){return t.endsWith(` +`)?` +`:` + +`}var jle,bFe,kFe,EFe,PE,eb,tb,BE,sI=N(()=>{"use strict";mM();Lg();Fc();o(nI,"parseJSDoc");o(iI,"isJSDoc");o(Qle,"getLines");jle=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,bFe=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;o(wFe,"tokenize");o(TFe,"buildInlineTokens");kFe=/\S/,EFe=/\s*$/;o(rI,"skipWhitespace");o(SFe,"lastCharacter");o(CFe,"parseJSDocComment");o(AFe,"parseJSDocElement");o(_Fe,"appendEmptyLine");o(Zle,"parseJSDocText");o(DFe,"parseJSDocInline");o(Jle,"parseJSDocTag");o(ece,"parseJSDocLine");o(aI,"normalizeOptions");o(tI,"normalizeOption");PE=class{static{o(this,"JSDocCommentImpl")}constructor(e,r){this.elements=e,this.range=r}getTag(e){return this.getAllTags().find(r=>r.name===e)}getTags(e){return this.getAllTags().filter(r=>r.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(let r of this.elements)if(e.length===0)e=r.toString();else{let n=r.toString();e+=Kle(e)+n}return e.trim()}toMarkdown(e){let r="";for(let n of this.elements)if(r.length===0)r=n.toMarkdown(e);else{let i=n.toMarkdown(e);r+=Kle(r)+i}return r.trim()}},eb=class{static{o(this,"JSDocTagImpl")}constructor(e,r,n,i){this.name=e,this.content=r,this.inline=n,this.range=i}toString(){let e=`@${this.name}`,r=this.content.toString();return this.content.inlines.length===1?e=`${e} ${r}`:this.content.inlines.length>1&&(e=`${e} +${r}`),this.inline?`{${e}}`:e}toMarkdown(e){var r,n;return(n=(r=e?.renderTag)===null||r===void 0?void 0:r.call(e,this))!==null&&n!==void 0?n:this.toMarkdownDefault(e)}toMarkdownDefault(e){let r=this.content.toMarkdown(e);if(this.inline){let a=LFe(this.name,r,e??{});if(typeof a=="string")return a}let n="";e?.tag==="italic"||e?.tag===void 0?n="*":e?.tag==="bold"?n="**":e?.tag==="bold-italic"&&(n="***");let i=`${n}@${this.name}${n}`;return this.content.inlines.length===1?i=`${i} \u2014 ${r}`:this.content.inlines.length>1&&(i=`${i} +${r}`),this.inline?`{${i}}`:i}};o(LFe,"renderInlineTag");o(RFe,"renderLinkDefault");tb=class{static{o(this,"JSDocTextImpl")}constructor(e,r){this.inlines=e,this.range=r}toString(){let e="";for(let r=0;rn.range.start.line&&(e+=` +`)}return e}toMarkdown(e){let r="";for(let n=0;ni.range.start.line&&(r+=` +`)}return r}},BE=class{static{o(this,"JSDocLineImpl")}constructor(e,r){this.text=e,this.range=r}toString(){return this.text}toMarkdown(){return this.text}};o(Kle,"fillNewlines")});var rb,oI=N(()=>{"use strict";is();sI();rb=class{static{o(this,"JSDocDocumentationProvider")}constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){let r=this.commentProvider.getComment(e);if(r&&iI(r))return nI(r).toMarkdown({renderLink:o((i,a)=>this.documentationLinkRenderer(e,i,a),"renderLink"),renderTag:o(i=>this.documentationTagRenderer(e,i),"renderTag")})}documentationLinkRenderer(e,r,n){var i;let a=(i=this.findNameInPrecomputedScopes(e,r))!==null&&i!==void 0?i:this.findNameInGlobalScope(e,r);if(a&&a.nameSegment){let s=a.nameSegment.range.start.line+1,l=a.nameSegment.range.start.character+1,u=a.documentUri.with({fragment:`L${s},${l}`});return`[${n}](${u.toString()})`}else return}documentationTagRenderer(e,r){}findNameInPrecomputedScopes(e,r){let i=Pa(e).precomputedScopes;if(!i)return;let a=e;do{let l=i.get(a).find(u=>u.name===r);if(l)return l;a=a.$container}while(a)}findNameInGlobalScope(e,r){return this.indexManager.allElements().find(i=>i.name===r)}}});var nb,lI=N(()=>{"use strict";LE();Nl();nb=class{static{o(this,"DefaultCommentProvider")}constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){var r;return UM(e)?e.$comment:(r=AR(e.$cstNode,this.grammarConfig().multilineCommentRules))===null||r===void 0?void 0:r.text}}});var ib,cI,uI,hI=N(()=>{"use strict";Yo();NE();ib=class{static{o(this,"DefaultAsyncParser")}constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,r){return Promise.resolve(this.syncParser.parse(e))}},cI=class{static{o(this,"AbstractThreadedAsyncParser")}constructor(e){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=e.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length{if(this.queue.length>0){let r=this.queue.shift();r&&(e.lock(),r.resolve(e))}}),this.workerPool.push(e)}}async parse(e,r){let n=await this.acquireParserWorker(r),i=new cs,a,s=r.onCancellationRequested(()=>{a=setTimeout(()=>{this.terminateWorker(n)},this.terminationDelay)});return n.parse(e).then(l=>{let u=this.hydrator.hydrate(l);i.resolve(u)}).catch(l=>{i.reject(l)}).finally(()=>{s.dispose(),clearTimeout(a)}),i.promise}terminateWorker(e){e.terminate();let r=this.workerPool.indexOf(e);r>=0&&this.workerPool.splice(r,1)}async acquireParserWorker(e){this.initializeWorkers();for(let n of this.workerPool)if(n.ready)return n.lock(),n;let r=new cs;return e.onCancellationRequested(()=>{let n=this.queue.indexOf(r);n>=0&&this.queue.splice(n,1),r.reject(Pc)}),this.queue.push(r),r.promise}},uI=class{static{o(this,"ParserWorker")}get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,r,n,i){this.onReadyEmitter=new Kn.Emitter,this.deferred=new cs,this._ready=!0,this._parsing=!1,this.sendMessage=e,this._terminate=i,r(a=>{let s=a;this.deferred.resolve(s),this.unlock()}),n(a=>{this.deferred.reject(a),this.unlock()})}terminate(){this.deferred.reject(Pc),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(e){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new cs,this.sendMessage(e),this.deferred.promise}}});var ab,fI=N(()=>{"use strict";qo();Yo();ab=class{static{o(this,"DefaultWorkspaceLock")}constructor(){this.previousTokenSource=new yr.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();let r=CE();return this.previousTokenSource=r,this.enqueue(this.writeQueue,e,r.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,r,n=yr.CancellationToken.None){let i=new cs,a={action:r,deferred:i,cancellationToken:n};return e.push(a),this.performNextOperation(),i.promise}async performNextOperation(){if(!this.done)return;let e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else if(this.readQueue.length>0)e.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(e.map(async({action:r,deferred:n,cancellationToken:i})=>{try{let a=await Promise.resolve().then(()=>r(i));n.resolve(a)}catch(a){Bc(a)?n.resolve(void 0):n.reject(a)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}}});var sb,dI=N(()=>{"use strict";gE();Rc();Rl();is();f1();Nl();sb=class{static{o(this,"DefaultHydrator")}constructor(e){this.grammarElementIdMap=new vp,this.tokenTypeIdMap=new vp,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(r=>Object.assign(Object.assign({},r),{message:r.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){let r=new Map,n=new Map;for(let i of Wo(e))r.set(i,{});if(e.$cstNode)for(let i of Kd(e.$cstNode))n.set(i,{});return{astNodes:r,cstNodes:n}}dehydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode!==void 0&&(n.$cstNode=this.dehydrateCstNode(e.$cstNode,r));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(a)){let s=[];n[i]=s;for(let l of a)ii(l)?s.push(this.dehydrateAstNode(l,r)):va(l)?s.push(this.dehydrateReference(l,r)):s.push(l)}else ii(a)?n[i]=this.dehydrateAstNode(a,r):va(a)?n[i]=this.dehydrateReference(a,r):a!==void 0&&(n[i]=a);return n}dehydrateReference(e,r){let n={};return n.$refText=e.$refText,e.$refNode&&(n.$refNode=r.cstNodes.get(e.$refNode)),n}dehydrateCstNode(e,r){let n=r.cstNodes.get(e);return M2(e)?n.fullText=e.fullText:n.grammarSource=this.getGrammarElementId(e.grammarSource),n.hidden=e.hidden,n.astNode=r.astNodes.get(e.astNode),Ll(e)?n.content=e.content.map(i=>this.dehydrateCstNode(i,r)):af(e)&&(n.tokenType=e.tokenType.name,n.offset=e.offset,n.length=e.length,n.startLine=e.range.start.line,n.startColumn=e.range.start.character,n.endLine=e.range.end.line,n.endColumn=e.range.end.character),n}hydrate(e){let r=e.value,n=this.createHydrationContext(r);return"$cstNode"in r&&this.hydrateCstNode(r.$cstNode,n),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(r,n)}}createHydrationContext(e){let r=new Map,n=new Map;for(let a of Wo(e))r.set(a,{});let i;if(e.$cstNode)for(let a of Kd(e.$cstNode)){let s;"fullText"in a?(s=new a1(a.fullText),i=s):"content"in a?s=new mp:"tokenType"in a&&(s=this.hydrateCstLeafNode(a)),s&&(n.set(a,s),s.root=i)}return{astNodes:r,cstNodes:n}}hydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode&&(n.$cstNode=r.cstNodes.get(e.$cstNode));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(a)){let s=[];n[i]=s;for(let l of a)ii(l)?s.push(this.setParent(this.hydrateAstNode(l,r),n)):va(l)?s.push(this.hydrateReference(l,n,i,r)):s.push(l)}else ii(a)?n[i]=this.setParent(this.hydrateAstNode(a,r),n):va(a)?n[i]=this.hydrateReference(a,n,i,r):a!==void 0&&(n[i]=a);return n}setParent(e,r){return e.$container=r,e}hydrateReference(e,r,n,i){return this.linker.buildReference(r,n,i.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,r,n=0){let i=r.cstNodes.get(e);if(typeof e.grammarSource=="number"&&(i.grammarSource=this.getGrammarElement(e.grammarSource)),i.astNode=r.astNodes.get(e.astNode),Ll(i))for(let a of e.content){let s=this.hydrateCstNode(a,r,n++);i.content.push(s)}return i}hydrateCstLeafNode(e){let r=this.getTokenType(e.tokenType),n=e.offset,i=e.length,a=e.startLine,s=e.startColumn,l=e.endLine,u=e.endColumn,h=e.hidden;return new pp(n,i,{start:{line:a,character:s},end:{line:l,character:u}},r,h)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(let r of Wo(this.grammar))G2(r)&&this.grammarElementIdMap.set(r,e++)}}});function fs(t){return{documentation:{CommentProvider:o(e=>new nb(e),"CommentProvider"),DocumentationProvider:o(e=>new rb(e),"DocumentationProvider")},parser:{AsyncParser:o(e=>new ib(e),"AsyncParser"),GrammarConfig:o(e=>pN(e),"GrammarConfig"),LangiumParser:o(e=>TM(e),"LangiumParser"),CompletionParser:o(e=>bM(e),"CompletionParser"),ValueConverter:o(()=>new yp,"ValueConverter"),TokenBuilder:o(()=>new Uu,"TokenBuilder"),Lexer:o(e=>new wp(e),"Lexer"),ParserErrorMessageProvider:o(()=>new s1,"ParserErrorMessageProvider"),LexerErrorMessageProvider:o(()=>new Jx,"LexerErrorMessageProvider")},workspace:{AstNodeLocator:o(()=>new Xx,"AstNodeLocator"),AstNodeDescriptionProvider:o(e=>new qx(e),"AstNodeDescriptionProvider"),ReferenceDescriptionProvider:o(e=>new Yx(e),"ReferenceDescriptionProvider")},references:{Linker:o(e=>new Ix(e),"Linker"),NameProvider:o(()=>new Ox,"NameProvider"),ScopeProvider:o(e=>new zx(e),"ScopeProvider"),ScopeComputation:o(e=>new Bx(e),"ScopeComputation"),References:o(e=>new Px(e),"References")},serializer:{Hydrator:o(e=>new sb(e),"Hydrator"),JsonSerializer:o(e=>new Gx(e),"JsonSerializer")},validation:{DocumentValidator:o(e=>new Wx(e),"DocumentValidator"),ValidationRegistry:o(e=>new Ux(e),"ValidationRegistry")},shared:o(()=>t.shared,"shared")}}function ds(t){return{ServiceRegistry:o(e=>new Vx(e),"ServiceRegistry"),workspace:{LangiumDocuments:o(e=>new Mx(e),"LangiumDocuments"),LangiumDocumentFactory:o(e=>new Nx(e),"LangiumDocumentFactory"),DocumentBuilder:o(e=>new Kx(e),"DocumentBuilder"),IndexManager:o(e=>new Qx(e),"IndexManager"),WorkspaceManager:o(e=>new Zx(e),"WorkspaceManager"),FileSystemProvider:o(e=>t.fileSystemProvider(e),"FileSystemProvider"),WorkspaceLock:o(()=>new ab,"WorkspaceLock"),ConfigurationProvider:o(e=>new jx(e),"ConfigurationProvider")}}}var pI=N(()=>{"use strict";mN();wM();kM();wE();EM();BM();FM();$M();zM();VM();LE();HM();WM();Hx();qM();YM();XM();KM();h1();QM();ZM();OE();oI();lI();Lx();hI();fI();dI();o(fs,"createDefaultCoreModule");o(ds,"createDefaultSharedCoreModule")});function ui(t,e,r,n,i,a,s,l,u){let h=[t,e,r,n,i,a,s,l,u].reduce(FE,{});return ace(h)}function ice(t){if(t&&t[nce])for(let e of Object.values(t))ice(e);return t}function ace(t,e){let r=new Proxy({},{deleteProperty:o(()=>!1,"deleteProperty"),set:o(()=>{throw new Error("Cannot set property on injected service container")},"set"),get:o((n,i)=>i===nce?!0:rce(n,i,t,e||r),"get"),getOwnPropertyDescriptor:o((n,i)=>(rce(n,i,t,e||r),Object.getOwnPropertyDescriptor(n,i)),"getOwnPropertyDescriptor"),has:o((n,i)=>i in t,"has"),ownKeys:o(()=>[...Object.getOwnPropertyNames(t)],"ownKeys")});return r}function rce(t,e,r,n){if(e in t){if(t[e]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable.",{cause:t[e]});if(t[e]===tce)throw new Error('Cycle detected. Please make "'+String(e)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return t[e]}else if(e in r){let i=r[e];t[e]=tce;try{t[e]=typeof i=="function"?i(n):ace(i,n)}catch(a){throw t[e]=a instanceof Error?a:void 0,a}return t[e]}else return}function FE(t,e){if(e){for(let[r,n]of Object.entries(e))if(n!==void 0){let i=t[r];i!==null&&n!==null&&typeof i=="object"&&typeof n=="object"?t[r]=FE(i,n):t[r]=n}}return t}var mI,nce,tce,gI=N(()=>{"use strict";(function(t){t.merge=(e,r)=>FE(FE({},e),r)})(mI||(mI={}));o(ui,"inject");nce=Symbol("isProxy");o(ice,"eagerLoad");o(ace,"_inject");tce=Symbol();o(rce,"_resolve");o(FE,"_merge")});var sce=N(()=>{"use strict"});var oce=N(()=>{"use strict";lI();oI();sI()});var lce=N(()=>{"use strict"});var cce=N(()=>{"use strict";mN();lce()});var yI,Tp,$E,vI,uce=N(()=>{"use strict";cf();wE();OE();yI={indentTokenName:"INDENT",dedentTokenName:"DEDENT",whitespaceTokenName:"WS",ignoreIndentationDelimiters:[]};(function(t){t.REGULAR="indentation-sensitive",t.IGNORE_INDENTATION="ignore-indentation"})(Tp||(Tp={}));$E=class extends Uu{static{o(this,"IndentationAwareTokenBuilder")}constructor(e=yI){super(),this.indentationStack=[0],this.whitespaceRegExp=/[ \t]+/y,this.options=Object.assign(Object.assign({},yI),e),this.indentTokenType=of({name:this.options.indentTokenName,pattern:this.indentMatcher.bind(this),line_breaks:!1}),this.dedentTokenType=of({name:this.options.dedentTokenName,pattern:this.dedentMatcher.bind(this),line_breaks:!1})}buildTokens(e,r){let n=super.buildTokens(e,r);if(!IE(n))throw new Error("Invalid tokens built by default builder");let{indentTokenName:i,dedentTokenName:a,whitespaceTokenName:s,ignoreIndentationDelimiters:l}=this.options,u,h,f,d=[];for(let p of n){for(let[m,g]of l)p.name===m?p.PUSH_MODE=Tp.IGNORE_INDENTATION:p.name===g&&(p.POP_MODE=!0);p.name===a?u=p:p.name===i?h=p:p.name===s?f=p:d.push(p)}if(!u||!h||!f)throw new Error("Some indentation/whitespace tokens not found!");return l.length>0?{modes:{[Tp.REGULAR]:[u,h,...d,f],[Tp.IGNORE_INDENTATION]:[...d,f]},defaultMode:Tp.REGULAR}:[u,h,f,...d]}flushLexingReport(e){let r=super.flushLexingReport(e);return Object.assign(Object.assign({},r),{remainingDedents:this.flushRemainingDedents(e)})}isStartOfLine(e,r){return r===0||`\r +`.includes(e[r-1])}matchWhitespace(e,r,n,i){var a;this.whitespaceRegExp.lastIndex=r;let s=this.whitespaceRegExp.exec(e);return{currIndentLevel:(a=s?.[0].length)!==null&&a!==void 0?a:0,prevIndentLevel:this.indentationStack.at(-1),match:s}}createIndentationTokenInstance(e,r,n,i){let a=this.getLineNumber(r,i);return $u(e,n,i,i+n.length,a,a,1,n.length)}getLineNumber(e,r){return e.substring(0,r).split(/\r\n|\r|\n/).length}indentMatcher(e,r,n,i){if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:a,prevIndentLevel:s,match:l}=this.matchWhitespace(e,r,n,i);return a<=s?null:(this.indentationStack.push(a),l)}dedentMatcher(e,r,n,i){var a,s,l,u;if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:h,prevIndentLevel:f,match:d}=this.matchWhitespace(e,r,n,i);if(h>=f)return null;let p=this.indentationStack.lastIndexOf(h);if(p===-1)return this.diagnostics.push({severity:"error",message:`Invalid dedent level ${h} at offset: ${r}. Current indentation stack: ${this.indentationStack}`,offset:r,length:(s=(a=d?.[0])===null||a===void 0?void 0:a.length)!==null&&s!==void 0?s:0,line:this.getLineNumber(e,r),column:1}),null;let m=this.indentationStack.length-p-1,g=(u=(l=e.substring(0,r).match(/[\r\n]+$/))===null||l===void 0?void 0:l[0].length)!==null&&u!==void 0?u:1;for(let y=0;y1;)r.push(this.createIndentationTokenInstance(this.dedentTokenType,e,"",e.length)),this.indentationStack.pop();return this.indentationStack=[0],r}},vI=class extends wp{static{o(this,"IndentationAwareLexer")}constructor(e){if(super(e),e.parser.TokenBuilder instanceof $E)this.indentationTokenBuilder=e.parser.TokenBuilder;else throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder")}tokenize(e,r=ME){let n=super.tokenize(e),i=n.report;r?.mode==="full"&&n.tokens.push(...i.remainingDedents),i.remainingDedents=[];let{indentTokenType:a,dedentTokenType:s}=this.indentationTokenBuilder,l=a.tokenTypeIdx,u=s.tokenTypeIdx,h=[],f=n.tokens.length-1;for(let d=0;d=0&&h.push(n.tokens[f]),n.tokens=h,n}}});var hce=N(()=>{"use strict"});var fce=N(()=>{"use strict";hI();wM();gE();uce();kM();Lx();OE();bE();hce();wE();EM()});var dce=N(()=>{"use strict";BM();FM();$M();GM();zM();VM()});var pce=N(()=>{"use strict";dI();LE()});var zE,ps,xI=N(()=>{"use strict";zE=class{static{o(this,"EmptyFileSystemProvider")}readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}},ps={fileSystemProvider:o(()=>new zE,"fileSystemProvider")}});function IFe(){let t=ui(ds(ps),MFe),e=ui(fs({shared:t}),NFe);return t.ServiceRegistry.register(e),e}function Hu(t){var e;let r=IFe(),n=r.serializer.JsonSerializer.deserialize(t);return r.shared.workspace.LangiumDocumentFactory.fromModel(n,us.parse(`memory://${(e=n.name)!==null&&e!==void 0?e:"grammar"}.langium`)),n}var NFe,MFe,mce=N(()=>{"use strict";pI();gI();Rc();xI();Fc();NFe={Grammar:o(()=>{},"Grammar"),LanguageMetaData:o(()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"}),"LanguageMetaData")},MFe={AstReflection:o(()=>new Cg,"AstReflection")};o(IFe,"createMinimalGrammarServices");o(Hu,"loadGrammarFromJson")});var Gr={};hr(Gr,{AstUtils:()=>xk,BiMap:()=>vp,Cancellation:()=>yr,ContextCache:()=>xp,CstUtils:()=>ck,DONE_RESULT:()=>Ia,Deferred:()=>cs,Disposable:()=>ff,DisposableCache:()=>p1,DocumentCache:()=>_E,EMPTY_STREAM:()=>I2,ErrorWithLocation:()=>Zd,GrammarUtils:()=>Ek,MultiMap:()=>Bl,OperationCancelled:()=>Pc,Reduction:()=>zm,RegExpUtils:()=>Tk,SimpleCache:()=>$x,StreamImpl:()=>ao,TreeStreamImpl:()=>_c,URI:()=>us,UriUtils:()=>hs,WorkspaceCache:()=>m1,assertUnreachable:()=>Lc,delayNextTick:()=>MM,interruptAndCheck:()=>xi,isOperationCancelled:()=>Bc,loadGrammarFromJson:()=>Hu,setInterruptionPeriod:()=>$le,startCancelableOperation:()=>CE,stream:()=>en});var gce=N(()=>{"use strict";DE();NE();Sr(Gr,Kn);f1();jM();uk();mce();Yo();Ps();Fc();is();qo();Nl();Ol();Lg()});var yce=N(()=>{"use strict";WM();Hx()});var vce=N(()=>{"use strict";qM();YM();XM();KM();h1();xI();QM();fI();ZM()});var xa={};hr(xa,{AbstractAstReflection:()=>Xd,AbstractCstNode:()=>Cx,AbstractLangiumParser:()=>Ax,AbstractParserErrorMessageProvider:()=>vE,AbstractThreadedAsyncParser:()=>cI,AstUtils:()=>xk,BiMap:()=>vp,Cancellation:()=>yr,CompositeCstNodeImpl:()=>mp,ContextCache:()=>xp,CstNodeBuilder:()=>Sx,CstUtils:()=>ck,DEFAULT_TOKENIZE_OPTIONS:()=>ME,DONE_RESULT:()=>Ia,DatatypeSymbol:()=>yE,DefaultAstNodeDescriptionProvider:()=>qx,DefaultAstNodeLocator:()=>Xx,DefaultAsyncParser:()=>ib,DefaultCommentProvider:()=>nb,DefaultConfigurationProvider:()=>jx,DefaultDocumentBuilder:()=>Kx,DefaultDocumentValidator:()=>Wx,DefaultHydrator:()=>sb,DefaultIndexManager:()=>Qx,DefaultJsonSerializer:()=>Gx,DefaultLangiumDocumentFactory:()=>Nx,DefaultLangiumDocuments:()=>Mx,DefaultLexer:()=>wp,DefaultLexerErrorMessageProvider:()=>Jx,DefaultLinker:()=>Ix,DefaultNameProvider:()=>Ox,DefaultReferenceDescriptionProvider:()=>Yx,DefaultReferences:()=>Px,DefaultScopeComputation:()=>Bx,DefaultScopeProvider:()=>zx,DefaultServiceRegistry:()=>Vx,DefaultTokenBuilder:()=>Uu,DefaultValueConverter:()=>yp,DefaultWorkspaceLock:()=>ab,DefaultWorkspaceManager:()=>Zx,Deferred:()=>cs,Disposable:()=>ff,DisposableCache:()=>p1,DocumentCache:()=>_E,DocumentState:()=>kn,DocumentValidator:()=>jo,EMPTY_SCOPE:()=>xFe,EMPTY_STREAM:()=>I2,EmptyFileSystem:()=>ps,EmptyFileSystemProvider:()=>zE,ErrorWithLocation:()=>Zd,GrammarAST:()=>U2,GrammarUtils:()=>Ek,IndentationAwareLexer:()=>vI,IndentationAwareTokenBuilder:()=>$E,JSDocDocumentationProvider:()=>rb,LangiumCompletionParser:()=>Dx,LangiumParser:()=>_x,LangiumParserErrorMessageProvider:()=>s1,LeafCstNodeImpl:()=>pp,LexingMode:()=>Tp,MapScope:()=>Fx,Module:()=>mI,MultiMap:()=>Bl,OperationCancelled:()=>Pc,ParserWorker:()=>uI,Reduction:()=>zm,RegExpUtils:()=>Tk,RootCstNodeImpl:()=>a1,SimpleCache:()=>$x,StreamImpl:()=>ao,StreamScope:()=>d1,TextDocument:()=>c1,TreeStreamImpl:()=>_c,URI:()=>us,UriUtils:()=>hs,ValidationCategory:()=>g1,ValidationRegistry:()=>Ux,ValueConverter:()=>Oc,WorkspaceCache:()=>m1,assertUnreachable:()=>Lc,createCompletionParser:()=>bM,createDefaultCoreModule:()=>fs,createDefaultSharedCoreModule:()=>ds,createGrammarConfig:()=>pN,createLangiumParser:()=>TM,createParser:()=>Rx,delayNextTick:()=>MM,diagnosticData:()=>bp,eagerLoad:()=>ice,getDiagnosticRange:()=>Yle,indentationBuilderDefaultOptions:()=>yI,inject:()=>ui,interruptAndCheck:()=>xi,isAstNode:()=>ii,isAstNodeDescription:()=>kR,isAstNodeWithComment:()=>UM,isCompositeCstNode:()=>Ll,isIMultiModeLexerDefinition:()=>eI,isJSDoc:()=>iI,isLeafCstNode:()=>af,isLinkingError:()=>jd,isNamed:()=>Wle,isOperationCancelled:()=>Bc,isReference:()=>va,isRootCstNode:()=>M2,isTokenTypeArray:()=>IE,isTokenTypeDictionary:()=>JM,loadGrammarFromJson:()=>Hu,parseJSDoc:()=>nI,prepareLangiumParser:()=>Nle,setInterruptionPeriod:()=>$le,startCancelableOperation:()=>CE,stream:()=>en,toDiagnosticData:()=>Xle,toDiagnosticSeverity:()=>RE});var Xo=N(()=>{"use strict";pI();gI();HM();sce();Rl();oce();cce();fce();dce();pce();gce();Sr(xa,Gr);yce();vce();Rc()});function Sce(t){return Fl.isInstance(t,ob)}function Cce(t){return Fl.isInstance(t,y1)}function Ace(t){return Fl.isInstance(t,v1)}function _ce(t){return Fl.isInstance(t,WE)}function Dce(t){return Fl.isInstance(t,x1)}function Lce(t){return Fl.isInstance(t,lb)}function Rce(t){return Fl.isInstance(t,b1)}function Nce(t){return Fl.isInstance(t,cb)}function Mce(t){return Fl.isInstance(t,ub)}function Ice(t){return Fl.isInstance(t,hb)}function Oce(t){return Fl.isInstance(t,fb)}var OFe,Lt,AI,ob,GE,y1,VE,UE,v1,WE,bI,wI,TI,x1,kI,lb,EI,b1,SI,cb,ub,hb,fb,qE,CI,HE,Pce,Fl,xce,PFe,bce,BFe,wce,FFe,Tce,$Fe,kce,zFe,Ece,GFe,VFe,UFe,HFe,WFe,qFe,YFe,co,_I,DI,LI,RI,NI,MI,XFe,jFe,KFe,QFe,w1,Wu,$s,ZFe,zs=N(()=>{"use strict";Xo();Xo();Xo();Xo();OFe=Object.defineProperty,Lt=o((t,e)=>OFe(t,"name",{value:e,configurable:!0}),"__name"),AI="Statement",ob="Architecture";o(Sce,"isArchitecture");Lt(Sce,"isArchitecture");GE="Axis",y1="Branch";o(Cce,"isBranch");Lt(Cce,"isBranch");VE="Checkout",UE="CherryPicking",v1="Commit";o(Ace,"isCommit");Lt(Ace,"isCommit");WE="Common";o(_ce,"isCommon");Lt(_ce,"isCommon");bI="Curve",wI="Edge",TI="Entry",x1="GitGraph";o(Dce,"isGitGraph");Lt(Dce,"isGitGraph");kI="Group",lb="Info";o(Lce,"isInfo");Lt(Lce,"isInfo");EI="Junction",b1="Merge";o(Rce,"isMerge");Lt(Rce,"isMerge");SI="Option",cb="Packet";o(Nce,"isPacket");Lt(Nce,"isPacket");ub="PacketBlock";o(Mce,"isPacketBlock");Lt(Mce,"isPacketBlock");hb="Pie";o(Ice,"isPie");Lt(Ice,"isPie");fb="PieSection";o(Oce,"isPieSection");Lt(Oce,"isPieSection");qE="Radar",CI="Service",HE="Direction",Pce=class extends Xd{static{o(this,"MermaidAstReflection")}static{Lt(this,"MermaidAstReflection")}getAllTypes(){return[ob,GE,y1,VE,UE,v1,WE,bI,HE,wI,TI,x1,kI,lb,EI,b1,SI,cb,ub,hb,fb,qE,CI,AI]}computeIsSubtype(t,e){switch(t){case y1:case VE:case UE:case v1:case b1:return this.isSubtype(AI,e);case HE:return this.isSubtype(x1,e);default:return!1}}getReferenceType(t){let e=`${t.container.$type}:${t.property}`;switch(e){case"Entry:axis":return GE;default:throw new Error(`${e} is not a valid reference id.`)}}getTypeMetaData(t){switch(t){case ob:return{name:ob,properties:[{name:"accDescr"},{name:"accTitle"},{name:"edges",defaultValue:[]},{name:"groups",defaultValue:[]},{name:"junctions",defaultValue:[]},{name:"services",defaultValue:[]},{name:"title"}]};case GE:return{name:GE,properties:[{name:"label"},{name:"name"}]};case y1:return{name:y1,properties:[{name:"name"},{name:"order"}]};case VE:return{name:VE,properties:[{name:"branch"}]};case UE:return{name:UE,properties:[{name:"id"},{name:"parent"},{name:"tags",defaultValue:[]}]};case v1:return{name:v1,properties:[{name:"id"},{name:"message"},{name:"tags",defaultValue:[]},{name:"type"}]};case WE:return{name:WE,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case bI:return{name:bI,properties:[{name:"entries",defaultValue:[]},{name:"label"},{name:"name"}]};case wI:return{name:wI,properties:[{name:"lhsDir"},{name:"lhsGroup",defaultValue:!1},{name:"lhsId"},{name:"lhsInto",defaultValue:!1},{name:"rhsDir"},{name:"rhsGroup",defaultValue:!1},{name:"rhsId"},{name:"rhsInto",defaultValue:!1},{name:"title"}]};case TI:return{name:TI,properties:[{name:"axis"},{name:"value"}]};case x1:return{name:x1,properties:[{name:"accDescr"},{name:"accTitle"},{name:"statements",defaultValue:[]},{name:"title"}]};case kI:return{name:kI,properties:[{name:"icon"},{name:"id"},{name:"in"},{name:"title"}]};case lb:return{name:lb,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case EI:return{name:EI,properties:[{name:"id"},{name:"in"}]};case b1:return{name:b1,properties:[{name:"branch"},{name:"id"},{name:"tags",defaultValue:[]},{name:"type"}]};case SI:return{name:SI,properties:[{name:"name"},{name:"value",defaultValue:!1}]};case cb:return{name:cb,properties:[{name:"accDescr"},{name:"accTitle"},{name:"blocks",defaultValue:[]},{name:"title"}]};case ub:return{name:ub,properties:[{name:"end"},{name:"label"},{name:"start"}]};case hb:return{name:hb,properties:[{name:"accDescr"},{name:"accTitle"},{name:"sections",defaultValue:[]},{name:"showData",defaultValue:!1},{name:"title"}]};case fb:return{name:fb,properties:[{name:"label"},{name:"value"}]};case qE:return{name:qE,properties:[{name:"accDescr"},{name:"accTitle"},{name:"axes",defaultValue:[]},{name:"curves",defaultValue:[]},{name:"options",defaultValue:[]},{name:"title"}]};case CI:return{name:CI,properties:[{name:"icon"},{name:"iconText"},{name:"id"},{name:"in"},{name:"title"}]};case HE:return{name:HE,properties:[{name:"accDescr"},{name:"accTitle"},{name:"dir"},{name:"statements",defaultValue:[]},{name:"title"}]};default:return{name:t,properties:[]}}}},Fl=new Pce,PFe=Lt(()=>xce??(xce=Hu('{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"InfoGrammar"),BFe=Lt(()=>bce??(bce=Hu(`{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"packet-beta"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"+"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"?"},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}`)),"PacketGrammar"),FFe=Lt(()=>wce??(wce=Hu('{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"+"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"PIE_SECTION_LABEL","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]+\\"/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"PIE_SECTION_VALUE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/(0|[1-9][0-9]*)(\\\\.[0-9]+)?/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"PieGrammar"),$Fe=Lt(()=>Tce??(Tce=Hu('{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_ID","definition":{"$type":"RegexToken","regex":"/[\\\\w]+/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TEXT_ICON","definition":{"$type":"RegexToken","regex":"/\\\\(\\"[^\\"]+\\"\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[[\\\\w ]+\\\\]/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"ArchitectureGrammar"),zFe=Lt(()=>kce??(kce=Hu(`{"$type":"Grammar","isDeclared":true,"name":"GitGraph","interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+(?=\\\\s)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[]}`)),"GitGraphGrammar"),GFe=Lt(()=>Ece??(Ece=Hu(`{"$type":"Grammar","isDeclared":true,"name":"Radar","interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@12"}}}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@12"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/(0|[1-9][0-9]*)(\\\\.[0-9]+)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9\\\\-_]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[]}`)),"RadarGrammar"),VFe={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},UFe={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},HFe={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},WFe={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},qFe={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},YFe={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},co={AstReflection:Lt(()=>new Pce,"AstReflection")},_I={Grammar:Lt(()=>PFe(),"Grammar"),LanguageMetaData:Lt(()=>VFe,"LanguageMetaData"),parser:{}},DI={Grammar:Lt(()=>BFe(),"Grammar"),LanguageMetaData:Lt(()=>UFe,"LanguageMetaData"),parser:{}},LI={Grammar:Lt(()=>FFe(),"Grammar"),LanguageMetaData:Lt(()=>HFe,"LanguageMetaData"),parser:{}},RI={Grammar:Lt(()=>$Fe(),"Grammar"),LanguageMetaData:Lt(()=>WFe,"LanguageMetaData"),parser:{}},NI={Grammar:Lt(()=>zFe(),"Grammar"),LanguageMetaData:Lt(()=>qFe,"LanguageMetaData"),parser:{}},MI={Grammar:Lt(()=>GFe(),"Grammar"),LanguageMetaData:Lt(()=>YFe,"LanguageMetaData"),parser:{}},XFe=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,jFe=/accTitle[\t ]*:([^\n\r]*)/,KFe=/title([\t ][^\n\r]*|)/,QFe={ACC_DESCR:XFe,ACC_TITLE:jFe,TITLE:KFe},w1=class extends yp{static{o(this,"AbstractMermaidValueConverter")}static{Lt(this,"AbstractMermaidValueConverter")}runConverter(t,e,r){let n=this.runCommonConverter(t,e,r);return n===void 0&&(n=this.runCustomConverter(t,e,r)),n===void 0?super.runConverter(t,e,r):n}runCommonConverter(t,e,r){let n=QFe[t.name];if(n===void 0)return;let i=n.exec(e);if(i!==null){if(i[1]!==void 0)return i[1].trim().replace(/[\t ]{2,}/gm," ");if(i[2]!==void 0)return i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,` +`)}}},Wu=class extends w1{static{o(this,"CommonValueConverter")}static{Lt(this,"CommonValueConverter")}runCustomConverter(t,e,r){}},$s=class extends Uu{static{o(this,"AbstractMermaidTokenBuilder")}static{Lt(this,"AbstractMermaidTokenBuilder")}constructor(t){super(),this.keywords=new Set(t)}buildKeywordTokens(t,e,r){let n=super.buildKeywordTokens(t,e,r);return n.forEach(i=>{this.keywords.has(i.name)&&i.PATTERN!==void 0&&(i.PATTERN=new RegExp(i.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),n}},ZFe=class extends $s{static{o(this,"CommonTokenBuilder")}static{Lt(this,"CommonTokenBuilder")}}});function XE(t=ps){let e=ui(ds(t),co),r=ui(fs({shared:e}),NI,YE);return e.ServiceRegistry.register(r),{shared:e,GitGraph:r}}var JFe,YE,II=N(()=>{"use strict";zs();Xo();JFe=class extends $s{static{o(this,"GitGraphTokenBuilder")}static{Lt(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},YE={parser:{TokenBuilder:Lt(()=>new JFe,"TokenBuilder"),ValueConverter:Lt(()=>new Wu,"ValueConverter")}};o(XE,"createGitGraphServices");Lt(XE,"createGitGraphServices")});function KE(t=ps){let e=ui(ds(t),co),r=ui(fs({shared:e}),_I,jE);return e.ServiceRegistry.register(r),{shared:e,Info:r}}var e$e,jE,OI=N(()=>{"use strict";zs();Xo();e$e=class extends $s{static{o(this,"InfoTokenBuilder")}static{Lt(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},jE={parser:{TokenBuilder:Lt(()=>new e$e,"TokenBuilder"),ValueConverter:Lt(()=>new Wu,"ValueConverter")}};o(KE,"createInfoServices");Lt(KE,"createInfoServices")});function ZE(t=ps){let e=ui(ds(t),co),r=ui(fs({shared:e}),DI,QE);return e.ServiceRegistry.register(r),{shared:e,Packet:r}}var t$e,QE,PI=N(()=>{"use strict";zs();Xo();t$e=class extends $s{static{o(this,"PacketTokenBuilder")}static{Lt(this,"PacketTokenBuilder")}constructor(){super(["packet-beta"])}},QE={parser:{TokenBuilder:Lt(()=>new t$e,"TokenBuilder"),ValueConverter:Lt(()=>new Wu,"ValueConverter")}};o(ZE,"createPacketServices");Lt(ZE,"createPacketServices")});function e6(t=ps){let e=ui(ds(t),co),r=ui(fs({shared:e}),LI,JE);return e.ServiceRegistry.register(r),{shared:e,Pie:r}}var r$e,n$e,JE,BI=N(()=>{"use strict";zs();Xo();r$e=class extends $s{static{o(this,"PieTokenBuilder")}static{Lt(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},n$e=class extends w1{static{o(this,"PieValueConverter")}static{Lt(this,"PieValueConverter")}runCustomConverter(t,e,r){if(t.name==="PIE_SECTION_LABEL")return e.replace(/"/g,"").trim()}},JE={parser:{TokenBuilder:Lt(()=>new r$e,"TokenBuilder"),ValueConverter:Lt(()=>new n$e,"ValueConverter")}};o(e6,"createPieServices");Lt(e6,"createPieServices")});function r6(t=ps){let e=ui(ds(t),co),r=ui(fs({shared:e}),RI,t6);return e.ServiceRegistry.register(r),{shared:e,Architecture:r}}var i$e,a$e,t6,FI=N(()=>{"use strict";zs();Xo();i$e=class extends $s{static{o(this,"ArchitectureTokenBuilder")}static{Lt(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},a$e=class extends w1{static{o(this,"ArchitectureValueConverter")}static{Lt(this,"ArchitectureValueConverter")}runCustomConverter(t,e,r){if(t.name==="ARCH_ICON")return e.replace(/[()]/g,"").trim();if(t.name==="ARCH_TEXT_ICON")return e.replace(/["()]/g,"");if(t.name==="ARCH_TITLE")return e.replace(/[[\]]/g,"").trim()}},t6={parser:{TokenBuilder:Lt(()=>new i$e,"TokenBuilder"),ValueConverter:Lt(()=>new a$e,"ValueConverter")}};o(r6,"createArchitectureServices");Lt(r6,"createArchitectureServices")});function i6(t=ps){let e=ui(ds(t),co),r=ui(fs({shared:e}),MI,n6);return e.ServiceRegistry.register(r),{shared:e,Radar:r}}var s$e,n6,$I=N(()=>{"use strict";zs();Xo();s$e=class extends $s{static{o(this,"RadarTokenBuilder")}static{Lt(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},n6={parser:{TokenBuilder:Lt(()=>new s$e,"TokenBuilder"),ValueConverter:Lt(()=>new Wu,"ValueConverter")}};o(i6,"createRadarServices");Lt(i6,"createRadarServices")});var Bce={};hr(Bce,{InfoModule:()=>jE,createInfoServices:()=>KE});var Fce=N(()=>{"use strict";OI();zs()});var $ce={};hr($ce,{PacketModule:()=>QE,createPacketServices:()=>ZE});var zce=N(()=>{"use strict";PI();zs()});var Gce={};hr(Gce,{PieModule:()=>JE,createPieServices:()=>e6});var Vce=N(()=>{"use strict";BI();zs()});var Uce={};hr(Uce,{ArchitectureModule:()=>t6,createArchitectureServices:()=>r6});var Hce=N(()=>{"use strict";FI();zs()});var Wce={};hr(Wce,{GitGraphModule:()=>YE,createGitGraphServices:()=>XE});var qce=N(()=>{"use strict";II();zs()});var Yce={};hr(Yce,{RadarModule:()=>n6,createRadarServices:()=>i6});var Xce=N(()=>{"use strict";$I();zs()});async function uo(t,e){let r=o$e[t];if(!r)throw new Error(`Unknown diagram type: ${t}`);df[t]||await r();let i=df[t].parse(e);if(i.lexerErrors.length>0||i.parserErrors.length>0)throw new l$e(i);return i.value}var df,o$e,l$e,kp=N(()=>{"use strict";II();OI();PI();BI();FI();$I();zs();df={},o$e={info:Lt(async()=>{let{createInfoServices:t}=await Promise.resolve().then(()=>(Fce(),Bce)),e=t().Info.parser.LangiumParser;df.info=e},"info"),packet:Lt(async()=>{let{createPacketServices:t}=await Promise.resolve().then(()=>(zce(),$ce)),e=t().Packet.parser.LangiumParser;df.packet=e},"packet"),pie:Lt(async()=>{let{createPieServices:t}=await Promise.resolve().then(()=>(Vce(),Gce)),e=t().Pie.parser.LangiumParser;df.pie=e},"pie"),architecture:Lt(async()=>{let{createArchitectureServices:t}=await Promise.resolve().then(()=>(Hce(),Uce)),e=t().Architecture.parser.LangiumParser;df.architecture=e},"architecture"),gitGraph:Lt(async()=>{let{createGitGraphServices:t}=await Promise.resolve().then(()=>(qce(),Wce)),e=t().GitGraph.parser.LangiumParser;df.gitGraph=e},"gitGraph"),radar:Lt(async()=>{let{createRadarServices:t}=await Promise.resolve().then(()=>(Xce(),Yce)),e=t().Radar.parser.LangiumParser;df.radar=e},"radar")};o(uo,"parse");Lt(uo,"parse");l$e=class extends Error{static{o(this,"MermaidParseError")}constructor(t){let e=t.lexerErrors.map(n=>n.message).join(` +`),r=t.parserErrors.map(n=>n.message).join(` +`);super(`Parsing failed: ${e} ${r}`),this.result=t}static{Lt(this,"MermaidParseError")}}});function $c(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}var T1=N(()=>{"use strict";o($c,"populateCommonDb")});var Kr,a6=N(()=>{"use strict";Kr={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4}});var pf,s6=N(()=>{"use strict";pf=class{constructor(e){this.init=e;this.records=this.init()}static{o(this,"ImperativeState")}reset(){this.records=this.init()}}});function zI(){return j9({length:7})}function u$e(t,e){let r=Object.create(null);return t.reduce((n,i)=>{let a=e(i);return r[a]||(r[a]=!0,n.push(i)),n},[])}function jce(t,e,r){let n=t.indexOf(e);n===-1?t.push(r):t.splice(n,1,r)}function Qce(t){let e=t.reduce((i,a)=>i.seq>a.seq?i:a,t[0]),r="";t.forEach(function(i){i===e?r+=" *":r+=" |"});let n=[r,e.id,e.seq];for(let i in _t.records.branches)_t.records.branches.get(i)===e.id&&n.push(i);if(Y.debug(n.join(" ")),e.parents&&e.parents.length==2&&e.parents[0]&&e.parents[1]){let i=_t.records.commits.get(e.parents[0]);jce(t,e,i),e.parents[1]&&t.push(_t.records.commits.get(e.parents[1]))}else{if(e.parents.length==0)return;if(e.parents[0]){let i=_t.records.commits.get(e.parents[0]);jce(t,e,i)}}t=u$e(t,i=>i.id),Qce(t)}var c$e,Ep,_t,h$e,f$e,d$e,p$e,m$e,g$e,y$e,Kce,v$e,x$e,b$e,w$e,T$e,Zce,k$e,E$e,S$e,o6,GI=N(()=>{"use strict";vt();ir();ji();gr();mi();a6();s6();Ya();c$e=or.gitGraph,Ep=o(()=>Fi({...c$e,...cr().gitGraph}),"getConfig"),_t=new pf(()=>{let t=Ep(),e=t.mainBranchName,r=t.mainBranchOrder;return{mainBranchName:e,commits:new Map,head:null,branchConfig:new Map([[e,{name:e,order:r}]]),branches:new Map([[e,null]]),currBranch:e,direction:"LR",seq:0,options:{}}});o(zI,"getID");o(u$e,"uniqBy");h$e=o(function(t){_t.records.direction=t},"setDirection"),f$e=o(function(t){Y.debug("options str",t),t=t?.trim(),t=t||"{}";try{_t.records.options=JSON.parse(t)}catch(e){Y.error("error while parsing gitGraph options",e.message)}},"setOptions"),d$e=o(function(){return _t.records.options},"getOptions"),p$e=o(function(t){let e=t.msg,r=t.id,n=t.type,i=t.tags;Y.info("commit",e,r,n,i),Y.debug("Entering commit:",e,r,n,i);let a=Ep();r=Ze.sanitizeText(r,a),e=Ze.sanitizeText(e,a),i=i?.map(l=>Ze.sanitizeText(l,a));let s={id:r||_t.records.seq+"-"+zI(),message:e,seq:_t.records.seq++,type:n??Kr.NORMAL,tags:i??[],parents:_t.records.head==null?[]:[_t.records.head.id],branch:_t.records.currBranch};_t.records.head=s,Y.info("main branch",a.mainBranchName),_t.records.commits.set(s.id,s),_t.records.branches.set(_t.records.currBranch,s.id),Y.debug("in pushCommit "+s.id)},"commit"),m$e=o(function(t){let e=t.name,r=t.order;if(e=Ze.sanitizeText(e,Ep()),_t.records.branches.has(e))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${e}")`);_t.records.branches.set(e,_t.records.head!=null?_t.records.head.id:null),_t.records.branchConfig.set(e,{name:e,order:r}),Kce(e),Y.debug("in createBranch")},"branch"),g$e=o(t=>{let e=t.branch,r=t.id,n=t.type,i=t.tags,a=Ep();e=Ze.sanitizeText(e,a),r&&(r=Ze.sanitizeText(r,a));let s=_t.records.branches.get(_t.records.currBranch),l=_t.records.branches.get(e),u=s?_t.records.commits.get(s):void 0,h=l?_t.records.commits.get(l):void 0;if(u&&h&&u.branch===e)throw new Error(`Cannot merge branch '${e}' into itself.`);if(_t.records.currBranch===e){let p=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},p}if(u===void 0||!u){let p=new Error(`Incorrect usage of "merge". Current branch (${_t.records.currBranch})has no commits`);throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["commit"]},p}if(!_t.records.branches.has(e)){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") does not exist");throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:[`branch ${e}`]},p}if(h===void 0||!h){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") has no commits");throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:['"commit"']},p}if(u===h){let p=new Error('Incorrect usage of "merge". Both branches have same head');throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},p}if(r&&_t.records.commits.has(r)){let p=new Error('Incorrect usage of "merge". Commit with id:'+r+" already exists, use different custom Id");throw p.hash={text:`merge ${e} ${r} ${n} ${i?.join(" ")}`,token:`merge ${e} ${r} ${n} ${i?.join(" ")}`,expected:[`merge ${e} ${r}_UNIQUE ${n} ${i?.join(" ")}`]},p}let f=l||"",d={id:r||`${_t.records.seq}-${zI()}`,message:`merged branch ${e} into ${_t.records.currBranch}`,seq:_t.records.seq++,parents:_t.records.head==null?[]:[_t.records.head.id,f],branch:_t.records.currBranch,type:Kr.MERGE,customType:n,customId:!!r,tags:i??[]};_t.records.head=d,_t.records.commits.set(d.id,d),_t.records.branches.set(_t.records.currBranch,d.id),Y.debug(_t.records.branches),Y.debug("in mergeBranch")},"merge"),y$e=o(function(t){let e=t.id,r=t.targetId,n=t.tags,i=t.parent;Y.debug("Entering cherryPick:",e,r,n);let a=Ep();if(e=Ze.sanitizeText(e,a),r=Ze.sanitizeText(r,a),n=n?.map(u=>Ze.sanitizeText(u,a)),i=Ze.sanitizeText(i,a),!e||!_t.records.commits.has(e)){let u=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw u.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},u}let s=_t.records.commits.get(e);if(s===void 0||!s)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(i&&!(Array.isArray(s.parents)&&s.parents.includes(i)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");let l=s.branch;if(s.type===Kr.MERGE&&!i)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!r||!_t.records.commits.has(r)){if(l===_t.records.currBranch){let d=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let u=_t.records.branches.get(_t.records.currBranch);if(u===void 0||!u){let d=new Error(`Incorrect usage of "cherry-pick". Current branch (${_t.records.currBranch})has no commits`);throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let h=_t.records.commits.get(u);if(h===void 0||!h){let d=new Error(`Incorrect usage of "cherry-pick". Current branch (${_t.records.currBranch})has no commits`);throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let f={id:_t.records.seq+"-"+zI(),message:`cherry-picked ${s?.message} into ${_t.records.currBranch}`,seq:_t.records.seq++,parents:_t.records.head==null?[]:[_t.records.head.id,s.id],branch:_t.records.currBranch,type:Kr.CHERRY_PICK,tags:n?n.filter(Boolean):[`cherry-pick:${s.id}${s.type===Kr.MERGE?`|parent:${i}`:""}`]};_t.records.head=f,_t.records.commits.set(f.id,f),_t.records.branches.set(_t.records.currBranch,f.id),Y.debug(_t.records.branches),Y.debug("in cherryPick")}},"cherryPick"),Kce=o(function(t){if(t=Ze.sanitizeText(t,Ep()),_t.records.branches.has(t)){_t.records.currBranch=t;let e=_t.records.branches.get(_t.records.currBranch);e===void 0||!e?_t.records.head=null:_t.records.head=_t.records.commits.get(e)??null}else{let e=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${t}")`);throw e.hash={text:`checkout ${t}`,token:`checkout ${t}`,expected:[`branch ${t}`]},e}},"checkout");o(jce,"upsert");o(Qce,"prettyPrintCommitHistory");v$e=o(function(){Y.debug(_t.records.commits);let t=Zce()[0];Qce([t])},"prettyPrint"),x$e=o(function(){_t.reset(),Ar()},"clear"),b$e=o(function(){return[..._t.records.branchConfig.values()].map((e,r)=>e.order!==null&&e.order!==void 0?e:{...e,order:parseFloat(`0.${r}`)}).sort((e,r)=>(e.order??0)-(r.order??0)).map(({name:e})=>({name:e}))},"getBranchesAsObjArray"),w$e=o(function(){return _t.records.branches},"getBranches"),T$e=o(function(){return _t.records.commits},"getCommits"),Zce=o(function(){let t=[..._t.records.commits.values()];return t.forEach(function(e){Y.debug(e.id)}),t.sort((e,r)=>e.seq-r.seq),t},"getCommitsArray"),k$e=o(function(){return _t.records.currBranch},"getCurrentBranch"),E$e=o(function(){return _t.records.direction},"getDirection"),S$e=o(function(){return _t.records.head},"getHead"),o6={commitType:Kr,getConfig:Ep,setDirection:h$e,setOptions:f$e,getOptions:d$e,commit:p$e,branch:m$e,merge:g$e,cherryPick:y$e,checkout:Kce,prettyPrint:v$e,clear:x$e,getBranchesAsObjArray:b$e,getBranches:w$e,getCommits:T$e,getCommitsArray:Zce,getCurrentBranch:k$e,getDirection:E$e,getHead:S$e,setAccTitle:Lr,getAccTitle:Rr,getAccDescription:Mr,setAccDescription:Nr,setDiagramTitle:$r,getDiagramTitle:Ir}});var C$e,A$e,_$e,D$e,L$e,R$e,N$e,Jce,eue=N(()=>{"use strict";kp();vt();T1();GI();a6();C$e=o((t,e)=>{$c(t,e),t.dir&&e.setDirection(t.dir);for(let r of t.statements)A$e(r,e)},"populate"),A$e=o((t,e)=>{let n={Commit:o(i=>e.commit(_$e(i)),"Commit"),Branch:o(i=>e.branch(D$e(i)),"Branch"),Merge:o(i=>e.merge(L$e(i)),"Merge"),Checkout:o(i=>e.checkout(R$e(i)),"Checkout"),CherryPicking:o(i=>e.cherryPick(N$e(i)),"CherryPicking")}[t.$type];n?n(t):Y.error(`Unknown statement type: ${t.$type}`)},"parseStatement"),_$e=o(t=>({id:t.id,msg:t.message??"",type:t.type!==void 0?Kr[t.type]:Kr.NORMAL,tags:t.tags??void 0}),"parseCommit"),D$e=o(t=>({name:t.name,order:t.order??0}),"parseBranch"),L$e=o(t=>({branch:t.branch,id:t.id??"",type:t.type!==void 0?Kr[t.type]:void 0,tags:t.tags??void 0}),"parseMerge"),R$e=o(t=>t.branch,"parseCheckout"),N$e=o(t=>({id:t.id,targetId:"",tags:t.tags?.length===0?void 0:t.tags,parent:t.parent}),"parseCherryPicking"),Jce={parse:o(async t=>{let e=await uo("gitGraph",t);Y.debug(e),C$e(e,o6)},"parse")}});var M$e,Ko,gf,yf,zc,qu,Sp,Gs,Vs,l6,db,c6,mf,Br,I$e,rue,nue,O$e,P$e,B$e,F$e,$$e,z$e,G$e,V$e,U$e,H$e,W$e,q$e,tue,Y$e,pb,X$e,j$e,K$e,Q$e,Z$e,iue,aue=N(()=>{"use strict";dr();zt();vt();ir();a6();M$e=me(),Ko=M$e?.gitGraph,gf=10,yf=40,zc=4,qu=2,Sp=8,Gs=new Map,Vs=new Map,l6=30,db=new Map,c6=[],mf=0,Br="LR",I$e=o(()=>{Gs.clear(),Vs.clear(),db.clear(),mf=0,c6=[],Br="LR"},"clear"),rue=o(t=>{let e=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof t=="string"?t.split(/\\n|\n|/gi):t).forEach(n=>{let i=document.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),i.setAttribute("dy","1em"),i.setAttribute("x","0"),i.setAttribute("class","row"),i.textContent=n.trim(),e.appendChild(i)}),e},"drawText"),nue=o(t=>{let e,r,n;return Br==="BT"?(r=o((i,a)=>i<=a,"comparisonFunc"),n=1/0):(r=o((i,a)=>i>=a,"comparisonFunc"),n=0),t.forEach(i=>{let a=Br==="TB"||Br=="BT"?Vs.get(i)?.y:Vs.get(i)?.x;a!==void 0&&r(a,n)&&(e=i,n=a)}),e},"findClosestParent"),O$e=o(t=>{let e="",r=1/0;return t.forEach(n=>{let i=Vs.get(n).y;i<=r&&(e=n,r=i)}),e||void 0},"findClosestParentBT"),P$e=o((t,e,r)=>{let n=r,i=r,a=[];t.forEach(s=>{let l=e.get(s);if(!l)throw new Error(`Commit not found for key ${s}`);l.parents.length?(n=F$e(l),i=Math.max(n,i)):a.push(l),$$e(l,n)}),n=i,a.forEach(s=>{z$e(s,n,r)}),t.forEach(s=>{let l=e.get(s);if(l?.parents.length){let u=O$e(l.parents);n=Vs.get(u).y-yf,n<=i&&(i=n);let h=Gs.get(l.branch).pos,f=n-gf;Vs.set(l.id,{x:h,y:f})}})},"setParallelBTPos"),B$e=o(t=>{let e=nue(t.parents.filter(n=>n!==null));if(!e)throw new Error(`Closest parent not found for commit ${t.id}`);let r=Vs.get(e)?.y;if(r===void 0)throw new Error(`Closest parent position not found for commit ${t.id}`);return r},"findClosestParentPos"),F$e=o(t=>B$e(t)+yf,"calculateCommitPosition"),$$e=o((t,e)=>{let r=Gs.get(t.branch);if(!r)throw new Error(`Branch not found for commit ${t.id}`);let n=r.pos,i=e+gf;return Vs.set(t.id,{x:n,y:i}),{x:n,y:i}},"setCommitPosition"),z$e=o((t,e,r)=>{let n=Gs.get(t.branch);if(!n)throw new Error(`Branch not found for commit ${t.id}`);let i=e+r,a=n.pos;Vs.set(t.id,{x:a,y:i})},"setRootPosition"),G$e=o((t,e,r,n,i,a)=>{if(a===Kr.HIGHLIGHT)t.append("rect").attr("x",r.x-10).attr("y",r.y-10).attr("width",20).attr("height",20).attr("class",`commit ${e.id} commit-highlight${i%Sp} ${n}-outer`),t.append("rect").attr("x",r.x-6).attr("y",r.y-6).attr("width",12).attr("height",12).attr("class",`commit ${e.id} commit${i%Sp} ${n}-inner`);else if(a===Kr.CHERRY_PICK)t.append("circle").attr("cx",r.x).attr("cy",r.y).attr("r",10).attr("class",`commit ${e.id} ${n}`),t.append("circle").attr("cx",r.x-3).attr("cy",r.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} ${n}`),t.append("circle").attr("cx",r.x+3).attr("cy",r.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} ${n}`),t.append("line").attr("x1",r.x+3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} ${n}`),t.append("line").attr("x1",r.x-3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} ${n}`);else{let s=t.append("circle");if(s.attr("cx",r.x),s.attr("cy",r.y),s.attr("r",e.type===Kr.MERGE?9:10),s.attr("class",`commit ${e.id} commit${i%Sp}`),a===Kr.MERGE){let l=t.append("circle");l.attr("cx",r.x),l.attr("cy",r.y),l.attr("r",6),l.attr("class",`commit ${n} ${e.id} commit${i%Sp}`)}a===Kr.REVERSE&&t.append("path").attr("d",`M ${r.x-5},${r.y-5}L${r.x+5},${r.y+5}M${r.x-5},${r.y+5}L${r.x+5},${r.y-5}`).attr("class",`commit ${n} ${e.id} commit${i%Sp}`)}},"drawCommitBullet"),V$e=o((t,e,r,n)=>{if(e.type!==Kr.CHERRY_PICK&&(e.customId&&e.type===Kr.MERGE||e.type!==Kr.MERGE)&&Ko?.showCommitLabel){let i=t.append("g"),a=i.insert("rect").attr("class","commit-label-bkg"),s=i.append("text").attr("x",n).attr("y",r.y+25).attr("class","commit-label").text(e.id),l=s.node()?.getBBox();if(l&&(a.attr("x",r.posWithOffset-l.width/2-qu).attr("y",r.y+13.5).attr("width",l.width+2*qu).attr("height",l.height+2*qu),Br==="TB"||Br==="BT"?(a.attr("x",r.x-(l.width+4*zc+5)).attr("y",r.y-12),s.attr("x",r.x-(l.width+4*zc)).attr("y",r.y+l.height-12)):s.attr("x",r.posWithOffset-l.width/2),Ko.rotateCommitLabel))if(Br==="TB"||Br==="BT")s.attr("transform","rotate(-45, "+r.x+", "+r.y+")"),a.attr("transform","rotate(-45, "+r.x+", "+r.y+")");else{let u=-7.5-(l.width+10)/25*9.5,h=10+l.width/25*8.5;i.attr("transform","translate("+u+", "+h+") rotate(-45, "+n+", "+r.y+")")}}},"drawCommitLabel"),U$e=o((t,e,r,n)=>{if(e.tags.length>0){let i=0,a=0,s=0,l=[];for(let u of e.tags.reverse()){let h=t.insert("polygon"),f=t.append("circle"),d=t.append("text").attr("y",r.y-16-i).attr("class","tag-label").text(u),p=d.node()?.getBBox();if(!p)throw new Error("Tag bbox not found");a=Math.max(a,p.width),s=Math.max(s,p.height),d.attr("x",r.posWithOffset-p.width/2),l.push({tag:d,hole:f,rect:h,yOffset:i}),i+=20}for(let{tag:u,hole:h,rect:f,yOffset:d}of l){let p=s/2,m=r.y-19.2-d;if(f.attr("class","tag-label-bkg").attr("points",` + ${n-a/2-zc/2},${m+qu} + ${n-a/2-zc/2},${m-qu} + ${r.posWithOffset-a/2-zc},${m-p-qu} + ${r.posWithOffset+a/2+zc},${m-p-qu} + ${r.posWithOffset+a/2+zc},${m+p+qu} + ${r.posWithOffset-a/2-zc},${m+p+qu}`),h.attr("cy",m).attr("cx",n-a/2+zc/2).attr("r",1.5).attr("class","tag-hole"),Br==="TB"||Br==="BT"){let g=n+d;f.attr("class","tag-label-bkg").attr("points",` + ${r.x},${g+2} + ${r.x},${g-2} + ${r.x+gf},${g-p-2} + ${r.x+gf+a+4},${g-p-2} + ${r.x+gf+a+4},${g+p+2} + ${r.x+gf},${g+p+2}`).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),h.attr("cx",r.x+zc/2).attr("cy",g).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),u.attr("x",r.x+5).attr("y",g+3).attr("transform","translate(14,14) rotate(45, "+r.x+","+n+")")}}}},"drawCommitTags"),H$e=o(t=>{switch(t.customType??t.type){case Kr.NORMAL:return"commit-normal";case Kr.REVERSE:return"commit-reverse";case Kr.HIGHLIGHT:return"commit-highlight";case Kr.MERGE:return"commit-merge";case Kr.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),W$e=o((t,e,r,n)=>{let i={x:0,y:0};if(t.parents.length>0){let a=nue(t.parents);if(a){let s=n.get(a)??i;return e==="TB"?s.y+yf:e==="BT"?(n.get(t.id)??i).y-yf:s.x+yf}}else return e==="TB"?l6:e==="BT"?(n.get(t.id)??i).y-yf:0;return 0},"calculatePosition"),q$e=o((t,e,r)=>{let n=Br==="BT"&&r?e:e+gf,i=Br==="TB"||Br==="BT"?n:Gs.get(t.branch)?.pos,a=Br==="TB"||Br==="BT"?Gs.get(t.branch)?.pos:n;if(a===void 0||i===void 0)throw new Error(`Position were undefined for commit ${t.id}`);return{x:a,y:i,posWithOffset:n}},"getCommitPosition"),tue=o((t,e,r)=>{if(!Ko)throw new Error("GitGraph config not found");let n=t.append("g").attr("class","commit-bullets"),i=t.append("g").attr("class","commit-labels"),a=Br==="TB"||Br==="BT"?l6:0,s=[...e.keys()],l=Ko?.parallelCommits??!1,u=o((f,d)=>{let p=e.get(f)?.seq,m=e.get(d)?.seq;return p!==void 0&&m!==void 0?p-m:0},"sortKeys"),h=s.sort(u);Br==="BT"&&(l&&P$e(h,e,a),h=h.reverse()),h.forEach(f=>{let d=e.get(f);if(!d)throw new Error(`Commit not found for key ${f}`);l&&(a=W$e(d,Br,a,Vs));let p=q$e(d,a,l);if(r){let m=H$e(d),g=d.customType??d.type,y=Gs.get(d.branch)?.index??0;G$e(n,d,p,m,y,g),V$e(i,d,p,a),U$e(i,d,p,a)}Br==="TB"||Br==="BT"?Vs.set(d.id,{x:p.x,y:p.posWithOffset}):Vs.set(d.id,{x:p.posWithOffset,y:p.y}),a=Br==="BT"&&l?a+yf:a+yf+gf,a>mf&&(mf=a)})},"drawCommits"),Y$e=o((t,e,r,n,i)=>{let s=(Br==="TB"||Br==="BT"?r.xh.branch===s,"isOnBranchToGetCurve"),u=o(h=>h.seq>t.seq&&h.sequ(h)&&l(h))},"shouldRerouteArrow"),pb=o((t,e,r=0)=>{let n=t+Math.abs(t-e)/2;if(r>5)return n;if(c6.every(s=>Math.abs(s-n)>=10))return c6.push(n),n;let a=Math.abs(t-e);return pb(t,e-a/5,r+1)},"findLane"),X$e=o((t,e,r,n)=>{let i=Vs.get(e.id),a=Vs.get(r.id);if(i===void 0||a===void 0)throw new Error(`Commit positions not found for commits ${e.id} and ${r.id}`);let s=Y$e(e,r,i,a,n),l="",u="",h=0,f=0,d=Gs.get(r.branch)?.index;r.type===Kr.MERGE&&e.id!==r.parents[0]&&(d=Gs.get(e.branch)?.index);let p;if(s){l="A 10 10, 0, 0, 0,",u="A 10 10, 0, 0, 1,",h=10,f=10;let m=i.ya.x&&(l="A 20 20, 0, 0, 0,",u="A 20 20, 0, 0, 1,",h=20,f=20,r.type===Kr.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${i.x} ${a.y-h} ${u} ${i.x-f} ${a.y} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${a.x+h} ${i.y} ${l} ${a.x} ${i.y+f} L ${a.x} ${a.y}`),i.x===a.x&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`)):Br==="BT"?(i.xa.x&&(l="A 20 20, 0, 0, 0,",u="A 20 20, 0, 0, 1,",h=20,f=20,r.type===Kr.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${i.x} ${a.y+h} ${l} ${i.x-f} ${a.y} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${a.x-h} ${i.y} ${l} ${a.x} ${i.y-f} L ${a.x} ${a.y}`),i.x===a.x&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`)):(i.ya.y&&(r.type===Kr.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${a.x-h} ${i.y} ${l} ${a.x} ${i.y-f} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${i.x} ${a.y+h} ${u} ${i.x+f} ${a.y} L ${a.x} ${a.y}`),i.y===a.y&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`));if(p===void 0)throw new Error("Line definition not found");t.append("path").attr("d",p).attr("class","arrow arrow"+d%Sp)},"drawArrow"),j$e=o((t,e)=>{let r=t.append("g").attr("class","commit-arrows");[...e.keys()].forEach(n=>{let i=e.get(n);i.parents&&i.parents.length>0&&i.parents.forEach(a=>{X$e(r,e.get(a),i,e)})})},"drawArrows"),K$e=o((t,e)=>{let r=t.append("g");e.forEach((n,i)=>{let a=i%Sp,s=Gs.get(n.name)?.pos;if(s===void 0)throw new Error(`Position not found for branch ${n.name}`);let l=r.append("line");l.attr("x1",0),l.attr("y1",s),l.attr("x2",mf),l.attr("y2",s),l.attr("class","branch branch"+a),Br==="TB"?(l.attr("y1",l6),l.attr("x1",s),l.attr("y2",mf),l.attr("x2",s)):Br==="BT"&&(l.attr("y1",mf),l.attr("x1",s),l.attr("y2",l6),l.attr("x2",s)),c6.push(s);let u=n.name,h=rue(u),f=r.insert("rect"),p=r.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+a);p.node().appendChild(h);let m=h.getBBox();f.attr("class","branchLabelBkg label"+a).attr("rx",4).attr("ry",4).attr("x",-m.width-4-(Ko?.rotateCommitLabel===!0?30:0)).attr("y",-m.height/2+8).attr("width",m.width+18).attr("height",m.height+4),p.attr("transform","translate("+(-m.width-14-(Ko?.rotateCommitLabel===!0?30:0))+", "+(s-m.height/2-1)+")"),Br==="TB"?(f.attr("x",s-m.width/2-10).attr("y",0),p.attr("transform","translate("+(s-m.width/2-5)+", 0)")):Br==="BT"?(f.attr("x",s-m.width/2-10).attr("y",mf),p.attr("transform","translate("+(s-m.width/2-5)+", "+mf+")")):f.attr("transform","translate(-19, "+(s-m.height/2)+")")})},"drawBranches"),Q$e=o(function(t,e,r,n,i){return Gs.set(t,{pos:e,index:r}),e+=50+(i?40:0)+(Br==="TB"||Br==="BT"?n.width/2:0),e},"setBranchPosition"),Z$e=o(function(t,e,r,n){if(I$e(),Y.debug("in gitgraph renderer",t+` +`,"id:",e,r),!Ko)throw new Error("GitGraph config not found");let i=Ko.rotateCommitLabel??!1,a=n.db;db=a.getCommits();let s=a.getBranchesAsObjArray();Br=a.getDirection();let l=Ge(`[id="${e}"]`),u=0;s.forEach((h,f)=>{let d=rue(h.name),p=l.append("g"),m=p.insert("g").attr("class","branchLabel"),g=m.insert("g").attr("class","label branch-label");g.node()?.appendChild(d);let y=d.getBBox();u=Q$e(h.name,u,f,y,i),g.remove(),m.remove(),p.remove()}),tue(l,db,!1),Ko.showBranches&&K$e(l,s),j$e(l,db),tue(l,db,!0),Gt.insertTitle(l,"gitTitleText",Ko.titleTopMargin??0,a.getDiagramTitle()),oA(void 0,l,Ko.diagramPadding,Ko.useMaxWidth)},"draw"),iue={draw:Z$e}});var J$e,sue,oue=N(()=>{"use strict";J$e=o(t=>` + .commit-id, + .commit-msg, + .branch-label { + fill: lightgrey; + color: lightgrey; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + ${[0,1,2,3,4,5,6,7].map(e=>` + .branch-label${e} { fill: ${t["gitBranchLabel"+e]}; } + .commit${e} { stroke: ${t["git"+e]}; fill: ${t["git"+e]}; } + .commit-highlight${e} { stroke: ${t["gitInv"+e]}; fill: ${t["gitInv"+e]}; } + .label${e} { fill: ${t["git"+e]}; } + .arrow${e} { stroke: ${t["git"+e]}; } + `).join(` +`)} + + .branch { + stroke-width: 1; + stroke: ${t.lineColor}; + stroke-dasharray: 2; + } + .commit-label { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelColor};} + .commit-label-bkg { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelBackground}; opacity: 0.5; } + .tag-label { font-size: ${t.tagLabelFontSize}; fill: ${t.tagLabelColor};} + .tag-label-bkg { fill: ${t.tagLabelBackground}; stroke: ${t.tagLabelBorder}; } + .tag-hole { fill: ${t.textColor}; } + + .commit-merge { + stroke: ${t.primaryColor}; + fill: ${t.primaryColor}; + } + .commit-reverse { + stroke: ${t.primaryColor}; + fill: ${t.primaryColor}; + stroke-width: 3; + } + .commit-highlight-outer { + } + .commit-highlight-inner { + stroke: ${t.primaryColor}; + fill: ${t.primaryColor}; + } + + .arrow { stroke-width: 8; stroke-linecap: round; fill: none} + .gitTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; + } +`,"getStyles"),sue=J$e});var lue={};hr(lue,{diagram:()=>eze});var eze,cue=N(()=>{"use strict";eue();GI();aue();oue();eze={parser:Jce,db:o6,renderer:iue,styles:sue}});var VI,fue,due=N(()=>{"use strict";VI=function(){var t=o(function(L,R,O,M){for(O=O||{},M=L.length;M--;O[L[M]]=R);return O},"o"),e=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],r=[1,26],n=[1,27],i=[1,28],a=[1,29],s=[1,30],l=[1,31],u=[1,32],h=[1,33],f=[1,34],d=[1,9],p=[1,10],m=[1,11],g=[1,12],y=[1,13],v=[1,14],x=[1,15],b=[1,16],w=[1,19],C=[1,20],T=[1,21],E=[1,22],A=[1,23],S=[1,25],_=[1,35],I={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:o(function(R,O,M,B,F,P,z){var $=P.length-1;switch(F){case 1:return P[$-1];case 2:this.$=[];break;case 3:P[$-1].push(P[$]),this.$=P[$-1];break;case 4:case 5:this.$=P[$];break;case 6:case 7:this.$=[];break;case 8:B.setWeekday("monday");break;case 9:B.setWeekday("tuesday");break;case 10:B.setWeekday("wednesday");break;case 11:B.setWeekday("thursday");break;case 12:B.setWeekday("friday");break;case 13:B.setWeekday("saturday");break;case 14:B.setWeekday("sunday");break;case 15:B.setWeekend("friday");break;case 16:B.setWeekend("saturday");break;case 17:B.setDateFormat(P[$].substr(11)),this.$=P[$].substr(11);break;case 18:B.enableInclusiveEndDates(),this.$=P[$].substr(18);break;case 19:B.TopAxis(),this.$=P[$].substr(8);break;case 20:B.setAxisFormat(P[$].substr(11)),this.$=P[$].substr(11);break;case 21:B.setTickInterval(P[$].substr(13)),this.$=P[$].substr(13);break;case 22:B.setExcludes(P[$].substr(9)),this.$=P[$].substr(9);break;case 23:B.setIncludes(P[$].substr(9)),this.$=P[$].substr(9);break;case 24:B.setTodayMarker(P[$].substr(12)),this.$=P[$].substr(12);break;case 27:B.setDiagramTitle(P[$].substr(6)),this.$=P[$].substr(6);break;case 28:this.$=P[$].trim(),B.setAccTitle(this.$);break;case 29:case 30:this.$=P[$].trim(),B.setAccDescription(this.$);break;case 31:B.addSection(P[$].substr(8)),this.$=P[$].substr(8);break;case 33:B.addTask(P[$-1],P[$]),this.$="task";break;case 34:this.$=P[$-1],B.setClickEvent(P[$-1],P[$],null);break;case 35:this.$=P[$-2],B.setClickEvent(P[$-2],P[$-1],P[$]);break;case 36:this.$=P[$-2],B.setClickEvent(P[$-2],P[$-1],null),B.setLink(P[$-2],P[$]);break;case 37:this.$=P[$-3],B.setClickEvent(P[$-3],P[$-2],P[$-1]),B.setLink(P[$-3],P[$]);break;case 38:this.$=P[$-2],B.setClickEvent(P[$-2],P[$],null),B.setLink(P[$-2],P[$-1]);break;case 39:this.$=P[$-3],B.setClickEvent(P[$-3],P[$-1],P[$]),B.setLink(P[$-3],P[$-2]);break;case 40:this.$=P[$-1],B.setLink(P[$-1],P[$]);break;case 41:case 47:this.$=P[$-1]+" "+P[$];break;case 42:case 43:case 45:this.$=P[$-2]+" "+P[$-1]+" "+P[$];break;case 44:case 46:this.$=P[$-3]+" "+P[$-2]+" "+P[$-1]+" "+P[$];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:f,22:d,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:w,31:C,33:T,35:E,36:A,37:24,38:S,40:_},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:36,11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:f,22:d,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:w,31:C,33:T,35:E,36:A,37:24,38:S,40:_},t(e,[2,5]),t(e,[2,6]),t(e,[2,17]),t(e,[2,18]),t(e,[2,19]),t(e,[2,20]),t(e,[2,21]),t(e,[2,22]),t(e,[2,23]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),t(e,[2,27]),{32:[1,37]},{34:[1,38]},t(e,[2,30]),t(e,[2,31]),t(e,[2,32]),{39:[1,39]},t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),{41:[1,40],43:[1,41]},t(e,[2,4]),t(e,[2,28]),t(e,[2,29]),t(e,[2,33]),t(e,[2,34],{42:[1,42],43:[1,43]}),t(e,[2,40],{41:[1,44]}),t(e,[2,35],{43:[1,45]}),t(e,[2,36]),t(e,[2,38],{42:[1,46]}),t(e,[2,37]),t(e,[2,39])],defaultActions:{},parseError:o(function(R,O){if(O.recoverable)this.trace(R);else{var M=new Error(R);throw M.hash=O,M}},"parseError"),parse:o(function(R){var O=this,M=[0],B=[],F=[null],P=[],z=this.table,$="",H=0,Q=0,j=0,ie=2,ne=1,le=P.slice.call(arguments,1),he=Object.create(this.lexer),K={yy:{}};for(var X in this.yy)Object.prototype.hasOwnProperty.call(this.yy,X)&&(K.yy[X]=this.yy[X]);he.setInput(R,K.yy),K.yy.lexer=he,K.yy.parser=this,typeof he.yylloc>"u"&&(he.yylloc={});var te=he.yylloc;P.push(te);var J=he.options&&he.options.ranges;typeof K.yy.parseError=="function"?this.parseError=K.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function se(W){M.length=M.length-2*W,F.length=F.length-W,P.length=P.length-W}o(se,"popStack");function ue(){var W;return W=B.pop()||he.lex()||ne,typeof W!="number"&&(W instanceof Array&&(B=W,W=B.pop()),W=O.symbols_[W]||W),W}o(ue,"lex");for(var Z,Se,ce,ae,Oe,ge,ze={},He,$e,Re,Ie;;){if(ce=M[M.length-1],this.defaultActions[ce]?ae=this.defaultActions[ce]:((Z===null||typeof Z>"u")&&(Z=ue()),ae=z[ce]&&z[ce][Z]),typeof ae>"u"||!ae.length||!ae[0]){var be="";Ie=[];for(He in z[ce])this.terminals_[He]&&He>ie&&Ie.push("'"+this.terminals_[He]+"'");he.showPosition?be="Parse error on line "+(H+1)+`: +`+he.showPosition()+` +Expecting `+Ie.join(", ")+", got '"+(this.terminals_[Z]||Z)+"'":be="Parse error on line "+(H+1)+": Unexpected "+(Z==ne?"end of input":"'"+(this.terminals_[Z]||Z)+"'"),this.parseError(be,{text:he.match,token:this.terminals_[Z]||Z,line:he.yylineno,loc:te,expected:Ie})}if(ae[0]instanceof Array&&ae.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ce+", token: "+Z);switch(ae[0]){case 1:M.push(Z),F.push(he.yytext),P.push(he.yylloc),M.push(ae[1]),Z=null,Se?(Z=Se,Se=null):(Q=he.yyleng,$=he.yytext,H=he.yylineno,te=he.yylloc,j>0&&j--);break;case 2:if($e=this.productions_[ae[1]][1],ze.$=F[F.length-$e],ze._$={first_line:P[P.length-($e||1)].first_line,last_line:P[P.length-1].last_line,first_column:P[P.length-($e||1)].first_column,last_column:P[P.length-1].last_column},J&&(ze._$.range=[P[P.length-($e||1)].range[0],P[P.length-1].range[1]]),ge=this.performAction.apply(ze,[$,Q,H,K.yy,ae[1],F,P].concat(le)),typeof ge<"u")return ge;$e&&(M=M.slice(0,-1*$e*2),F=F.slice(0,-1*$e),P=P.slice(0,-1*$e)),M.push(this.productions_[ae[1]][0]),F.push(ze.$),P.push(ze._$),Re=z[M[M.length-2]][M[M.length-1]],M.push(Re);break;case 3:return!0}}return!0},"parse")},D=function(){var L={EOF:1,parseError:o(function(O,M){if(this.yy.parser)this.yy.parser.parseError(O,M);else throw new Error(O)},"parseError"),setInput:o(function(R,O){return this.yy=O||this.yy||{},this._input=R,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},"setInput"),input:o(function(){var R=this._input[0];this.yytext+=R,this.yyleng++,this.offset++,this.match+=R,this.matched+=R;var O=R.match(/(?:\r\n?|\n).*/g);return O?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),R},"input"),unput:o(function(R){var O=R.length,M=R.split(/(?:\r\n?|\n)/g);this._input=R+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-O),this.offset-=O;var B=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),M.length-1&&(this.yylineno-=M.length-1);var F=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:M?(M.length===B.length?this.yylloc.first_column:0)+B[B.length-M.length].length-M[0].length:this.yylloc.first_column-O},this.options.ranges&&(this.yylloc.range=[F[0],F[0]+this.yyleng-O]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(R){this.unput(this.match.slice(R))},"less"),pastInput:o(function(){var R=this.matched.substr(0,this.matched.length-this.match.length);return(R.length>20?"...":"")+R.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var R=this.match;return R.length<20&&(R+=this._input.substr(0,20-R.length)),(R.substr(0,20)+(R.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var R=this.pastInput(),O=new Array(R.length+1).join("-");return R+this.upcomingInput()+` +`+O+"^"},"showPosition"),test_match:o(function(R,O){var M,B,F;if(this.options.backtrack_lexer&&(F={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&&(F.yylloc.range=this.yylloc.range.slice(0))),B=R[0].match(/(?:\r\n?|\n).*/g),B&&(this.yylineno+=B.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:B?B[B.length-1].length-B[B.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+R[0].length},this.yytext+=R[0],this.match+=R[0],this.matches=R,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(R[0].length),this.matched+=R[0],M=this.performAction.call(this,this.yy,this,O,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),M)return M;if(this._backtrack){for(var P in F)this[P]=F[P];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var R,O,M,B;this._more||(this.yytext="",this.match="");for(var F=this._currentRules(),P=0;PO[0].length)){if(O=M,B=P,this.options.backtrack_lexer){if(R=this.test_match(M,F[P]),R!==!1)return R;if(this._backtrack){O=!1;continue}else return!1}else if(!this.options.flex)break}return O?(R=this.test_match(O,F[B]),R!==!1?R:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var O=this.next();return O||this.lex()},"lex"),begin:o(function(O){this.conditionStack.push(O)},"begin"),popState:o(function(){var O=this.conditionStack.length-1;return O>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(O){return O=this.conditionStack.length-1-Math.abs(O||0),O>=0?this.conditionStack[O]:"INITIAL"},"topState"),pushState:o(function(O){this.begin(O)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(O,M,B,F){var P=F;switch(B){case 0:return this.begin("open_directive"),"open_directive";break;case 1:return this.begin("acc_title"),31;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),33;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:this.begin("href");break;case 15:this.popState();break;case 16:return 43;case 17:this.begin("callbackname");break;case 18:this.popState();break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 21:this.popState();break;case 22:return 42;case 23:this.begin("click");break;case 24:this.popState();break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,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],inclusive:!0}}};return L}();I.lexer=D;function k(){this.yy={}}return o(k,"Parser"),k.prototype=I,I.Parser=k,new k}();VI.parser=VI;fue=VI});var pue=Mi((UI,HI)=>{"use strict";(function(t,e){typeof UI=="object"&&typeof HI<"u"?HI.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_isoWeek=e()})(UI,function(){"use strict";var t="day";return function(e,r,n){var i=o(function(l){return l.add(4-l.isoWeekday(),t)},"a"),a=r.prototype;a.isoWeekYear=function(){return i(this).year()},a.isoWeek=function(l){if(!this.$utils().u(l))return this.add(7*(l-this.isoWeek()),t);var u,h,f,d,p=i(this),m=(u=this.isoWeekYear(),h=this.$u,f=(h?n.utc:n)().year(u).startOf("year"),d=4-f.isoWeekday(),f.isoWeekday()>4&&(d+=7),f.add(d,t));return p.diff(m,"week")+1},a.isoWeekday=function(l){return this.$utils().u(l)?this.day()||7:this.day(this.day()%7?l:l-7)};var s=a.startOf;a.startOf=function(l,u){var h=this.$utils(),f=!!h.u(u)||u;return h.p(l)==="isoweek"?f?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):s.bind(this)(l,u)}}})});var mue=Mi((WI,qI)=>{"use strict";(function(t,e){typeof WI=="object"&&typeof qI<"u"?qI.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_customParseFormat=e()})(WI,function(){"use strict";var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,r=/\d/,n=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,s={},l=o(function(g){return(g=+g)+(g>68?1900:2e3)},"a"),u=o(function(g){return function(y){this[g]=+y}},"f"),h=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=function(y){if(!y||y==="Z")return 0;var v=y.match(/([+-]|\d\d)/g),x=60*v[1]+(+v[2]||0);return x===0?0:v[0]==="+"?-x:x}(g)}],f=o(function(g){var y=s[g];return y&&(y.indexOf?y:y.s.concat(y.f))},"u"),d=o(function(g,y){var v,x=s.meridiem;if(x){for(var b=1;b<=24;b+=1)if(g.indexOf(x(b,0,y))>-1){v=b>12;break}}else v=g===(y?"pm":"PM");return v},"d"),p={A:[a,function(g){this.afternoon=d(g,!1)}],a:[a,function(g){this.afternoon=d(g,!0)}],Q:[r,function(g){this.month=3*(g-1)+1}],S:[r,function(g){this.milliseconds=100*+g}],SS:[n,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[i,u("seconds")],ss:[i,u("seconds")],m:[i,u("minutes")],mm:[i,u("minutes")],H:[i,u("hours")],h:[i,u("hours")],HH:[i,u("hours")],hh:[i,u("hours")],D:[i,u("day")],DD:[n,u("day")],Do:[a,function(g){var y=s.ordinal,v=g.match(/\d+/);if(this.day=v[0],y)for(var x=1;x<=31;x+=1)y(x).replace(/\[|\]/g,"")===g&&(this.day=x)}],w:[i,u("week")],ww:[n,u("week")],M:[i,u("month")],MM:[n,u("month")],MMM:[a,function(g){var y=f("months"),v=(f("monthsShort")||y.map(function(x){return x.slice(0,3)})).indexOf(g)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(g){var y=f("months").indexOf(g)+1;if(y<1)throw new Error;this.month=y%12||y}],Y:[/[+-]?\d+/,u("year")],YY:[n,function(g){this.year=l(g)}],YYYY:[/\d{4}/,u("year")],Z:h,ZZ:h};function m(g){var y,v;y=g,v=s&&s.formats;for(var x=(g=y.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(S,_,I){var D=I&&I.toUpperCase();return _||v[I]||t[I]||v[D].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(k,L,R){return L||R.slice(1)})})).match(e),b=x.length,w=0;w-1)return new Date((M==="X"?1e3:1)*O);var P=m(M)(O),z=P.year,$=P.month,H=P.day,Q=P.hours,j=P.minutes,ie=P.seconds,ne=P.milliseconds,le=P.zone,he=P.week,K=new Date,X=H||(z||$?1:K.getDate()),te=z||K.getFullYear(),J=0;z&&!$||(J=$>0?$-1:K.getMonth());var se,ue=Q||0,Z=j||0,Se=ie||0,ce=ne||0;return le?new Date(Date.UTC(te,J,X,ue,Z,Se,ce+60*le.offset*1e3)):B?new Date(Date.UTC(te,J,X,ue,Z,Se,ce)):(se=new Date(te,J,X,ue,Z,Se,ce),he&&(se=F(se).week(he).toDate()),se)}catch{return new Date("")}}(C,A,T,v),this.init(),D&&D!==!0&&(this.$L=this.locale(D).$L),I&&C!=this.format(A)&&(this.$d=new Date("")),s={}}else if(A instanceof Array)for(var k=A.length,L=1;L<=k;L+=1){E[1]=A[L-1];var R=v.apply(this,E);if(R.isValid()){this.$d=R.$d,this.$L=R.$L,this.init();break}L===k&&(this.$d=new Date(""))}else b.call(this,w)}}})});var gue=Mi((YI,XI)=>{"use strict";(function(t,e){typeof YI=="object"&&typeof XI<"u"?XI.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_advancedFormat=e()})(YI,function(){"use strict";return function(t,e){var r=e.prototype,n=r.format;r.format=function(i){var a=this,s=this.$locale();if(!this.isValid())return n.bind(this)(i);var l=this.$utils(),u=(i||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(h){switch(h){case"Q":return Math.ceil((a.$M+1)/3);case"Do":return s.ordinal(a.$D);case"gggg":return a.weekYear();case"GGGG":return a.isoWeekYear();case"wo":return s.ordinal(a.week(),"W");case"w":case"ww":return l.s(a.week(),h==="w"?1:2,"0");case"W":case"WW":return l.s(a.isoWeek(),h==="W"?1:2,"0");case"k":case"kk":return l.s(String(a.$H===0?24:a.$H),h==="k"?1:2,"0");case"X":return Math.floor(a.$d.getTime()/1e3);case"x":return a.$d.getTime();case"z":return"["+a.offsetName()+"]";case"zzz":return"["+a.offsetName("long")+"]";default:return h}});return n.bind(this)(u)}}})});function Nue(t,e,r){let n=!0;for(;n;)n=!1,r.forEach(function(i){let a="^\\s*"+i+"\\s*$",s=new RegExp(a);t[0].match(s)&&(e[i]=!0,t.shift(1),n=!0)})}var xue,ho,bue,wue,Tue,yue,Gc,ZI,JI,eO,mb,gb,tO,rO,f6,E1,nO,kue,iO,yb,aO,sO,d6,jI,ize,aze,sze,oze,lze,cze,uze,hze,fze,dze,pze,mze,gze,yze,vze,xze,bze,wze,Tze,kze,Eze,Sze,Cze,Eue,Aze,_ze,Dze,Sue,Lze,KI,Cue,Aue,u6,k1,Rze,Nze,QI,h6,Gi,_ue,Mze,Cp,Ize,vue,Oze,Due,Pze,Lue,Bze,Fze,Rue,Mue=N(()=>{"use strict";xue=Sa(z0(),1),ho=Sa(R4(),1),bue=Sa(pue(),1),wue=Sa(mue(),1),Tue=Sa(gue(),1);vt();zt();ir();mi();ho.default.extend(bue.default);ho.default.extend(wue.default);ho.default.extend(Tue.default);yue={friday:5,saturday:6},Gc="",ZI="",eO="",mb=[],gb=[],tO=new Map,rO=[],f6=[],E1="",nO="",kue=["active","done","crit","milestone"],iO=[],yb=!1,aO=!1,sO="sunday",d6="saturday",jI=0,ize=o(function(){rO=[],f6=[],E1="",iO=[],u6=0,QI=void 0,h6=void 0,Gi=[],Gc="",ZI="",nO="",JI=void 0,eO="",mb=[],gb=[],yb=!1,aO=!1,jI=0,tO=new Map,Ar(),sO="sunday",d6="saturday"},"clear"),aze=o(function(t){ZI=t},"setAxisFormat"),sze=o(function(){return ZI},"getAxisFormat"),oze=o(function(t){JI=t},"setTickInterval"),lze=o(function(){return JI},"getTickInterval"),cze=o(function(t){eO=t},"setTodayMarker"),uze=o(function(){return eO},"getTodayMarker"),hze=o(function(t){Gc=t},"setDateFormat"),fze=o(function(){yb=!0},"enableInclusiveEndDates"),dze=o(function(){return yb},"endDatesAreInclusive"),pze=o(function(){aO=!0},"enableTopAxis"),mze=o(function(){return aO},"topAxisEnabled"),gze=o(function(t){nO=t},"setDisplayMode"),yze=o(function(){return nO},"getDisplayMode"),vze=o(function(){return Gc},"getDateFormat"),xze=o(function(t){mb=t.toLowerCase().split(/[\s,]+/)},"setIncludes"),bze=o(function(){return mb},"getIncludes"),wze=o(function(t){gb=t.toLowerCase().split(/[\s,]+/)},"setExcludes"),Tze=o(function(){return gb},"getExcludes"),kze=o(function(){return tO},"getLinks"),Eze=o(function(t){E1=t,rO.push(t)},"addSection"),Sze=o(function(){return rO},"getSections"),Cze=o(function(){let t=vue(),e=10,r=0;for(;!t&&r[\d\w- ]+)/.exec(r);if(i!==null){let s=null;for(let u of i.groups.ids.split(" ")){let h=Cp(u);h!==void 0&&(!s||h.endTime>s.endTime)&&(s=h)}if(s)return s.endTime;let l=new Date;return l.setHours(0,0,0,0),l}let a=(0,ho.default)(r,e.trim(),!0);if(a.isValid())return a.toDate();{Y.debug("Invalid date:"+r),Y.debug("With date format:"+e.trim());let s=new Date(r);if(s===void 0||isNaN(s.getTime())||s.getFullYear()<-1e4||s.getFullYear()>1e4)throw new Error("Invalid date:"+r);return s}},"getStartDate"),Cue=o(function(t){let e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return e!==null?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},"parseDuration"),Aue=o(function(t,e,r,n=!1){r=r.trim();let a=/^until\s+(?[\d\w- ]+)/.exec(r);if(a!==null){let f=null;for(let p of a.groups.ids.split(" ")){let m=Cp(p);m!==void 0&&(!f||m.startTime{window.open(r,"_self")}),tO.set(n,r))}),Due(t,"clickable")},"setLink"),Due=o(function(t,e){t.split(",").forEach(function(r){let n=Cp(r);n!==void 0&&n.classes.push(e)})},"setClass"),Pze=o(function(t,e,r){if(me().securityLevel!=="loose"||e===void 0)return;let n=[];if(typeof r=="string"){n=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let a=0;a{Gt.runFunc(e,...n)})},"setClickFun"),Lue=o(function(t,e){iO.push(function(){let r=document.querySelector(`[id="${t}"]`);r!==null&&r.addEventListener("click",function(){e()})},function(){let r=document.querySelector(`[id="${t}-text"]`);r!==null&&r.addEventListener("click",function(){e()})})},"pushFun"),Bze=o(function(t,e,r){t.split(",").forEach(function(n){Pze(n,e,r)}),Due(t,"clickable")},"setClickEvent"),Fze=o(function(t){iO.forEach(function(e){e(t)})},"bindFunctions"),Rue={getConfig:o(()=>me().gantt,"getConfig"),clear:ize,setDateFormat:hze,getDateFormat:vze,enableInclusiveEndDates:fze,endDatesAreInclusive:dze,enableTopAxis:pze,topAxisEnabled:mze,setAxisFormat:aze,getAxisFormat:sze,setTickInterval:oze,getTickInterval:lze,setTodayMarker:cze,getTodayMarker:uze,setAccTitle:Lr,getAccTitle:Rr,setDiagramTitle:$r,getDiagramTitle:Ir,setDisplayMode:gze,getDisplayMode:yze,setAccDescription:Nr,getAccDescription:Mr,addSection:Eze,getSections:Sze,getTasks:Cze,addTask:Mze,findTaskById:Cp,addTaskOrg:Ize,setIncludes:xze,getIncludes:bze,setExcludes:wze,getExcludes:Tze,setClickEvent:Bze,setLink:Oze,getLinks:kze,bindFunctions:Fze,parseDuration:Cue,isInvalidDate:Eue,setWeekday:Aze,getWeekday:_ze,setWeekend:Dze};o(Nue,"getTaskTags")});var p6,$ze,Iue,zze,Yu,Gze,Oue,Pue=N(()=>{"use strict";p6=Sa(R4(),1);vt();dr();gr();zt();Ei();$ze=o(function(){Y.debug("Something is calling, setConf, remove the call")},"setConf"),Iue={monday:Ch,tuesday:T5,wednesday:k5,thursday:oc,friday:E5,saturday:S5,sunday:yl},zze=o((t,e)=>{let r=[...t].map(()=>-1/0),n=[...t].sort((a,s)=>a.startTime-s.startTime||a.order-s.order),i=0;for(let a of n)for(let s=0;s=r[s]){r[s]=a.endTime,a.order=s+e,s>i&&(i=s);break}return i},"getMaxIntersections"),Gze=o(function(t,e,r,n){let i=me().gantt,a=me().securityLevel,s;a==="sandbox"&&(s=Ge("#i"+e));let l=a==="sandbox"?Ge(s.nodes()[0].contentDocument.body):Ge("body"),u=a==="sandbox"?s.nodes()[0].contentDocument:document,h=u.getElementById(e);Yu=h.parentElement.offsetWidth,Yu===void 0&&(Yu=1200),i.useWidth!==void 0&&(Yu=i.useWidth);let f=n.db.getTasks(),d=[];for(let S of f)d.push(S.type);d=A(d);let p={},m=2*i.topPadding;if(n.db.getDisplayMode()==="compact"||i.displayMode==="compact"){let S={};for(let I of f)S[I.section]===void 0?S[I.section]=[I]:S[I.section].push(I);let _=0;for(let I of Object.keys(S)){let D=zze(S[I],_)+1;_+=D,m+=D*(i.barHeight+i.barGap),p[I]=D}}else{m+=f.length*(i.barHeight+i.barGap);for(let S of d)p[S]=f.filter(_=>_.type===S).length}h.setAttribute("viewBox","0 0 "+Yu+" "+m);let g=l.select(`[id="${e}"]`),y=_5().domain([M3(f,function(S){return S.startTime}),N3(f,function(S){return S.endTime})]).rangeRound([0,Yu-i.leftPadding-i.rightPadding]);function v(S,_){let I=S.startTime,D=_.startTime,k=0;return I>D?k=1:Iz.order))].map(z=>S.find($=>$.order===z));g.append("g").selectAll("rect").data(M).enter().append("rect").attr("x",0).attr("y",function(z,$){return $=z.order,$*_+I-2}).attr("width",function(){return R-i.rightPadding/2}).attr("height",_).attr("class",function(z){for(let[$,H]of d.entries())if(z.type===H)return"section section"+$%i.numberSectionStyles;return"section section0"});let B=g.append("g").selectAll("rect").data(S).enter(),F=n.db.getLinks();if(B.append("rect").attr("id",function(z){return z.id}).attr("rx",3).attr("ry",3).attr("x",function(z){return z.milestone?y(z.startTime)+D+.5*(y(z.endTime)-y(z.startTime))-.5*k:y(z.startTime)+D}).attr("y",function(z,$){return $=z.order,$*_+I}).attr("width",function(z){return z.milestone?k:y(z.renderEndTime||z.endTime)-y(z.startTime)}).attr("height",k).attr("transform-origin",function(z,$){return $=z.order,(y(z.startTime)+D+.5*(y(z.endTime)-y(z.startTime))).toString()+"px "+($*_+I+.5*k).toString()+"px"}).attr("class",function(z){let $="task",H="";z.classes.length>0&&(H=z.classes.join(" "));let Q=0;for(let[ie,ne]of d.entries())z.type===ne&&(Q=ie%i.numberSectionStyles);let j="";return z.active?z.crit?j+=" activeCrit":j=" active":z.done?z.crit?j=" doneCrit":j=" done":z.crit&&(j+=" crit"),j.length===0&&(j=" task"),z.milestone&&(j=" milestone "+j),j+=Q,j+=" "+H,$+j}),B.append("text").attr("id",function(z){return z.id+"-text"}).text(function(z){return z.task}).attr("font-size",i.fontSize).attr("x",function(z){let $=y(z.startTime),H=y(z.renderEndTime||z.endTime);z.milestone&&($+=.5*(y(z.endTime)-y(z.startTime))-.5*k),z.milestone&&(H=$+k);let Q=this.getBBox().width;return Q>H-$?H+Q+1.5*i.leftPadding>R?$+D-5:H+D+5:(H-$)/2+$+D}).attr("y",function(z,$){return $=z.order,$*_+i.barHeight/2+(i.fontSize/2-2)+I}).attr("text-height",k).attr("class",function(z){let $=y(z.startTime),H=y(z.endTime);z.milestone&&(H=$+k);let Q=this.getBBox().width,j="";z.classes.length>0&&(j=z.classes.join(" "));let ie=0;for(let[le,he]of d.entries())z.type===he&&(ie=le%i.numberSectionStyles);let ne="";return z.active&&(z.crit?ne="activeCritText"+ie:ne="activeText"+ie),z.done?z.crit?ne=ne+" doneCritText"+ie:ne=ne+" doneText"+ie:z.crit&&(ne=ne+" critText"+ie),z.milestone&&(ne+=" milestoneText"),Q>H-$?H+Q+1.5*i.leftPadding>R?j+" taskTextOutsideLeft taskTextOutside"+ie+" "+ne:j+" taskTextOutsideRight taskTextOutside"+ie+" "+ne+" width-"+Q:j+" taskText taskText"+ie+" "+ne+" width-"+Q}),me().securityLevel==="sandbox"){let z;z=Ge("#i"+e);let $=z.nodes()[0].contentDocument;B.filter(function(H){return F.has(H.id)}).each(function(H){var Q=$.querySelector("#"+H.id),j=$.querySelector("#"+H.id+"-text");let ie=Q.parentNode;var ne=$.createElement("a");ne.setAttribute("xlink:href",F.get(H.id)),ne.setAttribute("target","_top"),ie.appendChild(ne),ne.appendChild(Q),ne.appendChild(j)})}}o(b,"drawRects");function w(S,_,I,D,k,L,R,O){if(R.length===0&&O.length===0)return;let M,B;for(let{startTime:Q,endTime:j}of L)(M===void 0||QB)&&(B=j);if(!M||!B)return;if((0,p6.default)(B).diff((0,p6.default)(M),"year")>5){Y.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}let F=n.db.getDateFormat(),P=[],z=null,$=(0,p6.default)(M);for(;$.valueOf()<=B;)n.db.isInvalidDate($,F,R,O)?z?z.end=$:z={start:$,end:$}:z&&(P.push(z),z=null),$=$.add(1,"d");g.append("g").selectAll("rect").data(P).enter().append("rect").attr("id",function(Q){return"exclude-"+Q.start.format("YYYY-MM-DD")}).attr("x",function(Q){return y(Q.start)+I}).attr("y",i.gridLineStartPadding).attr("width",function(Q){let j=Q.end.add(1,"day");return y(j)-y(Q.start)}).attr("height",k-_-i.gridLineStartPadding).attr("transform-origin",function(Q,j){return(y(Q.start)+I+.5*(y(Q.end)-y(Q.start))).toString()+"px "+(j*S+.5*k).toString()+"px"}).attr("class","exclude-range")}o(w,"drawExcludeDays");function C(S,_,I,D){let k=bA(y).tickSize(-D+_+i.gridLineStartPadding).tickFormat(wd(n.db.getAxisFormat()||i.axisFormat||"%Y-%m-%d")),R=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(n.db.getTickInterval()||i.tickInterval);if(R!==null){let O=R[1],M=R[2],B=n.db.getWeekday()||i.weekday;switch(M){case"millisecond":k.ticks(ac.every(O));break;case"second":k.ticks(Ks.every(O));break;case"minute":k.ticks(vu.every(O));break;case"hour":k.ticks(xu.every(O));break;case"day":k.ticks(_o.every(O));break;case"week":k.ticks(Iue[B].every(O));break;case"month":k.ticks(bu.every(O));break}}if(g.append("g").attr("class","grid").attr("transform","translate("+S+", "+(D-50)+")").call(k).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),n.db.topAxisEnabled()||i.topAxis){let O=xA(y).tickSize(-D+_+i.gridLineStartPadding).tickFormat(wd(n.db.getAxisFormat()||i.axisFormat||"%Y-%m-%d"));if(R!==null){let M=R[1],B=R[2],F=n.db.getWeekday()||i.weekday;switch(B){case"millisecond":O.ticks(ac.every(M));break;case"second":O.ticks(Ks.every(M));break;case"minute":O.ticks(vu.every(M));break;case"hour":O.ticks(xu.every(M));break;case"day":O.ticks(_o.every(M));break;case"week":O.ticks(Iue[F].every(M));break;case"month":O.ticks(bu.every(M));break}}g.append("g").attr("class","grid").attr("transform","translate("+S+", "+_+")").call(O).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}o(C,"makeGrid");function T(S,_){let I=0,D=Object.keys(p).map(k=>[k,p[k]]);g.append("g").selectAll("text").data(D).enter().append(function(k){let L=k[0].split(Ze.lineBreakRegex),R=-(L.length-1)/2,O=u.createElementNS("http://www.w3.org/2000/svg","text");O.setAttribute("dy",R+"em");for(let[M,B]of L.entries()){let F=u.createElementNS("http://www.w3.org/2000/svg","tspan");F.setAttribute("alignment-baseline","central"),F.setAttribute("x","10"),M>0&&F.setAttribute("dy","1em"),F.textContent=B,O.appendChild(F)}return O}).attr("x",10).attr("y",function(k,L){if(L>0)for(let R=0;R{"use strict";Vze=o(t=>` + .mermaid-main-font { + font-family: ${t.fontFamily}; + } + + .exclude-range { + fill: ${t.excludeBkgColor}; + } + + .section { + stroke: none; + opacity: 0.2; + } + + .section0 { + fill: ${t.sectionBkgColor}; + } + + .section2 { + fill: ${t.sectionBkgColor2}; + } + + .section1, + .section3 { + fill: ${t.altSectionBkgColor}; + opacity: 0.2; + } + + .sectionTitle0 { + fill: ${t.titleColor}; + } + + .sectionTitle1 { + fill: ${t.titleColor}; + } + + .sectionTitle2 { + fill: ${t.titleColor}; + } + + .sectionTitle3 { + fill: ${t.titleColor}; + } + + .sectionTitle { + text-anchor: start; + font-family: ${t.fontFamily}; + } + + + /* Grid and axis */ + + .grid .tick { + stroke: ${t.gridColor}; + opacity: 0.8; + shape-rendering: crispEdges; + } + + .grid .tick text { + font-family: ${t.fontFamily}; + fill: ${t.textColor}; + } + + .grid path { + stroke-width: 0; + } + + + /* Today line */ + + .today { + fill: none; + stroke: ${t.todayLineColor}; + stroke-width: 2px; + } + + + /* Task styling */ + + /* Default task */ + + .task { + stroke-width: 2; + } + + .taskText { + text-anchor: middle; + font-family: ${t.fontFamily}; + } + + .taskTextOutsideRight { + fill: ${t.taskTextDarkColor}; + text-anchor: start; + font-family: ${t.fontFamily}; + } + + .taskTextOutsideLeft { + fill: ${t.taskTextDarkColor}; + text-anchor: end; + } + + + /* Special case clickable */ + + .task.clickable { + cursor: pointer; + } + + .taskText.clickable { + cursor: pointer; + fill: ${t.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideLeft.clickable { + cursor: pointer; + fill: ${t.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideRight.clickable { + cursor: pointer; + fill: ${t.taskTextClickableColor} !important; + font-weight: bold; + } + + + /* Specific task settings for the sections*/ + + .taskText0, + .taskText1, + .taskText2, + .taskText3 { + fill: ${t.taskTextColor}; + } + + .task0, + .task1, + .task2, + .task3 { + fill: ${t.taskBkgColor}; + stroke: ${t.taskBorderColor}; + } + + .taskTextOutside0, + .taskTextOutside2 + { + fill: ${t.taskTextOutsideColor}; + } + + .taskTextOutside1, + .taskTextOutside3 { + fill: ${t.taskTextOutsideColor}; + } + + + /* Active task */ + + .active0, + .active1, + .active2, + .active3 { + fill: ${t.activeTaskBkgColor}; + stroke: ${t.activeTaskBorderColor}; + } + + .activeText0, + .activeText1, + .activeText2, + .activeText3 { + fill: ${t.taskTextDarkColor} !important; + } + + + /* Completed task */ + + .done0, + .done1, + .done2, + .done3 { + stroke: ${t.doneTaskBorderColor}; + fill: ${t.doneTaskBkgColor}; + stroke-width: 2; + } + + .doneText0, + .doneText1, + .doneText2, + .doneText3 { + fill: ${t.taskTextDarkColor} !important; + } + + + /* Tasks on the critical line */ + + .crit0, + .crit1, + .crit2, + .crit3 { + stroke: ${t.critBorderColor}; + fill: ${t.critBkgColor}; + stroke-width: 2; + } + + .activeCrit0, + .activeCrit1, + .activeCrit2, + .activeCrit3 { + stroke: ${t.critBorderColor}; + fill: ${t.activeTaskBkgColor}; + stroke-width: 2; + } + + .doneCrit0, + .doneCrit1, + .doneCrit2, + .doneCrit3 { + stroke: ${t.critBorderColor}; + fill: ${t.doneTaskBkgColor}; + stroke-width: 2; + cursor: pointer; + shape-rendering: crispEdges; + } + + .milestone { + transform: rotate(45deg) scale(0.8,0.8); + } + + .milestoneText { + font-style: italic; + } + .doneCritText0, + .doneCritText1, + .doneCritText2, + .doneCritText3 { + fill: ${t.taskTextDarkColor} !important; + } + + .activeCritText0, + .activeCritText1, + .activeCritText2, + .activeCritText3 { + fill: ${t.taskTextDarkColor} !important; + } + + .titleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.titleColor||t.textColor}; + font-family: ${t.fontFamily}; + } +`,"getStyles"),Bue=Vze});var $ue={};hr($ue,{diagram:()=>Uze});var Uze,zue=N(()=>{"use strict";due();Mue();Pue();Fue();Uze={parser:fue,db:Rue,renderer:Oue,styles:Bue}});var Uue,Hue=N(()=>{"use strict";kp();vt();Uue={parse:o(async t=>{let e=await uo("info",t);Y.debug(e)},"parse")}});var vb,oO=N(()=>{vb={name:"mermaid",version:"11.6.0",description:"Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.",type:"module",module:"./dist/mermaid.core.mjs",types:"./dist/mermaid.d.ts",exports:{".":{types:"./dist/mermaid.d.ts",import:"./dist/mermaid.core.mjs",default:"./dist/mermaid.core.mjs"},"./*":"./*"},keywords:["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph","mindmap","packet diagram","c4 diagram","er diagram","pie chart","pie diagram","quadrant chart","requirement diagram","graph"],scripts:{clean:"rimraf dist",dev:"pnpm -w dev","docs:code":"typedoc src/defaultConfig.ts src/config.ts src/mermaid.ts && prettier --write ./src/docs/config/setup","docs:build":"rimraf ../../docs && pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts","docs:verify":"pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts --verify","docs:pre:vitepress":"pnpm --filter ./src/docs prefetch && rimraf src/vitepress && pnpm docs:code && tsx scripts/docs.cli.mts --vitepress && pnpm --filter ./src/vitepress install --no-frozen-lockfile --ignore-scripts","docs:build:vitepress":"pnpm docs:pre:vitepress && (cd src/vitepress && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing","docs:dev":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:dev:docker":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev:docker" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:serve":"pnpm docs:build:vitepress && vitepress serve src/vitepress","docs:spellcheck":'cspell "src/docs/**/*.md"',"docs:release-version":"tsx scripts/update-release-version.mts","docs:verify-version":"tsx scripts/update-release-version.mts --verify","types:build-config":"tsx scripts/create-types-from-json-schema.mts","types:verify-config":"tsx scripts/create-types-from-json-schema.mts --verify",checkCircle:"npx madge --circular ./src",prepublishOnly:"pnpm docs:verify-version"},repository:{type:"git",url:"https://github.com/mermaid-js/mermaid"},author:"Knut Sveidqvist",license:"MIT",standard:{ignore:["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],globals:["page"]},dependencies:{"@braintree/sanitize-url":"^7.0.4","@iconify/utils":"^2.1.33","@mermaid-js/parser":"workspace:^","@types/d3":"^7.4.3",cytoscape:"^3.29.3","cytoscape-cose-bilkent":"^4.1.0","cytoscape-fcose":"^2.2.0",d3:"^7.9.0","d3-sankey":"^0.12.3","dagre-d3-es":"7.0.11",dayjs:"^1.11.13",dompurify:"^3.2.4",katex:"^0.16.9",khroma:"^2.1.0","lodash-es":"^4.17.21",marked:"^15.0.7",roughjs:"^4.6.6",stylis:"^4.3.6","ts-dedent":"^2.2.0",uuid:"^11.1.0"},devDependencies:{"@adobe/jsonschema2md":"^8.0.2","@iconify/types":"^2.0.0","@types/cytoscape":"^3.21.9","@types/cytoscape-fcose":"^2.2.4","@types/d3-sankey":"^0.12.4","@types/d3-scale":"^4.0.9","@types/d3-scale-chromatic":"^3.1.0","@types/d3-selection":"^3.0.11","@types/d3-shape":"^3.1.7","@types/jsdom":"^21.1.7","@types/katex":"^0.16.7","@types/lodash-es":"^4.17.12","@types/micromatch":"^4.0.9","@types/stylis":"^4.2.7","@types/uuid":"^10.0.0",ajv:"^8.17.1",chokidar:"^4.0.3",concurrently:"^9.1.2","csstree-validator":"^4.0.1",globby:"^14.0.2",jison:"^0.4.18","js-base64":"^3.7.7",jsdom:"^26.0.0","json-schema-to-typescript":"^15.0.4",micromatch:"^4.0.8","path-browserify":"^1.0.1",prettier:"^3.5.2",remark:"^15.0.1","remark-frontmatter":"^5.0.0","remark-gfm":"^4.0.1",rimraf:"^6.0.1","start-server-and-test":"^2.0.10","type-fest":"^4.35.0",typedoc:"^0.27.8","typedoc-plugin-markdown":"^4.4.2",typescript:"~5.7.3","unist-util-flatmap":"^1.0.0","unist-util-visit":"^5.0.0",vitepress:"^1.0.2","vitepress-plugin-search":"1.0.4-alpha.22"},files:["dist/","README.md"],publishConfig:{access:"public"}}});var Xze,jze,Wue,que=N(()=>{"use strict";oO();Xze={version:vb.version},jze=o(()=>Xze.version,"getVersion"),Wue={getVersion:jze}});var sa,Vc=N(()=>{"use strict";dr();zt();sa=o(t=>{let{securityLevel:e}=me(),r=Ge("body");if(e==="sandbox"){let a=Ge(`#i${t}`).node()?.contentDocument??document;r=Ge(a.body)}return r.select(`#${t}`)},"selectSvgElement")});var Kze,Yue,Xue=N(()=>{"use strict";vt();Vc();Ei();Kze=o((t,e,r)=>{Y.debug(`rendering info diagram +`+t);let n=sa(e);vn(n,100,400,!0),n.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${r}`)},"draw"),Yue={draw:Kze}});var jue={};hr(jue,{diagram:()=>Qze});var Qze,Kue=N(()=>{"use strict";Hue();que();Xue();Qze={parser:Uue,db:Wue,renderer:Yue}});var Jue,lO,m6,cO,eGe,tGe,rGe,nGe,iGe,aGe,sGe,g6,uO=N(()=>{"use strict";vt();mi();Ya();Jue=or.pie,lO={sections:new Map,showData:!1,config:Jue},m6=lO.sections,cO=lO.showData,eGe=structuredClone(Jue),tGe=o(()=>structuredClone(eGe),"getConfig"),rGe=o(()=>{m6=new Map,cO=lO.showData,Ar()},"clear"),nGe=o(({label:t,value:e})=>{m6.has(t)||(m6.set(t,e),Y.debug(`added new section: ${t}, with value: ${e}`))},"addSection"),iGe=o(()=>m6,"getSections"),aGe=o(t=>{cO=t},"setShowData"),sGe=o(()=>cO,"getShowData"),g6={getConfig:tGe,clear:rGe,setDiagramTitle:$r,getDiagramTitle:Ir,setAccTitle:Lr,getAccTitle:Rr,setAccDescription:Nr,getAccDescription:Mr,addSection:nGe,getSections:iGe,setShowData:aGe,getShowData:sGe}});var oGe,ehe,the=N(()=>{"use strict";kp();vt();T1();uO();oGe=o((t,e)=>{$c(t,e),e.setShowData(t.showData),t.sections.map(e.addSection)},"populateDb"),ehe={parse:o(async t=>{let e=await uo("pie",t);Y.debug(e),oGe(e,g6)},"parse")}});var lGe,rhe,nhe=N(()=>{"use strict";lGe=o(t=>` + .pieCircle{ + stroke: ${t.pieStrokeColor}; + stroke-width : ${t.pieStrokeWidth}; + opacity : ${t.pieOpacity}; + } + .pieOuterCircle{ + stroke: ${t.pieOuterStrokeColor}; + stroke-width: ${t.pieOuterStrokeWidth}; + fill: none; + } + .pieTitleText { + text-anchor: middle; + font-size: ${t.pieTitleTextSize}; + fill: ${t.pieTitleTextColor}; + font-family: ${t.fontFamily}; + } + .slice { + font-family: ${t.fontFamily}; + fill: ${t.pieSectionTextColor}; + font-size:${t.pieSectionTextSize}; + // fill: white; + } + .legend text { + fill: ${t.pieLegendTextColor}; + font-family: ${t.fontFamily}; + font-size: ${t.pieLegendTextSize}; + } +`,"getStyles"),rhe=lGe});var cGe,uGe,ihe,ahe=N(()=>{"use strict";dr();zt();vt();Vc();Ei();ir();cGe=o(t=>{let e=[...t.entries()].map(n=>({label:n[0],value:n[1]})).sort((n,i)=>i.value-n.value);return I5().value(n=>n.value)(e)},"createPieArcs"),uGe=o((t,e,r,n)=>{Y.debug(`rendering pie chart +`+t);let i=n.db,a=me(),s=Fi(i.getConfig(),a.pie),l=40,u=18,h=4,f=450,d=f,p=sa(e),m=p.append("g");m.attr("transform","translate("+d/2+","+f/2+")");let{themeVariables:g}=a,[y]=Bo(g.pieOuterStrokeWidth);y??=2;let v=s.textPosition,x=Math.min(d,f)/2-l,b=bl().innerRadius(0).outerRadius(x),w=bl().innerRadius(x*v).outerRadius(x*v);m.append("circle").attr("cx",0).attr("cy",0).attr("r",x+y/2).attr("class","pieOuterCircle");let C=i.getSections(),T=cGe(C),E=[g.pie1,g.pie2,g.pie3,g.pie4,g.pie5,g.pie6,g.pie7,g.pie8,g.pie9,g.pie10,g.pie11,g.pie12],A=gu(E);m.selectAll("mySlices").data(T).enter().append("path").attr("d",b).attr("fill",k=>A(k.data.label)).attr("class","pieCircle");let S=0;C.forEach(k=>{S+=k}),m.selectAll("mySlices").data(T).enter().append("text").text(k=>(k.data.value/S*100).toFixed(0)+"%").attr("transform",k=>"translate("+w.centroid(k)+")").style("text-anchor","middle").attr("class","slice"),m.append("text").text(i.getDiagramTitle()).attr("x",0).attr("y",-(f-50)/2).attr("class","pieTitleText");let _=m.selectAll(".legend").data(A.domain()).enter().append("g").attr("class","legend").attr("transform",(k,L)=>{let R=u+h,O=R*A.domain().length/2,M=12*u,B=L*R-O;return"translate("+M+","+B+")"});_.append("rect").attr("width",u).attr("height",u).style("fill",A).style("stroke",A),_.data(T).append("text").attr("x",u+h).attr("y",u-h).text(k=>{let{label:L,value:R}=k.data;return i.getShowData()?`${L} [${R}]`:L});let I=Math.max(..._.selectAll("text").nodes().map(k=>k?.getBoundingClientRect().width??0)),D=d+l+u+h+I;p.attr("viewBox",`0 0 ${D} ${f}`),vn(p,f,D,s.useMaxWidth)},"draw"),ihe={draw:uGe}});var she={};hr(she,{diagram:()=>hGe});var hGe,ohe=N(()=>{"use strict";the();uO();nhe();ahe();hGe={parser:ehe,db:g6,renderer:ihe,styles:rhe}});var hO,uhe,hhe=N(()=>{"use strict";hO=function(){var t=o(function(xe,q,pe,ve){for(pe=pe||{},ve=xe.length;ve--;pe[xe[ve]]=q);return pe},"o"),e=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[1,7],s=[1,4,5,10,12,13,14,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[1,4,5,10,12,13,14,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],u=[55,56,57],h=[2,36],f=[1,37],d=[1,36],p=[1,38],m=[1,35],g=[1,43],y=[1,41],v=[1,14],x=[1,23],b=[1,18],w=[1,19],C=[1,20],T=[1,21],E=[1,22],A=[1,24],S=[1,25],_=[1,26],I=[1,27],D=[1,28],k=[1,29],L=[1,32],R=[1,33],O=[1,34],M=[1,39],B=[1,40],F=[1,42],P=[1,44],z=[1,62],$=[1,61],H=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],Q=[1,65],j=[1,66],ie=[1,67],ne=[1,68],le=[1,69],he=[1,70],K=[1,71],X=[1,72],te=[1,73],J=[1,74],se=[1,75],ue=[1,76],Z=[4,5,6,7,8,9,10,11,12,13,14,15,18],Se=[1,90],ce=[1,91],ae=[1,92],Oe=[1,99],ge=[1,93],ze=[1,96],He=[1,94],$e=[1,95],Re=[1,97],Ie=[1,98],be=[1,102],W=[10,55,56,57],de=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],re={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:o(function(q,pe,ve,Pe,_e,we,Ve){var De=we.length-1;switch(_e){case 23:this.$=we[De];break;case 24:this.$=we[De-1]+""+we[De];break;case 26:this.$=we[De-1]+we[De];break;case 27:this.$=[we[De].trim()];break;case 28:we[De-2].push(we[De].trim()),this.$=we[De-2];break;case 29:this.$=we[De-4],Pe.addClass(we[De-2],we[De]);break;case 37:this.$=[];break;case 42:this.$=we[De].trim(),Pe.setDiagramTitle(this.$);break;case 43:this.$=we[De].trim(),Pe.setAccTitle(this.$);break;case 44:case 45:this.$=we[De].trim(),Pe.setAccDescription(this.$);break;case 46:Pe.addSection(we[De].substr(8)),this.$=we[De].substr(8);break;case 47:Pe.addPoint(we[De-3],"",we[De-1],we[De],[]);break;case 48:Pe.addPoint(we[De-4],we[De-3],we[De-1],we[De],[]);break;case 49:Pe.addPoint(we[De-4],"",we[De-2],we[De-1],we[De]);break;case 50:Pe.addPoint(we[De-5],we[De-4],we[De-2],we[De-1],we[De]);break;case 51:Pe.setXAxisLeftText(we[De-2]),Pe.setXAxisRightText(we[De]);break;case 52:we[De-1].text+=" \u27F6 ",Pe.setXAxisLeftText(we[De-1]);break;case 53:Pe.setXAxisLeftText(we[De]);break;case 54:Pe.setYAxisBottomText(we[De-2]),Pe.setYAxisTopText(we[De]);break;case 55:we[De-1].text+=" \u27F6 ",Pe.setYAxisBottomText(we[De-1]);break;case 56:Pe.setYAxisBottomText(we[De]);break;case 57:Pe.setQuadrant1Text(we[De]);break;case 58:Pe.setQuadrant2Text(we[De]);break;case 59:Pe.setQuadrant3Text(we[De]);break;case 60:Pe.setQuadrant4Text(we[De]);break;case 64:this.$={text:we[De],type:"text"};break;case 65:this.$={text:we[De-1].text+""+we[De],type:we[De-1].type};break;case 66:this.$={text:we[De],type:"text"};break;case 67:this.$={text:we[De],type:"markdown"};break;case 68:this.$=we[De];break;case 69:this.$=we[De-1]+""+we[De];break}},"anonymous"),table:[{18:e,26:1,27:2,28:r,55:n,56:i,57:a},{1:[3]},{18:e,26:8,27:2,28:r,55:n,56:i,57:a},{18:e,26:9,27:2,28:r,55:n,56:i,57:a},t(s,[2,33],{29:10}),t(l,[2,61]),t(l,[2,62]),t(l,[2,63]),{1:[2,30]},{1:[2,31]},t(u,h,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:f,5:d,10:p,12:m,13:g,14:y,18:v,25:x,35:b,37:w,39:C,41:T,42:E,48:A,50:S,51:_,52:I,53:D,54:k,60:L,61:R,63:O,64:M,65:B,66:F,67:P}),t(s,[2,34]),{27:45,55:n,56:i,57:a},t(u,[2,37]),t(u,h,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:f,5:d,10:p,12:m,13:g,14:y,18:v,25:x,35:b,37:w,39:C,41:T,42:E,48:A,50:S,51:_,52:I,53:D,54:k,60:L,61:R,63:O,64:M,65:B,66:F,67:P}),t(u,[2,39]),t(u,[2,40]),t(u,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},t(u,[2,45]),t(u,[2,46]),{18:[1,50]},{4:f,5:d,10:p,12:m,13:g,14:y,43:51,58:31,60:L,61:R,63:O,64:M,65:B,66:F,67:P},{4:f,5:d,10:p,12:m,13:g,14:y,43:52,58:31,60:L,61:R,63:O,64:M,65:B,66:F,67:P},{4:f,5:d,10:p,12:m,13:g,14:y,43:53,58:31,60:L,61:R,63:O,64:M,65:B,66:F,67:P},{4:f,5:d,10:p,12:m,13:g,14:y,43:54,58:31,60:L,61:R,63:O,64:M,65:B,66:F,67:P},{4:f,5:d,10:p,12:m,13:g,14:y,43:55,58:31,60:L,61:R,63:O,64:M,65:B,66:F,67:P},{4:f,5:d,10:p,12:m,13:g,14:y,43:56,58:31,60:L,61:R,63:O,64:M,65:B,66:F,67:P},{4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,44:[1,57],47:[1,58],58:60,59:59,63:O,64:M,65:B,66:F,67:P},t(H,[2,64]),t(H,[2,66]),t(H,[2,67]),t(H,[2,70]),t(H,[2,71]),t(H,[2,72]),t(H,[2,73]),t(H,[2,74]),t(H,[2,75]),t(H,[2,76]),t(H,[2,77]),t(H,[2,78]),t(H,[2,79]),t(H,[2,80]),t(s,[2,35]),t(u,[2,38]),t(u,[2,42]),t(u,[2,43]),t(u,[2,44]),{3:64,4:Q,5:j,6:ie,7:ne,8:le,9:he,10:K,11:X,12:te,13:J,14:se,15:ue,21:63},t(u,[2,53],{59:59,58:60,4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,49:[1,77],63:O,64:M,65:B,66:F,67:P}),t(u,[2,56],{59:59,58:60,4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,49:[1,78],63:O,64:M,65:B,66:F,67:P}),t(u,[2,57],{59:59,58:60,4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:B,66:F,67:P}),t(u,[2,58],{59:59,58:60,4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:B,66:F,67:P}),t(u,[2,59],{59:59,58:60,4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:B,66:F,67:P}),t(u,[2,60],{59:59,58:60,4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:B,66:F,67:P}),{45:[1,79]},{44:[1,80]},t(H,[2,65]),t(H,[2,81]),t(H,[2,82]),t(H,[2,83]),{3:82,4:Q,5:j,6:ie,7:ne,8:le,9:he,10:K,11:X,12:te,13:J,14:se,15:ue,18:[1,81]},t(Z,[2,23]),t(Z,[2,1]),t(Z,[2,2]),t(Z,[2,3]),t(Z,[2,4]),t(Z,[2,5]),t(Z,[2,6]),t(Z,[2,7]),t(Z,[2,8]),t(Z,[2,9]),t(Z,[2,10]),t(Z,[2,11]),t(Z,[2,12]),t(u,[2,52],{58:31,43:83,4:f,5:d,10:p,12:m,13:g,14:y,60:L,61:R,63:O,64:M,65:B,66:F,67:P}),t(u,[2,55],{58:31,43:84,4:f,5:d,10:p,12:m,13:g,14:y,60:L,61:R,63:O,64:M,65:B,66:F,67:P}),{46:[1,85]},{45:[1,86]},{4:Se,5:ce,6:ae,8:Oe,11:ge,13:ze,16:89,17:He,18:$e,19:Re,20:Ie,22:88,23:87},t(Z,[2,24]),t(u,[2,51],{59:59,58:60,4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:B,66:F,67:P}),t(u,[2,54],{59:59,58:60,4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:B,66:F,67:P}),t(u,[2,47],{22:88,16:89,23:100,4:Se,5:ce,6:ae,8:Oe,11:ge,13:ze,17:He,18:$e,19:Re,20:Ie}),{46:[1,101]},t(u,[2,29],{10:be}),t(W,[2,27],{16:103,4:Se,5:ce,6:ae,8:Oe,11:ge,13:ze,17:He,18:$e,19:Re,20:Ie}),t(de,[2,25]),t(de,[2,13]),t(de,[2,14]),t(de,[2,15]),t(de,[2,16]),t(de,[2,17]),t(de,[2,18]),t(de,[2,19]),t(de,[2,20]),t(de,[2,21]),t(de,[2,22]),t(u,[2,49],{10:be}),t(u,[2,48],{22:88,16:89,23:104,4:Se,5:ce,6:ae,8:Oe,11:ge,13:ze,17:He,18:$e,19:Re,20:Ie}),{4:Se,5:ce,6:ae,8:Oe,11:ge,13:ze,16:89,17:He,18:$e,19:Re,20:Ie,22:105},t(de,[2,26]),t(u,[2,50],{10:be}),t(W,[2,28],{16:103,4:Se,5:ce,6:ae,8:Oe,11:ge,13:ze,17:He,18:$e,19:Re,20:Ie})],defaultActions:{8:[2,30],9:[2,31]},parseError:o(function(q,pe){if(pe.recoverable)this.trace(q);else{var ve=new Error(q);throw ve.hash=pe,ve}},"parseError"),parse:o(function(q){var pe=this,ve=[0],Pe=[],_e=[null],we=[],Ve=this.table,De="",qe=0,at=0,Rt=0,st=2,Ue=1,ct=we.slice.call(arguments,1),We=Object.create(this.lexer),ot={yy:{}};for(var Yt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Yt)&&(ot.yy[Yt]=this.yy[Yt]);We.setInput(q,ot.yy),ot.yy.lexer=We,ot.yy.parser=this,typeof We.yylloc>"u"&&(We.yylloc={});var bt=We.yylloc;we.push(bt);var Mt=We.options&&We.options.ranges;typeof ot.yy.parseError=="function"?this.parseError=ot.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xt(Ce){ve.length=ve.length-2*Ce,_e.length=_e.length-Ce,we.length=we.length-Ce}o(xt,"popStack");function ut(){var Ce;return Ce=Pe.pop()||We.lex()||Ue,typeof Ce!="number"&&(Ce instanceof Array&&(Pe=Ce,Ce=Pe.pop()),Ce=pe.symbols_[Ce]||Ce),Ce}o(ut,"lex");for(var Et,ft,yt,nt,dn,Tt,On={},tn,_r,Dr,Pn;;){if(yt=ve[ve.length-1],this.defaultActions[yt]?nt=this.defaultActions[yt]:((Et===null||typeof Et>"u")&&(Et=ut()),nt=Ve[yt]&&Ve[yt][Et]),typeof nt>"u"||!nt.length||!nt[0]){var At="";Pn=[];for(tn in Ve[yt])this.terminals_[tn]&&tn>st&&Pn.push("'"+this.terminals_[tn]+"'");We.showPosition?At="Parse error on line "+(qe+1)+`: +`+We.showPosition()+` +Expecting `+Pn.join(", ")+", got '"+(this.terminals_[Et]||Et)+"'":At="Parse error on line "+(qe+1)+": Unexpected "+(Et==Ue?"end of input":"'"+(this.terminals_[Et]||Et)+"'"),this.parseError(At,{text:We.match,token:this.terminals_[Et]||Et,line:We.yylineno,loc:bt,expected:Pn})}if(nt[0]instanceof Array&&nt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+yt+", token: "+Et);switch(nt[0]){case 1:ve.push(Et),_e.push(We.yytext),we.push(We.yylloc),ve.push(nt[1]),Et=null,ft?(Et=ft,ft=null):(at=We.yyleng,De=We.yytext,qe=We.yylineno,bt=We.yylloc,Rt>0&&Rt--);break;case 2:if(_r=this.productions_[nt[1]][1],On.$=_e[_e.length-_r],On._$={first_line:we[we.length-(_r||1)].first_line,last_line:we[we.length-1].last_line,first_column:we[we.length-(_r||1)].first_column,last_column:we[we.length-1].last_column},Mt&&(On._$.range=[we[we.length-(_r||1)].range[0],we[we.length-1].range[1]]),Tt=this.performAction.apply(On,[De,at,qe,ot.yy,nt[1],_e,we].concat(ct)),typeof Tt<"u")return Tt;_r&&(ve=ve.slice(0,-1*_r*2),_e=_e.slice(0,-1*_r),we=we.slice(0,-1*_r)),ve.push(this.productions_[nt[1]][0]),_e.push(On.$),we.push(On._$),Dr=Ve[ve[ve.length-2]][ve[ve.length-1]],ve.push(Dr);break;case 3:return!0}}return!0},"parse")},oe=function(){var xe={EOF:1,parseError:o(function(pe,ve){if(this.yy.parser)this.yy.parser.parseError(pe,ve);else throw new Error(pe)},"parseError"),setInput:o(function(q,pe){return this.yy=pe||this.yy||{},this._input=q,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},"setInput"),input:o(function(){var q=this._input[0];this.yytext+=q,this.yyleng++,this.offset++,this.match+=q,this.matched+=q;var pe=q.match(/(?:\r\n?|\n).*/g);return pe?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),q},"input"),unput:o(function(q){var pe=q.length,ve=q.split(/(?:\r\n?|\n)/g);this._input=q+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-pe),this.offset-=pe;var Pe=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),ve.length-1&&(this.yylineno-=ve.length-1);var _e=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:ve?(ve.length===Pe.length?this.yylloc.first_column:0)+Pe[Pe.length-ve.length].length-ve[0].length:this.yylloc.first_column-pe},this.options.ranges&&(this.yylloc.range=[_e[0],_e[0]+this.yyleng-pe]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(q){this.unput(this.match.slice(q))},"less"),pastInput:o(function(){var q=this.matched.substr(0,this.matched.length-this.match.length);return(q.length>20?"...":"")+q.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var q=this.match;return q.length<20&&(q+=this._input.substr(0,20-q.length)),(q.substr(0,20)+(q.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var q=this.pastInput(),pe=new Array(q.length+1).join("-");return q+this.upcomingInput()+` +`+pe+"^"},"showPosition"),test_match:o(function(q,pe){var ve,Pe,_e;if(this.options.backtrack_lexer&&(_e={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&&(_e.yylloc.range=this.yylloc.range.slice(0))),Pe=q[0].match(/(?:\r\n?|\n).*/g),Pe&&(this.yylineno+=Pe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Pe?Pe[Pe.length-1].length-Pe[Pe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+q[0].length},this.yytext+=q[0],this.match+=q[0],this.matches=q,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(q[0].length),this.matched+=q[0],ve=this.performAction.call(this,this.yy,this,pe,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ve)return ve;if(this._backtrack){for(var we in _e)this[we]=_e[we];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var q,pe,ve,Pe;this._more||(this.yytext="",this.match="");for(var _e=this._currentRules(),we=0;we<_e.length;we++)if(ve=this._input.match(this.rules[_e[we]]),ve&&(!pe||ve[0].length>pe[0].length)){if(pe=ve,Pe=we,this.options.backtrack_lexer){if(q=this.test_match(ve,_e[we]),q!==!1)return q;if(this._backtrack){pe=!1;continue}else return!1}else if(!this.options.flex)break}return pe?(q=this.test_match(pe,_e[Pe]),q!==!1?q:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var pe=this.next();return pe||this.lex()},"lex"),begin:o(function(pe){this.conditionStack.push(pe)},"begin"),popState:o(function(){var pe=this.conditionStack.length-1;return pe>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(pe){return pe=this.conditionStack.length-1-Math.abs(pe||0),pe>=0?this.conditionStack[pe]:"INITIAL"},"topState"),pushState:o(function(pe){this.begin(pe)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(pe,ve,Pe,_e){var we=_e;switch(Pe){case 0:break;case 1:break;case 2:return 55;case 3:break;case 4:return this.begin("title"),35;break;case 5:return this.popState(),"title_value";break;case 6:return this.begin("acc_title"),37;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),39;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 23:this.popState();break;case 24:this.begin("string");break;case 25:this.popState();break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;break;case 29:return this.begin("point_start"),44;break;case 30:return this.begin("point_x"),45;break;case 31:this.popState();break;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;break;case 34:return 28;case 35:return 4;case 36:return 11;case 37:return 64;case 38:return 10;case 39:return 65;case 40:return 65;case 41:return 14;case 42:return 13;case 43:return 67;case 44:return 66;case 45:return 12;case 46:return 8;case 47:return 5;case 48:return 18;case 49:return 56;case 50:return 63;case 51:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\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,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/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:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],inclusive:!0}}};return xe}();re.lexer=oe;function V(){this.yy={}}return o(V,"Parser"),V.prototype=re,re.Parser=V,new V}();hO.parser=hO;uhe=hO});var ms,y6,fhe=N(()=>{"use strict";dr();Ya();vt();_y();ms=oh(),y6=class{constructor(){this.classes=new Map;this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{o(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:or.quadrantChart?.chartWidth||500,chartWidth:or.quadrantChart?.chartHeight||500,titlePadding:or.quadrantChart?.titlePadding||10,titleFontSize:or.quadrantChart?.titleFontSize||20,quadrantPadding:or.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:or.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:or.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:or.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:or.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:or.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:or.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:or.quadrantChart?.pointTextPadding||5,pointLabelFontSize:or.quadrantChart?.pointLabelFontSize||12,pointRadius:or.quadrantChart?.pointRadius||5,xAxisPosition:or.quadrantChart?.xAxisPosition||"top",yAxisPosition:or.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:or.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:or.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:ms.quadrant1Fill,quadrant2Fill:ms.quadrant2Fill,quadrant3Fill:ms.quadrant3Fill,quadrant4Fill:ms.quadrant4Fill,quadrant1TextFill:ms.quadrant1TextFill,quadrant2TextFill:ms.quadrant2TextFill,quadrant3TextFill:ms.quadrant3TextFill,quadrant4TextFill:ms.quadrant4TextFill,quadrantPointFill:ms.quadrantPointFill,quadrantPointTextFill:ms.quadrantPointTextFill,quadrantXAxisTextFill:ms.quadrantXAxisTextFill,quadrantYAxisTextFill:ms.quadrantYAxisTextFill,quadrantTitleFill:ms.quadrantTitleFill,quadrantInternalBorderStrokeFill:ms.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:ms.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,Y.info("clear called")}setData(e){this.data={...this.data,...e}}addPoints(e){this.data.points=[...e,...this.data.points]}addClass(e,r){this.classes.set(e,r)}setConfig(e){Y.trace("setConfig called with: ",e),this.config={...this.config,...e}}setThemeConfig(e){Y.trace("setThemeConfig called with: ",e),this.themeConfig={...this.themeConfig,...e}}calculateSpace(e,r,n,i){let a=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,s={top:e==="top"&&r?a:0,bottom:e==="bottom"&&r?a:0},l=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,u={left:this.config.yAxisPosition==="left"&&n?l:0,right:this.config.yAxisPosition==="right"&&n?l:0},h=this.config.titleFontSize+this.config.titlePadding*2,f={top:i?h:0},d=this.config.quadrantPadding+u.left,p=this.config.quadrantPadding+s.top+f.top,m=this.config.chartWidth-this.config.quadrantPadding*2-u.left-u.right,g=this.config.chartHeight-this.config.quadrantPadding*2-s.top-s.bottom-f.top,y=m/2,v=g/2;return{xAxisSpace:s,yAxisSpace:u,titleSpace:f,quadrantSpace:{quadrantLeft:d,quadrantTop:p,quadrantWidth:m,quadrantHalfWidth:y,quadrantHeight:g,quadrantHalfHeight:v}}}getAxisLabels(e,r,n,i){let{quadrantSpace:a,titleSpace:s}=i,{quadrantHalfHeight:l,quadrantHeight:u,quadrantLeft:h,quadrantHalfWidth:f,quadrantTop:d,quadrantWidth:p}=a,m=!!this.data.xAxisRightText,g=!!this.data.yAxisTopText,y=[];return this.data.xAxisLeftText&&r&&y.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+(m?f/2:0),y:e==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+d+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&r&&y.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+f+(m?f/2:0),y:e==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+d+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&n&&y.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:d+u-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&n&&y.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:d+l-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),y}getQuadrants(e){let{quadrantSpace:r}=e,{quadrantHalfHeight:n,quadrantLeft:i,quadrantHalfWidth:a,quadrantTop:s}=r,l=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s,width:a,height:n,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:i,y:s,width:a,height:n,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:i,y:s+n,width:a,height:n,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:i+a,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant4Fill}];for(let u of l)u.text.x=u.x+u.width/2,this.data.points.length===0?(u.text.y=u.y+u.height/2,u.text.horizontalPos="middle"):(u.text.y=u.y+this.config.quadrantTextTopPadding,u.text.horizontalPos="top");return l}getQuadrantPoints(e){let{quadrantSpace:r}=e,{quadrantHeight:n,quadrantLeft:i,quadrantTop:a,quadrantWidth:s}=r,l=gl().domain([0,1]).range([i,s+i]),u=gl().domain([0,1]).range([n+a,a]);return this.data.points.map(f=>{let d=this.classes.get(f.className);return d&&(f={...d,...f}),{x:l(f.x),y:u(f.y),fill:f.color??this.themeConfig.quadrantPointFill,radius:f.radius??this.config.pointRadius,text:{text:f.text,fill:this.themeConfig.quadrantPointTextFill,x:l(f.x),y:u(f.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:f.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:f.strokeWidth??"0px"}})}getBorders(e){let r=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:n}=e,{quadrantHalfHeight:i,quadrantHeight:a,quadrantLeft:s,quadrantHalfWidth:l,quadrantTop:u,quadrantWidth:h}=n;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u,x2:s+h+r,y2:u},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+h,y1:u+r,x2:s+h,y2:u+a-r},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u+a,x2:s+h+r,y2:u+a},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:u+r,x2:s,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+l,y1:u+r,x2:s+l,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:u+i,x2:s+h-r,y2:u+i}]}getTitle(e){if(e)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(){let e=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),r=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),n=this.config.showTitle&&!!this.data.titleText,i=this.data.points.length>0?"bottom":this.config.xAxisPosition,a=this.calculateSpace(i,e,r,n);return{points:this.getQuadrantPoints(a),quadrants:this.getQuadrants(a),axisLabels:this.getAxisLabels(i,e,r,a),borderLines:this.getBorders(a),title:this.getTitle(n)}}}});function fO(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}function dhe(t){return!/^\d+$/.test(t)}function phe(t){return!/^\d+px$/.test(t)}var Ap,mhe=N(()=>{"use strict";Ap=class extends Error{static{o(this,"InvalidStyleError")}constructor(e,r,n){super(`value for ${e} ${r} is invalid, please use a valid ${n}`),this.name="InvalidStyleError"}};o(fO,"validateHexCode");o(dhe,"validateNumber");o(phe,"validateSizeInPixels")});function Xu(t){return Tr(t.trim(),pGe)}function mGe(t){ba.setData({quadrant1Text:Xu(t.text)})}function gGe(t){ba.setData({quadrant2Text:Xu(t.text)})}function yGe(t){ba.setData({quadrant3Text:Xu(t.text)})}function vGe(t){ba.setData({quadrant4Text:Xu(t.text)})}function xGe(t){ba.setData({xAxisLeftText:Xu(t.text)})}function bGe(t){ba.setData({xAxisRightText:Xu(t.text)})}function wGe(t){ba.setData({yAxisTopText:Xu(t.text)})}function TGe(t){ba.setData({yAxisBottomText:Xu(t.text)})}function dO(t){let e={};for(let r of t){let[n,i]=r.trim().split(/\s*:\s*/);if(n==="radius"){if(dhe(i))throw new Ap(n,i,"number");e.radius=parseInt(i)}else if(n==="color"){if(fO(i))throw new Ap(n,i,"hex code");e.color=i}else if(n==="stroke-color"){if(fO(i))throw new Ap(n,i,"hex code");e.strokeColor=i}else if(n==="stroke-width"){if(phe(i))throw new Ap(n,i,"number of pixels (eg. 10px)");e.strokeWidth=i}else throw new Error(`style named ${n} is not supported.`)}return e}function kGe(t,e,r,n,i){let a=dO(i);ba.addPoints([{x:r,y:n,text:Xu(t.text),className:e,...a}])}function EGe(t,e){ba.addClass(t,dO(e))}function SGe(t){ba.setConfig({chartWidth:t})}function CGe(t){ba.setConfig({chartHeight:t})}function AGe(){let t=me(),{themeVariables:e,quadrantChart:r}=t;return r&&ba.setConfig(r),ba.setThemeConfig({quadrant1Fill:e.quadrant1Fill,quadrant2Fill:e.quadrant2Fill,quadrant3Fill:e.quadrant3Fill,quadrant4Fill:e.quadrant4Fill,quadrant1TextFill:e.quadrant1TextFill,quadrant2TextFill:e.quadrant2TextFill,quadrant3TextFill:e.quadrant3TextFill,quadrant4TextFill:e.quadrant4TextFill,quadrantPointFill:e.quadrantPointFill,quadrantPointTextFill:e.quadrantPointTextFill,quadrantXAxisTextFill:e.quadrantXAxisTextFill,quadrantYAxisTextFill:e.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:e.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:e.quadrantInternalBorderStrokeFill,quadrantTitleFill:e.quadrantTitleFill}),ba.setData({titleText:Ir()}),ba.build()}var pGe,ba,_Ge,ghe,yhe=N(()=>{"use strict";zt();gr();mi();fhe();mhe();pGe=me();o(Xu,"textSanitizer");ba=new y6;o(mGe,"setQuadrant1Text");o(gGe,"setQuadrant2Text");o(yGe,"setQuadrant3Text");o(vGe,"setQuadrant4Text");o(xGe,"setXAxisLeftText");o(bGe,"setXAxisRightText");o(wGe,"setYAxisTopText");o(TGe,"setYAxisBottomText");o(dO,"parseStyles");o(kGe,"addPoint");o(EGe,"addClass");o(SGe,"setWidth");o(CGe,"setHeight");o(AGe,"getQuadrantData");_Ge=o(function(){ba.clear(),Ar()},"clear"),ghe={setWidth:SGe,setHeight:CGe,setQuadrant1Text:mGe,setQuadrant2Text:gGe,setQuadrant3Text:yGe,setQuadrant4Text:vGe,setXAxisLeftText:xGe,setXAxisRightText:bGe,setYAxisTopText:wGe,setYAxisBottomText:TGe,parseStyles:dO,addPoint:kGe,addClass:EGe,getQuadrantData:AGe,clear:_Ge,setAccTitle:Lr,getAccTitle:Rr,setDiagramTitle:$r,getDiagramTitle:Ir,getAccDescription:Mr,setAccDescription:Nr}});var DGe,vhe,xhe=N(()=>{"use strict";dr();zt();vt();Ei();DGe=o((t,e,r,n)=>{function i(S){return S==="top"?"hanging":"middle"}o(i,"getDominantBaseLine");function a(S){return S==="left"?"start":"middle"}o(a,"getTextAnchor");function s(S){return`translate(${S.x}, ${S.y}) rotate(${S.rotation||0})`}o(s,"getTransformation");let l=me();Y.debug(`Rendering quadrant chart +`+t);let u=l.securityLevel,h;u==="sandbox"&&(h=Ge("#i"+e));let d=(u==="sandbox"?Ge(h.nodes()[0].contentDocument.body):Ge("body")).select(`[id="${e}"]`),p=d.append("g").attr("class","main"),m=l.quadrantChart?.chartWidth??500,g=l.quadrantChart?.chartHeight??500;vn(d,g,m,l.quadrantChart?.useMaxWidth??!0),d.attr("viewBox","0 0 "+m+" "+g),n.db.setHeight(g),n.db.setWidth(m);let y=n.db.getQuadrantData(),v=p.append("g").attr("class","quadrants"),x=p.append("g").attr("class","border"),b=p.append("g").attr("class","data-points"),w=p.append("g").attr("class","labels"),C=p.append("g").attr("class","title");y.title&&C.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",i(y.title.horizontalPos)).attr("text-anchor",a(y.title.verticalPos)).attr("transform",s(y.title)).text(y.title.text),y.borderLines&&x.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",S=>S.x1).attr("y1",S=>S.y1).attr("x2",S=>S.x2).attr("y2",S=>S.y2).style("stroke",S=>S.strokeFill).style("stroke-width",S=>S.strokeWidth);let T=v.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");T.append("rect").attr("x",S=>S.x).attr("y",S=>S.y).attr("width",S=>S.width).attr("height",S=>S.height).attr("fill",S=>S.fill),T.append("text").attr("x",0).attr("y",0).attr("fill",S=>S.text.fill).attr("font-size",S=>S.text.fontSize).attr("dominant-baseline",S=>i(S.text.horizontalPos)).attr("text-anchor",S=>a(S.text.verticalPos)).attr("transform",S=>s(S.text)).text(S=>S.text.text),w.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(S=>S.text).attr("fill",S=>S.fill).attr("font-size",S=>S.fontSize).attr("dominant-baseline",S=>i(S.horizontalPos)).attr("text-anchor",S=>a(S.verticalPos)).attr("transform",S=>s(S));let A=b.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");A.append("circle").attr("cx",S=>S.x).attr("cy",S=>S.y).attr("r",S=>S.radius).attr("fill",S=>S.fill).attr("stroke",S=>S.strokeColor).attr("stroke-width",S=>S.strokeWidth),A.append("text").attr("x",0).attr("y",0).text(S=>S.text.text).attr("fill",S=>S.text.fill).attr("font-size",S=>S.text.fontSize).attr("dominant-baseline",S=>i(S.text.horizontalPos)).attr("text-anchor",S=>a(S.text.verticalPos)).attr("transform",S=>s(S.text))},"draw"),vhe={draw:DGe}});var bhe={};hr(bhe,{diagram:()=>LGe});var LGe,whe=N(()=>{"use strict";hhe();yhe();xhe();LGe={parser:uhe,db:ghe,renderer:vhe,styles:o(()=>"","styles")}});var pO,Ehe,She=N(()=>{"use strict";pO=function(){var t=o(function(O,M,B,F){for(B=B||{},F=O.length;F--;B[O[F]]=M);return B},"o"),e=[1,10,12,14,16,18,19,21,23],r=[2,6],n=[1,3],i=[1,5],a=[1,6],s=[1,7],l=[1,5,10,12,14,16,18,19,21,23,34,35,36],u=[1,25],h=[1,26],f=[1,28],d=[1,29],p=[1,30],m=[1,31],g=[1,32],y=[1,33],v=[1,34],x=[1,35],b=[1,36],w=[1,37],C=[1,43],T=[1,42],E=[1,47],A=[1,50],S=[1,10,12,14,16,18,19,21,23,34,35,36],_=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],I=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],D=[1,64],k={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:o(function(M,B,F,P,z,$,H){var Q=$.length-1;switch(z){case 5:P.setOrientation($[Q]);break;case 9:P.setDiagramTitle($[Q].text.trim());break;case 12:P.setLineData({text:"",type:"text"},$[Q]);break;case 13:P.setLineData($[Q-1],$[Q]);break;case 14:P.setBarData({text:"",type:"text"},$[Q]);break;case 15:P.setBarData($[Q-1],$[Q]);break;case 16:this.$=$[Q].trim(),P.setAccTitle(this.$);break;case 17:case 18:this.$=$[Q].trim(),P.setAccDescription(this.$);break;case 19:this.$=$[Q-1];break;case 20:this.$=[Number($[Q-2]),...$[Q]];break;case 21:this.$=[Number($[Q])];break;case 22:P.setXAxisTitle($[Q]);break;case 23:P.setXAxisTitle($[Q-1]);break;case 24:P.setXAxisTitle({type:"text",text:""});break;case 25:P.setXAxisBand($[Q]);break;case 26:P.setXAxisRangeData(Number($[Q-2]),Number($[Q]));break;case 27:this.$=$[Q-1];break;case 28:this.$=[$[Q-2],...$[Q]];break;case 29:this.$=[$[Q]];break;case 30:P.setYAxisTitle($[Q]);break;case 31:P.setYAxisTitle($[Q-1]);break;case 32:P.setYAxisTitle({type:"text",text:""});break;case 33:P.setYAxisRangeData(Number($[Q-2]),Number($[Q]));break;case 37:this.$={text:$[Q],type:"text"};break;case 38:this.$={text:$[Q],type:"text"};break;case 39:this.$={text:$[Q],type:"markdown"};break;case 40:this.$=$[Q];break;case 41:this.$=$[Q-1]+""+$[Q];break}},"anonymous"),table:[t(e,r,{3:1,4:2,7:4,5:n,34:i,35:a,36:s}),{1:[3]},t(e,r,{4:2,7:4,3:8,5:n,34:i,35:a,36:s}),t(e,r,{4:2,7:4,6:9,3:10,5:n,8:[1,11],34:i,35:a,36:s}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},t(l,[2,34]),t(l,[2,35]),t(l,[2,36]),{1:[2,1]},t(e,r,{4:2,7:4,3:21,5:n,34:i,35:a,36:s}),{1:[2,3]},t(l,[2,5]),t(e,[2,7],{4:22,34:i,35:a,36:s}),{11:23,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{11:39,13:38,24:C,27:T,29:40,30:41,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{11:45,15:44,27:E,33:46,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{11:49,17:48,24:A,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{11:52,17:51,24:A,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{20:[1,53]},{22:[1,54]},t(S,[2,18]),{1:[2,2]},t(S,[2,8]),t(S,[2,9]),t(_,[2,37],{40:55,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w}),t(_,[2,38]),t(_,[2,39]),t(I,[2,40]),t(I,[2,42]),t(I,[2,43]),t(I,[2,44]),t(I,[2,45]),t(I,[2,46]),t(I,[2,47]),t(I,[2,48]),t(I,[2,49]),t(I,[2,50]),t(I,[2,51]),t(S,[2,10]),t(S,[2,22],{30:41,29:56,24:C,27:T}),t(S,[2,24]),t(S,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},t(S,[2,11]),t(S,[2,30],{33:60,27:E}),t(S,[2,32]),{31:[1,61]},t(S,[2,12]),{17:62,24:A},{25:63,27:D},t(S,[2,14]),{17:65,24:A},t(S,[2,16]),t(S,[2,17]),t(I,[2,41]),t(S,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},t(S,[2,31]),{27:[1,69]},t(S,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},t(S,[2,15]),t(S,[2,26]),t(S,[2,27]),{11:59,32:72,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},t(S,[2,33]),t(S,[2,19]),{25:73,27:D},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:o(function(M,B){if(B.recoverable)this.trace(M);else{var F=new Error(M);throw F.hash=B,F}},"parseError"),parse:o(function(M){var B=this,F=[0],P=[],z=[null],$=[],H=this.table,Q="",j=0,ie=0,ne=0,le=2,he=1,K=$.slice.call(arguments,1),X=Object.create(this.lexer),te={yy:{}};for(var J in this.yy)Object.prototype.hasOwnProperty.call(this.yy,J)&&(te.yy[J]=this.yy[J]);X.setInput(M,te.yy),te.yy.lexer=X,te.yy.parser=this,typeof X.yylloc>"u"&&(X.yylloc={});var se=X.yylloc;$.push(se);var ue=X.options&&X.options.ranges;typeof te.yy.parseError=="function"?this.parseError=te.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Z(re){F.length=F.length-2*re,z.length=z.length-re,$.length=$.length-re}o(Z,"popStack");function Se(){var re;return re=P.pop()||X.lex()||he,typeof re!="number"&&(re instanceof Array&&(P=re,re=P.pop()),re=B.symbols_[re]||re),re}o(Se,"lex");for(var ce,ae,Oe,ge,ze,He,$e={},Re,Ie,be,W;;){if(Oe=F[F.length-1],this.defaultActions[Oe]?ge=this.defaultActions[Oe]:((ce===null||typeof ce>"u")&&(ce=Se()),ge=H[Oe]&&H[Oe][ce]),typeof ge>"u"||!ge.length||!ge[0]){var de="";W=[];for(Re in H[Oe])this.terminals_[Re]&&Re>le&&W.push("'"+this.terminals_[Re]+"'");X.showPosition?de="Parse error on line "+(j+1)+`: +`+X.showPosition()+` +Expecting `+W.join(", ")+", got '"+(this.terminals_[ce]||ce)+"'":de="Parse error on line "+(j+1)+": Unexpected "+(ce==he?"end of input":"'"+(this.terminals_[ce]||ce)+"'"),this.parseError(de,{text:X.match,token:this.terminals_[ce]||ce,line:X.yylineno,loc:se,expected:W})}if(ge[0]instanceof Array&&ge.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Oe+", token: "+ce);switch(ge[0]){case 1:F.push(ce),z.push(X.yytext),$.push(X.yylloc),F.push(ge[1]),ce=null,ae?(ce=ae,ae=null):(ie=X.yyleng,Q=X.yytext,j=X.yylineno,se=X.yylloc,ne>0&&ne--);break;case 2:if(Ie=this.productions_[ge[1]][1],$e.$=z[z.length-Ie],$e._$={first_line:$[$.length-(Ie||1)].first_line,last_line:$[$.length-1].last_line,first_column:$[$.length-(Ie||1)].first_column,last_column:$[$.length-1].last_column},ue&&($e._$.range=[$[$.length-(Ie||1)].range[0],$[$.length-1].range[1]]),He=this.performAction.apply($e,[Q,ie,j,te.yy,ge[1],z,$].concat(K)),typeof He<"u")return He;Ie&&(F=F.slice(0,-1*Ie*2),z=z.slice(0,-1*Ie),$=$.slice(0,-1*Ie)),F.push(this.productions_[ge[1]][0]),z.push($e.$),$.push($e._$),be=H[F[F.length-2]][F[F.length-1]],F.push(be);break;case 3:return!0}}return!0},"parse")},L=function(){var O={EOF:1,parseError:o(function(B,F){if(this.yy.parser)this.yy.parser.parseError(B,F);else throw new Error(B)},"parseError"),setInput:o(function(M,B){return this.yy=B||this.yy||{},this._input=M,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},"setInput"),input:o(function(){var M=this._input[0];this.yytext+=M,this.yyleng++,this.offset++,this.match+=M,this.matched+=M;var B=M.match(/(?:\r\n?|\n).*/g);return B?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),M},"input"),unput:o(function(M){var B=M.length,F=M.split(/(?:\r\n?|\n)/g);this._input=M+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-B),this.offset-=B;var P=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),F.length-1&&(this.yylineno-=F.length-1);var z=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:F?(F.length===P.length?this.yylloc.first_column:0)+P[P.length-F.length].length-F[0].length:this.yylloc.first_column-B},this.options.ranges&&(this.yylloc.range=[z[0],z[0]+this.yyleng-B]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(M){this.unput(this.match.slice(M))},"less"),pastInput:o(function(){var M=this.matched.substr(0,this.matched.length-this.match.length);return(M.length>20?"...":"")+M.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var M=this.match;return M.length<20&&(M+=this._input.substr(0,20-M.length)),(M.substr(0,20)+(M.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var M=this.pastInput(),B=new Array(M.length+1).join("-");return M+this.upcomingInput()+` +`+B+"^"},"showPosition"),test_match:o(function(M,B){var F,P,z;if(this.options.backtrack_lexer&&(z={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&&(z.yylloc.range=this.yylloc.range.slice(0))),P=M[0].match(/(?:\r\n?|\n).*/g),P&&(this.yylineno+=P.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:P?P[P.length-1].length-P[P.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+M[0].length},this.yytext+=M[0],this.match+=M[0],this.matches=M,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(M[0].length),this.matched+=M[0],F=this.performAction.call(this,this.yy,this,B,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),F)return F;if(this._backtrack){for(var $ in z)this[$]=z[$];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var M,B,F,P;this._more||(this.yytext="",this.match="");for(var z=this._currentRules(),$=0;$B[0].length)){if(B=F,P=$,this.options.backtrack_lexer){if(M=this.test_match(F,z[$]),M!==!1)return M;if(this._backtrack){B=!1;continue}else return!1}else if(!this.options.flex)break}return B?(M=this.test_match(B,z[P]),M!==!1?M:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var B=this.next();return B||this.lex()},"lex"),begin:o(function(B){this.conditionStack.push(B)},"begin"),popState:o(function(){var B=this.conditionStack.length-1;return B>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(B){return B=this.conditionStack.length-1-Math.abs(B||0),B>=0?this.conditionStack[B]:"INITIAL"},"topState"),pushState:o(function(B){this.begin(B)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(B,F,P,z){var $=z;switch(P){case 0:break;case 1:break;case 2:return this.popState(),34;break;case 3:return this.popState(),34;break;case 4:return 34;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.pushState("acc_descr"),21;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 8;case 16:return this.pushState("axis_data"),"X_AXIS";break;case 17:return this.pushState("axis_data"),"Y_AXIS";break;case 18:return this.pushState("axis_band_data"),24;break;case 19:return 31;case 20:return this.pushState("data"),16;break;case 21:return this.pushState("data"),18;break;case 22:return this.pushState("data_inner"),24;break;case 23:return 27;case 24:return this.popState(),26;break;case 25:this.popState();break;case 26:this.pushState("string");break;case 27:this.popState();break;case 28:return"STR";case 29:return 24;case 30:return 26;case 31:return 43;case 32:return"COLON";case 33:return 44;case 34:return 28;case 35:return 45;case 36:return 46;case 37:return 48;case 38:return 50;case 39:return 47;case 40:return 41;case 41:return 49;case 42:return 42;case 43:break;case 44:return 35;case 45:return 36}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\{)/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,20,21,22,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,23,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[27,28],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0}}};return O}();k.lexer=L;function R(){this.yy={}}return o(R,"Parser"),R.prototype=k,k.Parser=R,new R}();pO.parser=pO;Ehe=pO});function mO(t){return t.type==="bar"}function v6(t){return t.type==="band"}function S1(t){return t.type==="linear"}var x6=N(()=>{"use strict";o(mO,"isBarPlot");o(v6,"isBandAxisData");o(S1,"isLinearAxisData")});var C1,gO=N(()=>{"use strict";to();C1=class{constructor(e){this.parentGroup=e}static{o(this,"TextDimensionCalculatorWithFont")}getMaxDimension(e,r){if(!this.parentGroup)return{width:e.reduce((a,s)=>Math.max(s.length,a),0)*r,height:r};let n={width:0,height:0},i=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",r);for(let a of e){let s=sK(i,1,a),l=s?s.width:a.length*r,u=s?s.height:r;n.width=Math.max(n.width,l),n.height=Math.max(n.height,u)}return i.remove(),n}}});var A1,yO=N(()=>{"use strict";A1=class{constructor(e,r,n,i){this.axisConfig=e;this.title=r;this.textDimensionCalculator=n;this.axisThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0};this.axisPosition="left";this.showTitle=!1;this.showLabel=!1;this.showTick=!1;this.showAxisLine=!1;this.outerPadding=0;this.titleTextHeight=0;this.labelTextHeight=0;this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}static{o(this,"BaseAxis")}setRange(e){this.range=e,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=e[1]-e[0]:this.boundingRect.width=e[1]-e[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(e){this.axisPosition=e,this.setRange(this.range)}getTickDistance(){let e=this.getRange();return Math.abs(e[0]-e[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(e=>e.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(e){let r=e.height;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*e.width;this.outerPadding=Math.min(n.width/2,i);let a=n.height+this.axisConfig.labelPadding*2;this.labelTextHeight=n.height,a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=e.width,this.boundingRect.height=e.height-r}calculateSpaceIfDrawnVertical(e){let r=e.width;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*e.height;this.outerPadding=Math.min(n.height/2,i);let a=n.width+this.axisConfig.labelPadding*2;a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=e.width-r,this.boundingRect.height=e.height}calculateSpace(e){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(e):this.calculateSpaceIfDrawnHorizontally(e),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}getDrawableElementsForLeftAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${r},${this.boundingRect.y} L ${r},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(r),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){let r=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${r},${this.getScaleValue(n)} L ${r-this.axisConfig.tickLength},${this.getScaleValue(n)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),e}getDrawableElementsForBottomAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.y+this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r} L ${this.getScaleValue(n)},${r+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),e}getDrawableElementsForTopAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y;e.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(n)},${r+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),e}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}}});var b6,Che=N(()=>{"use strict";dr();vt();yO();b6=class extends A1{static{o(this,"BandAxis")}constructor(e,r,n,i,a){super(e,i,a,r),this.categories=n,this.scale=L0().domain(this.categories).range(this.getRange())}setRange(e){super.setRange(e)}recalculateScale(){this.scale=L0().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),Y.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(e){return this.scale(e)??this.getRange()[0]}}});var w6,Ahe=N(()=>{"use strict";dr();yO();w6=class extends A1{static{o(this,"LinearAxis")}constructor(e,r,n,i,a){super(e,i,a,r),this.domain=n,this.scale=gl().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){let e=[...this.domain];this.axisPosition==="left"&&e.reverse(),this.scale=gl().domain(e).range(this.getRange())}getScaleValue(e){return this.scale(e)}}});function vO(t,e,r,n){let i=new C1(n);return v6(t)?new b6(e,r,t.categories,t.title,i):new w6(e,r,[t.min,t.max],t.title,i)}var _he=N(()=>{"use strict";x6();gO();Che();Ahe();o(vO,"getAxis")});function Dhe(t,e,r,n){let i=new C1(n);return new xO(i,t,e,r)}var xO,Lhe=N(()=>{"use strict";gO();xO=class{constructor(e,r,n,i){this.textDimensionCalculator=e;this.chartConfig=r;this.chartData=n;this.chartThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{o(this,"ChartTitle")}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){let r=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),n=Math.max(r.width,e.width),i=r.height+2*this.chartConfig.titlePadding;return r.width<=n&&r.height<=i&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=n,this.boundingRect.height=i,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){let e=[];return this.showChartTitle&&e.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),e}};o(Dhe,"getChartTitleComponent")});var T6,Rhe=N(()=>{"use strict";dr();T6=class{constructor(e,r,n,i,a){this.plotData=e;this.xAxis=r;this.yAxis=n;this.orientation=i;this.plotIndex=a}static{o(this,"LinePlot")}getDrawableElement(){let e=this.plotData.data.map(n=>[this.xAxis.getScaleValue(n[0]),this.yAxis.getScaleValue(n[1])]),r;return this.orientation==="horizontal"?r=wl().y(n=>n[0]).x(n=>n[1])(e):r=wl().x(n=>n[0]).y(n=>n[1])(e),r?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:r,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}}});var k6,Nhe=N(()=>{"use strict";k6=class{constructor(e,r,n,i,a,s){this.barData=e;this.boundingRect=r;this.xAxis=n;this.yAxis=i;this.orientation=a;this.plotIndex=s}static{o(this,"BarPlot")}getDrawableElement(){let e=this.barData.data.map(a=>[this.xAxis.getScaleValue(a[0]),this.yAxis.getScaleValue(a[1])]),n=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-.05),i=n/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:e.map(a=>({x:this.boundingRect.x,y:a[0]-i,height:n,width:a[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:e.map(a=>({x:a[0]-i,y:a[1],width:n,height:this.boundingRect.y+this.boundingRect.height-a[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}});function Mhe(t,e,r){return new bO(t,e,r)}var bO,Ihe=N(()=>{"use strict";Rhe();Nhe();bO=class{constructor(e,r,n){this.chartConfig=e;this.chartData=r;this.chartThemeConfig=n;this.boundingRect={x:0,y:0,width:0,height:0}}static{o(this,"BasePlot")}setAxes(e,r){this.xAxis=e,this.yAxis=r}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){return this.boundingRect.width=e.width,this.boundingRect.height=e.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");let e=[];for(let[r,n]of this.chartData.plots.entries())switch(n.type){case"line":{let i=new T6(n,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);e.push(...i.getDrawableElement())}break;case"bar":{let i=new k6(n,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);e.push(...i.getDrawableElement())}break}return e}};o(Mhe,"getPlotComponent")});var E6,Ohe=N(()=>{"use strict";_he();Lhe();Ihe();x6();E6=class{constructor(e,r,n,i){this.chartConfig=e;this.chartData=r;this.componentStore={title:Dhe(e,r,n,i),plot:Mhe(e,r,n),xAxis:vO(r.xAxis,e.xAxis,{titleColor:n.xAxisTitleColor,labelColor:n.xAxisLabelColor,tickColor:n.xAxisTickColor,axisLineColor:n.xAxisLineColor},i),yAxis:vO(r.yAxis,e.yAxis,{titleColor:n.yAxisTitleColor,labelColor:n.yAxisLabelColor,tickColor:n.yAxisTickColor,axisLineColor:n.yAxisLineColor},i)}}static{o(this,"Orchestrator")}calculateVerticalSpace(){let e=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),s=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),l=this.componentStore.plot.calculateSpace({width:a,height:s});e-=l.width,r-=l.height,l=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),i=l.height,r-=l.height,this.componentStore.xAxis.setAxisPosition("bottom"),l=this.componentStore.xAxis.calculateSpace({width:e,height:r}),r-=l.height,this.componentStore.yAxis.setAxisPosition("left"),l=this.componentStore.yAxis.calculateSpace({width:e,height:r}),n=l.width,e-=l.width,e>0&&(a+=e,e=0),r>0&&(s+=r,r=0),this.componentStore.plot.calculateSpace({width:a,height:s}),this.componentStore.plot.setBoundingBoxXY({x:n,y:i}),this.componentStore.xAxis.setRange([n,n+a]),this.componentStore.xAxis.setBoundingBoxXY({x:n,y:i+s}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:i}),this.chartData.plots.some(u=>mO(u))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let e=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=0,s=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),l=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),u=this.componentStore.plot.calculateSpace({width:s,height:l});e-=u.width,r-=u.height,u=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),n=u.height,r-=u.height,this.componentStore.xAxis.setAxisPosition("left"),u=this.componentStore.xAxis.calculateSpace({width:e,height:r}),e-=u.width,i=u.width,this.componentStore.yAxis.setAxisPosition("top"),u=this.componentStore.yAxis.calculateSpace({width:e,height:r}),r-=u.height,a=n+u.height,e>0&&(s+=e,e=0),r>0&&(l+=r,r=0),this.componentStore.plot.calculateSpace({width:s,height:l}),this.componentStore.plot.setBoundingBoxXY({x:i,y:a}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:i,y:n}),this.componentStore.xAxis.setRange([a,a+l]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:a}),this.chartData.plots.some(h=>mO(h))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();let e=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(let r of Object.values(this.componentStore))e.push(...r.getDrawableElements());return e}}});var S6,Phe=N(()=>{"use strict";Ohe();S6=class{static{o(this,"XYChartBuilder")}static build(e,r,n,i){return new E6(e,r,n,i).getDrawableElement()}}});function Fhe(){let t=oh(),e=cr();return Fi(t.xyChart,e.themeVariables.xyChart)}function $he(){let t=cr();return Fi(or.xyChart,t.xyChart)}function zhe(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function kO(t){let e=cr();return Tr(t.trim(),e)}function IGe(t){Bhe=t}function OGe(t){t==="horizontal"?bb.chartOrientation="horizontal":bb.chartOrientation="vertical"}function PGe(t){fn.xAxis.title=kO(t.text)}function Ghe(t,e){fn.xAxis={type:"linear",title:fn.xAxis.title,min:t,max:e},C6=!0}function BGe(t){fn.xAxis={type:"band",title:fn.xAxis.title,categories:t.map(e=>kO(e.text))},C6=!0}function FGe(t){fn.yAxis.title=kO(t.text)}function $Ge(t,e){fn.yAxis={type:"linear",title:fn.yAxis.title,min:t,max:e},TO=!0}function zGe(t){let e=Math.min(...t),r=Math.max(...t),n=S1(fn.yAxis)?fn.yAxis.min:1/0,i=S1(fn.yAxis)?fn.yAxis.max:-1/0;fn.yAxis={type:"linear",title:fn.yAxis.title,min:Math.min(n,e),max:Math.max(i,r)}}function Vhe(t){let e=[];if(t.length===0)return e;if(!C6){let r=S1(fn.xAxis)?fn.xAxis.min:1/0,n=S1(fn.xAxis)?fn.xAxis.max:-1/0;Ghe(Math.min(r,1),Math.max(n,t.length))}if(TO||zGe(t),v6(fn.xAxis)&&(e=fn.xAxis.categories.map((r,n)=>[r,t[n]])),S1(fn.xAxis)){let r=fn.xAxis.min,n=fn.xAxis.max,i=(n-r)/(t.length-1),a=[];for(let s=r;s<=n;s+=i)a.push(`${s}`);e=a.map((s,l)=>[s,t[l]])}return e}function Uhe(t){return wO[t===0?0:t%wO.length]}function GGe(t,e){let r=Vhe(e);fn.plots.push({type:"line",strokeFill:Uhe(xb),strokeWidth:2,data:r}),xb++}function VGe(t,e){let r=Vhe(e);fn.plots.push({type:"bar",fill:Uhe(xb),data:r}),xb++}function UGe(){if(fn.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return fn.title=Ir(),S6.build(bb,fn,wb,Bhe)}function HGe(){return wb}function WGe(){return bb}var xb,Bhe,bb,wb,fn,wO,C6,TO,qGe,Hhe,Whe=N(()=>{"use strict";ji();Ya();_y();ir();gr();mi();Phe();x6();xb=0,bb=$he(),wb=Fhe(),fn=zhe(),wO=wb.plotColorPalette.split(",").map(t=>t.trim()),C6=!1,TO=!1;o(Fhe,"getChartDefaultThemeConfig");o($he,"getChartDefaultConfig");o(zhe,"getChartDefaultData");o(kO,"textSanitizer");o(IGe,"setTmpSVGG");o(OGe,"setOrientation");o(PGe,"setXAxisTitle");o(Ghe,"setXAxisRangeData");o(BGe,"setXAxisBand");o(FGe,"setYAxisTitle");o($Ge,"setYAxisRangeData");o(zGe,"setYAxisRangeFromPlotData");o(Vhe,"transformDataWithoutCategory");o(Uhe,"getPlotColorFromPalette");o(GGe,"setLineData");o(VGe,"setBarData");o(UGe,"getDrawableElem");o(HGe,"getChartThemeConfig");o(WGe,"getChartConfig");qGe=o(function(){Ar(),xb=0,bb=$he(),fn=zhe(),wb=Fhe(),wO=wb.plotColorPalette.split(",").map(t=>t.trim()),C6=!1,TO=!1},"clear"),Hhe={getDrawableElem:UGe,clear:qGe,setAccTitle:Lr,getAccTitle:Rr,setDiagramTitle:$r,getDiagramTitle:Ir,getAccDescription:Mr,setAccDescription:Nr,setOrientation:OGe,setXAxisTitle:PGe,setXAxisRangeData:Ghe,setXAxisBand:BGe,setYAxisTitle:FGe,setYAxisRangeData:$Ge,setLineData:GGe,setBarData:VGe,setTmpSVGG:IGe,getChartThemeConfig:HGe,getChartConfig:WGe}});var YGe,qhe,Yhe=N(()=>{"use strict";vt();Vc();Ei();YGe=o((t,e,r,n)=>{let i=n.db,a=i.getChartThemeConfig(),s=i.getChartConfig();function l(v){return v==="top"?"text-before-edge":"middle"}o(l,"getDominantBaseLine");function u(v){return v==="left"?"start":v==="right"?"end":"middle"}o(u,"getTextAnchor");function h(v){return`translate(${v.x}, ${v.y}) rotate(${v.rotation||0})`}o(h,"getTextTransformation"),Y.debug(`Rendering xychart chart +`+t);let f=sa(e),d=f.append("g").attr("class","main"),p=d.append("rect").attr("width",s.width).attr("height",s.height).attr("class","background");vn(f,s.height,s.width,!0),f.attr("viewBox",`0 0 ${s.width} ${s.height}`),p.attr("fill",a.backgroundColor),i.setTmpSVGG(f.append("g").attr("class","mermaid-tmp-group"));let m=i.getDrawableElem(),g={};function y(v){let x=d,b="";for(let[w]of v.entries()){let C=d;w>0&&g[b]&&(C=g[b]),b+=v[w],x=g[b],x||(x=g[b]=C.append("g").attr("class",v[w]))}return x}o(y,"getGroup");for(let v of m){if(v.data.length===0)continue;let x=y(v.groupTexts);switch(v.type){case"rect":x.selectAll("rect").data(v.data).enter().append("rect").attr("x",b=>b.x).attr("y",b=>b.y).attr("width",b=>b.width).attr("height",b=>b.height).attr("fill",b=>b.fill).attr("stroke",b=>b.strokeFill).attr("stroke-width",b=>b.strokeWidth);break;case"text":x.selectAll("text").data(v.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",b=>b.fill).attr("font-size",b=>b.fontSize).attr("dominant-baseline",b=>l(b.verticalPos)).attr("text-anchor",b=>u(b.horizontalPos)).attr("transform",b=>h(b)).text(b=>b.text);break;case"path":x.selectAll("path").data(v.data).enter().append("path").attr("d",b=>b.path).attr("fill",b=>b.fill?b.fill:"none").attr("stroke",b=>b.strokeFill).attr("stroke-width",b=>b.strokeWidth);break}}},"draw"),qhe={draw:YGe}});var Xhe={};hr(Xhe,{diagram:()=>XGe});var XGe,jhe=N(()=>{"use strict";She();Whe();Yhe();XGe={parser:Ehe,db:Hhe,renderer:qhe}});var EO,Zhe,Jhe=N(()=>{"use strict";EO=function(){var t=o(function(re,oe,V,xe){for(V=V||{},xe=re.length;xe--;V[re[xe]]=oe);return V},"o"),e=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],s=[1,22],l=[2,7],u=[1,26],h=[1,27],f=[1,28],d=[1,29],p=[1,33],m=[1,34],g=[1,35],y=[1,36],v=[1,37],x=[1,38],b=[1,24],w=[1,31],C=[1,32],T=[1,30],E=[1,39],A=[1,40],S=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],_=[1,61],I=[89,90],D=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],k=[27,29],L=[1,70],R=[1,71],O=[1,72],M=[1,73],B=[1,74],F=[1,75],P=[1,76],z=[1,83],$=[1,80],H=[1,84],Q=[1,85],j=[1,86],ie=[1,87],ne=[1,88],le=[1,89],he=[1,90],K=[1,91],X=[1,92],te=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],J=[63,64],se=[1,101],ue=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],Z=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],Se=[1,110],ce=[1,106],ae=[1,107],Oe=[1,108],ge=[1,109],ze=[1,111],He=[1,116],$e=[1,117],Re=[1,114],Ie=[1,115],be={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType: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:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:o(function(oe,V,xe,q,pe,ve,Pe){var _e=ve.length-1;switch(pe){case 4:this.$=ve[_e].trim(),q.setAccTitle(this.$);break;case 5:case 6:this.$=ve[_e].trim(),q.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:q.setDirection("TB");break;case 18:q.setDirection("BT");break;case 19:q.setDirection("RL");break;case 20:q.setDirection("LR");break;case 21:q.addRequirement(ve[_e-3],ve[_e-4]);break;case 22:q.addRequirement(ve[_e-5],ve[_e-6]),q.setClass([ve[_e-5]],ve[_e-3]);break;case 23:q.setNewReqId(ve[_e-2]);break;case 24:q.setNewReqText(ve[_e-2]);break;case 25:q.setNewReqRisk(ve[_e-2]);break;case 26:q.setNewReqVerifyMethod(ve[_e-2]);break;case 29:this.$=q.RequirementType.REQUIREMENT;break;case 30:this.$=q.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=q.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=q.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=q.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=q.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=q.RiskLevel.LOW_RISK;break;case 36:this.$=q.RiskLevel.MED_RISK;break;case 37:this.$=q.RiskLevel.HIGH_RISK;break;case 38:this.$=q.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=q.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=q.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=q.VerifyType.VERIFY_TEST;break;case 42:q.addElement(ve[_e-3]);break;case 43:q.addElement(ve[_e-5]),q.setClass([ve[_e-5]],ve[_e-3]);break;case 44:q.setNewElementType(ve[_e-2]);break;case 45:q.setNewElementDocRef(ve[_e-2]);break;case 48:q.addRelationship(ve[_e-2],ve[_e],ve[_e-4]);break;case 49:q.addRelationship(ve[_e-2],ve[_e-4],ve[_e]);break;case 50:this.$=q.Relationships.CONTAINS;break;case 51:this.$=q.Relationships.COPIES;break;case 52:this.$=q.Relationships.DERIVES;break;case 53:this.$=q.Relationships.SATISFIES;break;case 54:this.$=q.Relationships.VERIFIES;break;case 55:this.$=q.Relationships.REFINES;break;case 56:this.$=q.Relationships.TRACES;break;case 57:this.$=ve[_e-2],q.defineClass(ve[_e-1],ve[_e]);break;case 58:q.setClass(ve[_e-1],ve[_e]);break;case 59:q.setClass([ve[_e-2]],ve[_e]);break;case 60:case 62:this.$=[ve[_e]];break;case 61:case 63:this.$=ve[_e-2].concat([ve[_e]]);break;case 64:this.$=ve[_e-2],q.setCssStyle(ve[_e-1],ve[_e]);break;case 65:this.$=[ve[_e]];break;case 66:ve[_e-2].push(ve[_e]),this.$=ve[_e-2];break;case 68:this.$=ve[_e-1]+ve[_e];break}},"anonymous"),table:[{3:1,4:2,6:e,9:r,11:n,13:i},{1:[3]},{3:8,4:2,5:[1,7],6:e,9:r,11:n,13:i},{5:[1,9]},{10:[1,10]},{12:[1,11]},t(a,[2,6]),{3:12,4:2,6:e,9:r,11:n,13:i},{1:[2,2]},{4:17,5:s,7:13,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},t(a,[2,4]),t(a,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:s,7:42,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:43,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:44,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:45,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:46,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:47,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:48,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:49,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:50,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},t(S,[2,17]),t(S,[2,18]),t(S,[2,19]),t(S,[2,20]),{30:60,33:62,75:_,89:E,90:A},{30:63,33:62,75:_,89:E,90:A},{30:64,33:62,75:_,89:E,90:A},t(I,[2,29]),t(I,[2,30]),t(I,[2,31]),t(I,[2,32]),t(I,[2,33]),t(I,[2,34]),t(D,[2,81]),t(D,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},t(k,[2,79]),t(k,[2,80]),{27:[1,67],29:[1,68]},t(k,[2,85]),t(k,[2,86]),{62:69,65:L,66:R,67:O,68:M,69:B,70:F,71:P},{62:77,65:L,66:R,67:O,68:M,69:B,70:F,71:P},{30:78,33:62,75:_,89:E,90:A},{73:79,75:z,76:$,78:81,79:82,80:H,81:Q,82:j,83:ie,84:ne,85:le,86:he,87:K,88:X},t(te,[2,60]),t(te,[2,62]),{73:93,75:z,76:$,78:81,79:82,80:H,81:Q,82:j,83:ie,84:ne,85:le,86:he,87:K,88:X},{30:94,33:62,75:_,76:$,89:E,90:A},{5:[1,95]},{30:96,33:62,75:_,89:E,90:A},{5:[1,97]},{30:98,33:62,75:_,89:E,90:A},{63:[1,99]},t(J,[2,50]),t(J,[2,51]),t(J,[2,52]),t(J,[2,53]),t(J,[2,54]),t(J,[2,55]),t(J,[2,56]),{64:[1,100]},t(S,[2,59],{76:$}),t(S,[2,64],{76:se}),{33:103,75:[1,102],89:E,90:A},t(ue,[2,65],{79:104,75:z,80:H,81:Q,82:j,83:ie,84:ne,85:le,86:he,87:K,88:X}),t(Z,[2,67]),t(Z,[2,69]),t(Z,[2,70]),t(Z,[2,71]),t(Z,[2,72]),t(Z,[2,73]),t(Z,[2,74]),t(Z,[2,75]),t(Z,[2,76]),t(Z,[2,77]),t(Z,[2,78]),t(S,[2,57],{76:se}),t(S,[2,58],{76:$}),{5:Se,28:105,31:ce,34:ae,36:Oe,38:ge,40:ze},{27:[1,112],76:$},{5:He,40:$e,56:113,57:Re,59:Ie},{27:[1,118],76:$},{33:119,89:E,90:A},{33:120,89:E,90:A},{75:z,78:121,79:82,80:H,81:Q,82:j,83:ie,84:ne,85:le,86:he,87:K,88:X},t(te,[2,61]),t(te,[2,63]),t(Z,[2,68]),t(S,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:Se,28:126,31:ce,34:ae,36:Oe,38:ge,40:ze},t(S,[2,28]),{5:[1,127]},t(S,[2,42]),{32:[1,128]},{32:[1,129]},{5:He,40:$e,56:130,57:Re,59:Ie},t(S,[2,47]),{5:[1,131]},t(S,[2,48]),t(S,[2,49]),t(ue,[2,66],{79:104,75:z,80:H,81:Q,82:j,83:ie,84:ne,85:le,86:he,87:K,88:X}),{33:132,89:E,90:A},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},t(S,[2,27]),{5:Se,28:145,31:ce,34:ae,36:Oe,38:ge,40:ze},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},t(S,[2,46]),{5:He,40:$e,56:152,57:Re,59:Ie},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},t(S,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},t(S,[2,43]),{5:Se,28:159,31:ce,34:ae,36:Oe,38:ge,40:ze},{5:Se,28:160,31:ce,34:ae,36:Oe,38:ge,40:ze},{5:Se,28:161,31:ce,34:ae,36:Oe,38:ge,40:ze},{5:Se,28:162,31:ce,34:ae,36:Oe,38:ge,40:ze},{5:He,40:$e,56:163,57:Re,59:Ie},{5:He,40:$e,56:164,57:Re,59:Ie},t(S,[2,23]),t(S,[2,24]),t(S,[2,25]),t(S,[2,26]),t(S,[2,44]),t(S,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:o(function(oe,V){if(V.recoverable)this.trace(oe);else{var xe=new Error(oe);throw xe.hash=V,xe}},"parseError"),parse:o(function(oe){var V=this,xe=[0],q=[],pe=[null],ve=[],Pe=this.table,_e="",we=0,Ve=0,De=0,qe=2,at=1,Rt=ve.slice.call(arguments,1),st=Object.create(this.lexer),Ue={yy:{}};for(var ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ct)&&(Ue.yy[ct]=this.yy[ct]);st.setInput(oe,Ue.yy),Ue.yy.lexer=st,Ue.yy.parser=this,typeof st.yylloc>"u"&&(st.yylloc={});var We=st.yylloc;ve.push(We);var ot=st.options&&st.options.ranges;typeof Ue.yy.parseError=="function"?this.parseError=Ue.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Yt(Dr){xe.length=xe.length-2*Dr,pe.length=pe.length-Dr,ve.length=ve.length-Dr}o(Yt,"popStack");function bt(){var Dr;return Dr=q.pop()||st.lex()||at,typeof Dr!="number"&&(Dr instanceof Array&&(q=Dr,Dr=q.pop()),Dr=V.symbols_[Dr]||Dr),Dr}o(bt,"lex");for(var Mt,xt,ut,Et,ft,yt,nt={},dn,Tt,On,tn;;){if(ut=xe[xe.length-1],this.defaultActions[ut]?Et=this.defaultActions[ut]:((Mt===null||typeof Mt>"u")&&(Mt=bt()),Et=Pe[ut]&&Pe[ut][Mt]),typeof Et>"u"||!Et.length||!Et[0]){var _r="";tn=[];for(dn in Pe[ut])this.terminals_[dn]&&dn>qe&&tn.push("'"+this.terminals_[dn]+"'");st.showPosition?_r="Parse error on line "+(we+1)+`: +`+st.showPosition()+` +Expecting `+tn.join(", ")+", got '"+(this.terminals_[Mt]||Mt)+"'":_r="Parse error on line "+(we+1)+": Unexpected "+(Mt==at?"end of input":"'"+(this.terminals_[Mt]||Mt)+"'"),this.parseError(_r,{text:st.match,token:this.terminals_[Mt]||Mt,line:st.yylineno,loc:We,expected:tn})}if(Et[0]instanceof Array&&Et.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ut+", token: "+Mt);switch(Et[0]){case 1:xe.push(Mt),pe.push(st.yytext),ve.push(st.yylloc),xe.push(Et[1]),Mt=null,xt?(Mt=xt,xt=null):(Ve=st.yyleng,_e=st.yytext,we=st.yylineno,We=st.yylloc,De>0&&De--);break;case 2:if(Tt=this.productions_[Et[1]][1],nt.$=pe[pe.length-Tt],nt._$={first_line:ve[ve.length-(Tt||1)].first_line,last_line:ve[ve.length-1].last_line,first_column:ve[ve.length-(Tt||1)].first_column,last_column:ve[ve.length-1].last_column},ot&&(nt._$.range=[ve[ve.length-(Tt||1)].range[0],ve[ve.length-1].range[1]]),yt=this.performAction.apply(nt,[_e,Ve,we,Ue.yy,Et[1],pe,ve].concat(Rt)),typeof yt<"u")return yt;Tt&&(xe=xe.slice(0,-1*Tt*2),pe=pe.slice(0,-1*Tt),ve=ve.slice(0,-1*Tt)),xe.push(this.productions_[Et[1]][0]),pe.push(nt.$),ve.push(nt._$),On=Pe[xe[xe.length-2]][xe[xe.length-1]],xe.push(On);break;case 3:return!0}}return!0},"parse")},W=function(){var re={EOF:1,parseError:o(function(V,xe){if(this.yy.parser)this.yy.parser.parseError(V,xe);else throw new Error(V)},"parseError"),setInput:o(function(oe,V){return this.yy=V||this.yy||{},this._input=oe,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},"setInput"),input:o(function(){var oe=this._input[0];this.yytext+=oe,this.yyleng++,this.offset++,this.match+=oe,this.matched+=oe;var V=oe.match(/(?:\r\n?|\n).*/g);return V?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),oe},"input"),unput:o(function(oe){var V=oe.length,xe=oe.split(/(?:\r\n?|\n)/g);this._input=oe+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-V),this.offset-=V;var q=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),xe.length-1&&(this.yylineno-=xe.length-1);var pe=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:xe?(xe.length===q.length?this.yylloc.first_column:0)+q[q.length-xe.length].length-xe[0].length:this.yylloc.first_column-V},this.options.ranges&&(this.yylloc.range=[pe[0],pe[0]+this.yyleng-V]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(oe){this.unput(this.match.slice(oe))},"less"),pastInput:o(function(){var oe=this.matched.substr(0,this.matched.length-this.match.length);return(oe.length>20?"...":"")+oe.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var oe=this.match;return oe.length<20&&(oe+=this._input.substr(0,20-oe.length)),(oe.substr(0,20)+(oe.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var oe=this.pastInput(),V=new Array(oe.length+1).join("-");return oe+this.upcomingInput()+` +`+V+"^"},"showPosition"),test_match:o(function(oe,V){var xe,q,pe;if(this.options.backtrack_lexer&&(pe={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&&(pe.yylloc.range=this.yylloc.range.slice(0))),q=oe[0].match(/(?:\r\n?|\n).*/g),q&&(this.yylineno+=q.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:q?q[q.length-1].length-q[q.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+oe[0].length},this.yytext+=oe[0],this.match+=oe[0],this.matches=oe,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(oe[0].length),this.matched+=oe[0],xe=this.performAction.call(this,this.yy,this,V,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),xe)return xe;if(this._backtrack){for(var ve in pe)this[ve]=pe[ve];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var oe,V,xe,q;this._more||(this.yytext="",this.match="");for(var pe=this._currentRules(),ve=0;veV[0].length)){if(V=xe,q=ve,this.options.backtrack_lexer){if(oe=this.test_match(xe,pe[ve]),oe!==!1)return oe;if(this._backtrack){V=!1;continue}else return!1}else if(!this.options.flex)break}return V?(oe=this.test_match(V,pe[q]),oe!==!1?oe:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var V=this.next();return V||this.lex()},"lex"),begin:o(function(V){this.conditionStack.push(V)},"begin"),popState:o(function(){var V=this.conditionStack.length-1;return V>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(V){return V=this.conditionStack.length-1-Math.abs(V||0),V>=0?this.conditionStack[V]:"INITIAL"},"topState"),pushState:o(function(V){this.begin(V)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(V,xe,q,pe){var ve=pe;switch(q){case 0:return"title";case 1:return this.begin("acc_title"),9;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),11;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:break;case 14:break;case 15:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;break;case 50:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 56:break;case 57:this.begin("string");break;case 58:this.popState();break;case 59:return this.begin("style"),72;break;case 60:return this.begin("style"),74;break;case 61:return 61;case 62:return 64;case 63:return 63;case 64:this.begin("string");break;case 65:this.popState();break;case 66:return"qString";case 67:return xe.yytext=xe.yytext.trim(),89;break;case 68:return 75;case 69:return 80;case 70:return 76}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/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,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,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,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}};return re}();be.lexer=W;function de(){this.yy={}}return o(de,"Parser"),de.prototype=be,be.Parser=de,new de}();EO.parser=EO;Zhe=EO});var A6,efe=N(()=>{"use strict";zt();vt();mi();A6=class{constructor(){this.relations=[];this.latestRequirement=this.getInitialRequirement();this.requirements=new Map;this.latestElement=this.getInitialElement();this.elements=new Map;this.classes=new Map;this.direction="TB";this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"};this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"};this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"};this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"};this.setAccTitle=Lr;this.getAccTitle=Rr;this.setAccDescription=Nr;this.getAccDescription=Mr;this.setDiagramTitle=$r;this.getDiagramTitle=Ir;this.getConfig=o(()=>me().requirement,"getConfig");this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"RequirementDB")}getDirection(){return this.direction}setDirection(e){this.direction=e}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(e,r){return this.requirements.has(e)||this.requirements.set(e,{name:e,type:r,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(e)}getRequirements(){return this.requirements}setNewReqId(e){this.latestRequirement!==void 0&&(this.latestRequirement.requirementId=e)}setNewReqText(e){this.latestRequirement!==void 0&&(this.latestRequirement.text=e)}setNewReqRisk(e){this.latestRequirement!==void 0&&(this.latestRequirement.risk=e)}setNewReqVerifyMethod(e){this.latestRequirement!==void 0&&(this.latestRequirement.verifyMethod=e)}addElement(e){return this.elements.has(e)||(this.elements.set(e,{name:e,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),Y.info("Added new element: ",e)),this.resetLatestElement(),this.elements.get(e)}getElements(){return this.elements}setNewElementType(e){this.latestElement!==void 0&&(this.latestElement.type=e)}setNewElementDocRef(e){this.latestElement!==void 0&&(this.latestElement.docRef=e)}addRelationship(e,r,n){this.relations.push({type:e,src:r,dst:n})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,Ar()}setCssStyle(e,r){for(let n of e){let i=this.requirements.get(n)??this.elements.get(n);if(!r||!i)return;for(let a of r)a.includes(",")?i.cssStyles.push(...a.split(",")):i.cssStyles.push(a)}}setClass(e,r){for(let n of e){let i=this.requirements.get(n)??this.elements.get(n);if(i)for(let a of r){i.classes.push(a);let s=this.classes.get(a)?.styles;s&&i.cssStyles.push(...s)}}}defineClass(e,r){for(let n of e){let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.requirements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))}),this.elements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))})}}getClasses(){return this.classes}getData(){let e=me(),r=[],n=[];for(let i of this.requirements.values()){let a=i;a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),a.shape="requirementBox",a.look=e.look,r.push(a)}for(let i of this.elements.values()){let a=i;a.shape="requirementBox",a.look=e.look,a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),r.push(a)}for(let i of this.relations){let a=0,s=i.type===this.Relationships.CONTAINS,l={id:`${i.src}-${i.dst}-${a}`,start:this.requirements.get(i.src)?.name??this.elements.get(i.src)?.name,end:this.requirements.get(i.dst)?.name??this.elements.get(i.dst)?.name,label:`<<${i.type}>>`,classes:"relationshipLine",style:["fill:none",s?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:s?"normal":"dashed",arrowTypeStart:s?"requirement_contains":"",arrowTypeEnd:s?"":"requirement_arrow",look:e.look};n.push(l),a++}return{nodes:r,edges:n,other:{},config:e,direction:this.getDirection()}}}});var ZGe,tfe,rfe=N(()=>{"use strict";ZGe=o(t=>` + + marker { + fill: ${t.relationColor}; + stroke: ${t.relationColor}; + } + + marker.cross { + stroke: ${t.lineColor}; + } + + svg { + font-family: ${t.fontFamily}; + font-size: ${t.fontSize}; + } + + .reqBox { + fill: ${t.requirementBackground}; + fill-opacity: 1.0; + stroke: ${t.requirementBorderColor}; + stroke-width: ${t.requirementBorderSize}; + } + + .reqTitle, .reqLabel{ + fill: ${t.requirementTextColor}; + } + .reqLabelBox { + fill: ${t.relationLabelBackground}; + fill-opacity: 1.0; + } + + .req-title-line { + stroke: ${t.requirementBorderColor}; + stroke-width: ${t.requirementBorderSize}; + } + .relationshipLine { + stroke: ${t.relationColor}; + stroke-width: 1; + } + .relationshipLabel { + fill: ${t.relationLabelColor}; + } + .divider { + stroke: ${t.nodeBorder}; + stroke-width: 1; + } + .label { + font-family: ${t.fontFamily}; + color: ${t.nodeTextColor||t.textColor}; + } + .label text,span { + fill: ${t.nodeTextColor||t.textColor}; + color: ${t.nodeTextColor||t.textColor}; + } + .labelBkg { + background-color: ${t.edgeLabelBackground}; + } + +`,"getStyles"),tfe=ZGe});var SO={};hr(SO,{draw:()=>JGe});var JGe,nfe=N(()=>{"use strict";zt();vt();gm();Yd();$m();ir();JGe=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing requirement diagram (unified)",e);let{securityLevel:i,state:a,layout:s}=me(),l=n.db.getData(),u=yc(e,i);l.type=n.type,l.layoutAlgorithm=nf(s),l.nodeSpacing=a?.nodeSpacing??50,l.rankSpacing=a?.rankSpacing??50,l.markers=["requirement_contains","requirement_arrow"],l.diagramId=e,await Cc(l,u);let h=8;Gt.insertTitle(u,"requirementDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ac(u,h,"requirementDiagram",a?.useMaxWidth??!0)},"draw")});var ife={};hr(ife,{diagram:()=>eVe});var eVe,afe=N(()=>{"use strict";Jhe();efe();rfe();nfe();eVe={parser:Zhe,get db(){return new A6},renderer:SO,styles:tfe}});var CO,lfe,cfe=N(()=>{"use strict";CO=function(){var t=o(function(K,X,te,J){for(te=te||{},J=K.length;J--;te[K[J]]=X);return te},"o"),e=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,13],u=[1,14],h=[1,16],f=[1,17],d=[1,18],p=[1,24],m=[1,25],g=[1,26],y=[1,27],v=[1,28],x=[1,29],b=[1,30],w=[1,31],C=[1,32],T=[1,33],E=[1,34],A=[1,35],S=[1,36],_=[1,37],I=[1,38],D=[1,39],k=[1,41],L=[1,42],R=[1,43],O=[1,44],M=[1,45],B=[1,46],F=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,54,59,60,61,62,70],P=[4,5,16,50,52,53],z=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],$=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,54,59,60,61,62,70],H=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,54,59,60,61,62,70],Q=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,54,59,60,61,62,70],j=[68,69,70],ie=[1,122],ne={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,note:54,placement:55,text2:56,over:57,actor_pair:58,links:59,link:60,properties:61,details:62,spaceList:63,",":64,left_of:65,right_of:66,signaltype:67,"+":68,"-":69,ACTOR:70,SOLID_OPEN_ARROW:71,DOTTED_OPEN_ARROW:72,SOLID_ARROW:73,BIDIRECTIONAL_SOLID_ARROW:74,DOTTED_ARROW:75,BIDIRECTIONAL_DOTTED_ARROW:76,SOLID_CROSS:77,DOTTED_CROSS:78,SOLID_POINT:79,DOTTED_POINT:80,TXT:81,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",29:"title",30:"legacy_title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"loop",37:"rect",38:"opt",39:"alt",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",54:"note",57:"over",59:"links",60:"link",61:"properties",62:"details",64:",",65:"left_of",66:"right_of",68:"+",69:"-",70:"ACTOR",71:"SOLID_OPEN_ARROW",72:"DOTTED_OPEN_ARROW",73:"SOLID_ARROW",74:"BIDIRECTIONAL_SOLID_ARROW",75:"DOTTED_ARROW",76:"BIDIRECTIONAL_DOTTED_ARROW",77:"SOLID_CROSS",78:"DOTTED_CROSS",79:"SOLID_POINT",80:"DOTTED_POINT",81:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[63,2],[63,1],[58,3],[58,1],[55,1],[55,1],[17,5],[17,5],[17,4],[22,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[56,1]],performAction:o(function(X,te,J,se,ue,Z,Se){var ce=Z.length-1;switch(ue){case 3:return se.apply(Z[ce]),Z[ce];break;case 4:case 9:this.$=[];break;case 5:case 10:Z[ce-1].push(Z[ce]),this.$=Z[ce-1];break;case 6:case 7:case 11:case 12:this.$=Z[ce];break;case 8:case 13:this.$=[];break;case 15:Z[ce].type="createParticipant",this.$=Z[ce];break;case 16:Z[ce-1].unshift({type:"boxStart",boxData:se.parseBoxData(Z[ce-2])}),Z[ce-1].push({type:"boxEnd",boxText:Z[ce-2]}),this.$=Z[ce-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(Z[ce-2]),sequenceIndexStep:Number(Z[ce-1]),sequenceVisible:!0,signalType:se.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(Z[ce-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:se.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:se.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:se.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:se.LINETYPE.ACTIVE_START,actor:Z[ce-1].actor};break;case 23:this.$={type:"activeEnd",signalType:se.LINETYPE.ACTIVE_END,actor:Z[ce-1].actor};break;case 29:se.setDiagramTitle(Z[ce].substring(6)),this.$=Z[ce].substring(6);break;case 30:se.setDiagramTitle(Z[ce].substring(7)),this.$=Z[ce].substring(7);break;case 31:this.$=Z[ce].trim(),se.setAccTitle(this.$);break;case 32:case 33:this.$=Z[ce].trim(),se.setAccDescription(this.$);break;case 34:Z[ce-1].unshift({type:"loopStart",loopText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.LOOP_START}),Z[ce-1].push({type:"loopEnd",loopText:Z[ce-2],signalType:se.LINETYPE.LOOP_END}),this.$=Z[ce-1];break;case 35:Z[ce-1].unshift({type:"rectStart",color:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.RECT_START}),Z[ce-1].push({type:"rectEnd",color:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.RECT_END}),this.$=Z[ce-1];break;case 36:Z[ce-1].unshift({type:"optStart",optText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.OPT_START}),Z[ce-1].push({type:"optEnd",optText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.OPT_END}),this.$=Z[ce-1];break;case 37:Z[ce-1].unshift({type:"altStart",altText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.ALT_START}),Z[ce-1].push({type:"altEnd",signalType:se.LINETYPE.ALT_END}),this.$=Z[ce-1];break;case 38:Z[ce-1].unshift({type:"parStart",parText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.PAR_START}),Z[ce-1].push({type:"parEnd",signalType:se.LINETYPE.PAR_END}),this.$=Z[ce-1];break;case 39:Z[ce-1].unshift({type:"parStart",parText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.PAR_OVER_START}),Z[ce-1].push({type:"parEnd",signalType:se.LINETYPE.PAR_END}),this.$=Z[ce-1];break;case 40:Z[ce-1].unshift({type:"criticalStart",criticalText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.CRITICAL_START}),Z[ce-1].push({type:"criticalEnd",signalType:se.LINETYPE.CRITICAL_END}),this.$=Z[ce-1];break;case 41:Z[ce-1].unshift({type:"breakStart",breakText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.BREAK_START}),Z[ce-1].push({type:"breakEnd",optText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.BREAK_END}),this.$=Z[ce-1];break;case 43:this.$=Z[ce-3].concat([{type:"option",optionText:se.parseMessage(Z[ce-1]),signalType:se.LINETYPE.CRITICAL_OPTION},Z[ce]]);break;case 45:this.$=Z[ce-3].concat([{type:"and",parText:se.parseMessage(Z[ce-1]),signalType:se.LINETYPE.PAR_AND},Z[ce]]);break;case 47:this.$=Z[ce-3].concat([{type:"else",altText:se.parseMessage(Z[ce-1]),signalType:se.LINETYPE.ALT_ELSE},Z[ce]]);break;case 48:Z[ce-3].draw="participant",Z[ce-3].type="addParticipant",Z[ce-3].description=se.parseMessage(Z[ce-1]),this.$=Z[ce-3];break;case 49:Z[ce-1].draw="participant",Z[ce-1].type="addParticipant",this.$=Z[ce-1];break;case 50:Z[ce-3].draw="actor",Z[ce-3].type="addParticipant",Z[ce-3].description=se.parseMessage(Z[ce-1]),this.$=Z[ce-3];break;case 51:Z[ce-1].draw="actor",Z[ce-1].type="addParticipant",this.$=Z[ce-1];break;case 52:Z[ce-1].type="destroyParticipant",this.$=Z[ce-1];break;case 53:this.$=[Z[ce-1],{type:"addNote",placement:Z[ce-2],actor:Z[ce-1].actor,text:Z[ce]}];break;case 54:Z[ce-2]=[].concat(Z[ce-1],Z[ce-1]).slice(0,2),Z[ce-2][0]=Z[ce-2][0].actor,Z[ce-2][1]=Z[ce-2][1].actor,this.$=[Z[ce-1],{type:"addNote",placement:se.PLACEMENT.OVER,actor:Z[ce-2].slice(0,2),text:Z[ce]}];break;case 55:this.$=[Z[ce-1],{type:"addLinks",actor:Z[ce-1].actor,text:Z[ce]}];break;case 56:this.$=[Z[ce-1],{type:"addALink",actor:Z[ce-1].actor,text:Z[ce]}];break;case 57:this.$=[Z[ce-1],{type:"addProperties",actor:Z[ce-1].actor,text:Z[ce]}];break;case 58:this.$=[Z[ce-1],{type:"addDetails",actor:Z[ce-1].actor,text:Z[ce]}];break;case 61:this.$=[Z[ce-2],Z[ce]];break;case 62:this.$=Z[ce];break;case 63:this.$=se.PLACEMENT.LEFTOF;break;case 64:this.$=se.PLACEMENT.RIGHTOF;break;case 65:this.$=[Z[ce-4],Z[ce-1],{type:"addMessage",from:Z[ce-4].actor,to:Z[ce-1].actor,signalType:Z[ce-3],msg:Z[ce],activate:!0},{type:"activeStart",signalType:se.LINETYPE.ACTIVE_START,actor:Z[ce-1].actor}];break;case 66:this.$=[Z[ce-4],Z[ce-1],{type:"addMessage",from:Z[ce-4].actor,to:Z[ce-1].actor,signalType:Z[ce-3],msg:Z[ce]},{type:"activeEnd",signalType:se.LINETYPE.ACTIVE_END,actor:Z[ce-4].actor}];break;case 67:this.$=[Z[ce-3],Z[ce-1],{type:"addMessage",from:Z[ce-3].actor,to:Z[ce-1].actor,signalType:Z[ce-2],msg:Z[ce]}];break;case 68:this.$={type:"addParticipant",actor:Z[ce]};break;case 69:this.$=se.LINETYPE.SOLID_OPEN;break;case 70:this.$=se.LINETYPE.DOTTED_OPEN;break;case 71:this.$=se.LINETYPE.SOLID;break;case 72:this.$=se.LINETYPE.BIDIRECTIONAL_SOLID;break;case 73:this.$=se.LINETYPE.DOTTED;break;case 74:this.$=se.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 75:this.$=se.LINETYPE.SOLID_CROSS;break;case 76:this.$=se.LINETYPE.DOTTED_CROSS;break;case 77:this.$=se.LINETYPE.SOLID_POINT;break;case 78:this.$=se.LINETYPE.DOTTED_POINT;break;case 79:this.$=se.parseMessage(Z[ce].trim().substring(1));break}},"anonymous"),table:[{3:1,4:e,5:r,6:n},{1:[3]},{3:5,4:e,5:r,6:n},{3:6,4:e,5:r,6:n},t([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,12:12,13:l,14:u,17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},t(F,[2,5]),{9:47,12:12,13:l,14:u,17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},t(F,[2,7]),t(F,[2,8]),t(F,[2,14]),{12:48,50:_,52:I,53:D},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,70:B},{22:55,70:B},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},t(F,[2,29]),t(F,[2,30]),{32:[1,61]},{34:[1,62]},t(F,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,70:B},{22:72,70:B},{22:73,70:B},{67:74,71:[1,75],72:[1,76],73:[1,77],74:[1,78],75:[1,79],76:[1,80],77:[1,81],78:[1,82],79:[1,83],80:[1,84]},{55:85,57:[1,86],65:[1,87],66:[1,88]},{22:89,70:B},{22:90,70:B},{22:91,70:B},{22:92,70:B},t([5,51,64,71,72,73,74,75,76,77,78,79,80,81],[2,68]),t(F,[2,6]),t(F,[2,15]),t(P,[2,9],{10:93}),t(F,[2,17]),{5:[1,95],19:[1,94]},{5:[1,96]},t(F,[2,21]),{5:[1,97]},{5:[1,98]},t(F,[2,24]),t(F,[2,25]),t(F,[2,26]),t(F,[2,27]),t(F,[2,28]),t(F,[2,31]),t(F,[2,32]),t(z,i,{7:99}),t(z,i,{7:100}),t(z,i,{7:101}),t($,i,{40:102,7:103}),t(H,i,{42:104,7:105}),t(H,i,{7:105,42:106}),t(Q,i,{45:107,7:108}),t(z,i,{7:109}),{5:[1,111],51:[1,110]},{5:[1,113],51:[1,112]},{5:[1,114]},{22:117,68:[1,115],69:[1,116],70:B},t(j,[2,69]),t(j,[2,70]),t(j,[2,71]),t(j,[2,72]),t(j,[2,73]),t(j,[2,74]),t(j,[2,75]),t(j,[2,76]),t(j,[2,77]),t(j,[2,78]),{22:118,70:B},{22:120,58:119,70:B},{70:[2,63]},{70:[2,64]},{56:121,81:ie},{56:123,81:ie},{56:124,81:ie},{56:125,81:ie},{4:[1,128],5:[1,130],11:127,12:129,16:[1,126],50:_,52:I,53:D},{5:[1,131]},t(F,[2,19]),t(F,[2,20]),t(F,[2,22]),t(F,[2,23]),{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,132],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,133],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,134],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},{16:[1,135]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,46],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,49:[1,136],50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},{16:[1,137]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,44],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,48:[1,138],50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},{16:[1,139]},{16:[1,140]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,42],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,47:[1,141],50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,142],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},{15:[1,143]},t(F,[2,49]),{15:[1,144]},t(F,[2,51]),t(F,[2,52]),{22:145,70:B},{22:146,70:B},{56:147,81:ie},{56:148,81:ie},{56:149,81:ie},{64:[1,150],81:[2,62]},{5:[2,55]},{5:[2,79]},{5:[2,56]},{5:[2,57]},{5:[2,58]},t(F,[2,16]),t(P,[2,10]),{12:151,50:_,52:I,53:D},t(P,[2,12]),t(P,[2,13]),t(F,[2,18]),t(F,[2,34]),t(F,[2,35]),t(F,[2,36]),t(F,[2,37]),{15:[1,152]},t(F,[2,38]),{15:[1,153]},t(F,[2,39]),t(F,[2,40]),{15:[1,154]},t(F,[2,41]),{5:[1,155]},{5:[1,156]},{56:157,81:ie},{56:158,81:ie},{5:[2,67]},{5:[2,53]},{5:[2,54]},{22:159,70:B},t(P,[2,11]),t($,i,{7:103,40:160}),t(H,i,{7:105,42:161}),t(Q,i,{7:108,45:162}),t(F,[2,48]),t(F,[2,50]),{5:[2,65]},{5:[2,66]},{81:[2,61]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],87:[2,63],88:[2,64],121:[2,55],122:[2,79],123:[2,56],124:[2,57],125:[2,58],147:[2,67],148:[2,53],149:[2,54],157:[2,65],158:[2,66],159:[2,61],160:[2,47],161:[2,45],162:[2,43]},parseError:o(function(X,te){if(te.recoverable)this.trace(X);else{var J=new Error(X);throw J.hash=te,J}},"parseError"),parse:o(function(X){var te=this,J=[0],se=[],ue=[null],Z=[],Se=this.table,ce="",ae=0,Oe=0,ge=0,ze=2,He=1,$e=Z.slice.call(arguments,1),Re=Object.create(this.lexer),Ie={yy:{}};for(var be in this.yy)Object.prototype.hasOwnProperty.call(this.yy,be)&&(Ie.yy[be]=this.yy[be]);Re.setInput(X,Ie.yy),Ie.yy.lexer=Re,Ie.yy.parser=this,typeof Re.yylloc>"u"&&(Re.yylloc={});var W=Re.yylloc;Z.push(W);var de=Re.options&&Re.options.ranges;typeof Ie.yy.parseError=="function"?this.parseError=Ie.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function re(Rt){J.length=J.length-2*Rt,ue.length=ue.length-Rt,Z.length=Z.length-Rt}o(re,"popStack");function oe(){var Rt;return Rt=se.pop()||Re.lex()||He,typeof Rt!="number"&&(Rt instanceof Array&&(se=Rt,Rt=se.pop()),Rt=te.symbols_[Rt]||Rt),Rt}o(oe,"lex");for(var V,xe,q,pe,ve,Pe,_e={},we,Ve,De,qe;;){if(q=J[J.length-1],this.defaultActions[q]?pe=this.defaultActions[q]:((V===null||typeof V>"u")&&(V=oe()),pe=Se[q]&&Se[q][V]),typeof pe>"u"||!pe.length||!pe[0]){var at="";qe=[];for(we in Se[q])this.terminals_[we]&&we>ze&&qe.push("'"+this.terminals_[we]+"'");Re.showPosition?at="Parse error on line "+(ae+1)+`: +`+Re.showPosition()+` +Expecting `+qe.join(", ")+", got '"+(this.terminals_[V]||V)+"'":at="Parse error on line "+(ae+1)+": Unexpected "+(V==He?"end of input":"'"+(this.terminals_[V]||V)+"'"),this.parseError(at,{text:Re.match,token:this.terminals_[V]||V,line:Re.yylineno,loc:W,expected:qe})}if(pe[0]instanceof Array&&pe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+q+", token: "+V);switch(pe[0]){case 1:J.push(V),ue.push(Re.yytext),Z.push(Re.yylloc),J.push(pe[1]),V=null,xe?(V=xe,xe=null):(Oe=Re.yyleng,ce=Re.yytext,ae=Re.yylineno,W=Re.yylloc,ge>0&&ge--);break;case 2:if(Ve=this.productions_[pe[1]][1],_e.$=ue[ue.length-Ve],_e._$={first_line:Z[Z.length-(Ve||1)].first_line,last_line:Z[Z.length-1].last_line,first_column:Z[Z.length-(Ve||1)].first_column,last_column:Z[Z.length-1].last_column},de&&(_e._$.range=[Z[Z.length-(Ve||1)].range[0],Z[Z.length-1].range[1]]),Pe=this.performAction.apply(_e,[ce,Oe,ae,Ie.yy,pe[1],ue,Z].concat($e)),typeof Pe<"u")return Pe;Ve&&(J=J.slice(0,-1*Ve*2),ue=ue.slice(0,-1*Ve),Z=Z.slice(0,-1*Ve)),J.push(this.productions_[pe[1]][0]),ue.push(_e.$),Z.push(_e._$),De=Se[J[J.length-2]][J[J.length-1]],J.push(De);break;case 3:return!0}}return!0},"parse")},le=function(){var K={EOF:1,parseError:o(function(te,J){if(this.yy.parser)this.yy.parser.parseError(te,J);else throw new Error(te)},"parseError"),setInput:o(function(X,te){return this.yy=te||this.yy||{},this._input=X,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},"setInput"),input:o(function(){var X=this._input[0];this.yytext+=X,this.yyleng++,this.offset++,this.match+=X,this.matched+=X;var te=X.match(/(?:\r\n?|\n).*/g);return te?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),X},"input"),unput:o(function(X){var te=X.length,J=X.split(/(?:\r\n?|\n)/g);this._input=X+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-te),this.offset-=te;var se=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),J.length-1&&(this.yylineno-=J.length-1);var ue=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:J?(J.length===se.length?this.yylloc.first_column:0)+se[se.length-J.length].length-J[0].length:this.yylloc.first_column-te},this.options.ranges&&(this.yylloc.range=[ue[0],ue[0]+this.yyleng-te]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(X){this.unput(this.match.slice(X))},"less"),pastInput:o(function(){var X=this.matched.substr(0,this.matched.length-this.match.length);return(X.length>20?"...":"")+X.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var X=this.match;return X.length<20&&(X+=this._input.substr(0,20-X.length)),(X.substr(0,20)+(X.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var X=this.pastInput(),te=new Array(X.length+1).join("-");return X+this.upcomingInput()+` +`+te+"^"},"showPosition"),test_match:o(function(X,te){var J,se,ue;if(this.options.backtrack_lexer&&(ue={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&&(ue.yylloc.range=this.yylloc.range.slice(0))),se=X[0].match(/(?:\r\n?|\n).*/g),se&&(this.yylineno+=se.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:se?se[se.length-1].length-se[se.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+X[0].length},this.yytext+=X[0],this.match+=X[0],this.matches=X,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(X[0].length),this.matched+=X[0],J=this.performAction.call(this,this.yy,this,te,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),J)return J;if(this._backtrack){for(var Z in ue)this[Z]=ue[Z];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var X,te,J,se;this._more||(this.yytext="",this.match="");for(var ue=this._currentRules(),Z=0;Zte[0].length)){if(te=J,se=Z,this.options.backtrack_lexer){if(X=this.test_match(J,ue[Z]),X!==!1)return X;if(this._backtrack){te=!1;continue}else return!1}else if(!this.options.flex)break}return te?(X=this.test_match(te,ue[se]),X!==!1?X:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var te=this.next();return te||this.lex()},"lex"),begin:o(function(te){this.conditionStack.push(te)},"begin"),popState:o(function(){var te=this.conditionStack.length-1;return te>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(te){return te=this.conditionStack.length-1-Math.abs(te||0),te>=0?this.conditionStack[te]:"INITIAL"},"topState"),pushState:o(function(te){this.begin(te)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(te,J,se,ue){var Z=ue;switch(se){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 19;case 7:return this.begin("LINE"),14;break;case 8:return this.begin("ID"),50;break;case 9:return this.begin("ID"),52;break;case 10:return 13;case 11:return this.begin("ID"),53;break;case 12:return J.yytext=J.yytext.trim(),this.begin("ALIAS"),70;break;case 13:return this.popState(),this.popState(),this.begin("LINE"),51;break;case 14:return this.popState(),this.popState(),5;break;case 15:return this.begin("LINE"),36;break;case 16:return this.begin("LINE"),37;break;case 17:return this.begin("LINE"),38;break;case 18:return this.begin("LINE"),39;break;case 19:return this.begin("LINE"),49;break;case 20:return this.begin("LINE"),41;break;case 21:return this.begin("LINE"),43;break;case 22:return this.begin("LINE"),48;break;case 23:return this.begin("LINE"),44;break;case 24:return this.begin("LINE"),47;break;case 25:return this.begin("LINE"),46;break;case 26:return this.popState(),15;break;case 27:return 16;case 28:return 65;case 29:return 66;case 30:return 59;case 31:return 60;case 32:return 61;case 33:return 62;case 34:return 57;case 35:return 54;case 36:return this.begin("ID"),21;break;case 37:return this.begin("ID"),23;break;case 38:return 29;case 39:return 30;case 40:return this.begin("acc_title"),31;break;case 41:return this.popState(),"acc_title_value";break;case 42:return this.begin("acc_descr"),33;break;case 43:return this.popState(),"acc_descr_value";break;case 44:this.begin("acc_descr_multiline");break;case 45:this.popState();break;case 46:return"acc_descr_multiline_value";case 47:return 6;case 48:return 18;case 49:return 20;case 50:return 64;case 51:return 5;case 52:return J.yytext=J.yytext.trim(),70;break;case 53:return 73;case 54:return 74;case 55:return 75;case 56:return 76;case 57:return 71;case 58:return 72;case 59:return 77;case 60:return 78;case 61:return 79;case 62:return 80;case 63:return 81;case 64:return 68;case 65:return 69;case 66:return 5;case 67:return"INVALID"}},"anonymous"),rules:[/^(?:[\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,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[45,46],inclusive:!1},acc_descr:{rules:[43],inclusive:!1},acc_title:{rules:[41],inclusive:!1},ID:{rules:[2,3,12],inclusive:!1},ALIAS:{rules:[2,3,13,14],inclusive:!1},LINE:{rules:[2,3,26],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,7,8,9,10,11,15,16,17,18,19,20,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,37,38,39,40,42,44,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67],inclusive:!0}}};return K}();ne.lexer=le;function he(){this.yy={}}return o(he,"Parser"),he.prototype=ne,ne.Parser=he,new he}();CO.parser=CO;lfe=CO});var iVe,aVe,sVe,_6,ufe=N(()=>{"use strict";zt();vt();s6();gr();mi();iVe={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,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34},aVe={FILLED:0,OPEN:1},sVe={LEFTOF:0,RIGHTOF:1,OVER:2},_6=class{constructor(){this.state=new pf(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0}));this.setAccTitle=Lr;this.setAccDescription=Nr;this.setDiagramTitle=$r;this.getAccTitle=Rr;this.getAccDescription=Mr;this.getDiagramTitle=Ir;this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap(me().wrap),this.LINETYPE=iVe,this.ARROWTYPE=aVe,this.PLACEMENT=sVe}static{o(this,"SequenceDB")}addBox(e){this.state.records.boxes.push({name:e.text,wrap:e.wrap??this.autoWrap(),fill:e.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(e,r,n,i){let a=this.state.records.currentBox,s=this.state.records.actors.get(e);if(s){if(this.state.records.currentBox&&s.box&&this.state.records.currentBox!==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 '${this.state.records.currentBox.name}' at the same time.`);if(a=s.box?s.box:this.state.records.currentBox,s.box=a,s&&r===s.name&&n==null)return}if(n?.text==null&&(n={text:r,type:i}),(i==null||n.text==null)&&(n={text:r,type:i}),this.state.records.actors.set(e,{box:a,name:r,description:n.text,wrap:n.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:i??"participant"}),this.state.records.prevActor){let l=this.state.records.actors.get(this.state.records.prevActor);l&&(l.nextActor=e)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(e),this.state.records.prevActor=e}activationCount(e){let r,n=0;if(!e)return 0;for(r=0;r>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},l}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:e,to:r,message:n?.text??"",wrap:n?.wrap??this.autoWrap(),type:i,activate:a}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some(e=>e.name)}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(e){return this.state.records.actors.get(e)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(e){this.state.records.wrapEnabled=e}extractWrap(e){if(e===void 0)return{};e=e.trim();let r=/^:?wrap:/.exec(e)!==null?!0:/^:?nowrap:/.exec(e)!==null?!1:void 0;return{cleanedText:(r===void 0?e:e.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:r}}autoWrap(){return this.state.records.wrapEnabled!==void 0?this.state.records.wrapEnabled:me().sequence?.wrap??!1}clear(){this.state.reset(),Ar()}parseMessage(e){let r=e.trim(),{wrap:n,cleanedText:i}=this.extractWrap(r),a={text:i,wrap:n};return Y.debug(`parseMessage: ${JSON.stringify(a)}`),a}parseBoxData(e){let r=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(e),n=r?.[1]?r[1].trim():"transparent",i=r?.[2]?r[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",n)||(n="transparent",i=e.trim());else{let l=new Option().style;l.color=n,l.color!==n&&(n="transparent",i=e.trim())}let{wrap:a,cleanedText:s}=this.extractWrap(i);return{text:s?Tr(s,me()):void 0,color:n,wrap:a}}addNote(e,r,n){let i={actor:e,placement:r,message:n.text,wrap:n.wrap??this.autoWrap()},a=[].concat(e,e);this.state.records.notes.push(i),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:a[0],to:a[1],message:n.text,wrap:n.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:r})}addLinks(e,r){let n=this.getActor(e);try{let i=Tr(r.text,me());i=i.replace(/=/g,"="),i=i.replace(/&/g,"&");let a=JSON.parse(i);this.insertLinks(n,a)}catch(i){Y.error("error while parsing actor link text",i)}}addALink(e,r){let n=this.getActor(e);try{let i={},a=Tr(r.text,me()),s=a.indexOf("@");a=a.replace(/=/g,"="),a=a.replace(/&/g,"&");let l=a.slice(0,s-1).trim(),u=a.slice(s+1).trim();i[l]=u,this.insertLinks(n,i)}catch(i){Y.error("error while parsing actor link text",i)}}insertLinks(e,r){if(e.links==null)e.links=r;else for(let n in r)e.links[n]=r[n]}addProperties(e,r){let n=this.getActor(e);try{let i=Tr(r.text,me()),a=JSON.parse(i);this.insertProperties(n,a)}catch(i){Y.error("error while parsing actor properties text",i)}}insertProperties(e,r){if(e.properties==null)e.properties=r;else for(let n in r)e.properties[n]=r[n]}boxEnd(){this.state.records.currentBox=void 0}addDetails(e,r){let n=this.getActor(e),i=document.getElementById(r.text);try{let a=i.innerHTML,s=JSON.parse(a);s.properties&&this.insertProperties(n,s.properties),s.links&&this.insertLinks(n,s.links)}catch(a){Y.error("error while parsing actor details text",a)}}getActorProperty(e,r){if(e?.properties!==void 0)return e.properties[r]}apply(e){if(Array.isArray(e))e.forEach(r=>{this.apply(r)});else switch(e.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:e.sequenceIndex,step:e.sequenceIndexStep,visible:e.sequenceVisible},wrap:!1,type:e.signalType});break;case"addParticipant":this.addActor(e.actor,e.actor,e.description,e.draw);break;case"createParticipant":if(this.state.records.actors.has(e.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");this.state.records.lastCreated=e.actor,this.addActor(e.actor,e.actor,e.description,e.draw),this.state.records.createdActors.set(e.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=e.actor,this.state.records.destroyedActors.set(e.actor,this.state.records.messages.length);break;case"activeStart":this.addSignal(e.actor,void 0,void 0,e.signalType);break;case"activeEnd":this.addSignal(e.actor,void 0,void 0,e.signalType);break;case"addNote":this.addNote(e.actor,e.placement,e.text);break;case"addLinks":this.addLinks(e.actor,e.text);break;case"addALink":this.addALink(e.actor,e.text);break;case"addProperties":this.addProperties(e.actor,e.text);break;case"addDetails":this.addDetails(e.actor,e.text);break;case"addMessage":if(this.state.records.lastCreated){if(e.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(e.to!==this.state.records.lastDestroyed&&e.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(e.from,e.to,e.msg,e.signalType,e.activate);break;case"boxStart":this.addBox(e.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,e.loopText,e.signalType);break;case"loopEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"rectStart":this.addSignal(void 0,void 0,e.color,e.signalType);break;case"rectEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"optStart":this.addSignal(void 0,void 0,e.optText,e.signalType);break;case"optEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"altStart":this.addSignal(void 0,void 0,e.altText,e.signalType);break;case"else":this.addSignal(void 0,void 0,e.altText,e.signalType);break;case"altEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"setAccTitle":Lr(e.text);break;case"parStart":this.addSignal(void 0,void 0,e.parText,e.signalType);break;case"and":this.addSignal(void 0,void 0,e.parText,e.signalType);break;case"parEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,e.criticalText,e.signalType);break;case"option":this.addSignal(void 0,void 0,e.optionText,e.signalType);break;case"criticalEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"breakStart":this.addSignal(void 0,void 0,e.breakText,e.signalType);break;case"breakEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break}}getConfig(){return me().sequence}}});var oVe,hfe,ffe=N(()=>{"use strict";oVe=o(t=>`.actor { + stroke: ${t.actorBorder}; + fill: ${t.actorBkg}; + } + + text.actor > tspan { + fill: ${t.actorTextColor}; + stroke: none; + } + + .actor-line { + stroke: ${t.actorLineColor}; + } + + .messageLine0 { + stroke-width: 1.5; + stroke-dasharray: none; + stroke: ${t.signalColor}; + } + + .messageLine1 { + stroke-width: 1.5; + stroke-dasharray: 2, 2; + stroke: ${t.signalColor}; + } + + #arrowhead path { + fill: ${t.signalColor}; + stroke: ${t.signalColor}; + } + + .sequenceNumber { + fill: ${t.sequenceNumberColor}; + } + + #sequencenumber { + fill: ${t.signalColor}; + } + + #crosshead path { + fill: ${t.signalColor}; + stroke: ${t.signalColor}; + } + + .messageText { + fill: ${t.signalTextColor}; + stroke: none; + } + + .labelBox { + stroke: ${t.labelBoxBorderColor}; + fill: ${t.labelBoxBkgColor}; + } + + .labelText, .labelText > tspan { + fill: ${t.labelTextColor}; + stroke: none; + } + + .loopText, .loopText > tspan { + fill: ${t.loopTextColor}; + stroke: none; + } + + .loopLine { + stroke-width: 2px; + stroke-dasharray: 2, 2; + stroke: ${t.labelBoxBorderColor}; + fill: ${t.labelBoxBorderColor}; + } + + .note { + //stroke: #decc93; + stroke: ${t.noteBorderColor}; + fill: ${t.noteBkgColor}; + } + + .noteText, .noteText > tspan { + fill: ${t.noteTextColor}; + stroke: none; + } + + .activation0 { + fill: ${t.activationBkgColor}; + stroke: ${t.activationBorderColor}; + } + + .activation1 { + fill: ${t.activationBkgColor}; + stroke: ${t.activationBorderColor}; + } + + .activation2 { + fill: ${t.activationBkgColor}; + stroke: ${t.activationBorderColor}; + } + + .actorPopupMenu { + position: absolute; + } + + .actorPopupMenuPanel { + position: absolute; + fill: ${t.actorBkg}; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4)); +} + .actor-man line { + stroke: ${t.actorBorder}; + fill: ${t.actorBkg}; + } + .actor-man circle, line { + stroke: ${t.actorBorder}; + fill: ${t.actorBkg}; + stroke-width: 2px; + } +`,"getStyles"),hfe=oVe});var AO,vf,pfe,mfe,lVe,dfe,_O,cVe,uVe,Tb,_p,gfe,Uc,DO,hVe,fVe,dVe,pVe,mVe,gVe,yVe,yfe,vVe,xVe,bVe,wVe,TVe,kVe,EVe,vfe,SVe,LO,CVe,hi,xfe=N(()=>{"use strict";gr();Wv();ir();AO=Sa(z0(),1);ji();vf=18*2,pfe="actor-top",mfe="actor-bottom",lVe="actor-box",dfe="actor-man",_O=o(function(t,e){return kd(t,e)},"drawRect"),cVe=o(function(t,e,r,n,i){if(e.links===void 0||e.links===null||Object.keys(e.links).length===0)return{height:0,width:0};let a=e.links,s=e.actorCnt,l=e.rectData;var u="none";i&&(u="block !important");let h=t.append("g");h.attr("id","actor"+s+"_popup"),h.attr("class","actorPopupMenu"),h.attr("display",u);var f="";l.class!==void 0&&(f=" "+l.class);let d=l.width>r?l.width:r,p=h.append("rect");if(p.attr("class","actorPopupMenuPanel"+f),p.attr("x",l.x),p.attr("y",l.height),p.attr("fill",l.fill),p.attr("stroke",l.stroke),p.attr("width",d),p.attr("height",l.height),p.attr("rx",l.rx),p.attr("ry",l.ry),a!=null){var m=20;for(let v in a){var g=h.append("a"),y=(0,AO.sanitizeUrl)(a[v]);g.attr("xlink:href",y),g.attr("target","_blank"),CVe(n)(v,g,l.x+10,l.height+m,d,20,{class:"actor"},n),m+=30}}return p.attr("height",m),{height:l.height+m,width:d}},"drawPopup"),uVe=o(function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),Tb=o(async function(t,e,r=null){let n=t.append("foreignObject"),i=await mh(e.text,cr()),s=n.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(i).node().getBoundingClientRect();if(n.attr("height",Math.round(s.height)).attr("width",Math.round(s.width)),e.class==="noteText"){let l=t.node().firstChild;l.setAttribute("height",s.height+2*e.textMargin);let u=l.getBBox();n.attr("x",Math.round(u.x+u.width/2-s.width/2)).attr("y",Math.round(u.y+u.height/2-s.height/2))}else if(r){let{startx:l,stopx:u,starty:h}=r;if(l>u){let f=l;l=u,u=f}n.attr("x",Math.round(l+Math.abs(l-u)/2-s.width/2)),e.class==="loopText"?n.attr("y",Math.round(h)):n.attr("y",Math.round(h-s.height))}return[n]},"drawKatex"),_p=o(function(t,e){let r=0,n=0,i=e.text.split(Ze.lineBreakRegex),[a,s]=Bo(e.fontSize),l=[],u=0,h=o(()=>e.y,"yfunc");if(e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0)switch(e.valign){case"top":case"start":h=o(()=>Math.round(e.y+e.textMargin),"yfunc");break;case"middle":case"center":h=o(()=>Math.round(e.y+(r+n+e.textMargin)/2),"yfunc");break;case"bottom":case"end":h=o(()=>Math.round(e.y+(r+n+2*e.textMargin)-e.textMargin),"yfunc");break}if(e.anchor!==void 0&&e.textMargin!==void 0&&e.width!==void 0)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";break}for(let[f,d]of i.entries()){e.textMargin!==void 0&&e.textMargin===0&&a!==void 0&&(u=f*a);let p=t.append("text");p.attr("x",e.x),p.attr("y",h()),e.anchor!==void 0&&p.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),e.fontFamily!==void 0&&p.style("font-family",e.fontFamily),s!==void 0&&p.style("font-size",s),e.fontWeight!==void 0&&p.style("font-weight",e.fontWeight),e.fill!==void 0&&p.attr("fill",e.fill),e.class!==void 0&&p.attr("class",e.class),e.dy!==void 0?p.attr("dy",e.dy):u!==0&&p.attr("dy",u);let m=d||H9;if(e.tspan){let g=p.append("tspan");g.attr("x",e.x),e.fill!==void 0&&g.attr("fill",e.fill),g.text(m)}else p.text(m);e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0&&(n+=(p._groups||p)[0][0].getBBox().height,r=n),l.push(p)}return l},"drawText"),gfe=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=t.append("polygon");return n.attr("points",r(e.x,e.y,e.width,e.height,7)),n.attr("class","labelBox"),e.y=e.y+e.height/2,_p(t,e),n},"drawLabel"),Uc=-1,DO=o((t,e,r,n)=>{t.select&&r.forEach(i=>{let a=e.get(i),s=t.select("#actor"+a.actorCnt);!n.mirrorActors&&a.stopy?s.attr("y2",a.stopy+a.height/2):n.mirrorActors&&s.attr("y2",a.stopy)})},"fixLifeLineHeights"),hVe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,l=t.append("g").lower();var u=l;n||(Uc++,Object.keys(e.links||{}).length&&!r.forceMenus&&u.attr("onclick",uVe(`actor${Uc}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+Uc).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),u=l.append("g"),e.actorCnt=Uc,e.links!=null&&u.attr("id","root-"+Uc));let h=Tl();var f="actor";e.properties?.class?f=e.properties.class:h.fill="#eaeaea",n?f+=` ${mfe}`:f+=` ${pfe}`,h.x=e.x,h.y=i,h.width=e.width,h.height=e.height,h.class=f,h.rx=3,h.ry=3,h.name=e.name;let d=_O(u,h);if(e.rectData=h,e.properties?.icon){let m=e.properties.icon.trim();m.charAt(0)==="@"?Iq(u,h.x+h.width-20,h.y+10,m.substr(1)):Mq(u,h.x+h.width-20,h.y+10,m)}LO(r,pi(e.description))(e.description,u,h.x,h.y,h.width,h.height,{class:`actor ${lVe}`},r);let p=e.height;if(d.node){let m=d.node().getBBox();e.height=m.height,p=m.height}return p},"drawActorTypeParticipant"),fVe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+80,l=t.append("g").lower();n||(Uc++,l.append("line").attr("id","actor"+Uc).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=Uc);let u=t.append("g"),h=dfe;n?h+=` ${mfe}`:h+=` ${pfe}`,u.attr("class",h),u.attr("name",e.name);let f=Tl();f.x=e.x,f.y=i,f.fill="#eaeaea",f.width=e.width,f.height=e.height,f.class="actor",f.rx=3,f.ry=3,u.append("line").attr("id","actor-man-torso"+Uc).attr("x1",a).attr("y1",i+25).attr("x2",a).attr("y2",i+45),u.append("line").attr("id","actor-man-arms"+Uc).attr("x1",a-vf/2).attr("y1",i+33).attr("x2",a+vf/2).attr("y2",i+33),u.append("line").attr("x1",a-vf/2).attr("y1",i+60).attr("x2",a).attr("y2",i+45),u.append("line").attr("x1",a).attr("y1",i+45).attr("x2",a+vf/2-2).attr("y2",i+60);let d=u.append("circle");d.attr("cx",e.x+e.width/2),d.attr("cy",i+10),d.attr("r",15),d.attr("width",e.width),d.attr("height",e.height);let p=u.node().getBBox();return e.height=p.height,LO(r,pi(e.description))(e.description,u,f.x,f.y+35,f.width,f.height,{class:`actor ${dfe}`},r),e.height},"drawActorTypeActor"),dVe=o(async function(t,e,r,n){switch(e.type){case"actor":return await fVe(t,e,r,n);case"participant":return await hVe(t,e,r,n)}},"drawActor"),pVe=o(function(t,e,r){let i=t.append("g");yfe(i,e),e.name&&LO(r)(e.name,i,e.x,e.y+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},r),i.lower()},"drawBox"),mVe=o(function(t){return t.append("g")},"anchorElement"),gVe=o(function(t,e,r,n,i){let a=Tl(),s=e.anchored;a.x=e.startx,a.y=e.starty,a.class="activation"+i%3,a.width=e.stopx-e.startx,a.height=r-e.starty,_O(s,a)},"drawActivation"),yVe=o(async function(t,e,r,n){let{boxMargin:i,boxTextMargin:a,labelBoxHeight:s,labelBoxWidth:l,messageFontFamily:u,messageFontSize:h,messageFontWeight:f}=n,d=t.append("g"),p=o(function(y,v,x,b){return d.append("line").attr("x1",y).attr("y1",v).attr("x2",x).attr("y2",b).attr("class","loopLine")},"drawLoopLine");p(e.startx,e.starty,e.stopx,e.starty),p(e.stopx,e.starty,e.stopx,e.stopy),p(e.startx,e.stopy,e.stopx,e.stopy),p(e.startx,e.starty,e.startx,e.stopy),e.sections!==void 0&&e.sections.forEach(function(y){p(e.startx,y.y,e.stopx,y.y).style("stroke-dasharray","3, 3")});let m=Hv();m.text=r,m.x=e.startx,m.y=e.starty,m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.anchor="middle",m.valign="middle",m.tspan=!1,m.width=l||50,m.height=s||20,m.textMargin=a,m.class="labelText",gfe(d,m),m=vfe(),m.text=e.title,m.x=e.startx+l/2+(e.stopx-e.startx)/2,m.y=e.starty+i+a,m.anchor="middle",m.valign="middle",m.textMargin=a,m.class="loopText",m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.wrap=!0;let g=pi(m.text)?await Tb(d,m,e):_p(d,m);if(e.sectionTitles!==void 0){for(let[y,v]of Object.entries(e.sectionTitles))if(v.message){m.text=v.message,m.x=e.startx+(e.stopx-e.startx)/2,m.y=e.sections[y].y+i+a,m.class="loopText",m.anchor="middle",m.valign="middle",m.tspan=!1,m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.wrap=e.wrap,pi(m.text)?(e.starty=e.sections[y].y,await Tb(d,m,e)):_p(d,m);let x=Math.round(g.map(b=>(b._groups||b)[0][0].getBBox().height).reduce((b,w)=>b+w));e.sections[y].height+=x-(i+a)}}return e.height=Math.round(e.stopy-e.starty),d},"drawLoop"),yfe=o(function(t,e){q5(t,e)},"drawBackgroundRect"),vVe=o(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")},"insertDatabaseIcon"),xVe=o(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")},"insertComputerIcon"),bVe=o(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")},"insertClockIcon"),wVe=o(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),TVe=o(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",15.5).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")},"insertArrowFilledHead"),kVe=o(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)},"insertSequenceNumber"),EVe=o(function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.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")},"insertArrowCrossHead"),vfe=o(function(){return{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}},"getTextObj"),SVe=o(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),LO=function(){function t(a,s,l,u,h,f,d){let p=s.append("text").attr("x",l+h/2).attr("y",u+f/2+5).style("text-anchor","middle").text(a);i(p,d)}o(t,"byText");function e(a,s,l,u,h,f,d,p){let{actorFontSize:m,actorFontFamily:g,actorFontWeight:y}=p,[v,x]=Bo(m),b=a.split(Ze.lineBreakRegex);for(let w=0;w{let s=Dp(Ne),l=a.actorKeys.reduce((f,d)=>f+=t.get(d).width+(t.get(d).margin||0),0);l-=2*Ne.boxTextMargin,a.wrap&&(a.name=Gt.wrapLabel(a.name,l-2*Ne.wrapPadding,s));let u=Gt.calculateTextDimensions(a.name,s);i=Ze.getMax(u.height,i);let h=Ze.getMax(l,u.width+2*Ne.wrapPadding);if(a.margin=Ne.boxTextMargin,la.textMaxHeight=i),Ze.getMax(n,Ne.height)}var Ne,rt,AVe,Dp,_1,RO,DVe,LVe,NO,wfe,Tfe,D6,bfe,NVe,IVe,PVe,BVe,FVe,kfe,Efe=N(()=>{"use strict";dr();xfe();vt();gr();Wv();zt();s0();ir();Ei();Ne={},rt={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:o(function(){return Math.max.apply(null,this.actors.length===0?[0]:this.actors.map(t=>t.height||0))+(this.loops.length===0?0:this.loops.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.messages.length===0?0:this.messages.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.notes.length===0?0:this.notes.map(t=>t.height||0).reduce((t,e)=>t+e))},"getHeight"),clear:o(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:o(function(t){this.boxes.push(t)},"addBox"),addActor:o(function(t){this.actors.push(t)},"addActor"),addLoop:o(function(t){this.loops.push(t)},"addLoop"),addMessage:o(function(t){this.messages.push(t)},"addMessage"),addNote:o(function(t){this.notes.push(t)},"addNote"),lastActor:o(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:o(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:o(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:o(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:o(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,Tfe(me())},"init"),updateVal:o(function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:o(function(t,e,r,n){let i=this,a=0;function s(l){return o(function(h){a++;let f=i.sequenceItems.length-a+1;i.updateVal(h,"starty",e-f*Ne.boxMargin,Math.min),i.updateVal(h,"stopy",n+f*Ne.boxMargin,Math.max),i.updateVal(rt.data,"startx",t-f*Ne.boxMargin,Math.min),i.updateVal(rt.data,"stopx",r+f*Ne.boxMargin,Math.max),l!=="activation"&&(i.updateVal(h,"startx",t-f*Ne.boxMargin,Math.min),i.updateVal(h,"stopx",r+f*Ne.boxMargin,Math.max),i.updateVal(rt.data,"starty",e-f*Ne.boxMargin,Math.min),i.updateVal(rt.data,"stopy",n+f*Ne.boxMargin,Math.max))},"updateItemBounds")}o(s,"updateFn"),this.sequenceItems.forEach(s()),this.activations.forEach(s("activation"))},"updateBounds"),insert:o(function(t,e,r,n){let i=Ze.getMin(t,r),a=Ze.getMax(t,r),s=Ze.getMin(e,n),l=Ze.getMax(e,n);this.updateVal(rt.data,"startx",i,Math.min),this.updateVal(rt.data,"starty",s,Math.min),this.updateVal(rt.data,"stopx",a,Math.max),this.updateVal(rt.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),newActivation:o(function(t,e,r){let n=r.get(t.from),i=D6(t.from).length||0,a=n.x+n.width/2+(i-1)*Ne.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+Ne.activationWidth,stopy:void 0,actor:t.from,anchored:hi.anchorElement(e)})},"newActivation"),endActivation:o(function(t){let e=this.activations.map(function(r){return r.actor}).lastIndexOf(t.from);return this.activations.splice(e,1)[0]},"endActivation"),createLoop:o(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}},"createLoop"),newLoop:o(function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},"newLoop"),endLoop:o(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:o(function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},"isLoopOverlap"),addSectionToLoop:o(function(t){let e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:rt.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},"addSectionToLoop"),saveVerticalPos:o(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:o(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:o(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=Ze.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return{bounds:this.data,models:this.models}},"getBounds")},AVe=o(async function(t,e){rt.bumpVerticalPos(Ne.boxMargin),e.height=Ne.boxMargin,e.starty=rt.getVerticalPos();let r=Tl();r.x=e.startx,r.y=e.starty,r.width=e.width||Ne.width,r.class="note";let n=t.append("g"),i=hi.drawRect(n,r),a=Hv();a.x=e.startx,a.y=e.starty,a.width=r.width,a.dy="1em",a.text=e.message,a.class="noteText",a.fontFamily=Ne.noteFontFamily,a.fontSize=Ne.noteFontSize,a.fontWeight=Ne.noteFontWeight,a.anchor=Ne.noteAlign,a.textMargin=Ne.noteMargin,a.valign="center";let s=pi(a.text)?await Tb(n,a):_p(n,a),l=Math.round(s.map(u=>(u._groups||u)[0][0].getBBox().height).reduce((u,h)=>u+h));i.attr("height",l+2*Ne.noteMargin),e.height+=l+2*Ne.noteMargin,rt.bumpVerticalPos(l+2*Ne.noteMargin),e.stopy=e.starty+l+2*Ne.noteMargin,e.stopx=e.startx+r.width,rt.insert(e.startx,e.starty,e.stopx,e.stopy),rt.models.addNote(e)},"drawNote"),Dp=o(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont"),_1=o(t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),"noteFont"),RO=o(t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}),"actorFont");o(_Ve,"boundMessage");DVe=o(async function(t,e,r,n){let{startx:i,stopx:a,starty:s,message:l,type:u,sequenceIndex:h,sequenceVisible:f}=e,d=Gt.calculateTextDimensions(l,Dp(Ne)),p=Hv();p.x=i,p.y=s+10,p.width=a-i,p.class="messageText",p.dy="1em",p.text=l,p.fontFamily=Ne.messageFontFamily,p.fontSize=Ne.messageFontSize,p.fontWeight=Ne.messageFontWeight,p.anchor=Ne.messageAlign,p.valign="center",p.textMargin=Ne.wrapPadding,p.tspan=!1,pi(p.text)?await Tb(t,p,{startx:i,stopx:a,starty:r}):_p(t,p);let m=d.width,g;i===a?Ne.rightAngles?g=t.append("path").attr("d",`M ${i},${r} H ${i+Ze.getMax(Ne.width/2,m/2)} V ${r+25} H ${i}`):g=t.append("path").attr("d","M "+i+","+r+" C "+(i+60)+","+(r-10)+" "+(i+60)+","+(r+30)+" "+i+","+(r+20)):(g=t.append("line"),g.attr("x1",i),g.attr("y1",r),g.attr("x2",a),g.attr("y2",r)),u===n.db.LINETYPE.DOTTED||u===n.db.LINETYPE.DOTTED_CROSS||u===n.db.LINETYPE.DOTTED_POINT||u===n.db.LINETYPE.DOTTED_OPEN||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED?(g.style("stroke-dasharray","3, 3"),g.attr("class","messageLine1")):g.attr("class","messageLine0");let y="";Ne.arrowMarkerAbsolute&&(y=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,y=y.replace(/\(/g,"\\("),y=y.replace(/\)/g,"\\)")),g.attr("stroke-width",2),g.attr("stroke","none"),g.style("fill","none"),(u===n.db.LINETYPE.SOLID||u===n.db.LINETYPE.DOTTED)&&g.attr("marker-end","url("+y+"#arrowhead)"),(u===n.db.LINETYPE.BIDIRECTIONAL_SOLID||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(g.attr("marker-start","url("+y+"#arrowhead)"),g.attr("marker-end","url("+y+"#arrowhead)")),(u===n.db.LINETYPE.SOLID_POINT||u===n.db.LINETYPE.DOTTED_POINT)&&g.attr("marker-end","url("+y+"#filled-head)"),(u===n.db.LINETYPE.SOLID_CROSS||u===n.db.LINETYPE.DOTTED_CROSS)&&g.attr("marker-end","url("+y+"#crosshead)"),(f||Ne.showSequenceNumbers)&&(g.attr("marker-start","url("+y+"#sequencenumber)"),t.append("text").attr("x",i).attr("y",r+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(h))},"drawMessage"),LVe=o(function(t,e,r,n,i,a,s){let l=0,u=0,h,f=0;for(let d of n){let p=e.get(d),m=p.box;h&&h!=m&&(s||rt.models.addBox(h),u+=Ne.boxMargin+h.margin),m&&m!=h&&(s||(m.x=l+u,m.y=i),u+=m.margin),p.width=p.width||Ne.width,p.height=Ze.getMax(p.height||Ne.height,Ne.height),p.margin=p.margin||Ne.actorMargin,f=Ze.getMax(f,p.height),r.get(p.name)&&(u+=p.width/2),p.x=l+u,p.starty=rt.getVerticalPos(),rt.insert(p.x,i,p.x+p.width,p.height),l+=p.width+u,p.box&&(p.box.width=l+m.margin-p.box.x),u=p.margin,h=p.box,rt.models.addActor(p)}h&&!s&&rt.models.addBox(h),rt.bumpVerticalPos(f)},"addActorRenderingData"),NO=o(async function(t,e,r,n){if(n){let i=0;rt.bumpVerticalPos(Ne.boxMargin*2);for(let a of r){let s=e.get(a);s.stopy||(s.stopy=rt.getVerticalPos());let l=await hi.drawActor(t,s,Ne,!0);i=Ze.getMax(i,l)}rt.bumpVerticalPos(i+Ne.boxMargin)}else for(let i of r){let a=e.get(i);await hi.drawActor(t,a,Ne,!1)}},"drawActors"),wfe=o(function(t,e,r,n){let i=0,a=0;for(let s of r){let l=e.get(s),u=IVe(l),h=hi.drawPopup(t,l,u,Ne,Ne.forceMenus,n);h.height>i&&(i=h.height),h.width+l.x>a&&(a=h.width+l.x)}return{maxHeight:i,maxWidth:a}},"drawActorsPopup"),Tfe=o(function(t){Gn(Ne,t),t.fontFamily&&(Ne.actorFontFamily=Ne.noteFontFamily=Ne.messageFontFamily=t.fontFamily),t.fontSize&&(Ne.actorFontSize=Ne.noteFontSize=Ne.messageFontSize=t.fontSize),t.fontWeight&&(Ne.actorFontWeight=Ne.noteFontWeight=Ne.messageFontWeight=t.fontWeight)},"setConf"),D6=o(function(t){return rt.activations.filter(function(e){return e.actor===t})},"actorActivations"),bfe=o(function(t,e){let r=e.get(t),n=D6(t),i=n.reduce(function(s,l){return Ze.getMin(s,l.startx)},r.x+r.width/2-1),a=n.reduce(function(s,l){return Ze.getMax(s,l.stopx)},r.x+r.width/2+1);return[i,a]},"activationBounds");o(Hc,"adjustLoopHeightForWrap");o(RVe,"adjustCreatedDestroyedData");NVe=o(async function(t,e,r,n){let{securityLevel:i,sequence:a}=me();Ne=a;let s;i==="sandbox"&&(s=Ge("#i"+e));let l=i==="sandbox"?Ge(s.nodes()[0].contentDocument.body):Ge("body"),u=i==="sandbox"?s.nodes()[0].contentDocument:document;rt.init(),Y.debug(n.db);let h=i==="sandbox"?l.select(`[id="${e}"]`):Ge(`[id="${e}"]`),f=n.db.getActors(),d=n.db.getCreatedActors(),p=n.db.getDestroyedActors(),m=n.db.getBoxes(),g=n.db.getActorKeys(),y=n.db.getMessages(),v=n.db.getDiagramTitle(),x=n.db.hasAtLeastOneBox(),b=n.db.hasAtLeastOneBoxWithTitle(),w=await MVe(f,y,n);if(Ne.height=await OVe(f,w,m),hi.insertComputerIcon(h),hi.insertDatabaseIcon(h),hi.insertClockIcon(h),x&&(rt.bumpVerticalPos(Ne.boxMargin),b&&rt.bumpVerticalPos(m[0].textMaxHeight)),Ne.hideUnusedParticipants===!0){let F=new Set;y.forEach(P=>{F.add(P.from),F.add(P.to)}),g=g.filter(P=>F.has(P))}LVe(h,f,d,g,0,y,!1);let C=await FVe(y,f,w,n);hi.insertArrowHead(h),hi.insertArrowCrossHead(h),hi.insertArrowFilledHead(h),hi.insertSequenceNumber(h);function T(F,P){let z=rt.endActivation(F);z.starty+18>P&&(z.starty=P-6,P+=12),hi.drawActivation(h,z,P,Ne,D6(F.from).length),rt.insert(z.startx,P-10,z.stopx,P)}o(T,"activeEnd");let E=1,A=1,S=[],_=[],I=0;for(let F of y){let P,z,$;switch(F.type){case n.db.LINETYPE.NOTE:rt.resetVerticalPos(),z=F.noteModel,await AVe(h,z);break;case n.db.LINETYPE.ACTIVE_START:rt.newActivation(F,h,f);break;case n.db.LINETYPE.ACTIVE_END:T(F,rt.getVerticalPos());break;case n.db.LINETYPE.LOOP_START:Hc(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H));break;case n.db.LINETYPE.LOOP_END:P=rt.endLoop(),await hi.drawLoop(h,P,"loop",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;case n.db.LINETYPE.RECT_START:Hc(C,F,Ne.boxMargin,Ne.boxMargin,H=>rt.newLoop(void 0,H.message));break;case n.db.LINETYPE.RECT_END:P=rt.endLoop(),_.push(P),rt.models.addLoop(P),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos());break;case n.db.LINETYPE.OPT_START:Hc(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H));break;case n.db.LINETYPE.OPT_END:P=rt.endLoop(),await hi.drawLoop(h,P,"opt",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;case n.db.LINETYPE.ALT_START:Hc(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H));break;case n.db.LINETYPE.ALT_ELSE:Hc(C,F,Ne.boxMargin+Ne.boxTextMargin,Ne.boxMargin,H=>rt.addSectionToLoop(H));break;case n.db.LINETYPE.ALT_END:P=rt.endLoop(),await hi.drawLoop(h,P,"alt",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:Hc(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H)),rt.saveVerticalPos();break;case n.db.LINETYPE.PAR_AND:Hc(C,F,Ne.boxMargin+Ne.boxTextMargin,Ne.boxMargin,H=>rt.addSectionToLoop(H));break;case n.db.LINETYPE.PAR_END:P=rt.endLoop(),await hi.drawLoop(h,P,"par",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;case n.db.LINETYPE.AUTONUMBER:E=F.message.start||E,A=F.message.step||A,F.message.visible?n.db.enableSequenceNumbers():n.db.disableSequenceNumbers();break;case n.db.LINETYPE.CRITICAL_START:Hc(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H));break;case n.db.LINETYPE.CRITICAL_OPTION:Hc(C,F,Ne.boxMargin+Ne.boxTextMargin,Ne.boxMargin,H=>rt.addSectionToLoop(H));break;case n.db.LINETYPE.CRITICAL_END:P=rt.endLoop(),await hi.drawLoop(h,P,"critical",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;case n.db.LINETYPE.BREAK_START:Hc(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H));break;case n.db.LINETYPE.BREAK_END:P=rt.endLoop(),await hi.drawLoop(h,P,"break",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;default:try{$=F.msgModel,$.starty=rt.getVerticalPos(),$.sequenceIndex=E,$.sequenceVisible=n.db.showSequenceNumbers();let H=await _Ve(h,$);RVe(F,$,H,I,f,d,p),S.push({messageModel:$,lineStartY:H}),rt.models.addMessage($)}catch(H){Y.error("error while drawing message",H)}}[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,n.db.LINETYPE.BIDIRECTIONAL_SOLID,n.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(F.type)&&(E=E+A),I++}Y.debug("createdActors",d),Y.debug("destroyedActors",p),await NO(h,f,g,!1);for(let F of S)await DVe(h,F.messageModel,F.lineStartY,n);Ne.mirrorActors&&await NO(h,f,g,!0),_.forEach(F=>hi.drawBackgroundRect(h,F)),DO(h,f,g,Ne);for(let F of rt.models.boxes)F.height=rt.getVerticalPos()-F.y,rt.insert(F.x,F.y,F.x+F.width,F.height),F.startx=F.x,F.starty=F.y,F.stopx=F.startx+F.width,F.stopy=F.starty+F.height,F.stroke="rgb(0,0,0, 0.5)",hi.drawBox(h,F,Ne);x&&rt.bumpVerticalPos(Ne.boxMargin);let D=wfe(h,f,g,u),{bounds:k}=rt.getBounds();k.startx===void 0&&(k.startx=0),k.starty===void 0&&(k.starty=0),k.stopx===void 0&&(k.stopx=0),k.stopy===void 0&&(k.stopy=0);let L=k.stopy-k.starty;L2,d=o(y=>l?-y:y,"adjustValue");t.from===t.to?h=u:(t.activate&&!f&&(h+=d(Ne.activationWidth/2-1)),[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN].includes(t.type)||(h+=d(3)),[r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type)&&(u-=d(3)));let p=[n,i,a,s],m=Math.abs(u-h);t.wrap&&t.message&&(t.message=Gt.wrapLabel(t.message,Ze.getMax(m+2*Ne.wrapPadding,Ne.width),Dp(Ne)));let g=Gt.calculateTextDimensions(t.message,Dp(Ne));return{width:Ze.getMax(t.wrap?0:g.width+2*Ne.wrapPadding,m+2*Ne.wrapPadding,Ne.width),height:0,startx:u,stopx:h,starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,p),toBounds:Math.max.apply(null,p)}},"buildMessageModel"),FVe=o(async function(t,e,r,n){let i={},a=[],s,l,u;for(let h of t){switch(h.type){case n.db.LINETYPE.LOOP_START:case n.db.LINETYPE.ALT_START:case n.db.LINETYPE.OPT_START:case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:case n.db.LINETYPE.CRITICAL_START:case n.db.LINETYPE.BREAK_START:a.push({id:h.id,msg:h.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case n.db.LINETYPE.ALT_ELSE:case n.db.LINETYPE.PAR_AND:case n.db.LINETYPE.CRITICAL_OPTION:h.message&&(s=a.pop(),i[s.id]=s,i[h.id]=s,a.push(s));break;case n.db.LINETYPE.LOOP_END:case n.db.LINETYPE.ALT_END:case n.db.LINETYPE.OPT_END:case n.db.LINETYPE.PAR_END:case n.db.LINETYPE.CRITICAL_END:case n.db.LINETYPE.BREAK_END:s=a.pop(),i[s.id]=s;break;case n.db.LINETYPE.ACTIVE_START:{let d=e.get(h.from?h.from:h.to.actor),p=D6(h.from?h.from:h.to.actor).length,m=d.x+d.width/2+(p-1)*Ne.activationWidth/2,g={startx:m,stopx:m+Ne.activationWidth,actor:h.from,enabled:!0};rt.activations.push(g)}break;case n.db.LINETYPE.ACTIVE_END:{let d=rt.activations.map(p=>p.actor).lastIndexOf(h.from);rt.activations.splice(d,1).splice(0,1)}break}h.placement!==void 0?(l=await PVe(h,e,n),h.noteModel=l,a.forEach(d=>{s=d,s.from=Ze.getMin(s.from,l.startx),s.to=Ze.getMax(s.to,l.startx+l.width),s.width=Ze.getMax(s.width,Math.abs(s.from-s.to))-Ne.labelBoxWidth})):(u=BVe(h,e,n),h.msgModel=u,u.startx&&u.stopx&&a.length>0&&a.forEach(d=>{if(s=d,u.startx===u.stopx){let p=e.get(h.from),m=e.get(h.to);s.from=Ze.getMin(p.x-u.width/2,p.x-p.width/2,s.from),s.to=Ze.getMax(m.x+u.width/2,m.x+p.width/2,s.to),s.width=Ze.getMax(s.width,Math.abs(s.to-s.from))-Ne.labelBoxWidth}else s.from=Ze.getMin(u.startx,s.from),s.to=Ze.getMax(u.stopx,s.to),s.width=Ze.getMax(s.width,u.width)-Ne.labelBoxWidth}))}return rt.activations=[],Y.debug("Loop type widths:",i),i},"calculateLoopBounds"),kfe={bounds:rt,drawActors:NO,drawActorsPopup:wfe,setConf:Tfe,draw:NVe}});var Sfe={};hr(Sfe,{diagram:()=>$Ve});var $Ve,Cfe=N(()=>{"use strict";cfe();ufe();ffe();zt();Efe();$Ve={parser:lfe,get db(){return new _6},renderer:kfe,styles:hfe,init:o(t=>{t.sequence||(t.sequence={}),t.wrap&&(t.sequence.wrap=t.wrap,Yy({sequence:{wrap:t.wrap}}))},"init")}});var MO,L6,IO=N(()=>{"use strict";MO=function(){var t=o(function(Ie,be,W,de){for(W=W||{},de=Ie.length;de--;W[Ie[de]]=be);return W},"o"),e=[1,18],r=[1,19],n=[1,20],i=[1,41],a=[1,42],s=[1,26],l=[1,24],u=[1,25],h=[1,32],f=[1,33],d=[1,34],p=[1,45],m=[1,35],g=[1,36],y=[1,37],v=[1,38],x=[1,27],b=[1,28],w=[1,29],C=[1,30],T=[1,31],E=[1,44],A=[1,46],S=[1,43],_=[1,47],I=[1,9],D=[1,8,9],k=[1,58],L=[1,59],R=[1,60],O=[1,61],M=[1,62],B=[1,63],F=[1,64],P=[1,8,9,41],z=[1,76],$=[1,8,9,12,13,22,39,41,44,66,67,68,69,70,71,72,77,79],H=[1,8,9,12,13,17,20,22,39,41,44,48,58,66,67,68,69,70,71,72,77,79,84,99,101,102],Q=[13,58,84,99,101,102],j=[13,58,71,72,84,99,101,102],ie=[13,58,66,67,68,69,70,84,99,101,102],ne=[1,98],le=[1,115],he=[1,107],K=[1,113],X=[1,108],te=[1,109],J=[1,110],se=[1,111],ue=[1,112],Z=[1,114],Se=[22,58,59,80,84,85,86,87,88,89],ce=[1,8,9,39,41,44],ae=[1,8,9,22],Oe=[1,143],ge=[1,8,9,59],ze=[1,8,9,22,58,59,80,84,85,86,87,88,89],He={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,DOT:17,className:18,classLiteralName:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,CLASS:46,ANNOTATION_START:47,ANNOTATION_END:48,MEMBER:49,SEPARATOR:50,relation:51,NOTE_FOR:52,noteText:53,NOTE:54,CLASSDEF:55,classList:56,stylesOpt:57,ALPHA:58,COMMA:59,direction_tb:60,direction_bt:61,direction_rl:62,direction_lr:63,relationType:64,lineType:65,AGGREGATION:66,EXTENSION:67,COMPOSITION:68,DEPENDENCY:69,LOLLIPOP:70,LINE:71,DOTTED_LINE:72,CALLBACK:73,LINK:74,LINK_TARGET:75,CLICK:76,CALLBACK_NAME:77,CALLBACK_ARGS:78,HREF:79,STYLE:80,CSSCLASS:81,style:82,styleComponent:83,NUM:84,COLON:85,UNIT:86,SPACE:87,BRKT:88,PCT:89,commentToken:90,textToken:91,graphCodeTokens:92,textNoTagsToken:93,TAGSTART:94,TAGEND:95,"==":96,"--":97,DEFAULT:98,MINUS:99,keywords:100,UNICODE_TEXT:101,BQUOTE_STR:102,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",17:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"CLASS",47:"ANNOTATION_START",48:"ANNOTATION_END",49:"MEMBER",50:"SEPARATOR",52:"NOTE_FOR",54:"NOTE",55:"CLASSDEF",58:"ALPHA",59:"COMMA",60:"direction_tb",61:"direction_bt",62:"direction_rl",63:"direction_lr",66:"AGGREGATION",67:"EXTENSION",68:"COMPOSITION",69:"DEPENDENCY",70:"LOLLIPOP",71:"LINE",72:"DOTTED_LINE",73:"CALLBACK",74:"LINK",75:"LINK_TARGET",76:"CLICK",77:"CALLBACK_NAME",78:"CALLBACK_ARGS",79:"HREF",80:"STYLE",81:"CSSCLASS",84:"NUM",85:"COLON",86:"UNIT",87:"SPACE",88:"BRKT",89:"PCT",92:"graphCodeTokens",94:"TAGSTART",95:"TAGEND",96:"==",97:"--",98:"DEFAULT",99:"MINUS",100:"keywords",101:"UNICODE_TEXT",102:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,3],[15,2],[18,1],[18,3],[18,1],[18,2],[18,2],[18,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,6],[43,2],[43,3],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[56,1],[56,3],[32,1],[32,1],[32,1],[32,1],[51,3],[51,2],[51,2],[51,1],[64,1],[64,1],[64,1],[64,1],[64,1],[65,1],[65,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[57,1],[57,3],[82,1],[82,2],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[90,1],[90,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[93,1],[93,1],[93,1],[93,1],[16,1],[16,1],[16,1],[16,1],[19,1],[53,1]],performAction:o(function(be,W,de,re,oe,V,xe){var q=V.length-1;switch(oe){case 8:this.$=V[q-1];break;case 9:case 12:case 14:this.$=V[q];break;case 10:case 13:this.$=V[q-2]+"."+V[q];break;case 11:case 15:this.$=V[q-1]+V[q];break;case 16:case 17:this.$=V[q-1]+"~"+V[q]+"~";break;case 18:re.addRelation(V[q]);break;case 19:V[q-1].title=re.cleanupLabel(V[q]),re.addRelation(V[q-1]);break;case 30:this.$=V[q].trim(),re.setAccTitle(this.$);break;case 31:case 32:this.$=V[q].trim(),re.setAccDescription(this.$);break;case 33:re.addClassesToNamespace(V[q-3],V[q-1]);break;case 34:re.addClassesToNamespace(V[q-4],V[q-1]);break;case 35:this.$=V[q],re.addNamespace(V[q]);break;case 36:this.$=[V[q]];break;case 37:this.$=[V[q-1]];break;case 38:V[q].unshift(V[q-2]),this.$=V[q];break;case 40:re.setCssClass(V[q-2],V[q]);break;case 41:re.addMembers(V[q-3],V[q-1]);break;case 42:re.setCssClass(V[q-5],V[q-3]),re.addMembers(V[q-5],V[q-1]);break;case 43:this.$=V[q],re.addClass(V[q]);break;case 44:this.$=V[q-1],re.addClass(V[q-1]),re.setClassLabel(V[q-1],V[q]);break;case 45:re.addAnnotation(V[q],V[q-2]);break;case 46:case 59:this.$=[V[q]];break;case 47:V[q].push(V[q-1]),this.$=V[q];break;case 48:break;case 49:re.addMember(V[q-1],re.cleanupLabel(V[q]));break;case 50:break;case 51:break;case 52:this.$={id1:V[q-2],id2:V[q],relation:V[q-1],relationTitle1:"none",relationTitle2:"none"};break;case 53:this.$={id1:V[q-3],id2:V[q],relation:V[q-1],relationTitle1:V[q-2],relationTitle2:"none"};break;case 54:this.$={id1:V[q-3],id2:V[q],relation:V[q-2],relationTitle1:"none",relationTitle2:V[q-1]};break;case 55:this.$={id1:V[q-4],id2:V[q],relation:V[q-2],relationTitle1:V[q-3],relationTitle2:V[q-1]};break;case 56:re.addNote(V[q],V[q-1]);break;case 57:re.addNote(V[q]);break;case 58:this.$=V[q-2],re.defineClass(V[q-1],V[q]);break;case 60:this.$=V[q-2].concat([V[q]]);break;case 61:re.setDirection("TB");break;case 62:re.setDirection("BT");break;case 63:re.setDirection("RL");break;case 64:re.setDirection("LR");break;case 65:this.$={type1:V[q-2],type2:V[q],lineType:V[q-1]};break;case 66:this.$={type1:"none",type2:V[q],lineType:V[q-1]};break;case 67:this.$={type1:V[q-1],type2:"none",lineType:V[q]};break;case 68:this.$={type1:"none",type2:"none",lineType:V[q]};break;case 69:this.$=re.relationType.AGGREGATION;break;case 70:this.$=re.relationType.EXTENSION;break;case 71:this.$=re.relationType.COMPOSITION;break;case 72:this.$=re.relationType.DEPENDENCY;break;case 73:this.$=re.relationType.LOLLIPOP;break;case 74:this.$=re.lineType.LINE;break;case 75:this.$=re.lineType.DOTTED_LINE;break;case 76:case 82:this.$=V[q-2],re.setClickEvent(V[q-1],V[q]);break;case 77:case 83:this.$=V[q-3],re.setClickEvent(V[q-2],V[q-1]),re.setTooltip(V[q-2],V[q]);break;case 78:this.$=V[q-2],re.setLink(V[q-1],V[q]);break;case 79:this.$=V[q-3],re.setLink(V[q-2],V[q-1],V[q]);break;case 80:this.$=V[q-3],re.setLink(V[q-2],V[q-1]),re.setTooltip(V[q-2],V[q]);break;case 81:this.$=V[q-4],re.setLink(V[q-3],V[q-2],V[q]),re.setTooltip(V[q-3],V[q-1]);break;case 84:this.$=V[q-3],re.setClickEvent(V[q-2],V[q-1],V[q]);break;case 85:this.$=V[q-4],re.setClickEvent(V[q-3],V[q-2],V[q-1]),re.setTooltip(V[q-3],V[q]);break;case 86:this.$=V[q-3],re.setLink(V[q-2],V[q]);break;case 87:this.$=V[q-4],re.setLink(V[q-3],V[q-1],V[q]);break;case 88:this.$=V[q-4],re.setLink(V[q-3],V[q-1]),re.setTooltip(V[q-3],V[q]);break;case 89:this.$=V[q-5],re.setLink(V[q-4],V[q-2],V[q]),re.setTooltip(V[q-4],V[q-1]);break;case 90:this.$=V[q-2],re.setCssStyle(V[q-1],V[q]);break;case 91:re.setCssClass(V[q-1],V[q]);break;case 92:this.$=[V[q]];break;case 93:V[q-2].push(V[q]),this.$=V[q-2];break;case 95:this.$=V[q-1]+V[q];break}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,18:21,19:40,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:r,37:n,38:22,42:i,43:23,46:a,47:s,49:l,50:u,52:h,54:f,55:d,58:p,60:m,61:g,62:y,63:v,73:x,74:b,76:w,80:C,81:T,84:E,99:A,101:S,102:_},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(I,[2,5],{8:[1,48]}),{8:[1,49]},t(D,[2,18],{22:[1,50]}),t(D,[2,20]),t(D,[2,21]),t(D,[2,22]),t(D,[2,23]),t(D,[2,24]),t(D,[2,25]),t(D,[2,26]),t(D,[2,27]),t(D,[2,28]),t(D,[2,29]),{34:[1,51]},{36:[1,52]},t(D,[2,32]),t(D,[2,48],{51:53,64:56,65:57,13:[1,54],22:[1,55],66:k,67:L,68:R,69:O,70:M,71:B,72:F}),{39:[1,65]},t(P,[2,39],{39:[1,67],44:[1,66]}),t(D,[2,50]),t(D,[2,51]),{16:68,58:p,84:E,99:A,101:S},{16:39,18:69,19:40,58:p,84:E,99:A,101:S,102:_},{16:39,18:70,19:40,58:p,84:E,99:A,101:S,102:_},{16:39,18:71,19:40,58:p,84:E,99:A,101:S,102:_},{58:[1,72]},{13:[1,73]},{16:39,18:74,19:40,58:p,84:E,99:A,101:S,102:_},{13:z,53:75},{56:77,58:[1,78]},t(D,[2,61]),t(D,[2,62]),t(D,[2,63]),t(D,[2,64]),t($,[2,12],{16:39,19:40,18:80,17:[1,79],20:[1,81],58:p,84:E,99:A,101:S,102:_}),t($,[2,14],{20:[1,82]}),{15:83,16:84,58:p,84:E,99:A,101:S},{16:39,18:85,19:40,58:p,84:E,99:A,101:S,102:_},t(H,[2,118]),t(H,[2,119]),t(H,[2,120]),t(H,[2,121]),t([1,8,9,12,13,20,22,39,41,44,66,67,68,69,70,71,72,77,79],[2,122]),t(I,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,18:21,38:22,43:23,16:39,19:40,5:86,33:e,35:r,37:n,42:i,46:a,47:s,49:l,50:u,52:h,54:f,55:d,58:p,60:m,61:g,62:y,63:v,73:x,74:b,76:w,80:C,81:T,84:E,99:A,101:S,102:_}),{5:87,10:5,16:39,18:21,19:40,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:r,37:n,38:22,42:i,43:23,46:a,47:s,49:l,50:u,52:h,54:f,55:d,58:p,60:m,61:g,62:y,63:v,73:x,74:b,76:w,80:C,81:T,84:E,99:A,101:S,102:_},t(D,[2,19]),t(D,[2,30]),t(D,[2,31]),{13:[1,89],16:39,18:88,19:40,58:p,84:E,99:A,101:S,102:_},{51:90,64:56,65:57,66:k,67:L,68:R,69:O,70:M,71:B,72:F},t(D,[2,49]),{65:91,71:B,72:F},t(Q,[2,68],{64:92,66:k,67:L,68:R,69:O,70:M}),t(j,[2,69]),t(j,[2,70]),t(j,[2,71]),t(j,[2,72]),t(j,[2,73]),t(ie,[2,74]),t(ie,[2,75]),{8:[1,94],24:95,40:93,43:23,46:a},{16:96,58:p,84:E,99:A,101:S},{45:97,49:ne},{48:[1,99]},{13:[1,100]},{13:[1,101]},{77:[1,102],79:[1,103]},{22:le,57:104,58:he,80:K,82:105,83:106,84:X,85:te,86:J,87:se,88:ue,89:Z},{58:[1,116]},{13:z,53:117},t(D,[2,57]),t(D,[2,123]),{22:le,57:118,58:he,59:[1,119],80:K,82:105,83:106,84:X,85:te,86:J,87:se,88:ue,89:Z},t(Se,[2,59]),{16:39,18:120,19:40,58:p,84:E,99:A,101:S,102:_},t($,[2,15]),t($,[2,16]),t($,[2,17]),{39:[2,35]},{15:122,16:84,17:[1,121],39:[2,9],58:p,84:E,99:A,101:S},t(ce,[2,43],{11:123,12:[1,124]}),t(I,[2,7]),{9:[1,125]},t(ae,[2,52]),{16:39,18:126,19:40,58:p,84:E,99:A,101:S,102:_},{13:[1,128],16:39,18:127,19:40,58:p,84:E,99:A,101:S,102:_},t(Q,[2,67],{64:129,66:k,67:L,68:R,69:O,70:M}),t(Q,[2,66]),{41:[1,130]},{24:95,40:131,43:23,46:a},{8:[1,132],41:[2,36]},t(P,[2,40],{39:[1,133]}),{41:[1,134]},{41:[2,46],45:135,49:ne},{16:39,18:136,19:40,58:p,84:E,99:A,101:S,102:_},t(D,[2,76],{13:[1,137]}),t(D,[2,78],{13:[1,139],75:[1,138]}),t(D,[2,82],{13:[1,140],78:[1,141]}),{13:[1,142]},t(D,[2,90],{59:Oe}),t(ge,[2,92],{83:144,22:le,58:he,80:K,84:X,85:te,86:J,87:se,88:ue,89:Z}),t(ze,[2,94]),t(ze,[2,96]),t(ze,[2,97]),t(ze,[2,98]),t(ze,[2,99]),t(ze,[2,100]),t(ze,[2,101]),t(ze,[2,102]),t(ze,[2,103]),t(ze,[2,104]),t(D,[2,91]),t(D,[2,56]),t(D,[2,58],{59:Oe}),{58:[1,145]},t($,[2,13]),{15:146,16:84,58:p,84:E,99:A,101:S},{39:[2,11]},t(ce,[2,44]),{13:[1,147]},{1:[2,4]},t(ae,[2,54]),t(ae,[2,53]),{16:39,18:148,19:40,58:p,84:E,99:A,101:S,102:_},t(Q,[2,65]),t(D,[2,33]),{41:[1,149]},{24:95,40:150,41:[2,37],43:23,46:a},{45:151,49:ne},t(P,[2,41]),{41:[2,47]},t(D,[2,45]),t(D,[2,77]),t(D,[2,79]),t(D,[2,80],{75:[1,152]}),t(D,[2,83]),t(D,[2,84],{13:[1,153]}),t(D,[2,86],{13:[1,155],75:[1,154]}),{22:le,58:he,80:K,82:156,83:106,84:X,85:te,86:J,87:se,88:ue,89:Z},t(ze,[2,95]),t(Se,[2,60]),{39:[2,10]},{14:[1,157]},t(ae,[2,55]),t(D,[2,34]),{41:[2,38]},{41:[1,158]},t(D,[2,81]),t(D,[2,85]),t(D,[2,87]),t(D,[2,88],{75:[1,159]}),t(ge,[2,93],{83:144,22:le,58:he,80:K,84:X,85:te,86:J,87:se,88:ue,89:Z}),t(ce,[2,8]),t(P,[2,42]),t(D,[2,89])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],83:[2,35],122:[2,11],125:[2,4],135:[2,47],146:[2,10],150:[2,38]},parseError:o(function(be,W){if(W.recoverable)this.trace(be);else{var de=new Error(be);throw de.hash=W,de}},"parseError"),parse:o(function(be){var W=this,de=[0],re=[],oe=[null],V=[],xe=this.table,q="",pe=0,ve=0,Pe=0,_e=2,we=1,Ve=V.slice.call(arguments,1),De=Object.create(this.lexer),qe={yy:{}};for(var at in this.yy)Object.prototype.hasOwnProperty.call(this.yy,at)&&(qe.yy[at]=this.yy[at]);De.setInput(be,qe.yy),qe.yy.lexer=De,qe.yy.parser=this,typeof De.yylloc>"u"&&(De.yylloc={});var Rt=De.yylloc;V.push(Rt);var st=De.options&&De.options.ranges;typeof qe.yy.parseError=="function"?this.parseError=qe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ue(Tt){de.length=de.length-2*Tt,oe.length=oe.length-Tt,V.length=V.length-Tt}o(Ue,"popStack");function ct(){var Tt;return Tt=re.pop()||De.lex()||we,typeof Tt!="number"&&(Tt instanceof Array&&(re=Tt,Tt=re.pop()),Tt=W.symbols_[Tt]||Tt),Tt}o(ct,"lex");for(var We,ot,Yt,bt,Mt,xt,ut={},Et,ft,yt,nt;;){if(Yt=de[de.length-1],this.defaultActions[Yt]?bt=this.defaultActions[Yt]:((We===null||typeof We>"u")&&(We=ct()),bt=xe[Yt]&&xe[Yt][We]),typeof bt>"u"||!bt.length||!bt[0]){var dn="";nt=[];for(Et in xe[Yt])this.terminals_[Et]&&Et>_e&&nt.push("'"+this.terminals_[Et]+"'");De.showPosition?dn="Parse error on line "+(pe+1)+`: +`+De.showPosition()+` +Expecting `+nt.join(", ")+", got '"+(this.terminals_[We]||We)+"'":dn="Parse error on line "+(pe+1)+": Unexpected "+(We==we?"end of input":"'"+(this.terminals_[We]||We)+"'"),this.parseError(dn,{text:De.match,token:this.terminals_[We]||We,line:De.yylineno,loc:Rt,expected:nt})}if(bt[0]instanceof Array&&bt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Yt+", token: "+We);switch(bt[0]){case 1:de.push(We),oe.push(De.yytext),V.push(De.yylloc),de.push(bt[1]),We=null,ot?(We=ot,ot=null):(ve=De.yyleng,q=De.yytext,pe=De.yylineno,Rt=De.yylloc,Pe>0&&Pe--);break;case 2:if(ft=this.productions_[bt[1]][1],ut.$=oe[oe.length-ft],ut._$={first_line:V[V.length-(ft||1)].first_line,last_line:V[V.length-1].last_line,first_column:V[V.length-(ft||1)].first_column,last_column:V[V.length-1].last_column},st&&(ut._$.range=[V[V.length-(ft||1)].range[0],V[V.length-1].range[1]]),xt=this.performAction.apply(ut,[q,ve,pe,qe.yy,bt[1],oe,V].concat(Ve)),typeof xt<"u")return xt;ft&&(de=de.slice(0,-1*ft*2),oe=oe.slice(0,-1*ft),V=V.slice(0,-1*ft)),de.push(this.productions_[bt[1]][0]),oe.push(ut.$),V.push(ut._$),yt=xe[de[de.length-2]][de[de.length-1]],de.push(yt);break;case 3:return!0}}return!0},"parse")},$e=function(){var Ie={EOF:1,parseError:o(function(W,de){if(this.yy.parser)this.yy.parser.parseError(W,de);else throw new Error(W)},"parseError"),setInput:o(function(be,W){return this.yy=W||this.yy||{},this._input=be,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},"setInput"),input:o(function(){var be=this._input[0];this.yytext+=be,this.yyleng++,this.offset++,this.match+=be,this.matched+=be;var W=be.match(/(?:\r\n?|\n).*/g);return W?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),be},"input"),unput:o(function(be){var W=be.length,de=be.split(/(?:\r\n?|\n)/g);this._input=be+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-W),this.offset-=W;var re=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),de.length-1&&(this.yylineno-=de.length-1);var oe=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:de?(de.length===re.length?this.yylloc.first_column:0)+re[re.length-de.length].length-de[0].length:this.yylloc.first_column-W},this.options.ranges&&(this.yylloc.range=[oe[0],oe[0]+this.yyleng-W]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(be){this.unput(this.match.slice(be))},"less"),pastInput:o(function(){var be=this.matched.substr(0,this.matched.length-this.match.length);return(be.length>20?"...":"")+be.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var be=this.match;return be.length<20&&(be+=this._input.substr(0,20-be.length)),(be.substr(0,20)+(be.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var be=this.pastInput(),W=new Array(be.length+1).join("-");return be+this.upcomingInput()+` +`+W+"^"},"showPosition"),test_match:o(function(be,W){var de,re,oe;if(this.options.backtrack_lexer&&(oe={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&&(oe.yylloc.range=this.yylloc.range.slice(0))),re=be[0].match(/(?:\r\n?|\n).*/g),re&&(this.yylineno+=re.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:re?re[re.length-1].length-re[re.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+be[0].length},this.yytext+=be[0],this.match+=be[0],this.matches=be,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(be[0].length),this.matched+=be[0],de=this.performAction.call(this,this.yy,this,W,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),de)return de;if(this._backtrack){for(var V in oe)this[V]=oe[V];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var be,W,de,re;this._more||(this.yytext="",this.match="");for(var oe=this._currentRules(),V=0;VW[0].length)){if(W=de,re=V,this.options.backtrack_lexer){if(be=this.test_match(de,oe[V]),be!==!1)return be;if(this._backtrack){W=!1;continue}else return!1}else if(!this.options.flex)break}return W?(be=this.test_match(W,oe[re]),be!==!1?be:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var W=this.next();return W||this.lex()},"lex"),begin:o(function(W){this.conditionStack.push(W)},"begin"),popState:o(function(){var W=this.conditionStack.length-1;return W>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(W){return W=this.conditionStack.length-1-Math.abs(W||0),W>=0?this.conditionStack[W]:"INITIAL"},"topState"),pushState:o(function(W){this.begin(W)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(W,de,re,oe){var V=oe;switch(re){case 0:return 60;case 1:return 61;case 2:return 62;case 3:return 63;case 4:break;case 5:break;case 6:return this.begin("acc_title"),33;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),35;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 77;case 22:this.popState();break;case 23:return 78;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 80;case 28:return 55;case 29:return this.begin("namespace"),42;break;case 30:return this.popState(),8;break;case 31:break;case 32:return this.begin("namespace-body"),39;break;case 33:return this.popState(),41;break;case 34:return"EOF_IN_STRUCT";case 35:return 8;case 36:break;case 37:return"EDGE_STATE";case 38:return this.begin("class"),46;break;case 39:return this.popState(),8;break;case 40:break;case 41:return this.popState(),this.popState(),41;break;case 42:return this.begin("class-body"),39;break;case 43:return this.popState(),41;break;case 44:return"EOF_IN_STRUCT";case 45:return"EDGE_STATE";case 46:return"OPEN_IN_STRUCT";case 47:break;case 48:return"MEMBER";case 49:return 81;case 50:return 73;case 51:return 74;case 52:return 76;case 53:return 52;case 54:return 54;case 55:return 47;case 56:return 48;case 57:return 79;case 58:this.popState();break;case 59:return"GENERICTYPE";case 60:this.begin("generic");break;case 61:this.popState();break;case 62:return"BQUOTE_STR";case 63:this.begin("bqstring");break;case 64:return 75;case 65:return 75;case 66:return 75;case 67:return 75;case 68:return 67;case 69:return 67;case 70:return 69;case 71:return 69;case 72:return 68;case 73:return 66;case 74:return 70;case 75:return 71;case 76:return 72;case 77:return 22;case 78:return 44;case 79:return 99;case 80:return 17;case 81:return"PLUS";case 82:return 85;case 83:return 59;case 84:return 88;case 85:return 88;case 86:return 89;case 87:return"EQUALS";case 88:return"EQUALS";case 89:return 58;case 90:return 12;case 91:return 14;case 92:return"PUNCTUATION";case 93:return 84;case 94:return 101;case 95:return 87;case 96:return 87;case 97:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\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]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?: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)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,33,34,35,36,37,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},namespace:{rules:[26,29,30,31,32,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},"class-body":{rules:[26,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},class:{rules:[26,39,40,41,42,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr:{rules:[9,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_title:{rules:[7,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_args:{rules:[22,23,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_name:{rules:[19,20,21,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},href:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},struct:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},generic:{rules:[26,49,50,51,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,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},bqstring:{rules:[26,49,50,51,52,53,54,55,56,57,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},string:{rules:[24,25,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,38,49,50,51,52,53,54,55,56,57,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,96,97],inclusive:!0}}};return Ie}();He.lexer=$e;function Re(){this.yy={}}return o(Re,"Parser"),Re.prototype=He,He.Parser=Re,new Re}();MO.parser=MO;L6=MO});var Dfe,kb,Lfe=N(()=>{"use strict";zt();gr();Dfe=["#","+","~","-",""],kb=class{static{o(this,"ClassMember")}constructor(e,r){this.memberType=r,this.visibility="",this.classifier="",this.text="";let n=Tr(e,me());this.parseMember(n)}getDisplayDetails(){let e=this.visibility+ec(this.id);this.memberType==="method"&&(e+=`(${ec(this.parameters.trim())})`,this.returnType&&(e+=" : "+ec(this.returnType))),e=e.trim();let r=this.parseClassifier();return{displayText:e,cssStyle:r}}parseMember(e){let r="";if(this.memberType==="method"){let a=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(e);if(a){let s=a[1]?a[1].trim():"";if(Dfe.includes(s)&&(this.visibility=s),this.id=a[2],this.parameters=a[3]?a[3].trim():"",r=a[4]?a[4].trim():"",this.returnType=a[5]?a[5].trim():"",r===""){let l=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(l)&&(r=l,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{let i=e.length,a=e.substring(0,1),s=e.substring(i-1);Dfe.includes(a)&&(this.visibility=a),/[$*]/.exec(s)&&(r=s),this.id=e.substring(this.visibility===""?0:1,r===""?i:i-1)}this.classifier=r,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();let n=`${this.visibility?"\\"+this.visibility:""}${ec(this.id)}${this.memberType==="method"?`(${ec(this.parameters)})${this.returnType?" : "+ec(this.returnType):""}`:""}`;this.text=n.replaceAll("<","<").replaceAll(">",">"),this.text.startsWith("\\<")&&(this.text=this.text.replace("\\<","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}}});var R6,Rfe,Lp,D1,OO=N(()=>{"use strict";dr();vt();zt();gr();ir();mi();Lfe();R6="classId-",Rfe=0,Lp=o(t=>Ze.sanitizeText(t,me()),"sanitizeText"),D1=class{constructor(){this.relations=[];this.classes=new Map;this.styleClasses=new Map;this.notes=[];this.interfaces=[];this.namespaces=new Map;this.namespaceCounter=0;this.functions=[];this.lineType={LINE:0,DOTTED_LINE:1};this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4};this.setupToolTips=o(e=>{let r=Ge(".mermaidTooltip");(r._groups||r)[0][0]===null&&(r=Ge("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),Ge(e).select("svg").selectAll("g.node").on("mouseover",a=>{let s=Ge(a.currentTarget);if(s.attr("title")===null)return;let u=this.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.text(s.attr("title")).style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.top-14+document.body.scrollTop+"px"),r.html(r.html().replace(/<br\/>/g,"
    ")),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),Ge(a.currentTarget).classed("hover",!1)})},"setupToolTips");this.direction="TB";this.setAccTitle=Lr;this.getAccTitle=Rr;this.setAccDescription=Nr;this.getAccDescription=Mr;this.setDiagramTitle=$r;this.getDiagramTitle=Ir;this.getConfig=o(()=>me().class,"getConfig");this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{o(this,"ClassDB")}splitClassNameAndType(e){let r=Ze.sanitizeText(e,me()),n="",i=r;if(r.indexOf("~")>0){let a=r.split("~");i=Lp(a[0]),n=Lp(a[1])}return{className:i,type:n}}setClassLabel(e,r){let n=Ze.sanitizeText(e,me());r&&(r=Lp(r));let{className:i}=this.splitClassNameAndType(n);this.classes.get(i).label=r,this.classes.get(i).text=`${r}${this.classes.get(i).type?`<${this.classes.get(i).type}>`:""}`}addClass(e){let r=Ze.sanitizeText(e,me()),{className:n,type:i}=this.splitClassNameAndType(r);if(this.classes.has(n))return;let a=Ze.sanitizeText(n,me());this.classes.set(a,{id:a,type:i,label:a,text:`${a}${i?`<${i}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:R6+a+"-"+Rfe}),Rfe++}addInterface(e,r){let n={id:`interface${this.interfaces.length}`,label:e,classId:r};this.interfaces.push(n)}lookUpDomId(e){let r=Ze.sanitizeText(e,me());if(this.classes.has(r))return this.classes.get(r).domId;throw new Error("Class not found: "+r)}clear(){this.relations=[],this.classes=new Map,this.notes=[],this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.direction="TB",Ar()}getClass(e){return this.classes.get(e)}getClasses(){return this.classes}getRelations(){return this.relations}getNotes(){return this.notes}addRelation(e){Y.debug("Adding relation: "+JSON.stringify(e));let r=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];e.relation.type1===this.relationType.LOLLIPOP&&!r.includes(e.relation.type2)?(this.addClass(e.id2),this.addInterface(e.id1,e.id2),e.id1=`interface${this.interfaces.length-1}`):e.relation.type2===this.relationType.LOLLIPOP&&!r.includes(e.relation.type1)?(this.addClass(e.id1),this.addInterface(e.id2,e.id1),e.id2=`interface${this.interfaces.length-1}`):(this.addClass(e.id1),this.addClass(e.id2)),e.id1=this.splitClassNameAndType(e.id1).className,e.id2=this.splitClassNameAndType(e.id2).className,e.relationTitle1=Ze.sanitizeText(e.relationTitle1.trim(),me()),e.relationTitle2=Ze.sanitizeText(e.relationTitle2.trim(),me()),this.relations.push(e)}addAnnotation(e,r){let n=this.splitClassNameAndType(e).className;this.classes.get(n).annotations.push(r)}addMember(e,r){this.addClass(e);let n=this.splitClassNameAndType(e).className,i=this.classes.get(n);if(typeof r=="string"){let a=r.trim();a.startsWith("<<")&&a.endsWith(">>")?i.annotations.push(Lp(a.substring(2,a.length-2))):a.indexOf(")")>0?i.methods.push(new kb(a,"method")):a&&i.members.push(new kb(a,"attribute"))}}addMembers(e,r){Array.isArray(r)&&(r.reverse(),r.forEach(n=>this.addMember(e,n)))}addNote(e,r){let n={id:`note${this.notes.length}`,class:r,text:e};this.notes.push(n)}cleanupLabel(e){return e.startsWith(":")&&(e=e.substring(1)),Lp(e.trim())}setCssClass(e,r){e.split(",").forEach(n=>{let i=n;/\d/.exec(n[0])&&(i=R6+i);let a=this.classes.get(i);a&&(a.cssClasses+=" "+r)})}defineClass(e,r){for(let n of e){let i=this.styleClasses.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.styleClasses.set(n,i)),r&&r.forEach(a=>{if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.classes.forEach(a=>{a.cssClasses.includes(n)&&a.styles.push(...r.flatMap(s=>s.split(",")))})}}setTooltip(e,r){e.split(",").forEach(n=>{r!==void 0&&(this.classes.get(n).tooltip=Lp(r))})}getTooltip(e,r){return r&&this.namespaces.has(r)?this.namespaces.get(r).classes.get(e).tooltip:this.classes.get(e).tooltip}setLink(e,r,n){let i=me();e.split(",").forEach(a=>{let s=a;/\d/.exec(a[0])&&(s=R6+s);let l=this.classes.get(s);l&&(l.link=Gt.formatUrl(r,i),i.securityLevel==="sandbox"?l.linkTarget="_top":typeof n=="string"?l.linkTarget=Lp(n):l.linkTarget="_blank")}),this.setCssClass(e,"clickable")}setClickEvent(e,r,n){e.split(",").forEach(i=>{this.setClickFunc(i,r,n),this.classes.get(i).haveCallback=!0}),this.setCssClass(e,"clickable")}setClickFunc(e,r,n){let i=Ze.sanitizeText(e,me());if(me().securityLevel!=="loose"||r===void 0)return;let s=i;if(this.classes.has(s)){let l=this.lookUpDomId(s),u=[];if(typeof n=="string"){u=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let h=0;h{let h=document.querySelector(`[id="${l}"]`);h!==null&&h.addEventListener("click",()=>{Gt.runFunc(r,...u)},!1)})}}bindFunctions(e){this.functions.forEach(r=>{r(e)})}getDirection(){return this.direction}setDirection(e){this.direction=e}addNamespace(e){this.namespaces.has(e)||(this.namespaces.set(e,{id:e,classes:new Map,children:{},domId:R6+e+"-"+this.namespaceCounter}),this.namespaceCounter++)}getNamespace(e){return this.namespaces.get(e)}getNamespaces(){return this.namespaces}addClassesToNamespace(e,r){if(this.namespaces.has(e))for(let n of r){let{className:i}=this.splitClassNameAndType(n);this.classes.get(i).parent=e,this.namespaces.get(e).classes.set(i,this.classes.get(i))}}setCssStyle(e,r){let n=this.classes.get(e);if(!(!r||!n))for(let i of r)i.includes(",")?n.styles.push(...i.split(",")):n.styles.push(i)}getArrowMarker(e){let r;switch(e){case 0:r="aggregation";break;case 1:r="extension";break;case 2:r="composition";break;case 3:r="dependency";break;case 4:r="lollipop";break;default:r="none"}return r}getData(){let e=[],r=[],n=me();for(let a of this.namespaces.keys()){let s=this.namespaces.get(a);if(s){let l={id:s.id,label:s.id,isGroup:!0,padding:n.class.padding??16,shape:"rect",cssStyles:["fill: none","stroke: black"],look:n.look};e.push(l)}}for(let a of this.classes.keys()){let s=this.classes.get(a);if(s){let l=s;l.parentId=s.parent,l.look=n.look,e.push(l)}}let i=0;for(let a of this.notes){i++;let s={id:a.id,label:a.text,isGroup:!1,shape:"note",padding:n.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${n.themeVariables.noteBkgColor}`,`stroke: ${n.themeVariables.noteBorderColor}`],look:n.look};e.push(s);let l=this.classes.get(a.class)?.id??"";if(l){let u={id:`edgeNote${i}`,start:a.id,end:l,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:n.look};r.push(u)}}for(let a of this.interfaces){let s={id:a.id,label:a.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:n.look};e.push(s)}i=0;for(let a of this.relations){i++;let s={id:$h(a.id1,a.id2,{prefix:"id",counter:i}),start:a.id1,end:a.id2,type:"normal",label:a.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(a.relation.type1),arrowTypeEnd:this.getArrowMarker(a.relation.type2),startLabelRight:a.relationTitle1==="none"?"":a.relationTitle1,endLabelLeft:a.relationTitle2==="none"?"":a.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:a.style||"",pattern:a.relation.lineType==1?"dashed":"solid",look:n.look};r.push(s)}return{nodes:e,edges:r,other:{},config:n,direction:this.getDirection()}}}});var UVe,N6,PO=N(()=>{"use strict";UVe=o(t=>`g.classGroup text { + fill: ${t.nodeBorder||t.classText}; + stroke: none; + font-family: ${t.fontFamily}; + font-size: 10px; + + .title { + font-weight: bolder; + } + +} + +.nodeLabel, .edgeLabel { + color: ${t.classText}; +} +.edgeLabel .label rect { + fill: ${t.mainBkg}; +} +.label text { + fill: ${t.classText}; +} + +.labelBkg { + background: ${t.mainBkg}; +} +.edgeLabel .label span { + background: ${t.mainBkg}; +} + +.classTitle { + font-weight: bolder; +} +.node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + stroke-width: 1px; + } + + +.divider { + stroke: ${t.nodeBorder}; + stroke-width: 1; +} + +g.clickable { + cursor: pointer; +} + +g.classGroup rect { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; +} + +g.classGroup line { + stroke: ${t.nodeBorder}; + stroke-width: 1; +} + +.classLabel .box { + stroke: none; + stroke-width: 0; + fill: ${t.mainBkg}; + opacity: 0.5; +} + +.classLabel .label { + fill: ${t.nodeBorder}; + font-size: 10px; +} + +.relation { + stroke: ${t.lineColor}; + stroke-width: 1; + fill: none; +} + +.dashed-line{ + stroke-dasharray: 3; +} + +.dotted-line{ + stroke-dasharray: 1 2; +} + +#compositionStart, .composition { + fill: ${t.lineColor} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#compositionEnd, .composition { + fill: ${t.lineColor} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${t.lineColor} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${t.lineColor} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#extensionStart, .extension { + fill: transparent !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#extensionEnd, .extension { + fill: transparent !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#aggregationStart, .aggregation { + fill: transparent !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#aggregationEnd, .aggregation { + fill: transparent !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#lollipopStart, .lollipop { + fill: ${t.mainBkg} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +#lollipopEnd, .lollipop { + fill: ${t.mainBkg} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +.edgeTerminals { + font-size: 11px; + line-height: initial; +} + +.classTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; +} +`,"getStyles"),N6=UVe});var HVe,WVe,qVe,M6,BO=N(()=>{"use strict";zt();vt();gm();Yd();$m();ir();HVe=o((t,e="TB")=>{if(!t.doc)return e;let r=e;for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),WVe=o(function(t,e){return e.db.getClasses()},"getClasses"),qVe=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing class diagram (v3)",e);let{securityLevel:i,state:a,layout:s}=me(),l=n.db.getData(),u=yc(e,i);l.type=n.type,l.layoutAlgorithm=nf(s),l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["aggregation","extension","composition","dependency","lollipop"],l.diagramId=e,await Cc(l,u);let h=8;Gt.insertTitle(u,"classDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ac(u,h,"classDiagram",a?.useMaxWidth??!0)},"draw"),M6={getClasses:WVe,draw:qVe,getDir:HVe}});var Nfe={};hr(Nfe,{diagram:()=>YVe});var YVe,Mfe=N(()=>{"use strict";IO();OO();PO();BO();YVe={parser:L6,get db(){return new D1},renderer:M6,styles:N6,init:o(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var Pfe={};hr(Pfe,{diagram:()=>QVe});var QVe,Bfe=N(()=>{"use strict";IO();OO();PO();BO();QVe={parser:L6,get db(){return new D1},renderer:M6,styles:N6,init:o(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var FO,I6,$O=N(()=>{"use strict";FO=function(){var t=o(function(F,P,z,$){for(z=z||{},$=F.length;$--;z[F[$]]=P);return z},"o"),e=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,16],u=[1,17],h=[1,18],f=[1,19],d=[1,32],p=[1,20],m=[1,21],g=[1,22],y=[1,23],v=[1,24],x=[1,26],b=[1,27],w=[1,28],C=[1,29],T=[1,30],E=[1,31],A=[1,34],S=[1,35],_=[1,36],I=[1,37],D=[1,33],k=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],L=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],R=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],O={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":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,style:42,STYLE_IDS:43,STYLEDEF_STYLEOPTS:44,class:45,CLASSENTITY_IDS:46,STYLECLASS:47,direction_tb:48,direction_bt:49,direction_rl:50,direction_lr:51,eol:52,";":53,EDGE_STATE:54,STYLE_SEPARATOR:55,left_of:56,right_of:57,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"-->",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:"style",43:"STYLE_IDS",44:"STYLEDEF_STYLEOPTS",45:"class",46:"CLASSENTITY_IDS",47:"STYLECLASS",48:"direction_tb",49:"direction_bt",50:"direction_rl",51:"direction_lr",53:";",54:"EDGE_STATE",55:"STYLE_SEPARATOR",56:"left_of",57:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[52,1],[52,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:o(function(P,z,$,H,Q,j,ie){var ne=j.length-1;switch(Q){case 3:return H.setRootDoc(j[ne]),j[ne];break;case 4:this.$=[];break;case 5:j[ne]!="nl"&&(j[ne-1].push(j[ne]),this.$=j[ne-1]);break;case 6:case 7:this.$=j[ne];break;case 8:this.$="nl";break;case 12:this.$=j[ne];break;case 13:let X=j[ne-1];X.description=H.trimColon(j[ne]),this.$=X;break;case 14:this.$={stmt:"relation",state1:j[ne-2],state2:j[ne]};break;case 15:let te=H.trimColon(j[ne]);this.$={stmt:"relation",state1:j[ne-3],state2:j[ne-1],description:te};break;case 19:this.$={stmt:"state",id:j[ne-3],type:"default",description:"",doc:j[ne-1]};break;case 20:var le=j[ne],he=j[ne-2].trim();if(j[ne].match(":")){var K=j[ne].split(":");le=K[0],he=[he,K[1]]}this.$={stmt:"state",id:le,type:"default",description:he};break;case 21:this.$={stmt:"state",id:j[ne-3],type:"default",description:j[ne-5],doc:j[ne-1]};break;case 22:this.$={stmt:"state",id:j[ne],type:"fork"};break;case 23:this.$={stmt:"state",id:j[ne],type:"join"};break;case 24:this.$={stmt:"state",id:j[ne],type:"choice"};break;case 25:this.$={stmt:"state",id:H.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:j[ne-1].trim(),note:{position:j[ne-2].trim(),text:j[ne].trim()}};break;case 29:this.$=j[ne].trim(),H.setAccTitle(this.$);break;case 30:case 31:this.$=j[ne].trim(),H.setAccDescription(this.$);break;case 32:case 33:this.$={stmt:"classDef",id:j[ne-1].trim(),classes:j[ne].trim()};break;case 34:this.$={stmt:"style",id:j[ne-1].trim(),styleClass:j[ne].trim()};break;case 35:this.$={stmt:"applyClass",id:j[ne-1].trim(),styleClass:j[ne].trim()};break;case 36:H.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 37:H.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 38:H.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 39:H.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 42:case 43:this.$={stmt:"state",id:j[ne].trim(),type:"default",description:""};break;case 44:this.$={stmt:"state",id:j[ne-2].trim(),classes:[j[ne].trim()],type:"default",description:""};break;case 45:this.$={stmt:"state",id:j[ne-2].trim(),classes:[j[ne].trim()],type:"default",description:""};break}},"anonymous"),table:[{3:1,4:e,5:r,6:n},{1:[3]},{3:5,4:e,5:r,6:n},{3:6,4:e,5:r,6:n},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:w,38:C,42:T,45:E,48:A,49:S,50:_,51:I,54:D},t(k,[2,5]),{9:38,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:w,38:C,42:T,45:E,48:A,49:S,50:_,51:I,54:D},t(k,[2,7]),t(k,[2,8]),t(k,[2,9]),t(k,[2,10]),t(k,[2,11]),t(k,[2,12],{14:[1,39],15:[1,40]}),t(k,[2,16]),{18:[1,41]},t(k,[2,18],{20:[1,42]}),{23:[1,43]},t(k,[2,22]),t(k,[2,23]),t(k,[2,24]),t(k,[2,25]),{30:44,31:[1,45],56:[1,46],57:[1,47]},t(k,[2,28]),{34:[1,48]},{36:[1,49]},t(k,[2,31]),{39:[1,50],41:[1,51]},{43:[1,52]},{46:[1,53]},t(L,[2,42],{55:[1,54]}),t(L,[2,43],{55:[1,55]}),t(k,[2,36]),t(k,[2,37]),t(k,[2,38]),t(k,[2,39]),t(k,[2,6]),t(k,[2,13]),{13:56,24:d,54:D},t(k,[2,17]),t(R,i,{7:57}),{24:[1,58]},{24:[1,59]},{23:[1,60]},{24:[2,46]},{24:[2,47]},t(k,[2,29]),t(k,[2,30]),{40:[1,61]},{40:[1,62]},{44:[1,63]},{47:[1,64]},{24:[1,65]},{24:[1,66]},t(k,[2,14],{14:[1,67]}),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,68],22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:w,38:C,42:T,45:E,48:A,49:S,50:_,51:I,54:D},t(k,[2,20],{20:[1,69]}),{31:[1,70]},{24:[1,71]},t(k,[2,32]),t(k,[2,33]),t(k,[2,34]),t(k,[2,35]),t(L,[2,44]),t(L,[2,45]),t(k,[2,15]),t(k,[2,19]),t(R,i,{7:72}),t(k,[2,26]),t(k,[2,27]),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,73],22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:w,38:C,42:T,45:E,48:A,49:S,50:_,51:I,54:D},t(k,[2,21])],defaultActions:{5:[2,1],6:[2,2],46:[2,46],47:[2,47]},parseError:o(function(P,z){if(z.recoverable)this.trace(P);else{var $=new Error(P);throw $.hash=z,$}},"parseError"),parse:o(function(P){var z=this,$=[0],H=[],Q=[null],j=[],ie=this.table,ne="",le=0,he=0,K=0,X=2,te=1,J=j.slice.call(arguments,1),se=Object.create(this.lexer),ue={yy:{}};for(var Z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Z)&&(ue.yy[Z]=this.yy[Z]);se.setInput(P,ue.yy),ue.yy.lexer=se,ue.yy.parser=this,typeof se.yylloc>"u"&&(se.yylloc={});var Se=se.yylloc;j.push(Se);var ce=se.options&&se.options.ranges;typeof ue.yy.parseError=="function"?this.parseError=ue.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ae(xe){$.length=$.length-2*xe,Q.length=Q.length-xe,j.length=j.length-xe}o(ae,"popStack");function Oe(){var xe;return xe=H.pop()||se.lex()||te,typeof xe!="number"&&(xe instanceof Array&&(H=xe,xe=H.pop()),xe=z.symbols_[xe]||xe),xe}o(Oe,"lex");for(var ge,ze,He,$e,Re,Ie,be={},W,de,re,oe;;){if(He=$[$.length-1],this.defaultActions[He]?$e=this.defaultActions[He]:((ge===null||typeof ge>"u")&&(ge=Oe()),$e=ie[He]&&ie[He][ge]),typeof $e>"u"||!$e.length||!$e[0]){var V="";oe=[];for(W in ie[He])this.terminals_[W]&&W>X&&oe.push("'"+this.terminals_[W]+"'");se.showPosition?V="Parse error on line "+(le+1)+`: +`+se.showPosition()+` +Expecting `+oe.join(", ")+", got '"+(this.terminals_[ge]||ge)+"'":V="Parse error on line "+(le+1)+": Unexpected "+(ge==te?"end of input":"'"+(this.terminals_[ge]||ge)+"'"),this.parseError(V,{text:se.match,token:this.terminals_[ge]||ge,line:se.yylineno,loc:Se,expected:oe})}if($e[0]instanceof Array&&$e.length>1)throw new Error("Parse Error: multiple actions possible at state: "+He+", token: "+ge);switch($e[0]){case 1:$.push(ge),Q.push(se.yytext),j.push(se.yylloc),$.push($e[1]),ge=null,ze?(ge=ze,ze=null):(he=se.yyleng,ne=se.yytext,le=se.yylineno,Se=se.yylloc,K>0&&K--);break;case 2:if(de=this.productions_[$e[1]][1],be.$=Q[Q.length-de],be._$={first_line:j[j.length-(de||1)].first_line,last_line:j[j.length-1].last_line,first_column:j[j.length-(de||1)].first_column,last_column:j[j.length-1].last_column},ce&&(be._$.range=[j[j.length-(de||1)].range[0],j[j.length-1].range[1]]),Ie=this.performAction.apply(be,[ne,he,le,ue.yy,$e[1],Q,j].concat(J)),typeof Ie<"u")return Ie;de&&($=$.slice(0,-1*de*2),Q=Q.slice(0,-1*de),j=j.slice(0,-1*de)),$.push(this.productions_[$e[1]][0]),Q.push(be.$),j.push(be._$),re=ie[$[$.length-2]][$[$.length-1]],$.push(re);break;case 3:return!0}}return!0},"parse")},M=function(){var F={EOF:1,parseError:o(function(z,$){if(this.yy.parser)this.yy.parser.parseError(z,$);else throw new Error(z)},"parseError"),setInput:o(function(P,z){return this.yy=z||this.yy||{},this._input=P,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},"setInput"),input:o(function(){var P=this._input[0];this.yytext+=P,this.yyleng++,this.offset++,this.match+=P,this.matched+=P;var z=P.match(/(?:\r\n?|\n).*/g);return z?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),P},"input"),unput:o(function(P){var z=P.length,$=P.split(/(?:\r\n?|\n)/g);this._input=P+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-z),this.offset-=z;var H=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),$.length-1&&(this.yylineno-=$.length-1);var Q=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:$?($.length===H.length?this.yylloc.first_column:0)+H[H.length-$.length].length-$[0].length:this.yylloc.first_column-z},this.options.ranges&&(this.yylloc.range=[Q[0],Q[0]+this.yyleng-z]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(P){this.unput(this.match.slice(P))},"less"),pastInput:o(function(){var P=this.matched.substr(0,this.matched.length-this.match.length);return(P.length>20?"...":"")+P.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var P=this.match;return P.length<20&&(P+=this._input.substr(0,20-P.length)),(P.substr(0,20)+(P.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var P=this.pastInput(),z=new Array(P.length+1).join("-");return P+this.upcomingInput()+` +`+z+"^"},"showPosition"),test_match:o(function(P,z){var $,H,Q;if(this.options.backtrack_lexer&&(Q={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&&(Q.yylloc.range=this.yylloc.range.slice(0))),H=P[0].match(/(?:\r\n?|\n).*/g),H&&(this.yylineno+=H.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:H?H[H.length-1].length-H[H.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+P[0].length},this.yytext+=P[0],this.match+=P[0],this.matches=P,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(P[0].length),this.matched+=P[0],$=this.performAction.call(this,this.yy,this,z,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),$)return $;if(this._backtrack){for(var j in Q)this[j]=Q[j];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var P,z,$,H;this._more||(this.yytext="",this.match="");for(var Q=this._currentRules(),j=0;jz[0].length)){if(z=$,H=j,this.options.backtrack_lexer){if(P=this.test_match($,Q[j]),P!==!1)return P;if(this._backtrack){z=!1;continue}else return!1}else if(!this.options.flex)break}return z?(P=this.test_match(z,Q[H]),P!==!1?P:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var z=this.next();return z||this.lex()},"lex"),begin:o(function(z){this.conditionStack.push(z)},"begin"),popState:o(function(){var z=this.conditionStack.length-1;return z>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(z){return z=this.conditionStack.length-1-Math.abs(z||0),z>=0?this.conditionStack[z]:"INITIAL"},"topState"),pushState:o(function(z){this.begin(z)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(z,$,H,Q){var j=Q;switch(H){case 0:return 41;case 1:return 48;case 2:return 49;case 3:return 50;case 4:return 51;case 5:break;case 6:break;case 7:return 5;case 8:break;case 9:break;case 10:break;case 11:break;case 12:return this.pushState("SCALE"),17;break;case 13:return 18;case 14:this.popState();break;case 15:return this.begin("acc_title"),33;break;case 16:return this.popState(),"acc_title_value";break;case 17:return this.begin("acc_descr"),35;break;case 18:return this.popState(),"acc_descr_value";break;case 19:this.begin("acc_descr_multiline");break;case 20:this.popState();break;case 21:return"acc_descr_multiline_value";case 22:return this.pushState("CLASSDEF"),38;break;case 23:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 24:return this.popState(),this.pushState("CLASSDEFID"),39;break;case 25:return this.popState(),40;break;case 26:return this.pushState("CLASS"),45;break;case 27:return this.popState(),this.pushState("CLASS_STYLE"),46;break;case 28:return this.popState(),47;break;case 29:return this.pushState("STYLE"),42;break;case 30:return this.popState(),this.pushState("STYLEDEF_STYLES"),43;break;case 31:return this.popState(),44;break;case 32:return this.pushState("SCALE"),17;break;case 33:return 18;case 34:this.popState();break;case 35:this.pushState("STATE");break;case 36:return this.popState(),$.yytext=$.yytext.slice(0,-8).trim(),25;break;case 37:return this.popState(),$.yytext=$.yytext.slice(0,-8).trim(),26;break;case 38:return this.popState(),$.yytext=$.yytext.slice(0,-10).trim(),27;break;case 39:return this.popState(),$.yytext=$.yytext.slice(0,-8).trim(),25;break;case 40:return this.popState(),$.yytext=$.yytext.slice(0,-8).trim(),26;break;case 41:return this.popState(),$.yytext=$.yytext.slice(0,-10).trim(),27;break;case 42:return 48;case 43:return 49;case 44:return 50;case 45:return 51;case 46:this.pushState("STATE_STRING");break;case 47:return this.pushState("STATE_ID"),"AS";break;case 48:return this.popState(),"ID";break;case 49:this.popState();break;case 50:return"STATE_DESCR";case 51:return 19;case 52:this.popState();break;case 53:return this.popState(),this.pushState("struct"),20;break;case 54:break;case 55:return this.popState(),21;break;case 56:break;case 57:return this.begin("NOTE"),29;break;case 58:return this.popState(),this.pushState("NOTE_ID"),56;break;case 59:return this.popState(),this.pushState("NOTE_ID"),57;break;case 60:this.popState(),this.pushState("FLOATING_NOTE");break;case 61:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";break;case 62:break;case 63:return"NOTE_TEXT";case 64:return this.popState(),"ID";break;case 65:return this.popState(),this.pushState("NOTE_TEXT"),24;break;case 66:return this.popState(),$.yytext=$.yytext.substr(2).trim(),31;break;case 67:return this.popState(),$.yytext=$.yytext.slice(0,-8).trim(),31;break;case 68:return 6;case 69:return 6;case 70:return 16;case 71:return 54;case 72:return 24;case 73:return $.yytext=$.yytext.trim(),14;break;case 74:return 15;case 75:return 28;case 76:return 55;case 77:return 5;case 78:return"INVALID"}},"anonymous"),rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\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,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/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:[9,10],inclusive:!1},struct:{rules:[9,10,22,26,29,35,42,43,44,45,54,55,56,57,71,72,73,74,75],inclusive:!1},FLOATING_NOTE_ID:{rules:[64],inclusive:!1},FLOATING_NOTE:{rules:[61,62,63],inclusive:!1},NOTE_TEXT:{rules:[66,67],inclusive:!1},NOTE_ID:{rules:[65],inclusive:!1},NOTE:{rules:[58,59,60],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[31],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[30],inclusive:!1},CLASS_STYLE:{rules:[28],inclusive:!1},CLASS:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[25],inclusive:!1},CLASSDEF:{rules:[23,24],inclusive:!1},acc_descr_multiline:{rules:[20,21],inclusive:!1},acc_descr:{rules:[18],inclusive:!1},acc_title:{rules:[16],inclusive:!1},SCALE:{rules:[13,14,33,34],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[48],inclusive:!1},STATE_STRING:{rules:[49,50],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[9,10,36,37,38,39,40,41,46,47,51,52,53],inclusive:!1},ID:{rules:[9,10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,10,11,12,15,17,19,22,26,29,32,35,53,57,68,69,70,71,72,73,74,76,77,78],inclusive:!0}}};return F}();O.lexer=M;function B(){this.yy={}}return o(B,"Parser"),B.prototype=O,O.Parser=B,new B}();FO.parser=FO;I6=FO});var zfe,O6,zO,L1,Eb,Gfe,Vfe,Ufe,Rp,P6,GO,VO,UO,HO,WO,B6,F6,Hfe,Wfe,qO,YO,qfe,Yfe,R1,tUe,Xfe,XO,rUe,nUe,jfe,Kfe,iUe,Qfe,aUe,Zfe,jO,KO,Jfe,$6,ede,QO,z6=N(()=>{"use strict";zfe="TB",O6="TB",zO="dir",L1="state",Eb="relation",Gfe="classDef",Vfe="style",Ufe="applyClass",Rp="default",P6="divider",GO="fill:none",VO="fill: #333",UO="c",HO="text",WO="normal",B6="rect",F6="rectWithTitle",Hfe="stateStart",Wfe="stateEnd",qO="divider",YO="roundedWithTitle",qfe="note",Yfe="noteGroup",R1="statediagram",tUe="state",Xfe=`${R1}-${tUe}`,XO="transition",rUe="note",nUe="note-edge",jfe=`${XO} ${nUe}`,Kfe=`${R1}-${rUe}`,iUe="cluster",Qfe=`${R1}-${iUe}`,aUe="cluster-alt",Zfe=`${R1}-${aUe}`,jO="parent",KO="note",Jfe="state",$6="----",ede=`${$6}${KO}`,QO=`${$6}${jO}`});function ZO(t="",e=0,r="",n=$6){let i=r!==null&&r.length>0?`${n}${r}`:"";return`${Jfe}-${t}${i}-${e}`}function G6(t,e,r){if(!e.id||e.id===""||e.id==="")return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(i=>{if(r.get(i)){let a=r.get(i);e.cssCompiledStyles=[...e.cssCompiledStyles,...a.styles]}}));let n=t.find(i=>i.id===e.id);n?Object.assign(n,e):t.push(e)}function oUe(t){return t?.classes?.join(" ")??""}function lUe(t){return t?.styles??[]}var V6,xf,sUe,tde,N1,rde,nde=N(()=>{"use strict";zt();vt();gr();z6();V6=new Map,xf=0;o(ZO,"stateDomId");sUe=o((t,e,r,n,i,a,s,l)=>{Y.trace("items",e),e.forEach(u=>{switch(u.stmt){case L1:N1(t,u,r,n,i,a,s,l);break;case Rp:N1(t,u,r,n,i,a,s,l);break;case Eb:{N1(t,u.state1,r,n,i,a,s,l),N1(t,u.state2,r,n,i,a,s,l);let h={id:"edge"+xf,start:u.state1.id,end:u.state2.id,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:GO,labelStyle:"",label:Ze.sanitizeText(u.description,me()),arrowheadStyle:VO,labelpos:UO,labelType:HO,thickness:WO,classes:XO,look:s};i.push(h),xf++}break}})},"setupDoc"),tde=o((t,e=O6)=>{let r=e;if(t.doc)for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir");o(G6,"insertOrUpdateNode");o(oUe,"getClassesFromDbInfo");o(lUe,"getStylesFromDbInfo");N1=o((t,e,r,n,i,a,s,l)=>{let u=e.id,h=r.get(u),f=oUe(h),d=lUe(h);if(Y.info("dataFetcher parsedItem",e,h,d),u!=="root"){let p=B6;e.start===!0?p=Hfe:e.start===!1&&(p=Wfe),e.type!==Rp&&(p=e.type),V6.get(u)||V6.set(u,{id:u,shape:p,description:Ze.sanitizeText(u,me()),cssClasses:`${f} ${Xfe}`,cssStyles:d});let m=V6.get(u);e.description&&(Array.isArray(m.description)?(m.shape=F6,m.description.push(e.description)):m.description?.length>0?(m.shape=F6,m.description===u?m.description=[e.description]:m.description=[m.description,e.description]):(m.shape=B6,m.description=e.description),m.description=Ze.sanitizeTextOrArray(m.description,me())),m.description?.length===1&&m.shape===F6&&(m.type==="group"?m.shape=YO:m.shape=B6),!m.type&&e.doc&&(Y.info("Setting cluster for XCX",u,tde(e)),m.type="group",m.isGroup=!0,m.dir=tde(e),m.shape=e.type===P6?qO:YO,m.cssClasses=`${m.cssClasses} ${Qfe} ${a?Zfe:""}`);let g={labelStyle:"",shape:m.shape,label:m.description,cssClasses:m.cssClasses,cssCompiledStyles:[],cssStyles:m.cssStyles,id:u,dir:m.dir,domId:ZO(u,xf),type:m.type,isGroup:m.type==="group",padding:8,rx:10,ry:10,look:s};if(g.shape===qO&&(g.label=""),t&&t.id!=="root"&&(Y.trace("Setting node ",u," to be child of its parent ",t.id),g.parentId=t.id),g.centerLabel=!0,e.note){let y={labelStyle:"",shape:qfe,label:e.note.text,cssClasses:Kfe,cssStyles:[],cssCompilesStyles:[],id:u+ede+"-"+xf,domId:ZO(u,xf,KO),type:m.type,isGroup:m.type==="group",padding:me().flowchart.padding,look:s,position:e.note.position},v=u+QO,x={labelStyle:"",shape:Yfe,label:e.note.text,cssClasses:m.cssClasses,cssStyles:[],id:u+QO,domId:ZO(u,xf,jO),type:"group",isGroup:!0,padding:16,look:s,position:e.note.position};xf++,x.id=v,y.parentId=v,G6(n,x,l),G6(n,y,l),G6(n,g,l);let b=u,w=y.id;e.note.position==="left of"&&(b=y.id,w=u),i.push({id:b+"-"+w,start:b,end:w,arrowhead:"none",arrowTypeEnd:"",style:GO,labelStyle:"",classes:jfe,arrowheadStyle:VO,labelpos:UO,labelType:HO,thickness:WO,look:s})}else G6(n,g,l)}e.doc&&(Y.trace("Adding nodes children "),sUe(e,e.doc,r,n,i,!a,s,l))},"dataFetcher"),rde=o(()=>{V6.clear(),xf=0},"reset")});var JO,cUe,uUe,ide,eP=N(()=>{"use strict";zt();vt();gm();Yd();$m();ir();z6();JO=o((t,e=O6)=>{if(!t.doc)return e;let r=e;for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),cUe=o(function(t,e){return e.db.getClasses()},"getClasses"),uUe=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing state diagram (v2)",e);let{securityLevel:i,state:a,layout:s}=me();n.db.extract(n.db.getRootDocV2());let l=n.db.getData(),u=yc(e,i);l.type=n.type,l.layoutAlgorithm=s,l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["barb"],l.diagramId=e,await Cc(l,u);let h=8;Gt.insertTitle(u,"statediagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ac(u,h,R1,a?.useMaxWidth??!0)},"draw"),ide={getClasses:cUe,draw:uUe,getDir:JO}});function ude(){return new Map}var tP,ade,sde,ode,lde,cde,hUe,fUe,hde,U6,Qo,H6=N(()=>{"use strict";zt();vt();ir();gr();mi();nde();eP();z6();tP="[*]",ade="start",sde=tP,ode="end",lde="color",cde="fill",hUe="bgFill",fUe=",";o(ude,"newClassesList");hde=o(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),U6=o(t=>JSON.parse(JSON.stringify(t)),"clone"),Qo=class{static{o(this,"StateDB")}constructor(e){this.clear(),this.version=e,this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this)}version;nodes=[];edges=[];rootDoc=[];classes=ude();documents={root:hde()};currentDocument=this.documents.root;startEndCount=0;dividerCnt=0;static relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3};setRootDoc(e){Y.info("Setting root doc",e),this.rootDoc=e,this.version===1?this.extract(e):this.extract(this.getRootDocV2())}getRootDoc(){return this.rootDoc}docTranslator(e,r,n){if(r.stmt===Eb)this.docTranslator(e,r.state1,!0),this.docTranslator(e,r.state2,!1);else if(r.stmt===L1&&(r.id==="[*]"?(r.id=n?e.id+"_start":e.id+"_end",r.start=n):r.id=r.id.trim()),r.doc){let i=[],a=[],s;for(s=0;s0&&a.length>0){let l={stmt:L1,id:X9(),type:"divider",doc:U6(a)};i.push(U6(l)),r.doc=i}r.doc.forEach(l=>this.docTranslator(r,l,!0))}}getRootDocV2(){return this.docTranslator({id:"root"},{id:"root",doc:this.rootDoc},!0),{id:"root",doc:this.rootDoc}}extract(e){let r;e.doc?r=e.doc:r=e,Y.info(r),this.clear(!0),Y.info("Extract initial document:",r),r.forEach(s=>{switch(Y.warn("Statement",s.stmt),s.stmt){case L1:this.addState(s.id.trim(),s.type,s.doc,s.description,s.note,s.classes,s.styles,s.textStyles);break;case Eb:this.addRelation(s.state1,s.state2,s.description);break;case Gfe:this.addStyleClass(s.id.trim(),s.classes);break;case Vfe:{let l=s.id.trim().split(","),u=s.styleClass.split(",");l.forEach(h=>{let f=this.getState(h);if(f===void 0){let d=h.trim();this.addState(d),f=this.getState(d)}f.styles=u.map(d=>d.replace(/;/g,"")?.trim())})}break;case Ufe:this.setCssClass(s.id.trim(),s.styleClass);break}});let n=this.getStates(),a=me().look;rde(),N1(void 0,this.getRootDocV2(),n,this.nodes,this.edges,!0,a,this.classes),this.nodes.forEach(s=>{if(Array.isArray(s.label)){if(s.description=s.label.slice(1),s.isGroup&&s.description.length>0)throw new Error("Group nodes can only have label. Remove the additional description for node ["+s.id+"]");s.label=s.label[0]}})}addState(e,r=Rp,n=null,i=null,a=null,s=null,l=null,u=null){let h=e?.trim();if(this.currentDocument.states.has(h)?(this.currentDocument.states.get(h).doc||(this.currentDocument.states.get(h).doc=n),this.currentDocument.states.get(h).type||(this.currentDocument.states.get(h).type=r)):(Y.info("Adding state ",h,i),this.currentDocument.states.set(h,{id:h,descriptions:[],type:r,doc:n,note:a,classes:[],styles:[],textStyles:[]})),i&&(Y.info("Setting state description",h,i),typeof i=="string"&&this.addDescription(h,i.trim()),typeof i=="object"&&i.forEach(f=>this.addDescription(h,f.trim()))),a){let f=this.currentDocument.states.get(h);f.note=a,f.note.text=Ze.sanitizeText(f.note.text,me())}s&&(Y.info("Setting state classes",h,s),(typeof s=="string"?[s]:s).forEach(d=>this.setCssClass(h,d.trim()))),l&&(Y.info("Setting state styles",h,l),(typeof l=="string"?[l]:l).forEach(d=>this.setStyle(h,d.trim()))),u&&(Y.info("Setting state styles",h,l),(typeof u=="string"?[u]:u).forEach(d=>this.setTextStyle(h,d.trim())))}clear(e){this.nodes=[],this.edges=[],this.documents={root:hde()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=ude(),e||Ar()}getState(e){return this.currentDocument.states.get(e)}getStates(){return this.currentDocument.states}logDocuments(){Y.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}startIdIfNeeded(e=""){let r=e;return e===tP&&(this.startEndCount++,r=`${ade}${this.startEndCount}`),r}startTypeIfNeeded(e="",r=Rp){return e===tP?ade:r}endIdIfNeeded(e=""){let r=e;return e===sde&&(this.startEndCount++,r=`${ode}${this.startEndCount}`),r}endTypeIfNeeded(e="",r=Rp){return e===sde?ode:r}addRelationObjs(e,r,n){let i=this.startIdIfNeeded(e.id.trim()),a=this.startTypeIfNeeded(e.id.trim(),e.type),s=this.startIdIfNeeded(r.id.trim()),l=this.startTypeIfNeeded(r.id.trim(),r.type);this.addState(i,a,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),this.addState(s,l,r.doc,r.description,r.note,r.classes,r.styles,r.textStyles),this.currentDocument.relations.push({id1:i,id2:s,relationTitle:Ze.sanitizeText(n,me())})}addRelation(e,r,n){if(typeof e=="object")this.addRelationObjs(e,r,n);else{let i=this.startIdIfNeeded(e.trim()),a=this.startTypeIfNeeded(e),s=this.endIdIfNeeded(r.trim()),l=this.endTypeIfNeeded(r);this.addState(i,a),this.addState(s,l),this.currentDocument.relations.push({id1:i,id2:s,title:Ze.sanitizeText(n,me())})}}addDescription(e,r){let n=this.currentDocument.states.get(e),i=r.startsWith(":")?r.replace(":","").trim():r;n.descriptions.push(Ze.sanitizeText(i,me()))}cleanupLabel(e){return e.substring(0,1)===":"?e.substr(2).trim():e.trim()}getDividerId(){return this.dividerCnt++,"divider-id-"+this.dividerCnt}addStyleClass(e,r=""){this.classes.has(e)||this.classes.set(e,{id:e,styles:[],textStyles:[]});let n=this.classes.get(e);r?.split(fUe).forEach(i=>{let a=i.replace(/([^;]*);/,"$1").trim();if(RegExp(lde).exec(i)){let l=a.replace(cde,hUe).replace(lde,cde);n.textStyles.push(l)}n.styles.push(a)})}getClasses(){return this.classes}setCssClass(e,r){e.split(",").forEach(n=>{let i=this.getState(n);if(i===void 0){let a=n.trim();this.addState(a),i=this.getState(a)}i.classes.push(r)})}setStyle(e,r){let n=this.getState(e);n!==void 0&&n.styles.push(r)}setTextStyle(e,r){let n=this.getState(e);n!==void 0&&n.textStyles.push(r)}getDirectionStatement(){return this.rootDoc.find(e=>e.stmt===zO)}getDirection(){return this.getDirectionStatement()?.value??zfe}setDirection(e){let r=this.getDirectionStatement();r?r.value=e:this.rootDoc.unshift({stmt:zO,value:e})}trimColon(e){return e&&e[0]===":"?e.substr(1).trim():e.trim()}getData(){let e=me();return{nodes:this.nodes,edges:this.edges,other:{},config:e,direction:JO(this.getRootDocV2())}}getConfig(){return me().state}getAccTitle=Rr;setAccTitle=Lr;getAccDescription=Mr;setAccDescription=Nr;setDiagramTitle=$r;getDiagramTitle=Ir}});var dUe,W6,rP=N(()=>{"use strict";dUe=o(t=>` +defs #statediagram-barbEnd { + fill: ${t.transitionColor}; + stroke: ${t.transitionColor}; + } +g.stateGroup text { + fill: ${t.nodeBorder}; + stroke: none; + font-size: 10px; +} +g.stateGroup text { + fill: ${t.textColor}; + stroke: none; + font-size: 10px; + +} +g.stateGroup .state-title { + font-weight: bolder; + fill: ${t.stateLabelColor}; +} + +g.stateGroup rect { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; +} + +g.stateGroup line { + stroke: ${t.lineColor}; + stroke-width: 1; +} + +.transition { + stroke: ${t.transitionColor}; + stroke-width: 1; + fill: none; +} + +.stateGroup .composit { + fill: ${t.background}; + border-bottom: 1px +} + +.stateGroup .alt-composit { + fill: #e0e0e0; + border-bottom: 1px +} + +.state-note { + stroke: ${t.noteBorderColor}; + fill: ${t.noteBkgColor}; + + text { + fill: ${t.noteTextColor}; + stroke: none; + font-size: 10px; + } +} + +.stateLabel .box { + stroke: none; + stroke-width: 0; + fill: ${t.mainBkg}; + opacity: 0.5; +} + +.edgeLabel .label rect { + fill: ${t.labelBackgroundColor}; + opacity: 0.5; +} +.edgeLabel { + background-color: ${t.edgeLabelBackground}; + p { + background-color: ${t.edgeLabelBackground}; + } + rect { + opacity: 0.5; + background-color: ${t.edgeLabelBackground}; + fill: ${t.edgeLabelBackground}; + } + text-align: center; +} +.edgeLabel .label text { + fill: ${t.transitionLabelColor||t.tertiaryTextColor}; +} +.label div .edgeLabel { + color: ${t.transitionLabelColor||t.tertiaryTextColor}; +} + +.stateLabel text { + fill: ${t.stateLabelColor}; + font-size: 10px; + font-weight: bold; +} + +.node circle.state-start { + fill: ${t.specialStateColor}; + stroke: ${t.specialStateColor}; +} + +.node .fork-join { + fill: ${t.specialStateColor}; + stroke: ${t.specialStateColor}; +} + +.node circle.state-end { + fill: ${t.innerEndBackground}; + stroke: ${t.background}; + stroke-width: 1.5 +} +.end-state-inner { + fill: ${t.compositeBackground||t.background}; + // stroke: ${t.background}; + stroke-width: 1.5 +} + +.node rect { + fill: ${t.stateBkg||t.mainBkg}; + stroke: ${t.stateBorder||t.nodeBorder}; + stroke-width: 1px; +} +.node polygon { + fill: ${t.mainBkg}; + stroke: ${t.stateBorder||t.nodeBorder};; + stroke-width: 1px; +} +#statediagram-barbEnd { + fill: ${t.lineColor}; +} + +.statediagram-cluster rect { + fill: ${t.compositeTitleBackground}; + stroke: ${t.stateBorder||t.nodeBorder}; + stroke-width: 1px; +} + +.cluster-label, .nodeLabel { + color: ${t.stateLabelColor}; + // line-height: 1; +} + +.statediagram-cluster rect.outer { + rx: 5px; + ry: 5px; +} +.statediagram-state .divider { + stroke: ${t.stateBorder||t.nodeBorder}; +} + +.statediagram-state .title-state { + rx: 5px; + ry: 5px; +} +.statediagram-cluster.statediagram-cluster .inner { + fill: ${t.compositeBackground||t.background}; +} +.statediagram-cluster.statediagram-cluster-alt .inner { + fill: ${t.altBackground?t.altBackground:"#efefef"}; +} + +.statediagram-cluster .inner { + rx:0; + ry:0; +} + +.statediagram-state rect.basic { + rx: 5px; + ry: 5px; +} +.statediagram-state rect.divider { + stroke-dasharray: 10,10; + fill: ${t.altBackground?t.altBackground:"#efefef"}; +} + +.note-edge { + stroke-dasharray: 5; +} + +.statediagram-note rect { + fill: ${t.noteBkgColor}; + stroke: ${t.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} +.statediagram-note rect { + fill: ${t.noteBkgColor}; + stroke: ${t.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} + +.statediagram-note text { + fill: ${t.noteTextColor}; +} + +.statediagram-note .nodeLabel { + color: ${t.noteTextColor}; +} +.statediagram .edgeLabel { + color: red; // ${t.noteTextColor}; +} + +#dependencyStart, #dependencyEnd { + fill: ${t.lineColor}; + stroke: ${t.lineColor}; + stroke-width: 1; +} + +.statediagramTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; +} +`,"getStyles"),W6=dUe});var nP,pUe,mUe,fde,gUe,dde,pde=N(()=>{"use strict";nP={},pUe=o((t,e)=>{nP[t]=e},"set"),mUe=o(t=>nP[t],"get"),fde=o(()=>Object.keys(nP),"keys"),gUe=o(()=>fde().length,"size"),dde={get:mUe,set:pUe,keys:fde,size:gUe}});var yUe,vUe,xUe,bUe,gde,wUe,TUe,kUe,EUe,iP,mde,yde,vde=N(()=>{"use strict";dr();pde();H6();ir();gr();zt();vt();yUe=o(t=>t.append("circle").attr("class","start-state").attr("r",me().state.sizeUnit).attr("cx",me().state.padding+me().state.sizeUnit).attr("cy",me().state.padding+me().state.sizeUnit),"drawStartState"),vUe=o(t=>t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",me().state.textHeight).attr("class","divider").attr("x2",me().state.textHeight*2).attr("y1",0).attr("y2",0),"drawDivider"),xUe=o((t,e)=>{let r=t.append("text").attr("x",2*me().state.padding).attr("y",me().state.textHeight+2*me().state.padding).attr("font-size",me().state.fontSize).attr("class","state-title").text(e.id),n=r.node().getBBox();return t.insert("rect",":first-child").attr("x",me().state.padding).attr("y",me().state.padding).attr("width",n.width+2*me().state.padding).attr("height",n.height+2*me().state.padding).attr("rx",me().state.radius),r},"drawSimpleState"),bUe=o((t,e)=>{let r=o(function(p,m,g){let y=p.append("tspan").attr("x",2*me().state.padding).text(m);g||y.attr("dy",me().state.textHeight)},"addTspan"),i=t.append("text").attr("x",2*me().state.padding).attr("y",me().state.textHeight+1.3*me().state.padding).attr("font-size",me().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),a=i.height,s=t.append("text").attr("x",me().state.padding).attr("y",a+me().state.padding*.4+me().state.dividerMargin+me().state.textHeight).attr("class","state-description"),l=!0,u=!0;e.descriptions.forEach(function(p){l||(r(s,p,u),u=!1),l=!1});let h=t.append("line").attr("x1",me().state.padding).attr("y1",me().state.padding+a+me().state.dividerMargin/2).attr("y2",me().state.padding+a+me().state.dividerMargin/2).attr("class","descr-divider"),f=s.node().getBBox(),d=Math.max(f.width,i.width);return h.attr("x2",d+3*me().state.padding),t.insert("rect",":first-child").attr("x",me().state.padding).attr("y",me().state.padding).attr("width",d+2*me().state.padding).attr("height",f.height+a+2*me().state.padding).attr("rx",me().state.radius),t},"drawDescrState"),gde=o((t,e,r)=>{let n=me().state.padding,i=2*me().state.padding,a=t.node().getBBox(),s=a.width,l=a.x,u=t.append("text").attr("x",0).attr("y",me().state.titleShift).attr("font-size",me().state.fontSize).attr("class","state-title").text(e.id),f=u.node().getBBox().width+i,d=Math.max(f,s);d===s&&(d=d+i);let p,m=t.node().getBBox();e.doc,p=l-n,f>s&&(p=(s-d)/2+n),Math.abs(l-m.x)s&&(p=l-(f-s)/2);let g=1-me().state.textHeight;return t.insert("rect",":first-child").attr("x",p).attr("y",g).attr("class",r?"alt-composit":"composit").attr("width",d).attr("height",m.height+me().state.textHeight+me().state.titleShift+1).attr("rx","0"),u.attr("x",p+n),f<=s&&u.attr("x",l+(d-i)/2-f/2+n),t.insert("rect",":first-child").attr("x",p).attr("y",me().state.titleShift-me().state.textHeight-me().state.padding).attr("width",d).attr("height",me().state.textHeight*3).attr("rx",me().state.radius),t.insert("rect",":first-child").attr("x",p).attr("y",me().state.titleShift-me().state.textHeight-me().state.padding).attr("width",d).attr("height",m.height+3+2*me().state.textHeight).attr("rx",me().state.radius),t},"addTitleAndBox"),wUe=o(t=>(t.append("circle").attr("class","end-state-outer").attr("r",me().state.sizeUnit+me().state.miniPadding).attr("cx",me().state.padding+me().state.sizeUnit+me().state.miniPadding).attr("cy",me().state.padding+me().state.sizeUnit+me().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",me().state.sizeUnit).attr("cx",me().state.padding+me().state.sizeUnit+2).attr("cy",me().state.padding+me().state.sizeUnit+2)),"drawEndState"),TUe=o((t,e)=>{let r=me().state.forkWidth,n=me().state.forkHeight;if(e.parentId){let i=r;r=n,n=i}return t.append("rect").style("stroke","black").style("fill","black").attr("width",r).attr("height",n).attr("x",me().state.padding).attr("y",me().state.padding)},"drawForkJoinState"),kUe=o((t,e,r,n)=>{let i=0,a=n.append("text");a.style("text-anchor","start"),a.attr("class","noteText");let s=t.replace(/\r\n/g,"
    ");s=s.replace(/\n/g,"
    ");let l=s.split(Ze.lineBreakRegex),u=1.25*me().state.noteMargin;for(let h of l){let f=h.trim();if(f.length>0){let d=a.append("tspan");if(d.text(f),u===0){let p=d.node().getBBox();u+=p.height}i+=u,d.attr("x",e+me().state.noteMargin),d.attr("y",r+i+1.25*me().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:i}},"_drawLongText"),EUe=o((t,e)=>{e.attr("class","state-note");let r=e.append("rect").attr("x",0).attr("y",me().state.padding),n=e.append("g"),{textWidth:i,textHeight:a}=kUe(t,0,0,n);return r.attr("height",a+2*me().state.noteMargin),r.attr("width",i+me().state.noteMargin*2),r},"drawNote"),iP=o(function(t,e){let r=e.id,n={id:r,label:e.id,width:0,height:0},i=t.append("g").attr("id",r).attr("class","stateGroup");e.type==="start"&&yUe(i),e.type==="end"&&wUe(i),(e.type==="fork"||e.type==="join")&&TUe(i,e),e.type==="note"&&EUe(e.note.text,i),e.type==="divider"&&vUe(i),e.type==="default"&&e.descriptions.length===0&&xUe(i,e),e.type==="default"&&e.descriptions.length>0&&bUe(i,e);let a=i.node().getBBox();return n.width=a.width+2*me().state.padding,n.height=a.height+2*me().state.padding,dde.set(r,n),n},"drawState"),mde=0,yde=o(function(t,e,r){let n=o(function(u){switch(u){case Qo.relationType.AGGREGATION:return"aggregation";case Qo.relationType.EXTENSION:return"extension";case Qo.relationType.COMPOSITION:return"composition";case Qo.relationType.DEPENDENCY:return"dependency"}},"getRelationType");e.points=e.points.filter(u=>!Number.isNaN(u.y));let i=e.points,a=wl().x(function(u){return u.x}).y(function(u){return u.y}).curve(Do),s=t.append("path").attr("d",a(i)).attr("id","edge"+mde).attr("class","transition"),l="";if(me().state.arrowMarkerAbsolute&&(l=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,l=l.replace(/\(/g,"\\("),l=l.replace(/\)/g,"\\)")),s.attr("marker-end","url("+l+"#"+n(Qo.relationType.DEPENDENCY)+"End)"),r.title!==void 0){let u=t.append("g").attr("class","stateLabel"),{x:h,y:f}=Gt.calcLabelPosition(e.points),d=Ze.getRows(r.title),p=0,m=[],g=0,y=0;for(let b=0;b<=d.length;b++){let w=u.append("text").attr("text-anchor","middle").text(d[b]).attr("x",h).attr("y",f+p),C=w.node().getBBox();g=Math.max(g,C.width),y=Math.min(y,C.x),Y.info(C.x,h,f+p),p===0&&(p=w.node().getBBox().height,Y.info("Title height",p,f)),m.push(w)}let v=p*d.length;if(d.length>1){let b=(d.length-1)*p*.5;m.forEach((w,C)=>w.attr("y",f+C*p-b)),v=p*d.length}let x=u.node().getBBox();u.insert("rect",":first-child").attr("class","box").attr("x",h-g/2-me().state.padding/2).attr("y",f-v/2-me().state.padding/2-3.5).attr("width",g+me().state.padding).attr("height",v+me().state.padding),Y.info(x)}mde++},"drawEdge")});var fo,aP,SUe,CUe,AUe,_Ue,xde,bde,wde=N(()=>{"use strict";dr();gR();Vo();vt();gr();vde();zt();Ei();aP={},SUe=o(function(){},"setConf"),CUe=o(function(t){t.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 19,7 L9,13 L14,7 L9,1 Z")},"insertMarkers"),AUe=o(function(t,e,r,n){fo=me().state;let i=me().securityLevel,a;i==="sandbox"&&(a=Ge("#i"+e));let s=i==="sandbox"?Ge(a.nodes()[0].contentDocument.body):Ge("body"),l=i==="sandbox"?a.nodes()[0].contentDocument:document;Y.debug("Rendering diagram "+t);let u=s.select(`[id='${e}']`);CUe(u);let h=n.db.getRootDoc();xde(h,u,void 0,!1,s,l,n);let f=fo.padding,d=u.node().getBBox(),p=d.width+f*2,m=d.height+f*2,g=p*1.75;vn(u,m,g,fo.useMaxWidth),u.attr("viewBox",`${d.x-fo.padding} ${d.y-fo.padding} `+p+" "+m)},"draw"),_Ue=o(t=>t?t.length*fo.fontSizeFactor:1,"getLabelWidth"),xde=o((t,e,r,n,i,a,s)=>{let l=new sn({compound:!0,multigraph:!0}),u,h=!0;for(u=0;u{let T=C.parentElement,E=0,A=0;T&&(T.parentElement&&(E=T.parentElement.getBBox().width),A=parseInt(T.getAttribute("data-x-shift"),10),Number.isNaN(A)&&(A=0)),C.setAttribute("x1",0-A+8),C.setAttribute("x2",E-A-8)})):Y.debug("No Node "+b+": "+JSON.stringify(l.node(b)))});let v=y.getBBox();l.edges().forEach(function(b){b!==void 0&&l.edge(b)!==void 0&&(Y.debug("Edge "+b.v+" -> "+b.w+": "+JSON.stringify(l.edge(b))),yde(e,l.edge(b),l.edge(b).relation))}),v=y.getBBox();let x={id:r||"root",label:r||"root",width:0,height:0};return x.width=v.width+2*fo.padding,x.height=v.height+2*fo.padding,Y.debug("Doc rendered",x,l),x},"renderDoc"),bde={setConf:SUe,draw:AUe}});var Tde={};hr(Tde,{diagram:()=>DUe});var DUe,kde=N(()=>{"use strict";$O();H6();rP();wde();DUe={parser:I6,get db(){return new Qo(1)},renderer:bde,styles:W6,init:o(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var Cde={};hr(Cde,{diagram:()=>MUe});var MUe,Ade=N(()=>{"use strict";$O();H6();rP();eP();MUe={parser:I6,get db(){return new Qo(2)},renderer:ide,styles:W6,init:o(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var sP,Lde,Rde=N(()=>{"use strict";sP=function(){var t=o(function(d,p,m,g){for(m=m||{},g=d.length;g--;m[d[g]]=p);return m},"o"),e=[6,8,10,11,12,14,16,17,18],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],l=[1,14],u={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:o(function(p,m,g,y,v,x,b){var w=x.length-1;switch(v){case 1:return x[w-1];case 2:this.$=[];break;case 3:x[w-1].push(x[w]),this.$=x[w-1];break;case 4:case 5:this.$=x[w];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(x[w].substr(6)),this.$=x[w].substr(6);break;case 9:this.$=x[w].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=x[w].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(x[w].substr(8)),this.$=x[w].substr(8);break;case 13:y.addTask(x[w-1],x[w]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:r,12:n,14:i,16:a,17:s,18:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:o(function(p,m){if(m.recoverable)this.trace(p);else{var g=new Error(p);throw g.hash=m,g}},"parseError"),parse:o(function(p){var m=this,g=[0],y=[],v=[null],x=[],b=this.table,w="",C=0,T=0,E=0,A=2,S=1,_=x.slice.call(arguments,1),I=Object.create(this.lexer),D={yy:{}};for(var k in this.yy)Object.prototype.hasOwnProperty.call(this.yy,k)&&(D.yy[k]=this.yy[k]);I.setInput(p,D.yy),D.yy.lexer=I,D.yy.parser=this,typeof I.yylloc>"u"&&(I.yylloc={});var L=I.yylloc;x.push(L);var R=I.options&&I.options.ranges;typeof D.yy.parseError=="function"?this.parseError=D.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function O(K){g.length=g.length-2*K,v.length=v.length-K,x.length=x.length-K}o(O,"popStack");function M(){var K;return K=y.pop()||I.lex()||S,typeof K!="number"&&(K instanceof Array&&(y=K,K=y.pop()),K=m.symbols_[K]||K),K}o(M,"lex");for(var B,F,P,z,$,H,Q={},j,ie,ne,le;;){if(P=g[g.length-1],this.defaultActions[P]?z=this.defaultActions[P]:((B===null||typeof B>"u")&&(B=M()),z=b[P]&&b[P][B]),typeof z>"u"||!z.length||!z[0]){var he="";le=[];for(j in b[P])this.terminals_[j]&&j>A&&le.push("'"+this.terminals_[j]+"'");I.showPosition?he="Parse error on line "+(C+1)+`: +`+I.showPosition()+` +Expecting `+le.join(", ")+", got '"+(this.terminals_[B]||B)+"'":he="Parse error on line "+(C+1)+": Unexpected "+(B==S?"end of input":"'"+(this.terminals_[B]||B)+"'"),this.parseError(he,{text:I.match,token:this.terminals_[B]||B,line:I.yylineno,loc:L,expected:le})}if(z[0]instanceof Array&&z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+P+", token: "+B);switch(z[0]){case 1:g.push(B),v.push(I.yytext),x.push(I.yylloc),g.push(z[1]),B=null,F?(B=F,F=null):(T=I.yyleng,w=I.yytext,C=I.yylineno,L=I.yylloc,E>0&&E--);break;case 2:if(ie=this.productions_[z[1]][1],Q.$=v[v.length-ie],Q._$={first_line:x[x.length-(ie||1)].first_line,last_line:x[x.length-1].last_line,first_column:x[x.length-(ie||1)].first_column,last_column:x[x.length-1].last_column},R&&(Q._$.range=[x[x.length-(ie||1)].range[0],x[x.length-1].range[1]]),H=this.performAction.apply(Q,[w,T,C,D.yy,z[1],v,x].concat(_)),typeof H<"u")return H;ie&&(g=g.slice(0,-1*ie*2),v=v.slice(0,-1*ie),x=x.slice(0,-1*ie)),g.push(this.productions_[z[1]][0]),v.push(Q.$),x.push(Q._$),ne=b[g[g.length-2]][g[g.length-1]],g.push(ne);break;case 3:return!0}}return!0},"parse")},h=function(){var d={EOF:1,parseError:o(function(m,g){if(this.yy.parser)this.yy.parser.parseError(m,g);else throw new Error(m)},"parseError"),setInput:o(function(p,m){return this.yy=m||this.yy||{},this._input=p,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},"setInput"),input:o(function(){var p=this._input[0];this.yytext+=p,this.yyleng++,this.offset++,this.match+=p,this.matched+=p;var m=p.match(/(?:\r\n?|\n).*/g);return m?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),p},"input"),unput:o(function(p){var m=p.length,g=p.split(/(?:\r\n?|\n)/g);this._input=p+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-m),this.offset-=m;var y=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),g.length-1&&(this.yylineno-=g.length-1);var v=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:g?(g.length===y.length?this.yylloc.first_column:0)+y[y.length-g.length].length-g[0].length:this.yylloc.first_column-m},this.options.ranges&&(this.yylloc.range=[v[0],v[0]+this.yyleng-m]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(p){this.unput(this.match.slice(p))},"less"),pastInput:o(function(){var p=this.matched.substr(0,this.matched.length-this.match.length);return(p.length>20?"...":"")+p.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var p=this.match;return p.length<20&&(p+=this._input.substr(0,20-p.length)),(p.substr(0,20)+(p.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var p=this.pastInput(),m=new Array(p.length+1).join("-");return p+this.upcomingInput()+` +`+m+"^"},"showPosition"),test_match:o(function(p,m){var g,y,v;if(this.options.backtrack_lexer&&(v={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&&(v.yylloc.range=this.yylloc.range.slice(0))),y=p[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+p[0].length},this.yytext+=p[0],this.match+=p[0],this.matches=p,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(p[0].length),this.matched+=p[0],g=this.performAction.call(this,this.yy,this,m,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),g)return g;if(this._backtrack){for(var x in v)this[x]=v[x];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var p,m,g,y;this._more||(this.yytext="",this.match="");for(var v=this._currentRules(),x=0;xm[0].length)){if(m=g,y=x,this.options.backtrack_lexer){if(p=this.test_match(g,v[x]),p!==!1)return p;if(this._backtrack){m=!1;continue}else return!1}else if(!this.options.flex)break}return m?(p=this.test_match(m,v[y]),p!==!1?p:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var m=this.next();return m||this.lex()},"lex"),begin:o(function(m){this.conditionStack.push(m)},"begin"),popState:o(function(){var m=this.conditionStack.length-1;return m>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(m){return m=this.conditionStack.length-1-Math.abs(m||0),m>=0?this.conditionStack[m]:"INITIAL"},"topState"),pushState:o(function(m){this.begin(m)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(m,g,y,v){var x=v;switch(y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\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:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return d}();u.lexer=h;function f(){this.yy={}}return o(f,"Parser"),f.prototype=u,u.Parser=f,new f}();sP.parser=sP;Lde=sP});var M1,oP,Sb,Cb,BUe,FUe,$Ue,zUe,GUe,VUe,UUe,Nde,HUe,lP,Mde=N(()=>{"use strict";zt();mi();M1="",oP=[],Sb=[],Cb=[],BUe=o(function(){oP.length=0,Sb.length=0,M1="",Cb.length=0,Ar()},"clear"),FUe=o(function(t){M1=t,oP.push(t)},"addSection"),$Ue=o(function(){return oP},"getSections"),zUe=o(function(){let t=Nde(),e=100,r=0;for(;!t&&r{r.people&&t.push(...r.people)}),[...new Set(t)].sort()},"updateActors"),VUe=o(function(t,e){let r=e.substr(1).split(":"),n=0,i=[];r.length===1?(n=Number(r[0]),i=[]):(n=Number(r[0]),i=r[1].split(","));let a=i.map(l=>l.trim()),s={section:M1,type:M1,people:a,task:t,score:n};Cb.push(s)},"addTask"),UUe=o(function(t){let e={section:M1,type:M1,description:t,task:t,classes:[]};Sb.push(e)},"addTaskOrg"),Nde=o(function(){let t=o(function(r){return Cb[r].processed},"compileTask"),e=!0;for(let[r,n]of Cb.entries())t(r),e=e&&n.processed;return e},"compileTasks"),HUe=o(function(){return GUe()},"getActors"),lP={getConfig:o(()=>me().journey,"getConfig"),clear:BUe,setDiagramTitle:$r,getDiagramTitle:Ir,setAccTitle:Lr,getAccTitle:Rr,setAccDescription:Nr,getAccDescription:Mr,addSection:FUe,getSections:$Ue,getTasks:zUe,addTask:VUe,addTaskOrg:UUe,getActors:HUe}});var WUe,Ide,Ode=N(()=>{"use strict";WUe=o(t=>`.label { + font-family: ${t.fontFamily}; + color: ${t.textColor}; + } + .mouth { + stroke: #666; + } + + line { + stroke: ${t.textColor} + } + + .legend { + fill: ${t.textColor}; + font-family: ${t.fontFamily}; + } + + .label text { + fill: #333; + } + .label { + color: ${t.textColor} + } + + .face { + ${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"}; + stroke: #999; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${t.arrowheadColor}; + } + + .edgePath .path { + stroke: ${t.lineColor}; + stroke-width: 1.5px; + } + + .flowchart-link { + stroke: ${t.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${t.edgeLabelBackground}; + rect { + opacity: 0.5; + } + text-align: center; + } + + .cluster rect { + } + + .cluster text { + fill: ${t.titleColor}; + } + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${t.fontFamily}; + font-size: 12px; + background: ${t.tertiaryColor}; + border: 1px solid ${t.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .task-type-0, .section-type-0 { + ${t.fillType0?`fill: ${t.fillType0}`:""}; + } + .task-type-1, .section-type-1 { + ${t.fillType0?`fill: ${t.fillType1}`:""}; + } + .task-type-2, .section-type-2 { + ${t.fillType0?`fill: ${t.fillType2}`:""}; + } + .task-type-3, .section-type-3 { + ${t.fillType0?`fill: ${t.fillType3}`:""}; + } + .task-type-4, .section-type-4 { + ${t.fillType0?`fill: ${t.fillType4}`:""}; + } + .task-type-5, .section-type-5 { + ${t.fillType0?`fill: ${t.fillType5}`:""}; + } + .task-type-6, .section-type-6 { + ${t.fillType0?`fill: ${t.fillType6}`:""}; + } + .task-type-7, .section-type-7 { + ${t.fillType0?`fill: ${t.fillType7}`:""}; + } + + .actor-0 { + ${t.actor0?`fill: ${t.actor0}`:""}; + } + .actor-1 { + ${t.actor1?`fill: ${t.actor1}`:""}; + } + .actor-2 { + ${t.actor2?`fill: ${t.actor2}`:""}; + } + .actor-3 { + ${t.actor3?`fill: ${t.actor3}`:""}; + } + .actor-4 { + ${t.actor4?`fill: ${t.actor4}`:""}; + } + .actor-5 { + ${t.actor5?`fill: ${t.actor5}`:""}; + } +`,"getStyles"),Ide=WUe});var cP,qUe,Bde,Fde,YUe,XUe,Pde,jUe,KUe,$de,QUe,I1,zde=N(()=>{"use strict";dr();Wv();cP=o(function(t,e){return kd(t,e)},"drawRect"),qUe=o(function(t,e){let n=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=bl().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}o(a,"smile");function s(u){let h=bl().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}o(s,"sad");function l(u){u.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")}return o(l,"ambivalent"),e.score>3?a(i):e.score<3?s(i):l(i),n},"drawFace"),Bde=o(function(t,e){let r=t.append("circle");return r.attr("cx",e.cx),r.attr("cy",e.cy),r.attr("class","actor-"+e.pos),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("r",e.r),r.class!==void 0&&r.attr("class",r.class),e.title!==void 0&&r.append("title").text(e.title),r},"drawCircle"),Fde=o(function(t,e){return Nq(t,e)},"drawText"),YUe=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=t.append("polygon");n.attr("points",r(e.x,e.y,50,20,7)),n.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,Fde(t,e)},"drawLabel"),XUe=o(function(t,e,r){let n=t.append("g"),i=Tl();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=r.width*e.taskCount+r.diagramMarginX*(e.taskCount-1),i.height=r.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,cP(n,i),$de(r)(e.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),Pde=-1,jUe=o(function(t,e,r){let n=e.x+r.width/2,i=t.append("g");Pde++;let a=300+5*30;i.append("line").attr("id","task"+Pde).attr("x1",n).attr("y1",e.y).attr("x2",n).attr("y2",a).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),qUe(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});let s=Tl();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=r.width,s.height=r.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,cP(i,s);let l=e.x+14;e.people.forEach(u=>{let h=e.actors[u].color,f={cx:l,cy:e.y,r:7,fill:h,stroke:"#000",title:u,pos:e.actors[u].position};Bde(i,f),l+=10}),$de(r)(e.task,i,s.x,s.y,s.width,s.height,{class:"task"},r,e.colour)},"drawTask"),KUe=o(function(t,e){q5(t,e)},"drawBackgroundRect"),$de=function(){function t(i,a,s,l,u,h,f,d){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",d).style("text-anchor","middle").text(i);n(p,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d,p){let{taskFontSize:m,taskFontFamily:g}=d,y=i.split(//gi);for(let v=0;v{let i=ju[n].color,a={cx:20,cy:r,r:7,fill:i,stroke:"#000",pos:ju[n].position};I1.drawCircle(t,a);let s={x:40,y:r+7,fill:"#666",text:n,textMargin:e.boxTextMargin|5};I1.drawText(t,s),r+=20})}var ZUe,ju,q6,Np,eHe,Zo,uP,Gde,tHe,hP,Vde=N(()=>{"use strict";dr();zde();zt();Ei();ZUe=o(function(t){Object.keys(t).forEach(function(r){q6[r]=t[r]})},"setConf"),ju={};o(JUe,"drawActorLegend");q6=me().journey,Np=q6.leftMargin,eHe=o(function(t,e,r,n){let i=me().journey,a=me().securityLevel,s;a==="sandbox"&&(s=Ge("#i"+e));let l=a==="sandbox"?Ge(s.nodes()[0].contentDocument.body):Ge("body");Zo.init();let u=l.select("#"+e);I1.initGraphics(u);let h=n.db.getTasks(),f=n.db.getDiagramTitle(),d=n.db.getActors();for(let x in ju)delete ju[x];let p=0;d.forEach(x=>{ju[x]={color:i.actorColours[p%i.actorColours.length],position:p},p++}),JUe(u),Zo.insert(0,0,Np,Object.keys(ju).length*50),tHe(u,h,0);let m=Zo.getBounds();f&&u.append("text").text(f).attr("x",Np).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);let g=m.stopy-m.starty+2*i.diagramMarginY,y=Np+m.stopx+2*i.diagramMarginX;vn(u,g,y,i.useMaxWidth),u.append("line").attr("x1",Np).attr("y1",i.height*4).attr("x2",y-Np-4).attr("y2",i.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");let v=f?70:0;u.attr("viewBox",`${m.startx} -25 ${y} ${g+v}`),u.attr("preserveAspectRatio","xMinYMin meet"),u.attr("height",g+v+25)},"draw"),Zo={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:o(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:o(function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:o(function(t,e,r,n){let i=me().journey,a=this,s=0;function l(u){return o(function(f){s++;let d=a.sequenceItems.length-s+1;a.updateVal(f,"starty",e-d*i.boxMargin,Math.min),a.updateVal(f,"stopy",n+d*i.boxMargin,Math.max),a.updateVal(Zo.data,"startx",t-d*i.boxMargin,Math.min),a.updateVal(Zo.data,"stopx",r+d*i.boxMargin,Math.max),u!=="activation"&&(a.updateVal(f,"startx",t-d*i.boxMargin,Math.min),a.updateVal(f,"stopx",r+d*i.boxMargin,Math.max),a.updateVal(Zo.data,"starty",e-d*i.boxMargin,Math.min),a.updateVal(Zo.data,"stopy",n+d*i.boxMargin,Math.max))},"updateItemBounds")}o(l,"updateFn"),this.sequenceItems.forEach(l())},"updateBounds"),insert:o(function(t,e,r,n){let i=Math.min(t,r),a=Math.max(t,r),s=Math.min(e,n),l=Math.max(e,n);this.updateVal(Zo.data,"startx",i,Math.min),this.updateVal(Zo.data,"starty",s,Math.min),this.updateVal(Zo.data,"stopx",a,Math.max),this.updateVal(Zo.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),bumpVerticalPos:o(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return this.data},"getBounds")},uP=q6.sectionFills,Gde=q6.sectionColours,tHe=o(function(t,e,r){let n=me().journey,i="",a=n.height*2+n.diagramMarginY,s=r+a,l=0,u="#CCC",h="black",f=0;for(let[d,p]of e.entries()){if(i!==p.section){u=uP[l%uP.length],f=l%uP.length,h=Gde[l%Gde.length];let g=0,y=p.section;for(let x=d;x(ju[y]&&(g[y]=ju[y]),g),{});p.x=d*n.taskMargin+d*n.width+Np,p.y=s,p.width=n.diagramMarginX,p.height=n.diagramMarginY,p.colour=h,p.fill=u,p.num=f,p.actors=m,I1.drawTask(t,p,n),Zo.insert(p.x,p.y,p.x+p.width+n.taskMargin,300+5*30)}},"drawTasks"),hP={setConf:ZUe,draw:eHe}});var Ude={};hr(Ude,{diagram:()=>rHe});var rHe,Hde=N(()=>{"use strict";Rde();Mde();Ode();Vde();rHe={parser:Lde,db:lP,renderer:hP,styles:Ide,init:o(t=>{hP.setConf(t.journey),lP.clear()},"init")}});var dP,Qde,Zde=N(()=>{"use strict";dP=function(){var t=o(function(p,m,g,y){for(g=g||{},y=p.length;y--;g[p[y]]=m);return g},"o"),e=[6,8,10,11,12,14,16,17,20,21],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],l=[1,16],u=[1,17],h={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:o(function(m,g,y,v,x,b,w){var C=b.length-1;switch(x){case 1:return b[C-1];case 2:this.$=[];break;case 3:b[C-1].push(b[C]),this.$=b[C-1];break;case 4:case 5:this.$=b[C];break;case 6:case 7:this.$=[];break;case 8:v.getCommonDb().setDiagramTitle(b[C].substr(6)),this.$=b[C].substr(6);break;case 9:this.$=b[C].trim(),v.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=b[C].trim(),v.getCommonDb().setAccDescription(this.$);break;case 12:v.addSection(b[C].substr(8)),this.$=b[C].substr(8);break;case 15:v.addTask(b[C],0,""),this.$=b[C];break;case 16:v.addEvent(b[C].substr(2)),this.$=b[C];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:14,19:15,20:l,21:u},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:18,11:r,12:n,14:i,16:a,17:s,18:14,19:15,20:l,21:u},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,19]},{15:[1,20]},t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),t(e,[2,4]),t(e,[2,9]),t(e,[2,10])],defaultActions:{},parseError:o(function(m,g){if(g.recoverable)this.trace(m);else{var y=new Error(m);throw y.hash=g,y}},"parseError"),parse:o(function(m){var g=this,y=[0],v=[],x=[null],b=[],w=this.table,C="",T=0,E=0,A=0,S=2,_=1,I=b.slice.call(arguments,1),D=Object.create(this.lexer),k={yy:{}};for(var L in this.yy)Object.prototype.hasOwnProperty.call(this.yy,L)&&(k.yy[L]=this.yy[L]);D.setInput(m,k.yy),k.yy.lexer=D,k.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var R=D.yylloc;b.push(R);var O=D.options&&D.options.ranges;typeof k.yy.parseError=="function"?this.parseError=k.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function M(X){y.length=y.length-2*X,x.length=x.length-X,b.length=b.length-X}o(M,"popStack");function B(){var X;return X=v.pop()||D.lex()||_,typeof X!="number"&&(X instanceof Array&&(v=X,X=v.pop()),X=g.symbols_[X]||X),X}o(B,"lex");for(var F,P,z,$,H,Q,j={},ie,ne,le,he;;){if(z=y[y.length-1],this.defaultActions[z]?$=this.defaultActions[z]:((F===null||typeof F>"u")&&(F=B()),$=w[z]&&w[z][F]),typeof $>"u"||!$.length||!$[0]){var K="";he=[];for(ie in w[z])this.terminals_[ie]&&ie>S&&he.push("'"+this.terminals_[ie]+"'");D.showPosition?K="Parse error on line "+(T+1)+`: +`+D.showPosition()+` +Expecting `+he.join(", ")+", got '"+(this.terminals_[F]||F)+"'":K="Parse error on line "+(T+1)+": Unexpected "+(F==_?"end of input":"'"+(this.terminals_[F]||F)+"'"),this.parseError(K,{text:D.match,token:this.terminals_[F]||F,line:D.yylineno,loc:R,expected:he})}if($[0]instanceof Array&&$.length>1)throw new Error("Parse Error: multiple actions possible at state: "+z+", token: "+F);switch($[0]){case 1:y.push(F),x.push(D.yytext),b.push(D.yylloc),y.push($[1]),F=null,P?(F=P,P=null):(E=D.yyleng,C=D.yytext,T=D.yylineno,R=D.yylloc,A>0&&A--);break;case 2:if(ne=this.productions_[$[1]][1],j.$=x[x.length-ne],j._$={first_line:b[b.length-(ne||1)].first_line,last_line:b[b.length-1].last_line,first_column:b[b.length-(ne||1)].first_column,last_column:b[b.length-1].last_column},O&&(j._$.range=[b[b.length-(ne||1)].range[0],b[b.length-1].range[1]]),Q=this.performAction.apply(j,[C,E,T,k.yy,$[1],x,b].concat(I)),typeof Q<"u")return Q;ne&&(y=y.slice(0,-1*ne*2),x=x.slice(0,-1*ne),b=b.slice(0,-1*ne)),y.push(this.productions_[$[1]][0]),x.push(j.$),b.push(j._$),le=w[y[y.length-2]][y[y.length-1]],y.push(le);break;case 3:return!0}}return!0},"parse")},f=function(){var p={EOF:1,parseError:o(function(g,y){if(this.yy.parser)this.yy.parser.parseError(g,y);else throw new Error(g)},"parseError"),setInput:o(function(m,g){return this.yy=g||this.yy||{},this._input=m,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},"setInput"),input:o(function(){var m=this._input[0];this.yytext+=m,this.yyleng++,this.offset++,this.match+=m,this.matched+=m;var g=m.match(/(?:\r\n?|\n).*/g);return g?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),m},"input"),unput:o(function(m){var g=m.length,y=m.split(/(?:\r\n?|\n)/g);this._input=m+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-g),this.offset-=g;var v=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),y.length-1&&(this.yylineno-=y.length-1);var x=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:y?(y.length===v.length?this.yylloc.first_column:0)+v[v.length-y.length].length-y[0].length:this.yylloc.first_column-g},this.options.ranges&&(this.yylloc.range=[x[0],x[0]+this.yyleng-g]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(m){this.unput(this.match.slice(m))},"less"),pastInput:o(function(){var m=this.matched.substr(0,this.matched.length-this.match.length);return(m.length>20?"...":"")+m.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var m=this.match;return m.length<20&&(m+=this._input.substr(0,20-m.length)),(m.substr(0,20)+(m.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var m=this.pastInput(),g=new Array(m.length+1).join("-");return m+this.upcomingInput()+` +`+g+"^"},"showPosition"),test_match:o(function(m,g){var y,v,x;if(this.options.backtrack_lexer&&(x={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&&(x.yylloc.range=this.yylloc.range.slice(0))),v=m[0].match(/(?:\r\n?|\n).*/g),v&&(this.yylineno+=v.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:v?v[v.length-1].length-v[v.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+m[0].length},this.yytext+=m[0],this.match+=m[0],this.matches=m,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(m[0].length),this.matched+=m[0],y=this.performAction.call(this,this.yy,this,g,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),y)return y;if(this._backtrack){for(var b in x)this[b]=x[b];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var m,g,y,v;this._more||(this.yytext="",this.match="");for(var x=this._currentRules(),b=0;bg[0].length)){if(g=y,v=b,this.options.backtrack_lexer){if(m=this.test_match(y,x[b]),m!==!1)return m;if(this._backtrack){g=!1;continue}else return!1}else if(!this.options.flex)break}return g?(m=this.test_match(g,x[v]),m!==!1?m:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var g=this.next();return g||this.lex()},"lex"),begin:o(function(g){this.conditionStack.push(g)},"begin"),popState:o(function(){var g=this.conditionStack.length-1;return g>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(g){return g=this.conditionStack.length-1-Math.abs(g||0),g>=0?this.conditionStack[g]:"INITIAL"},"topState"),pushState:o(function(g){this.begin(g)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(g,y,v,x){var b=x;switch(v){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 21;case 16:return 20;case 17:return 6;case 18:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\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,/^(?::\s[^:\n]+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18],inclusive:!0}}};return p}();h.lexer=f;function d(){this.yy={}}return o(d,"Parser"),d.prototype=h,h.Parser=d,new d}();dP.parser=dP;Qde=dP});var mP={};hr(mP,{addEvent:()=>ope,addSection:()=>npe,addTask:()=>spe,addTaskOrg:()=>lpe,clear:()=>rpe,default:()=>hHe,getCommonDb:()=>tpe,getSections:()=>ipe,getTasks:()=>ape});var O1,epe,pP,Y6,P1,tpe,rpe,npe,ipe,ape,spe,ope,lpe,Jde,hHe,cpe=N(()=>{"use strict";mi();O1="",epe=0,pP=[],Y6=[],P1=[],tpe=o(()=>qy,"getCommonDb"),rpe=o(function(){pP.length=0,Y6.length=0,O1="",P1.length=0,Ar()},"clear"),npe=o(function(t){O1=t,pP.push(t)},"addSection"),ipe=o(function(){return pP},"getSections"),ape=o(function(){let t=Jde(),e=100,r=0;for(;!t&&rr.id===epe-1).events.push(t)},"addEvent"),lpe=o(function(t){let e={section:O1,type:O1,description:t,task:t,classes:[]};Y6.push(e)},"addTaskOrg"),Jde=o(function(){let t=o(function(r){return P1[r].processed},"compileTask"),e=!0;for(let[r,n]of P1.entries())t(r),e=e&&n.processed;return e},"compileTasks"),hHe={clear:rpe,getCommonDb:tpe,addSection:npe,getSections:ipe,getTasks:ape,addTask:spe,addTaskOrg:lpe,addEvent:ope}});function dpe(t,e){t.each(function(){var r=Ge(this),n=r.text().split(/(\s+|
    )/).reverse(),i,a=[],s=1.1,l=r.attr("y"),u=parseFloat(r.attr("dy")),h=r.text(null).append("tspan").attr("x",0).attr("y",l).attr("dy",u+"em");for(let f=0;fe||i==="
    ")&&(a.pop(),h.text(a.join(" ").trim()),i==="
    "?a=[""]:a=[i],h=r.append("tspan").attr("x",0).attr("y",l).attr("dy",s+"em").text(i))})}var fHe,X6,dHe,pHe,hpe,mHe,gHe,upe,yHe,vHe,xHe,gP,fpe,bHe,wHe,THe,kHe,bf,ppe=N(()=>{"use strict";dr();fHe=12,X6=o(function(t,e){let r=t.append("rect");return r.attr("x",e.x),r.attr("y",e.y),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("width",e.width),r.attr("height",e.height),r.attr("rx",e.rx),r.attr("ry",e.ry),e.class!==void 0&&r.attr("class",e.class),r},"drawRect"),dHe=o(function(t,e){let n=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=bl().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}o(a,"smile");function s(u){let h=bl().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}o(s,"sad");function l(u){u.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")}return o(l,"ambivalent"),e.score>3?a(i):e.score<3?s(i):l(i),n},"drawFace"),pHe=o(function(t,e){let r=t.append("circle");return r.attr("cx",e.cx),r.attr("cy",e.cy),r.attr("class","actor-"+e.pos),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("r",e.r),r.class!==void 0&&r.attr("class",r.class),e.title!==void 0&&r.append("title").text(e.title),r},"drawCircle"),hpe=o(function(t,e){let r=e.text.replace(//gi," "),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.attr("class","legend"),n.style("text-anchor",e.anchor),e.class!==void 0&&n.attr("class",e.class);let i=n.append("tspan");return i.attr("x",e.x+e.textMargin*2),i.text(r),n},"drawText"),mHe=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=t.append("polygon");n.attr("points",r(e.x,e.y,50,20,7)),n.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,hpe(t,e)},"drawLabel"),gHe=o(function(t,e,r){let n=t.append("g"),i=gP();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=r.width,i.height=r.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,X6(n,i),fpe(r)(e.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),upe=-1,yHe=o(function(t,e,r){let n=e.x+r.width/2,i=t.append("g");upe++;let a=300+5*30;i.append("line").attr("id","task"+upe).attr("x1",n).attr("y1",e.y).attr("x2",n).attr("y2",a).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),dHe(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});let s=gP();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=r.width,s.height=r.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,X6(i,s),fpe(r)(e.task,i,s.x,s.y,s.width,s.height,{class:"task"},r,e.colour)},"drawTask"),vHe=o(function(t,e){X6(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},"drawBackgroundRect"),xHe=o(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),gP=o(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),fpe=function(){function t(i,a,s,l,u,h,f,d){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",d).style("text-anchor","middle").text(i);n(p,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d,p){let{taskFontSize:m,taskFontFamily:g}=d,y=i.split(//gi);for(let v=0;v{"use strict";dr();ppe();vt();zt();Ei();EHe=o(function(t,e,r,n){let i=me(),a=i.leftMargin??50;Y.debug("timeline",n.db);let s=i.securityLevel,l;s==="sandbox"&&(l=Ge("#i"+e));let h=(s==="sandbox"?Ge(l.nodes()[0].contentDocument.body):Ge("body")).select("#"+e);h.append("g");let f=n.db.getTasks(),d=n.db.getCommonDb().getDiagramTitle();Y.debug("task",f),bf.initGraphics(h);let p=n.db.getSections();Y.debug("sections",p);let m=0,g=0,y=0,v=0,x=50+a,b=50;v=50;let w=0,C=!0;p.forEach(function(_){let I={number:w,descr:_,section:w,width:150,padding:20,maxHeight:m},D=bf.getVirtualNodeHeight(h,I,i);Y.debug("sectionHeight before draw",D),m=Math.max(m,D+20)});let T=0,E=0;Y.debug("tasks.length",f.length);for(let[_,I]of f.entries()){let D={number:_,descr:I,section:I.section,width:150,padding:20,maxHeight:g},k=bf.getVirtualNodeHeight(h,D,i);Y.debug("taskHeight before draw",k),g=Math.max(g,k+20),T=Math.max(T,I.events.length);let L=0;for(let R of I.events){let O={descr:R,section:I.section,number:I.section,width:150,padding:20,maxHeight:50};L+=bf.getVirtualNodeHeight(h,O,i)}E=Math.max(E,L)}Y.debug("maxSectionHeight before draw",m),Y.debug("maxTaskHeight before draw",g),p&&p.length>0?p.forEach(_=>{let I=f.filter(R=>R.section===_),D={number:w,descr:_,section:w,width:200*Math.max(I.length,1)-50,padding:20,maxHeight:m};Y.debug("sectionNode",D);let k=h.append("g"),L=bf.drawNode(k,D,w,i);Y.debug("sectionNode output",L),k.attr("transform",`translate(${x}, ${v})`),b+=m+50,I.length>0&&mpe(h,I,w,x,b,g,i,T,E,m,!1),x+=200*Math.max(I.length,1),b=v,w++}):(C=!1,mpe(h,f,w,x,b,g,i,T,E,m,!0));let A=h.node().getBBox();Y.debug("bounds",A),d&&h.append("text").text(d).attr("x",A.width/2-a).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),y=C?m+g+150:g+100,h.append("g").attr("class","lineWrapper").append("line").attr("x1",a).attr("y1",y).attr("x2",A.width+3*a).attr("y2",y).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),Ao(void 0,h,i.timeline?.padding??50,i.timeline?.useMaxWidth??!1)},"draw"),mpe=o(function(t,e,r,n,i,a,s,l,u,h,f){for(let d of e){let p={descr:d.task,section:r,number:r,width:150,padding:20,maxHeight:a};Y.debug("taskNode",p);let m=t.append("g").attr("class","taskWrapper"),y=bf.drawNode(m,p,r,s).height;if(Y.debug("taskHeight after draw",y),m.attr("transform",`translate(${n}, ${i})`),a=Math.max(a,y),d.events){let v=t.append("g").attr("class","lineWrapper"),x=a;i+=100,x=x+SHe(t,d.events,r,n,i,s),i-=100,v.append("line").attr("x1",n+190/2).attr("y1",i+a).attr("x2",n+190/2).attr("y2",i+a+(f?a:h)+u+120).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}n=n+200,f&&!s.timeline?.disableMulticolor&&r++}i=i-10},"drawTasks"),SHe=o(function(t,e,r,n,i,a){let s=0,l=i;i=i+100;for(let u of e){let h={descr:u,section:r,number:r,width:150,padding:20,maxHeight:50};Y.debug("eventNode",h);let f=t.append("g").attr("class","eventWrapper"),p=bf.drawNode(f,h,r,a).height;s=s+p,f.attr("transform",`translate(${n}, ${i})`),i=i+10+p}return i=l,s},"drawEvents"),gpe={setConf:o(()=>{},"setConf"),draw:EHe}});var CHe,AHe,vpe,xpe=N(()=>{"use strict";Ys();CHe=o(t=>{let e="";for(let r=0;r` + .edge { + stroke-width: 3; + } + ${CHe(t)} + .section-root rect, .section-root path, .section-root circle { + fill: ${t.git0}; + } + .section-root text { + fill: ${t.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .eventWrapper { + filter: brightness(120%); + } +`,"getStyles"),vpe=AHe});var bpe={};hr(bpe,{diagram:()=>_He});var _He,wpe=N(()=>{"use strict";Zde();cpe();ype();xpe();_He={db:mP,renderer:gpe,parser:Qde,styles:vpe}});var yP,Epe,Spe=N(()=>{"use strict";yP=function(){var t=o(function(C,T,E,A){for(E=E||{},A=C.length;A--;E[C[A]]=T);return E},"o"),e=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],f=[1,24],d=[1,25],p=[6,7,11],m=[1,6,13,15,16,19,22],g=[1,33],y=[1,34],v=[1,6,7,11,13,15,16,19,22],x={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:o(function(T,E,A,S,_,I,D){var k=I.length-1;switch(_){case 6:case 7:return S;case 8:S.getLogger().trace("Stop NL ");break;case 9:S.getLogger().trace("Stop EOF ");break;case 11:S.getLogger().trace("Stop NL2 ");break;case 12:S.getLogger().trace("Stop EOF2 ");break;case 15:S.getLogger().info("Node: ",I[k].id),S.addNode(I[k-1].length,I[k].id,I[k].descr,I[k].type);break;case 16:S.getLogger().trace("Icon: ",I[k]),S.decorateNode({icon:I[k]});break;case 17:case 21:S.decorateNode({class:I[k]});break;case 18:S.getLogger().trace("SPACELIST");break;case 19:S.getLogger().trace("Node: ",I[k].id),S.addNode(0,I[k].id,I[k].descr,I[k].type);break;case 20:S.decorateNode({icon:I[k]});break;case 25:S.getLogger().trace("node found ..",I[k-2]),this.$={id:I[k-1],descr:I[k-1],type:S.getType(I[k-2],I[k])};break;case 26:this.$={id:I[k],descr:I[k],type:S.nodeType.DEFAULT};break;case 27:S.getLogger().trace("node found ..",I[k-3]),this.$={id:I[k-3],descr:I[k-1],type:S.getType(I[k-2],I[k])};break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:r,7:[1,10],9:9,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},t(u,[2,3]),{1:[2,2]},t(u,[2,4]),t(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:r,9:22,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:h,7:f,10:23,11:d},t(p,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:s,22:l}),t(p,[2,18]),t(p,[2,19]),t(p,[2,20]),t(p,[2,21]),t(p,[2,23]),t(p,[2,24]),t(p,[2,26],{19:[1,30]}),{20:[1,31]},{6:h,7:f,10:32,11:d},{1:[2,7],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},t(m,[2,14],{7:g,11:y}),t(v,[2,8]),t(v,[2,9]),t(v,[2,10]),t(p,[2,15]),t(p,[2,16]),t(p,[2,17]),{20:[1,35]},{21:[1,36]},t(m,[2,13],{7:g,11:y}),t(v,[2,11]),t(v,[2,12]),{21:[1,37]},t(p,[2,25]),t(p,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(T,E){if(E.recoverable)this.trace(T);else{var A=new Error(T);throw A.hash=E,A}},"parseError"),parse:o(function(T){var E=this,A=[0],S=[],_=[null],I=[],D=this.table,k="",L=0,R=0,O=0,M=2,B=1,F=I.slice.call(arguments,1),P=Object.create(this.lexer),z={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(z.yy[$]=this.yy[$]);P.setInput(T,z.yy),z.yy.lexer=P,z.yy.parser=this,typeof P.yylloc>"u"&&(P.yylloc={});var H=P.yylloc;I.push(H);var Q=P.options&&P.options.ranges;typeof z.yy.parseError=="function"?this.parseError=z.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function j(ae){A.length=A.length-2*ae,_.length=_.length-ae,I.length=I.length-ae}o(j,"popStack");function ie(){var ae;return ae=S.pop()||P.lex()||B,typeof ae!="number"&&(ae instanceof Array&&(S=ae,ae=S.pop()),ae=E.symbols_[ae]||ae),ae}o(ie,"lex");for(var ne,le,he,K,X,te,J={},se,ue,Z,Se;;){if(he=A[A.length-1],this.defaultActions[he]?K=this.defaultActions[he]:((ne===null||typeof ne>"u")&&(ne=ie()),K=D[he]&&D[he][ne]),typeof K>"u"||!K.length||!K[0]){var ce="";Se=[];for(se in D[he])this.terminals_[se]&&se>M&&Se.push("'"+this.terminals_[se]+"'");P.showPosition?ce="Parse error on line "+(L+1)+`: +`+P.showPosition()+` +Expecting `+Se.join(", ")+", got '"+(this.terminals_[ne]||ne)+"'":ce="Parse error on line "+(L+1)+": Unexpected "+(ne==B?"end of input":"'"+(this.terminals_[ne]||ne)+"'"),this.parseError(ce,{text:P.match,token:this.terminals_[ne]||ne,line:P.yylineno,loc:H,expected:Se})}if(K[0]instanceof Array&&K.length>1)throw new Error("Parse Error: multiple actions possible at state: "+he+", token: "+ne);switch(K[0]){case 1:A.push(ne),_.push(P.yytext),I.push(P.yylloc),A.push(K[1]),ne=null,le?(ne=le,le=null):(R=P.yyleng,k=P.yytext,L=P.yylineno,H=P.yylloc,O>0&&O--);break;case 2:if(ue=this.productions_[K[1]][1],J.$=_[_.length-ue],J._$={first_line:I[I.length-(ue||1)].first_line,last_line:I[I.length-1].last_line,first_column:I[I.length-(ue||1)].first_column,last_column:I[I.length-1].last_column},Q&&(J._$.range=[I[I.length-(ue||1)].range[0],I[I.length-1].range[1]]),te=this.performAction.apply(J,[k,R,L,z.yy,K[1],_,I].concat(F)),typeof te<"u")return te;ue&&(A=A.slice(0,-1*ue*2),_=_.slice(0,-1*ue),I=I.slice(0,-1*ue)),A.push(this.productions_[K[1]][0]),_.push(J.$),I.push(J._$),Z=D[A[A.length-2]][A[A.length-1]],A.push(Z);break;case 3:return!0}}return!0},"parse")},b=function(){var C={EOF:1,parseError:o(function(E,A){if(this.yy.parser)this.yy.parser.parseError(E,A);else throw new Error(E)},"parseError"),setInput:o(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},"setInput"),input:o(function(){var T=this._input[0];this.yytext+=T,this.yyleng++,this.offset++,this.match+=T,this.matched+=T;var E=T.match(/(?:\r\n?|\n).*/g);return E?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),T},"input"),unput:o(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 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),A.length-1&&(this.yylineno-=A.length-1);var _=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===S.length?this.yylloc.first_column:0)+S[S.length-A.length].length-A[0].length:this.yylloc.first_column-E},this.options.ranges&&(this.yylloc.range=[_[0],_[0]+this.yyleng-E]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(T){this.unput(this.match.slice(T))},"less"),pastInput:o(function(){var T=this.matched.substr(0,this.matched.length-this.match.length);return(T.length>20?"...":"")+T.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(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,"")},"upcomingInput"),showPosition:o(function(){var T=this.pastInput(),E=new Array(T.length+1).join("-");return T+this.upcomingInput()+` +`+E+"^"},"showPosition"),test_match:o(function(T,E){var A,S,_;if(this.options.backtrack_lexer&&(_={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&&(_.yylloc.range=this.yylloc.range.slice(0))),S=T[0].match(/(?:\r\n?|\n).*/g),S&&(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],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 I in _)this[I]=_[I];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var T,E,A,S;this._more||(this.yytext="",this.match="");for(var _=this._currentRules(),I=0;I<_.length;I++)if(A=this._input.match(this.rules[_[I]]),A&&(!E||A[0].length>E[0].length)){if(E=A,S=I,this.options.backtrack_lexer){if(T=this.test_match(A,_[I]),T!==!1)return T;if(this._backtrack){E=!1;continue}else return!1}else if(!this.options.flex)break}return E?(T=this.test_match(E,_[S]),T!==!1?T:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var E=this.next();return E||this.lex()},"lex"),begin:o(function(E){this.conditionStack.push(E)},"begin"),popState:o(function(){var E=this.conditionStack.length-1;return E>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(E){return E=this.conditionStack.length-1-Math.abs(E||0),E>=0?this.conditionStack[E]:"INITIAL"},"topState"),pushState:o(function(E){this.begin(E)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(E,A,S,_){var I=_;switch(S){case 0:return E.getLogger().trace("Found comment",A.yytext),6;break;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;break;case 4:this.popState();break;case 5:E.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return E.getLogger().trace("SPACELINE"),6;break;case 7:return 7;case 8:return 15;case 9:E.getLogger().trace("end icon"),this.popState();break;case 10:return E.getLogger().trace("Exploding node"),this.begin("NODE"),19;break;case 11:return E.getLogger().trace("Cloud"),this.begin("NODE"),19;break;case 12:return E.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;break;case 13:return E.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;break;case 14:return this.begin("NODE"),19;break;case 15:return this.begin("NODE"),19;break;case 16:return this.begin("NODE"),19;break;case 17:return this.begin("NODE"),19;break;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:E.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return E.getLogger().trace("description:",A.yytext),"NODE_DESCR";break;case 26:this.popState();break;case 27:return this.popState(),E.getLogger().trace("node end ))"),"NODE_DEND";break;case 28:return this.popState(),E.getLogger().trace("node end )"),"NODE_DEND";break;case 29:return this.popState(),E.getLogger().trace("node end ...",A.yytext),"NODE_DEND";break;case 30:return this.popState(),E.getLogger().trace("node end (("),"NODE_DEND";break;case 31:return this.popState(),E.getLogger().trace("node end (-"),"NODE_DEND";break;case 32:return this.popState(),E.getLogger().trace("node end (-"),"NODE_DEND";break;case 33:return this.popState(),E.getLogger().trace("node end (("),"NODE_DEND";break;case 34:return this.popState(),E.getLogger().trace("node end (("),"NODE_DEND";break;case 35:return E.getLogger().trace("Long description:",A.yytext),20;break;case 36:return E.getLogger().trace("Long description:",A.yytext),20;break}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return C}();x.lexer=b;function w(){this.yy={}}return o(w,"Parser"),w.prototype=x,x.Parser=w,new w}();yP.parser=yP;Epe=yP});var $l,Cpe,vP,NHe,MHe,IHe,OHe,Vi,PHe,BHe,FHe,$He,zHe,GHe,VHe,Ape,_pe=N(()=>{"use strict";zt();gr();vt();Ya();$l=[],Cpe=0,vP={},NHe=o(()=>{$l=[],Cpe=0,vP={}},"clear"),MHe=o(function(t){for(let e=$l.length-1;e>=0;e--)if($l[e].level$l.length>0?$l[0]:null,"getMindmap"),OHe=o((t,e,r,n)=>{Y.info("addNode",t,e,r,n);let i=me(),a=i.mindmap?.padding??or.mindmap.padding;switch(n){case Vi.ROUNDED_RECT:case Vi.RECT:case Vi.HEXAGON:a*=2}let s={id:Cpe++,nodeId:Tr(e,i),level:t,descr:Tr(r,i),type:n,children:[],width:i.mindmap?.maxNodeWidth??or.mindmap.maxNodeWidth,padding:a},l=MHe(t);if(l)l.children.push(s),$l.push(s);else if($l.length===0)$l.push(s);else throw new Error('There can be only one root. No parent could be found for ("'+s.descr+'")')},"addNode"),Vi={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},PHe=o((t,e)=>{switch(Y.debug("In get type",t,e),t){case"[":return Vi.RECT;case"(":return e===")"?Vi.ROUNDED_RECT:Vi.CLOUD;case"((":return Vi.CIRCLE;case")":return Vi.CLOUD;case"))":return Vi.BANG;case"{{":return Vi.HEXAGON;default:return Vi.DEFAULT}},"getType"),BHe=o((t,e)=>{vP[t]=e},"setElementForId"),FHe=o(t=>{if(!t)return;let e=me(),r=$l[$l.length-1];t.icon&&(r.icon=Tr(t.icon,e)),t.class&&(r.class=Tr(t.class,e))},"decorateNode"),$He=o(t=>{switch(t){case Vi.DEFAULT:return"no-border";case Vi.RECT:return"rect";case Vi.ROUNDED_RECT:return"rounded-rect";case Vi.CIRCLE:return"circle";case Vi.CLOUD:return"cloud";case Vi.BANG:return"bang";case Vi.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),zHe=o(()=>Y,"getLogger"),GHe=o(t=>vP[t],"getElementById"),VHe={clear:NHe,addNode:OHe,getMindmap:IHe,nodeType:Vi,getType:PHe,setElementForId:BHe,decorateNode:FHe,type2Str:$He,getLogger:zHe,getElementById:GHe},Ape=VHe});function Wi(t){"@babel/helpers - typeof";return Wi=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Wi(t)}function Mf(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Dpe(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},"n"),e:o(function(u){throw u},"e"),f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a=!0,s=!1,l;return{s:o(function(){r=r.call(t)},"s"),n:o(function(){var u=r.next();return a=u.done,u},"n"),e:o(function(u){s=!0,l=u},"e"),f:o(function(){try{!a&&r.return!=null&&r.return()}finally{if(s)throw l}},"f")}}function yWe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}function vWe(t,e){return e={exports:{}},t(e,e.exports),e.exports}function SWe(t){for(var e=t.length;e--&&EWe.test(t.charAt(e)););return e}function _We(t){return t&&t.slice(0,CWe(t)+1).replace(AWe,"")}function MWe(t){var e=RWe.call(t,Ab),r=t[Ab];try{t[Ab]=void 0;var n=!0}catch{}var i=NWe.call(t);return n&&(e?t[Ab]=r:delete t[Ab]),i}function BWe(t){return PWe.call(t)}function GWe(t){return t==null?t===void 0?zWe:$We:Npe&&Npe in Object(t)?IWe(t):FWe(t)}function VWe(t){return t!=null&&typeof t=="object"}function WWe(t){return typeof t=="symbol"||UWe(t)&&ame(t)==HWe}function KWe(t){if(typeof t=="number")return t;if(r4(t))return Mpe;if(zp(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=zp(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=DWe(t);var r=YWe.test(t);return r||XWe.test(t)?jWe(t.slice(2),r?2:8):qWe.test(t)?Mpe:+t}function eqe(t,e,r){var n,i,a,s,l,u,h=0,f=!1,d=!1,p=!0;if(typeof t!="function")throw new TypeError(QWe);e=Ipe(e)||0,zp(r)&&(f=!!r.leading,d="maxWait"in r,a=d?ZWe(Ipe(r.maxWait)||0,e):a,p="trailing"in r?!!r.trailing:p);function m(E){var A=n,S=i;return n=i=void 0,h=E,s=t.apply(S,A),s}o(m,"invokeFunc");function g(E){return h=E,l=setTimeout(x,e),f?m(E):s}o(g,"leadingEdge");function y(E){var A=E-u,S=E-h,_=e-A;return d?JWe(_,a-S):_}o(y,"remainingWait");function v(E){var A=E-u,S=E-h;return u===void 0||A>=e||A<0||d&&S>=a}o(v,"shouldInvoke");function x(){var E=xP();if(v(E))return b(E);l=setTimeout(x,y(E))}o(x,"timerExpired");function b(E){return l=void 0,p&&n?m(E):(n=i=void 0,s)}o(b,"trailingEdge");function w(){l!==void 0&&clearTimeout(l),h=0,n=u=i=l=void 0}o(w,"cancel");function C(){return l===void 0?s:b(xP())}o(C,"flush");function T(){var E=xP(),A=v(E);if(n=arguments,i=this,u=E,A){if(l===void 0)return g(u);if(d)return clearTimeout(l),l=setTimeout(x,e),m(u)}return l===void 0&&(l=setTimeout(x,e)),s}return o(T,"debounced"),T.cancel=w,T.flush=C,T}function IS(t,e,r,n,i,a){var s;return si(t)?s=t:s=Q1[t]||Q1.euclidean,e===0&&si(t)?s(i,a):s(e,r,n,i,a)}function qYe(t,e){if(OS(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||r4(t)?!0:WYe.test(t)||!HYe.test(t)||e!=null&&t in Object(e)}function ZYe(t){if(!zp(t))return!1;var e=ame(t);return e==jYe||e==KYe||e==XYe||e==QYe}function tXe(t){return!!e0e&&e0e in t}function aXe(t){if(t!=null){try{return iXe.call(t)}catch{}try{return t+""}catch{}}return""}function pXe(t){if(!zp(t)||rXe(t))return!1;var e=JYe(t)?dXe:lXe;return e.test(sXe(t))}function gXe(t,e){return t?.[e]}function vXe(t,e){var r=yXe(t,e);return mXe(r)?r:void 0}function bXe(){this.__data__=jb?jb(null):{},this.size=0}function TXe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}function AXe(t){var e=this.__data__;if(jb){var r=e[t];return r===EXe?void 0:r}return CXe.call(e,t)?e[t]:void 0}function RXe(t){var e=this.__data__;return jb?e[t]!==void 0:LXe.call(e,t)}function IXe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=jb&&e===void 0?MXe:e,this}function ty(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1}function XXe(t,e){var r=this.__data__,n=PS(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}function ry(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1&&t%1==0&&t0;){var f=i.shift();e(f),a.add(f.id()),l&&n(i,a,f)}return t}function Fme(t,e,r){if(r.isParent())for(var n=r._private.children,i=0;i0&&arguments[0]!==void 0?arguments[0]:NKe,e=arguments.length>1?arguments[1]:void 0,r=0;r0?k=R:D=R;while(Math.abs(L)>s&&++O=a?b(I,O):M===0?O:C(I,D,D+h)}o(T,"getTForX");var E=!1;function A(){E=!0,(t!==e||r!==n)&&w()}o(A,"precompute");var S=o(function(D){return E||A(),t===e&&r===n?D:D===0?0:D===1?1:v(T(D),e,n)},"f");S.getControlPoints=function(){return[{x:t,y:e},{x:r,y:n}]};var _="generateBezier("+[t,e,r,n]+")";return S.toString=function(){return _},S}function x0e(t,e,r,n,i){if(n===1||e===r)return r;var a=i(e,r,n);return t==null||((t.roundValue||t.color)&&(a=Math.round(a)),t.min!==void 0&&(a=Math.max(a,t.min)),t.max!==void 0&&(a=Math.min(a,t.max))),a}function b0e(t,e){return t.pfValue!=null||t.value!=null?t.pfValue!=null&&(e==null||e.type.units!=="%")?t.pfValue:t.value:t}function $1(t,e,r,n,i){var a=i!=null?i.type:null;r<0?r=0:r>1&&(r=1);var s=b0e(t,i),l=b0e(e,i);if(Ct(s)&&Ct(l))return x0e(a,s,l,r,n);if(En(s)&&En(l)){for(var u=[],h=0;h0?(m==="spring"&&g.push(s.duration),s.easingImpl=dS[m].apply(null,g)):s.easingImpl=dS[m]}var y=s.easingImpl,v;if(s.duration===0?v=1:v=(r-u)/s.duration,s.applying&&(v=s.progress),v<0?v=0:v>1&&(v=1),s.delay==null){var x=s.startPosition,b=s.position;if(b&&i&&!t.locked()){var w={};Rb(x.x,b.x)&&(w.x=$1(x.x,b.x,v,y)),Rb(x.y,b.y)&&(w.y=$1(x.y,b.y,v,y)),t.position(w)}var C=s.startPan,T=s.pan,E=a.pan,A=T!=null&&n;A&&(Rb(C.x,T.x)&&(E.x=$1(C.x,T.x,v,y)),Rb(C.y,T.y)&&(E.y=$1(C.y,T.y,v,y)),t.emit("pan"));var S=s.startZoom,_=s.zoom,I=_!=null&&n;I&&(Rb(S,_)&&(a.zoom=Yb(a.minZoom,$1(S,_,v,y),a.maxZoom)),t.emit("zoom")),(A||I)&&t.emit("viewport");var D=s.style;if(D&&D.length>0&&i){for(var k=0;k=0;A--){var S=E[A];S()}E.splice(0,E.length)},"callbacks"),b=m.length-1;b>=0;b--){var w=m[b],C=w._private;if(C.stopped){m.splice(b,1),C.hooked=!1,C.playing=!1,C.started=!1,x(C.frames);continue}!C.playing&&!C.applying||(C.playing&&C.applying&&(C.applying=!1),C.started||qKe(f,w,t),WKe(f,w,t,d),C.applying&&(C.applying=!1),x(C.frames),C.step!=null&&C.step(t),w.completed()&&(m.splice(b,1),C.hooked=!1,C.playing=!1,C.started=!1,x(C.completes)),y=!0)}return!d&&m.length===0&&g.length===0&&n.push(f),y}o(i,"stepOne");for(var a=!1,s=0;s0?e.notify("draw",r):e.notify("draw")),r.unmerge(n),e.emit("step")}function tge(t){this.options=rr({},eQe,tQe,t)}function rge(t){this.options=rr({},rQe,t)}function nge(t){this.options=rr({},nQe,t)}function HS(t){this.options=rr({},iQe,t),this.options.layout=this;var e=this.options.eles.nodes(),r=this.options.eles.edges(),n=r.filter(function(i){var a=i.source().data("id"),s=i.target().data("id"),l=e.some(function(h){return h.data("id")===a}),u=e.some(function(h){return h.data("id")===s});return!l||!u});this.options.eles=this.options.eles.not(n)}function age(t){this.options=rr({},wQe,t)}function gB(t){this.options=rr({},TQe,t)}function sge(t){this.options=rr({},kQe,t)}function oge(t){this.options=rr({},EQe,t)}function lge(t){this.options=t,this.notifications=0}function hge(t,e){e.radius===0?t.lineTo(e.cx,e.cy):t.arc(e.cx,e.cy,e.radius,e.startAngle,e.endAngle,e.counterClockwise)}function vB(t,e,r,n){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;return n===0||e.radius===0?{cx:e.x,cy:e.y,radius:0,startX:e.x,startY:e.y,stopX:e.x,stopY:e.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(AQe(t,e,r,n,i),{cx:HP,cy:WP,radius:Bp,startX:cge,startY:uge,stopX:qP,stopY:YP,startAngle:qc.ang+Math.PI/2*Fp,endAngle:Jo.ang-Math.PI/2*Fp,counterClockwise:gS})}function fge(t){var e=[];if(t!=null){for(var r=0;r5&&arguments[5]!==void 0?arguments[5]:5,s=arguments.length>6?arguments[6]:void 0;t.beginPath(),t.moveTo(e+a,r),t.lineTo(e+n-a,r),t.quadraticCurveTo(e+n,r,e+n,r+a),t.lineTo(e+n,r+i-a),t.quadraticCurveTo(e+n,r+i,e+n-a,r+i),t.lineTo(e+a,r+i),t.quadraticCurveTo(e,r+i,e,r+i-a),t.lineTo(e,r+a),t.quadraticCurveTo(e,r,e+a,r),t.closePath(),s?t.stroke():t.fill()}function z0e(t,e,r){var n=t.createShader(e);if(t.shaderSource(n,r),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error(t.getShaderInfoLog(n));return n}function pZe(t,e,r){var n=z0e(t,t.VERTEX_SHADER,e),i=z0e(t,t.FRAGMENT_SHADER,r),a=t.createProgram();if(t.attachShader(a,n),t.attachShader(a,i),t.linkProgram(a),!t.getProgramParameter(a,t.LINK_STATUS))throw new Error("Could not initialize shaders");return a}function mZe(t,e,r){r===void 0&&(r=e);var n=t.makeOffscreenCanvas(e,r),i=n.context=n.getContext("2d");return n.clear=function(){return i.clearRect(0,0,n.width,n.height)},n.clear(),n}function wB(t){var e=t.pixelRatio,r=t.cy.zoom(),n=t.cy.pan();return{zoom:r*e,pan:{x:n.x*e,y:n.y*e}}}function NP(t,e,r,n,i){var a=n*r+e.x,s=i*r+e.y;return s=Math.round(t.canvasHeight-s),[a,s]}function oS(t,e,r){var n=t[0]/255,i=t[1]/255,a=t[2]/255,s=e,l=r||new Array(4);return l[0]=n*s,l[1]=i*s,l[2]=a*s,l[3]=s,l}function lS(t,e){var r=e||new Array(4);return r[0]=(t>>0&255)/255,r[1]=(t>>8&255)/255,r[2]=(t>>16&255)/255,r[3]=(t>>24&255)/255,r}function gZe(t){return t[0]+(t[1]<<8)+(t[2]<<16)+(t[3]<<24)}function yZe(t,e){var r=t.createTexture();return r.buffer=function(n){t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_NEAREST),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,n),t.generateMipmap(t.TEXTURE_2D),t.bindTexture(t.TEXTURE_2D,null)},r.deleteTexture=function(){t.deleteTexture(r)},r}function Sge(t,e){switch(e){case"float":return[1,t.FLOAT,4];case"vec2":return[2,t.FLOAT,4];case"vec3":return[3,t.FLOAT,4];case"vec4":return[4,t.FLOAT,4];case"int":return[1,t.INT,4];case"ivec2":return[2,t.INT,4]}}function Cge(t,e,r){switch(e){case t.FLOAT:return new Float32Array(r);case t.INT:return new Int32Array(r)}}function vZe(t,e,r,n,i,a){switch(e){case t.FLOAT:return new Float32Array(r.buffer,a*n,i);case t.INT:return new Int32Array(r.buffer,a*n,i)}}function xZe(t,e,r,n){var i=Sge(t,e),a=_i(i,2),s=a[0],l=a[1],u=Cge(t,l,n),h=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,h),t.bufferData(t.ARRAY_BUFFER,u,t.STATIC_DRAW),l===t.FLOAT?t.vertexAttribPointer(r,s,l,!1,0,0):l===t.INT&&t.vertexAttribIPointer(r,s,l,0,0),t.enableVertexAttribArray(r),t.bindBuffer(t.ARRAY_BUFFER,null),h}function po(t,e,r,n){var i=Sge(t,r),a=_i(i,3),s=a[0],l=a[1],u=a[2],h=Cge(t,l,e*s),f=s*u,d=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,d),t.bufferData(t.ARRAY_BUFFER,e*f,t.DYNAMIC_DRAW),t.enableVertexAttribArray(n),l===t.FLOAT?t.vertexAttribPointer(n,s,l,!1,f,0):l===t.INT&&t.vertexAttribIPointer(n,s,l,f,0),t.vertexAttribDivisor(n,1),t.bindBuffer(t.ARRAY_BUFFER,null);for(var p=new Array(e),m=0;mbge?(RZe(t),e.call(t,a)):(NZe(t),Rge(t,a,Vb.SCREEN)))}}{var r=t.matchCanvasSize;t.matchCanvasSize=function(a){r.call(t,a),t.pickingFrameBuffer.setFramebufferAttachmentSizes(t.canvasWidth,t.canvasHeight),t.pickingFrameBuffer.needsDraw=!0}}t.findNearestElements=function(a,s,l,u){return FZe(t,a,s)};{var n=t.invalidateCachedZSortedEles;t.invalidateCachedZSortedEles=function(){n.call(t),t.pickingFrameBuffer.needsDraw=!0}}{var i=t.notify;t.notify=function(a,s){i.call(t,a,s),a==="viewport"||a==="bounds"?t.pickingFrameBuffer.needsDraw=!0:a==="background"&&t.eleDrawing.invalidate(s,{type:"node-body"})}}}function RZe(t){var e=t.data.contexts[t.WEBGL];e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT)}function NZe(t){var e=o(function(n){n.save(),n.setTransform(1,0,0,1,0,0),n.clearRect(0,0,t.canvasWidth,t.canvasHeight),n.restore()},"clear");e(t.data.contexts[t.NODE]),e(t.data.contexts[t.DRAG])}function MZe(t){var e=t.canvasWidth,r=t.canvasHeight,n=wB(t),i=n.pan,a=n.zoom,s=Gb();DS(s,s,[i.x,i.y]),TB(s,s,[a,a]);var l=Gb();TZe(l,e,r);var u=Gb();return wZe(u,l,s),u}function Lge(t,e){var r=t.canvasWidth,n=t.canvasHeight,i=wB(t),a=i.pan,s=i.zoom;e.setTransform(1,0,0,1,0,0),e.clearRect(0,0,r,n),e.translate(a.x,a.y),e.scale(s,s)}function IZe(t,e){t.drawSelectionRectangle(e,function(r){return Lge(t,r)})}function OZe(t){var e=t.data.contexts[t.NODE];e.save(),Lge(t,e),e.strokeStyle="rgba(0, 0, 0, 0.3)",e.beginPath(),e.moveTo(-1e3,0),e.lineTo(1e3,0),e.stroke(),e.beginPath(),e.moveTo(0,-1e3),e.lineTo(0,1e3),e.stroke(),e.restore()}function PZe(t){var e=o(function(i,a,s){for(var l=i.atlasManager.getRenderTypeOpts(a),u=t.data.contexts[t.NODE],h=.125,f=l.atlasCollection.atlases,d=0;d=0&&k.add(O)}return k}function FZe(t,e,r){var n=BZe(t,e,r),i=t.getCachedZSortedEles(),a,s,l=mo(n),u;try{for(l.s();!(u=l.n()).done;){var h=u.value,f=i[h];if(!a&&f.isNode()&&(a=f),!s&&f.isEdge()&&(s=f),a&&s)break}}catch(d){l.e(d)}finally{l.f()}return[a,s].filter(Boolean)}function Rge(t,e,r){var n,i;t.webglDebug&&(i=[],n=performance.now());var a=t.eleDrawing,s=0;if(r.screen&&t.data.canvasNeedsRedraw[t.SELECT_BOX]&&IZe(t,e),t.data.canvasNeedsRedraw[t.NODE]||r.picking){var l=o(function(k,L){L+=1,k.isNode()?(a.drawTexture(k,L,"node-underlay"),a.drawTexture(k,L,"node-body"),a.drawTexture(k,L,"node-label"),a.drawTexture(k,L,"node-overlay")):(a.drawEdgeLine(k,L),a.drawEdgeArrow(k,L,"source"),a.drawEdgeArrow(k,L,"target"),a.drawTexture(k,L,"edge-label"))},"draw"),u=t.data.contexts[t.WEBGL];r.screen?(u.clearColor(0,0,0,0),u.enable(u.BLEND),u.blendFunc(u.ONE,u.ONE_MINUS_SRC_ALPHA)):u.disable(u.BLEND),u.clear(u.COLOR_BUFFER_BIT|u.DEPTH_BUFFER_BIT),u.viewport(0,0,u.canvas.width,u.canvas.height);var h=MZe(t),f=t.getCachedZSortedEles();if(s=f.length,a.startFrame(h,i,r),r.screen){for(var d=0;d{"use strict";o(Wi,"_typeof");o(Mf,"_classCallCheck");o(Dpe,"_defineProperties");o(If,"_createClass");o(X0e,"_defineProperty$1");o(_i,"_slicedToArray");o(j0e,"_toConsumableArray");o(UHe,"_arrayWithoutHoles");o(HHe,"_arrayWithHoles");o(WHe,"_iterableToArray");o(qHe,"_iterableToArrayLimit");o(ZP,"_unsupportedIterableToArray");o(OP,"_arrayLikeToArray");o(YHe,"_nonIterableSpread");o(XHe,"_nonIterableRest");o(mo,"_createForOfIteratorHelper");Ui=typeof window>"u"?null:window,Lpe=Ui?Ui.navigator:null;Ui&&Ui.document;jHe=Wi(""),K0e=Wi({}),KHe=Wi(function(){}),QHe=typeof HTMLElement>"u"?"undefined":Wi(HTMLElement),e4=o(function(e){return e&&e.instanceString&&si(e.instanceString)?e.instanceString():null},"instanceStr"),Zt=o(function(e){return e!=null&&Wi(e)==jHe},"string"),si=o(function(e){return e!=null&&Wi(e)===KHe},"fn"),En=o(function(e){return!go(e)&&(Array.isArray?Array.isArray(e):e!=null&&e instanceof Array)},"array"),Ur=o(function(e){return e!=null&&Wi(e)===K0e&&!En(e)&&e.constructor===Object},"plainObject"),ZHe=o(function(e){return e!=null&&Wi(e)===K0e},"object"),Ct=o(function(e){return e!=null&&Wi(e)===Wi(1)&&!isNaN(e)},"number"),JHe=o(function(e){return Ct(e)&&Math.floor(e)===e},"integer"),vS=o(function(e){if(QHe!=="undefined")return e!=null&&e instanceof HTMLElement},"htmlElement"),go=o(function(e){return t4(e)||Q0e(e)},"elementOrCollection"),t4=o(function(e){return e4(e)==="collection"&&e._private.single},"element"),Q0e=o(function(e){return e4(e)==="collection"&&!e._private.single},"collection"),JP=o(function(e){return e4(e)==="core"},"core"),Z0e=o(function(e){return e4(e)==="stylesheet"},"stylesheet"),eWe=o(function(e){return e4(e)==="event"},"event"),Af=o(function(e){return e==null?!0:!!(e===""||e.match(/^\s+$/))},"emptyString"),tWe=o(function(e){return typeof HTMLElement>"u"?!1:e instanceof HTMLElement},"domElement"),rWe=o(function(e){return Ur(e)&&Ct(e.x1)&&Ct(e.x2)&&Ct(e.y1)&&Ct(e.y2)},"boundingBox"),nWe=o(function(e){return ZHe(e)&&si(e.then)},"promise"),iWe=o(function(){return Lpe&&Lpe.userAgent.match(/msie|trident|edge/i)},"ms"),Ub=o(function(e,r){r||(r=o(function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var a=[],s=0;sr?1:0},"ascending"),hWe=o(function(e,r){return-1*eme(e,r)},"descending"),rr=Object.assign!=null?Object.assign.bind(Object):function(t){for(var e=arguments,r=1;r1&&(v-=1),v<1/6?g+(y-g)*6*v:v<1/2?y:v<2/3?g+(y-g)*(2/3-v)*6:g}o(f,"hue2rgb");var d=new RegExp("^"+oWe+"$").exec(e);if(d){if(n=parseInt(d[1]),n<0?n=(360- -1*n%360)%360:n>360&&(n=n%360),n/=360,i=parseFloat(d[2]),i<0||i>100||(i=i/100,a=parseFloat(d[3]),a<0||a>100)||(a=a/100,s=d[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(i===0)l=u=h=Math.round(a*255);else{var p=a<.5?a*(1+i):a+i-a*i,m=2*a-p;l=Math.round(255*f(m,p,n+1/3)),u=Math.round(255*f(m,p,n)),h=Math.round(255*f(m,p,n-1/3))}r=[l,u,h,s]}return r},"hsl2tuple"),pWe=o(function(e){var r,n=new RegExp("^"+aWe+"$").exec(e);if(n){r=[];for(var i=[],a=1;a<=3;a++){var s=n[a];if(s[s.length-1]==="%"&&(i[a]=!0),s=parseFloat(s),i[a]&&(s=s/100*255),s<0||s>255)return;r.push(Math.floor(s))}var l=i[1]||i[2]||i[3],u=i[1]&&i[2]&&i[3];if(l&&!u)return;var h=n[4];if(h!==void 0){if(h=parseFloat(h),h<0||h>1)return;r.push(h)}}return r},"rgb2tuple"),mWe=o(function(e){return gWe[e.toLowerCase()]},"colorname2tuple"),tme=o(function(e){return(En(e)?e:null)||mWe(e)||fWe(e)||pWe(e)||dWe(e)},"color2tuple"),gWe={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},rme=o(function(e){for(var r=e.map,n=e.keys,i=n.length,a=0;a1&&arguments[1]!==void 0?arguments[1]:V1,n=r,i;i=e.next(),!i.done;)n=n*ome+i.value|0;return n},"hashIterableInts"),Hb=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:V1;return r*ome+e|0},"hashInt"),Wb=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ob;return(r<<5)+r+e|0},"hashIntAlt"),rqe=o(function(e,r){return e*2097152+r},"combineHashes"),wf=o(function(e){return e[0]*2097152+e[1]},"combineHashesArray"),j6=o(function(e,r){return[Hb(e[0],r[0]),Wb(e[1],r[1])]},"hashArrays"),nqe=o(function(e,r){var n={value:0,done:!1},i=0,a=e.length,s={next:o(function(){return i=0&&!(e[i]===r&&(e.splice(i,1),n));i--);},"removeFromArray"),nB=o(function(e){e.splice(0,e.length)},"clearArray"),uqe=o(function(e,r){for(var n=0;n"u"?"undefined":Wi(Set))!==fqe?Set:dqe,NS=o(function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0||r===void 0||!JP(e)){ai("An element must have a core reference and parameters set");return}var i=r.group;if(i==null&&(r.data&&r.data.source!=null&&r.data.target!=null?i="edges":i="nodes"),i!=="nodes"&&i!=="edges"){ai("An element must be of type `nodes` or `edges`; you specified `"+i+"`");return}this.length=1,this[0]=this;var a=this._private={cy:e,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:i,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?i==="edges":!!r.pannable,active:!1,classes:new J1,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(a.position.x==null&&(a.position.x=0),a.position.y==null&&(a.position.y=0),r.renderedPosition){var s=r.renderedPosition,l=e.pan(),u=e.zoom();a.position={x:(s.x-l.x)/u,y:(s.y-l.y)/u}}var h=[];En(r.classes)?h=r.classes:Zt(r.classes)&&(h=r.classes.split(/\s+/));for(var f=0,d=h.length;fb?1:0},"defaultCmp"),f=o(function(x,b,w,C,T){var E;if(w==null&&(w=0),T==null&&(T=n),w<0)throw new Error("lo must be non-negative");for(C==null&&(C=x.length);wI;0<=I?_++:_--)S.push(_);return S}.apply(this).reverse(),A=[],C=0,T=E.length;CD;0<=D?++S:--S)k.push(s(x,w));return k},"nsmallest"),y=o(function(x,b,w,C){var T,E,A;for(C==null&&(C=n),T=x[w];w>b;){if(A=w-1>>1,E=x[A],C(T,E)<0){x[w]=E,w=A;continue}break}return x[w]=T},"_siftdown"),v=o(function(x,b,w){var C,T,E,A,S;for(w==null&&(w=n),T=x.length,S=b,E=x[b],C=2*b+1;C0;){var E=b.pop(),A=v(E),S=E.id();if(p[S]=A,A!==1/0)for(var _=E.neighborhood().intersect(g),I=0;I<_.length;I++){var D=_[I],k=D.id(),L=T(E,D),R=A+L.dist;R0)for(F.unshift(B);d[z];){var $=d[z];F.unshift($.edge),F.unshift($.node),P=$.node,z=P.id()}return l.spawn(F)},"pathTo")}},"dijkstra")},yqe={kruskal:o(function(e){e=e||function(w){return 1};for(var r=this.byGroup(),n=r.nodes,i=r.edges,a=n.length,s=new Array(a),l=n,u=o(function(C){for(var T=0;T0;){if(T(),A++,C===f){for(var S=[],_=a,I=f,D=x[I];S.unshift(_),D!=null&&S.unshift(D),_=v[I],_!=null;)I=_.id(),D=x[I];return{found:!0,distance:d[C],path:this.spawn(S),steps:A}}m[C]=!0;for(var k=w._private.edges,L=0;LD&&(g[I]=D,b[I]=_,w[I]=T),!a){var k=_*f+S;!a&&g[k]>D&&(g[k]=D,b[k]=S,w[k]=T)}}}for(var L=0;L1&&arguments[1]!==void 0?arguments[1]:s,ge=w(ae),ze=[],He=ge;;){if(He==null)return r.spawn();var $e=b(He),Re=$e.edge,Ie=$e.pred;if(ze.unshift(He[0]),He.same(Oe)&&ze.length>0)break;Re!=null&&ze.unshift(Re),He=Ie}return u.spawn(ze)},"pathTo"),E=0;E=0;f--){var d=h[f],p=d[1],m=d[2];(r[p]===l&&r[m]===u||r[p]===u&&r[m]===l)&&h.splice(f,1)}for(var g=0;gi;){var a=Math.floor(Math.random()*r.length);r=Sqe(a,e,r),n--}return r},"contractUntil"),Cqe={kargerStein:o(function(){var e=this,r=this.byGroup(),n=r.nodes,i=r.edges;i.unmergeBy(function(F){return F.isLoop()});var a=n.length,s=i.length,l=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),u=Math.floor(a/Eqe);if(a<2){ai("At least 2 nodes are required for Karger-Stein algorithm");return}for(var h=[],f=0;f1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=-1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=0,a=0,s=r;s1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;i?e=e.slice(r,n):(n0&&e.splice(0,r));for(var l=0,u=e.length-1;u>=0;u--){var h=e[u];s?isFinite(h)||(e[u]=-1/0,l++):e.splice(u,1)}a&&e.sort(function(p,m){return p-m});var f=e.length,d=Math.floor(f/2);return f%2!==0?e[d+1+l]:(e[d-1+l]+e[d+l])/2},"median"),Nqe=o(function(e){return Math.PI*e/180},"deg2rad"),K6=o(function(e,r){return Math.atan2(r,e)-Math.PI/2},"getAngleFromDisp"),iB=Math.log2||function(t){return Math.log(t)/Math.log(2)},mme=o(function(e){return e>0?1:e<0?-1:0},"signum"),Gp=o(function(e,r){return Math.sqrt(Op(e,r))},"dist"),Op=o(function(e,r){var n=r.x-e.x,i=r.y-e.y;return n*n+i*i},"sqdist"),Mqe=o(function(e){for(var r=e.length,n=0,i=0;i=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(e.w!=null&&e.h!=null&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},"makeBoundingBox"),Oqe=o(function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}},"copyBoundingBox"),Pqe=o(function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0},"clearBoundingBox"),Bqe=o(function(e,r,n){return{x1:e.x1+r,x2:e.x2+r,y1:e.y1+n,y2:e.y2+n,w:e.w,h:e.h}},"shiftBoundingBox"),gme=o(function(e,r){e.x1=Math.min(e.x1,r.x1),e.x2=Math.max(e.x2,r.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,r.y1),e.y2=Math.max(e.y2,r.y2),e.h=e.y2-e.y1},"updateBoundingBox"),Fqe=o(function(e,r,n){e.x1=Math.min(e.x1,r),e.x2=Math.max(e.x2,r),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},"expandBoundingBoxByPoint"),cS=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.x1-=r,e.x2+=r,e.y1-=r,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},"expandBoundingBox"),uS=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],n,i,a,s;if(r.length===1)n=i=a=s=r[0];else if(r.length===2)n=a=r[0],s=i=r[1];else if(r.length===4){var l=_i(r,4);n=l[0],i=l[1],a=l[2],s=l[3]}return e.x1-=s,e.x2+=i,e.y1-=n,e.y2+=a,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},"expandBoundingBoxSides"),Fpe=o(function(e,r){e.x1=r.x1,e.y1=r.y1,e.x2=r.x2,e.y2=r.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},"assignBoundingBox"),aB=o(function(e,r){return!(e.x1>r.x2||r.x1>e.x2||e.x2r.y2||r.y1>e.y2)},"boundingBoxesIntersect"),K1=o(function(e,r,n){return e.x1<=r&&r<=e.x2&&e.y1<=n&&n<=e.y2},"inBoundingBox"),$qe=o(function(e,r){return K1(e,r.x,r.y)},"pointInBoundingBox"),yme=o(function(e,r){return K1(e,r.x1,r.y1)&&K1(e,r.x2,r.y2)},"boundingBoxInBoundingBox"),vme=o(function(e,r,n,i,a,s,l){var u=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"auto",h=u==="auto"?Vp(a,s):u,f=a/2,d=s/2;h=Math.min(h,f,d);var p=h!==f,m=h!==d,g;if(p){var y=n-f+h-l,v=i-d-l,x=n+f-h+l,b=v;if(g=Ef(e,r,n,i,y,v,x,b,!1),g.length>0)return g}if(m){var w=n+f+l,C=i-d+h-l,T=w,E=i+d-h+l;if(g=Ef(e,r,n,i,w,C,T,E,!1),g.length>0)return g}if(p){var A=n-f+h-l,S=i+d+l,_=n+f-h+l,I=S;if(g=Ef(e,r,n,i,A,S,_,I,!1),g.length>0)return g}if(m){var D=n-f-l,k=i-d+h-l,L=D,R=i+d-h+l;if(g=Ef(e,r,n,i,D,k,L,R,!1),g.length>0)return g}var O;{var M=n-f+h,B=i-d+h;if(O=Pb(e,r,n,i,M,B,h+l),O.length>0&&O[0]<=M&&O[1]<=B)return[O[0],O[1]]}{var F=n+f-h,P=i-d+h;if(O=Pb(e,r,n,i,F,P,h+l),O.length>0&&O[0]>=F&&O[1]<=P)return[O[0],O[1]]}{var z=n+f-h,$=i+d-h;if(O=Pb(e,r,n,i,z,$,h+l),O.length>0&&O[0]>=z&&O[1]>=$)return[O[0],O[1]]}{var H=n-f+h,Q=i+d-h;if(O=Pb(e,r,n,i,H,Q,h+l),O.length>0&&O[0]<=H&&O[1]>=Q)return[O[0],O[1]]}return[]},"roundRectangleIntersectLine"),zqe=o(function(e,r,n,i,a,s,l){var u=l,h=Math.min(n,a),f=Math.max(n,a),d=Math.min(i,s),p=Math.max(i,s);return h-u<=e&&e<=f+u&&d-u<=r&&r<=p+u},"inLineVicinity"),Gqe=o(function(e,r,n,i,a,s,l,u,h){var f={x1:Math.min(n,l,a)-h,x2:Math.max(n,l,a)+h,y1:Math.min(i,u,s)-h,y2:Math.max(i,u,s)+h};return!(ef.x2||rf.y2)},"inBezierVicinity"),Vqe=o(function(e,r,n,i){n-=i;var a=r*r-4*e*n;if(a<0)return[];var s=Math.sqrt(a),l=2*e,u=(-r+s)/l,h=(-r-s)/l;return[u,h]},"solveQuadratic"),Uqe=o(function(e,r,n,i,a){var s=1e-5;e===0&&(e=s),r/=e,n/=e,i/=e;var l,u,h,f,d,p,m,g;if(u=(3*n-r*r)/9,h=-(27*i)+r*(9*n-2*(r*r)),h/=54,l=u*u*u+h*h,a[1]=0,m=r/3,l>0){d=h+Math.sqrt(l),d=d<0?-Math.pow(-d,1/3):Math.pow(d,1/3),p=h-Math.sqrt(l),p=p<0?-Math.pow(-p,1/3):Math.pow(p,1/3),a[0]=-m+d+p,m+=(d+p)/2,a[4]=a[2]=-m,m=Math.sqrt(3)*(-p+d)/2,a[3]=m,a[5]=-m;return}if(a[5]=a[3]=0,l===0){g=h<0?-Math.pow(-h,1/3):Math.pow(h,1/3),a[0]=-m+2*g,a[4]=a[2]=-(g+m);return}u=-u,f=u*u*u,f=Math.acos(h/Math.sqrt(f)),g=2*Math.sqrt(u),a[0]=-m+g*Math.cos(f/3),a[2]=-m+g*Math.cos((f+2*Math.PI)/3),a[4]=-m+g*Math.cos((f+4*Math.PI)/3)},"solveCubic"),Hqe=o(function(e,r,n,i,a,s,l,u){var h=1*n*n-4*n*a+2*n*l+4*a*a-4*a*l+l*l+i*i-4*i*s+2*i*u+4*s*s-4*s*u+u*u,f=1*9*n*a-3*n*n-3*n*l-6*a*a+3*a*l+9*i*s-3*i*i-3*i*u-6*s*s+3*s*u,d=1*3*n*n-6*n*a+n*l-n*e+2*a*a+2*a*e-l*e+3*i*i-6*i*s+i*u-i*r+2*s*s+2*s*r-u*r,p=1*n*a-n*n+n*e-a*e+i*s-i*i+i*r-s*r,m=[];Uqe(h,f,d,p,m);for(var g=1e-7,y=[],v=0;v<6;v+=2)Math.abs(m[v+1])=0&&m[v]<=1&&y.push(m[v]);y.push(1),y.push(0);for(var x=-1,b,w,C,T=0;T=0?Ch?(e-a)*(e-a)+(r-s)*(r-s):f-p},"sqdistToFiniteLine"),Us=o(function(e,r,n){for(var i,a,s,l,u,h=0,f=0;f=e&&e>=s||i<=e&&e<=s)u=(e-i)/(s-i)*(l-a)+a,u>r&&h++;else continue;return h%2!==0},"pointInsidePolygonPoints"),Zu=o(function(e,r,n,i,a,s,l,u,h){var f=new Array(n.length),d;u[0]!=null?(d=Math.atan(u[1]/u[0]),u[0]<0?d=d+Math.PI/2:d=-d-Math.PI/2):d=u;for(var p=Math.cos(-d),m=Math.sin(-d),g=0;g0){var v=TS(f,-h);y=wS(v)}else y=f;return Us(e,r,y)},"pointInsidePolygon"),qqe=o(function(e,r,n,i,a,s,l,u){for(var h=new Array(n.length*2),f=0;f=0&&v<=1&&b.push(v),x>=0&&x<=1&&b.push(x),b.length===0)return[];var w=b[0]*u[0]+e,C=b[0]*u[1]+r;if(b.length>1){if(b[0]==b[1])return[w,C];var T=b[1]*u[0]+e,E=b[1]*u[1]+r;return[w,C,T,E]}else return[w,C]},"intersectLineCircle"),TP=o(function(e,r,n){return r<=e&&e<=n||n<=e&&e<=r?e:e<=r&&r<=n||n<=r&&r<=e?r:n},"midOfThree"),Ef=o(function(e,r,n,i,a,s,l,u,h){var f=e-a,d=n-e,p=l-a,m=r-s,g=i-r,y=u-s,v=p*m-y*f,x=d*m-g*f,b=y*d-p*g;if(b!==0){var w=v/b,C=x/b,T=.001,E=0-T,A=1+T;return E<=w&&w<=A&&E<=C&&C<=A?[e+w*d,r+w*g]:h?[e+w*d,r+w*g]:[]}else return v===0||x===0?TP(e,n,l)===l?[l,u]:TP(e,n,a)===a?[a,s]:TP(a,l,n)===n?[n,i]:[]:[]},"finiteLinesIntersect"),Xb=o(function(e,r,n,i,a,s,l,u){var h=[],f,d=new Array(n.length),p=!0;s==null&&(p=!1);var m;if(p){for(var g=0;g0){var y=TS(d,-u);m=wS(y)}else m=d}else m=n;for(var v,x,b,w,C=0;C2){for(var g=[f[0],f[1]],y=Math.pow(g[0]-e,2)+Math.pow(g[1]-r,2),v=1;vf&&(f=C)},"set"),get:o(function(w){return h[w]},"get")},p=0;p0?M=O.edgesTo(R)[0]:M=R.edgesTo(O)[0];var B=i(M);R=R.id(),S[R]>S[k]+B&&(S[R]=S[k]+B,_.nodes.indexOf(R)<0?_.push(R):_.updateItem(R),A[R]=0,E[R]=[]),S[R]==S[k]+B&&(A[R]=A[R]+A[k],E[R].push(k))}else for(var F=0;F0;){for(var H=T.pop(),Q=0;Q0&&l.push(n[u]);l.length!==0&&a.push(i.collection(l))}return a},"assign"),lYe=o(function(e,r){for(var n=0;n5&&arguments[5]!==void 0?arguments[5]:hYe,l=i,u,h,f=0;f=2?_b(e,r,n,0,Upe,fYe):_b(e,r,n,0,Vpe)},"euclidean"),squaredEuclidean:o(function(e,r,n){return _b(e,r,n,0,Upe)},"squaredEuclidean"),manhattan:o(function(e,r,n){return _b(e,r,n,0,Vpe)},"manhattan"),max:o(function(e,r,n){return _b(e,r,n,-1/0,dYe)},"max")};Q1["squared-euclidean"]=Q1.squaredEuclidean;Q1.squaredeuclidean=Q1.squaredEuclidean;o(IS,"clusteringDistance");pYe=la({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),oB=o(function(e){return pYe(e)},"setOptions"),kS=o(function(e,r,n,i,a){var s=a!=="kMedoids",l=s?function(d){return n[d]}:function(d){return i[d](n)},u=o(function(p){return i[p](r)},"getQ"),h=n,f=r;return IS(e,i.length,l,u,h,f)},"getDist"),kP=o(function(e,r,n){for(var i=n.length,a=new Array(i),s=new Array(i),l=new Array(r),u=null,h=0;hn)return!1}return!0},"haveMatricesConverged"),yYe=o(function(e,r,n){for(var i=0;il&&(l=r[h][f],u=f);a[u].push(e[h])}for(var d=0;d=a.threshold||a.mode==="dendrogram"&&e.length===1)return!1;var g=r[s],y=r[i[s]],v;a.mode==="dendrogram"?v={left:g,right:y,key:g.key}:v={value:g.value.concat(y.value),key:g.key},e[g.index]=v,e.splice(y.index,1),r[g.key]=v;for(var x=0;xn[y.key][b.key]&&(u=n[y.key][b.key])):a.linkage==="max"?(u=n[g.key][b.key],n[g.key][b.key]0&&i.push(a);return i},"findExemplars"),jpe=o(function(e,r,n){for(var i=[],a=0;al&&(s=h,l=r[a*e+h])}s>0&&i.push(s)}for(var f=0;fh&&(u=f,h=d)}n[a]=s[u]}return i=jpe(e,r,n),i},"assign"),Kpe=o(function(e){for(var r=this.cy(),n=this.nodes(),i=RYe(e),a={},s=0;s=D?(k=D,D=R,L=O):R>k&&(k=R);for(var M=0;M0?1:0;A[_%i.minIterations*l+H]=Q,$+=Q}if($>0&&(_>=i.minIterations-1||_==i.maxIterations-1)){for(var j=0,ie=0;ie1||E>1)&&(l=!0),d[w]=[],b.outgoers().forEach(function(S){S.isEdge()&&d[w].push(S.id())})}else p[w]=[void 0,b.target().id()]}):s.forEach(function(b){var w=b.id();if(b.isNode()){var C=b.degree(!0);C%2&&(u?h?l=!0:h=w:u=w),d[w]=[],b.connectedEdges().forEach(function(T){return d[w].push(T.id())})}else p[w]=[b.source().id(),b.target().id()]});var m={found:!1,trail:void 0};if(l)return m;if(h&&u)if(a){if(f&&h!=f)return m;f=h}else{if(f&&h!=f&&u!=f)return m;f||(f=h)}else f||(f=s[0].id());var g=o(function(w){for(var C=w,T=[w],E,A,S;d[C].length;)E=d[C].shift(),A=p[E][0],S=p[E][1],C!=S?(d[S]=d[S].filter(function(_){return _!=E}),C=S):!a&&C!=A&&(d[A]=d[A].filter(function(_){return _!=E}),C=A),T.unshift(E),T.unshift(C);return T},"walk"),y=[],v=[];for(v=g(f);v.length!=1;)d[v[0]].length==0?(y.unshift(s.getElementById(v.shift())),y.unshift(s.getElementById(v.shift()))):v=g(v.shift()).concat(v);y.unshift(s.getElementById(v.shift()));for(var x in d)if(d[x].length)return m;return m.found=!0,m.trail=this.spawn(y,!0),m},"hierholzer")},J6=o(function(){var e=this,r={},n=0,i=0,a=[],s=[],l={},u=o(function(p,m){for(var g=s.length-1,y=[],v=e.spawn();s[g].x!=p||s[g].y!=m;)y.push(s.pop().edge),g--;y.push(s.pop().edge),y.forEach(function(x){var b=x.connectedNodes().intersection(e);v.merge(x),b.forEach(function(w){var C=w.id(),T=w.connectedEdges().intersection(e);v.merge(w),r[C].cutVertex?v.merge(T.filter(function(E){return E.isLoop()})):v.merge(T)})}),a.push(v)},"buildComponent"),h=o(function d(p,m,g){p===g&&(i+=1),r[m]={id:n,low:n++,cutVertex:!1};var y=e.getElementById(m).connectedEdges().intersection(e);if(y.size()===0)a.push(e.spawn(e.getElementById(m)));else{var v,x,b,w;y.forEach(function(C){v=C.source().id(),x=C.target().id(),b=v===m?x:v,b!==g&&(w=C.id(),l[w]||(l[w]=!0,s.push({x:m,y:b,edge:C})),b in r?r[m].low=Math.min(r[m].low,r[b].id):(d(p,b,m),r[m].low=Math.min(r[m].low,r[b].low),r[m].id<=r[b].low&&(r[m].cutVertex=!0,u(m,b))))})}},"biconnectedSearch");e.forEach(function(d){if(d.isNode()){var p=d.id();p in r||(i=0,h(p,p),r[p].cutVertex=i>1)}});var f=Object.keys(r).filter(function(d){return r[d].cutVertex}).map(function(d){return e.getElementById(d)});return{cut:e.spawn(f),components:a}},"hopcroftTarjanBiconnected"),$Ye={hopcroftTarjanBiconnected:J6,htbc:J6,htb:J6,hopcroftTarjanBiconnectedComponents:J6},eS=o(function(){var e=this,r={},n=0,i=[],a=[],s=e.spawn(e),l=o(function u(h){a.push(h),r[h]={index:n,low:n++,explored:!1};var f=e.getElementById(h).connectedEdges().intersection(e);if(f.forEach(function(y){var v=y.target().id();v!==h&&(v in r||u(v),r[v].explored||(r[h].low=Math.min(r[h].low,r[v].low)))}),r[h].index===r[h].low){for(var d=e.spawn();;){var p=a.pop();if(d.merge(e.getElementById(p)),r[p].low=r[h].index,r[p].explored=!0,p===h)break}var m=d.edgesWith(d),g=d.merge(m);i.push(g),s=s.difference(g)}},"stronglyConnectedSearch");return e.forEach(function(u){if(u.isNode()){var h=u.id();h in r||l(h)}}),{cut:s,components:i}},"tarjanStronglyConnected"),zYe={tarjanStronglyConnected:eS,tsc:eS,tscc:eS,tarjanStronglyConnectedComponents:eS},Sme={};[qb,gqe,yqe,xqe,wqe,kqe,Cqe,Qqe,q1,Y1,FP,uYe,kYe,DYe,PYe,FYe,$Ye,zYe].forEach(function(t){rr(Sme,t)});Cme=0,Ame=1,_me=2,Ju=o(function t(e){if(!(this instanceof t))return new t(e);this.id="Thenable/1.0.7",this.state=Cme,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof e=="function"&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))},"api");Ju.prototype={fulfill:o(function(e){return Qpe(this,Ame,"fulfillValue",e)},"fulfill"),reject:o(function(e){return Qpe(this,_me,"rejectReason",e)},"reject"),then:o(function(e,r){var n=this,i=new Ju;return n.onFulfilled.push(Jpe(e,i,"fulfill")),n.onRejected.push(Jpe(r,i,"reject")),Dme(n),i.proxy},"then")};Qpe=o(function(e,r,n,i){return e.state===Cme&&(e.state=r,e[n]=i,Dme(e)),e},"deliver"),Dme=o(function(e){e.state===Ame?Zpe(e,"onFulfilled",e.fulfillValue):e.state===_me&&Zpe(e,"onRejected",e.rejectReason)},"execute"),Zpe=o(function(e,r,n){if(e[r].length!==0){var i=e[r];e[r]=[];var a=o(function(){for(var l=0;l0},"animatedImpl")},"animated"),clearQueue:o(function(){return o(function(){var r=this,n=r.length!==void 0,i=n?r:[r],a=this._private.cy||this;if(!a.styleEnabled())return this;for(var s=0;s0&&this.spawn(i).updateStyle().emit("class"),r},"classes"),addClass:o(function(e){return this.toggleClass(e,!0)},"addClass"),hasClass:o(function(e){var r=this[0];return r!=null&&r._private.classes.has(e)},"hasClass"),toggleClass:o(function(e,r){En(e)||(e=e.match(/\S+/g)||[]);for(var n=this,i=r===void 0,a=[],s=0,l=n.length;s0&&this.spawn(a).updateStyle().emit("class"),n},"toggleClass"),removeClass:o(function(e){return this.toggleClass(e,!1)},"removeClass"),flashClass:o(function(e,r){var n=this;if(r==null)r=250;else if(r===0)return n;return n.addClass(e),setTimeout(function(){n.removeClass(e)},r),n},"flashClass")};hS.className=hS.classNames=hS.classes;Vr={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:Hi,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};Vr.variable="(?:[\\w-.]|(?:\\\\"+Vr.metaChar+"))+";Vr.className="(?:[\\w-]|(?:\\\\"+Vr.metaChar+"))+";Vr.value=Vr.string+"|"+Vr.number;Vr.id=Vr.variable;(function(){var t,e,r;for(t=Vr.comparatorOp.split("|"),r=0;r=0)&&e!=="="&&(Vr.comparatorOp+="|\\!"+e)})();mn=o(function(){return{checks:[]}},"newQuery"),$t={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},zP=[{selector:":selected",matches:o(function(e){return e.selected()},"matches")},{selector:":unselected",matches:o(function(e){return!e.selected()},"matches")},{selector:":selectable",matches:o(function(e){return e.selectable()},"matches")},{selector:":unselectable",matches:o(function(e){return!e.selectable()},"matches")},{selector:":locked",matches:o(function(e){return e.locked()},"matches")},{selector:":unlocked",matches:o(function(e){return!e.locked()},"matches")},{selector:":visible",matches:o(function(e){return e.visible()},"matches")},{selector:":hidden",matches:o(function(e){return!e.visible()},"matches")},{selector:":transparent",matches:o(function(e){return e.transparent()},"matches")},{selector:":grabbed",matches:o(function(e){return e.grabbed()},"matches")},{selector:":free",matches:o(function(e){return!e.grabbed()},"matches")},{selector:":removed",matches:o(function(e){return e.removed()},"matches")},{selector:":inside",matches:o(function(e){return!e.removed()},"matches")},{selector:":grabbable",matches:o(function(e){return e.grabbable()},"matches")},{selector:":ungrabbable",matches:o(function(e){return!e.grabbable()},"matches")},{selector:":animated",matches:o(function(e){return e.animated()},"matches")},{selector:":unanimated",matches:o(function(e){return!e.animated()},"matches")},{selector:":parent",matches:o(function(e){return e.isParent()},"matches")},{selector:":childless",matches:o(function(e){return e.isChildless()},"matches")},{selector:":child",matches:o(function(e){return e.isChild()},"matches")},{selector:":orphan",matches:o(function(e){return e.isOrphan()},"matches")},{selector:":nonorphan",matches:o(function(e){return e.isChild()},"matches")},{selector:":compound",matches:o(function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()},"matches")},{selector:":loop",matches:o(function(e){return e.isLoop()},"matches")},{selector:":simple",matches:o(function(e){return e.isSimple()},"matches")},{selector:":active",matches:o(function(e){return e.active()},"matches")},{selector:":inactive",matches:o(function(e){return!e.active()},"matches")},{selector:":backgrounding",matches:o(function(e){return e.backgrounding()},"matches")},{selector:":nonbackgrounding",matches:o(function(e){return!e.backgrounding()},"matches")}].sort(function(t,e){return hWe(t.selector,e.selector)}),Jje=function(){for(var t={},e,r=0;r0&&f.edgeCount>0)return un("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(f.edgeCount>1)return un("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;f.edgeCount===1&&un("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},"parse"),aKe=o(function(){if(this.toStringCache!=null)return this.toStringCache;for(var e=o(function(f){return f??""},"clean"),r=o(function(f){return Zt(f)?'"'+f+'"':e(f)},"cleanVal"),n=o(function(f){return" "+f+" "},"space"),i=o(function(f,d){var p=f.type,m=f.value;switch(p){case $t.GROUP:{var g=e(m);return g.substring(0,g.length-1)}case $t.DATA_COMPARE:{var y=f.field,v=f.operator;return"["+y+n(e(v))+r(m)+"]"}case $t.DATA_BOOL:{var x=f.operator,b=f.field;return"["+e(x)+b+"]"}case $t.DATA_EXIST:{var w=f.field;return"["+w+"]"}case $t.META_COMPARE:{var C=f.operator,T=f.field;return"[["+T+n(e(C))+r(m)+"]]"}case $t.STATE:return m;case $t.ID:return"#"+m;case $t.CLASS:return"."+m;case $t.PARENT:case $t.CHILD:return a(f.parent,d)+n(">")+a(f.child,d);case $t.ANCESTOR:case $t.DESCENDANT:return a(f.ancestor,d)+" "+a(f.descendant,d);case $t.COMPOUND_SPLIT:{var E=a(f.left,d),A=a(f.subject,d),S=a(f.right,d);return E+(E.length>0?" ":"")+A+S}case $t.TRUE:return""}},"checkToString"),a=o(function(f,d){return f.checks.reduce(function(p,m,g){return p+(d===f&&g===0?"$":"")+i(m,d)},"")},"queryToString"),s="",l=0;l1&&l=0&&(r=r.replace("!",""),d=!0),r.indexOf("@")>=0&&(r=r.replace("@",""),f=!0),(a||l||f)&&(u=!a&&!s?"":""+e,h=""+n),f&&(e=u=u.toLowerCase(),n=h=h.toLowerCase()),r){case"*=":i=u.indexOf(h)>=0;break;case"$=":i=u.indexOf(h,u.length-h.length)>=0;break;case"^=":i=u.indexOf(h)===0;break;case"=":i=e===n;break;case">":p=!0,i=e>n;break;case">=":p=!0,i=e>=n;break;case"<":p=!0,i=e1&&arguments[1]!==void 0?arguments[1]:!0;return fB(this,t,e,Fme)};o($me,"addParent");Z1.forEachUp=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return fB(this,t,e,$me)};o(dKe,"addParentAndChildren");Z1.forEachUpAndDown=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return fB(this,t,e,dKe)};Z1.ancestors=Z1.parents;Kb=zme={data:cn.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:cn.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:cn.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:cn.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:cn.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:cn.removeData({field:"rscratch",triggerEvent:!1}),id:o(function(){var e=this[0];if(e)return e._private.data.id},"id")};Kb.attr=Kb.data;Kb.removeAttr=Kb.removeData;pKe=zme,FS={};o(SP,"defineDegreeFunction");rr(FS,{degree:SP(function(t,e){return e.source().same(e.target())?2:1}),indegree:SP(function(t,e){return e.target().same(t)?1:0}),outdegree:SP(function(t,e){return e.source().same(t)?1:0})});o(F1,"defineDegreeBoundsFunction");rr(FS,{minDegree:F1("degree",function(t,e){return te}),minIndegree:F1("indegree",function(t,e){return te}),minOutdegree:F1("outdegree",function(t,e){return te})});rr(FS,{totalDegree:o(function(e){for(var r=0,n=this.nodes(),i=0;i0,p=d;d&&(f=f[0]);var m=p?f.position():{x:0,y:0};r!==void 0?h.position(e,r+m[e]):a!==void 0&&h.position({x:a.x+m.x,y:a.y+m.y})}else{var g=n.position(),y=l?n.parent():null,v=y&&y.length>0,x=v;v&&(y=y[0]);var b=x?y.position():{x:0,y:0};return a={x:g.x-b.x,y:g.y-b.y},e===void 0?a:a[e]}else if(!s)return;return this},"relativePosition")};Vl.modelPosition=Vl.point=Vl.position;Vl.modelPositions=Vl.points=Vl.positions;Vl.renderedPoint=Vl.renderedPosition;Vl.relativePoint=Vl.relativePosition;mKe=Gme;X1=Of={};Of.renderedBoundingBox=function(t){var e=this.boundingBox(t),r=this.cy(),n=r.zoom(),i=r.pan(),a=e.x1*n+i.x,s=e.x2*n+i.x,l=e.y1*n+i.y,u=e.y2*n+i.y;return{x1:a,x2:s,y1:l,y2:u,w:s-a,h:u-l}};Of.dirtyCompoundBoundsCache=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();return!e.styleEnabled()||!e.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var n=r._private;n.compoundBoundsClean=!1,n.bbCache=null,t||r.emitAndNotify("bounds")}}),this)};Of.updateCompoundBounds=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!t&&e.batching())return this;function r(s){if(!s.isParent())return;var l=s._private,u=s.children(),h=s.pstyle("compound-sizing-wrt-labels").value==="include",f={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},d=u.boundingBox({includeLabels:h,includeOverlays:!1,useCache:!1}),p=l.position;(d.w===0||d.h===0)&&(d={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},d.x1=p.x-d.w/2,d.x2=p.x+d.w/2,d.y1=p.y-d.h/2,d.y2=p.y+d.h/2);function m(_,I,D){var k=0,L=0,R=I+D;return _>0&&R>0&&(k=I/R*_,L=D/R*_),{biasDiff:k,biasComplementDiff:L}}o(m,"computeBiasValues");function g(_,I,D,k){if(D.units==="%")switch(k){case"width":return _>0?D.pfValue*_:0;case"height":return I>0?D.pfValue*I:0;case"average":return _>0&&I>0?D.pfValue*(_+I)/2:0;case"min":return _>0&&I>0?_>I?D.pfValue*I:D.pfValue*_:0;case"max":return _>0&&I>0?_>I?D.pfValue*_:D.pfValue*I:0;default:return 0}else return D.units==="px"?D.pfValue:0}o(g,"computePaddingValues");var y=f.width.left.value;f.width.left.units==="px"&&f.width.val>0&&(y=y*100/f.width.val);var v=f.width.right.value;f.width.right.units==="px"&&f.width.val>0&&(v=v*100/f.width.val);var x=f.height.top.value;f.height.top.units==="px"&&f.height.val>0&&(x=x*100/f.height.val);var b=f.height.bottom.value;f.height.bottom.units==="px"&&f.height.val>0&&(b=b*100/f.height.val);var w=m(f.width.val-d.w,y,v),C=w.biasDiff,T=w.biasComplementDiff,E=m(f.height.val-d.h,x,b),A=E.biasDiff,S=E.biasComplementDiff;l.autoPadding=g(d.w,d.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),l.autoWidth=Math.max(d.w,f.width.val),p.x=(-C+d.x1+d.x2+T)/2,l.autoHeight=Math.max(d.h,f.height.val),p.y=(-A+d.y1+d.y2+S)/2}o(r,"update");for(var n=0;ne.x2?i:e.x2,e.y1=ne.y2?a:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},"updateBounds"),Pp=o(function(e,r){return r==null?e:zl(e,r.x1,r.y1,r.x2,r.y2)},"updateBoundsFromBox"),Db=o(function(e,r,n){return Gl(e,r,n)},"prefixedProperty"),tS=o(function(e,r,n){if(!r.cy().headless()){var i=r._private,a=i.rstyle,s=a.arrowWidth/2,l=r.pstyle(n+"-arrow-shape").value,u,h;if(l!=="none"){n==="source"?(u=a.srcX,h=a.srcY):n==="target"?(u=a.tgtX,h=a.tgtY):(u=a.midX,h=a.midY);var f=i.arrowBounds=i.arrowBounds||{},d=f[n]=f[n]||{};d.x1=u-s,d.y1=h-s,d.x2=u+s,d.y2=h+s,d.w=d.x2-d.x1,d.h=d.y2-d.y1,cS(d,1),zl(e,d.x1,d.y1,d.x2,d.y2)}}},"updateBoundsFromArrow"),CP=o(function(e,r,n){if(!r.cy().headless()){var i;n?i=n+"-":i="";var a=r._private,s=a.rstyle,l=r.pstyle(i+"label").strValue;if(l){var u=r.pstyle("text-halign"),h=r.pstyle("text-valign"),f=Db(s,"labelWidth",n),d=Db(s,"labelHeight",n),p=Db(s,"labelX",n),m=Db(s,"labelY",n),g=r.pstyle(i+"text-margin-x").pfValue,y=r.pstyle(i+"text-margin-y").pfValue,v=r.isEdge(),x=r.pstyle(i+"text-rotation"),b=r.pstyle("text-outline-width").pfValue,w=r.pstyle("text-border-width").pfValue,C=w/2,T=r.pstyle("text-background-padding").pfValue,E=2,A=d,S=f,_=S/2,I=A/2,D,k,L,R;if(v)D=p-_,k=p+_,L=m-I,R=m+I;else{switch(u.value){case"left":D=p-S,k=p;break;case"center":D=p-_,k=p+_;break;case"right":D=p,k=p+S;break}switch(h.value){case"top":L=m-A,R=m;break;case"center":L=m-I,R=m+I;break;case"bottom":L=m,R=m+A;break}}var O=g-Math.max(b,C)-T-E,M=g+Math.max(b,C)+T+E,B=y-Math.max(b,C)-T-E,F=y+Math.max(b,C)+T+E;D+=O,k+=M,L+=B,R+=F;var P=n||"main",z=a.labelBounds,$=z[P]=z[P]||{};$.x1=D,$.y1=L,$.x2=k,$.y2=R,$.w=k-D,$.h=R-L,$.leftPad=O,$.rightPad=M,$.topPad=B,$.botPad=F;var H=v&&x.strValue==="autorotate",Q=x.pfValue!=null&&x.pfValue!==0;if(H||Q){var j=H?Db(a.rstyle,"labelAngle",n):x.pfValue,ie=Math.cos(j),ne=Math.sin(j),le=(D+k)/2,he=(L+R)/2;if(!v){switch(u.value){case"left":le=k;break;case"right":le=D;break}switch(h.value){case"top":he=R;break;case"bottom":he=L;break}}var K=o(function(ce,ae){return ce=ce-le,ae=ae-he,{x:ce*ie-ae*ne+le,y:ce*ne+ae*ie+he}},"rotate"),X=K(D,L),te=K(D,R),J=K(k,L),se=K(k,R);D=Math.min(X.x,te.x,J.x,se.x),k=Math.max(X.x,te.x,J.x,se.x),L=Math.min(X.y,te.y,J.y,se.y),R=Math.max(X.y,te.y,J.y,se.y)}var ue=P+"Rot",Z=z[ue]=z[ue]||{};Z.x1=D,Z.y1=L,Z.x2=k,Z.y2=R,Z.w=k-D,Z.h=R-L,zl(e,D,L,k,R),zl(a.labelBounds.all,D,L,k,R)}return e}},"updateBoundsFromLabel"),gKe=o(function(e,r){if(!r.cy().headless()){var n=r.pstyle("outline-opacity").value,i=r.pstyle("outline-width").value;if(n>0&&i>0){var a=r.pstyle("outline-offset").value,s=r.pstyle("shape").value,l=i+a,u=(e.w+l*2)/e.w,h=(e.h+l*2)/e.h,f=0,d=0;["diamond","pentagon","round-triangle"].includes(s)?(u=(e.w+l*2.4)/e.w,d=-l/3.6):["concave-hexagon","rhomboid","right-rhomboid"].includes(s)?u=(e.w+l*2.4)/e.w:s==="star"?(u=(e.w+l*2.8)/e.w,h=(e.h+l*2.6)/e.h,d=-l/3.8):s==="triangle"?(u=(e.w+l*2.8)/e.w,h=(e.h+l*2.4)/e.h,d=-l/1.4):s==="vee"&&(u=(e.w+l*4.4)/e.w,h=(e.h+l*3.8)/e.h,d=-l*.5);var p=e.h*h-e.h,m=e.w*u-e.w;if(uS(e,[Math.ceil(p/2),Math.ceil(m/2)]),f!=0||d!==0){var g=Bqe(e,f,d);gme(e,g)}}}},"updateBoundsFromOutline"),yKe=o(function(e,r){var n=e._private.cy,i=n.styleEnabled(),a=n.headless(),s=Hs(),l=e._private,u=e.isNode(),h=e.isEdge(),f,d,p,m,g,y,v=l.rstyle,x=u&&i?e.pstyle("bounds-expansion").pfValue:[0],b=o(function(Se){return Se.pstyle("display").value!=="none"},"isDisplayed"),w=!i||b(e)&&(!h||b(e.source())&&b(e.target()));if(w){var C=0,T=0;i&&r.includeOverlays&&(C=e.pstyle("overlay-opacity").value,C!==0&&(T=e.pstyle("overlay-padding").value));var E=0,A=0;i&&r.includeUnderlays&&(E=e.pstyle("underlay-opacity").value,E!==0&&(A=e.pstyle("underlay-padding").value));var S=Math.max(T,A),_=0,I=0;if(i&&(_=e.pstyle("width").pfValue,I=_/2),u&&r.includeNodes){var D=e.position();g=D.x,y=D.y;var k=e.outerWidth(),L=k/2,R=e.outerHeight(),O=R/2;f=g-L,d=g+L,p=y-O,m=y+O,zl(s,f,p,d,m),i&&r.includeOutlines&&gKe(s,e)}else if(h&&r.includeEdges)if(i&&!a){var M=e.pstyle("curve-style").strValue;if(f=Math.min(v.srcX,v.midX,v.tgtX),d=Math.max(v.srcX,v.midX,v.tgtX),p=Math.min(v.srcY,v.midY,v.tgtY),m=Math.max(v.srcY,v.midY,v.tgtY),f-=I,d+=I,p-=I,m+=I,zl(s,f,p,d,m),M==="haystack"){var B=v.haystackPts;if(B&&B.length===2){if(f=B[0].x,p=B[0].y,d=B[1].x,m=B[1].y,f>d){var F=f;f=d,d=F}if(p>m){var P=p;p=m,m=P}zl(s,f-I,p-I,d+I,m+I)}}else if(M==="bezier"||M==="unbundled-bezier"||M.endsWith("segments")||M.endsWith("taxi")){var z;switch(M){case"bezier":case"unbundled-bezier":z=v.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":z=v.linePts;break}if(z!=null)for(var $=0;$d){var le=f;f=d,d=le}if(p>m){var he=p;p=m,m=he}f-=I,d+=I,p-=I,m+=I,zl(s,f,p,d,m)}if(i&&r.includeEdges&&h&&(tS(s,e,"mid-source"),tS(s,e,"mid-target"),tS(s,e,"source"),tS(s,e,"target")),i){var K=e.pstyle("ghost").value==="yes";if(K){var X=e.pstyle("ghost-offset-x").pfValue,te=e.pstyle("ghost-offset-y").pfValue;zl(s,s.x1+X,s.y1+te,s.x2+X,s.y2+te)}}var J=l.bodyBounds=l.bodyBounds||{};Fpe(J,s),uS(J,x),cS(J,1),i&&(f=s.x1,d=s.x2,p=s.y1,m=s.y2,zl(s,f-S,p-S,d+S,m+S));var se=l.overlayBounds=l.overlayBounds||{};Fpe(se,s),uS(se,x),cS(se,1);var ue=l.labelBounds=l.labelBounds||{};ue.all!=null?Pqe(ue.all):ue.all=Hs(),i&&r.includeLabels&&(r.includeMainLabels&&CP(s,e,null),h&&(r.includeSourceLabels&&CP(s,e,"source"),r.includeTargetLabels&&CP(s,e,"target")))}return s.x1=el(s.x1),s.y1=el(s.y1),s.x2=el(s.x2),s.y2=el(s.y2),s.w=el(s.x2-s.x1),s.h=el(s.y2-s.y1),s.w>0&&s.h>0&&w&&(uS(s,x),cS(s,1)),s},"boundingBoxImpl"),Ume=o(function(e){var r=0,n=o(function(s){return(s?1:0)<=0;l--)s(l);return this};Nf.removeAllListeners=function(){return this.removeListener("*")};Nf.emit=Nf.trigger=function(t,e,r){var n=this.listeners,i=n.length;return this.emitting++,En(e)||(e=[e]),MKe(this,function(a,s){r!=null&&(n=[{event:s.event,type:s.type,namespace:s.namespace,callback:r}],i=n.length);for(var l=o(function(f){var d=n[f];if(d.type===s.type&&(!d.namespace||d.namespace===s.namespace||d.namespace===RKe)&&a.eventMatches(a.context,d,s)){var p=[s];e!=null&&uqe(p,e),a.beforeEmit(a.context,d,s),d.conf&&d.conf.one&&(a.listeners=a.listeners.filter(function(y){return y!==d}));var m=a.callbackContext(a.context,d,s),g=d.callback.apply(m,p);a.afterEmit(a.context,d,s),g===!1&&(s.stopPropagation(),s.preventDefault())}},"_loop2"),u=0;u1&&!s){var l=this.length-1,u=this[l],h=u._private.data.id;this[l]=void 0,this[e]=u,a.set(h,{ele:u,index:e})}return this.length--,this},"unmergeAt"),unmergeOne:o(function(e){e=e[0];var r=this._private,n=e._private.data.id,i=r.map,a=i.get(n);if(!a)return this;var s=a.index;return this.unmergeAt(s),this},"unmergeOne"),unmerge:o(function(e){var r=this._private.cy;if(!e)return this;if(e&&Zt(e)){var n=e;e=r.mutableElements().filter(n)}for(var i=0;i=0;r--){var n=this[r];e(n)&&this.unmergeAt(r)}return this},"unmergeBy"),map:o(function(e,r){for(var n=[],i=this,a=0;an&&(n=u,i=l)}return{value:n,ele:i}},"max"),min:o(function(e,r){for(var n=1/0,i,a=this,s=0;s=0&&a"u"?"undefined":Wi(Symbol))!=e&&Wi(Symbol.iterator)!=e;r&&(ES[Symbol.iterator]=function(){var n=this,i={value:void 0,done:!1},a=0,s=this.length;return X0e({next:o(function(){return a1&&arguments[1]!==void 0?arguments[1]:!0,n=this[0],i=n.cy();if(i.styleEnabled()&&n){n._private.styleDirty&&(n._private.styleDirty=!1,i.style().apply(n));var a=n._private.style[e];return a??(r?i.style().getDefaultProperty(e):null)}},"parsedStyle"),numericStyle:o(function(e){var r=this[0];if(r.cy().styleEnabled()&&r){var n=r.pstyle(e);return n.pfValue!==void 0?n.pfValue:n.value}},"numericStyle"),numericStyleUnits:o(function(e){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(e).units},"numericStyleUnits"),renderedStyle:o(function(e){var r=this.cy();if(!r.styleEnabled())return this;var n=this[0];if(n)return r.style().getRenderedStyle(n,e)},"renderedStyle"),style:o(function(e,r){var n=this.cy();if(!n.styleEnabled())return this;var i=!1,a=n.style();if(Ur(e)){var s=e;a.applyBypass(this,s,i),this.emitAndNotify("style")}else if(Zt(e))if(r===void 0){var l=this[0];return l?a.getStylePropertyValue(l,e):void 0}else a.applyBypass(this,e,r,i),this.emitAndNotify("style");else if(e===void 0){var u=this[0];return u?a.getRawStyle(u):void 0}return this},"style"),removeStyle:o(function(e){var r=this.cy();if(!r.styleEnabled())return this;var n=!1,i=r.style(),a=this;if(e===void 0)for(var s=0;s0&&e.push(f[0]),e.push(l[0])}return this.spawn(e,!0).filter(t)},"neighborhood"),closedNeighborhood:o(function(e){return this.neighborhood().add(this).filter(e)},"closedNeighborhood"),openNeighborhood:o(function(e){return this.neighborhood(e)},"openNeighborhood")});$a.neighbourhood=$a.neighborhood;$a.closedNeighbourhood=$a.closedNeighborhood;$a.openNeighbourhood=$a.openNeighborhood;rr($a,{source:tl(o(function(e){var r=this[0],n;return r&&(n=r._private.source||r.cy().collection()),n&&e?n.filter(e):n},"sourceImpl"),"source"),target:tl(o(function(e){var r=this[0],n;return r&&(n=r._private.target||r.cy().collection()),n&&e?n.filter(e):n},"targetImpl"),"target"),sources:g0e({attr:"source"}),targets:g0e({attr:"target"})});o(g0e,"defineSourceFunction");rr($a,{edgesWith:tl(y0e(),"edgesWith"),edgesTo:tl(y0e({thisIsSrc:!0}),"edgesTo")});o(y0e,"defineEdgesWithFunction");rr($a,{connectedEdges:tl(function(t){for(var e=[],r=this,n=0;n0);return s},"components"),component:o(function(){var e=this[0];return e.cy().mutableElements().components(e)[0]},"component")});$a.componentsOf=$a.components;ka=o(function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===void 0){ai("A collection must have a reference to the core");return}var a=new Xc,s=!1;if(!r)r=[];else if(r.length>0&&Ur(r[0])&&!t4(r[0])){s=!0;for(var l=[],u=new J1,h=0,f=r.length;h0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=r.cy(),i=n._private,a=[],s=[],l,u=0,h=r.length;u0){for(var P=l.length===r.length?r:new ka(n,l),z=0;z0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=[],i={},a=r._private.cy;function s(R){for(var O=R._private.edges,M=0;M0&&(t?D.emitAndNotify("remove"):e&&D.emit("remove"));for(var k=0;kf&&Math.abs(g.v)>f;);return p?function(y){return u[y*(u.length-1)|0]}:h},"springRK4Factory")}(),Nn=o(function(e,r,n,i){var a=UKe(e,r,n,i);return function(s,l,u){return s+(l-s)*a(u)}},"cubicBezier"),dS={linear:o(function(e,r,n){return e+(r-e)*n},"linear"),ease:Nn(.25,.1,.25,1),"ease-in":Nn(.42,0,1,1),"ease-out":Nn(0,0,.58,1),"ease-in-out":Nn(.42,0,.58,1),"ease-in-sine":Nn(.47,0,.745,.715),"ease-out-sine":Nn(.39,.575,.565,1),"ease-in-out-sine":Nn(.445,.05,.55,.95),"ease-in-quad":Nn(.55,.085,.68,.53),"ease-out-quad":Nn(.25,.46,.45,.94),"ease-in-out-quad":Nn(.455,.03,.515,.955),"ease-in-cubic":Nn(.55,.055,.675,.19),"ease-out-cubic":Nn(.215,.61,.355,1),"ease-in-out-cubic":Nn(.645,.045,.355,1),"ease-in-quart":Nn(.895,.03,.685,.22),"ease-out-quart":Nn(.165,.84,.44,1),"ease-in-out-quart":Nn(.77,0,.175,1),"ease-in-quint":Nn(.755,.05,.855,.06),"ease-out-quint":Nn(.23,1,.32,1),"ease-in-out-quint":Nn(.86,0,.07,1),"ease-in-expo":Nn(.95,.05,.795,.035),"ease-out-expo":Nn(.19,1,.22,1),"ease-in-out-expo":Nn(1,0,0,1),"ease-in-circ":Nn(.6,.04,.98,.335),"ease-out-circ":Nn(.075,.82,.165,1),"ease-in-out-circ":Nn(.785,.135,.15,.86),spring:o(function(e,r,n){if(n===0)return dS.linear;var i=HKe(e,r,n);return function(a,s,l){return a+(s-a)*i(l)}},"spring"),"cubic-bezier":Nn};o(x0e,"getEasedValue");o(b0e,"getValue");o($1,"ease");o(WKe,"step$1");o(Rb,"valid");o(qKe,"startAnimation");o(w0e,"stepAll");YKe={animate:cn.animate(),animation:cn.animation(),animated:cn.animated(),clearQueue:cn.clearQueue(),delay:cn.delay(),delayAnimation:cn.delayAnimation(),stop:cn.stop(),addToAnimationPool:o(function(e){var r=this;r.styleEnabled()&&r._private.aniEles.merge(e)},"addToAnimationPool"),stopAnimationLoop:o(function(){this._private.animationsRunning=!1},"stopAnimationLoop"),startAnimationLoop:o(function(){var e=this;if(e._private.animationsRunning=!0,!e.styleEnabled())return;function r(){e._private.animationsRunning&&xS(o(function(a){w0e(a,e),r()},"animationStep"))}o(r,"headlessStep");var n=e.renderer();n&&n.beforeRender?n.beforeRender(o(function(a,s){w0e(s,e)},"rendererAnimationStep"),n.beforeRenderPriorities.animations):r()},"startAnimationLoop")},XKe={qualifierCompare:o(function(e,r){return e==null||r==null?e==null&&r==null:e.sameText(r)},"qualifierCompare"),eventMatches:o(function(e,r,n){var i=r.qualifier;return i!=null?e!==n.target&&t4(n.target)&&i.matches(n.target):!0},"eventMatches"),addEventFields:o(function(e,r){r.cy=e,r.target=e},"addEventFields"),callbackContext:o(function(e,r,n){return r.qualifier!=null?n.target:e},"callbackContext")},iS=o(function(e){return Zt(e)?new Lf(e):e},"argSelector"),ege={createEmitter:o(function(){var e=this._private;return e.emitter||(e.emitter=new $S(XKe,this)),this},"createEmitter"),emitter:o(function(){return this._private.emitter},"emitter"),on:o(function(e,r,n){return this.emitter().on(e,iS(r),n),this},"on"),removeListener:o(function(e,r,n){return this.emitter().removeListener(e,iS(r),n),this},"removeListener"),removeAllListeners:o(function(){return this.emitter().removeAllListeners(),this},"removeAllListeners"),one:o(function(e,r,n){return this.emitter().one(e,iS(r),n),this},"one"),once:o(function(e,r,n){return this.emitter().one(e,iS(r),n),this},"once"),emit:o(function(e,r){return this.emitter().emit(e,r),this},"emit"),emitAndNotify:o(function(e,r){return this.emit(e),this.notify(e,r),this},"emitAndNotify")};cn.eventAliasesOn(ege);VP={png:o(function(e){var r=this._private.renderer;return e=e||{},r.png(e)},"png"),jpg:o(function(e){var r=this._private.renderer;return e=e||{},e.bg=e.bg||"#fff",r.jpg(e)},"jpg")};VP.jpeg=VP.jpg;pS={layout:o(function(e){var r=this;if(e==null){ai("Layout options must be specified to make a layout");return}if(e.name==null){ai("A `name` must be specified to make a layout");return}var n=e.name,i=r.extension("layout",n);if(i==null){ai("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var a;Zt(e.eles)?a=r.$(e.eles):a=e.eles!=null?e.eles:r.$();var s=new i(rr({},e,{cy:r,eles:a}));return s},"layout")};pS.createLayout=pS.makeLayout=pS.layout;jKe={notify:o(function(e,r){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var i=n.batchNotifications[e]=n.batchNotifications[e]||this.collection();r!=null&&i.merge(r);return}if(n.notificationsEnabled){var a=this.renderer();this.destroyed()||!a||a.notify(e,r)}},"notify"),notifications:o(function(e){var r=this._private;return e===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!e,this)},"notifications"),noNotifications:o(function(e){this.notifications(!1),e(),this.notifications(!0)},"noNotifications"),batching:o(function(){return this._private.batchCount>0},"batching"),startBatch:o(function(){var e=this._private;return e.batchCount==null&&(e.batchCount=0),e.batchCount===0&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},"startBatch"),endBatch:o(function(){var e=this._private;if(e.batchCount===0)return this;if(e.batchCount--,e.batchCount===0){e.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(e.batchNotifications).forEach(function(n){var i=e.batchNotifications[n];i.empty()?r.notify(n):r.notify(n,i)})}return this},"endBatch"),batch:o(function(e){return this.startBatch(),e(),this.endBatch(),this},"batch"),batchData:o(function(e){var r=this;return this.batch(function(){for(var n=Object.keys(e),i=0;i0;)r.removeChild(r.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(n){var i=n._private;i.rscratch={},i.rstyle={},i.animation.current=[],i.animation.queue=[]})},"destroyRenderer"),onRender:o(function(e){return this.on("render",e)},"onRender"),offRender:o(function(e){return this.off("render",e)},"offRender")};UP.invalidateDimensions=UP.resize;mS={collection:o(function(e,r){return Zt(e)?this.$(e):go(e)?e.collection():En(e)?(r||(r={}),new ka(this,e,r.unique,r.removed)):new ka(this)},"collection"),nodes:o(function(e){var r=this.$(function(n){return n.isNode()});return e?r.filter(e):r},"nodes"),edges:o(function(e){var r=this.$(function(n){return n.isEdge()});return e?r.filter(e):r},"edges"),$:o(function(e){var r=this._private.elements;return e?r.filter(e):r.spawnSelf()},"$"),mutableElements:o(function(){return this._private.elements},"mutableElements")};mS.elements=mS.filter=mS.$;Ga={},$b="t",QKe="f";Ga.apply=function(t){for(var e=this,r=e._private,n=r.cy,i=n.collection(),a=0;a0;if(p||d&&m){var g=void 0;p&&m||p?g=h.properties:m&&(g=h.mappedProperties);for(var y=0;y1&&(C=1),l.color){var E=n.valueMin[0],A=n.valueMax[0],S=n.valueMin[1],_=n.valueMax[1],I=n.valueMin[2],D=n.valueMax[2],k=n.valueMin[3]==null?1:n.valueMin[3],L=n.valueMax[3]==null?1:n.valueMax[3],R=[Math.round(E+(A-E)*C),Math.round(S+(_-S)*C),Math.round(I+(D-I)*C),Math.round(k+(L-k)*C)];a={bypass:n.bypass,name:n.name,value:R,strValue:"rgb("+R[0]+", "+R[1]+", "+R[2]+")"}}else if(l.number){var O=n.valueMin+(n.valueMax-n.valueMin)*C;a=this.parse(n.name,O,n.bypass,p)}else return!1;if(!a)return y(),!1;a.mapping=n,n=a;break}case s.data:{for(var M=n.field.split("."),B=d.data,F=0;F0&&a>0){for(var l={},u=!1,h=0;h0?t.delayAnimation(s).play().promise().then(w):w()}).then(function(){return t.animation({style:l,duration:a,easing:t.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(t,i),t.emitAndNotify("style"),n.transitioning=!1})}else n.transitioning&&(this.removeBypasses(t,i),t.emitAndNotify("style"),n.transitioning=!1)};Ga.checkTrigger=function(t,e,r,n,i,a){var s=this.properties[e],l=i(s);l!=null&&l(r,n)&&a(s)};Ga.checkZOrderTrigger=function(t,e,r,n){var i=this;this.checkTrigger(t,e,r,n,function(a){return a.triggersZOrder},function(){i._private.cy.notify("zorder",t)})};Ga.checkBoundsTrigger=function(t,e,r,n){this.checkTrigger(t,e,r,n,function(i){return i.triggersBounds},function(i){t.dirtyCompoundBoundsCache(),t.dirtyBoundingBoxCache(),i.triggersBoundsOfParallelBeziers&&e==="curve-style"&&(r==="bezier"||n==="bezier")&&t.parallelEdges().forEach(function(a){a.dirtyBoundingBoxCache()}),i.triggersBoundsOfConnectedEdges&&e==="display"&&(r==="none"||n==="none")&&t.connectedEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};Ga.checkTriggers=function(t,e,r,n){t.dirtyStyleCache(),this.checkZOrderTrigger(t,e,r,n),this.checkBoundsTrigger(t,e,r,n)};s4={};s4.applyBypass=function(t,e,r,n){var i=this,a=[],s=!0;if(e==="*"||e==="**"){if(r!==void 0)for(var l=0;li.length?n=n.substr(i.length):n=""}o(l,"removeSelAndBlockFromRemaining");function u(){a.length>s.length?a=a.substr(s.length):a=""}for(o(u,"removePropAndValFromRem");;){var h=n.match(/^\s*$/);if(h)break;var f=n.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!f){un("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+n);break}i=f[0];var d=f[1];if(d!=="core"){var p=new Lf(d);if(p.invalid){un("Skipping parsing of block: Invalid selector found in string stylesheet: "+d),l();continue}}var m=f[2],g=!1;a=m;for(var y=[];;){var v=a.match(/^\s*$/);if(v)break;var x=a.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!x){un("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+m),g=!0;break}s=x[0];var b=x[1],w=x[2],C=e.properties[b];if(!C){un("Skipping property: Invalid property name in: "+s),u();continue}var T=r.parse(b,w);if(!T){un("Skipping property: Invalid property definition in: "+s),u();continue}y.push({name:b,val:w}),u()}if(g){l();break}r.selector(d);for(var E=0;E=7&&e[0]==="d"&&(f=new RegExp(l.data.regex).exec(e))){if(r)return!1;var p=l.data;return{name:t,value:f,strValue:""+e,mapped:p,field:f[1],bypass:r}}else if(e.length>=10&&e[0]==="m"&&(d=new RegExp(l.mapData.regex).exec(e))){if(r||h.multiple)return!1;var m=l.mapData;if(!(h.color||h.number))return!1;var g=this.parse(t,d[4]);if(!g||g.mapped)return!1;var y=this.parse(t,d[5]);if(!y||y.mapped)return!1;if(g.pfValue===y.pfValue||g.strValue===y.strValue)return un("`"+t+": "+e+"` is not a valid mapper because the output range is zero; converting to `"+t+": "+g.strValue+"`"),this.parse(t,g.strValue);if(h.color){var v=g.value,x=y.value,b=v[0]===x[0]&&v[1]===x[1]&&v[2]===x[2]&&(v[3]===x[3]||(v[3]==null||v[3]===1)&&(x[3]==null||x[3]===1));if(b)return!1}return{name:t,value:d,strValue:""+e,mapped:m,field:d[1],fieldMin:parseFloat(d[2]),fieldMax:parseFloat(d[3]),valueMin:g.value,valueMax:y.value,bypass:r}}}if(h.multiple&&n!=="multiple"){var w;if(u?w=e.split(/\s+/):En(e)?w=e:w=[e],h.evenMultiple&&w.length%2!==0)return null;for(var C=[],T=[],E=[],A="",S=!1,_=0;_0?" ":"")+I.strValue}return h.validate&&!h.validate(C,T)?null:h.singleEnum&&S?C.length===1&&Zt(C[0])?{name:t,value:C[0],strValue:C[0],bypass:r}:null:{name:t,value:C,pfValue:E,strValue:A,bypass:r,units:T}}var D=o(function(){for(var K=0;Kh.max||h.strictMax&&e===h.max))return null;var M={name:t,value:e,strValue:""+e+(k||""),units:k,bypass:r};return h.unitless||k!=="px"&&k!=="em"?M.pfValue=e:M.pfValue=k==="px"||!k?e:this.getEmSizeInPixels()*e,(k==="ms"||k==="s")&&(M.pfValue=k==="ms"?e:1e3*e),(k==="deg"||k==="rad")&&(M.pfValue=k==="rad"?e:Nqe(e)),k==="%"&&(M.pfValue=e/100),M}else if(h.propList){var B=[],F=""+e;if(F!=="none"){for(var P=F.split(/\s*,\s*|\s+/),z=0;z0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0){u=Math.min((s-2*r)/n.w,(l-2*r)/n.h),u=u>this._private.maxZoom?this._private.maxZoom:u,u=u=n.minZoom&&(n.maxZoom=r),this},"zoomRange"),minZoom:o(function(e){return e===void 0?this._private.minZoom:this.zoomRange({min:e})},"minZoom"),maxZoom:o(function(e){return e===void 0?this._private.maxZoom:this.zoomRange({max:e})},"maxZoom"),getZoomedViewport:o(function(e){var r=this._private,n=r.pan,i=r.zoom,a,s,l=!1;if(r.zoomingEnabled||(l=!0),Ct(e)?s=e:Ur(e)&&(s=e.level,e.position!=null?a=MS(e.position,i,n):e.renderedPosition!=null&&(a=e.renderedPosition),a!=null&&!r.panningEnabled&&(l=!0)),s=s>r.maxZoom?r.maxZoom:s,s=sr.maxZoom||!r.zoomingEnabled?s=!0:(r.zoom=u,a.push("zoom"))}if(i&&(!s||!e.cancelOnFailedZoom)&&r.panningEnabled){var h=e.pan;Ct(h.x)&&(r.pan.x=h.x,l=!1),Ct(h.y)&&(r.pan.y=h.y,l=!1),l||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},"viewport"),center:o(function(e){var r=this.getCenterPan(e);return r&&(this._private.pan=r,this.emit("pan viewport"),this.notify("viewport")),this},"center"),getCenterPan:o(function(e,r){if(this._private.panningEnabled){if(Zt(e)){var n=e;e=this.mutableElements().filter(n)}else go(e)||(e=this.mutableElements());if(e.length!==0){var i=e.boundingBox(),a=this.width(),s=this.height();r=r===void 0?this._private.zoom:r;var l={x:(a-r*(i.x1+i.x2))/2,y:(s-r*(i.y1+i.y2))/2};return l}}},"getCenterPan"),reset:o(function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},"reset"),invalidateSize:o(function(){this._private.sizeCache=null},"invalidateSize"),size:o(function(){var e=this._private,r=e.container,n=this;return e.sizeCache=e.sizeCache||(r?function(){var i=n.window().getComputedStyle(r),a=o(function(l){return parseFloat(i.getPropertyValue(l))},"val");return{width:r.clientWidth-a("padding-left")-a("padding-right"),height:r.clientHeight-a("padding-top")-a("padding-bottom")}}():{width:1,height:1})},"size"),width:o(function(){return this.size().width},"width"),height:o(function(){return this.size().height},"height"),extent:o(function(){var e=this._private.pan,r=this._private.zoom,n=this.renderedExtent(),i={x1:(n.x1-e.x)/r,x2:(n.x2-e.x)/r,y1:(n.y1-e.y)/r,y2:(n.y2-e.y)/r};return i.w=i.x2-i.x1,i.h=i.y2-i.y1,i},"extent"),renderedExtent:o(function(){var e=this.width(),r=this.height();return{x1:0,y1:0,x2:e,y2:r,w:e,h:r}},"renderedExtent"),multiClickDebounceTime:o(function(e){if(e)this._private.multiClickDebounceTime=e;else return this._private.multiClickDebounceTime;return this},"multiClickDebounceTime")};Hp.centre=Hp.center;Hp.autolockNodes=Hp.autolock;Hp.autoungrabifyNodes=Hp.autoungrabify;Zb={data:cn.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:cn.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:cn.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:cn.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Zb.attr=Zb.data;Zb.removeAttr=Zb.removeData;Jb=o(function(e){var r=this;e=rr({},e);var n=e.container;n&&!vS(n)&&vS(n[0])&&(n=n[0]);var i=n?n._cyreg:null;i=i||{},i&&i.cy&&(i.cy.destroy(),i={});var a=i.readies=i.readies||[];n&&(n._cyreg=i),i.cy=r;var s=Ui!==void 0&&n!==void 0&&!e.headless,l=e;l.layout=rr({name:s?"grid":"null"},l.layout),l.renderer=rr({name:s?"canvas":"null"},l.renderer);var u=o(function(g,y,v){return y!==void 0?y:v!==void 0?v:g},"defVal"),h=this._private={container:n,ready:!1,options:l,elements:new ka(this),listeners:[],aniEles:new ka(this),data:l.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:u(!0,l.zoomingEnabled),userZoomingEnabled:u(!0,l.userZoomingEnabled),panningEnabled:u(!0,l.panningEnabled),userPanningEnabled:u(!0,l.userPanningEnabled),boxSelectionEnabled:u(!0,l.boxSelectionEnabled),autolock:u(!1,l.autolock,l.autolockNodes),autoungrabify:u(!1,l.autoungrabify,l.autoungrabifyNodes),autounselectify:u(!1,l.autounselectify),styleEnabled:l.styleEnabled===void 0?s:l.styleEnabled,zoom:Ct(l.zoom)?l.zoom:1,pan:{x:Ur(l.pan)&&Ct(l.pan.x)?l.pan.x:0,y:Ur(l.pan)&&Ct(l.pan.y)?l.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:u(250,l.multiClickDebounceTime)};this.createEmitter(),this.selectionType(l.selectionType),this.zoomRange({min:l.minZoom,max:l.maxZoom});var f=o(function(g,y){var v=g.some(nWe);if(v)return ey.all(g).then(y);y(g)},"loadExtData");h.styleEnabled&&r.setStyle([]);var d=rr({},l,l.renderer);r.initRenderer(d);var p=o(function(g,y,v){r.notifications(!1);var x=r.mutableElements();x.length>0&&x.remove(),g!=null&&(Ur(g)||En(g))&&r.add(g),r.one("layoutready",function(w){r.notifications(!0),r.emit(w),r.one("load",y),r.emitAndNotify("load")}).one("layoutstop",function(){r.one("done",v),r.emit("done")});var b=rr({},r._private.options.layout);b.eles=r.elements(),r.layout(b).run()},"setElesAndLayout");f([l.style,l.elements],function(m){var g=m[0],y=m[1];h.styleEnabled&&r.style().append(g),p(y,function(){r.startAnimationLoop(),h.ready=!0,si(l.ready)&&r.on("ready",l.ready);for(var v=0;v0,l=!!t.boundingBox,u=e.extent(),h=Hs(l?t.boundingBox:{x1:u.x1,y1:u.y1,w:u.w,h:u.h}),f;if(go(t.roots))f=t.roots;else if(En(t.roots)){for(var d=[],p=0;p0;){var O=R(),M=I(O,k);if(M)O.outgoers().filter(function(ae){return ae.isNode()&&r.has(ae)}).forEach(L);else if(M===null){un("Detected double maximal shift for node `"+O.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var B=0;if(t.avoidOverlap)for(var F=0;F0&&b[0].length<=3?$e/2:0),Ie=2*Math.PI/b[ze].length*He;return ze===0&&b[0].length===1&&(Re=1),{x:se.x+Re*Math.cos(Ie),y:se.y+Re*Math.sin(Ie)}}else{var be=b[ze].length,W=Math.max(be===1?0:l?(h.w-t.padding*2-ue.w)/((t.grid?Se:be)-1):(h.w-t.padding*2-ue.w)/((t.grid?Se:be)+1),B),de={x:se.x+(He+1-(be+1)/2)*W,y:se.y+(ze+1-(ne+1)/2)*Z};return de}},"getPosition");return r.nodes().layoutPositions(this,t,ce),this};rQe={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(rge,"CircleLayout");rge.prototype.run=function(){var t=this.options,e=t,r=t.cy,n=e.eles,i=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,a=n.nodes().not(":parent");e.sort&&(a=a.sort(e.sort));for(var s=Hs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=e.sweep===void 0?2*Math.PI-2*Math.PI/a.length:e.sweep,h=u/Math.max(1,a.length-1),f,d=0,p=0;p1&&e.avoidOverlap){d*=1.75;var x=Math.cos(h)-Math.cos(0),b=Math.sin(h)-Math.sin(0),w=Math.sqrt(d*d/(x*x+b*b));f=Math.max(w,f)}var C=o(function(E,A){var S=e.startAngle+A*h*(i?1:-1),_=f*Math.cos(S),I=f*Math.sin(S),D={x:l.x+_,y:l.y+I};return D},"getPos");return n.nodes().layoutPositions(this,e,C),this};nQe={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:o(function(e){return e.degree()},"concentric"),levelWidth:o(function(e){return e.maxDegree()/4},"levelWidth"),animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(nge,"ConcentricLayout");nge.prototype.run=function(){for(var t=this.options,e=t,r=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,n=t.cy,i=e.eles,a=i.nodes().not(":parent"),s=Hs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=[],h=0,f=0;f0){var T=Math.abs(b[0].value-C.value);T>=v&&(b=[],x.push(b))}b.push(C)}var E=h+e.minNodeSpacing;if(!e.avoidOverlap){var A=x.length>0&&x[0].length>1,S=Math.min(s.w,s.h)/2-E,_=S/(x.length+A?1:0);E=Math.min(E,_)}for(var I=0,D=0;D1&&e.avoidOverlap){var O=Math.cos(R)-Math.cos(0),M=Math.sin(R)-Math.sin(0),B=Math.sqrt(E*E/(O*O+M*M));I=Math.max(B,I)}k.r=I,I+=E}if(e.equidistant){for(var F=0,P=0,z=0;z=t.numIter||(hQe(n,t),n.temperature=n.temperature*t.coolingFactor,n.temperature=t.animationThreshold&&a(),xS(d)}},"frame");f()}else{for(;h;)h=s(u),u++;E0e(n,t),l()}return this};HS.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this};HS.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};aQe=o(function(e,r,n){for(var i=n.eles.edges(),a=n.eles.nodes(),s=Hs(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),l={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:i.size(),temperature:n.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},u=n.eles.components(),h={},f=0;f0){l.graphSet.push(S);for(var f=0;fi.count?0:i.graph},"findLCA"),oQe=o(function t(e,r,n,i){var a=i.graphSet[n];if(-10)var d=i.nodeOverlap*f,p=Math.sqrt(l*l+u*u),m=d*l/p,g=d*u/p;else var y=CS(e,l,u),v=CS(r,-1*l,-1*u),x=v.x-y.x,b=v.y-y.y,w=x*x+b*b,p=Math.sqrt(w),d=(e.nodeRepulsion+r.nodeRepulsion)/w,m=d*x/p,g=d*b/p;e.isLocked||(e.offsetX-=m,e.offsetY-=g),r.isLocked||(r.offsetX+=m,r.offsetY+=g)}},"nodeRepulsion"),pQe=o(function(e,r,n,i){if(n>0)var a=e.maxX-r.minX;else var a=r.maxX-e.minX;if(i>0)var s=e.maxY-r.minY;else var s=r.maxY-e.minY;return a>=0&&s>=0?Math.sqrt(a*a+s*s):0},"nodesOverlap"),CS=o(function(e,r,n){var i=e.positionX,a=e.positionY,s=e.height||1,l=e.width||1,u=n/r,h=s/l,f={};return r===0&&0n?(f.x=i,f.y=a+s/2,f):0r&&-1*h<=u&&u<=h?(f.x=i-l/2,f.y=a-l*n/2/r,f):0=h)?(f.x=i+s*r/2/n,f.y=a+s/2,f):(0>n&&(u<=-1*h||u>=h)&&(f.x=i-s*r/2/n,f.y=a-s/2),f)},"findClippingPoint"),mQe=o(function(e,r){for(var n=0;nn){var v=r.gravity*m/y,x=r.gravity*g/y;p.offsetX+=v,p.offsetY+=x}}}}},"calculateGravityForces"),yQe=o(function(e,r){var n=[],i=0,a=-1;for(n.push.apply(n,e.graphSet[0]),a+=e.graphSet[0].length;i<=a;){var s=n[i++],l=e.idToIndex[s],u=e.layoutNodes[l],h=u.children;if(0n)var a={x:n*e/i,y:n*r/i};else var a={x:e,y:r};return a},"limitForce"),bQe=o(function t(e,r){var n=e.parentId;if(n!=null){var i=r.layoutNodes[r.idToIndex[n]],a=!1;if((i.maxX==null||e.maxX+i.padRight>i.maxX)&&(i.maxX=e.maxX+i.padRight,a=!0),(i.minX==null||e.minX-i.padLefti.maxY)&&(i.maxY=e.maxY+i.padBottom,a=!0),(i.minY==null||e.minY-i.padTopx&&(g+=v+r.componentSpacing,m=0,y=0,v=0)}}},"separateComponents"),wQe={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:o(function(e){},"position"),sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(age,"GridLayout");age.prototype.run=function(){var t=this.options,e=t,r=t.cy,n=e.eles,i=n.nodes().not(":parent");e.sort&&(i=i.sort(e.sort));var a=Hs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(a.h===0||a.w===0)n.nodes().layoutPositions(this,e,function(Q){return{x:a.x1,y:a.y1}});else{var s=i.size(),l=Math.sqrt(s*a.h/a.w),u=Math.round(l),h=Math.round(a.w/a.h*l),f=o(function(j){if(j==null)return Math.min(u,h);var ie=Math.min(u,h);ie==u?u=j:h=j},"small"),d=o(function(j){if(j==null)return Math.max(u,h);var ie=Math.max(u,h);ie==u?u=j:h=j},"large"),p=e.rows,m=e.cols!=null?e.cols:e.columns;if(p!=null&&m!=null)u=p,h=m;else if(p!=null&&m==null)u=p,h=Math.ceil(s/u);else if(p==null&&m!=null)h=m,u=Math.ceil(s/h);else if(h*u>s){var g=f(),y=d();(g-1)*y>=s?f(g-1):(y-1)*g>=s&&d(y-1)}else for(;h*u=s?d(x+1):f(v+1)}var b=a.w/h,w=a.h/u;if(e.condense&&(b=0,w=0),e.avoidOverlap)for(var C=0;C=h&&(O=0,R++)},"moveToNextCell"),B={},F=0;F(O=Wqe(t,e,M[B],M[B+1],M[B+2],M[B+3])))return v(A,O),!0}else if(_.edgeType==="bezier"||_.edgeType==="multibezier"||_.edgeType==="self"||_.edgeType==="compound"){for(var M=_.allpts,B=0;B+5<_.allpts.length;B+=4)if(Gqe(t,e,M[B],M[B+1],M[B+2],M[B+3],M[B+4],M[B+5],R)&&L>(O=Hqe(t,e,M[B],M[B+1],M[B+2],M[B+3],M[B+4],M[B+5])))return v(A,O),!0}for(var F=F||S.source,P=P||S.target,z=i.getArrowWidth(I,D),$=[{name:"source",x:_.arrowStartX,y:_.arrowStartY,angle:_.srcArrowAngle},{name:"target",x:_.arrowEndX,y:_.arrowEndY,angle:_.tgtArrowAngle},{name:"mid-source",x:_.midX,y:_.midY,angle:_.midsrcArrowAngle},{name:"mid-target",x:_.midX,y:_.midY,angle:_.midtgtArrowAngle}],B=0;B<$.length;B++){var H=$[B],Q=a.arrowShapes[A.pstyle(H.name+"-arrow-shape").value],j=A.pstyle("width").pfValue;if(Q.roughCollide(t,e,z,H.angle,{x:H.x,y:H.y},j,f)&&Q.collide(t,e,z,H.angle,{x:H.x,y:H.y},j,f))return v(A),!0}h&&l.length>0&&(x(F),x(P))}o(b,"checkEdge");function w(A,S,_){return Gl(A,S,_)}o(w,"preprop");function C(A,S){var _=A._private,I=p,D;S?D=S+"-":D="",A.boundingBox();var k=_.labelBounds[S||"main"],L=A.pstyle(D+"label").value,R=A.pstyle("text-events").strValue==="yes";if(!(!R||!L)){var O=w(_.rscratch,"labelX",S),M=w(_.rscratch,"labelY",S),B=w(_.rscratch,"labelAngle",S),F=A.pstyle(D+"text-margin-x").pfValue,P=A.pstyle(D+"text-margin-y").pfValue,z=k.x1-I-F,$=k.x2+I-F,H=k.y1-I-P,Q=k.y2+I-P;if(B){var j=Math.cos(B),ie=Math.sin(B),ne=o(function(se,ue){return se=se-O,ue=ue-M,{x:se*j-ue*ie+O,y:se*ie+ue*j+M}},"rotate"),le=ne(z,H),he=ne(z,Q),K=ne($,H),X=ne($,Q),te=[le.x+F,le.y+P,K.x+F,K.y+P,X.x+F,X.y+P,he.x+F,he.y+P];if(Us(t,e,te))return v(A),!0}else if(K1(k,t,e))return v(A),!0}}o(C,"checkLabel");for(var T=s.length-1;T>=0;T--){var E=s[T];E.isNode()?x(E)||C(E):b(E)||C(E)||C(E,"source")||C(E,"target")}return l};qp.getAllInBox=function(t,e,r,n){var i=this.getCachedZSortedEles().interactive,a=[],s=Math.min(t,r),l=Math.max(t,r),u=Math.min(e,n),h=Math.max(e,n);t=s,r=l,e=u,n=h;for(var f=Hs({x1:t,y1:e,x2:r,y2:n}),d=0;d0?-(Math.PI-e.ang):Math.PI+e.ang},"invertVec"),AQe=o(function(e,r,n,i,a){if(e!==D0e?L0e(r,e,qc):CQe(Jo,qc),L0e(r,n,Jo),A0e=qc.nx*Jo.ny-qc.ny*Jo.nx,_0e=qc.nx*Jo.nx-qc.ny*-Jo.ny,Ku=Math.asin(Math.max(-1,Math.min(1,A0e))),Math.abs(Ku)<1e-6){HP=r.x,WP=r.y,Bp=G1=0;return}Fp=1,gS=!1,_0e<0?Ku<0?Ku=Math.PI+Ku:(Ku=Math.PI-Ku,Fp=-1,gS=!0):Ku>0&&(Fp=-1,gS=!0),r.radius!==void 0?G1=r.radius:G1=i,Mp=Ku/2,aS=Math.min(qc.len/2,Jo.len/2),a?(Wc=Math.abs(Math.cos(Mp)*G1/Math.sin(Mp)),Wc>aS?(Wc=aS,Bp=Math.abs(Wc*Math.sin(Mp)/Math.cos(Mp))):Bp=G1):(Wc=Math.min(aS,G1),Bp=Math.abs(Wc*Math.sin(Mp)/Math.cos(Mp))),qP=r.x+Jo.nx*Wc,YP=r.y+Jo.ny*Wc,HP=qP-Jo.ny*Bp*Fp,WP=YP+Jo.nx*Bp*Fp,cge=r.x+qc.nx*Wc,uge=r.y+qc.ny*Wc,D0e=r},"calcCornerArc");o(hge,"drawPreparedRoundCorner");o(vB,"getRoundCorner");Va={};Va.findMidptPtsEtc=function(t,e){var r=e.posPts,n=e.intersectionPts,i=e.vectorNormInverse,a,s=t.pstyle("source-endpoint"),l=t.pstyle("target-endpoint"),u=s.units!=null&&l.units!=null,h=o(function(T,E,A,S){var _=S-E,I=A-T,D=Math.sqrt(I*I+_*_);return{x:-_/D,y:I/D}},"recalcVectorNormInverse"),f=t.pstyle("edge-distances").value;switch(f){case"node-position":a=r;break;case"intersection":a=n;break;case"endpoints":{if(u){var d=this.manualEndptToPx(t.source()[0],s),p=_i(d,2),m=p[0],g=p[1],y=this.manualEndptToPx(t.target()[0],l),v=_i(y,2),x=v[0],b=v[1],w={x1:m,y1:g,x2:x,y2:b};i=h(m,g,x,b),a=w}else un("Edge ".concat(t.id()," has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).")),a=n;break}}return{midptPts:a,vectorNormInverse:i}};Va.findHaystackPoints=function(t){for(var e=0;e0?Math.max(q-pe,0):Math.min(q+pe,0)},"subDWH"),L=k(I,S),R=k(D,_),O=!1;b===h?x=Math.abs(L)>Math.abs(R)?i:n:b===u||b===l?(x=n,O=!0):(b===a||b===s)&&(x=i,O=!0);var M=x===n,B=M?R:L,F=M?D:I,P=mme(F),z=!1;!(O&&(C||E))&&(b===l&&F<0||b===u&&F>0||b===a&&F>0||b===s&&F<0)&&(P*=-1,B=P*Math.abs(B),z=!0);var $;if(C){var H=T<0?1+T:T;$=H*B}else{var Q=T<0?B:0;$=Q+T*P}var j=o(function(q){return Math.abs(q)=Math.abs(B)},"getIsTooClose"),ie=j($),ne=j(Math.abs(B)-Math.abs($)),le=ie||ne;if(le&&!z)if(M){var he=Math.abs(F)<=p/2,K=Math.abs(I)<=m/2;if(he){var X=(f.x1+f.x2)/2,te=f.y1,J=f.y2;r.segpts=[X,te,X,J]}else if(K){var se=(f.y1+f.y2)/2,ue=f.x1,Z=f.x2;r.segpts=[ue,se,Z,se]}else r.segpts=[f.x1,f.y2]}else{var Se=Math.abs(F)<=d/2,ce=Math.abs(D)<=g/2;if(Se){var ae=(f.y1+f.y2)/2,Oe=f.x1,ge=f.x2;r.segpts=[Oe,ae,ge,ae]}else if(ce){var ze=(f.x1+f.x2)/2,He=f.y1,$e=f.y2;r.segpts=[ze,He,ze,$e]}else r.segpts=[f.x2,f.y1]}else if(M){var Re=f.y1+$+(v?p/2*P:0),Ie=f.x1,be=f.x2;r.segpts=[Ie,Re,be,Re]}else{var W=f.x1+$+(v?d/2*P:0),de=f.y1,re=f.y2;r.segpts=[W,de,W,re]}if(r.isRound){var oe=t.pstyle("taxi-radius").value,V=t.pstyle("radius-type").value[0]==="arc-radius";r.radii=new Array(r.segpts.length/2).fill(oe),r.isArcRadius=new Array(r.segpts.length/2).fill(V)}};Va.tryToCorrectInvalidPoints=function(t,e){var r=t._private.rscratch;if(r.edgeType==="bezier"){var n=e.srcPos,i=e.tgtPos,a=e.srcW,s=e.srcH,l=e.tgtW,u=e.tgtH,h=e.srcShape,f=e.tgtShape,d=e.srcCornerRadius,p=e.tgtCornerRadius,m=e.srcRs,g=e.tgtRs,y=!Ct(r.startX)||!Ct(r.startY),v=!Ct(r.arrowStartX)||!Ct(r.arrowStartY),x=!Ct(r.endX)||!Ct(r.endY),b=!Ct(r.arrowEndX)||!Ct(r.arrowEndY),w=3,C=this.getArrowWidth(t.pstyle("width").pfValue,t.pstyle("arrow-scale").value)*this.arrowShapeWidth,T=w*C,E=Gp({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),A=ER.poolIndex()){var O=L;L=R,R=O}var M=_.srcPos=L.position(),B=_.tgtPos=R.position(),F=_.srcW=L.outerWidth(),P=_.srcH=L.outerHeight(),z=_.tgtW=R.outerWidth(),$=_.tgtH=R.outerHeight(),H=_.srcShape=r.nodeShapes[e.getNodeShape(L)],Q=_.tgtShape=r.nodeShapes[e.getNodeShape(R)],j=_.srcCornerRadius=L.pstyle("corner-radius").value==="auto"?"auto":L.pstyle("corner-radius").pfValue,ie=_.tgtCornerRadius=R.pstyle("corner-radius").value==="auto"?"auto":R.pstyle("corner-radius").pfValue,ne=_.tgtRs=R._private.rscratch,le=_.srcRs=L._private.rscratch;_.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var he=0;he<_.eles.length;he++){var K=_.eles[he],X=K[0]._private.rscratch,te=K.pstyle("curve-style").value,J=te==="unbundled-bezier"||te.endsWith("segments")||te.endsWith("taxi"),se=!L.same(K.source());if(!_.calculatedIntersection&&L!==R&&(_.hasBezier||_.hasUnbundled)){_.calculatedIntersection=!0;var ue=H.intersectLine(M.x,M.y,F,P,B.x,B.y,0,j,le),Z=_.srcIntn=ue,Se=Q.intersectLine(B.x,B.y,z,$,M.x,M.y,0,ie,ne),ce=_.tgtIntn=Se,ae=_.intersectionPts={x1:ue[0],x2:Se[0],y1:ue[1],y2:Se[1]},Oe=_.posPts={x1:M.x,x2:B.x,y1:M.y,y2:B.y},ge=Se[1]-ue[1],ze=Se[0]-ue[0],He=Math.sqrt(ze*ze+ge*ge),$e=_.vector={x:ze,y:ge},Re=_.vectorNorm={x:$e.x/He,y:$e.y/He},Ie={x:-Re.y,y:Re.x};_.nodesOverlap=!Ct(He)||Q.checkPoint(ue[0],ue[1],0,z,$,B.x,B.y,ie,ne)||H.checkPoint(Se[0],Se[1],0,F,P,M.x,M.y,j,le),_.vectorNormInverse=Ie,I={nodesOverlap:_.nodesOverlap,dirCounts:_.dirCounts,calculatedIntersection:!0,hasBezier:_.hasBezier,hasUnbundled:_.hasUnbundled,eles:_.eles,srcPos:B,srcRs:ne,tgtPos:M,tgtRs:le,srcW:z,srcH:$,tgtW:F,tgtH:P,srcIntn:ce,tgtIntn:Z,srcShape:Q,tgtShape:H,posPts:{x1:Oe.x2,y1:Oe.y2,x2:Oe.x1,y2:Oe.y1},intersectionPts:{x1:ae.x2,y1:ae.y2,x2:ae.x1,y2:ae.y1},vector:{x:-$e.x,y:-$e.y},vectorNorm:{x:-Re.x,y:-Re.y},vectorNormInverse:{x:-Ie.x,y:-Ie.y}}}var be=se?I:_;X.nodesOverlap=be.nodesOverlap,X.srcIntn=be.srcIntn,X.tgtIntn=be.tgtIntn,X.isRound=te.startsWith("round"),i&&(L.isParent()||L.isChild()||R.isParent()||R.isChild())&&(L.parents().anySame(R)||R.parents().anySame(L)||L.same(R)&&L.isParent())?e.findCompoundLoopPoints(K,be,he,J):L===R?e.findLoopPoints(K,be,he,J):te.endsWith("segments")?e.findSegmentsPoints(K,be):te.endsWith("taxi")?e.findTaxiPoints(K,be):te==="straight"||!J&&_.eles.length%2===1&&he===Math.floor(_.eles.length/2)?e.findStraightEdgePoints(K):e.findBezierPoints(K,be,he,J,se),e.findEndpoints(K),e.tryToCorrectInvalidPoints(K,be),e.checkForInvalidEdgeWarning(K),e.storeAllpts(K),e.storeEdgeProjections(K),e.calculateArrowAngles(K),e.recalculateEdgeLabelProjections(K),e.calculateLabelAngles(K)}},"_loop"),T=0;T0){var J=a,se=Op(J,U1(r)),ue=Op(J,U1(te)),Z=se;if(ue2){var Se=Op(J,{x:te[2],y:te[3]});Se0){var re=s,oe=Op(re,U1(r)),V=Op(re,U1(de)),xe=oe;if(V2){var q=Op(re,{x:de[2],y:de[3]});q=g||A){v={cp:C,segment:E};break}}if(v)break}var S=v.cp,_=v.segment,I=(g-x)/_.length,D=_.t1-_.t0,k=m?_.t0+D*I:_.t1-D*I;k=Yb(0,k,1),e=W1(S.p0,S.p1,S.p2,k),p=DQe(S.p0,S.p1,S.p2,k);break}case"straight":case"segments":case"haystack":{for(var L=0,R,O,M,B,F=n.allpts.length,P=0;P+3=g));P+=2);var z=g-O,$=z/R;$=Yb(0,$,1),e=Iqe(M,B,$),p=pge(M,B);break}}s("labelX",d,e.x),s("labelY",d,e.y),s("labelAutoAngle",d,p)}},"calculateEndProjection");h("source"),h("target"),this.applyLabelDimensions(t)}};Kc.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,"source"),this.applyPrefixedLabelDimensions(t,"target"))};Kc.applyPrefixedLabelDimensions=function(t,e){var r=t._private,n=this.getLabelText(t,e),i=this.calculateLabelDimensions(t,n),a=t.pstyle("line-height").pfValue,s=t.pstyle("text-wrap").strValue,l=Gl(r.rscratch,"labelWrapCachedLines",e)||[],u=s!=="wrap"?1:Math.max(l.length,1),h=i.height/u,f=h*a,d=i.width,p=i.height+(u-1)*(a-1)*h;kf(r.rstyle,"labelWidth",e,d),kf(r.rscratch,"labelWidth",e,d),kf(r.rstyle,"labelHeight",e,p),kf(r.rscratch,"labelHeight",e,p),kf(r.rscratch,"labelLineHeight",e,f)};Kc.getLabelText=function(t,e){var r=t._private,n=e?e+"-":"",i=t.pstyle(n+"label").strValue,a=t.pstyle("text-transform").value,s=o(function(Q,j){return j?(kf(r.rscratch,Q,e,j),j):Gl(r.rscratch,Q,e)},"rscratch");if(!i)return"";a=="none"||(a=="uppercase"?i=i.toUpperCase():a=="lowercase"&&(i=i.toLowerCase()));var l=t.pstyle("text-wrap").value;if(l==="wrap"){var u=s("labelKey");if(u!=null&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var h="\u200B",f=i.split(` +`),d=t.pstyle("text-max-width").pfValue,p=t.pstyle("text-overflow-wrap").value,m=p==="anywhere",g=[],y=/[\s\u200b]+|$/g,v=0;vd){var T=x.matchAll(y),E="",A=0,S=mo(T),_;try{for(S.s();!(_=S.n()).done;){var I=_.value,D=I[0],k=x.substring(A,I.index);A=I.index+D.length;var L=E.length===0?k:E+k+D,R=this.calculateLabelDimensions(t,L),O=R.width;O<=d?E+=k+D:(E&&g.push(E),E=k+D)}}catch(H){S.e(H)}finally{S.f()}E.match(/^[\s\u200b]+$/)||g.push(E)}else g.push(x)}s("labelWrapCachedLines",g),i=s("labelWrapCachedText",g.join(` +`)),s("labelWrapKey",u)}else if(l==="ellipsis"){var M=t.pstyle("text-max-width").pfValue,B="",F="\u2026",P=!1;if(this.calculateLabelDimensions(t,i).widthM)break;B+=i[z],z===i.length-1&&(P=!0)}return P||(B+=F),B}return i};Kc.getLabelJustification=function(t){var e=t.pstyle("text-justification").strValue,r=t.pstyle("text-halign").strValue;if(e==="auto")if(t.isNode())switch(r){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return e};Kc.calculateLabelDimensions=function(t,e){var r=this,n=r.cy.window(),i=n.document,a=_f(e,t._private.labelDimsKey),s=r.labelDimCache||(r.labelDimCache=[]),l=s[a];if(l!=null)return l;var u=0,h=t.pstyle("font-style").strValue,f=t.pstyle("font-size").pfValue,d=t.pstyle("font-family").strValue,p=t.pstyle("font-weight").strValue,m=this.labelCalcCanvas,g=this.labelCalcCanvasContext;if(!m){m=this.labelCalcCanvas=i.createElement("canvas"),g=this.labelCalcCanvasContext=m.getContext("2d");var y=m.style;y.position="absolute",y.left="-9999px",y.top="-9999px",y.zIndex="-1",y.visibility="hidden",y.pointerEvents="none"}g.font="".concat(h," ").concat(p," ").concat(f,"px ").concat(d);for(var v=0,x=0,b=e.split(` +`),w=0;w1&&arguments[1]!==void 0?arguments[1]:!0;if(e.merge(s),l)for(var u=0;u=t.desktopTapThreshold2}var ot=a(W);at&&(t.hoverData.tapholdCancelled=!0);var Yt=o(function(){var Tt=t.hoverData.dragDelta=t.hoverData.dragDelta||[];Tt.length===0?(Tt.push(De[0]),Tt.push(De[1])):(Tt[0]+=De[0],Tt[1]+=De[1])},"updateDragDelta");re=!0,i(_e,["mousemove","vmousemove","tapdrag"],W,{x:q[0],y:q[1]});var bt=o(function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||oe.emit({originalEvent:W,type:"boxstart",position:{x:q[0],y:q[1]}}),Pe[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()},"goIntoBoxMode");if(t.hoverData.which===3){if(at){var Mt={originalEvent:W,type:"cxtdrag",position:{x:q[0],y:q[1]}};Ve?Ve.emit(Mt):oe.emit(Mt),t.hoverData.cxtDragged=!0,(!t.hoverData.cxtOver||_e!==t.hoverData.cxtOver)&&(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit({originalEvent:W,type:"cxtdragout",position:{x:q[0],y:q[1]}}),t.hoverData.cxtOver=_e,_e&&_e.emit({originalEvent:W,type:"cxtdragover",position:{x:q[0],y:q[1]}}))}}else if(t.hoverData.dragging){if(re=!0,oe.panningEnabled()&&oe.userPanningEnabled()){var xt;if(t.hoverData.justStartedPan){var ut=t.hoverData.mdownPos;xt={x:(q[0]-ut[0])*V,y:(q[1]-ut[1])*V},t.hoverData.justStartedPan=!1}else xt={x:De[0]*V,y:De[1]*V};oe.panBy(xt),oe.emit("dragpan"),t.hoverData.dragged=!0}q=t.projectIntoViewport(W.clientX,W.clientY)}else if(Pe[4]==1&&(Ve==null||Ve.pannable())){if(at){if(!t.hoverData.dragging&&oe.boxSelectionEnabled()&&(ot||!oe.panningEnabled()||!oe.userPanningEnabled()))bt();else if(!t.hoverData.selecting&&oe.panningEnabled()&&oe.userPanningEnabled()){var Et=s(Ve,t.hoverData.downs);Et&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,Pe[4]=0,t.data.bgActivePosistion=U1(pe),t.redrawHint("select",!0),t.redraw())}Ve&&Ve.pannable()&&Ve.active()&&Ve.unactivate()}}else{if(Ve&&Ve.pannable()&&Ve.active()&&Ve.unactivate(),(!Ve||!Ve.grabbed())&&_e!=we&&(we&&i(we,["mouseout","tapdragout"],W,{x:q[0],y:q[1]}),_e&&i(_e,["mouseover","tapdragover"],W,{x:q[0],y:q[1]}),t.hoverData.last=_e),Ve)if(at){if(oe.boxSelectionEnabled()&&ot)Ve&&Ve.grabbed()&&(x(qe),Ve.emit("freeon"),qe.emit("free"),t.dragData.didDrag&&(Ve.emit("dragfreeon"),qe.emit("dragfree"))),bt();else if(Ve&&Ve.grabbed()&&t.nodeIsDraggable(Ve)){var ft=!t.dragData.didDrag;ft&&t.redrawHint("eles",!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||y(qe,{inDragLayer:!0});var yt={x:0,y:0};if(Ct(De[0])&&Ct(De[1])&&(yt.x+=De[0],yt.y+=De[1],ft)){var nt=t.hoverData.dragDelta;nt&&Ct(nt[0])&&Ct(nt[1])&&(yt.x+=nt[0],yt.y+=nt[1])}t.hoverData.draggingEles=!0,qe.silentShift(yt).emit("position drag"),t.redrawHint("drag",!0),t.redraw()}}else Yt();re=!0}if(Pe[2]=q[0],Pe[3]=q[1],re)return W.stopPropagation&&W.stopPropagation(),W.preventDefault&&W.preventDefault(),!1}},"mousemoveHandler"),!1);var k,L,R;t.registerBinding(e,"mouseup",o(function(W){if(!(t.hoverData.which===1&&W.which!==1&&t.hoverData.capture)){var de=t.hoverData.capture;if(de){t.hoverData.capture=!1;var re=t.cy,oe=t.projectIntoViewport(W.clientX,W.clientY),V=t.selection,xe=t.findNearestElement(oe[0],oe[1],!0,!1),q=t.dragData.possibleDragElements,pe=t.hoverData.down,ve=a(W);if(t.data.bgActivePosistion&&(t.redrawHint("select",!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,pe&&pe.unactivate(),t.hoverData.which===3){var Pe={originalEvent:W,type:"cxttapend",position:{x:oe[0],y:oe[1]}};if(pe?pe.emit(Pe):re.emit(Pe),!t.hoverData.cxtDragged){var _e={originalEvent:W,type:"cxttap",position:{x:oe[0],y:oe[1]}};pe?pe.emit(_e):re.emit(_e)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(t.hoverData.which===1){if(i(xe,["mouseup","tapend","vmouseup"],W,{x:oe[0],y:oe[1]}),!t.dragData.didDrag&&!t.hoverData.dragged&&!t.hoverData.selecting&&!t.hoverData.isOverThresholdDrag&&(i(pe,["click","tap","vclick"],W,{x:oe[0],y:oe[1]}),L=!1,W.timeStamp-R<=re.multiClickDebounceTime()?(k&&clearTimeout(k),L=!0,R=null,i(pe,["dblclick","dbltap","vdblclick"],W,{x:oe[0],y:oe[1]})):(k=setTimeout(function(){L||i(pe,["oneclick","onetap","voneclick"],W,{x:oe[0],y:oe[1]})},re.multiClickDebounceTime()),R=W.timeStamp)),pe==null&&!t.dragData.didDrag&&!t.hoverData.selecting&&!t.hoverData.dragged&&!a(W)&&(re.$(r).unselect(["tapunselect"]),q.length>0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=q=re.collection()),xe==pe&&!t.dragData.didDrag&&!t.hoverData.selecting&&xe!=null&&xe._private.selectable&&(t.hoverData.dragging||(re.selectionType()==="additive"||ve?xe.selected()?xe.unselect(["tapunselect"]):xe.select(["tapselect"]):ve||(re.$(r).unmerge(xe).unselect(["tapunselect"]),xe.select(["tapselect"]))),t.redrawHint("eles",!0)),t.hoverData.selecting){var we=re.collection(t.getAllInBox(V[0],V[1],V[2],V[3]));t.redrawHint("select",!0),we.length>0&&t.redrawHint("eles",!0),re.emit({type:"boxend",originalEvent:W,position:{x:oe[0],y:oe[1]}});var Ve=o(function(at){return at.selectable()&&!at.selected()},"eleWouldBeSelected");re.selectionType()==="additive"||ve||re.$(r).unmerge(we).unselect(),we.emit("box").stdFilter(Ve).select().emit("boxselect"),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!V[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var De=pe&&pe.grabbed();x(q),De&&(pe.emit("freeon"),q.emit("free"),t.dragData.didDrag&&(pe.emit("dragfreeon"),q.emit("dragfree")))}}V[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null,t.hoverData.which=null}}},"mouseupHandler"),!1);var O=o(function(W){if(!t.scrollingPage){var de=t.cy,re=de.zoom(),oe=de.pan(),V=t.projectIntoViewport(W.clientX,W.clientY),xe=[V[0]*re+oe.x,V[1]*re+oe.y];if(t.hoverData.draggingEles||t.hoverData.dragging||t.hoverData.cxtStarted||_()){W.preventDefault();return}if(de.panningEnabled()&&de.userPanningEnabled()&&de.zoomingEnabled()&&de.userZoomingEnabled()){W.preventDefault(),t.data.wheelZooming=!0,clearTimeout(t.data.wheelTimeout),t.data.wheelTimeout=setTimeout(function(){t.data.wheelZooming=!1,t.redrawHint("eles",!0),t.redraw()},150);var q;W.deltaY!=null?q=W.deltaY/-250:W.wheelDeltaY!=null?q=W.wheelDeltaY/1e3:q=W.wheelDelta/1e3,q=q*t.wheelSensitivity;var pe=W.deltaMode===1;pe&&(q*=33);var ve=de.zoom()*Math.pow(10,q);W.type==="gesturechange"&&(ve=t.gestureStartZoom*W.scale),de.zoom({level:ve,renderedPosition:{x:xe[0],y:xe[1]}}),de.emit(W.type==="gesturechange"?"pinchzoom":"scrollzoom")}}},"wheelHandler");t.registerBinding(t.container,"wheel",O,!0),t.registerBinding(e,"scroll",o(function(W){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},"scrollHandler"),!0),t.registerBinding(t.container,"gesturestart",o(function(W){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||W.preventDefault()},"gestureStartHandler"),!0),t.registerBinding(t.container,"gesturechange",function(be){t.hasTouchStarted||O(be)},!0),t.registerBinding(t.container,"mouseout",o(function(W){var de=t.projectIntoViewport(W.clientX,W.clientY);t.cy.emit({originalEvent:W,type:"mouseout",position:{x:de[0],y:de[1]}})},"mouseOutHandler"),!1),t.registerBinding(t.container,"mouseover",o(function(W){var de=t.projectIntoViewport(W.clientX,W.clientY);t.cy.emit({originalEvent:W,type:"mouseover",position:{x:de[0],y:de[1]}})},"mouseOverHandler"),!1);var M,B,F,P,z,$,H,Q,j,ie,ne,le,he,K=o(function(W,de,re,oe){return Math.sqrt((re-W)*(re-W)+(oe-de)*(oe-de))},"distance"),X=o(function(W,de,re,oe){return(re-W)*(re-W)+(oe-de)*(oe-de)},"distanceSq"),te;t.registerBinding(t.container,"touchstart",te=o(function(W){if(t.hasTouchStarted=!0,!!I(W)){w(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var de=t.cy,re=t.touchData.now,oe=t.touchData.earlier;if(W.touches[0]){var V=t.projectIntoViewport(W.touches[0].clientX,W.touches[0].clientY);re[0]=V[0],re[1]=V[1]}if(W.touches[1]){var V=t.projectIntoViewport(W.touches[1].clientX,W.touches[1].clientY);re[2]=V[0],re[3]=V[1]}if(W.touches[2]){var V=t.projectIntoViewport(W.touches[2].clientX,W.touches[2].clientY);re[4]=V[0],re[5]=V[1]}if(W.touches[1]){t.touchData.singleTouchMoved=!0,x(t.dragData.touchDragEles);var xe=t.findContainerClientCoords();j=xe[0],ie=xe[1],ne=xe[2],le=xe[3],M=W.touches[0].clientX-j,B=W.touches[0].clientY-ie,F=W.touches[1].clientX-j,P=W.touches[1].clientY-ie,he=0<=M&&M<=ne&&0<=F&&F<=ne&&0<=B&&B<=le&&0<=P&&P<=le;var q=de.pan(),pe=de.zoom();z=K(M,B,F,P),$=X(M,B,F,P),H=[(M+F)/2,(B+P)/2],Q=[(H[0]-q.x)/pe,(H[1]-q.y)/pe];var ve=200,Pe=ve*ve;if($=1){for(var st=t.touchData.startPosition=[null,null,null,null,null,null],Ue=0;Ue=t.touchTapThreshold2}if(de&&t.touchData.cxt){W.preventDefault();var st=W.touches[0].clientX-j,Ue=W.touches[0].clientY-ie,ct=W.touches[1].clientX-j,We=W.touches[1].clientY-ie,ot=X(st,Ue,ct,We),Yt=ot/$,bt=150,Mt=bt*bt,xt=1.5,ut=xt*xt;if(Yt>=ut||ot>=Mt){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Et={originalEvent:W,type:"cxttapend",position:{x:V[0],y:V[1]}};t.touchData.start?(t.touchData.start.unactivate().emit(Et),t.touchData.start=null):oe.emit(Et)}}if(de&&t.touchData.cxt){var Et={originalEvent:W,type:"cxtdrag",position:{x:V[0],y:V[1]}};t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(Et):oe.emit(Et),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var ft=t.findNearestElement(V[0],V[1],!0,!0);(!t.touchData.cxtOver||ft!==t.touchData.cxtOver)&&(t.touchData.cxtOver&&t.touchData.cxtOver.emit({originalEvent:W,type:"cxtdragout",position:{x:V[0],y:V[1]}}),t.touchData.cxtOver=ft,ft&&ft.emit({originalEvent:W,type:"cxtdragover",position:{x:V[0],y:V[1]}}))}else if(de&&W.touches[2]&&oe.boxSelectionEnabled())W.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||oe.emit({originalEvent:W,type:"boxstart",position:{x:V[0],y:V[1]}}),t.touchData.selecting=!0,t.touchData.didSelect=!0,re[4]=1,!re||re.length===0||re[0]===void 0?(re[0]=(V[0]+V[2]+V[4])/3,re[1]=(V[1]+V[3]+V[5])/3,re[2]=(V[0]+V[2]+V[4])/3+1,re[3]=(V[1]+V[3]+V[5])/3+1):(re[2]=(V[0]+V[2]+V[4])/3,re[3]=(V[1]+V[3]+V[5])/3),t.redrawHint("select",!0),t.redraw();else if(de&&W.touches[1]&&!t.touchData.didSelect&&oe.zoomingEnabled()&&oe.panningEnabled()&&oe.userZoomingEnabled()&&oe.userPanningEnabled()){W.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var yt=t.dragData.touchDragEles;if(yt){t.redrawHint("drag",!0);for(var nt=0;nt0&&!t.hoverData.draggingEles&&!t.swipePanning&&t.data.bgActivePosistion!=null&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},"touchmoveHandler"),!1);var se;t.registerBinding(e,"touchcancel",se=o(function(W){var de=t.touchData.start;t.touchData.capture=!1,de&&de.unactivate()},"touchcancelHandler"));var ue,Z,Se,ce;if(t.registerBinding(e,"touchend",ue=o(function(W){var de=t.touchData.start,re=t.touchData.capture;if(re)W.touches.length===0&&(t.touchData.capture=!1),W.preventDefault();else return;var oe=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var V=t.cy,xe=V.zoom(),q=t.touchData.now,pe=t.touchData.earlier;if(W.touches[0]){var ve=t.projectIntoViewport(W.touches[0].clientX,W.touches[0].clientY);q[0]=ve[0],q[1]=ve[1]}if(W.touches[1]){var ve=t.projectIntoViewport(W.touches[1].clientX,W.touches[1].clientY);q[2]=ve[0],q[3]=ve[1]}if(W.touches[2]){var ve=t.projectIntoViewport(W.touches[2].clientX,W.touches[2].clientY);q[4]=ve[0],q[5]=ve[1]}de&&de.unactivate();var Pe;if(t.touchData.cxt){if(Pe={originalEvent:W,type:"cxttapend",position:{x:q[0],y:q[1]}},de?de.emit(Pe):V.emit(Pe),!t.touchData.cxtDragged){var _e={originalEvent:W,type:"cxttap",position:{x:q[0],y:q[1]}};de?de.emit(_e):V.emit(_e)}t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,t.redraw();return}if(!W.touches[2]&&V.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var we=V.collection(t.getAllInBox(oe[0],oe[1],oe[2],oe[3]));oe[0]=void 0,oe[1]=void 0,oe[2]=void 0,oe[3]=void 0,oe[4]=0,t.redrawHint("select",!0),V.emit({type:"boxend",originalEvent:W,position:{x:q[0],y:q[1]}});var Ve=o(function(Mt){return Mt.selectable()&&!Mt.selected()},"eleWouldBeSelected");we.emit("box").stdFilter(Ve).select().emit("boxselect"),we.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if(de?.unactivate(),W.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(!W.touches[1]){if(!W.touches[0]){if(!W.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var De=t.dragData.touchDragEles;if(de!=null){var qe=de._private.grabbed;x(De),t.redrawHint("drag",!0),t.redrawHint("eles",!0),qe&&(de.emit("freeon"),De.emit("free"),t.dragData.didDrag&&(de.emit("dragfreeon"),De.emit("dragfree"))),i(de,["touchend","tapend","vmouseup","tapdragout"],W,{x:q[0],y:q[1]}),de.unactivate(),t.touchData.start=null}else{var at=t.findNearestElement(q[0],q[1],!0,!0);i(at,["touchend","tapend","vmouseup","tapdragout"],W,{x:q[0],y:q[1]})}var Rt=t.touchData.startPosition[0]-q[0],st=Rt*Rt,Ue=t.touchData.startPosition[1]-q[1],ct=Ue*Ue,We=st+ct,ot=We*xe*xe;t.touchData.singleTouchMoved||(de||V.$(":selected").unselect(["tapunselect"]),i(de,["tap","vclick"],W,{x:q[0],y:q[1]}),Z=!1,W.timeStamp-ce<=V.multiClickDebounceTime()?(Se&&clearTimeout(Se),Z=!0,ce=null,i(de,["dbltap","vdblclick"],W,{x:q[0],y:q[1]})):(Se=setTimeout(function(){Z||i(de,["onetap","voneclick"],W,{x:q[0],y:q[1]})},V.multiClickDebounceTime()),ce=W.timeStamp)),de!=null&&!t.dragData.didDrag&&de._private.selectable&&ot"u"){var ae=[],Oe=o(function(W){return{clientX:W.clientX,clientY:W.clientY,force:1,identifier:W.pointerId,pageX:W.pageX,pageY:W.pageY,radiusX:W.width/2,radiusY:W.height/2,screenX:W.screenX,screenY:W.screenY,target:W.target}},"makeTouch"),ge=o(function(W){return{event:W,touch:Oe(W)}},"makePointer"),ze=o(function(W){ae.push(ge(W))},"addPointer"),He=o(function(W){for(var de=0;de0)return H[0]}return null},"getCurveT"),g=Object.keys(p),y=0;y0?m:vme(a,s,e,r,n,i,l,u)},"intersectLine"),checkPoint:o(function(e,r,n,i,a,s,l,u){u=u==="auto"?Vp(i,a):u;var h=2*u;if(Zu(e,r,this.points,s,l,i,a-h,[0,-1],n)||Zu(e,r,this.points,s,l,i-h,a,[0,-1],n))return!0;var f=i/2+2*n,d=a/2+2*n,p=[s-f,l-d,s-f,l,s+f,l,s+f,l-d];return!!(Us(e,r,p)||$p(e,r,h,h,s+i/2-u,l+a/2-u,n)||$p(e,r,h,h,s-i/2+u,l+a/2-u,n))},"checkPoint")}};eh.registerNodeShapes=function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",gs(3,0)),this.generateRoundPolygon("round-triangle",gs(3,0)),this.generatePolygon("rectangle",gs(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",r),this.generateRoundPolygon("round-diamond",r)}this.generatePolygon("pentagon",gs(5,0)),this.generateRoundPolygon("round-pentagon",gs(5,0)),this.generatePolygon("hexagon",gs(6,0)),this.generateRoundPolygon("round-hexagon",gs(6,0)),this.generatePolygon("heptagon",gs(7,0)),this.generateRoundPolygon("round-heptagon",gs(7,0)),this.generatePolygon("octagon",gs(8,0)),this.generateRoundPolygon("round-octagon",gs(8,0));var n=new Array(20);{var i=PP(5,0),a=PP(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var l=0;l=e.deqFastCost*C)break}else if(h){if(b>=e.deqCost*m||b>=e.deqAvgCost*p)break}else if(w>=e.deqNoDrawCost*DP)break;var T=e.deq(n,v,y);if(T.length>0)for(var E=0;E0&&(e.onDeqd(n,g),!h&&e.shouldRedraw(n,g,v,y)&&a())},"dequeue"),l=e.priority||rB;i.beforeRender(s,l(n))}},"setupDequeueingImpl")},"setupDequeueing")},RQe=function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:bS;Mf(this,t),this.idsByKey=new Xc,this.keyForId=new Xc,this.cachesByLvl=new Xc,this.lvls=[],this.getKey=e,this.doesEleInvalidateKey=r}return o(t,"ElementTextureCacheLookup"),If(t,[{key:"getIdsFor",value:o(function(r){r==null&&ai("Can not get id list for null key");var n=this.idsByKey,i=this.idsByKey.get(r);return i||(i=new J1,n.set(r,i)),i},"getIdsFor")},{key:"addIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).add(n)},"addIdForKey")},{key:"deleteIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).delete(n)},"deleteIdForKey")},{key:"getNumberOfIdsForKey",value:o(function(r){return r==null?0:this.getIdsFor(r).size},"getNumberOfIdsForKey")},{key:"updateKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);this.deleteIdForKey(i,n),this.addIdForKey(a,n),this.keyForId.set(n,a)},"updateKeyMappingFor")},{key:"deleteKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteIdForKey(i,n),this.keyForId.delete(n)},"deleteKeyMappingFor")},{key:"keyHasChangedFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);return i!==a},"keyHasChangedFor")},{key:"isInvalid",value:o(function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)},"isInvalid")},{key:"getCachesAt",value:o(function(r){var n=this.cachesByLvl,i=this.lvls,a=n.get(r);return a||(a=new Xc,n.set(r,a),i.push(r)),a},"getCachesAt")},{key:"getCache",value:o(function(r,n){return this.getCachesAt(n).get(r)},"getCache")},{key:"get",value:o(function(r,n){var i=this.getKey(r),a=this.getCache(i,n);return a!=null&&this.updateKeyMappingFor(r),a},"get")},{key:"getForCachedKey",value:o(function(r,n){var i=this.keyForId.get(r.id()),a=this.getCache(i,n);return a},"getForCachedKey")},{key:"hasCache",value:o(function(r,n){return this.getCachesAt(n).has(r)},"hasCache")},{key:"has",value:o(function(r,n){var i=this.getKey(r);return this.hasCache(i,n)},"has")},{key:"setCache",value:o(function(r,n,i){i.key=r,this.getCachesAt(n).set(r,i)},"setCache")},{key:"set",value:o(function(r,n,i){var a=this.getKey(r);this.setCache(a,n,i),this.updateKeyMappingFor(r)},"set")},{key:"deleteCache",value:o(function(r,n){this.getCachesAt(n).delete(r)},"deleteCache")},{key:"delete",value:o(function(r,n){var i=this.getKey(r);this.deleteCache(i,n)},"_delete")},{key:"invalidateKey",value:o(function(r){var n=this;this.lvls.forEach(function(i){return n.deleteCache(r,i)})},"invalidateKey")},{key:"invalidate",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteKeyMappingFor(r);var a=this.doesEleInvalidateKey(r);return a&&this.invalidateKey(i),a||this.getNumberOfIdsForKey(i)===0},"invalidate")}]),t}(),I0e=25,sS=50,yS=-4,XP=3,bge=7.99,NQe=8,MQe=1024,IQe=1024,OQe=1024,PQe=.2,BQe=.8,FQe=10,$Qe=.15,zQe=.1,GQe=.9,VQe=.9,UQe=100,HQe=1,H1={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},WQe=la({getKey:null,doesEleInvalidateKey:bS,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:ume,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),Fb=o(function(e,r){var n=this;n.renderer=e,n.onDequeues=[];var i=WQe(r);rr(n,i),n.lookup=new RQe(i.getKey,i.doesEleInvalidateKey),n.setupDequeueing()},"ElementTextureCache"),qi=Fb.prototype;qi.reasons=H1;qi.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]};qi.getRetiredTextureQueue=function(t){var e=this,r=e.eleImgCaches.retired=e.eleImgCaches.retired||{},n=r[t]=r[t]||[];return n};qi.getElementQueue=function(){var t=this,e=t.eleCacheQueue=t.eleCacheQueue||new i4(function(r,n){return n.reqs-r.reqs});return e};qi.getElementKeyToQueue=function(){var t=this,e=t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{};return e};qi.getElement=function(t,e,r,n,i){var a=this,s=this.renderer,l=s.cy.zoom(),u=this.lookup;if(!e||e.w===0||e.h===0||isNaN(e.w)||isNaN(e.h)||!t.visible()||t.removed()||!a.allowEdgeTxrCaching&&t.isEdge()||!a.allowParentTxrCaching&&t.isParent())return null;if(n==null&&(n=Math.ceil(iB(l*r))),n=bge||n>XP)return null;var h=Math.pow(2,n),f=e.h*h,d=e.w*h,p=s.eleTextBiggerThanMin(t,h);if(!this.isVisible(t,p))return null;var m=u.get(t,n);if(m&&m.invalidated&&(m.invalidated=!1,m.texture.invalidatedWidth-=m.width),m)return m;var g;if(f<=I0e?g=I0e:f<=sS?g=sS:g=Math.ceil(f/sS)*sS,f>OQe||d>IQe)return null;var y=a.getTextureQueue(g),v=y[y.length-2],x=o(function(){return a.recycleTexture(g,d)||a.addTexture(g,d)},"addNewTxr");v||(v=y[y.length-1]),v||(v=x()),v.width-v.usedWidthn;D--)_=a.getElement(t,e,r,D,H1.downscale);I()}else return a.queueElement(t,E.level-1),E;else{var k;if(!w&&!C&&!T)for(var L=n-1;L>=yS;L--){var R=u.get(t,L);if(R){k=R;break}}if(b(k))return a.queueElement(t,n),k;v.context.translate(v.usedWidth,0),v.context.scale(h,h),this.drawElement(v.context,t,e,p,!1),v.context.scale(1/h,1/h),v.context.translate(-v.usedWidth,0)}return m={x:v.usedWidth,texture:v,level:n,scale:h,width:d,height:f,scaledLabelShown:p},v.usedWidth+=Math.ceil(d+NQe),v.eleCaches.push(m),u.set(t,n,m),a.checkTextureFullness(v),m};qi.invalidateElements=function(t){for(var e=0;e=PQe*t.width&&this.retireTexture(t)};qi.checkTextureFullness=function(t){var e=this,r=e.getTextureQueue(t.height);t.usedWidth/t.width>BQe&&t.fullnessChecks>=FQe?Df(r,t):t.fullnessChecks++};qi.retireTexture=function(t){var e=this,r=t.height,n=e.getTextureQueue(r),i=this.lookup;Df(n,t),t.retired=!0;for(var a=t.eleCaches,s=0;s=e)return s.retired=!1,s.usedWidth=0,s.invalidatedWidth=0,s.fullnessChecks=0,nB(s.eleCaches),s.context.setTransform(1,0,0,1,0,0),s.context.clearRect(0,0,s.width,s.height),Df(i,s),n.push(s),s}};qi.queueElement=function(t,e){var r=this,n=r.getElementQueue(),i=r.getElementKeyToQueue(),a=this.getKey(t),s=i[a];if(s)s.level=Math.max(s.level,e),s.eles.merge(t),s.reqs++,n.updateItem(s);else{var l={eles:t.spawn().merge(t),level:e,reqs:1,key:a};n.push(l),i[a]=l}};qi.dequeue=function(t){for(var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),i=[],a=e.lookup,s=0;s0;s++){var l=r.pop(),u=l.key,h=l.eles[0],f=a.hasCache(h,l.level);if(n[u]=null,f)continue;i.push(l);var d=e.getBoundingBox(h);e.getElement(h,d,t,l.level,H1.dequeue)}return i};qi.removeFromQueue=function(t){var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),i=this.getKey(t),a=n[i];a!=null&&(a.eles.length===1?(a.reqs=tB,r.updateItem(a),r.pop(),n[i]=null):a.eles.unmerge(t))};qi.onDequeue=function(t){this.onDequeues.push(t)};qi.offDequeue=function(t){Df(this.onDequeues,t)};qi.setupDequeueing=xge.setupDequeueing({deqRedrawThreshold:UQe,deqCost:$Qe,deqAvgCost:zQe,deqNoDrawCost:GQe,deqFastCost:VQe,deq:o(function(e,r,n){return e.dequeue(r,n)},"deq"),onDeqd:o(function(e,r){for(var n=0;n=YQe||r>_S)return null}n.validateLayersElesOrdering(r,t);var u=n.layersByLevel,h=Math.pow(2,r),f=u[r]=u[r]||[],d,p=n.levelIsComplete(r,t),m,g=o(function(){var I=o(function(O){if(n.validateLayersElesOrdering(O,t),n.levelIsComplete(O,t))return m=u[O],!0},"canUseAsTmpLvl"),D=o(function(O){if(!m)for(var M=r+O;zb<=M&&M<=_S&&!I(M);M+=O);},"checkLvls");D(1),D(-1);for(var k=f.length-1;k>=0;k--){var L=f[k];L.invalid&&Df(f,L)}},"checkTempLevels");if(!p)g();else return f;var y=o(function(){if(!d){d=Hs();for(var I=0;IP0e||L>P0e)return null;var R=k*L;if(R>tZe)return null;var O=n.makeLayer(d,r);if(D!=null){var M=f.indexOf(D)+1;f.splice(M,0,O)}else(I.insert===void 0||I.insert)&&f.unshift(O);return O},"makeLayer");if(n.skipping&&!l)return null;for(var x=null,b=t.length/qQe,w=!l,C=0;C=b||!yme(x.bb,T.boundingBox()))&&(x=v({insert:!0,after:x}),!x))return null;m||w?n.queueLayer(x,T):n.drawEleInLayer(x,T,r,e),x.eles.push(T),A[r]=x}return m||(w?null:f)};Ea.getEleLevelForLayerLevel=function(t,e){return t};Ea.drawEleInLayer=function(t,e,r,n){var i=this,a=this.renderer,s=t.context,l=e.boundingBox();l.w===0||l.h===0||!e.visible()||(r=i.getEleLevelForLayerLevel(r,n),a.setImgSmoothing(s,!1),a.drawCachedElement(s,e,null,null,r,rZe),a.setImgSmoothing(s,!0))};Ea.levelIsComplete=function(t,e){var r=this,n=r.layersByLevel[t];if(!n||n.length===0)return!1;for(var i=0,a=0;a0||s.invalid)return!1;i+=s.eles.length}return i===e.length};Ea.validateLayersElesOrdering=function(t,e){var r=this.layersByLevel[t];if(r)for(var n=0;n0){e=!0;break}}return e};Ea.invalidateElements=function(t){var e=this;t.length!==0&&(e.lastInvalidationTime=Qu(),!(t.length===0||!e.haveLayers())&&e.updateElementsInLayers(t,o(function(n,i,a){e.invalidateLayer(n)},"invalAssocLayers")))};Ea.invalidateLayer=function(t){if(this.lastInvalidationTime=Qu(),!t.invalid){var e=t.level,r=t.eles,n=this.layersByLevel[e];Df(n,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var i=0;i3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l=e._private.rscratch;if(!(a&&!e.visible())&&!(l.badLine||l.allpts==null||isNaN(l.allpts[0]))){var u;r&&(u=r,t.translate(-u.x1,-u.y1));var h=a?e.pstyle("opacity").value:1,f=a?e.pstyle("line-opacity").value:1,d=e.pstyle("curve-style").value,p=e.pstyle("line-style").value,m=e.pstyle("width").pfValue,g=e.pstyle("line-cap").value,y=e.pstyle("line-outline-width").value,v=e.pstyle("line-outline-color").value,x=h*f,b=h*f,w=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;d==="straight-triangle"?(s.eleStrokeStyle(t,e,O),s.drawEdgeTrianglePath(e,t,l.allpts)):(t.lineWidth=m,t.lineCap=g,s.eleStrokeStyle(t,e,O),s.drawEdgePath(e,t,l.allpts,p),t.lineCap="butt")},"drawLine"),C=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;if(t.lineWidth=m+y,t.lineCap=g,y>0)s.colorStrokeStyle(t,v[0],v[1],v[2],O);else{t.lineCap="butt";return}d==="straight-triangle"?s.drawEdgeTrianglePath(e,t,l.allpts):(s.drawEdgePath(e,t,l.allpts,p),t.lineCap="butt")},"drawLineOutline"),T=o(function(){i&&s.drawEdgeOverlay(t,e)},"drawOverlay"),E=o(function(){i&&s.drawEdgeUnderlay(t,e)},"drawUnderlay"),A=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:b;s.drawArrowheads(t,e,O)},"drawArrows"),S=o(function(){s.drawElementText(t,e,null,n)},"drawText");t.lineJoin="round";var _=e.pstyle("ghost").value==="yes";if(_){var I=e.pstyle("ghost-offset-x").pfValue,D=e.pstyle("ghost-offset-y").pfValue,k=e.pstyle("ghost-opacity").value,L=x*k;t.translate(I,D),w(L),A(L),t.translate(-I,-D)}else C();E(),w(),A(),T(),S(),r&&t.translate(u.x1,u.y1)}};kge=o(function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,n){if(n.visible()){var i=n.pstyle("".concat(e,"-opacity")).value;if(i!==0){var a=this,s=a.usePaths(),l=n._private.rscratch,u=n.pstyle("".concat(e,"-padding")).pfValue,h=2*u,f=n.pstyle("".concat(e,"-color")).value;r.lineWidth=h,l.edgeType==="self"&&!s?r.lineCap="butt":r.lineCap="round",a.colorStrokeStyle(r,f[0],f[1],f[2],i),a.drawEdgePath(n,r,l.allpts,"solid")}}}},"drawEdgeOverlayUnderlay");th.drawEdgeOverlay=kge("overlay");th.drawEdgeUnderlay=kge("underlay");th.drawEdgePath=function(t,e,r,n){var i=t._private.rscratch,a=e,s,l=!1,u=this.usePaths(),h=t.pstyle("line-dash-pattern").pfValue,f=t.pstyle("line-dash-offset").pfValue;if(u){var d=r.join("$"),p=i.pathCacheKey&&i.pathCacheKey===d;p?(s=e=i.pathCache,l=!0):(s=e=new Path2D,i.pathCacheKey=d,i.pathCache=s)}if(a.setLineDash)switch(n){case"dotted":a.setLineDash([1,1]);break;case"dashed":a.setLineDash(h),a.lineDashOffset=f;break;case"solid":a.setLineDash([]);break}if(!l&&!i.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(r[0],r[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var m=2;m+35&&arguments[5]!==void 0?arguments[5]:!0,s=this;if(n==null){if(a&&!s.eleTextBiggerThanMin(e))return}else if(n===!1)return;if(e.isNode()){var l=e.pstyle("label");if(!l||!l.value)return;var u=s.getLabelJustification(e);t.textAlign=u,t.textBaseline="bottom"}else{var h=e.element()._private.rscratch.badLine,f=e.pstyle("label"),d=e.pstyle("source-label"),p=e.pstyle("target-label");if(h||(!f||!f.value)&&(!d||!d.value)&&(!p||!p.value))return;t.textAlign="center",t.textBaseline="bottom"}var m=!r,g;r&&(g=r,t.translate(-g.x1,-g.y1)),i==null?(s.drawText(t,e,null,m,a),e.isEdge()&&(s.drawText(t,e,"source",m,a),s.drawText(t,e,"target",m,a))):s.drawText(t,e,i,m,a),r&&t.translate(g.x1,g.y1)};Yp.getFontCache=function(t){var e;this.fontCaches=this.fontCaches||[];for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!0,n=e.pstyle("font-style").strValue,i=e.pstyle("font-size").pfValue+"px",a=e.pstyle("font-family").strValue,s=e.pstyle("font-weight").strValue,l=r?e.effectiveOpacity()*e.pstyle("text-opacity").value:1,u=e.pstyle("text-outline-opacity").value*l,h=e.pstyle("color").value,f=e.pstyle("text-outline-color").value;t.font=n+" "+s+" "+i+" "+a,t.lineJoin="round",this.colorFillStyle(t,h[0],h[1],h[2],l),this.colorStrokeStyle(t,f[0],f[1],f[2],u)};o(RP,"roundRect");Yp.getTextAngle=function(t,e){var r,n=t._private,i=n.rscratch,a=e?e+"-":"",s=t.pstyle(a+"text-rotation");if(s.strValue==="autorotate"){var l=Gl(i,"labelAngle",e);r=t.isEdge()?l:0}else s.strValue==="none"?r=0:r=s.pfValue;return r};Yp.drawText=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=e._private,s=a.rscratch,l=i?e.effectiveOpacity():1;if(!(i&&(l===0||e.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var u=Gl(s,"labelX",r),h=Gl(s,"labelY",r),f,d,p=this.getLabelText(e,r);if(p!=null&&p!==""&&!isNaN(u)&&!isNaN(h)){this.setupTextStyle(t,e,i);var m=r?r+"-":"",g=Gl(s,"labelWidth",r),y=Gl(s,"labelHeight",r),v=e.pstyle(m+"text-margin-x").pfValue,x=e.pstyle(m+"text-margin-y").pfValue,b=e.isEdge(),w=e.pstyle("text-halign").value,C=e.pstyle("text-valign").value;b&&(w="center",C="center"),u+=v,h+=x;var T;switch(n?T=this.getTextAngle(e,r):T=0,T!==0&&(f=u,d=h,t.translate(f,d),t.rotate(T),u=0,h=0),C){case"top":break;case"center":h+=y/2;break;case"bottom":h+=y;break}var E=e.pstyle("text-background-opacity").value,A=e.pstyle("text-border-opacity").value,S=e.pstyle("text-border-width").pfValue,_=e.pstyle("text-background-padding").pfValue,I=e.pstyle("text-background-shape").strValue,D=I.indexOf("round")===0,k=2;if(E>0||S>0&&A>0){var L=u-_;switch(w){case"left":L-=g;break;case"center":L-=g/2;break}var R=h-y-_,O=g+2*_,M=y+2*_;if(E>0){var B=t.fillStyle,F=e.pstyle("text-background-color").value;t.fillStyle="rgba("+F[0]+","+F[1]+","+F[2]+","+E*l+")",D?RP(t,L,R,O,M,k):t.fillRect(L,R,O,M),t.fillStyle=B}if(S>0&&A>0){var P=t.strokeStyle,z=t.lineWidth,$=e.pstyle("text-border-color").value,H=e.pstyle("text-border-style").value;if(t.strokeStyle="rgba("+$[0]+","+$[1]+","+$[2]+","+A*l+")",t.lineWidth=S,t.setLineDash)switch(H){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=S/4,t.setLineDash([]);break;case"solid":t.setLineDash([]);break}if(D?RP(t,L,R,O,M,k,"stroke"):t.strokeRect(L,R,O,M),H==="double"){var Q=S/2;D?RP(t,L+Q,R+Q,O-Q*2,M-Q*2,k,"stroke"):t.strokeRect(L+Q,R+Q,O-Q*2,M-Q*2)}t.setLineDash&&t.setLineDash([]),t.lineWidth=z,t.strokeStyle=P}}var j=2*e.pstyle("text-outline-width").pfValue;if(j>0&&(t.lineWidth=j),e.pstyle("text-wrap").value==="wrap"){var ie=Gl(s,"labelWrapCachedLines",r),ne=Gl(s,"labelLineHeight",r),le=g/2,he=this.getLabelJustification(e);switch(he==="auto"||(w==="left"?he==="left"?u+=-g:he==="center"&&(u+=-le):w==="center"?he==="left"?u+=-le:he==="right"&&(u+=le):w==="right"&&(he==="center"?u+=le:he==="right"&&(u+=g))),C){case"top":h-=(ie.length-1)*ne;break;case"center":case"bottom":h-=(ie.length-1)*ne;break}for(var K=0;K0&&t.strokeText(ie[K],u,h),t.fillText(ie[K],u,h),h+=ne}else j>0&&t.strokeText(p,u,h),t.fillText(p,u,h);T!==0&&(t.rotate(-T),t.translate(-f,-d))}}};ly={};ly.drawNode=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l,u,h=e._private,f=h.rscratch,d=e.position();if(!(!Ct(d.x)||!Ct(d.y))&&!(a&&!e.visible())){var p=a?e.effectiveOpacity():1,m=s.usePaths(),g,y=!1,v=e.padding();l=e.width()+2*v,u=e.height()+2*v;var x;r&&(x=r,t.translate(-x.x1,-x.y1));for(var b=e.pstyle("background-image"),w=b.value,C=new Array(w.length),T=new Array(w.length),E=0,A=0;A0&&arguments[0]!==void 0?arguments[0]:L;s.eleFillStyle(t,e,oe)},"setupShapeColor"),K=o(function(){var oe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:$;s.colorStrokeStyle(t,R[0],R[1],R[2],oe)},"setupBorderColor"),X=o(function(){var oe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ie;s.colorStrokeStyle(t,Q[0],Q[1],Q[2],oe)},"setupOutlineColor"),te=o(function(oe,V,xe,q){var pe=s.nodePathCache=s.nodePathCache||[],ve=cme(xe==="polygon"?xe+","+q.join(","):xe,""+V,""+oe,""+le),Pe=pe[ve],_e,we=!1;return Pe!=null?(_e=Pe,we=!0,f.pathCache=_e):(_e=new Path2D,pe[ve]=f.pathCache=_e),{path:_e,cacheHit:we}},"getPath"),J=e.pstyle("shape").strValue,se=e.pstyle("shape-polygon-points").pfValue;if(m){t.translate(d.x,d.y);var ue=te(l,u,J,se);g=ue.path,y=ue.cacheHit}var Z=o(function(){if(!y){var oe=d;m&&(oe={x:0,y:0}),s.nodeShapes[s.getNodeShape(e)].draw(g||t,oe.x,oe.y,l,u,le,f)}m?t.fill(g):t.fill()},"drawShape"),Se=o(function(){for(var oe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,xe=h.backgrounding,q=0,pe=0;pe0&&arguments[0]!==void 0?arguments[0]:!1,V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasPie(e)&&(s.drawPie(t,e,V),oe&&(m||s.nodeShapes[s.getNodeShape(e)].draw(t,d.x,d.y,l,u,le,f)))},"drawPie"),ae=o(function(){var oe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,V=(D>0?D:-D)*oe,xe=D>0?0:255;D!==0&&(s.colorFillStyle(t,xe,xe,xe,V),m?t.fill(g):t.fill())},"darken"),Oe=o(function(){if(k>0){if(t.lineWidth=k,t.lineCap=B,t.lineJoin=M,t.setLineDash)switch(O){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash(P),t.lineDashOffset=z;break;case"solid":case"double":t.setLineDash([]);break}if(F!=="center"){if(t.save(),t.lineWidth*=2,F==="inside")m?t.clip(g):t.clip();else{var oe=new Path2D;oe.rect(-l/2-k,-u/2-k,l+2*k,u+2*k),oe.addPath(g),t.clip(oe,"evenodd")}m?t.stroke(g):t.stroke(),t.restore()}else m?t.stroke(g):t.stroke();if(O==="double"){t.lineWidth=k/3;var V=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",m?t.stroke(g):t.stroke(),t.globalCompositeOperation=V}t.setLineDash&&t.setLineDash([])}},"drawBorder"),ge=o(function(){if(H>0){if(t.lineWidth=H,t.lineCap="butt",t.setLineDash)switch(j){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([]);break}var oe=d;m&&(oe={x:0,y:0});var V=s.getNodeShape(e),xe=k;F==="inside"&&(xe=0),F==="outside"&&(xe*=2);var q=(l+xe+(H+ne))/l,pe=(u+xe+(H+ne))/u,ve=l*q,Pe=u*pe,_e=s.nodeShapes[V].points,we;if(m){var Ve=te(ve,Pe,V,_e);we=Ve.path}if(V==="ellipse")s.drawEllipsePath(we||t,oe.x,oe.y,ve,Pe);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(V)){var De=0,qe=0,at=0;V==="round-diamond"?De=(xe+ne+H)*1.4:V==="round-heptagon"?(De=(xe+ne+H)*1.075,at=-(xe/2+ne+H)/35):V==="round-hexagon"?De=(xe+ne+H)*1.12:V==="round-pentagon"?(De=(xe+ne+H)*1.13,at=-(xe/2+ne+H)/15):V==="round-tag"?(De=(xe+ne+H)*1.12,qe=(xe/2+H+ne)*.07):V==="round-triangle"&&(De=(xe+ne+H)*(Math.PI/2),at=-(xe+ne/2+H)/Math.PI),De!==0&&(q=(l+De)/l,ve=l*q,["round-hexagon","round-tag"].includes(V)||(pe=(u+De)/u,Pe=u*pe)),le=le==="auto"?bme(ve,Pe):le;for(var Rt=ve/2,st=Pe/2,Ue=le+(xe+H+ne)/2,ct=new Array(_e.length/2),We=new Array(_e.length/2),ot=0;ot<_e.length/2;ot++)ct[ot]={x:oe.x+qe+Rt*_e[ot*2],y:oe.y+at+st*_e[ot*2+1]};var Yt,bt,Mt,xt,ut=ct.length;for(bt=ct[ut-1],Yt=0;Yt0){if(i=i||n.position(),a==null||s==null){var m=n.padding();a=n.width()+2*m,s=n.height()+2*m}l.colorFillStyle(r,f[0],f[1],f[2],h),l.nodeShapes[d].draw(r,i.x,i.y,a+u*2,s+u*2,p),r.fill()}}}},"drawNodeOverlayUnderlay");ly.drawNodeOverlay=Ege("overlay");ly.drawNodeUnderlay=Ege("underlay");ly.hasPie=function(t){return t=t[0],t._private.hasPie};ly.drawPie=function(t,e,r,n){e=e[0],n=n||e.position();var i=e.cy().style(),a=e.pstyle("pie-size"),s=n.x,l=n.y,u=e.width(),h=e.height(),f=Math.min(u,h)/2,d=0,p=this.usePaths();p&&(s=0,l=0),a.units==="%"?f=f*a.pfValue:a.pfValue!==void 0&&(f=a.pfValue/2);for(var m=1;m<=i.pieBackgroundN;m++){var g=e.pstyle("pie-"+m+"-background-size").value,y=e.pstyle("pie-"+m+"-background-color").value,v=e.pstyle("pie-"+m+"-background-opacity").value*r,x=g/100;x+d>1&&(x=1-d);var b=1.5*Math.PI+2*Math.PI*d,w=2*Math.PI*x,C=b+w;g===0||d>=1||d+x>1||(t.beginPath(),t.moveTo(s,l),t.arc(s,l,f,b,C),t.closePath(),this.colorFillStyle(t,y[0],y[1],y[2],v),t.fill(),d+=x)}};ys={},dZe=100;ys.getPixelRatio=function(){var t=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var e=this.cy.window(),r=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(e.devicePixelRatio||1)/r};ys.paintCache=function(t){for(var e=this.paintCaches=this.paintCaches||[],r=!0,n,i=0;ie.minMbLowQualFrames&&(e.motionBlurPxRatio=e.mbPxRBlurry)),e.clearingMotionBlur&&(e.motionBlurPxRatio=1),e.textureDrawLastFrame&&!d&&(f[e.NODE]=!0,f[e.SELECT_BOX]=!0);var b=r.style(),w=r.zoom(),C=s!==void 0?s:w,T=r.pan(),E={x:T.x,y:T.y},A={zoom:w,pan:{x:T.x,y:T.y}},S=e.prevViewport,_=S===void 0||A.zoom!==S.zoom||A.pan.x!==S.pan.x||A.pan.y!==S.pan.y;!_&&!(y&&!g)&&(e.motionBlurPxRatio=1),l&&(E=l),C*=u,E.x*=u,E.y*=u;var I=e.getCachedZSortedEles();function D(K,X,te,J,se){var ue=K.globalCompositeOperation;K.globalCompositeOperation="destination-out",e.colorFillStyle(K,255,255,255,e.motionBlurTransparency),K.fillRect(X,te,J,se),K.globalCompositeOperation=ue}o(D,"mbclear");function k(K,X){var te,J,se,ue;!e.clearingMotionBlur&&(K===h.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]||K===h.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG])?(te={x:T.x*m,y:T.y*m},J=w*m,se=e.canvasWidth*m,ue=e.canvasHeight*m):(te=E,J=C,se=e.canvasWidth,ue=e.canvasHeight),K.setTransform(1,0,0,1,0,0),X==="motionBlur"?D(K,0,0,se,ue):!n&&(X===void 0||X)&&K.clearRect(0,0,se,ue),i||(K.translate(te.x,te.y),K.scale(J,J)),l&&K.translate(l.x,l.y),s&&K.scale(s,s)}if(o(k,"setContextTransform"),d||(e.textureDrawLastFrame=!1),d){if(e.textureDrawLastFrame=!0,!e.textureCache){e.textureCache={},e.textureCache.bb=r.mutableElements().boundingBox(),e.textureCache.texture=e.data.bufferCanvases[e.TEXTURE_BUFFER];var L=e.data.bufferContexts[e.TEXTURE_BUFFER];L.setTransform(1,0,0,1,0,0),L.clearRect(0,0,e.canvasWidth*e.textureMult,e.canvasHeight*e.textureMult),e.render({forcedContext:L,drawOnlyNodeLayer:!0,forcedPxRatio:u*e.textureMult});var A=e.textureCache.viewport={zoom:r.zoom(),pan:r.pan(),width:e.canvasWidth,height:e.canvasHeight};A.mpan={x:(0-A.pan.x)/A.zoom,y:(0-A.pan.y)/A.zoom}}f[e.DRAG]=!1,f[e.NODE]=!1;var R=h.contexts[e.NODE],O=e.textureCache.texture,A=e.textureCache.viewport;R.setTransform(1,0,0,1,0,0),p?D(R,0,0,A.width,A.height):R.clearRect(0,0,A.width,A.height);var M=b.core("outside-texture-bg-color").value,B=b.core("outside-texture-bg-opacity").value;e.colorFillStyle(R,M[0],M[1],M[2],B),R.fillRect(0,0,A.width,A.height);var w=r.zoom();k(R,!1),R.clearRect(A.mpan.x,A.mpan.y,A.width/A.zoom/u,A.height/A.zoom/u),R.drawImage(O,A.mpan.x,A.mpan.y,A.width/A.zoom/u,A.height/A.zoom/u)}else e.textureOnViewport&&!n&&(e.textureCache=null);var F=r.extent(),P=e.pinching||e.hoverData.dragging||e.swipePanning||e.data.wheelZooming||e.hoverData.draggingEles||e.cy.animated(),z=e.hideEdgesOnViewport&&P,$=[];if($[e.NODE]=!f[e.NODE]&&p&&!e.clearedForMotionBlur[e.NODE]||e.clearingMotionBlur,$[e.NODE]&&(e.clearedForMotionBlur[e.NODE]=!0),$[e.DRAG]=!f[e.DRAG]&&p&&!e.clearedForMotionBlur[e.DRAG]||e.clearingMotionBlur,$[e.DRAG]&&(e.clearedForMotionBlur[e.DRAG]=!0),f[e.NODE]||i||a||$[e.NODE]){var H=p&&!$[e.NODE]&&m!==1,R=n||(H?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]:h.contexts[e.NODE]),Q=p&&!H?"motionBlur":void 0;k(R,Q),z?e.drawCachedNodes(R,I.nondrag,u,F):e.drawLayeredElements(R,I.nondrag,u,F),e.debug&&e.drawDebugPoints(R,I.nondrag),!i&&!p&&(f[e.NODE]=!1)}if(!a&&(f[e.DRAG]||i||$[e.DRAG])){var H=p&&!$[e.DRAG]&&m!==1,R=n||(H?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG]:h.contexts[e.DRAG]);k(R,p&&!H?"motionBlur":void 0),z?e.drawCachedNodes(R,I.drag,u,F):e.drawCachedElements(R,I.drag,u,F),e.debug&&e.drawDebugPoints(R,I.drag),!i&&!p&&(f[e.DRAG]=!1)}if(this.drawSelectionRectangle(t,k),p&&m!==1){var j=h.contexts[e.NODE],ie=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_NODE],ne=h.contexts[e.DRAG],le=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_DRAG],he=o(function(X,te,J){X.setTransform(1,0,0,1,0,0),J||!x?X.clearRect(0,0,e.canvasWidth,e.canvasHeight):D(X,0,0,e.canvasWidth,e.canvasHeight);var se=m;X.drawImage(te,0,0,e.canvasWidth*se,e.canvasHeight*se,0,0,e.canvasWidth,e.canvasHeight)},"drawMotionBlur");(f[e.NODE]||$[e.NODE])&&(he(j,ie,$[e.NODE]),f[e.NODE]=!1),(f[e.DRAG]||$[e.DRAG])&&(he(ne,le,$[e.DRAG]),f[e.DRAG]=!1)}e.prevViewport=A,e.clearingMotionBlur&&(e.clearingMotionBlur=!1,e.motionBlurCleared=!0,e.motionBlur=!0),p&&(e.motionBlurTimeout=setTimeout(function(){e.motionBlurTimeout=null,e.clearedForMotionBlur[e.NODE]=!1,e.clearedForMotionBlur[e.DRAG]=!1,e.motionBlur=!1,e.clearingMotionBlur=!d,e.mbFrames=0,f[e.NODE]=!0,f[e.DRAG]=!0,e.redraw()},dZe)),n||r.emit("render")};ys.drawSelectionRectangle=function(t,e){var r=this,n=r.cy,i=r.data,a=n.style(),s=t.drawOnlyNodeLayer,l=t.drawAllLayers,u=i.canvasNeedsRedraw,h=t.forcedContext;if(r.showFps||!s&&u[r.SELECT_BOX]&&!l){var f=h||i.contexts[r.SELECT_BOX];if(e(f),r.selection[4]==1&&(r.hoverData.selecting||r.touchData.selecting)){var d=r.cy.zoom(),p=a.core("selection-box-border-width").value/d;f.lineWidth=p,f.fillStyle="rgba("+a.core("selection-box-color").value[0]+","+a.core("selection-box-color").value[1]+","+a.core("selection-box-color").value[2]+","+a.core("selection-box-opacity").value+")",f.fillRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]),p>0&&(f.strokeStyle="rgba("+a.core("selection-box-border-color").value[0]+","+a.core("selection-box-border-color").value[1]+","+a.core("selection-box-border-color").value[2]+","+a.core("selection-box-opacity").value+")",f.strokeRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]))}if(i.bgActivePosistion&&!r.hoverData.selecting){var d=r.cy.zoom(),m=i.bgActivePosistion;f.fillStyle="rgba("+a.core("active-bg-color").value[0]+","+a.core("active-bg-color").value[1]+","+a.core("active-bg-color").value[2]+","+a.core("active-bg-opacity").value+")",f.beginPath(),f.arc(m.x,m.y,a.core("active-bg-size").pfValue/d,0,2*Math.PI),f.fill()}var g=r.lastRedrawTime;if(r.showFps&&g){g=Math.round(g);var y=Math.round(1e3/g),v="1 frame = "+g+" ms = "+y+" fps";if(f.setTransform(1,0,0,1,0,0),f.fillStyle="rgba(255, 0, 0, 0.75)",f.strokeStyle="rgba(255, 0, 0, 0.75)",f.font="30px Arial",!Nb){var x=f.measureText(v);Nb=x.actualBoundingBoxAscent}f.fillText(v,0,Nb);var b=60;f.strokeRect(0,Nb+10,250,20),f.fillRect(0,Nb+10,250*Math.min(y/b,1),20)}l||(u[r.SELECT_BOX]=!1)}};o(z0e,"compileShader");o(pZe,"createProgram");o(mZe,"createTextureCanvas");o(wB,"getEffectivePanZoom");o(NP,"modelToRenderedPosition");o(oS,"toWebGLColor");o(lS,"indexToVec4");o(gZe,"vec4ToIndex");o(yZe,"createTexture");o(Sge,"getTypeInfo");o(Cge,"createTypedArray");o(vZe,"createTypedArrayView");o(xZe,"createBufferStaticDraw");o(po,"createBufferDynamicDraw");o(bZe,"createPickingFrameBuffer");G0e=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});o(Gb,"create");o(Age,"identity");o(wZe,"multiply");o(DS,"translate");o(_ge,"rotate");o(TB,"scale");o(TZe,"projection");Vb={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},Mb=la({getKey:null,drawElement:null,getBoundingBox:null,getRotation:null,getRotationPoint:null,getRotationOffset:null,isVisible:null,getPadding:null}),kZe=function(){function t(e,r){Mf(this,t),this.debugID=Math.floor(Math.random()*1e4),this.r=e,this.atlasSize=r.webglTexSize,this.rows=r.webglTexRows,this.enableWrapping=r.enableWrapping,this.texHeight=Math.floor(this.atlasSize/this.rows),this.maxTexWidth=this.atlasSize,this.texture=null,this.canvas=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=r.createTextureCanvas(e,this.atlasSize,this.atlasSize),this.scratch=r.createTextureCanvas(e,this.atlasSize,this.texHeight,"scratch")}return o(t,"Atlas"),If(t,[{key:"getKeys",value:o(function(){return new Set(this.keyToLocation.keys())},"getKeys")},{key:"getScale",value:o(function(r){var n=r.w,i=r.h,a=this.texHeight,s=this.maxTexWidth,l=a/i,u=n*l,h=i*l;return u>s&&(l=s/n,u=n*l,h=i*l),{scale:l,texW:u,texH:h}},"getScale")},{key:"draw",value:o(function(r,n,i){var a=this,s=this.atlasSize,l=this.rows,u=this.texHeight,h=this.getScale(n),f=h.scale,d=h.texW,p=h.texH,m=[null,null],g=o(function(w,C){if(i&&C){var T=C.context,E=w.x,A=w.row,S=E,_=u*A;T.save(),T.translate(S,_),T.scale(f,f),i(T,n),T.restore()}},"drawAt"),y=o(function(){g(a.freePointer,a.canvas),m[0]={x:a.freePointer.x,y:a.freePointer.row*u,w:d,h:p},m[1]={x:a.freePointer.x+d,y:a.freePointer.row*u,w:0,h:p},a.freePointer.x+=d,a.freePointer.x==s&&(a.freePointer.x=0,a.freePointer.row++)},"drawNormal"),v=o(function(){var w=a.scratch,C=a.canvas;w.clear(),g({x:0,row:0},w);var T=s-a.freePointer.x,E=d-T,A=u;{var S=a.freePointer.x,_=a.freePointer.row*u,I=T;C.context.drawImage(w,0,0,I,A,S,_,I,A),m[0]={x:S,y:_,w:I,h:p}}{var D=T,k=(a.freePointer.row+1)*u,L=E;C&&C.context.drawImage(w,D,0,L,A,0,k,L,A),m[1]={x:0,y:k,w:L,h:p}}a.freePointer.x=E,a.freePointer.row++},"drawWrapped"),x=o(function(){a.freePointer.x=0,a.freePointer.row++},"moveToStartOfNextRow");if(this.freePointer.x+d<=s)y();else{if(this.freePointer.row>=l-1)return!1;this.freePointer.x===s?(x(),y()):this.enableWrapping?v():(x(),y())}return this.keyToLocation.set(r,m),this.needsBuffer=!0,m},"draw")},{key:"getOffsets",value:o(function(r){return this.keyToLocation.get(r)},"getOffsets")},{key:"isEmpty",value:o(function(){return this.freePointer.x===0&&this.freePointer.row===0},"isEmpty")},{key:"canFit",value:o(function(r){var n=this.atlasSize,i=this.rows,a=this.getScale(r),s=a.texW;return this.freePointer.x+s>n?this.freePointer.row1&&arguments[1]!==void 0?arguments[1]:{},i=n.forceRedraw,a=i===void 0?!1:i,s=n.filterEle,l=s===void 0?function(){return!0}:s,u=n.filterType,h=u===void 0?function(){return!0}:u,f=!1,d=mo(r),p;try{for(d.s();!(p=d.n()).done;){var m=p.value;if(l(m)){var g=m.id(),y=mo(this.getRenderTypes()),v;try{for(y.s();!(v=y.n()).done;){var x=v.value;if(h(x.type)){var b=x.getKey(m);a?(x.atlasCollection.deleteKey(g,b),x.atlasCollection.styleKeyNeedsRedraw.add(b),f=!0):f|=x.atlasCollection.checkKeyIsInvalid(g,b)}}}catch(w){y.e(w)}finally{y.f()}}}}catch(w){d.e(w)}finally{d.f()}return f},"invalidate")},{key:"gc",value:o(function(){var r=mo(this.getRenderTypes()),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;i.atlasCollection.gc()}}catch(a){r.e(a)}finally{r.f()}},"gc")},{key:"isRenderable",value:o(function(r,n){var i=this.getRenderTypeOpts(n);return i&&i.isVisible(r)},"isRenderable")},{key:"startBatch",value:o(function(){this.batchAtlases=[]},"startBatch")},{key:"getAtlasCount",value:o(function(){return this.batchAtlases.length},"getAtlasCount")},{key:"getAtlases",value:o(function(){return this.batchAtlases},"getAtlases")},{key:"getOrCreateAtlas",value:o(function(r,n,i){var a=this.renderTypes.get(i),s=a.getKey(r),l=r.id();return a.atlasCollection.draw(l,s,n,function(u){a.drawElement(u,r,n,!0,!0)})},"getOrCreateAtlas")},{key:"getAtlasIndexForBatch",value:o(function(r){var n=this.batchAtlases.indexOf(r);if(n<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)return;this.batchAtlases.push(r),n=this.batchAtlases.length-1}return n},"getAtlasIndexForBatch")},{key:"getIndexArray",value:o(function(){return Array.from({length:this.maxAtlases},function(r,n){return n})},"getIndexArray")},{key:"getAtlasInfo",value:o(function(r,n){var i=this.renderTypes.get(n),a=i.getBoundingBox(r),s=this.getOrCreateAtlas(r,a,n),l=this.getAtlasIndexForBatch(s);if(l!==void 0){var u=i.getKey(r),h=s.getOffsets(u),f=_i(h,2),d=f[0],p=f[1];return{atlasID:l,tex:d,tex1:d,tex2:p,bb:a,type:n,styleKey:u}}},"getAtlasInfo")},{key:"canAddToCurrentBatch",value:o(function(r,n){if(this.batchAtlases.length===this.maxAtlasesPerBatch){var i=this.renderTypes.get(n),a=i.getKey(r),s=i.atlasCollection.getAtlas(a);return s&&this.batchAtlases.includes(s)}return!0},"canAddToCurrentBatch")},{key:"setTransformMatrix",value:o(function(r,n,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,s=n.bb,l=n.type,u=n.tex1,h=n.tex2,f=this.getRenderTypeOpts(l),d=f.getPadding?f.getPadding(i):0,p=u.w/(u.w+h.w);a||(p=1-p);var m=this.getAdjustedBB(s,d,a,p),g,y;Age(r);var v=f.getRotation?f.getRotation(i):0;if(v!==0){var x=f.getRotationPoint(i),b=x.x,w=x.y;DS(r,r,[b,w]),_ge(r,r,v);var C=f.getRotationOffset(i);g=C.x+m.xOffset,y=C.y}else g=m.x1,y=m.y1;DS(r,r,[g,y]),TB(r,r,[m.w,m.h])},"setTransformMatrix")},{key:"getTransformMatrix",value:o(function(r,n){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=Gb();return this.setTransformMatrix(a,r,n,i),a},"getTransformMatrix")},{key:"getAdjustedBB",value:o(function(r,n,i,a){var s=r.x1,l=r.y1,u=r.w,h=r.h;n&&(s-=n,l-=n,u+=2*n,h+=2*n);var f=0,d=u*a;return i&&a<1?u=d:!i&&a<1&&(f=u-d,s+=f,u=d),{x1:s,y1:l,w:u,h,xOffset:f}},"getAdjustedBB")},{key:"getDebugInfo",value:o(function(){var r=[],n=mo(this.renderTypes),i;try{for(n.s();!(i=n.n()).done;){var a=_i(i.value,2),s=a[0],l=a[1],u=l.atlasCollection.getCounts(),h=u.keyCount,f=u.atlasCount;r.push({type:s,keyCount:h,atlasCount:f})}}catch(d){n.e(d)}finally{n.f()}return r},"getDebugInfo")}]),t}(),MP=0,V0e=1,U0e=2,IP=3,AZe=function(){function t(e,r,n){Mf(this,t),this.r=e,this.gl=r,this.maxInstances=n.webglBatchSize,this.maxAtlases=n.webglTexPerBatch,this.atlasSize=n.webglTexSize,this.bgColor=n.bgColor,n.enableWrapping=!0,n.createTextureCanvas=mZe,this.atlasManager=new CZe(e,n),this.program=this.createShaderProgram(Vb.SCREEN),this.pickingProgram=this.createShaderProgram(Vb.PICKING),this.vao=this.createVAO(),this.debugInfo=[]}return o(t,"ElementDrawingWebGL"),If(t,[{key:"addTextureRenderType",value:o(function(r,n){this.atlasManager.addRenderType(r,n)},"addTextureRenderType")},{key:"invalidate",value:o(function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=n.type,a=this.atlasManager;return i?a.invalidate(r,{filterType:o(function(l){return l===i},"filterType"),forceRedraw:!0}):a.invalidate(r)},"invalidate")},{key:"gc",value:o(function(){this.atlasManager.gc()},"gc")},{key:"createShaderProgram",value:o(function(r){var n=this.gl,i=`#version 300 es + precision highp float; + + uniform mat3 uPanZoomMatrix; + uniform int uAtlasSize; + + // instanced + in vec2 aPosition; + + // what are we rendering? + in int aVertType; + + // for picking + in vec4 aIndex; + + // For textures + in int aAtlasId; // which shader unit/atlas to use + in vec4 aTex1; // x/y/w/h of texture in atlas + in vec4 aTex2; + + // for any transforms that are needed + in vec4 aScaleRotate1; // vectors use fewer attributes than matrices + in vec2 aTranslate1; + in vec4 aScaleRotate2; + in vec2 aTranslate2; + + // for edges + in vec4 aPointAPointB; + in vec4 aPointCPointD; + in float aLineWidth; + in vec4 aEdgeColor; + + out vec2 vTexCoord; + out vec4 vEdgeColor; + flat out int vAtlasId; + flat out vec4 vIndex; + flat out int vVertType; + + void main(void) { + int vid = gl_VertexID; + vec2 position = aPosition; + + if(aVertType == `.concat(MP,`) { + float texX; + float texY; + float texW; + float texH; + mat3 texMatrix; + + int vid = gl_VertexID; + if(vid <= 5) { + texX = aTex1.x; + texY = aTex1.y; + texW = aTex1.z; + texH = aTex1.w; + texMatrix = mat3( + vec3(aScaleRotate1.xy, 0.0), + vec3(aScaleRotate2.zw, 0.0), + vec3(aTranslate1, 1.0) + ); + } else { + texX = aTex2.x; + texY = aTex2.y; + texW = aTex2.z; + texH = aTex2.w; + texMatrix = mat3( + vec3(aScaleRotate2.xy, 0.0), + vec3(aScaleRotate2.zw, 0.0), + vec3(aTranslate2, 1.0) + ); + } + + if(vid == 1 || vid == 2 || vid == 4 || vid == 7 || vid == 8 || vid == 10) { + texX += texW; + } + if(vid == 2 || vid == 4 || vid == 5 || vid == 8 || vid == 10 || vid == 11) { + texY += texH; + } + + float d = float(uAtlasSize); + vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1 + + gl_Position = vec4(uPanZoomMatrix * texMatrix * vec3(position, 1.0), 1.0); + } + else if(aVertType == `).concat(V0e,` && vid < 6) { + vec2 source = aPointAPointB.xy; + vec2 target = aPointAPointB.zw; + + // adjust the geometry so that the line is centered on the edge + position.y = position.y - 0.5; + + vec2 xBasis = target - source; + vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x)); + vec2 point = source + xBasis * position.x + yBasis * aLineWidth * position.y; + + gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0); + vEdgeColor = aEdgeColor; + } + else if(aVertType == `).concat(U0e,` && vid < 6) { + vec2 pointA = aPointAPointB.xy; + vec2 pointB = aPointAPointB.zw; + vec2 pointC = aPointCPointD.xy; + vec2 pointD = aPointCPointD.zw; + + // adjust the geometry so that the line is centered on the edge + position.y = position.y - 0.5; + + vec2 p0 = pointA; + vec2 p1 = pointB; + vec2 p2 = pointC; + vec2 pos = position; + if(position.x == 1.0) { + p0 = pointD; + p1 = pointC; + p2 = pointB; + pos = vec2(0.0, -position.y); + } + + vec2 p01 = p1 - p0; + vec2 p12 = p2 - p1; + vec2 p21 = p1 - p2; + + // Find the normal vector. + vec2 tangent = normalize(normalize(p12) + normalize(p01)); + vec2 normal = vec2(-tangent.y, tangent.x); + + // Find the vector perpendicular to p0 -> p1. + vec2 p01Norm = normalize(vec2(-p01.y, p01.x)); + + // Determine the bend direction. + float sigma = sign(dot(p01 + p21, normal)); + float width = aLineWidth; + + if(sign(pos.y) == -sigma) { + // This is an intersecting vertex. Adjust the position so that there's no overlap. + vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm); + gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); + } else { + // This is a non-intersecting vertex. Treat it like a mitre join. + vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm); + gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); + } + + vEdgeColor = aEdgeColor; + } + else if(aVertType == `).concat(IP,` && vid < 3) { + // massage the first triangle into an edge arrow + if(vid == 0) + position = vec2(-0.15, -0.3); + if(vid == 1) + position = vec2( 0.0, 0.0); + if(vid == 2) + position = vec2( 0.15, -0.3); + + mat3 transform = mat3( + vec3(aScaleRotate1.xy, 0.0), + vec3(aScaleRotate1.zw, 0.0), + vec3(aTranslate1, 1.0) + ); + gl_Position = vec4(uPanZoomMatrix * transform * vec3(position, 1.0), 1.0); + vEdgeColor = aEdgeColor; + } else { + gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space + } + + vAtlasId = aAtlasId; + vIndex = aIndex; + vVertType = aVertType; + } + `),a=this.atlasManager.getIndexArray(),s=`#version 300 es + precision highp float; + + // define texture unit for each node in the batch + `.concat(a.map(function(h){return"uniform sampler2D uTexture".concat(h,";")}).join(` + `),` + + uniform vec4 uBGColor; + + in vec2 vTexCoord; + in vec4 vEdgeColor; + flat in int vAtlasId; + flat in vec4 vIndex; + flat in int vVertType; + + out vec4 outColor; + + void main(void) { + if(vVertType == `).concat(MP,`) { + `).concat(a.map(function(h){return"if(vAtlasId == ".concat(h,") outColor = texture(uTexture").concat(h,", vTexCoord);")}).join(` + else `),` + } else if(vVertType == `).concat(IP,`) { + // blend arrow color with background (using premultiplied alpha) + outColor.rgb = vEdgeColor.rgb + (uBGColor.rgb * (1.0 - vEdgeColor.a)); + outColor.a = 1.0; // make opaque, masks out line under arrow + } else { + outColor = vEdgeColor; + } + + `).concat(r.picking?`if(outColor.a == 0.0) discard; + else outColor = vIndex;`:"",` + } + `),l=pZe(n,i,s);l.aPosition=n.getAttribLocation(l,"aPosition"),l.aIndex=n.getAttribLocation(l,"aIndex"),l.aVertType=n.getAttribLocation(l,"aVertType"),l.aAtlasId=n.getAttribLocation(l,"aAtlasId"),l.aTex1=n.getAttribLocation(l,"aTex1"),l.aTex2=n.getAttribLocation(l,"aTex2"),l.aScaleRotate1=n.getAttribLocation(l,"aScaleRotate1"),l.aTranslate1=n.getAttribLocation(l,"aTranslate1"),l.aScaleRotate2=n.getAttribLocation(l,"aScaleRotate2"),l.aTranslate2=n.getAttribLocation(l,"aTranslate2"),l.aPointAPointB=n.getAttribLocation(l,"aPointAPointB"),l.aPointCPointD=n.getAttribLocation(l,"aPointCPointD"),l.aLineWidth=n.getAttribLocation(l,"aLineWidth"),l.aEdgeColor=n.getAttribLocation(l,"aEdgeColor"),l.uPanZoomMatrix=n.getUniformLocation(l,"uPanZoomMatrix"),l.uAtlasSize=n.getUniformLocation(l,"uAtlasSize"),l.uBGColor=n.getUniformLocation(l,"uBGColor"),l.uTextures=[];for(var u=0;u2&&arguments[2]!==void 0?arguments[2]:Vb.SCREEN;this.panZoomMatrix=r,this.debugInfo=n,this.renderTarget=i,this.startBatch()},"startFrame")},{key:"startBatch",value:o(function(){this.instanceCount=0,this.atlasManager.startBatch()},"startBatch")},{key:"endFrame",value:o(function(){this.endBatch()},"endFrame")},{key:"getTempMatrix",value:o(function(){return this.tempMatrix=this.tempMatrix||Gb()},"getTempMatrix")},{key:"drawTexture",value:o(function(r,n,i){var a=this.atlasManager;if(a.isRenderable(r,i)){a.canAddToCurrentBatch(r,i)||this.endBatch();var s=this.instanceCount;this.vertTypeBuffer.getView(s)[0]=MP;var l=this.indexBuffer.getView(s);lS(n,l);var u=a.getAtlasInfo(r,i,u),h=u.atlasID,f=u.tex1,d=u.tex2,p=this.atlasIdBuffer.getView(s);p[0]=h;var m=this.tex1Buffer.getView(s);m[0]=f.x,m[1]=f.y,m[2]=f.w,m[3]=f.h;var g=this.tex2Buffer.getView(s);g[0]=d.x,g[1]=d.y,g[2]=d.w,g[3]=d.h;for(var y=this.getTempMatrix(),v=0,x=[1,2];v=this.maxInstances&&this.endBatch()}},"drawTexture")},{key:"drawEdgeArrow",value:o(function(r,n,i){var a=r._private.rscratch,s,l,u;if(i==="source"?(s=a.arrowStartX,l=a.arrowStartY,u=a.srcArrowAngle):(s=a.arrowEndX,l=a.arrowEndY,u=a.tgtArrowAngle),!(isNaN(s)||s==null||isNaN(l)||l==null||isNaN(u)||u==null)){var h=r.pstyle(i+"-arrow-shape").value;if(h!=="none"){var f=r.pstyle(i+"-arrow-color").value,d=r.pstyle("opacity").value,p=r.pstyle("line-opacity").value,m=d*p,g=r.pstyle("width").pfValue,y=r.pstyle("arrow-scale").value,v=this.r.getArrowWidth(g,y),x=this.getTempMatrix();Age(x),DS(x,x,[s,l]),TB(x,x,[v,v]),_ge(x,x,u);var b=this.instanceCount;this.vertTypeBuffer.getView(b)[0]=IP;var w=this.indexBuffer.getView(b);lS(n,w);var C=this.edgeColorBuffer.getView(b);oS(f,m,C);var T=this.scaleRotate1Buffer.getView(b);T[0]=x[0],T[1]=x[1],T[2]=x[3],T[3]=x[4];var E=this.translate1Buffer.getView(b);E[0]=x[6],E[1]=x[7],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}},"drawEdgeArrow")},{key:"drawEdgeLine",value:o(function(r,n){var i=r.pstyle("opacity").value,a=r.pstyle("line-opacity").value,s=r.pstyle("width").pfValue,l=r.pstyle("line-color").value,u=i*a,h=this.getEdgePoints(r);if(h.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),h.length==4){var f=this.instanceCount;this.vertTypeBuffer.getView(f)[0]=V0e;var d=this.indexBuffer.getView(f);lS(n,d);var p=this.edgeColorBuffer.getView(f);oS(l,u,p);var m=this.lineWidthBuffer.getView(f);m[0]=s;var g=this.pointAPointBBuffer.getView(f);g[0]=h[0],g[1]=h[1],g[2]=h[2],g[3]=h[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var y=0;y=this.maxInstances&&this.endBatch()}},"drawEdgeLine")},{key:"getEdgePoints",value:o(function(r){var n=r._private.rscratch,i=n.allpts;if(i.length==4)return i;var a=this.getNumSegments(r);return this.getCurveSegmentPoints(i,a)},"getEdgePoints")},{key:"getNumSegments",value:o(function(r){var n=15;return Math.min(Math.max(n,5),this.maxInstances)},"getNumSegments")},{key:"getCurveSegmentPoints",value:o(function(r,n){if(r.length==4)return r;for(var i=Array((n+1)*2),a=0;a<=n;a++)if(a==0)i[0]=r[0],i[1]=r[1];else if(a==n)i[a*2]=r[r.length-2],i[a*2+1]=r[r.length-1];else{var s=a/n;this.setCurvePoint(r,s,i,a*2)}return i},"getCurveSegmentPoints")},{key:"setCurvePoint",value:o(function(r,n,i,a){if(r.length<=2)i[a]=r[0],i[a+1]=r[1];else{for(var s=Array(r.length-2),l=0;l0},"isVisible")},{key:"getStyle",value:o(function(r,n){var i=n.pstyle("".concat(r,"-opacity")).value,a=n.pstyle("".concat(r,"-color")).value,s=n.pstyle("".concat(r,"-shape")).value;return{opacity:i,color:a,shape:s}},"getStyle")},{key:"getPadding",value:o(function(r,n){return n.pstyle("".concat(r,"-padding")).pfValue},"getPadding")},{key:"draw",value:o(function(r,n,i,a){if(this.isVisible(r,i)){var s=this.r,l=a.w,u=a.h,h=l/2,f=u/2,d=this.getStyle(r,i),p=d.shape,m=d.color,g=d.opacity;n.save(),n.fillStyle=H0e(m,g),p==="round-rectangle"||p==="roundrectangle"?s.drawRoundRectanglePath(n,h,f,l,u,"auto"):p==="ellipse"&&s.drawEllipsePath(n,h,f,l,u),n.fill(),n.restore()}},"draw")}]),t}();o(DZe,"getBGColor");Dge={};Dge.initWebgl=function(t,e){var r=this,n=r.data.contexts[r.WEBGL],i=t.cy.container();t.bgColor=DZe(i),t.webglTexSize=Math.min(t.webglTexSize,n.getParameter(n.MAX_TEXTURE_SIZE)),t.webglTexRows=Math.min(t.webglTexRows,54),t.webglBatchSize=Math.min(t.webglBatchSize,16384),t.webglTexPerBatch=Math.min(t.webglTexPerBatch,n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS)),r.webglDebug=t.webglDebug,r.webglDebugShowAtlases=t.webglDebugShowAtlases,console.log("max texture units",n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS)),console.log("max texture size",n.getParameter(n.MAX_TEXTURE_SIZE)),console.log("webgl options",t),r.pickingFrameBuffer=bZe(n),r.pickingFrameBuffer.needsDraw=!0;var a=o(function(f){return r.getTextAngle(f,null)},"getLabelRotation"),s=o(function(f){var d=f.pstyle("label");return d&&d.value},"isLabelVisible");r.eleDrawing=new AZe(r,n,t);var l=new _Ze(r);r.eleDrawing.addTextureRenderType("node-body",Mb({getKey:e.getStyleKey,getBoundingBox:e.getElementBox,drawElement:e.drawElement,isVisible:o(function(f){return f.visible()},"isVisible")})),r.eleDrawing.addTextureRenderType("node-label",Mb({getKey:e.getLabelKey,getBoundingBox:e.getLabelBox,drawElement:e.drawLabel,getRotation:a,getRotationPoint:e.getLabelRotationPoint,getRotationOffset:e.getLabelRotationOffset,isVisible:s})),r.eleDrawing.addTextureRenderType("node-overlay",Mb({getBoundingBox:e.getElementBox,getKey:o(function(f){return l.getStyleKey("overlay",f)},"getKey"),drawElement:o(function(f,d,p){return l.draw("overlay",f,d,p)},"drawElement"),isVisible:o(function(f){return l.isVisible("overlay",f)},"isVisible"),getPadding:o(function(f){return l.getPadding("overlay",f)},"getPadding")})),r.eleDrawing.addTextureRenderType("node-underlay",Mb({getBoundingBox:e.getElementBox,getKey:o(function(f){return l.getStyleKey("underlay",f)},"getKey"),drawElement:o(function(f,d,p){return l.draw("underlay",f,d,p)},"drawElement"),isVisible:o(function(f){return l.isVisible("underlay",f)},"isVisible"),getPadding:o(function(f){return l.getPadding("underlay",f)},"getPadding")})),r.eleDrawing.addTextureRenderType("edge-label",Mb({getKey:e.getLabelKey,getBoundingBox:e.getLabelBox,drawElement:e.drawLabel,getRotation:a,getRotationPoint:e.getLabelRotationPoint,getRotationOffset:e.getLabelRotationOffset,isVisible:s}));var u=n4(function(){console.log("garbage collect flag set"),r.data.gc=!0},1e4);r.onUpdateEleCalcs(function(h,f){var d=!1;f&&f.length>0&&(d|=r.eleDrawing.invalidate(f)),d&&u()}),LZe(r)};o(LZe,"overrideCanvasRendererFunctions");o(RZe,"clearWebgl");o(NZe,"clearCanvas");o(MZe,"createPanZoomMatrix");o(Lge,"setContextTransform");o(IZe,"drawSelectionRectangle");o(OZe,"drawAxes");o(PZe,"drawAtlases");o(BZe,"getPickingIndexes");o(FZe,"findNearestElementsWebgl");o(Rge,"renderWebgl");Pf={};Pf.drawPolygonPath=function(t,e,r,n,i,a){var s=n/2,l=i/2;t.beginPath&&t.beginPath(),t.moveTo(e+s*a[0],r+l*a[1]);for(var u=1;u0&&s>0){m.clearRect(0,0,a,s),m.globalCompositeOperation="source-over";var g=this.getCachedZSortedEles();if(t.full)m.translate(-n.x1*h,-n.y1*h),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(n.x1*h,n.y1*h);else{var y=e.pan(),v={x:y.x*h,y:y.y*h};h*=e.zoom(),m.translate(v.x,v.y),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(-v.x,-v.y)}t.bg&&(m.globalCompositeOperation="destination-over",m.fillStyle=t.bg,m.rect(0,0,a,s),m.fill())}return p};o($Ze,"b64ToBlob");o(Y0e,"b64UriToB64");o(Mge,"output");c4.png=function(t){return Mge(t,this.bufferCanvasImage(t),"image/png")};c4.jpg=function(t){return Mge(t,this.bufferCanvasImage(t),"image/jpeg")};Ige={};Ige.nodeShapeImpl=function(t,e,r,n,i,a,s,l){switch(t){case"ellipse":return this.drawEllipsePath(e,r,n,i,a);case"polygon":return this.drawPolygonPath(e,r,n,i,a,s);case"round-polygon":return this.drawRoundPolygonPath(e,r,n,i,a,s,l);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(e,r,n,i,a,l);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(e,r,n,i,a,s,l);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(e,r,n,i,a,l);case"barrel":return this.drawBarrelPath(e,r,n,i,a)}};zZe=Oge,Er=Oge.prototype;Er.CANVAS_LAYERS=3;Er.SELECT_BOX=0;Er.DRAG=1;Er.NODE=2;Er.WEBGL=3;Er.CANVAS_TYPES=["2d","2d","2d","webgl2"];Er.BUFFER_COUNT=3;Er.TEXTURE_BUFFER=0;Er.MOTIONBLUR_BUFFER_NODE=1;Er.MOTIONBLUR_BUFFER_DRAG=2;o(Oge,"CanvasRenderer");Er.redrawHint=function(t,e){var r=this;switch(t){case"eles":r.data.canvasNeedsRedraw[Er.NODE]=e;break;case"drag":r.data.canvasNeedsRedraw[Er.DRAG]=e;break;case"select":r.data.canvasNeedsRedraw[Er.SELECT_BOX]=e;break;case"gc":r.data.gc=!0;break}};GZe=typeof Path2D<"u";Er.path2dEnabled=function(t){if(t===void 0)return this.pathsEnabled;this.pathsEnabled=!!t};Er.usePaths=function(){return GZe&&this.pathsEnabled};Er.setImgSmoothing=function(t,e){t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled=e:(t.webkitImageSmoothingEnabled=e,t.mozImageSmoothingEnabled=e,t.msImageSmoothingEnabled=e)};Er.getImgSmoothing=function(t){return t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled:t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled};Er.makeOffscreenCanvas=function(t,e){var r;if((typeof OffscreenCanvas>"u"?"undefined":Wi(OffscreenCanvas))!=="undefined")r=new OffscreenCanvas(t,e);else{var n=this.cy.window(),i=n.document;r=i.createElement("canvas"),r.width=t,r.height=e}return r};[Tge,Qc,th,bB,Yp,ly,ys,Dge,Pf,c4,Ige].forEach(function(t){rr(Er,t)});VZe=[{name:"null",impl:lge},{name:"base",impl:vge},{name:"canvas",impl:zZe}],UZe=[{type:"layout",extensions:SQe},{type:"renderer",extensions:VZe}],Pge={},Bge={};o(Fge,"setExtension");o($ge,"getExtension");o(HZe,"setModule");o(WZe,"getModule");QP=o(function(){if(arguments.length===2)return $ge.apply(null,arguments);if(arguments.length===3)return Fge.apply(null,arguments);if(arguments.length===4)return WZe.apply(null,arguments);if(arguments.length===5)return HZe.apply(null,arguments);ai("Invalid extension access syntax")},"extension");Jb.prototype.extension=QP;UZe.forEach(function(t){t.extensions.forEach(function(e){Fge(t.type,e.name,e.impl)})});zge=o(function t(){if(!(this instanceof t))return new t;this.length=0},"Stylesheet"),Wp=zge.prototype;Wp.instanceString=function(){return"stylesheet"};Wp.selector=function(t){var e=this.length++;return this[e]={selector:t,properties:[]},this};Wp.css=function(t,e){var r=this.length-1;if(Zt(t))this[r].properties.push({name:t,value:e});else if(Ur(t))for(var n=t,i=Object.keys(n),a=0;a{"use strict";o(function(e,r){typeof u4=="object"&&typeof EB=="object"?EB.exports=r():typeof define=="function"&&define.amd?define([],r):typeof u4=="object"?u4.layoutBase=r():e.layoutBase=r()},"webpackUniversalModuleDefinition")(u4,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=t,r.c=e,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=26)}([function(t,e,r){"use strict";function n(){}o(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,f){n.call(this,f),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=f,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var f=this.getOtherEnd(u),d=h.getGraphManager().getRoot();;){if(f.getOwner()==h)return f;if(f.getOwner()==d)break;f=f.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(4);function h(d,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),d.graphManager!=null&&(d=d.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=d,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var f in n)h[f]=n[f];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(d){this.rect.width=d},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(d){this.rect.height=d},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(d,p){this.rect.x=d.x,this.rect.y=d.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(d,p){this.rect.x=d-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(d,p){this.rect.x=d,this.rect.y=p},h.prototype.moveBy=function(d,p){this.rect.x+=d,this.rect.y+=p},h.prototype.getEdgeListToNode=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==d){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==d||y.source==d)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var d=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)d.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";d.add(m.source)}}),d},h.prototype.withChildren=function(){var d=new Set,p,m;if(d.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp&&(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)),this.labelHeight>m&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-m)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-m),this.setHeight(this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(d){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=d.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},t.exports=h},function(t,e,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(6),l=r(3),u=r(1),h=r(13),f=r(12),d=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,w=0;w-1&&E>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(T,1),x.target!=x.source&&x.target.edges.splice(E,1);var C=x.source.owner.getEdges().indexOf(x);if(C==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(C,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,w=this.getNodes(),C=w.length,T=0;Tv&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(w[0].getParent().paddingLeft!=null?b=w[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new f(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,w,C,T,E,A,S=this.nodes,_=S.length,I=0;I<_;I++){var D=S[I];g&&D.child!=null&&D.updateBounds(),w=D.getLeft(),C=D.getRight(),T=D.getTop(),E=D.getBottom(),y>w&&(y=w),vT&&(x=T),bw&&(y=w),vT&&(x=T),b=this.nodes.length){var _=0;v.forEach(function(I){I.owner==g&&_++}),_==this.nodes.length&&(this.isConnected=!0)}},t.exports=p},function(t,e,r){"use strict";var n,i=r(1);function a(s){n=r(5),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,f){if(u==null&&h==null&&f==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{f=u,h=l,u=s;var d=h.getOwner(),p=f.getOwner();if(!(d!=null&&d.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(d==p)return u.isInterGraph=!1,d.add(u,h,f);if(u.isInterGraph=!0,u.source=h,u.target=f,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,f=u.length,d=0;d=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var f=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(f=1);var d=f*l[0],p=l[1]/f;l[0]d)return l[0]=u,l[1]=m,l[2]=f,l[3]=S,!1;if(hf)return l[0]=p,l[1]=h,l[2]=E,l[3]=d,!1;if(uf?(l[0]=y,l[1]=v,k=!0):(l[0]=g,l[1]=m,k=!0):R===M&&(u>f?(l[0]=p,l[1]=m,k=!0):(l[0]=x,l[1]=v,k=!0)),-O===M?f>u?(l[2]=A,l[3]=S,L=!0):(l[2]=E,l[3]=T,L=!0):O===M&&(f>u?(l[2]=C,l[3]=T,L=!0):(l[2]=_,l[3]=S,L=!0)),k&&L)return!1;if(u>f?h>d?(B=this.getCardinalDirection(R,M,4),F=this.getCardinalDirection(O,M,2)):(B=this.getCardinalDirection(-R,M,3),F=this.getCardinalDirection(-O,M,1)):h>d?(B=this.getCardinalDirection(-R,M,1),F=this.getCardinalDirection(-O,M,3)):(B=this.getCardinalDirection(R,M,2),F=this.getCardinalDirection(O,M,4)),!k)switch(B){case 1:z=m,P=u+-w/M,l[0]=P,l[1]=z;break;case 2:P=x,z=h+b*M,l[0]=P,l[1]=z;break;case 3:z=v,P=u+w/M,l[0]=P,l[1]=z;break;case 4:P=y,z=h+-b*M,l[0]=P,l[1]=z;break}if(!L)switch(F){case 1:H=T,$=f+-D/M,l[2]=$,l[3]=H;break;case 2:$=_,H=d+I*M,l[2]=$,l[3]=H;break;case 3:H=S,$=f+D/M,l[2]=$,l[3]=H;break;case 4:$=A,H=d+-I*M,l[2]=$,l[3]=H;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,f=a.y,d=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,w=void 0,C=void 0,T=void 0,E=void 0,A=void 0,S=void 0,_=void 0;return w=p-f,T=h-d,A=d*f-h*p,C=v-g,E=m-y,S=y*g-m*v,_=w*E-C*T,_===0?null:(x=(T*S-E*A)/_,b=(C*A-w*S)/_,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},t.exports=n},function(t,e,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n},function(t,e,r){"use strict";var n=function(){function h(f,d){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},t.exports=i},function(t,e,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(w.push(T[0]);w.length>0&&g;){var E=w[0];w.splice(0,1),b.add(E);for(var A=E.getEdges(),x=0;x-1&&T.splice(D,1)}b=new Set,C=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(S,1);var _=C.getNeighborsList();_.forEach(function(k){if(y.indexOf(k)<0){var L=v.get(k),R=L-1;R==1&&E.push(k),v.set(k,R)}})}y=y.concat(E),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},t.exports=p},function(t,e,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},t.exports=n},function(t,e,r){"use strict";var n=r(4);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},t.exports=i},function(t,e,r){"use strict";function n(d){if(Array.isArray(d)){for(var p=0,m=Array(d.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(d>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var d=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&d&&this.updateGrid(),b=new Set,m=0;mw||b>w)&&(d.gravitationForceX=-this.gravityConstant*y,d.gravitationForceY=-this.gravityConstant*v)):(w=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>w||b>w)&&(d.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,d.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var d,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),d=this.totalDisplacement=x.length||w>=x[0].length)){for(var C=0;Ch},"_defaultCompareFunction")}]),l}();t.exports=s},function(t,e,r){"use strict";var n=function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=f,this.gap_penalty=d,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o(function(e,r){typeof h4=="object"&&typeof CB=="object"?CB.exports=r(SB()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof h4=="object"?h4.coseBase=r(SB()):e.coseBase=r(e.layoutBase)},"webpackUniversalModuleDefinition")(h4,function(t){return function(e){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=e,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=7)}([function(e,r){e.exports=t},function(e,r,n){"use strict";var i=n(0).FDLayoutConstants;function a(){}o(a,"CoSEConstants");for(var s in i)a[s]=i[s];a.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,a.DEFAULT_RADIAL_SEPARATION=i.DEFAULT_EDGE_LENGTH,a.DEFAULT_COMPONENT_SEPERATION=60,a.TILE=!0,a.TILING_PADDING_VERTICAL=10,a.TILING_PADDING_HORIZONTAL=10,a.TREE_REDUCTION_ON_INCREMENTAL=!1,e.exports=a},function(e,r,n){"use strict";var i=n(0).FDLayoutEdge;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEEdge"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a},function(e,r,n){"use strict";var i=n(0).LGraph;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEGraph"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a},function(e,r,n){"use strict";var i=n(0).LGraphManager;function a(l){i.call(this,l)}o(a,"CoSEGraphManager"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a},function(e,r,n){"use strict";var i=n(0).FDLayoutNode,a=n(0).IMath;function s(u,h,f,d){i.call(this,u,h,f,d)}o(s,"CoSENode"),s.prototype=Object.create(i.prototype);for(var l in i)s[l]=i[l];s.prototype.move=function(){var u=this.graphManager.getLayout();this.displacementX=u.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=u.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementX=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementX)),Math.abs(this.displacementY)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementY=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),u.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},s.prototype.propogateDisplacementToChildren=function(u,h){for(var f=this.getChild().getNodes(),d,p=0;p0)this.positionNodesRadially(T);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var E=new Set(this.getAllNodes()),A=this.nodesWithGravity.filter(function(S){return E.has(S)});this.graphManager.setAllNodesToApplyGravitation(A),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},w.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%f.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var T=new Set(this.getAllNodes()),E=this.nodesWithGravity.filter(function(_){return T.has(_)});this.graphManager.setAllNodesToApplyGravitation(E),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=f.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=f.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var A=!this.isTreeGrowing&&!this.isGrowthFinished,S=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(A,S),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},w.prototype.getPositionsData=function(){for(var T=this.graphManager.getAllNodes(),E={},A=0;A1){var k;for(k=0;kS&&(S=Math.floor(D.y)),I=Math.floor(D.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new m(d.WORLD_CENTER_X-D.x/2,d.WORLD_CENTER_Y-D.y/2))},w.radialLayout=function(T,E,A){var S=Math.max(this.maxDiagonalInTree(T),h.DEFAULT_RADIAL_SEPARATION);w.branchRadialLayout(E,null,0,359,0,S);var _=x.calculateBounds(T),I=new b;I.setDeviceOrgX(_.getMinX()),I.setDeviceOrgY(_.getMinY()),I.setWorldOrgX(A.x),I.setWorldOrgY(A.y);for(var D=0;D1;){var Q=H[0];H.splice(0,1);var j=B.indexOf(Q);j>=0&&B.splice(j,1),z--,F--}E!=null?$=(B.indexOf(H[0])+1)%z:$=0;for(var ie=Math.abs(S-A)/F,ne=$;P!=F;ne=++ne%z){var le=B[ne].getOtherEnd(T);if(le!=E){var he=(A+P*ie)%360,K=(he+ie)%360;w.branchRadialLayout(le,T,he,K,_+I,I),P++}}},w.maxDiagonalInTree=function(T){for(var E=y.MIN_VALUE,A=0;AE&&(E=_)}return E},w.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},w.prototype.groupZeroDegreeMembers=function(){var T=this,E={};this.memberGroups={},this.idToDummyNode={};for(var A=[],S=this.graphManager.getAllNodes(),_=0;_"u"&&(E[k]=[]),E[k]=E[k].concat(I)}Object.keys(E).forEach(function(L){if(E[L].length>1){var R="DummyCompound_"+L;T.memberGroups[R]=E[L];var O=E[L][0].getParent(),M=new l(T.graphManager);M.id=R,M.paddingLeft=O.paddingLeft||0,M.paddingRight=O.paddingRight||0,M.paddingBottom=O.paddingBottom||0,M.paddingTop=O.paddingTop||0,T.idToDummyNode[R]=M;var B=T.getGraphManager().add(T.newGraph(),M),F=O.getChild();F.add(M);for(var P=0;P=0;T--){var E=this.compoundOrder[T],A=E.id,S=E.paddingLeft,_=E.paddingTop;this.adjustLocations(this.tiledMemberPack[A],E.rect.x,E.rect.y,S,_)}},w.prototype.repopulateZeroDegreeMembers=function(){var T=this,E=this.tiledZeroDegreePack;Object.keys(E).forEach(function(A){var S=T.idToDummyNode[A],_=S.paddingLeft,I=S.paddingTop;T.adjustLocations(E[A],S.rect.x,S.rect.y,_,I)})},w.prototype.getToBeTiled=function(T){var E=T.id;if(this.toBeTiled[E]!=null)return this.toBeTiled[E];var A=T.getChild();if(A==null)return this.toBeTiled[E]=!1,!1;for(var S=A.getNodes(),_=0;_0)return this.toBeTiled[E]=!1,!1;if(I.getChild()==null){this.toBeTiled[I.id]=!1;continue}if(!this.getToBeTiled(I))return this.toBeTiled[E]=!1,!1}return this.toBeTiled[E]=!0,!0},w.prototype.getNodeDegree=function(T){for(var E=T.id,A=T.getEdges(),S=0,_=0;_L&&(L=O.rect.height)}A+=L+T.verticalPadding}},w.prototype.tileCompoundMembers=function(T,E){var A=this;this.tiledMemberPack=[],Object.keys(T).forEach(function(S){var _=E[S];A.tiledMemberPack[S]=A.tileNodes(T[S],_.paddingLeft+_.paddingRight),_.rect.width=A.tiledMemberPack[S].width,_.rect.height=A.tiledMemberPack[S].height})},w.prototype.tileNodes=function(T,E){var A=h.TILING_PADDING_VERTICAL,S=h.TILING_PADDING_HORIZONTAL,_={rows:[],rowWidth:[],rowHeight:[],width:0,height:E,verticalPadding:A,horizontalPadding:S};T.sort(function(k,L){return k.rect.width*k.rect.height>L.rect.width*L.rect.height?-1:k.rect.width*k.rect.height0&&(D+=T.horizontalPadding),T.rowWidth[A]=D,T.width0&&(k+=T.verticalPadding);var L=0;k>T.rowHeight[A]&&(L=T.rowHeight[A],T.rowHeight[A]=k,L=T.rowHeight[A]-L),T.height+=L,T.rows[A].push(E)},w.prototype.getShortestRowIndex=function(T){for(var E=-1,A=Number.MAX_VALUE,S=0;SA&&(E=S,A=T.rowWidth[S]);return E},w.prototype.canAddHorizontal=function(T,E,A){var S=this.getShortestRowIndex(T);if(S<0)return!0;var _=T.rowWidth[S];if(_+T.horizontalPadding+E<=T.width)return!0;var I=0;T.rowHeight[S]0&&(I=A+T.verticalPadding-T.rowHeight[S]);var D;T.width-_>=E+T.horizontalPadding?D=(T.height+I)/(_+E+T.horizontalPadding):D=(T.height+I)/T.width,I=A+T.verticalPadding;var k;return T.widthI&&E!=A){S.splice(-1,1),T.rows[A].push(_),T.rowWidth[E]=T.rowWidth[E]-I,T.rowWidth[A]=T.rowWidth[A]+I,T.width=T.rowWidth[instance.getLongestRowIndex(T)];for(var D=Number.MIN_VALUE,k=0;kD&&(D=S[k].height);E>0&&(D+=T.verticalPadding);var L=T.rowHeight[E]+T.rowHeight[A];T.rowHeight[E]=D,T.rowHeight[A]<_.height+T.verticalPadding&&(T.rowHeight[A]=_.height+T.verticalPadding);var R=T.rowHeight[E]+T.rowHeight[A];T.height+=R-L,this.shiftToLastRow(T)}},w.prototype.tilingPreLayout=function(){h.TILE&&(this.groupZeroDegreeMembers(),this.clearCompounds(),this.clearZeroDegreeMembers())},w.prototype.tilingPostLayout=function(){h.TILE&&(this.repopulateZeroDegreeMembers(),this.repopulateCompounds())},w.prototype.reduceTrees=function(){for(var T=[],E=!0,A;E;){var S=this.graphManager.getAllNodes(),_=[];E=!1;for(var I=0;I0)for(var F=_;F<=I;F++)B[0]+=this.grid[F][D-1].length+this.grid[F][D].length-1;if(I0)for(var F=D;F<=k;F++)B[3]+=this.grid[_-1][F].length+this.grid[_][F].length-1;for(var P=y.MAX_VALUE,z,$,H=0;H{"use strict";o(function(e,r){typeof f4=="object"&&typeof _B=="object"?_B.exports=r(AB()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof f4=="object"?f4.cytoscapeCoseBilkent=r(AB()):e.cytoscapeCoseBilkent=r(e.coseBase)},"webpackUniversalModuleDefinition")(f4,function(t){return function(e){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=e,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=1)}([function(e,r){e.exports=t},function(e,r,n){"use strict";var i=n(0).layoutBase.LayoutConstants,a=n(0).layoutBase.FDLayoutConstants,s=n(0).CoSEConstants,l=n(0).CoSELayout,u=n(0).CoSENode,h=n(0).layoutBase.PointD,f=n(0).layoutBase.DimensionD,d={ready:o(function(){},"ready"),stop:o(function(){},"stop"),quality:"default",nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:"end",animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function p(v,x){var b={};for(var w in v)b[w]=v[w];for(var w in x)b[w]=x[w];return b}o(p,"extend");function m(v){this.options=p(d,v),g(this.options)}o(m,"_CoSELayout");var g=o(function(x){x.nodeRepulsion!=null&&(s.DEFAULT_REPULSION_STRENGTH=a.DEFAULT_REPULSION_STRENGTH=x.nodeRepulsion),x.idealEdgeLength!=null&&(s.DEFAULT_EDGE_LENGTH=a.DEFAULT_EDGE_LENGTH=x.idealEdgeLength),x.edgeElasticity!=null&&(s.DEFAULT_SPRING_STRENGTH=a.DEFAULT_SPRING_STRENGTH=x.edgeElasticity),x.nestingFactor!=null&&(s.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=x.nestingFactor),x.gravity!=null&&(s.DEFAULT_GRAVITY_STRENGTH=a.DEFAULT_GRAVITY_STRENGTH=x.gravity),x.numIter!=null&&(s.MAX_ITERATIONS=a.MAX_ITERATIONS=x.numIter),x.gravityRange!=null&&(s.DEFAULT_GRAVITY_RANGE_FACTOR=a.DEFAULT_GRAVITY_RANGE_FACTOR=x.gravityRange),x.gravityCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_STRENGTH=a.DEFAULT_COMPOUND_GRAVITY_STRENGTH=x.gravityCompound),x.gravityRangeCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=x.gravityRangeCompound),x.initialEnergyOnIncremental!=null&&(s.DEFAULT_COOLING_FACTOR_INCREMENTAL=a.DEFAULT_COOLING_FACTOR_INCREMENTAL=x.initialEnergyOnIncremental),x.quality=="draft"?i.QUALITY=0:x.quality=="proof"?i.QUALITY=2:i.QUALITY=1,s.NODE_DIMENSIONS_INCLUDE_LABELS=a.NODE_DIMENSIONS_INCLUDE_LABELS=i.NODE_DIMENSIONS_INCLUDE_LABELS=x.nodeDimensionsIncludeLabels,s.DEFAULT_INCREMENTAL=a.DEFAULT_INCREMENTAL=i.DEFAULT_INCREMENTAL=!x.randomize,s.ANIMATE=a.ANIMATE=i.ANIMATE=x.animate,s.TILE=x.tile,s.TILING_PADDING_VERTICAL=typeof x.tilingPaddingVertical=="function"?x.tilingPaddingVertical.call():x.tilingPaddingVertical,s.TILING_PADDING_HORIZONTAL=typeof x.tilingPaddingHorizontal=="function"?x.tilingPaddingHorizontal.call():x.tilingPaddingHorizontal},"getUserOptions");m.prototype.run=function(){var v,x,b=this.options,w=this.idToLNode={},C=this.layout=new l,T=this;T.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this});var E=C.newGraphManager();this.gm=E;var A=this.options.eles.nodes(),S=this.options.eles.edges();this.root=E.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(A),C);for(var _=0;_0){var k;k=b.getGraphManager().add(b.newGraph(),A),this.processChildrenList(k,E,b)}}},m.prototype.stop=function(){return this.stopped=!0,this};var y=o(function(x){x("layout","cose-bilkent",m)},"register");typeof cytoscape<"u"&&y(cytoscape),e.exports=y}])})});function JZe(t,e,r,n,i){return t.insert("polygon",":first-child").attr("points",n.map(function(a){return a.x+","+a.y}).join(" ")).attr("transform","translate("+(i.width-e)/2+", "+r+")")}var YZe,XZe,jZe,KZe,QZe,ZZe,eJe,tJe,Vge,Uge,Hge=N(()=>{"use strict";to();ir();YZe=12,XZe=o(function(t,e,r,n){e.append("path").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("d",`M0 ${r.height-5} v${-r.height+2*5} q0,-5 5,-5 h${r.width-2*5} q5,0 5,5 v${r.height-5} H0 Z`),e.append("line").attr("class","node-line-"+n).attr("x1",0).attr("y1",r.height).attr("x2",r.width).attr("y2",r.height)},"defaultBkg"),jZe=o(function(t,e,r){e.append("rect").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("height",r.height).attr("width",r.width)},"rectBkg"),KZe=o(function(t,e,r){let n=r.width,i=r.height,a=.15*n,s=.25*n,l=.35*n,u=.2*n;e.append("path").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("d",`M0 0 a${a},${a} 0 0,1 ${n*.25},${-1*n*.1} + a${l},${l} 1 0,1 ${n*.4},${-1*n*.1} + a${s},${s} 1 0,1 ${n*.35},${1*n*.2} + + a${a},${a} 1 0,1 ${n*.15},${1*i*.35} + a${u},${u} 1 0,1 ${-1*n*.15},${1*i*.65} + + a${s},${a} 1 0,1 ${-1*n*.25},${n*.15} + a${l},${l} 1 0,1 ${-1*n*.5},0 + a${a},${a} 1 0,1 ${-1*n*.25},${-1*n*.15} + + a${a},${a} 1 0,1 ${-1*n*.1},${-1*i*.35} + a${u},${u} 1 0,1 ${n*.1},${-1*i*.65} + + H0 V0 Z`)},"cloudBkg"),QZe=o(function(t,e,r){let n=r.width,i=r.height,a=.15*n;e.append("path").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("d",`M0 0 a${a},${a} 1 0,0 ${n*.25},${-1*i*.1} + a${a},${a} 1 0,0 ${n*.25},0 + a${a},${a} 1 0,0 ${n*.25},0 + a${a},${a} 1 0,0 ${n*.25},${1*i*.1} + + a${a},${a} 1 0,0 ${n*.15},${1*i*.33} + a${a*.8},${a*.8} 1 0,0 0,${1*i*.34} + a${a},${a} 1 0,0 ${-1*n*.15},${1*i*.33} + + a${a},${a} 1 0,0 ${-1*n*.25},${i*.15} + a${a},${a} 1 0,0 ${-1*n*.25},0 + a${a},${a} 1 0,0 ${-1*n*.25},0 + a${a},${a} 1 0,0 ${-1*n*.25},${-1*i*.15} + + a${a},${a} 1 0,0 ${-1*n*.1},${-1*i*.33} + a${a*.8},${a*.8} 1 0,0 0,${-1*i*.34} + a${a},${a} 1 0,0 ${n*.1},${-1*i*.33} + + H0 V0 Z`)},"bangBkg"),ZZe=o(function(t,e,r){e.append("circle").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("r",r.width/2)},"circleBkg");o(JZe,"insertPolygonShape");eJe=o(function(t,e,r){let n=r.height,a=n/4,s=r.width-r.padding+2*a,l=[{x:a,y:0},{x:s-a,y:0},{x:s,y:-n/2},{x:s-a,y:-n},{x:a,y:-n},{x:0,y:-n/2}];JZe(e,s,n,l,r)},"hexagonBkg"),tJe=o(function(t,e,r){e.append("rect").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("height",r.height).attr("rx",r.padding).attr("ry",r.padding).attr("width",r.width)},"roundedRectBkg"),Vge=o(async function(t,e,r,n,i){let a=i.htmlLabels,s=n%(YZe-1),l=e.append("g");r.section=s;let u="section-"+s;s<0&&(u+=" section-root"),l.attr("class",(r.class?r.class+" ":"")+"mindmap-node "+u);let h=l.append("g"),f=l.append("g"),d=r.descr.replace(/()/g,` +`);await Hn(f,d,{useHtmlLabels:a,width:r.width,classes:"mindmap-node-label"},i),a||f.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");let p=f.node().getBBox(),[m]=Bo(i.fontSize);if(r.height=p.height+m*1.1*.5+r.padding,r.width=p.width+2*r.padding,r.icon)if(r.type===t.nodeType.CIRCLE)r.height+=50,r.width+=50,l.append("foreignObject").attr("height","50px").attr("width",r.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+s+" "+r.icon),f.attr("transform","translate("+r.width/2+", "+(r.height/2-1.5*r.padding)+")");else{r.width+=50;let g=r.height;r.height=Math.max(g,60);let y=Math.abs(r.height-g);l.append("foreignObject").attr("width","60px").attr("height",r.height).attr("style","text-align: center;margin-top:"+y/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+s+" "+r.icon),f.attr("transform","translate("+(25+r.width/2)+", "+(y/2+r.padding/2)+")")}else if(a){let g=(r.width-p.width)/2,y=(r.height-p.height)/2;f.attr("transform","translate("+g+", "+y+")")}else{let g=r.width/2,y=r.padding/2;f.attr("transform","translate("+g+", "+y+")")}switch(r.type){case t.nodeType.DEFAULT:XZe(t,h,r,s);break;case t.nodeType.ROUNDED_RECT:tJe(t,h,r,s);break;case t.nodeType.RECT:jZe(t,h,r,s);break;case t.nodeType.CIRCLE:h.attr("transform","translate("+r.width/2+", "+ +r.height/2+")"),ZZe(t,h,r,s);break;case t.nodeType.CLOUD:KZe(t,h,r,s);break;case t.nodeType.BANG:QZe(t,h,r,s);break;case t.nodeType.HEXAGON:eJe(t,h,r,s);break}return t.setElementForId(r.id,l),r.height},"drawNode"),Uge=o(function(t,e){let r=t.getElementById(e.id),n=e.x||0,i=e.y||0;r.attr("transform","translate("+n+","+i+")")},"positionNode")});async function qge(t,e,r,n,i){await Vge(t,e,r,n,i),r.children&&await Promise.all(r.children.map((a,s)=>qge(t,e,a,n<0?s:n,i)))}function rJe(t,e){e.edges().map((r,n)=>{let i=r.data();if(r[0]._private.bodyBounds){let a=r[0]._private.rscratch;Y.trace("Edge: ",n,i),t.insert("path").attr("d",`M ${a.startX},${a.startY} L ${a.midX},${a.midY} L${a.endX},${a.endY} `).attr("class","edge section-edge-"+i.section+" edge-depth-"+i.depth)}})}function Yge(t,e,r,n){e.add({group:"nodes",data:{id:t.id.toString(),labelText:t.descr,height:t.height,width:t.width,level:n,nodeId:t.id,padding:t.padding,type:t.type},position:{x:t.x,y:t.y}}),t.children&&t.children.forEach(i=>{Yge(i,e,r,n+1),e.add({group:"edges",data:{id:`${t.id}_${i.id}`,source:t.id,target:i.id,depth:n,section:i.section}})})}function nJe(t,e){return new Promise(r=>{let n=Ge("body").append("div").attr("id","cy").attr("style","display:none"),i=rl({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});n.remove(),Yge(t,i,e,0),i.nodes().forEach(function(a){a.layoutDimensions=()=>{let s=a.data();return{w:s.width,h:s.height}}}),i.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),i.ready(a=>{Y.info("Ready",a),r(i)})})}function iJe(t,e){e.nodes().map((r,n)=>{let i=r.data();i.x=r.position().x,i.y=r.position().y,Uge(t,i);let a=t.getElementById(i.nodeId);Y.info("Id:",n,"Position: (",r.position().x,", ",r.position().y,")",i),a.attr("transform",`translate(${r.position().x-i.width/2}, ${r.position().y-i.height/2})`),a.attr("attr",`apa-${n})`)})}var Wge,aJe,Xge,jge=N(()=>{"use strict";kB();Wge=Sa(Gge(),1);dr();zt();vt();Vc();Ei();Hge();Ya();rl.use(Wge.default);o(qge,"drawNodes");o(rJe,"drawEdges");o(Yge,"addNodes");o(nJe,"layoutMindmap");o(iJe,"positionNodes");aJe=o(async(t,e,r,n)=>{Y.debug(`Rendering mindmap diagram +`+t);let i=n.db,a=i.getMindmap();if(!a)return;let s=me();s.htmlLabels=!1;let l=sa(e),u=l.append("g");u.attr("class","mindmap-edges");let h=l.append("g");h.attr("class","mindmap-nodes"),await qge(i,h,a,-1,s);let f=await nJe(a,s);rJe(u,f),iJe(i,f),Ao(void 0,l,s.mindmap?.padding??or.mindmap.padding,s.mindmap?.useMaxWidth??or.mindmap.useMaxWidth)},"draw"),Xge={draw:aJe}});var sJe,oJe,Kge,Qge=N(()=>{"use strict";Ys();sJe=o(t=>{let e="";for(let r=0;r` + .edge { + stroke-width: 3; + } + ${sJe(t)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${t.git0}; + } + .section-root text { + fill: ${t.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .mindmap-node-label { + dy: 1em; + alignment-baseline: middle; + text-anchor: middle; + dominant-baseline: middle; + text-align: center; + } +`,"getStyles"),Kge=oJe});var Zge={};hr(Zge,{diagram:()=>lJe});var lJe,Jge=N(()=>{"use strict";Spe();_pe();jge();Qge();lJe={db:Ape,renderer:Xge,parser:Epe,styles:Kge}});var DB,r1e,n1e=N(()=>{"use strict";DB=function(){var t=o(function(A,S,_,I){for(_=_||{},I=A.length;I--;_[A[I]]=S);return _},"o"),e=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],f=[1,24],d=[1,25],p=[6,7,11],m=[1,31],g=[6,7,11,24],y=[1,6,13,16,17,20,23],v=[1,35],x=[1,36],b=[1,6,7,11,13,16,17,20,23],w=[1,38],C={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:o(function(S,_,I,D,k,L,R){var O=L.length-1;switch(k){case 6:case 7:return D;case 8:D.getLogger().trace("Stop NL ");break;case 9:D.getLogger().trace("Stop EOF ");break;case 11:D.getLogger().trace("Stop NL2 ");break;case 12:D.getLogger().trace("Stop EOF2 ");break;case 15:D.getLogger().info("Node: ",L[O-1].id),D.addNode(L[O-2].length,L[O-1].id,L[O-1].descr,L[O-1].type,L[O]);break;case 16:D.getLogger().info("Node: ",L[O].id),D.addNode(L[O-1].length,L[O].id,L[O].descr,L[O].type);break;case 17:D.getLogger().trace("Icon: ",L[O]),D.decorateNode({icon:L[O]});break;case 18:case 23:D.decorateNode({class:L[O]});break;case 19:D.getLogger().trace("SPACELIST");break;case 20:D.getLogger().trace("Node: ",L[O-1].id),D.addNode(0,L[O-1].id,L[O-1].descr,L[O-1].type,L[O]);break;case 21:D.getLogger().trace("Node: ",L[O].id),D.addNode(0,L[O].id,L[O].descr,L[O].type);break;case 22:D.decorateNode({icon:L[O]});break;case 27:D.getLogger().trace("node found ..",L[O-2]),this.$={id:L[O-1],descr:L[O-1],type:D.getType(L[O-2],L[O])};break;case 28:this.$={id:L[O],descr:L[O],type:0};break;case 29:D.getLogger().trace("node found ..",L[O-3]),this.$={id:L[O-3],descr:L[O-1],type:D.getType(L[O-2],L[O])};break;case 30:this.$=L[O-1]+L[O];break;case 31:this.$=L[O];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:r,7:[1,10],9:9,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},t(u,[2,3]),{1:[2,2]},t(u,[2,4]),t(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:r,9:22,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:h,7:f,10:23,11:d},t(p,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:s,23:l}),t(p,[2,19]),t(p,[2,21],{15:30,24:m}),t(p,[2,22]),t(p,[2,23]),t(g,[2,25]),t(g,[2,26]),t(g,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:f,10:34,11:d},{1:[2,7],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},t(y,[2,14],{7:v,11:x}),t(b,[2,8]),t(b,[2,9]),t(b,[2,10]),t(p,[2,16],{15:37,24:m}),t(p,[2,17]),t(p,[2,18]),t(p,[2,20],{24:w}),t(g,[2,31]),{21:[1,39]},{22:[1,40]},t(y,[2,13],{7:v,11:x}),t(b,[2,11]),t(b,[2,12]),t(p,[2,15],{24:w}),t(g,[2,30]),{22:[1,41]},t(g,[2,27]),t(g,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(S,_){if(_.recoverable)this.trace(S);else{var I=new Error(S);throw I.hash=_,I}},"parseError"),parse:o(function(S){var _=this,I=[0],D=[],k=[null],L=[],R=this.table,O="",M=0,B=0,F=0,P=2,z=1,$=L.slice.call(arguments,1),H=Object.create(this.lexer),Q={yy:{}};for(var j in this.yy)Object.prototype.hasOwnProperty.call(this.yy,j)&&(Q.yy[j]=this.yy[j]);H.setInput(S,Q.yy),Q.yy.lexer=H,Q.yy.parser=this,typeof H.yylloc>"u"&&(H.yylloc={});var ie=H.yylloc;L.push(ie);var ne=H.options&&H.options.ranges;typeof Q.yy.parseError=="function"?this.parseError=Q.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function le(ze){I.length=I.length-2*ze,k.length=k.length-ze,L.length=L.length-ze}o(le,"popStack");function he(){var ze;return ze=D.pop()||H.lex()||z,typeof ze!="number"&&(ze instanceof Array&&(D=ze,ze=D.pop()),ze=_.symbols_[ze]||ze),ze}o(he,"lex");for(var K,X,te,J,se,ue,Z={},Se,ce,ae,Oe;;){if(te=I[I.length-1],this.defaultActions[te]?J=this.defaultActions[te]:((K===null||typeof K>"u")&&(K=he()),J=R[te]&&R[te][K]),typeof J>"u"||!J.length||!J[0]){var ge="";Oe=[];for(Se in R[te])this.terminals_[Se]&&Se>P&&Oe.push("'"+this.terminals_[Se]+"'");H.showPosition?ge="Parse error on line "+(M+1)+`: +`+H.showPosition()+` +Expecting `+Oe.join(", ")+", got '"+(this.terminals_[K]||K)+"'":ge="Parse error on line "+(M+1)+": Unexpected "+(K==z?"end of input":"'"+(this.terminals_[K]||K)+"'"),this.parseError(ge,{text:H.match,token:this.terminals_[K]||K,line:H.yylineno,loc:ie,expected:Oe})}if(J[0]instanceof Array&&J.length>1)throw new Error("Parse Error: multiple actions possible at state: "+te+", token: "+K);switch(J[0]){case 1:I.push(K),k.push(H.yytext),L.push(H.yylloc),I.push(J[1]),K=null,X?(K=X,X=null):(B=H.yyleng,O=H.yytext,M=H.yylineno,ie=H.yylloc,F>0&&F--);break;case 2:if(ce=this.productions_[J[1]][1],Z.$=k[k.length-ce],Z._$={first_line:L[L.length-(ce||1)].first_line,last_line:L[L.length-1].last_line,first_column:L[L.length-(ce||1)].first_column,last_column:L[L.length-1].last_column},ne&&(Z._$.range=[L[L.length-(ce||1)].range[0],L[L.length-1].range[1]]),ue=this.performAction.apply(Z,[O,B,M,Q.yy,J[1],k,L].concat($)),typeof ue<"u")return ue;ce&&(I=I.slice(0,-1*ce*2),k=k.slice(0,-1*ce),L=L.slice(0,-1*ce)),I.push(this.productions_[J[1]][0]),k.push(Z.$),L.push(Z._$),ae=R[I[I.length-2]][I[I.length-1]],I.push(ae);break;case 3:return!0}}return!0},"parse")},T=function(){var A={EOF:1,parseError:o(function(_,I){if(this.yy.parser)this.yy.parser.parseError(_,I);else throw new Error(_)},"parseError"),setInput:o(function(S,_){return this.yy=_||this.yy||{},this._input=S,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},"setInput"),input:o(function(){var S=this._input[0];this.yytext+=S,this.yyleng++,this.offset++,this.match+=S,this.matched+=S;var _=S.match(/(?:\r\n?|\n).*/g);return _?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),S},"input"),unput:o(function(S){var _=S.length,I=S.split(/(?:\r\n?|\n)/g);this._input=S+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-_),this.offset-=_;var D=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 k=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===D.length?this.yylloc.first_column:0)+D[D.length-I.length].length-I[0].length:this.yylloc.first_column-_},this.options.ranges&&(this.yylloc.range=[k[0],k[0]+this.yyleng-_]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(S){this.unput(this.match.slice(S))},"less"),pastInput:o(function(){var S=this.matched.substr(0,this.matched.length-this.match.length);return(S.length>20?"...":"")+S.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var S=this.match;return S.length<20&&(S+=this._input.substr(0,20-S.length)),(S.substr(0,20)+(S.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var S=this.pastInput(),_=new Array(S.length+1).join("-");return S+this.upcomingInput()+` +`+_+"^"},"showPosition"),test_match:o(function(S,_){var I,D,k;if(this.options.backtrack_lexer&&(k={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&&(k.yylloc.range=this.yylloc.range.slice(0))),D=S[0].match(/(?:\r\n?|\n).*/g),D&&(this.yylineno+=D.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:D?D[D.length-1].length-D[D.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+S[0].length},this.yytext+=S[0],this.match+=S[0],this.matches=S,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(S[0].length),this.matched+=S[0],I=this.performAction.call(this,this.yy,this,_,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),I)return I;if(this._backtrack){for(var L in k)this[L]=k[L];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var S,_,I,D;this._more||(this.yytext="",this.match="");for(var k=this._currentRules(),L=0;L_[0].length)){if(_=I,D=L,this.options.backtrack_lexer){if(S=this.test_match(I,k[L]),S!==!1)return S;if(this._backtrack){_=!1;continue}else return!1}else if(!this.options.flex)break}return _?(S=this.test_match(_,k[D]),S!==!1?S:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var _=this.next();return _||this.lex()},"lex"),begin:o(function(_){this.conditionStack.push(_)},"begin"),popState:o(function(){var _=this.conditionStack.length-1;return _>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(_){return _=this.conditionStack.length-1-Math.abs(_||0),_>=0?this.conditionStack[_]:"INITIAL"},"topState"),pushState:o(function(_){this.begin(_)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(_,I,D,k){var L=k;switch(D){case 0:return this.pushState("shapeData"),I.yytext="",24;break;case 1:return this.pushState("shapeDataStr"),24;break;case 2:return this.popState(),24;break;case 3:let R=/\n\s*/g;return I.yytext=I.yytext.replace(R,"
    "),24;break;case 4:return 24;case 5:this.popState();break;case 6:return _.getLogger().trace("Found comment",I.yytext),6;break;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;break;case 10:this.popState();break;case 11:_.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return _.getLogger().trace("SPACELINE"),6;break;case 13:return 7;case 14:return 16;case 15:_.getLogger().trace("end icon"),this.popState();break;case 16:return _.getLogger().trace("Exploding node"),this.begin("NODE"),20;break;case 17:return _.getLogger().trace("Cloud"),this.begin("NODE"),20;break;case 18:return _.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;break;case 19:return _.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;break;case 20:return this.begin("NODE"),20;break;case 21:return this.begin("NODE"),20;break;case 22:return this.begin("NODE"),20;break;case 23:return this.begin("NODE"),20;break;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 29:this.popState();break;case 30:_.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return _.getLogger().trace("description:",I.yytext),"NODE_DESCR";break;case 32:this.popState();break;case 33:return this.popState(),_.getLogger().trace("node end ))"),"NODE_DEND";break;case 34:return this.popState(),_.getLogger().trace("node end )"),"NODE_DEND";break;case 35:return this.popState(),_.getLogger().trace("node end ...",I.yytext),"NODE_DEND";break;case 36:return this.popState(),_.getLogger().trace("node end (("),"NODE_DEND";break;case 37:return this.popState(),_.getLogger().trace("node end (-"),"NODE_DEND";break;case 38:return this.popState(),_.getLogger().trace("node end (-"),"NODE_DEND";break;case 39:return this.popState(),_.getLogger().trace("node end (("),"NODE_DEND";break;case 40:return this.popState(),_.getLogger().trace("node end (("),"NODE_DEND";break;case 41:return _.getLogger().trace("Long description:",I.yytext),21;break;case 42:return _.getLogger().trace("Long description:",I.yytext),21;break}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}};return A}();C.lexer=T;function E(){this.yy={}}return o(E,"Parser"),E.prototype=C,C.Parser=E,new E}();DB.parser=DB;r1e=DB});var nl,RB,LB,NB,fJe,dJe,i1e,pJe,mJe,Yi,gJe,yJe,vJe,xJe,bJe,wJe,TJe,a1e,s1e=N(()=>{"use strict";zt();gr();vt();Ya();Ew();nl=[],RB=[],LB=0,NB={},fJe=o(()=>{nl=[],RB=[],LB=0,NB={}},"clear"),dJe=o(t=>{if(nl.length===0)return null;let e=nl[0].level,r=null;for(let n=nl.length-1;n>=0;n--)if(nl[n].level===e&&!r&&(r=nl[n]),nl[n].levell.parentId===i.id);for(let l of s){let u={id:l.id,parentId:i.id,label:Tr(l.label??"",n),isGroup:!1,ticket:l?.ticket,priority:l?.priority,assigned:l?.assigned,icon:l?.icon,shape:"kanbanItem",level:l.level,rx:5,ry:5,cssStyles:["text-align: left"]};e.push(u)}}return{nodes:e,edges:t,other:{},config:me()}},"getData"),mJe=o((t,e,r,n,i)=>{let a=me(),s=a.mindmap?.padding??or.mindmap.padding;switch(n){case Yi.ROUNDED_RECT:case Yi.RECT:case Yi.HEXAGON:s*=2}let l={id:Tr(e,a)||"kbn"+LB++,level:t,label:Tr(r,a),width:a.mindmap?.maxNodeWidth??or.mindmap.maxNodeWidth,padding:s,isGroup:!1};if(i!==void 0){let h;i.includes(` +`)?h=i+` +`:h=`{ +`+i+` +}`;let f=cm(h,{schema:lm});if(f.shape&&(f.shape!==f.shape.toLowerCase()||f.shape.includes("_")))throw new Error(`No such shape: ${f.shape}. Shape names should be lowercase.`);f?.shape&&f.shape==="kanbanItem"&&(l.shape=f?.shape),f?.label&&(l.label=f?.label),f?.icon&&(l.icon=f?.icon.toString()),f?.assigned&&(l.assigned=f?.assigned.toString()),f?.ticket&&(l.ticket=f?.ticket.toString()),f?.priority&&(l.priority=f?.priority)}let u=dJe(t);u?l.parentId=u.id||"kbn"+LB++:RB.push(l),nl.push(l)},"addNode"),Yi={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},gJe=o((t,e)=>{switch(Y.debug("In get type",t,e),t){case"[":return Yi.RECT;case"(":return e===")"?Yi.ROUNDED_RECT:Yi.CLOUD;case"((":return Yi.CIRCLE;case")":return Yi.CLOUD;case"))":return Yi.BANG;case"{{":return Yi.HEXAGON;default:return Yi.DEFAULT}},"getType"),yJe=o((t,e)=>{NB[t]=e},"setElementForId"),vJe=o(t=>{if(!t)return;let e=me(),r=nl[nl.length-1];t.icon&&(r.icon=Tr(t.icon,e)),t.class&&(r.cssClasses=Tr(t.class,e))},"decorateNode"),xJe=o(t=>{switch(t){case Yi.DEFAULT:return"no-border";case Yi.RECT:return"rect";case Yi.ROUNDED_RECT:return"rounded-rect";case Yi.CIRCLE:return"circle";case Yi.CLOUD:return"cloud";case Yi.BANG:return"bang";case Yi.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),bJe=o(()=>Y,"getLogger"),wJe=o(t=>NB[t],"getElementById"),TJe={clear:fJe,addNode:mJe,getSections:i1e,getData:pJe,nodeType:Yi,getType:gJe,setElementForId:yJe,decorateNode:vJe,type2Str:xJe,getLogger:bJe,getElementById:wJe},a1e=TJe});var kJe,o1e,l1e=N(()=>{"use strict";zt();vt();Vc();Ei();Ya();Hw();eT();kJe=o(async(t,e,r,n)=>{Y.debug(`Rendering kanban diagram +`+t);let a=n.db.getData(),s=me();s.htmlLabels=!1;let l=sa(e),u=l.append("g");u.attr("class","sections");let h=l.append("g");h.attr("class","items");let f=a.nodes.filter(v=>v.isGroup),d=0,p=10,m=[],g=25;for(let v of f){let x=s?.kanban?.sectionWidth||200;d=d+1,v.x=x*d+(d-1)*p/2,v.width=x,v.y=0,v.height=x*3,v.rx=5,v.ry=5,v.cssClasses=v.cssClasses+" section-"+d;let b=await ym(u,v);g=Math.max(g,b?.labelBBox?.height),m.push(b)}let y=0;for(let v of f){let x=m[y];y=y+1;let b=s?.kanban?.sectionWidth||200,w=-b*3/2+g,C=w,T=a.nodes.filter(S=>S.parentId===v.id);for(let S of T){if(S.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");S.x=v.x,S.width=b-1.5*p;let I=(await vm(h,S,{config:s})).node().getBBox();S.y=C+I.height/2,await k2(S),C=S.y+I.height/2+p/2}let E=x.cluster.select("rect"),A=Math.max(C-w+3*p,50)+(g-25);E.attr("height",A)}Ao(void 0,l,s.mindmap?.padding??or.kanban.padding,s.mindmap?.useMaxWidth??or.kanban.useMaxWidth)},"draw"),o1e={draw:kJe}});var EJe,SJe,c1e,u1e=N(()=>{"use strict";Ys();EJe=o(t=>{let e="";for(let n=0;nt.darkMode?Ot(n,i):Dt(n,i),"adjuster");for(let n=0;n` + .edge { + stroke-width: 3; + } + ${EJe(t)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${t.git0}; + } + .section-root text { + fill: ${t.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .cluster-label, .label { + color: ${t.textColor}; + fill: ${t.textColor}; + } + .kanban-label { + dy: 1em; + alignment-baseline: middle; + text-anchor: middle; + dominant-baseline: middle; + text-align: center; + } +`,"getStyles"),c1e=SJe});var h1e={};hr(h1e,{diagram:()=>CJe});var CJe,f1e=N(()=>{"use strict";n1e();s1e();l1e();u1e();CJe={db:a1e,renderer:o1e,parser:r1e,styles:c1e}});var MB,d4,m1e=N(()=>{"use strict";MB=function(){var t=o(function(l,u,h,f){for(h=h||{},f=l.length;f--;h[l[f]]=u);return h},"o"),e=[1,9],r=[1,10],n=[1,5,10,12],i={trace:o(function(){},"trace"),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:o(function(u,h,f,d,p,m,g){var y=m.length-1;switch(p){case 7:let v=d.findOrCreateNode(m[y-4].trim().replaceAll('""','"')),x=d.findOrCreateNode(m[y-2].trim().replaceAll('""','"')),b=parseFloat(m[y].trim());d.addLink(v,x,b);break;case 8:case 9:case 11:this.$=m[y];break;case 10:this.$=m[y-1];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:e,20:r},{1:[2,6],7:11,10:[1,12]},t(r,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(n,[2,8]),t(n,[2,9]),{19:[1,16]},t(n,[2,11]),{1:[2,1]},{1:[2,5]},t(r,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:e,20:r},{15:18,16:7,17:8,18:e,20:r},{18:[1,19]},t(r,[2,3]),{12:[1,20]},t(n,[2,10]),{15:21,16:7,17:8,18:e,20:r},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:o(function(u,h){if(h.recoverable)this.trace(u);else{var f=new Error(u);throw f.hash=h,f}},"parseError"),parse:o(function(u){var h=this,f=[0],d=[],p=[null],m=[],g=this.table,y="",v=0,x=0,b=0,w=2,C=1,T=m.slice.call(arguments,1),E=Object.create(this.lexer),A={yy:{}};for(var S in this.yy)Object.prototype.hasOwnProperty.call(this.yy,S)&&(A.yy[S]=this.yy[S]);E.setInput(u,A.yy),A.yy.lexer=E,A.yy.parser=this,typeof E.yylloc>"u"&&(E.yylloc={});var _=E.yylloc;m.push(_);var I=E.options&&E.options.ranges;typeof A.yy.parseError=="function"?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function D(ie){f.length=f.length-2*ie,p.length=p.length-ie,m.length=m.length-ie}o(D,"popStack");function k(){var ie;return ie=d.pop()||E.lex()||C,typeof ie!="number"&&(ie instanceof Array&&(d=ie,ie=d.pop()),ie=h.symbols_[ie]||ie),ie}o(k,"lex");for(var L,R,O,M,B,F,P={},z,$,H,Q;;){if(O=f[f.length-1],this.defaultActions[O]?M=this.defaultActions[O]:((L===null||typeof L>"u")&&(L=k()),M=g[O]&&g[O][L]),typeof M>"u"||!M.length||!M[0]){var j="";Q=[];for(z in g[O])this.terminals_[z]&&z>w&&Q.push("'"+this.terminals_[z]+"'");E.showPosition?j="Parse error on line "+(v+1)+`: +`+E.showPosition()+` +Expecting `+Q.join(", ")+", got '"+(this.terminals_[L]||L)+"'":j="Parse error on line "+(v+1)+": Unexpected "+(L==C?"end of input":"'"+(this.terminals_[L]||L)+"'"),this.parseError(j,{text:E.match,token:this.terminals_[L]||L,line:E.yylineno,loc:_,expected:Q})}if(M[0]instanceof Array&&M.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+L);switch(M[0]){case 1:f.push(L),p.push(E.yytext),m.push(E.yylloc),f.push(M[1]),L=null,R?(L=R,R=null):(x=E.yyleng,y=E.yytext,v=E.yylineno,_=E.yylloc,b>0&&b--);break;case 2:if($=this.productions_[M[1]][1],P.$=p[p.length-$],P._$={first_line:m[m.length-($||1)].first_line,last_line:m[m.length-1].last_line,first_column:m[m.length-($||1)].first_column,last_column:m[m.length-1].last_column},I&&(P._$.range=[m[m.length-($||1)].range[0],m[m.length-1].range[1]]),F=this.performAction.apply(P,[y,x,v,A.yy,M[1],p,m].concat(T)),typeof F<"u")return F;$&&(f=f.slice(0,-1*$*2),p=p.slice(0,-1*$),m=m.slice(0,-1*$)),f.push(this.productions_[M[1]][0]),p.push(P.$),m.push(P._$),H=g[f[f.length-2]][f[f.length-1]],f.push(H);break;case 3:return!0}}return!0},"parse")},a=function(){var l={EOF:1,parseError:o(function(h,f){if(this.yy.parser)this.yy.parser.parseError(h,f);else throw new Error(h)},"parseError"),setInput:o(function(u,h){return this.yy=h||this.yy||{},this._input=u,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},"setInput"),input:o(function(){var u=this._input[0];this.yytext+=u,this.yyleng++,this.offset++,this.match+=u,this.matched+=u;var h=u.match(/(?:\r\n?|\n).*/g);return h?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),u},"input"),unput:o(function(u){var h=u.length,f=u.split(/(?:\r\n?|\n)/g);this._input=u+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-h),this.offset-=h;var d=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),f.length-1&&(this.yylineno-=f.length-1);var p=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:f?(f.length===d.length?this.yylloc.first_column:0)+d[d.length-f.length].length-f[0].length:this.yylloc.first_column-h},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-h]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(u){this.unput(this.match.slice(u))},"less"),pastInput:o(function(){var u=this.matched.substr(0,this.matched.length-this.match.length);return(u.length>20?"...":"")+u.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var u=this.match;return u.length<20&&(u+=this._input.substr(0,20-u.length)),(u.substr(0,20)+(u.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var u=this.pastInput(),h=new Array(u.length+1).join("-");return u+this.upcomingInput()+` +`+h+"^"},"showPosition"),test_match:o(function(u,h){var f,d,p;if(this.options.backtrack_lexer&&(p={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&&(p.yylloc.range=this.yylloc.range.slice(0))),d=u[0].match(/(?:\r\n?|\n).*/g),d&&(this.yylineno+=d.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:d?d[d.length-1].length-d[d.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+u[0].length},this.yytext+=u[0],this.match+=u[0],this.matches=u,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(u[0].length),this.matched+=u[0],f=this.performAction.call(this,this.yy,this,h,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),f)return f;if(this._backtrack){for(var m in p)this[m]=p[m];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var u,h,f,d;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),m=0;mh[0].length)){if(h=f,d=m,this.options.backtrack_lexer){if(u=this.test_match(f,p[m]),u!==!1)return u;if(this._backtrack){h=!1;continue}else return!1}else if(!this.options.flex)break}return h?(u=this.test_match(h,p[d]),u!==!1?u:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var h=this.next();return h||this.lex()},"lex"),begin:o(function(h){this.conditionStack.push(h)},"begin"),popState:o(function(){var h=this.conditionStack.length-1;return h>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(h){return h=this.conditionStack.length-1-Math.abs(h||0),h>=0?this.conditionStack[h]:"INITIAL"},"topState"),pushState:o(function(h){this.begin(h)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(h,f,d,p){var m=p;switch(d){case 0:return this.pushState("csv"),4;break;case 1:return 10;case 2:return 5;case 3:return 12;case 4:return this.pushState("escaped_text"),18;break;case 5:return 20;case 6:return this.popState("escaped_text"),18;break;case 7:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],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}}};return l}();i.lexer=a;function s(){this.yy={}}return o(s,"Parser"),s.prototype=i,i.Parser=s,new s}();MB.parser=MB;d4=MB});var XS,jS,YS,LJe,IB,RJe,OB,NJe,MJe,IJe,OJe,g1e,y1e=N(()=>{"use strict";zt();gr();mi();XS=[],jS=[],YS=new Map,LJe=o(()=>{XS=[],jS=[],YS=new Map,Ar()},"clear"),IB=class{constructor(e,r,n=0){this.source=e;this.target=r;this.value=n}static{o(this,"SankeyLink")}},RJe=o((t,e,r)=>{XS.push(new IB(t,e,r))},"addLink"),OB=class{constructor(e){this.ID=e}static{o(this,"SankeyNode")}},NJe=o(t=>{t=Ze.sanitizeText(t,me());let e=YS.get(t);return e===void 0&&(e=new OB(t),YS.set(t,e),jS.push(e)),e},"findOrCreateNode"),MJe=o(()=>jS,"getNodes"),IJe=o(()=>XS,"getLinks"),OJe=o(()=>({nodes:jS.map(t=>({id:t.ID})),links:XS.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),"getGraph"),g1e={nodesMap:YS,getConfig:o(()=>me().sankey,"getConfig"),getNodes:MJe,getLinks:IJe,getGraph:OJe,addLink:RJe,findOrCreateNode:NJe,getAccTitle:Rr,setAccTitle:Lr,getAccDescription:Mr,setAccDescription:Nr,getDiagramTitle:Ir,setDiagramTitle:$r,clear:LJe}});function p4(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r=i)&&(r=i)}return r}var v1e=N(()=>{"use strict";o(p4,"max")});function cy(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var x1e=N(()=>{"use strict";o(cy,"min")});function uy(t,e){let r=0;if(e===void 0)for(let n of t)(n=+n)&&(r+=n);else{let n=-1;for(let i of t)(i=+e(i,++n,t))&&(r+=i)}return r}var b1e=N(()=>{"use strict";o(uy,"sum")});var PB=N(()=>{"use strict";v1e();x1e();b1e()});function PJe(t){return t.target.depth}function BB(t){return t.depth}function FB(t,e){return e-1-t.height}function m4(t,e){return t.sourceLinks.length?t.depth:e-1}function $B(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?cy(t.sourceLinks,PJe)-1:0}var zB=N(()=>{"use strict";PB();o(PJe,"targetDepth");o(BB,"left");o(FB,"right");o(m4,"justify");o($B,"center")});function hy(t){return function(){return t}}var w1e=N(()=>{"use strict";o(hy,"constant")});function T1e(t,e){return KS(t.source,e.source)||t.index-e.index}function k1e(t,e){return KS(t.target,e.target)||t.index-e.index}function KS(t,e){return t.y0-e.y0}function GB(t){return t.value}function BJe(t){return t.index}function FJe(t){return t.nodes}function $Je(t){return t.links}function E1e(t,e){let r=t.get(e);if(!r)throw new Error("missing: "+e);return r}function S1e({nodes:t}){for(let e of t){let r=e.y0,n=r;for(let i of e.sourceLinks)i.y0=r+i.width/2,r+=i.width;for(let i of e.targetLinks)i.y1=n+i.width/2,n+=i.width}}function QS(){let t=0,e=0,r=1,n=1,i=24,a=8,s,l=BJe,u=m4,h,f,d=FJe,p=$Je,m=6;function g(){let O={nodes:d.apply(null,arguments),links:p.apply(null,arguments)};return y(O),v(O),x(O),b(O),T(O),S1e(O),O}o(g,"sankey"),g.update=function(O){return S1e(O),O},g.nodeId=function(O){return arguments.length?(l=typeof O=="function"?O:hy(O),g):l},g.nodeAlign=function(O){return arguments.length?(u=typeof O=="function"?O:hy(O),g):u},g.nodeSort=function(O){return arguments.length?(h=O,g):h},g.nodeWidth=function(O){return arguments.length?(i=+O,g):i},g.nodePadding=function(O){return arguments.length?(a=s=+O,g):a},g.nodes=function(O){return arguments.length?(d=typeof O=="function"?O:hy(O),g):d},g.links=function(O){return arguments.length?(p=typeof O=="function"?O:hy(O),g):p},g.linkSort=function(O){return arguments.length?(f=O,g):f},g.size=function(O){return arguments.length?(t=e=0,r=+O[0],n=+O[1],g):[r-t,n-e]},g.extent=function(O){return arguments.length?(t=+O[0][0],r=+O[1][0],e=+O[0][1],n=+O[1][1],g):[[t,e],[r,n]]},g.iterations=function(O){return arguments.length?(m=+O,g):m};function y({nodes:O,links:M}){for(let[F,P]of O.entries())P.index=F,P.sourceLinks=[],P.targetLinks=[];let B=new Map(O.map((F,P)=>[l(F,P,O),F]));for(let[F,P]of M.entries()){P.index=F;let{source:z,target:$}=P;typeof z!="object"&&(z=P.source=E1e(B,z)),typeof $!="object"&&($=P.target=E1e(B,$)),z.sourceLinks.push(P),$.targetLinks.push(P)}if(f!=null)for(let{sourceLinks:F,targetLinks:P}of O)F.sort(f),P.sort(f)}o(y,"computeNodeLinks");function v({nodes:O}){for(let M of O)M.value=M.fixedValue===void 0?Math.max(uy(M.sourceLinks,GB),uy(M.targetLinks,GB)):M.fixedValue}o(v,"computeNodeValues");function x({nodes:O}){let M=O.length,B=new Set(O),F=new Set,P=0;for(;B.size;){for(let z of B){z.depth=P;for(let{target:$}of z.sourceLinks)F.add($)}if(++P>M)throw new Error("circular link");B=F,F=new Set}}o(x,"computeNodeDepths");function b({nodes:O}){let M=O.length,B=new Set(O),F=new Set,P=0;for(;B.size;){for(let z of B){z.height=P;for(let{source:$}of z.targetLinks)F.add($)}if(++P>M)throw new Error("circular link");B=F,F=new Set}}o(b,"computeNodeHeights");function w({nodes:O}){let M=p4(O,P=>P.depth)+1,B=(r-t-i)/(M-1),F=new Array(M);for(let P of O){let z=Math.max(0,Math.min(M-1,Math.floor(u.call(null,P,M))));P.layer=z,P.x0=t+z*B,P.x1=P.x0+i,F[z]?F[z].push(P):F[z]=[P]}if(h)for(let P of F)P.sort(h);return F}o(w,"computeNodeLayers");function C(O){let M=cy(O,B=>(n-e-(B.length-1)*s)/uy(B,GB));for(let B of O){let F=e;for(let P of B){P.y0=F,P.y1=F+P.value*M,F=P.y1+s;for(let z of P.sourceLinks)z.width=z.value*M}F=(n-F+s)/(B.length+1);for(let P=0;PB.length)-1)),C(M);for(let B=0;B0))continue;let j=(H/Q-$.y0)*M;$.y0+=j,$.y1+=j,D($)}h===void 0&&z.sort(KS),S(z,B)}}o(E,"relaxLeftToRight");function A(O,M,B){for(let F=O.length,P=F-2;P>=0;--P){let z=O[P];for(let $ of z){let H=0,Q=0;for(let{target:ie,value:ne}of $.sourceLinks){let le=ne*(ie.layer-$.layer);H+=R($,ie)*le,Q+=le}if(!(Q>0))continue;let j=(H/Q-$.y0)*M;$.y0+=j,$.y1+=j,D($)}h===void 0&&z.sort(KS),S(z,B)}}o(A,"relaxRightToLeft");function S(O,M){let B=O.length>>1,F=O[B];I(O,F.y0-s,B-1,M),_(O,F.y1+s,B+1,M),I(O,n,O.length-1,M),_(O,e,0,M)}o(S,"resolveCollisions");function _(O,M,B,F){for(;B1e-6&&(P.y0+=z,P.y1+=z),M=P.y1+s}}o(_,"resolveCollisionsTopToBottom");function I(O,M,B,F){for(;B>=0;--B){let P=O[B],z=(P.y1-M)*F;z>1e-6&&(P.y0-=z,P.y1-=z),M=P.y0-s}}o(I,"resolveCollisionsBottomToTop");function D({sourceLinks:O,targetLinks:M}){if(f===void 0){for(let{source:{sourceLinks:B}}of M)B.sort(k1e);for(let{target:{targetLinks:B}}of O)B.sort(T1e)}}o(D,"reorderNodeLinks");function k(O){if(f===void 0)for(let{sourceLinks:M,targetLinks:B}of O)M.sort(k1e),B.sort(T1e)}o(k,"reorderLinks");function L(O,M){let B=O.y0-(O.sourceLinks.length-1)*s/2;for(let{target:F,width:P}of O.sourceLinks){if(F===M)break;B+=P+s}for(let{source:F,width:P}of M.targetLinks){if(F===O)break;B-=P}return B}o(L,"targetTop");function R(O,M){let B=M.y0-(M.targetLinks.length-1)*s/2;for(let{source:F,width:P}of M.targetLinks){if(F===O)break;B+=P+s}for(let{target:F,width:P}of O.sourceLinks){if(F===M)break;B-=P}return B}return o(R,"sourceTop"),g}var C1e=N(()=>{"use strict";PB();zB();w1e();o(T1e,"ascendingSourceBreadth");o(k1e,"ascendingTargetBreadth");o(KS,"ascendingBreadth");o(GB,"value");o(BJe,"defaultId");o(FJe,"defaultNodes");o($Je,"defaultLinks");o(E1e,"find");o(S1e,"computeLinkBreadths");o(QS,"Sankey")});function HB(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function A1e(){return new HB}var VB,UB,Xp,zJe,WB,_1e=N(()=>{"use strict";VB=Math.PI,UB=2*VB,Xp=1e-6,zJe=UB-Xp;o(HB,"Path");o(A1e,"path");HB.prototype=A1e.prototype={constructor:HB,moveTo:o(function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},"moveTo"),closePath:o(function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},"closePath"),lineTo:o(function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},"lineTo"),quadraticCurveTo:o(function(t,e,r,n){this._+="Q"+ +t+","+ +e+","+(this._x1=+r)+","+(this._y1=+n)},"quadraticCurveTo"),bezierCurveTo:o(function(t,e,r,n,i,a){this._+="C"+ +t+","+ +e+","+ +r+","+ +n+","+(this._x1=+i)+","+(this._y1=+a)},"bezierCurveTo"),arcTo:o(function(t,e,r,n,i){t=+t,e=+e,r=+r,n=+n,i=+i;var a=this._x1,s=this._y1,l=r-t,u=n-e,h=a-t,f=s-e,d=h*h+f*f;if(i<0)throw new Error("negative radius: "+i);if(this._x1===null)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(d>Xp)if(!(Math.abs(f*l-u*h)>Xp)||!i)this._+="L"+(this._x1=t)+","+(this._y1=e);else{var p=r-a,m=n-s,g=l*l+u*u,y=p*p+m*m,v=Math.sqrt(g),x=Math.sqrt(d),b=i*Math.tan((VB-Math.acos((g+d-y)/(2*v*x)))/2),w=b/x,C=b/v;Math.abs(w-1)>Xp&&(this._+="L"+(t+w*h)+","+(e+w*f)),this._+="A"+i+","+i+",0,0,"+ +(f*p>h*m)+","+(this._x1=t+C*l)+","+(this._y1=e+C*u)}},"arcTo"),arc:o(function(t,e,r,n,i,a){t=+t,e=+e,r=+r,a=!!a;var s=r*Math.cos(n),l=r*Math.sin(n),u=t+s,h=e+l,f=1^a,d=a?n-i:i-n;if(r<0)throw new Error("negative radius: "+r);this._x1===null?this._+="M"+u+","+h:(Math.abs(this._x1-u)>Xp||Math.abs(this._y1-h)>Xp)&&(this._+="L"+u+","+h),r&&(d<0&&(d=d%UB+UB),d>zJe?this._+="A"+r+","+r+",0,1,"+f+","+(t-s)+","+(e-l)+"A"+r+","+r+",0,1,"+f+","+(this._x1=u)+","+(this._y1=h):d>Xp&&(this._+="A"+r+","+r+",0,"+ +(d>=VB)+","+f+","+(this._x1=t+r*Math.cos(i))+","+(this._y1=e+r*Math.sin(i))))},"arc"),rect:o(function(t,e,r,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +r+"v"+ +n+"h"+-r+"Z"},"rect"),toString:o(function(){return this._},"toString")};WB=A1e});var D1e=N(()=>{"use strict";_1e()});function ZS(t){return o(function(){return t},"constant")}var L1e=N(()=>{"use strict";o(ZS,"default")});function R1e(t){return t[0]}function N1e(t){return t[1]}var M1e=N(()=>{"use strict";o(R1e,"x");o(N1e,"y")});var I1e,O1e=N(()=>{"use strict";I1e=Array.prototype.slice});function GJe(t){return t.source}function VJe(t){return t.target}function UJe(t){var e=GJe,r=VJe,n=R1e,i=N1e,a=null;function s(){var l,u=I1e.call(arguments),h=e.apply(this,u),f=r.apply(this,u);if(a||(a=l=WB()),t(a,+n.apply(this,(u[0]=h,u)),+i.apply(this,u),+n.apply(this,(u[0]=f,u)),+i.apply(this,u)),l)return a=null,l+""||null}return o(s,"link"),s.source=function(l){return arguments.length?(e=l,s):e},s.target=function(l){return arguments.length?(r=l,s):r},s.x=function(l){return arguments.length?(n=typeof l=="function"?l:ZS(+l),s):n},s.y=function(l){return arguments.length?(i=typeof l=="function"?l:ZS(+l),s):i},s.context=function(l){return arguments.length?(a=l??null,s):a},s}function HJe(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function qB(){return UJe(HJe)}var P1e=N(()=>{"use strict";D1e();O1e();L1e();M1e();o(GJe,"linkSource");o(VJe,"linkTarget");o(UJe,"link");o(HJe,"curveHorizontal");o(qB,"linkHorizontal")});var B1e=N(()=>{"use strict";P1e()});function WJe(t){return[t.source.x1,t.y0]}function qJe(t){return[t.target.x0,t.y1]}function JS(){return qB().source(WJe).target(qJe)}var F1e=N(()=>{"use strict";B1e();o(WJe,"horizontalSource");o(qJe,"horizontalTarget");o(JS,"default")});var $1e=N(()=>{"use strict";C1e();zB();F1e()});var g4,z1e=N(()=>{"use strict";g4=class t{static{o(this,"Uid")}static{this.count=0}static next(e){return new t(e+ ++t.count)}constructor(e){this.id=e,this.href=`#${e}`}toString(){return"url("+this.href+")"}}});var YJe,XJe,G1e,V1e=N(()=>{"use strict";zt();dr();$1e();Ei();z1e();YJe={left:BB,right:FB,center:$B,justify:m4},XJe=o(function(t,e,r,n){let{securityLevel:i,sankey:a}=me(),s=A3.sankey,l;i==="sandbox"&&(l=Ge("#i"+e));let u=i==="sandbox"?Ge(l.nodes()[0].contentDocument.body):Ge("body"),h=i==="sandbox"?u.select(`[id="${e}"]`):Ge(`[id="${e}"]`),f=a?.width??s.width,d=a?.height??s.width,p=a?.useMaxWidth??s.useMaxWidth,m=a?.nodeAlignment??s.nodeAlignment,g=a?.prefix??s.prefix,y=a?.suffix??s.suffix,v=a?.showValues??s.showValues,x=n.db.getGraph(),b=YJe[m];QS().nodeId(I=>I.id).nodeWidth(10).nodePadding(10+(v?15:0)).nodeAlign(b).extent([[0,0],[f,d]])(x);let T=gu(e9);h.append("g").attr("class","nodes").selectAll(".node").data(x.nodes).join("g").attr("class","node").attr("id",I=>(I.uid=g4.next("node-")).id).attr("transform",function(I){return"translate("+I.x0+","+I.y0+")"}).attr("x",I=>I.x0).attr("y",I=>I.y0).append("rect").attr("height",I=>I.y1-I.y0).attr("width",I=>I.x1-I.x0).attr("fill",I=>T(I.id));let E=o(({id:I,value:D})=>v?`${I} +${g}${Math.round(D*100)/100}${y}`:I,"getText");h.append("g").attr("class","node-labels").attr("font-size",14).selectAll("text").data(x.nodes).join("text").attr("x",I=>I.x0(I.y1+I.y0)/2).attr("dy",`${v?"0":"0.35"}em`).attr("text-anchor",I=>I.x0(D.uid=g4.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",D=>D.source.x1).attr("x2",D=>D.target.x0);I.append("stop").attr("offset","0%").attr("stop-color",D=>T(D.source.id)),I.append("stop").attr("offset","100%").attr("stop-color",D=>T(D.target.id))}let _;switch(S){case"gradient":_=o(I=>I.uid,"coloring");break;case"source":_=o(I=>T(I.source.id),"coloring");break;case"target":_=o(I=>T(I.target.id),"coloring");break;default:_=S}A.append("path").attr("d",JS()).attr("stroke",_).attr("stroke-width",I=>Math.max(1,I.width)),Ao(void 0,h,0,p)},"draw"),G1e={draw:XJe}});var U1e,H1e=N(()=>{"use strict";U1e=o(t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` +`).trim(),"prepareTextForParsing")});var jJe,W1e,q1e=N(()=>{"use strict";jJe=o(t=>`.label { + font-family: ${t.fontFamily}; + }`,"getStyles"),W1e=jJe});var Y1e={};hr(Y1e,{diagram:()=>QJe});var KJe,QJe,X1e=N(()=>{"use strict";m1e();y1e();V1e();H1e();q1e();KJe=d4.parse.bind(d4);d4.parse=t=>KJe(U1e(t));QJe={styles:W1e,parser:d4,db:g1e,renderer:G1e}});var Q1e,YB,tet,ret,net,iet,aet,Bf,XB=N(()=>{"use strict";ji();Ya();ir();mi();Q1e={packet:[]},YB=structuredClone(Q1e),tet=or.packet,ret=o(()=>{let t=Fi({...tet,...cr().packet});return t.showBits&&(t.paddingY+=10),t},"getConfig"),net=o(()=>YB.packet,"getPacket"),iet=o(t=>{t.length>0&&YB.packet.push(t)},"pushWord"),aet=o(()=>{Ar(),YB=structuredClone(Q1e)},"clear"),Bf={pushWord:iet,getPacket:net,getConfig:ret,clear:aet,setAccTitle:Lr,getAccTitle:Rr,setDiagramTitle:$r,getDiagramTitle:Ir,getAccDescription:Mr,setAccDescription:Nr}});var set,oet,cet,Z1e,J1e=N(()=>{"use strict";kp();vt();T1();XB();set=1e4,oet=o(t=>{$c(t,Bf);let e=-1,r=[],n=1,{bitsPerRow:i}=Bf.getConfig();for(let{start:a,end:s,label:l}of t.blocks){if(s&&s{if(t.end===void 0&&(t.end=t.start),t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);return t.end+1<=e*r?[t,void 0]:[{start:t.start,end:e*r-1,label:t.label},{start:e*r,end:t.end,label:t.label}]},"getNextFittingBlock"),Z1e={parse:o(async t=>{let e=await uo("packet",t);Y.debug(e),oet(e)},"parse")}});var uet,het,eye,tye=N(()=>{"use strict";Vc();Ei();uet=o((t,e,r,n)=>{let i=n.db,a=i.getConfig(),{rowHeight:s,paddingY:l,bitWidth:u,bitsPerRow:h}=a,f=i.getPacket(),d=i.getDiagramTitle(),p=s+l,m=p*(f.length+1)-(d?0:s),g=u*h+2,y=sa(e);y.attr("viewbox",`0 0 ${g} ${m}`),vn(y,m,g,a.useMaxWidth);for(let[v,x]of f.entries())het(y,x,v,a);y.append("text").text(d).attr("x",g/2).attr("y",m-p/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),het=o((t,e,r,{rowHeight:n,paddingX:i,paddingY:a,bitWidth:s,bitsPerRow:l,showBits:u})=>{let h=t.append("g"),f=r*(n+a)+a;for(let d of e){let p=d.start%l*s+1,m=(d.end-d.start+1)*s-i;if(h.append("rect").attr("x",p).attr("y",f).attr("width",m).attr("height",n).attr("class","packetBlock"),h.append("text").attr("x",p+m/2).attr("y",f+n/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(d.label),!u)continue;let g=d.end===d.start,y=f-2;h.append("text").attr("x",p+(g?m/2:0)).attr("y",y).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",g?"middle":"start").text(d.start),g||h.append("text").attr("x",p+m).attr("y",y).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(d.end)}},"drawWord"),eye={draw:uet}});var fet,rye,nye=N(()=>{"use strict";ir();fet={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},rye=o(({packet:t}={})=>{let e=Fi(fet,t);return` + .packetByte { + font-size: ${e.byteFontSize}; + } + .packetByte.start { + fill: ${e.startByteColor}; + } + .packetByte.end { + fill: ${e.endByteColor}; + } + .packetLabel { + fill: ${e.labelColor}; + font-size: ${e.labelFontSize}; + } + .packetTitle { + fill: ${e.titleColor}; + font-size: ${e.titleFontSize}; + } + .packetBlock { + stroke: ${e.blockStrokeColor}; + stroke-width: ${e.blockStrokeWidth}; + fill: ${e.blockFillColor}; + } + `},"styles")});var iye={};hr(iye,{diagram:()=>det});var det,aye=N(()=>{"use strict";XB();J1e();tye();nye();det={parser:Z1e,db:Bf,renderer:eye,styles:rye}});var fy,lye,jp,get,yet,cye,vet,xet,bet,wet,Tet,ket,Eet,Kp,jB=N(()=>{"use strict";ji();Ya();ir();mi();fy={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},lye={axes:[],curves:[],options:fy},jp=structuredClone(lye),get=or.radar,yet=o(()=>Fi({...get,...cr().radar}),"getConfig"),cye=o(()=>jp.axes,"getAxes"),vet=o(()=>jp.curves,"getCurves"),xet=o(()=>jp.options,"getOptions"),bet=o(t=>{jp.axes=t.map(e=>({name:e.name,label:e.label??e.name}))},"setAxes"),wet=o(t=>{jp.curves=t.map(e=>({name:e.name,label:e.label??e.name,entries:Tet(e.entries)}))},"setCurves"),Tet=o(t=>{if(t[0].axis==null)return t.map(r=>r.value);let e=cye();if(e.length===0)throw new Error("Axes must be populated before curves for reference entries");return e.map(r=>{let n=t.find(i=>i.axis?.$refText===r.name);if(n===void 0)throw new Error("Missing entry for axis "+r.label);return n.value})},"computeCurveEntries"),ket=o(t=>{let e=t.reduce((r,n)=>(r[n.name]=n,r),{});jp.options={showLegend:e.showLegend?.value??fy.showLegend,ticks:e.ticks?.value??fy.ticks,max:e.max?.value??fy.max,min:e.min?.value??fy.min,graticule:e.graticule?.value??fy.graticule}},"setOptions"),Eet=o(()=>{Ar(),jp=structuredClone(lye)},"clear"),Kp={getAxes:cye,getCurves:vet,getOptions:xet,setAxes:bet,setCurves:wet,setOptions:ket,getConfig:yet,clear:Eet,setAccTitle:Lr,getAccTitle:Rr,setDiagramTitle:$r,getDiagramTitle:Ir,getAccDescription:Mr,setAccDescription:Nr}});var Cet,uye,hye=N(()=>{"use strict";kp();vt();T1();jB();Cet=o(t=>{$c(t,Kp);let{axes:e,curves:r,options:n}=t;Kp.setAxes(e),Kp.setCurves(r),Kp.setOptions(n)},"populate"),uye={parse:o(async t=>{let e=await uo("radar",t);Y.debug(e),Cet(e)},"parse")}});function Ret(t,e,r,n,i,a,s){let l=e.length,u=Math.min(s.width,s.height)/2;r.forEach((h,f)=>{if(h.entries.length!==l)return;let d=h.entries.map((p,m)=>{let g=2*Math.PI*m/l-Math.PI/2,y=Net(p,n,i,u),v=y*Math.cos(g),x=y*Math.sin(g);return{x:v,y:x}});a==="circle"?t.append("path").attr("d",Met(d,s.curveTension)).attr("class",`radarCurve-${f}`):a==="polygon"&&t.append("polygon").attr("points",d.map(p=>`${p.x},${p.y}`).join(" ")).attr("class",`radarCurve-${f}`)})}function Net(t,e,r,n){let i=Math.min(Math.max(t,e),r);return n*(i-e)/(r-e)}function Met(t,e){let r=t.length,n=`M${t[0].x},${t[0].y}`;for(let i=0;i{let h=t.append("g").attr("transform",`translate(${i}, ${a+u*s})`);h.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${u}`),h.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(l.label)})}var Aet,_et,Det,Let,fye,dye=N(()=>{"use strict";Vc();Aet=o((t,e,r,n)=>{let i=n.db,a=i.getAxes(),s=i.getCurves(),l=i.getOptions(),u=i.getConfig(),h=i.getDiagramTitle(),f=sa(e),d=_et(f,u),p=l.max??Math.max(...s.map(y=>Math.max(...y.entries))),m=l.min,g=Math.min(u.width,u.height)/2;Det(d,a,g,l.ticks,l.graticule),Let(d,a,g,u),Ret(d,a,s,m,p,l.graticule,u),Iet(d,s,l.showLegend,u),d.append("text").attr("class","radarTitle").text(h).attr("x",0).attr("y",-u.height/2-u.marginTop)},"draw"),_et=o((t,e)=>{let r=e.width+e.marginLeft+e.marginRight,n=e.height+e.marginTop+e.marginBottom,i={x:e.marginLeft+e.width/2,y:e.marginTop+e.height/2};return t.attr("viewbox",`0 0 ${r} ${n}`).attr("width",r).attr("height",n),t.append("g").attr("transform",`translate(${i.x}, ${i.y})`)},"drawFrame"),Det=o((t,e,r,n,i)=>{if(i==="circle")for(let a=0;a{let d=2*f*Math.PI/a-Math.PI/2,p=l*Math.cos(d),m=l*Math.sin(d);return`${p},${m}`}).join(" ");t.append("polygon").attr("points",u).attr("class","radarGraticule")}}},"drawGraticule"),Let=o((t,e,r,n)=>{let i=e.length;for(let a=0;a{"use strict";ir();_y();ji();Oet=o((t,e)=>{let r="";for(let n=0;n{let e=oh(),r=cr(),n=Fi(e,r.themeVariables),i=Fi(n.radar,t);return{themeVariables:n,radarOptions:i}},"buildRadarStyleOptions"),pye=o(({radar:t}={})=>{let{themeVariables:e,radarOptions:r}=Pet(t);return` + .radarTitle { + font-size: ${e.fontSize}; + color: ${e.titleColor}; + dominant-baseline: hanging; + text-anchor: middle; + } + .radarAxisLine { + stroke: ${r.axisColor}; + stroke-width: ${r.axisStrokeWidth}; + } + .radarAxisLabel { + dominant-baseline: middle; + text-anchor: middle; + font-size: ${r.axisLabelFontSize}px; + color: ${r.axisColor}; + } + .radarGraticule { + fill: ${r.graticuleColor}; + fill-opacity: ${r.graticuleOpacity}; + stroke: ${r.graticuleColor}; + stroke-width: ${r.graticuleStrokeWidth}; + } + .radarLegendText { + text-anchor: start; + font-size: ${r.legendFontSize}px; + dominant-baseline: hanging; + } + ${Oet(e,r)} + `},"styles")});var gye={};hr(gye,{diagram:()=>Bet});var Bet,yye=N(()=>{"use strict";jB();hye();dye();mye();Bet={parser:uye,db:Kp,renderer:fye,styles:pye}});var KB,bye,wye=N(()=>{"use strict";KB=function(){var t=o(function(w,C,T,E){for(T=T||{},E=w.length;E--;T[w[E]]=C);return T},"o"),e=[1,7],r=[1,13],n=[1,14],i=[1,15],a=[1,19],s=[1,16],l=[1,17],u=[1,18],h=[8,30],f=[8,21,28,29,30,31,32,40,44,47],d=[1,23],p=[1,24],m=[8,15,16,21,28,29,30,31,32,40,44,47],g=[8,15,16,21,27,28,29,30,31,32,40,44,47],y=[1,49],v={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,block:31,NODE_ID:32,nodeShapeNLabel:33,dirList:34,DIR:35,NODE_DSTART:36,NODE_DEND:37,BLOCK_ARROW_START:38,BLOCK_ARROW_END:39,classDef:40,CLASSDEF_ID:41,CLASSDEF_STYLEOPTS:42,DEFAULT:43,class:44,CLASSENTITY_IDS:45,STYLECLASS:46,style:47,STYLE_ENTITY_IDS:48,STYLE_DEFINITION_DATA:49,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"block",32:"NODE_ID",35:"DIR",36:"NODE_DSTART",37:"NODE_DEND",38:"BLOCK_ARROW_START",39:"BLOCK_ARROW_END",40:"classDef",41:"CLASSDEF_ID",42:"CLASSDEF_STYLEOPTS",43:"DEFAULT",44:"class",45:"CLASSENTITY_IDS",46:"STYLECLASS",47:"style",48:"STYLE_ENTITY_IDS",49:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[34,1],[34,2],[33,3],[33,4],[23,3],[23,3],[24,3],[25,3]],performAction:o(function(C,T,E,A,S,_,I){var D=_.length-1;switch(S){case 4:A.getLogger().debug("Rule: separator (NL) ");break;case 5:A.getLogger().debug("Rule: separator (Space) ");break;case 6:A.getLogger().debug("Rule: separator (EOF) ");break;case 7:A.getLogger().debug("Rule: hierarchy: ",_[D-1]),A.setHierarchy(_[D-1]);break;case 8:A.getLogger().debug("Stop NL ");break;case 9:A.getLogger().debug("Stop EOF ");break;case 10:A.getLogger().debug("Stop NL2 ");break;case 11:A.getLogger().debug("Stop EOF2 ");break;case 12:A.getLogger().debug("Rule: statement: ",_[D]),typeof _[D].length=="number"?this.$=_[D]:this.$=[_[D]];break;case 13:A.getLogger().debug("Rule: statement #2: ",_[D-1]),this.$=[_[D-1]].concat(_[D]);break;case 14:A.getLogger().debug("Rule: link: ",_[D],C),this.$={edgeTypeStr:_[D],label:""};break;case 15:A.getLogger().debug("Rule: LABEL link: ",_[D-3],_[D-1],_[D]),this.$={edgeTypeStr:_[D],label:_[D-1]};break;case 18:let k=parseInt(_[D]),L=A.generateId();this.$={id:L,type:"space",label:"",width:k,children:[]};break;case 23:A.getLogger().debug("Rule: (nodeStatement link node) ",_[D-2],_[D-1],_[D]," typestr: ",_[D-1].edgeTypeStr);let R=A.edgeStrToEdgeData(_[D-1].edgeTypeStr);this.$=[{id:_[D-2].id,label:_[D-2].label,type:_[D-2].type,directions:_[D-2].directions},{id:_[D-2].id+"-"+_[D].id,start:_[D-2].id,end:_[D].id,label:_[D-1].label,type:"edge",directions:_[D].directions,arrowTypeEnd:R,arrowTypeStart:"arrow_open"},{id:_[D].id,label:_[D].label,type:A.typeStr2Type(_[D].typeStr),directions:_[D].directions}];break;case 24:A.getLogger().debug("Rule: nodeStatement (abc88 node size) ",_[D-1],_[D]),this.$={id:_[D-1].id,label:_[D-1].label,type:A.typeStr2Type(_[D-1].typeStr),directions:_[D-1].directions,widthInColumns:parseInt(_[D],10)};break;case 25:A.getLogger().debug("Rule: nodeStatement (node) ",_[D]),this.$={id:_[D].id,label:_[D].label,type:A.typeStr2Type(_[D].typeStr),directions:_[D].directions,widthInColumns:1};break;case 26:A.getLogger().debug("APA123",this?this:"na"),A.getLogger().debug("COLUMNS: ",_[D]),this.$={type:"column-setting",columns:_[D]==="auto"?-1:parseInt(_[D])};break;case 27:A.getLogger().debug("Rule: id-block statement : ",_[D-2],_[D-1]);let O=A.generateId();this.$={..._[D-2],type:"composite",children:_[D-1]};break;case 28:A.getLogger().debug("Rule: blockStatement : ",_[D-2],_[D-1],_[D]);let M=A.generateId();this.$={id:M,type:"composite",label:"",children:_[D-1]};break;case 29:A.getLogger().debug("Rule: node (NODE_ID separator): ",_[D]),this.$={id:_[D]};break;case 30:A.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",_[D-1],_[D]),this.$={id:_[D-1],label:_[D].label,typeStr:_[D].typeStr,directions:_[D].directions};break;case 31:A.getLogger().debug("Rule: dirList: ",_[D]),this.$=[_[D]];break;case 32:A.getLogger().debug("Rule: dirList: ",_[D-1],_[D]),this.$=[_[D-1]].concat(_[D]);break;case 33:A.getLogger().debug("Rule: nodeShapeNLabel: ",_[D-2],_[D-1],_[D]),this.$={typeStr:_[D-2]+_[D],label:_[D-1]};break;case 34:A.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",_[D-3],_[D-2]," #3:",_[D-1],_[D]),this.$={typeStr:_[D-3]+_[D],label:_[D-2],directions:_[D-1]};break;case 35:case 36:this.$={type:"classDef",id:_[D-1].trim(),css:_[D].trim()};break;case 37:this.$={type:"applyClass",id:_[D-1].trim(),styleClass:_[D].trim()};break;case 38:this.$={type:"applyStyles",id:_[D-1].trim(),stylesStr:_[D].trim()};break}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{11:3,13:4,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:n,31:i,32:a,40:s,44:l,47:u},{8:[1,20]},t(h,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,21:e,28:r,29:n,31:i,32:a,40:s,44:l,47:u}),t(f,[2,16],{14:22,15:d,16:p}),t(f,[2,17]),t(f,[2,18]),t(f,[2,19]),t(f,[2,20]),t(f,[2,21]),t(f,[2,22]),t(m,[2,25],{27:[1,25]}),t(f,[2,26]),{19:26,26:12,32:a},{11:27,13:4,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:n,31:i,32:a,40:s,44:l,47:u},{41:[1,28],43:[1,29]},{45:[1,30]},{48:[1,31]},t(g,[2,29],{33:32,36:[1,33],38:[1,34]}),{1:[2,7]},t(h,[2,13]),{26:35,32:a},{32:[2,14]},{17:[1,36]},t(m,[2,24]),{11:37,13:4,14:22,15:d,16:p,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:n,31:i,32:a,40:s,44:l,47:u},{30:[1,38]},{42:[1,39]},{42:[1,40]},{46:[1,41]},{49:[1,42]},t(g,[2,30]),{18:[1,43]},{18:[1,44]},t(m,[2,23]),{18:[1,45]},{30:[1,46]},t(f,[2,28]),t(f,[2,35]),t(f,[2,36]),t(f,[2,37]),t(f,[2,38]),{37:[1,47]},{34:48,35:y},{15:[1,50]},t(f,[2,27]),t(g,[2,33]),{39:[1,51]},{34:52,35:y,39:[2,31]},{32:[2,15]},t(g,[2,34]),{39:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:o(function(C,T){if(T.recoverable)this.trace(C);else{var E=new Error(C);throw E.hash=T,E}},"parseError"),parse:o(function(C){var T=this,E=[0],A=[],S=[null],_=[],I=this.table,D="",k=0,L=0,R=0,O=2,M=1,B=_.slice.call(arguments,1),F=Object.create(this.lexer),P={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&(P.yy[z]=this.yy[z]);F.setInput(C,P.yy),P.yy.lexer=F,P.yy.parser=this,typeof F.yylloc>"u"&&(F.yylloc={});var $=F.yylloc;_.push($);var H=F.options&&F.options.ranges;typeof P.yy.parseError=="function"?this.parseError=P.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Q(ce){E.length=E.length-2*ce,S.length=S.length-ce,_.length=_.length-ce}o(Q,"popStack");function j(){var ce;return ce=A.pop()||F.lex()||M,typeof ce!="number"&&(ce instanceof Array&&(A=ce,ce=A.pop()),ce=T.symbols_[ce]||ce),ce}o(j,"lex");for(var ie,ne,le,he,K,X,te={},J,se,ue,Z;;){if(le=E[E.length-1],this.defaultActions[le]?he=this.defaultActions[le]:((ie===null||typeof ie>"u")&&(ie=j()),he=I[le]&&I[le][ie]),typeof he>"u"||!he.length||!he[0]){var Se="";Z=[];for(J in I[le])this.terminals_[J]&&J>O&&Z.push("'"+this.terminals_[J]+"'");F.showPosition?Se="Parse error on line "+(k+1)+`: +`+F.showPosition()+` +Expecting `+Z.join(", ")+", got '"+(this.terminals_[ie]||ie)+"'":Se="Parse error on line "+(k+1)+": Unexpected "+(ie==M?"end of input":"'"+(this.terminals_[ie]||ie)+"'"),this.parseError(Se,{text:F.match,token:this.terminals_[ie]||ie,line:F.yylineno,loc:$,expected:Z})}if(he[0]instanceof Array&&he.length>1)throw new Error("Parse Error: multiple actions possible at state: "+le+", token: "+ie);switch(he[0]){case 1:E.push(ie),S.push(F.yytext),_.push(F.yylloc),E.push(he[1]),ie=null,ne?(ie=ne,ne=null):(L=F.yyleng,D=F.yytext,k=F.yylineno,$=F.yylloc,R>0&&R--);break;case 2:if(se=this.productions_[he[1]][1],te.$=S[S.length-se],te._$={first_line:_[_.length-(se||1)].first_line,last_line:_[_.length-1].last_line,first_column:_[_.length-(se||1)].first_column,last_column:_[_.length-1].last_column},H&&(te._$.range=[_[_.length-(se||1)].range[0],_[_.length-1].range[1]]),X=this.performAction.apply(te,[D,L,k,P.yy,he[1],S,_].concat(B)),typeof X<"u")return X;se&&(E=E.slice(0,-1*se*2),S=S.slice(0,-1*se),_=_.slice(0,-1*se)),E.push(this.productions_[he[1]][0]),S.push(te.$),_.push(te._$),ue=I[E[E.length-2]][E[E.length-1]],E.push(ue);break;case 3:return!0}}return!0},"parse")},x=function(){var w={EOF:1,parseError:o(function(T,E){if(this.yy.parser)this.yy.parser.parseError(T,E);else throw new Error(T)},"parseError"),setInput:o(function(C,T){return this.yy=T||this.yy||{},this._input=C,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},"setInput"),input:o(function(){var C=this._input[0];this.yytext+=C,this.yyleng++,this.offset++,this.match+=C,this.matched+=C;var T=C.match(/(?:\r\n?|\n).*/g);return T?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),C},"input"),unput:o(function(C){var T=C.length,E=C.split(/(?:\r\n?|\n)/g);this._input=C+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-T),this.offset-=T;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 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===A.length?this.yylloc.first_column:0)+A[A.length-E.length].length-E[0].length:this.yylloc.first_column-T},this.options.ranges&&(this.yylloc.range=[S[0],S[0]+this.yyleng-T]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(C){this.unput(this.match.slice(C))},"less"),pastInput:o(function(){var C=this.matched.substr(0,this.matched.length-this.match.length);return(C.length>20?"...":"")+C.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var C=this.match;return C.length<20&&(C+=this._input.substr(0,20-C.length)),(C.substr(0,20)+(C.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var C=this.pastInput(),T=new Array(C.length+1).join("-");return C+this.upcomingInput()+` +`+T+"^"},"showPosition"),test_match:o(function(C,T){var E,A,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))),A=C[0].match(/(?:\r\n?|\n).*/g),A&&(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+C[0].length},this.yytext+=C[0],this.match+=C[0],this.matches=C,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(C[0].length),this.matched+=C[0],E=this.performAction.call(this,this.yy,this,T,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),E)return E;if(this._backtrack){for(var _ in S)this[_]=S[_];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var C,T,E,A;this._more||(this.yytext="",this.match="");for(var S=this._currentRules(),_=0;_T[0].length)){if(T=E,A=_,this.options.backtrack_lexer){if(C=this.test_match(E,S[_]),C!==!1)return C;if(this._backtrack){T=!1;continue}else return!1}else if(!this.options.flex)break}return T?(C=this.test_match(T,S[A]),C!==!1?C:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var T=this.next();return T||this.lex()},"lex"),begin:o(function(T){this.conditionStack.push(T)},"begin"),popState:o(function(){var T=this.conditionStack.length-1;return T>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(T){return T=this.conditionStack.length-1-Math.abs(T||0),T>=0?this.conditionStack[T]:"INITIAL"},"topState"),pushState:o(function(T){this.begin(T)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(T,E,A,S){var _=S;switch(A){case 0:return 10;case 1:return T.getLogger().debug("Found space-block"),31;break;case 2:return T.getLogger().debug("Found nl-block"),31;break;case 3:return T.getLogger().debug("Found space-block"),29;break;case 4:T.getLogger().debug(".",E.yytext);break;case 5:T.getLogger().debug("_",E.yytext);break;case 6:return 5;case 7:return E.yytext=-1,28;break;case 8:return E.yytext=E.yytext.replace(/columns\s+/,""),T.getLogger().debug("COLUMNS (LEX)",E.yytext),28;break;case 9:this.pushState("md_string");break;case 10:return"MD_STR";case 11:this.popState();break;case 12:this.pushState("string");break;case 13:T.getLogger().debug("LEX: POPPING STR:",E.yytext),this.popState();break;case 14:return T.getLogger().debug("LEX: STR end:",E.yytext),"STR";break;case 15:return E.yytext=E.yytext.replace(/space\:/,""),T.getLogger().debug("SPACE NUM (LEX)",E.yytext),21;break;case 16:return E.yytext="1",T.getLogger().debug("COLUMNS (LEX)",E.yytext),21;break;case 17:return 43;case 18:return"LINKSTYLE";case 19:return"INTERPOLATE";case 20:return this.pushState("CLASSDEF"),40;break;case 21:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 22:return this.popState(),this.pushState("CLASSDEFID"),41;break;case 23:return this.popState(),42;break;case 24:return this.pushState("CLASS"),44;break;case 25:return this.popState(),this.pushState("CLASS_STYLE"),45;break;case 26:return this.popState(),46;break;case 27:return this.pushState("STYLE_STMNT"),47;break;case 28:return this.popState(),this.pushState("STYLE_DEFINITION"),48;break;case 29:return this.popState(),49;break;case 30:return this.pushState("acc_title"),"acc_title";break;case 31:return this.popState(),"acc_title_value";break;case 32:return this.pushState("acc_descr"),"acc_descr";break;case 33:return this.popState(),"acc_descr_value";break;case 34:this.pushState("acc_descr_multiline");break;case 35:this.popState();break;case 36:return"acc_descr_multiline_value";case 37:return 30;case 38:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 39:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 40:return this.popState(),T.getLogger().debug("Lex: ))"),"NODE_DEND";break;case 41:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 42:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 43:return this.popState(),T.getLogger().debug("Lex: (-"),"NODE_DEND";break;case 44:return this.popState(),T.getLogger().debug("Lex: -)"),"NODE_DEND";break;case 45:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 46:return this.popState(),T.getLogger().debug("Lex: ]]"),"NODE_DEND";break;case 47:return this.popState(),T.getLogger().debug("Lex: ("),"NODE_DEND";break;case 48:return this.popState(),T.getLogger().debug("Lex: ])"),"NODE_DEND";break;case 49:return this.popState(),T.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 50:return this.popState(),T.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 51:return this.popState(),T.getLogger().debug("Lex: )]"),"NODE_DEND";break;case 52:return this.popState(),T.getLogger().debug("Lex: )"),"NODE_DEND";break;case 53:return this.popState(),T.getLogger().debug("Lex: ]>"),"NODE_DEND";break;case 54:return this.popState(),T.getLogger().debug("Lex: ]"),"NODE_DEND";break;case 55:return T.getLogger().debug("Lexa: -)"),this.pushState("NODE"),36;break;case 56:return T.getLogger().debug("Lexa: (-"),this.pushState("NODE"),36;break;case 57:return T.getLogger().debug("Lexa: ))"),this.pushState("NODE"),36;break;case 58:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 59:return T.getLogger().debug("Lex: ((("),this.pushState("NODE"),36;break;case 60:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 61:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 62:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 63:return T.getLogger().debug("Lexc: >"),this.pushState("NODE"),36;break;case 64:return T.getLogger().debug("Lexa: (["),this.pushState("NODE"),36;break;case 65:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 66:return this.pushState("NODE"),36;break;case 67:return this.pushState("NODE"),36;break;case 68:return this.pushState("NODE"),36;break;case 69:return this.pushState("NODE"),36;break;case 70:return this.pushState("NODE"),36;break;case 71:return this.pushState("NODE"),36;break;case 72:return this.pushState("NODE"),36;break;case 73:return T.getLogger().debug("Lexa: ["),this.pushState("NODE"),36;break;case 74:return this.pushState("BLOCK_ARROW"),T.getLogger().debug("LEX ARR START"),38;break;case 75:return T.getLogger().debug("Lex: NODE_ID",E.yytext),32;break;case 76:return T.getLogger().debug("Lex: EOF",E.yytext),8;break;case 77:this.pushState("md_string");break;case 78:this.pushState("md_string");break;case 79:return"NODE_DESCR";case 80:this.popState();break;case 81:T.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 82:T.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 83:return T.getLogger().debug("LEX: NODE_DESCR:",E.yytext),"NODE_DESCR";break;case 84:T.getLogger().debug("LEX POPPING"),this.popState();break;case 85:T.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 86:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (right): dir:",E.yytext),"DIR";break;case 87:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (left):",E.yytext),"DIR";break;case 88:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (x):",E.yytext),"DIR";break;case 89:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (y):",E.yytext),"DIR";break;case 90:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (up):",E.yytext),"DIR";break;case 91:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (down):",E.yytext),"DIR";break;case 92:return E.yytext="]>",T.getLogger().debug("Lex (ARROW_DIR end):",E.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";break;case 93:return T.getLogger().debug("Lex: LINK","#"+E.yytext+"#"),15;break;case 94:return T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 95:return T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 96:return T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 97:return T.getLogger().debug("Lex: START_LINK",E.yytext),this.pushState("LLABEL"),16;break;case 98:return T.getLogger().debug("Lex: START_LINK",E.yytext),this.pushState("LLABEL"),16;break;case 99:return T.getLogger().debug("Lex: START_LINK",E.yytext),this.pushState("LLABEL"),16;break;case 100:this.pushState("md_string");break;case 101:return T.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";break;case 102:return this.popState(),T.getLogger().debug("Lex: LINK","#"+E.yytext+"#"),15;break;case 103:return this.popState(),T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 104:return this.popState(),T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 105:return T.getLogger().debug("Lex: COLON",E.yytext),E.yytext=E.yytext.slice(1),27;break}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block\s+)/,/^(?:block\n+)/,/^(?:block:)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[29],inclusive:!1},STYLE_STMNT:{rules:[28],inclusive:!1},CLASSDEFID:{rules:[23],inclusive:!1},CLASSDEF:{rules:[21,22],inclusive:!1},CLASS_STYLE:{rules:[26],inclusive:!1},CLASS:{rules:[25],inclusive:!1},LLABEL:{rules:[100,101,102,103,104],inclusive:!1},ARROW_DIR:{rules:[86,87,88,89,90,91,92],inclusive:!1},BLOCK_ARROW:{rules:[77,82,85],inclusive:!1},NODE:{rules:[38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,78,81],inclusive:!1},md_string:{rules:[10,11,79,80],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[13,14,83,84],inclusive:!1},acc_descr_multiline:{rules:[35,36],inclusive:!1},acc_descr:{rules:[33],inclusive:!1},acc_title:{rules:[31],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,12,15,16,17,18,19,20,24,27,30,32,34,37,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,93,94,95,96,97,98,99,105],inclusive:!0}}};return w}();v.lexer=x;function b(){this.yy={}}return o(b,"Parser"),b.prototype=v,v.Parser=b,new b}();KB.parser=KB;bye=KB});function Yet(t){switch(Y.debug("typeStr2Type",t),t){case"[]":return"square";case"()":return Y.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function Xet(t){switch(Y.debug("typeStr2Type",t),t){case"==":return"thick";default:return"normal"}}function jet(t){switch(t.trim()){case"--x":return"arrow_cross";case"--o":return"arrow_circle";default:return"arrow_point"}}var Ul,ZB,QB,Tye,kye,zet,Sye,Get,eC,Vet,Uet,Het,Wet,Cye,JB,y4,qet,Eye,Ket,Qet,Zet,Jet,ett,ttt,rtt,ntt,itt,att,stt,Aye,_ye=N(()=>{"use strict";gL();ji();zt();vt();gr();mi();Ul=new Map,ZB=[],QB=new Map,Tye="color",kye="fill",zet="bgFill",Sye=",",Get=me(),eC=new Map,Vet=o(t=>Ze.sanitizeText(t,Get),"sanitizeText"),Uet=o(function(t,e=""){let r=eC.get(t);r||(r={id:t,styles:[],textStyles:[]},eC.set(t,r)),e?.split(Sye).forEach(n=>{let i=n.replace(/([^;]*);/,"$1").trim();if(RegExp(Tye).exec(n)){let s=i.replace(kye,zet).replace(Tye,kye);r.textStyles.push(s)}r.styles.push(i)})},"addStyleClass"),Het=o(function(t,e=""){let r=Ul.get(t);e!=null&&(r.styles=e.split(Sye))},"addStyle2Node"),Wet=o(function(t,e){t.split(",").forEach(function(r){let n=Ul.get(r);if(n===void 0){let i=r.trim();n={id:i,type:"na",children:[]},Ul.set(i,n)}n.classes||(n.classes=[]),n.classes.push(e)})},"setCssClass"),Cye=o((t,e)=>{let r=t.flat(),n=[];for(let i of r){if(i.label&&(i.label=Vet(i.label)),i.type==="classDef"){Uet(i.id,i.css);continue}if(i.type==="applyClass"){Wet(i.id,i?.styleClass??"");continue}if(i.type==="applyStyles"){i?.stylesStr&&Het(i.id,i?.stylesStr);continue}if(i.type==="column-setting")e.columns=i.columns??-1;else if(i.type==="edge"){let a=(QB.get(i.id)??0)+1;QB.set(i.id,a),i.id=a+"-"+i.id,ZB.push(i)}else{i.label||(i.type==="composite"?i.label="":i.label=i.id);let a=Ul.get(i.id);if(a===void 0?Ul.set(i.id,i):(i.type!=="na"&&(a.type=i.type),i.label!==i.id&&(a.label=i.label)),i.children&&Cye(i.children,i),i.type==="space"){let s=i.width??1;for(let l=0;l{Y.debug("Clear called"),Ar(),y4={id:"root",type:"composite",children:[],columns:-1},Ul=new Map([["root",y4]]),JB=[],eC=new Map,ZB=[],QB=new Map},"clear");o(Yet,"typeStr2Type");o(Xet,"edgeTypeStr2Type");o(jet,"edgeStrToEdgeData");Eye=0,Ket=o(()=>(Eye++,"id-"+Math.random().toString(36).substr(2,12)+"-"+Eye),"generateId"),Qet=o(t=>{y4.children=t,Cye(t,y4),JB=y4.children},"setHierarchy"),Zet=o(t=>{let e=Ul.get(t);return e?e.columns?e.columns:e.children?e.children.length:-1:-1},"getColumns"),Jet=o(()=>[...Ul.values()],"getBlocksFlat"),ett=o(()=>JB||[],"getBlocks"),ttt=o(()=>ZB,"getEdges"),rtt=o(t=>Ul.get(t),"getBlock"),ntt=o(t=>{Ul.set(t.id,t)},"setBlock"),itt=o(()=>console,"getLogger"),att=o(function(){return eC},"getClasses"),stt={getConfig:o(()=>cr().block,"getConfig"),typeStr2Type:Yet,edgeTypeStr2Type:Xet,edgeStrToEdgeData:jet,getLogger:itt,getBlocksFlat:Jet,getBlocks:ett,getEdges:ttt,setHierarchy:Qet,getBlock:rtt,setBlock:ntt,getColumns:Zet,getClasses:att,clear:qet,generateId:Ket},Aye=stt});var tC,ott,Dye,Lye=N(()=>{"use strict";Ys();tC=o((t,e)=>{let r=Kf,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return qa(n,i,a,e)},"fade"),ott=o(t=>`.label { + font-family: ${t.fontFamily}; + color: ${t.nodeTextColor||t.textColor}; + } + .cluster-label text { + fill: ${t.titleColor}; + } + .cluster-label span,p { + color: ${t.titleColor}; + } + + + + .label text,span,p { + fill: ${t.nodeTextColor||t.textColor}; + color: ${t.nodeTextColor||t.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + stroke-width: 1px; + } + .flowchart-label text { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${t.arrowheadColor}; + } + + .edgePath .path { + stroke: ${t.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${t.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${t.edgeLabelBackground}; + rect { + opacity: 0.5; + background-color: ${t.edgeLabelBackground}; + fill: ${t.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${tC(t.edgeLabelBackground,.5)}; + // background-color: + } + + .node .cluster { + // fill: ${tC(t.mainBkg,.5)}; + fill: ${tC(t.clusterBkg,.5)}; + stroke: ${tC(t.clusterBorder,.2)}; + box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; + stroke-width: 1px; + } + + .cluster text { + fill: ${t.titleColor}; + } + + .cluster span,p { + color: ${t.titleColor}; + } + /* .cluster div { + color: ${t.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${t.fontFamily}; + font-size: 12px; + background: ${t.tertiaryColor}; + border: 1px solid ${t.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; + } +`,"getStyles"),Dye=ott});var ltt,ctt,utt,htt,ftt,dtt,ptt,mtt,gtt,ytt,vtt,Rye,Nye=N(()=>{"use strict";vt();ltt=o((t,e,r,n)=>{e.forEach(i=>{vtt[i](t,r,n)})},"insertMarkers"),ctt=o((t,e,r)=>{Y.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),utt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).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",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).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")},"composition"),htt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).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",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).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")},"aggregation"),ftt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).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"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).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")},"dependency"),dtt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),ptt=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",6).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").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),mtt=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),gtt=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),ytt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),vtt={extension:ctt,composition:utt,aggregation:htt,dependency:ftt,lollipop:dtt,point:ptt,circle:mtt,cross:gtt,barb:ytt},Rye=ltt});function xtt(t,e){if(t===0||!Number.isInteger(t))throw new Error("Columns must be an integer !== 0.");if(e<0||!Number.isInteger(e))throw new Error("Position must be a non-negative integer."+e);if(t<0)return{px:e,py:0};if(t===1)return{px:0,py:e};let r=e%t,n=Math.floor(e/t);return{px:r,py:n}}function eF(t,e,r=0,n=0){Y.debug("setBlockSizes abc95 (start)",t.id,t?.size?.x,"block width =",t?.size,"sieblingWidth",r),t?.size?.width||(t.size={width:r,height:n,x:0,y:0});let i=0,a=0;if(t.children?.length>0){for(let m of t.children)eF(m,e);let s=btt(t);i=s.width,a=s.height,Y.debug("setBlockSizes abc95 maxWidth of",t.id,":s children is ",i,a);for(let m of t.children)m.size&&(Y.debug(`abc95 Setting size of children of ${t.id} id=${m.id} ${i} ${a} ${JSON.stringify(m.size)}`),m.size.width=i*(m.widthInColumns??1)+bi*((m.widthInColumns??1)-1),m.size.height=a,m.size.x=0,m.size.y=0,Y.debug(`abc95 updating size of ${t.id} children child:${m.id} maxWidth:${i} maxHeight:${a}`));for(let m of t.children)eF(m,e,i,a);let l=t.columns??-1,u=0;for(let m of t.children)u+=m.widthInColumns??1;let h=t.children.length;l>0&&l0?Math.min(t.children.length,l):t.children.length;if(m>0){let g=(d-m*bi-bi)/m;Y.debug("abc95 (growing to fit) width",t.id,d,t.size?.width,g);for(let y of t.children)y.size&&(y.size.width=g)}}t.size={width:d,height:p,x:0,y:0}}Y.debug("setBlockSizes abc94 (done)",t.id,t?.size?.x,t?.size?.width,t?.size?.y,t?.size?.height)}function Mye(t,e){Y.debug(`abc85 layout blocks (=>layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`);let r=t.columns??-1;if(Y.debug("layoutBlocks columns abc95",t.id,"=>",r,t),t.children&&t.children.length>0){let n=t?.children[0]?.size?.width??0,i=t.children.length*n+(t.children.length-1)*bi;Y.debug("widthOfChildren 88",i,"posX");let a=0;Y.debug("abc91 block?.size?.x",t.id,t?.size?.x);let s=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-bi,l=0;for(let u of t.children){let h=t;if(!u.size)continue;let{width:f,height:d}=u.size,{px:p,py:m}=xtt(r,a);if(m!=l&&(l=m,s=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-bi,Y.debug("New row in layout for block",t.id," and child ",u.id,l)),Y.debug(`abc89 layout blocks (child) id: ${u.id} Pos: ${a} (px, py) ${p},${m} (${h?.size?.x},${h?.size?.y}) parent: ${h.id} width: ${f}${bi}`),h.size){let g=f/2;u.size.x=s+bi+g,Y.debug(`abc91 layout blocks (calc) px, pyid:${u.id} startingPos=X${s} new startingPosX${u.size.x} ${g} padding=${bi} width=${f} halfWidth=${g} => x:${u.size.x} y:${u.size.y} ${u.widthInColumns} (width * (child?.w || 1)) / 2 ${f*(u?.widthInColumns??1)/2}`),s=u.size.x+g,u.size.y=h.size.y-h.size.height/2+m*(d+bi)+d/2+bi,Y.debug(`abc88 layout blocks (calc) px, pyid:${u.id}startingPosX${s}${bi}${g}=>x:${u.size.x}y:${u.size.y}${u.widthInColumns}(width * (child?.w || 1)) / 2${f*(u?.widthInColumns??1)/2}`)}u.children&&Mye(u,e),a+=u?.widthInColumns??1,Y.debug("abc88 columnsPos",u,a)}}Y.debug(`layout blocks (<==layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`)}function Iye(t,{minX:e,minY:r,maxX:n,maxY:i}={minX:0,minY:0,maxX:0,maxY:0}){if(t.size&&t.id!=="root"){let{x:a,y:s,width:l,height:u}=t.size;a-l/2n&&(n=a+l/2),s+u/2>i&&(i=s+u/2)}if(t.children)for(let a of t.children)({minX:e,minY:r,maxX:n,maxY:i}=Iye(a,{minX:e,minY:r,maxX:n,maxY:i}));return{minX:e,minY:r,maxX:n,maxY:i}}function Oye(t){let e=t.getBlock("root");if(!e)return;eF(e,t,0,0),Mye(e,t),Y.debug("getBlocks",JSON.stringify(e,null,2));let{minX:r,minY:n,maxX:i,maxY:a}=Iye(e),s=a-n,l=i-r;return{x:r,y:n,width:l,height:s}}var bi,btt,Pye=N(()=>{"use strict";vt();zt();bi=me()?.block?.padding??8;o(xtt,"calculateBlockPosition");btt=o(t=>{let e=0,r=0;for(let n of t.children){let{width:i,height:a,x:s,y:l}=n.size??{width:0,height:0,x:0,y:0};Y.debug("getMaxChildSize abc95 child:",n.id,"width:",i,"height:",a,"x:",s,"y:",l,n.type),n.type!=="space"&&(i>e&&(e=i/(t.widthInColumns??1)),a>r&&(r=a))}return{width:e,height:r}},"getMaxChildSize");o(eF,"setBlockSizes");o(Mye,"layoutBlocks");o(Iye,"findBounds");o(Oye,"layout")});function Bye(t,e){e&&t.attr("style",e)}function wtt(t){let e=Ge(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),n=t.label,i=t.isNode?"nodeLabel":"edgeLabel",a=r.append("span");return a.html(n),Bye(a,t.labelStyle),a.attr("class",i),Bye(r,t.labelStyle),r.style("display","inline-block"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}var Ttt,vs,rC=N(()=>{"use strict";dr();vt();zt();gr();ir();to();o(Bye,"applyStyle");o(wtt,"addHtmlLabel");Ttt=o((t,e,r,n)=>{let i=t||"";if(typeof i=="object"&&(i=i[0]),fr(me().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),Y.debug("vertexText"+i);let a={isNode:n,label:DD(na(i)),labelStyle:e.replace("fill:","color:")};return wtt(a)}else{let a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",e.replace("color:","fill:"));let s=[];typeof i=="string"?s=i.split(/\\n|\n|/gi):Array.isArray(i)?s=i:s=[];for(let l of s){let u=document.createElementNS("http://www.w3.org/2000/svg","tspan");u.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),u.setAttribute("dy","1em"),u.setAttribute("x","0"),r?u.setAttribute("class","title-row"):u.setAttribute("class","row"),u.textContent=l.trim(),a.appendChild(u)}return a}},"createLabel"),vs=Ttt});var $ye,ktt,Fye,zye=N(()=>{"use strict";vt();$ye=o((t,e,r,n,i)=>{e.arrowTypeStart&&Fye(t,"start",e.arrowTypeStart,r,n,i),e.arrowTypeEnd&&Fye(t,"end",e.arrowTypeEnd,r,n,i)},"addEdgeMarkers"),ktt={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},Fye=o((t,e,r,n,i,a)=>{let s=ktt[r];if(!s){Y.warn(`Unknown arrow type: ${r}`);return}let l=e==="start"?"Start":"End";t.attr(`marker-${e}`,`url(${n}#${i}_${a}-${s}${l})`)},"addEdgeMarker")});function nC(t,e){me().flowchart.htmlLabels&&t&&(t.style.width=e.length*9+"px",t.style.height="12px")}var tF,Ua,Vye,Uye,Ett,Stt,Gye,Hye,Wye=N(()=>{"use strict";vt();rC();to();dr();zt();ir();gr();JD();w2();zye();tF={},Ua={},Vye=o((t,e)=>{let r=me(),n=fr(r.flowchart.htmlLabels),i=e.labelType==="markdown"?Hn(t,e.label,{style:e.labelStyle,useHtmlLabels:n,addSvgBackground:!0},r):vs(e.label,e.labelStyle),a=t.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label");s.node().appendChild(i);let l=i.getBBox();if(n){let h=i.children[0],f=Ge(i);l=h.getBoundingClientRect(),f.attr("width",l.width),f.attr("height",l.height)}s.attr("transform","translate("+-l.width/2+", "+-l.height/2+")"),tF[e.id]=a,e.width=l.width,e.height=l.height;let u;if(e.startLabelLeft){let h=vs(e.startLabelLeft,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),Ua[e.id]||(Ua[e.id]={}),Ua[e.id].startLeft=f,nC(u,e.startLabelLeft)}if(e.startLabelRight){let h=vs(e.startLabelRight,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=f.node().appendChild(h),d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),Ua[e.id]||(Ua[e.id]={}),Ua[e.id].startRight=f,nC(u,e.startLabelRight)}if(e.endLabelLeft){let h=vs(e.endLabelLeft,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),Ua[e.id]||(Ua[e.id]={}),Ua[e.id].endLeft=f,nC(u,e.endLabelLeft)}if(e.endLabelRight){let h=vs(e.endLabelRight,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),Ua[e.id]||(Ua[e.id]={}),Ua[e.id].endRight=f,nC(u,e.endLabelRight)}return i},"insertEdgeLabel");o(nC,"setTerminalWidth");Uye=o((t,e)=>{Y.debug("Moving label abc88 ",t.id,t.label,tF[t.id],e);let r=e.updatedPath?e.updatedPath:e.originalPath,n=me(),{subGraphTitleTotalMargin:i}=Ru(n);if(t.label){let a=tF[t.id],s=t.x,l=t.y;if(r){let u=Gt.calcLabelPosition(r);Y.debug("Moving label "+t.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),e.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(t.startLabelLeft){let a=Ua[t.id].startLeft,s=t.x,l=t.y;if(r){let u=Gt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.startLabelRight){let a=Ua[t.id].startRight,s=t.x,l=t.y;if(r){let u=Gt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelLeft){let a=Ua[t.id].endLeft,s=t.x,l=t.y;if(r){let u=Gt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelRight){let a=Ua[t.id].endRight,s=t.x,l=t.y;if(r){let u=Gt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),Ett=o((t,e)=>{let r=t.x,n=t.y,i=Math.abs(e.x-r),a=Math.abs(e.y-n),s=t.width/2,l=t.height/2;return i>=s||a>=l},"outsideNode"),Stt=o((t,e,r)=>{Y.debug(`intersection calc abc89: + outsidePoint: ${JSON.stringify(e)} + insidePoint : ${JSON.stringify(r)} + node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);let n=t.x,i=t.y,a=Math.abs(n-r.x),s=t.width/2,l=r.xMath.abs(n-e.x)*u){let d=r.y{Y.debug("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(a=>{if(!Ett(e,a)&&!i){let s=Stt(e,n,a),l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)||r.push(s),i=!0}else n=a,i||r.push(a)}),r},"cutPathAtIntersect"),Hye=o(function(t,e,r,n,i,a,s){let l=r.points;Y.debug("abc88 InsertEdge: edge=",r,"e=",e);let u=!1,h=a.node(e.v);var f=a.node(e.w);f?.intersect&&h?.intersect&&(l=l.slice(1,r.points.length-1),l.unshift(h.intersect(l[0])),l.push(f.intersect(l[l.length-1]))),r.toCluster&&(Y.debug("to cluster abc88",n[r.toCluster]),l=Gye(r.points,n[r.toCluster].node),u=!0),r.fromCluster&&(Y.debug("from cluster abc88",n[r.fromCluster]),l=Gye(l.reverse(),n[r.fromCluster].node).reverse(),u=!0);let d=l.filter(C=>!Number.isNaN(C.y)),p=Do;r.curve&&(i==="graph"||i==="flowchart")&&(p=r.curve);let{x:m,y:g}=qw(r),y=wl().x(m).y(g).curve(p),v;switch(r.thickness){case"normal":v="edge-thickness-normal";break;case"thick":v="edge-thickness-thick";break;case"invisible":v="edge-thickness-thick";break;default:v=""}switch(r.pattern){case"solid":v+=" edge-pattern-solid";break;case"dotted":v+=" edge-pattern-dotted";break;case"dashed":v+=" edge-pattern-dashed";break}let x=t.append("path").attr("d",y(d)).attr("id",r.id).attr("class"," "+v+(r.classes?" "+r.classes:"")).attr("style",r.style),b="";(me().flowchart.arrowMarkerAbsolute||me().state.arrowMarkerAbsolute)&&(b=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,b=b.replace(/\(/g,"\\("),b=b.replace(/\)/g,"\\)")),$ye(x,r,b,s,i);let w={};return u&&(w.updatedPath=l),w.originalPath=r.points,w},"insertEdge")});var Ctt,qye,Yye=N(()=>{"use strict";Ctt=o(t=>{let e=new Set;for(let r of t)switch(r){case"x":e.add("right"),e.add("left");break;case"y":e.add("up"),e.add("down");break;default:e.add(r);break}return e},"expandAndDeduplicateDirections"),qye=o((t,e,r)=>{let n=Ctt(t),i=2,a=e.height+2*r.padding,s=a/i,l=e.width+2*s+r.padding,u=r.padding/2;return n.has("right")&&n.has("left")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:s,y:0},{x:l/2,y:2*u},{x:l-s,y:0},{x:l,y:0},{x:l,y:-a/3},{x:l+2*u,y:-a/2},{x:l,y:-2*a/3},{x:l,y:-a},{x:l-s,y:-a},{x:l/2,y:-a-2*u},{x:s,y:-a},{x:0,y:-a},{x:0,y:-2*a/3},{x:-2*u,y:-a/2},{x:0,y:-a/3}]:n.has("right")&&n.has("left")&&n.has("up")?[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}]:n.has("right")&&n.has("left")&&n.has("down")?[{x:0,y:0},{x:s,y:-a},{x:l-s,y:-a},{x:l,y:0}]:n.has("right")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:l,y:-s},{x:l,y:-a+s},{x:0,y:-a}]:n.has("left")&&n.has("up")&&n.has("down")?[{x:l,y:0},{x:0,y:-s},{x:0,y:-a+s},{x:l,y:-a}]:n.has("right")&&n.has("left")?[{x:s,y:0},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")&&n.has("down")?[{x:l/2,y:0},{x:0,y:-u},{x:s,y:-u},{x:s,y:-a+u},{x:0,y:-a+u},{x:l/2,y:-a},{x:l,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u},{x:l,y:-u}]:n.has("right")&&n.has("up")?[{x:0,y:0},{x:l,y:-s},{x:0,y:-a}]:n.has("right")&&n.has("down")?[{x:0,y:0},{x:l,y:0},{x:0,y:-a}]:n.has("left")&&n.has("up")?[{x:l,y:0},{x:0,y:-s},{x:l,y:-a}]:n.has("left")&&n.has("down")?[{x:l,y:0},{x:0,y:0},{x:l,y:-a}]:n.has("right")?[{x:s,y:-u},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a+u}]:n.has("left")?[{x:s,y:0},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")?[{x:s,y:-u},{x:s,y:-a+u},{x:0,y:-a+u},{x:l/2,y:-a},{x:l,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u}]:n.has("down")?[{x:l/2,y:0},{x:0,y:-u},{x:s,y:-u},{x:s,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u},{x:l,y:-u}]:[{x:0,y:0}]},"getArrowPoints")});function Att(t,e){return t.intersect(e)}var Xye,jye=N(()=>{"use strict";o(Att,"intersectNode");Xye=Att});function _tt(t,e,r,n){var i=t.x,a=t.y,s=i-n.x,l=a-n.y,u=Math.sqrt(e*e*l*l+r*r*s*s),h=Math.abs(e*r*s/u);n.x{"use strict";o(_tt,"intersectEllipse");iC=_tt});function Dtt(t,e,r){return iC(t,e,e,r)}var Kye,Qye=N(()=>{"use strict";rF();o(Dtt,"intersectCircle");Kye=Dtt});function Ltt(t,e,r,n){var i,a,s,l,u,h,f,d,p,m,g,y,v,x,b;if(i=e.y-t.y,s=t.x-e.x,u=e.x*t.y-t.x*e.y,p=i*r.x+s*r.y+u,m=i*n.x+s*n.y+u,!(p!==0&&m!==0&&Zye(p,m))&&(a=n.y-r.y,l=r.x-n.x,h=n.x*r.y-r.x*n.y,f=a*t.x+l*t.y+h,d=a*e.x+l*e.y+h,!(f!==0&&d!==0&&Zye(f,d))&&(g=i*l-a*s,g!==0)))return y=Math.abs(g/2),v=s*h-l*u,x=v<0?(v-y)/g:(v+y)/g,v=a*u-i*h,b=v<0?(v-y)/g:(v+y)/g,{x,y:b}}function Zye(t,e){return t*e>0}var Jye,eve=N(()=>{"use strict";o(Ltt,"intersectLine");o(Zye,"sameSign");Jye=Ltt});function Rtt(t,e,r){var n=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof e.forEach=="function"?e.forEach(function(g){s=Math.min(s,g.x),l=Math.min(l,g.y)}):(s=Math.min(s,e.x),l=Math.min(l,e.y));for(var u=n-t.width/2-s,h=i-t.height/2-l,f=0;f1&&a.sort(function(g,y){var v=g.x-r.x,x=g.y-r.y,b=Math.sqrt(v*v+x*x),w=y.x-r.x,C=y.y-r.y,T=Math.sqrt(w*w+C*C);return b{"use strict";eve();tve=Rtt;o(Rtt,"intersectPolygon")});var Ntt,nve,ive=N(()=>{"use strict";Ntt=o((t,e)=>{var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),nve=Ntt});var In,nF=N(()=>{"use strict";jye();Qye();rF();rve();ive();In={node:Xye,circle:Kye,ellipse:iC,polygon:tve,rect:nve}});function Hl(t,e,r,n){return t.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}var Di,Qn,iF=N(()=>{"use strict";rC();to();zt();dr();gr();ir();Di=o(async(t,e,r,n)=>{let i=me(),a,s=e.useHtmlLabels||fr(i.flowchart.htmlLabels);r?a=r:a="node default";let l=t.insert("g").attr("class",a).attr("id",e.domId||e.id),u=l.insert("g").attr("class","label").attr("style",e.labelStyle),h;e.labelText===void 0?h="":h=typeof e.labelText=="string"?e.labelText:e.labelText[0];let f=u.node(),d;e.labelType==="markdown"?d=Hn(u,Tr(na(h),i),{useHtmlLabels:s,width:e.width||i.flowchart.wrappingWidth,classes:"markdown-node-label"},i):d=f.appendChild(vs(Tr(na(h),i),e.labelStyle,!1,n));let p=d.getBBox(),m=e.padding/2;if(fr(i.flowchart.htmlLabels)){let g=d.children[0],y=Ge(d),v=g.getElementsByTagName("img");if(v){let x=h.replace(/]*>/g,"").trim()==="";await Promise.all([...v].map(b=>new Promise(w=>{function C(){if(b.style.display="flex",b.style.flexDirection="column",x){let T=i.fontSize?i.fontSize:window.getComputedStyle(document.body).fontSize,A=parseInt(T,10)*5+"px";b.style.minWidth=A,b.style.maxWidth=A}else b.style.width="100%";w(b)}o(C,"setupImage"),setTimeout(()=>{b.complete&&C()}),b.addEventListener("error",C),b.addEventListener("load",C)})))}p=g.getBoundingClientRect(),y.attr("width",p.width),y.attr("height",p.height)}return s?u.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"):u.attr("transform","translate(0, "+-p.height/2+")"),e.centerLabel&&u.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),u.insert("rect",":first-child"),{shapeSvg:l,bbox:p,halfPadding:m,label:u}},"labelHelper"),Qn=o((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds");o(Hl,"insertPolygonShape")});var Mtt,ave,sve=N(()=>{"use strict";iF();vt();zt();nF();Mtt=o(async(t,e)=>{e.useHtmlLabels||me().flowchart.htmlLabels||(e.centerLabel=!0);let{shapeSvg:n,bbox:i,halfPadding:a}=await Di(t,e,"node "+e.classes,!0);Y.info("Classes = ",e.classes);let s=n.insert("rect",":first-child");return s.attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),Qn(e,s),e.intersect=function(l){return In.rect(e,l)},n},"note"),ave=Mtt});function aF(t,e,r,n){let i=[],a=o(l=>{i.push(l,0)},"addBorder"),s=o(l=>{i.push(0,l)},"skipBorder");e.includes("t")?(Y.debug("add top border"),a(r)):s(r),e.includes("r")?(Y.debug("add right border"),a(n)):s(n),e.includes("b")?(Y.debug("add bottom border"),a(r)):s(r),e.includes("l")?(Y.debug("add left border"),a(n)):s(n),t.attr("stroke-dasharray",i.join(" "))}var ove,yo,lve,Itt,Ott,Ptt,Btt,Ftt,$tt,ztt,Gtt,Vtt,Utt,Htt,Wtt,qtt,Ytt,Xtt,jtt,Ktt,Qtt,Ztt,cve,Jtt,ert,uve,aC,sF,hve,fve=N(()=>{"use strict";dr();zt();gr();vt();Yye();rC();nF();sve();iF();ove=o(t=>t?" "+t:"","formatClass"),yo=o((t,e)=>`${e||"node default"}${ove(t.classes)} ${ove(t.class)}`,"getClassesFromNode"),lve=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=i+a,l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];Y.info("Question main (Circle)");let u=Hl(r,s,s,l);return u.attr("style",e.style),Qn(e,u),e.intersect=function(h){return Y.warn("Intersect called"),In.polygon(e,l,h)},r},"question"),Itt=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=28,i=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return r.insert("polygon",":first-child").attr("points",i.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(s){return In.circle(e,14,s)},r},"choice"),Ott=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=4,a=n.height+e.padding,s=a/i,l=n.width+2*s+e.padding,u=[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}],h=Hl(r,l,a,u);return h.attr("style",e.style),Qn(e,h),e.intersect=function(f){return In.polygon(e,u,f)},r},"hexagon"),Ptt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,void 0,!0),i=2,a=n.height+2*e.padding,s=a/i,l=n.width+2*s+e.padding,u=qye(e.directions,n,e),h=Hl(r,l,a,u);return h.attr("style",e.style),Qn(e,h),e.intersect=function(f){return In.polygon(e,u,f)},r},"block_arrow"),Btt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-a/2,y:0},{x:i,y:0},{x:i,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}];return Hl(r,i,a,s).attr("style",e.style),e.width=i+a,e.height=a,e.intersect=function(u){return In.polygon(e,s,u)},r},"rect_left_inv_arrow"),Ftt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-2*a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:a/6,y:-a}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"lean_right"),$tt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:2*a/6,y:0},{x:i+a/6,y:0},{x:i-2*a/6,y:-a},{x:-a/6,y:-a}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"lean_left"),ztt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-2*a/6,y:0},{x:i+2*a/6,y:0},{x:i-a/6,y:-a},{x:a/6,y:-a}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"trapezoid"),Gtt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:-2*a/6,y:-a}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"inv_trapezoid"),Vtt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:0,y:0},{x:i+a/2,y:0},{x:i,y:-a/2},{x:i+a/2,y:-a},{x:0,y:-a}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"rect_right_inv_arrow"),Utt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.width+e.padding,a=i/2,s=a/(2.5+i/50),l=n.height+s+e.padding,u="M 0,"+s+" a "+a+","+s+" 0,0,0 "+i+" 0 a "+a+","+s+" 0,0,0 "+-i+" 0 l 0,"+l+" a "+a+","+s+" 0,0,0 "+i+" 0 l 0,"+-l,h=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",e.style).attr("d",u).attr("transform","translate("+-i/2+","+-(l/2+s)+")");return Qn(e,h),e.intersect=function(f){let d=In.rect(e,f),p=d.x-e.x;if(a!=0&&(Math.abs(p)e.height/2-s)){let m=s*s*(1-p*p/(a*a));m!=0&&(m=Math.sqrt(m)),m=s-m,f.y-e.y>0&&(m=-m),d.y+=m}return d},r},"cylinder"),Htt=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Di(t,e,"node "+e.classes+" "+e.class,!0),a=r.insert("rect",":first-child"),s=e.positioned?e.width:n.width+e.padding,l=e.positioned?e.height:n.height+e.padding,u=e.positioned?-s/2:-n.width/2-i,h=e.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),e.props){let f=new Set(Object.keys(e.props));e.props.borders&&(aF(a,e.props.borders,s,l),f.delete("borders")),f.forEach(d=>{Y.warn(`Unknown node property ${d}`)})}return Qn(e,a),e.intersect=function(f){return In.rect(e,f)},r},"rect"),Wtt=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Di(t,e,"node "+e.classes,!0),a=r.insert("rect",":first-child"),s=e.positioned?e.width:n.width+e.padding,l=e.positioned?e.height:n.height+e.padding,u=e.positioned?-s/2:-n.width/2-i,h=e.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic cluster composite label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),e.props){let f=new Set(Object.keys(e.props));e.props.borders&&(aF(a,e.props.borders,s,l),f.delete("borders")),f.forEach(d=>{Y.warn(`Unknown node property ${d}`)})}return Qn(e,a),e.intersect=function(f){return In.rect(e,f)},r},"composite"),qtt=o(async(t,e)=>{let{shapeSvg:r}=await Di(t,e,"label",!0);Y.trace("Classes = ",e.class);let n=r.insert("rect",":first-child"),i=0,a=0;if(n.attr("width",i).attr("height",a),r.attr("class","label edgeLabel"),e.props){let s=new Set(Object.keys(e.props));e.props.borders&&(aF(n,e.props.borders,i,a),s.delete("borders")),s.forEach(l=>{Y.warn(`Unknown node property ${l}`)})}return Qn(e,n),e.intersect=function(s){return In.rect(e,s)},r},"labelRect");o(aF,"applyNodePropertyBorders");Ytt=o((t,e)=>{let r;e.classes?r="node "+e.classes:r="node default";let n=t.insert("g").attr("class",r).attr("id",e.domId||e.id),i=n.insert("rect",":first-child"),a=n.insert("line"),s=n.insert("g").attr("class","label"),l=e.labelText.flat?e.labelText.flat():e.labelText,u="";typeof l=="object"?u=l[0]:u=l,Y.info("Label text abc79",u,l,typeof l=="object");let h=s.node().appendChild(vs(u,e.labelStyle,!0,!0)),f={width:0,height:0};if(fr(me().flowchart.htmlLabels)){let y=h.children[0],v=Ge(h);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height)}Y.info("Text 2",l);let d=l.slice(1,l.length),p=h.getBBox(),m=s.node().appendChild(vs(d.join?d.join("
    "):d,e.labelStyle,!0,!0));if(fr(me().flowchart.htmlLabels)){let y=m.children[0],v=Ge(m);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height)}let g=e.padding/2;return Ge(m).attr("transform","translate( "+(f.width>p.width?0:(p.width-f.width)/2)+", "+(p.height+g+5)+")"),Ge(h).attr("transform","translate( "+(f.width{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.height+e.padding,a=n.width+i/4+e.padding,s=r.insert("rect",":first-child").attr("style",e.style).attr("rx",i/2).attr("ry",i/2).attr("x",-a/2).attr("y",-i/2).attr("width",a).attr("height",i);return Qn(e,s),e.intersect=function(l){return In.rect(e,l)},r},"stadium"),jtt=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Di(t,e,yo(e,void 0),!0),a=r.insert("circle",":first-child");return a.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i).attr("width",n.width+e.padding).attr("height",n.height+e.padding),Y.info("Circle main"),Qn(e,a),e.intersect=function(s){return Y.info("Circle intersect",e,n.width/2+i,s),In.circle(e,n.width/2+i,s)},r},"circle"),Ktt=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Di(t,e,yo(e,void 0),!0),a=5,s=r.insert("g",":first-child"),l=s.insert("circle"),u=s.insert("circle");return s.attr("class",e.class),l.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i+a).attr("width",n.width+e.padding+a*2).attr("height",n.height+e.padding+a*2),u.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i).attr("width",n.width+e.padding).attr("height",n.height+e.padding),Y.info("DoubleCircle main"),Qn(e,l),e.intersect=function(h){return Y.info("DoubleCircle intersect",e,n.width/2+i+a,h),In.circle(e,n.width/2+i+a,h)},r},"doublecircle"),Qtt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:0,y:0},{x:i,y:0},{x:i,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:i+8,y:0},{x:i+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"subroutine"),Ztt=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=r.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),Qn(e,n),e.intersect=function(i){return In.circle(e,7,i)},r},"start"),cve=o((t,e,r)=>{let n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=70,a=10;r==="LR"&&(i=10,a=70);let s=n.append("rect").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return Qn(e,s),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(l){return In.rect(e,l)},n},"forkJoin"),Jtt=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=r.insert("circle",":first-child"),i=r.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),Qn(e,i),e.intersect=function(a){return In.circle(e,7,a)},r},"end"),ert=o((t,e)=>{let r=e.padding/2,n=4,i=8,a;e.classes?a="node "+e.classes:a="node default";let s=t.insert("g").attr("class",a).attr("id",e.domId||e.id),l=s.insert("rect",":first-child"),u=s.insert("line"),h=s.insert("line"),f=0,d=n,p=s.insert("g").attr("class","label"),m=0,g=e.classData.annotations?.[0],y=e.classData.annotations[0]?"\xAB"+e.classData.annotations[0]+"\xBB":"",v=p.node().appendChild(vs(y,e.labelStyle,!0,!0)),x=v.getBBox();if(fr(me().flowchart.htmlLabels)){let S=v.children[0],_=Ge(v);x=S.getBoundingClientRect(),_.attr("width",x.width),_.attr("height",x.height)}e.classData.annotations[0]&&(d+=x.height+n,f+=x.width);let b=e.classData.label;e.classData.type!==void 0&&e.classData.type!==""&&(me().flowchart.htmlLabels?b+="<"+e.classData.type+">":b+="<"+e.classData.type+">");let w=p.node().appendChild(vs(b,e.labelStyle,!0,!0));Ge(w).attr("class","classTitle");let C=w.getBBox();if(fr(me().flowchart.htmlLabels)){let S=w.children[0],_=Ge(w);C=S.getBoundingClientRect(),_.attr("width",C.width),_.attr("height",C.height)}d+=C.height+n,C.width>f&&(f=C.width);let T=[];e.classData.members.forEach(S=>{let _=S.getDisplayDetails(),I=_.displayText;me().flowchart.htmlLabels&&(I=I.replace(//g,">"));let D=p.node().appendChild(vs(I,_.cssStyle?_.cssStyle:e.labelStyle,!0,!0)),k=D.getBBox();if(fr(me().flowchart.htmlLabels)){let L=D.children[0],R=Ge(D);k=L.getBoundingClientRect(),R.attr("width",k.width),R.attr("height",k.height)}k.width>f&&(f=k.width),d+=k.height+n,T.push(D)}),d+=i;let E=[];if(e.classData.methods.forEach(S=>{let _=S.getDisplayDetails(),I=_.displayText;me().flowchart.htmlLabels&&(I=I.replace(//g,">"));let D=p.node().appendChild(vs(I,_.cssStyle?_.cssStyle:e.labelStyle,!0,!0)),k=D.getBBox();if(fr(me().flowchart.htmlLabels)){let L=D.children[0],R=Ge(D);k=L.getBoundingClientRect(),R.attr("width",k.width),R.attr("height",k.height)}k.width>f&&(f=k.width),d+=k.height+n,E.push(D)}),d+=i,g){let S=(f-x.width)/2;Ge(v).attr("transform","translate( "+(-1*f/2+S)+", "+-1*d/2+")"),m=x.height+n}let A=(f-C.width)/2;return Ge(w).attr("transform","translate( "+(-1*f/2+A)+", "+(-1*d/2+m)+")"),m+=C.height+n,u.attr("class","divider").attr("x1",-f/2-r).attr("x2",f/2+r).attr("y1",-d/2-r+i+m).attr("y2",-d/2-r+i+m),m+=i,T.forEach(S=>{Ge(S).attr("transform","translate( "+-f/2+", "+(-1*d/2+m+i/2)+")");let _=S?.getBBox();m+=(_?.height??0)+n}),m+=i,h.attr("class","divider").attr("x1",-f/2-r).attr("x2",f/2+r).attr("y1",-d/2-r+i+m).attr("y2",-d/2-r+i+m),m+=i,E.forEach(S=>{Ge(S).attr("transform","translate( "+-f/2+", "+(-1*d/2+m)+")");let _=S?.getBBox();m+=(_?.height??0)+n}),l.attr("style",e.style).attr("class","outer title-state").attr("x",-f/2-r).attr("y",-(d/2)-r).attr("width",f+e.padding).attr("height",d+e.padding),Qn(e,l),e.intersect=function(S){return In.rect(e,S)},s},"class_box"),uve={rhombus:lve,composite:Wtt,question:lve,rect:Htt,labelRect:qtt,rectWithTitle:Ytt,choice:Itt,circle:jtt,doublecircle:Ktt,stadium:Xtt,hexagon:Ott,block_arrow:Ptt,rect_left_inv_arrow:Btt,lean_right:Ftt,lean_left:$tt,trapezoid:ztt,inv_trapezoid:Gtt,rect_right_inv_arrow:Vtt,cylinder:Utt,start:Ztt,end:Jtt,note:ave,subroutine:Qtt,fork:cve,join:cve,class_box:ert},aC={},sF=o(async(t,e,r)=>{let n,i;if(e.link){let a;me().securityLevel==="sandbox"?a="_top":e.linkTarget&&(a=e.linkTarget||"_blank"),n=t.insert("svg:a").attr("xlink:href",e.link).attr("target",a),i=await uve[e.shape](n,e,r)}else i=await uve[e.shape](t,e,r),n=i;return e.tooltip&&i.attr("title",e.tooltip),e.class&&i.attr("class","node default "+e.class),aC[e.id]=n,e.haveCallback&&aC[e.id].attr("class",aC[e.id].attr("class")+" clickable"),n},"insertNode"),hve=o(t=>{let e=aC[t.id];Y.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");let r=8,n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-r)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},"positionNode")});function dve(t,e,r=!1){let n=t,i="default";(n?.classes?.length||0)>0&&(i=(n?.classes??[]).join(" ")),i=i+" flowchart-label";let a=0,s="",l;switch(n.type){case"round":a=5,s="rect";break;case"composite":a=0,s="composite",l=0;break;case"square":s="rect";break;case"diamond":s="question";break;case"hexagon":s="hexagon";break;case"block_arrow":s="block_arrow";break;case"odd":s="rect_left_inv_arrow";break;case"lean_right":s="lean_right";break;case"lean_left":s="lean_left";break;case"trapezoid":s="trapezoid";break;case"inv_trapezoid":s="inv_trapezoid";break;case"rect_left_inv_arrow":s="rect_left_inv_arrow";break;case"circle":s="circle";break;case"ellipse":s="ellipse";break;case"stadium":s="stadium";break;case"subroutine":s="subroutine";break;case"cylinder":s="cylinder";break;case"group":s="rect";break;case"doublecircle":s="doublecircle";break;default:s="rect"}let u=Y9(n?.styles??[]),h=n.label,f=n.size??{width:0,height:0,x:0,y:0};return{labelStyle:u.labelStyle,shape:s,labelText:h,rx:a,ry:a,class:i,style:u.style,id:n.id,directions:n.directions,width:f.width,height:f.height,x:f.x,y:f.y,positioned:r,intersect:void 0,type:n.type,padding:l??cr()?.block?.padding??0}}async function trt(t,e,r){let n=dve(e,r,!1);if(n.type==="group")return;let i=cr(),a=await sF(t,n,{config:i}),s=a.node().getBBox(),l=r.getBlock(n.id);l.size={width:s.width,height:s.height,x:0,y:0,node:a},r.setBlock(l),a.remove()}async function rrt(t,e,r){let n=dve(e,r,!0);if(r.getBlock(n.id).type!=="space"){let a=cr();await sF(t,n,{config:a}),e.intersect=n?.intersect,hve(n)}}async function oF(t,e,r,n){for(let i of e)await n(t,i,r),i.children&&await oF(t,i.children,r,n)}async function pve(t,e,r){await oF(t,e,r,trt)}async function mve(t,e,r){await oF(t,e,r,rrt)}async function gve(t,e,r,n,i){let a=new sn({multigraph:!0,compound:!0});a.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(let s of r)s.size&&a.setNode(s.id,{width:s.size.width,height:s.size.height,intersect:s.intersect});for(let s of e)if(s.start&&s.end){let l=n.getBlock(s.start),u=n.getBlock(s.end);if(l?.size&&u?.size){let h=l.size,f=u.size,d=[{x:h.x,y:h.y},{x:h.x+(f.x-h.x)/2,y:h.y+(f.y-h.y)/2},{x:f.x,y:f.y}];Hye(t,{v:s.start,w:s.end,name:s.id},{...s,arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:d,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",a,i),s.label&&(await Vye(t,{...s,label:s.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:d,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),Uye({...s,x:d[1].x,y:d[1].y},{originalPath:d}))}}}var yve=N(()=>{"use strict";Vo();ji();Wye();fve();ir();o(dve,"getNodeFromBlock");o(trt,"calculateBlockSize");o(rrt,"insertBlockPositioned");o(oF,"performOperations");o(pve,"calculateBlockSizes");o(mve,"insertBlocks");o(gve,"insertEdges")});var nrt,irt,vve,xve=N(()=>{"use strict";dr();ji();Nye();vt();Ei();Pye();yve();nrt=o(function(t,e){return e.db.getClasses()},"getClasses"),irt=o(async function(t,e,r,n){let{securityLevel:i,block:a}=cr(),s=n.db,l;i==="sandbox"&&(l=Ge("#i"+e));let u=i==="sandbox"?Ge(l.nodes()[0].contentDocument.body):Ge("body"),h=i==="sandbox"?u.select(`[id="${e}"]`):Ge(`[id="${e}"]`);Rye(h,["point","circle","cross"],n.type,e);let d=s.getBlocks(),p=s.getBlocksFlat(),m=s.getEdges(),g=h.insert("g").attr("class","block");await pve(g,d,s);let y=Oye(s);if(await mve(g,d,s),await gve(g,m,p,s,e),y){let v=y,x=Math.max(1,Math.round(.125*(v.width/v.height))),b=v.height+x+10,w=v.width+10,{useMaxWidth:C}=a;vn(h,b,w,!!C),Y.debug("Here Bounds",y,v),h.attr("viewBox",`${v.x-5} ${v.y-5} ${v.width+10} ${v.height+10}`)}},"draw"),vve={draw:irt,getClasses:nrt}});var bve={};hr(bve,{diagram:()=>art});var art,wve=N(()=>{"use strict";wye();_ye();Lye();xve();art={parser:bye,db:Aye,renderer:vve,styles:Dye}});var lF,cF,v4,Eve,uF,Ha,Zc,x4,Sve,crt,b4,Cve,Ave,_ve,Dve,Lve,sC,Ff,oC=N(()=>{"use strict";lF={L:"left",R:"right",T:"top",B:"bottom"},cF={L:o(t=>`${t},${t/2} 0,${t} 0,0`,"L"),R:o(t=>`0,${t/2} ${t},0 ${t},${t}`,"R"),T:o(t=>`0,0 ${t},0 ${t/2},${t}`,"T"),B:o(t=>`${t/2},0 ${t},${t} 0,${t}`,"B")},v4={L:o((t,e)=>t-e+2,"L"),R:o((t,e)=>t-2,"R"),T:o((t,e)=>t-e+2,"T"),B:o((t,e)=>t-2,"B")},Eve=o(function(t){return Ha(t)?t==="L"?"R":"L":t==="T"?"B":"T"},"getOppositeArchitectureDirection"),uF=o(function(t){let e=t;return e==="L"||e==="R"||e==="T"||e==="B"},"isArchitectureDirection"),Ha=o(function(t){let e=t;return e==="L"||e==="R"},"isArchitectureDirectionX"),Zc=o(function(t){let e=t;return e==="T"||e==="B"},"isArchitectureDirectionY"),x4=o(function(t,e){let r=Ha(t)&&Zc(e),n=Zc(t)&&Ha(e);return r||n},"isArchitectureDirectionXY"),Sve=o(function(t){let e=t[0],r=t[1],n=Ha(e)&&Zc(r),i=Zc(e)&&Ha(r);return n||i},"isArchitecturePairXY"),crt=o(function(t){return t!=="LL"&&t!=="RR"&&t!=="TT"&&t!=="BB"},"isValidArchitectureDirectionPair"),b4=o(function(t,e){let r=`${t}${e}`;return crt(r)?r:void 0},"getArchitectureDirectionPair"),Cve=o(function([t,e],r){let n=r[0],i=r[1];return Ha(n)?Zc(i)?[t+(n==="L"?-1:1),e+(i==="T"?1:-1)]:[t+(n==="L"?-1:1),e]:Ha(i)?[t+(i==="L"?1:-1),e+(n==="T"?1:-1)]:[t,e+(n==="T"?1:-1)]},"shiftPositionByArchitectureDirectionPair"),Ave=o(function(t){return t==="LT"||t==="TL"?[1,1]:t==="BL"||t==="LB"?[1,-1]:t==="BR"||t==="RB"?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),_ve=o(function(t,e){return x4(t,e)?"bend":Ha(t)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),Dve=o(function(t){return t.type==="service"},"isArchitectureService"),Lve=o(function(t){return t.type==="junction"},"isArchitectureJunction"),sC=o(t=>t.data(),"edgeData"),Ff=o(t=>t.data(),"nodeData")});function Li(t){let e=me().architecture;return e?.[t]?e[t]:Rve[t]}var Rve,vr,urt,hrt,frt,drt,prt,mrt,hF,grt,yrt,vrt,xrt,brt,wrt,Trt,Qp,w4=N(()=>{"use strict";Ya();zt();s6();mi();oC();Rve=or.architecture,vr=new pf(()=>({nodes:{},groups:{},edges:[],registeredIds:{},config:Rve,dataStructures:void 0,elements:{}})),urt=o(()=>{vr.reset(),Ar()},"clear"),hrt=o(function({id:t,icon:e,in:r,title:n,iconText:i}){if(vr.records.registeredIds[t]!==void 0)throw new Error(`The service id [${t}] is already in use by another ${vr.records.registeredIds[t]}`);if(r!==void 0){if(t===r)throw new Error(`The service [${t}] cannot be placed within itself`);if(vr.records.registeredIds[r]===void 0)throw new Error(`The service [${t}]'s parent does not exist. Please make sure the parent is created before this service`);if(vr.records.registeredIds[r]==="node")throw new Error(`The service [${t}]'s parent is not a group`)}vr.records.registeredIds[t]="node",vr.records.nodes[t]={id:t,type:"service",icon:e,iconText:i,title:n,edges:[],in:r}},"addService"),frt=o(()=>Object.values(vr.records.nodes).filter(Dve),"getServices"),drt=o(function({id:t,in:e}){vr.records.registeredIds[t]="node",vr.records.nodes[t]={id:t,type:"junction",edges:[],in:e}},"addJunction"),prt=o(()=>Object.values(vr.records.nodes).filter(Lve),"getJunctions"),mrt=o(()=>Object.values(vr.records.nodes),"getNodes"),hF=o(t=>vr.records.nodes[t],"getNode"),grt=o(function({id:t,icon:e,in:r,title:n}){if(vr.records.registeredIds[t]!==void 0)throw new Error(`The group id [${t}] is already in use by another ${vr.records.registeredIds[t]}`);if(r!==void 0){if(t===r)throw new Error(`The group [${t}] cannot be placed within itself`);if(vr.records.registeredIds[r]===void 0)throw new Error(`The group [${t}]'s parent does not exist. Please make sure the parent is created before this group`);if(vr.records.registeredIds[r]==="node")throw new Error(`The group [${t}]'s parent is not a group`)}vr.records.registeredIds[t]="group",vr.records.groups[t]={id:t,icon:e,title:n,in:r}},"addGroup"),yrt=o(()=>Object.values(vr.records.groups),"getGroups"),vrt=o(function({lhsId:t,rhsId:e,lhsDir:r,rhsDir:n,lhsInto:i,rhsInto:a,lhsGroup:s,rhsGroup:l,title:u}){if(!uF(r))throw new Error(`Invalid direction given for left hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${r}`);if(!uF(n))throw new Error(`Invalid direction given for right hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${n}`);if(vr.records.nodes[t]===void 0&&vr.records.groups[t]===void 0)throw new Error(`The left-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(vr.records.nodes[e]===void 0&&vr.records.groups[t]===void 0)throw new Error(`The right-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`);let h=vr.records.nodes[t].in,f=vr.records.nodes[e].in;if(s&&h&&f&&h==f)throw new Error(`The left-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(l&&h&&f&&h==f)throw new Error(`The right-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let d={lhsId:t,lhsDir:r,lhsInto:i,lhsGroup:s,rhsId:e,rhsDir:n,rhsInto:a,rhsGroup:l,title:u};vr.records.edges.push(d),vr.records.nodes[t]&&vr.records.nodes[e]&&(vr.records.nodes[t].edges.push(vr.records.edges[vr.records.edges.length-1]),vr.records.nodes[e].edges.push(vr.records.edges[vr.records.edges.length-1]))},"addEdge"),xrt=o(()=>vr.records.edges,"getEdges"),brt=o(()=>{if(vr.records.dataStructures===void 0){let t={},e=Object.entries(vr.records.nodes).reduce((l,[u,h])=>(l[u]=h.edges.reduce((f,d)=>{let p=hF(d.lhsId)?.in,m=hF(d.rhsId)?.in;if(p&&m&&p!==m){let g=_ve(d.lhsDir,d.rhsDir);g!=="bend"&&(t[p]??={},t[p][m]=g,t[m]??={},t[m][p]=g)}if(d.lhsId===u){let g=b4(d.lhsDir,d.rhsDir);g&&(f[g]=d.rhsId)}else{let g=b4(d.rhsDir,d.lhsDir);g&&(f[g]=d.lhsId)}return f},{}),l),{}),r=Object.keys(e)[0],n={[r]:1},i=Object.keys(e).reduce((l,u)=>u===r?l:{...l,[u]:1},{}),a=o(l=>{let u={[l]:[0,0]},h=[l];for(;h.length>0;){let f=h.shift();if(f){n[f]=1,delete i[f];let d=e[f],[p,m]=u[f];Object.entries(d).forEach(([g,y])=>{n[y]||(u[y]=Cve([p,m],g),h.push(y))})}}return u},"BFS"),s=[a(r)];for(;Object.keys(i).length>0;)s.push(a(Object.keys(i)[0]));vr.records.dataStructures={adjList:e,spatialMaps:s,groupAlignments:t}}return vr.records.dataStructures},"getDataStructures"),wrt=o((t,e)=>{vr.records.elements[t]=e},"setElementForId"),Trt=o(t=>vr.records.elements[t],"getElementById"),Qp={clear:urt,setDiagramTitle:$r,getDiagramTitle:Ir,setAccTitle:Lr,getAccTitle:Rr,setAccDescription:Nr,getAccDescription:Mr,addService:hrt,getServices:frt,addJunction:drt,getJunctions:prt,getNodes:mrt,getNode:hF,addGroup:grt,getGroups:yrt,addEdge:vrt,getEdges:xrt,setElementForId:wrt,getElementById:Trt,getDataStructures:brt};o(Li,"getConfigField")});var krt,Nve,Mve=N(()=>{"use strict";kp();vt();T1();w4();krt=o((t,e)=>{$c(t,e),t.groups.map(e.addGroup),t.services.map(r=>e.addService({...r,type:"service"})),t.junctions.map(r=>e.addJunction({...r,type:"junction"})),t.edges.map(e.addEdge)},"populateDb"),Nve={parse:o(async t=>{let e=await uo("architecture",t);Y.debug(e),krt(e,Qp)},"parse")}});var Ert,Ive,Ove=N(()=>{"use strict";Ert=o(t=>` + .edge { + stroke-width: ${t.archEdgeWidth}; + stroke: ${t.archEdgeColor}; + fill: none; + } + + .arrow { + fill: ${t.archEdgeArrowColor}; + } + + .node-bkg { + fill: none; + stroke: ${t.archGroupBorderColor}; + stroke-width: ${t.archGroupBorderWidth}; + stroke-dasharray: 8; + } + .node-icon-text { + display: flex; + align-items: center; + } + + .node-icon-text > div { + color: #fff; + margin: 1px; + height: fit-content; + text-align: center; + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + } +`,"getStyles"),Ive=Ert});var dF=Mi((T4,fF)=>{"use strict";o(function(e,r){typeof T4=="object"&&typeof fF=="object"?fF.exports=r():typeof define=="function"&&define.amd?define([],r):typeof T4=="object"?T4.layoutBase=r():e.layoutBase=r()},"webpackUniversalModuleDefinition")(T4,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=t,r.c=e,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=28)}([function(t,e,r){"use strict";function n(){}o(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,f){n.call(this,f),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=f,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var f=this.getOtherEnd(u),d=h.getGraphManager().getRoot();;){if(f.getOwner()==h)return f;if(f.getOwner()==d)break;f=f.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(5);function h(d,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),d.graphManager!=null&&(d=d.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=d,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var f in n)h[f]=n[f];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(d){this.rect.width=d},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(d){this.rect.height=d},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(d,p){this.rect.x=d.x,this.rect.y=d.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(d,p){this.rect.x=d-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(d,p){this.rect.x=d,this.rect.y=p},h.prototype.moveBy=function(d,p){this.rect.x+=d,this.rect.y+=p},h.prototype.getEdgeListToNode=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==d){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==d||y.source==d)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var d=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)d.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";d.add(m.source)}}),d},h.prototype.withChildren=function(){var d=new Set,p,m;if(d.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp?(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal=="right"&&this.setWidth(p+this.labelWidth)),this.labelHeight&&(this.labelPosVertical=="top"?(this.rect.y-=this.labelHeight,this.setHeight(m+this.labelHeight)):this.labelPosVertical=="center"&&this.labelHeight>m?(this.rect.y-=(this.labelHeight-m)/2,this.setHeight(this.labelHeight)):this.labelPosVertical=="bottom"&&this.setHeight(m+this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(d){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=d.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},t.exports=h},function(t,e,r){"use strict";var n=r(0);function i(){}o(i,"FDLayoutConstants");for(var a in n)i[a]=n[a];i.MAX_ITERATIONS=2500,i.DEFAULT_EDGE_LENGTH=50,i.DEFAULT_SPRING_STRENGTH=.45,i.DEFAULT_REPULSION_STRENGTH=4500,i.DEFAULT_GRAVITY_STRENGTH=.4,i.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,i.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,i.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,i.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,i.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,i.COOLING_ADAPTATION_FACTOR=.33,i.ADAPTATION_LOWER_NODE_LIMIT=1e3,i.ADAPTATION_UPPER_NODE_LIMIT=5e3,i.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,i.MAX_NODE_DISPLACEMENT=i.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,i.MIN_REPULSION_DIST=i.DEFAULT_EDGE_LENGTH/10,i.CONVERGENCE_CHECK_PERIOD=100,i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,i.MIN_EDGE_LENGTH=1,i.GRID_CALCULATION_CHECK_PERIOD=10,t.exports=i},function(t,e,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(7),l=r(3),u=r(1),h=r(13),f=r(12),d=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,w=0;w-1&&E>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(T,1),x.target!=x.source&&x.target.edges.splice(E,1);var C=x.source.owner.getEdges().indexOf(x);if(C==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(C,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,w=this.getNodes(),C=w.length,T=0;Tv&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(w[0].getParent().paddingLeft!=null?b=w[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new f(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,w,C,T,E,A,S=this.nodes,_=S.length,I=0;I<_;I++){var D=S[I];g&&D.child!=null&&D.updateBounds(),w=D.getLeft(),C=D.getRight(),T=D.getTop(),E=D.getBottom(),y>w&&(y=w),vT&&(x=T),bw&&(y=w),vT&&(x=T),b=this.nodes.length){var _=0;v.forEach(function(I){I.owner==g&&_++}),_==this.nodes.length&&(this.isConnected=!0)}},t.exports=p},function(t,e,r){"use strict";var n,i=r(1);function a(s){n=r(6),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,f){if(u==null&&h==null&&f==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{f=u,h=l,u=s;var d=h.getOwner(),p=f.getOwner();if(!(d!=null&&d.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(d==p)return u.isInterGraph=!1,d.add(u,h,f);if(u.isInterGraph=!0,u.source=h,u.target=f,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,f=u.length,d=0;d=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var f=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(f=1);var d=f*l[0],p=l[1]/f;l[0]d)return l[0]=u,l[1]=m,l[2]=f,l[3]=S,!1;if(hf)return l[0]=p,l[1]=h,l[2]=E,l[3]=d,!1;if(uf?(l[0]=y,l[1]=v,k=!0):(l[0]=g,l[1]=m,k=!0):R===M&&(u>f?(l[0]=p,l[1]=m,k=!0):(l[0]=x,l[1]=v,k=!0)),-O===M?f>u?(l[2]=A,l[3]=S,L=!0):(l[2]=E,l[3]=T,L=!0):O===M&&(f>u?(l[2]=C,l[3]=T,L=!0):(l[2]=_,l[3]=S,L=!0)),k&&L)return!1;if(u>f?h>d?(B=this.getCardinalDirection(R,M,4),F=this.getCardinalDirection(O,M,2)):(B=this.getCardinalDirection(-R,M,3),F=this.getCardinalDirection(-O,M,1)):h>d?(B=this.getCardinalDirection(-R,M,1),F=this.getCardinalDirection(-O,M,3)):(B=this.getCardinalDirection(R,M,2),F=this.getCardinalDirection(O,M,4)),!k)switch(B){case 1:z=m,P=u+-w/M,l[0]=P,l[1]=z;break;case 2:P=x,z=h+b*M,l[0]=P,l[1]=z;break;case 3:z=v,P=u+w/M,l[0]=P,l[1]=z;break;case 4:P=y,z=h+-b*M,l[0]=P,l[1]=z;break}if(!L)switch(F){case 1:H=T,$=f+-D/M,l[2]=$,l[3]=H;break;case 2:$=_,H=d+I*M,l[2]=$,l[3]=H;break;case 3:H=S,$=f+D/M,l[2]=$,l[3]=H;break;case 4:$=A,H=d+-I*M,l[2]=$,l[3]=H;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,f=a.y,d=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,w=void 0,C=void 0,T=void 0,E=void 0,A=void 0,S=void 0,_=void 0;return w=p-f,T=h-d,A=d*f-h*p,C=v-g,E=m-y,S=y*g-m*v,_=w*E-C*T,_===0?null:(x=(T*S-E*A)/_,b=(C*A-w*S)/_,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l=0){var v=(-m+Math.sqrt(m*m-4*p*g))/(2*p),x=(-m-Math.sqrt(m*m-4*p*g))/(2*p),b=null;return v>=0&&v<=1?[v]:x>=0&&x<=1?[x]:b}else return null},i.HALF_PI=.5*Math.PI,i.ONE_AND_HALF_PI=1.5*Math.PI,i.TWO_PI=2*Math.PI,i.THREE_PI=3*Math.PI,t.exports=i},function(t,e,r){"use strict";function n(){}o(n,"IMath"),n.sign=function(i){return i>0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},t.exports=n},function(t,e,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n},function(t,e,r){"use strict";var n=function(){function h(f,d){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},t.exports=i},function(t,e,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(w.push(T[0]);w.length>0&&g;){var E=w[0];w.splice(0,1),b.add(E);for(var A=E.getEdges(),x=0;x-1&&T.splice(D,1)}b=new Set,C=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(S,1);var _=C.getNeighborsList();_.forEach(function(k){if(y.indexOf(k)<0){var L=v.get(k),R=L-1;R==1&&E.push(k),v.set(k,R)}})}y=y.concat(E),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},t.exports=p},function(t,e,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},t.exports=n},function(t,e,r){"use strict";var n=r(5);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},t.exports=i},function(t,e,r){"use strict";function n(d){if(Array.isArray(d)){for(var p=0,m=Array(d.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(d>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var d=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&d&&this.updateGrid(),b=new Set,m=0;mw||b>w)&&(d.gravitationForceX=-this.gravityConstant*y,d.gravitationForceY=-this.gravityConstant*v)):(w=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>w||b>w)&&(d.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,d.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var d,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),d=this.totalDisplacement=x.length||w>=x[0].length)){for(var C=0;Ch},"_defaultCompareFunction")}]),l}();t.exports=s},function(t,e,r){"use strict";function n(){}o(n,"SVD"),n.svd=function(i){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=i.length,this.n=i[0].length;var a=Math.min(this.m,this.n);this.s=function(xt){for(var ut=[];xt-- >0;)ut.push(0);return ut}(Math.min(this.m+1,this.n)),this.U=function(xt){var ut=o(function Et(ft){if(ft.length==0)return 0;for(var yt=[],nt=0;nt0;)ut.push(0);return ut}(this.n),l=function(xt){for(var ut=[];xt-- >0;)ut.push(0);return ut}(this.m),u=!0,h=!0,f=Math.min(this.m-1,this.n),d=Math.max(0,Math.min(this.n-2,this.m)),p=0;p=0;M--)if(this.s[M]!==0){for(var B=M+1;B=0;j--){if(function(xt,ut){return xt&&ut}(j0;){var ue=void 0,Z=void 0;for(ue=L-2;ue>=-1&&ue!==-1;ue--)if(Math.abs(s[ue])<=se+J*(Math.abs(this.s[ue])+Math.abs(this.s[ue+1]))){s[ue]=0;break}if(ue===L-2)Z=4;else{var Se=void 0;for(Se=L-1;Se>=ue&&Se!==ue;Se--){var ce=(Se!==L?Math.abs(s[Se]):0)+(Se!==ue+1?Math.abs(s[Se-1]):0);if(Math.abs(this.s[Se])<=se+J*ce){this.s[Se]=0;break}}Se===ue?Z=3:Se===L-1?Z=1:(Z=2,ue=Se)}switch(ue++,Z){case 1:{var ae=s[L-2];s[L-2]=0;for(var Oe=L-2;Oe>=ue;Oe--){var ge=n.hypot(this.s[Oe],ae),ze=this.s[Oe]/ge,He=ae/ge;if(this.s[Oe]=ge,Oe!==ue&&(ae=-He*s[Oe-1],s[Oe-1]=ze*s[Oe-1]),h)for(var $e=0;$e=this.s[ue+1]);){var ot=this.s[ue];if(this.s[ue]=this.s[ue+1],this.s[ue+1]=ot,h&&ueMath.abs(a)?(s=a/i,s=Math.abs(i)*Math.sqrt(1+s*s)):a!=0?(s=i/a,s=Math.abs(a)*Math.sqrt(1+s*s)):s=0,s},t.exports=n},function(t,e,r){"use strict";var n=function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=f,this.gap_penalty=d,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o(function(e,r){typeof k4=="object"&&typeof pF=="object"?pF.exports=r(dF()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof k4=="object"?k4.coseBase=r(dF()):e.coseBase=r(e.layoutBase)},"webpackUniversalModuleDefinition")(k4,function(t){return(()=>{"use strict";var e={45:(a,s,l)=>{var u={};u.layoutBase=l(551),u.CoSEConstants=l(806),u.CoSEEdge=l(767),u.CoSEGraph=l(880),u.CoSEGraphManager=l(578),u.CoSELayout=l(765),u.CoSENode=l(991),u.ConstraintHandler=l(902),a.exports=u},806:(a,s,l)=>{var u=l(551).FDLayoutConstants;function h(){}o(h,"CoSEConstants");for(var f in u)h[f]=u[f];h.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,h.DEFAULT_RADIAL_SEPARATION=u.DEFAULT_EDGE_LENGTH,h.DEFAULT_COMPONENT_SEPERATION=60,h.TILE=!0,h.TILING_PADDING_VERTICAL=10,h.TILING_PADDING_HORIZONTAL=10,h.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,h.ENFORCE_CONSTRAINTS=!0,h.APPLY_LAYOUT=!0,h.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,h.TREE_REDUCTION_ON_INCREMENTAL=!0,h.PURE_INCREMENTAL=h.DEFAULT_INCREMENTAL,a.exports=h},767:(a,s,l)=>{var u=l(551).FDLayoutEdge;function h(d,p,m){u.call(this,d,p,m)}o(h,"CoSEEdge"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h},880:(a,s,l)=>{var u=l(551).LGraph;function h(d,p,m){u.call(this,d,p,m)}o(h,"CoSEGraph"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h},578:(a,s,l)=>{var u=l(551).LGraphManager;function h(d){u.call(this,d)}o(h,"CoSEGraphManager"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h},765:(a,s,l)=>{var u=l(551).FDLayout,h=l(578),f=l(880),d=l(991),p=l(767),m=l(806),g=l(902),y=l(551).FDLayoutConstants,v=l(551).LayoutConstants,x=l(551).Point,b=l(551).PointD,w=l(551).DimensionD,C=l(551).Layout,T=l(551).Integer,E=l(551).IGeometry,A=l(551).LGraph,S=l(551).Transform,_=l(551).LinkedList;function I(){u.call(this),this.toBeTiled={},this.constraints={}}o(I,"CoSELayout"),I.prototype=Object.create(u.prototype);for(var D in u)I[D]=u[D];I.prototype.newGraphManager=function(){var k=new h(this);return this.graphManager=k,k},I.prototype.newGraph=function(k){return new f(null,this.graphManager,k)},I.prototype.newNode=function(k){return new d(this.graphManager,k)},I.prototype.newEdge=function(k){return new p(null,null,k)},I.prototype.initParameters=function(){u.prototype.initParameters.call(this,arguments),this.isSubLayout||(m.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=m.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=m.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=y.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=y.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=y.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},I.prototype.initSpringEmbedder=function(){u.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/y.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},I.prototype.layout=function(){var k=v.DEFAULT_CREATE_BENDS_AS_NEEDED;return k&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},I.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(m.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var L=new Set(this.getAllNodes()),R=this.nodesWithGravity.filter(function(B){return L.has(B)});this.graphManager.setAllNodesToApplyGravitation(R)}}else{var k=this.getFlatForest();if(k.length>0)this.positionNodesRadially(k);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var L=new Set(this.getAllNodes()),R=this.nodesWithGravity.filter(function(O){return L.has(O)});this.graphManager.setAllNodesToApplyGravitation(R),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(g.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),m.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},I.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%y.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var k=new Set(this.getAllNodes()),L=this.nodesWithGravity.filter(function(M){return k.has(M)});this.graphManager.setAllNodesToApplyGravitation(L),this.graphManager.updateBounds(),this.updateGrid(),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var R=!this.isTreeGrowing&&!this.isGrowthFinished,O=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(R,O),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},I.prototype.getPositionsData=function(){for(var k=this.graphManager.getAllNodes(),L={},R=0;R0&&this.updateDisplacements();for(var R=0;R0&&(O.fixedNodeWeight=B)}}if(this.constraints.relativePlacementConstraint){var F=new Map,P=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(le){k.fixedNodesOnHorizontal.add(le),k.fixedNodesOnVertical.add(le)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var z=this.constraints.alignmentConstraint.vertical,R=0;R=2*le.length/3;X--)he=Math.floor(Math.random()*(X+1)),K=le[X],le[X]=le[he],le[he]=K;return le},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(le){if(le.left){var he=F.has(le.left)?F.get(le.left):le.left,K=F.has(le.right)?F.get(le.right):le.right;k.nodesInRelativeHorizontal.includes(he)||(k.nodesInRelativeHorizontal.push(he),k.nodeToRelativeConstraintMapHorizontal.set(he,[]),k.dummyToNodeForVerticalAlignment.has(he)?k.nodeToTempPositionMapHorizontal.set(he,k.idToNodeMap.get(k.dummyToNodeForVerticalAlignment.get(he)[0]).getCenterX()):k.nodeToTempPositionMapHorizontal.set(he,k.idToNodeMap.get(he).getCenterX())),k.nodesInRelativeHorizontal.includes(K)||(k.nodesInRelativeHorizontal.push(K),k.nodeToRelativeConstraintMapHorizontal.set(K,[]),k.dummyToNodeForVerticalAlignment.has(K)?k.nodeToTempPositionMapHorizontal.set(K,k.idToNodeMap.get(k.dummyToNodeForVerticalAlignment.get(K)[0]).getCenterX()):k.nodeToTempPositionMapHorizontal.set(K,k.idToNodeMap.get(K).getCenterX())),k.nodeToRelativeConstraintMapHorizontal.get(he).push({right:K,gap:le.gap}),k.nodeToRelativeConstraintMapHorizontal.get(K).push({left:he,gap:le.gap})}else{var X=P.has(le.top)?P.get(le.top):le.top,te=P.has(le.bottom)?P.get(le.bottom):le.bottom;k.nodesInRelativeVertical.includes(X)||(k.nodesInRelativeVertical.push(X),k.nodeToRelativeConstraintMapVertical.set(X,[]),k.dummyToNodeForHorizontalAlignment.has(X)?k.nodeToTempPositionMapVertical.set(X,k.idToNodeMap.get(k.dummyToNodeForHorizontalAlignment.get(X)[0]).getCenterY()):k.nodeToTempPositionMapVertical.set(X,k.idToNodeMap.get(X).getCenterY())),k.nodesInRelativeVertical.includes(te)||(k.nodesInRelativeVertical.push(te),k.nodeToRelativeConstraintMapVertical.set(te,[]),k.dummyToNodeForHorizontalAlignment.has(te)?k.nodeToTempPositionMapVertical.set(te,k.idToNodeMap.get(k.dummyToNodeForHorizontalAlignment.get(te)[0]).getCenterY()):k.nodeToTempPositionMapVertical.set(te,k.idToNodeMap.get(te).getCenterY())),k.nodeToRelativeConstraintMapVertical.get(X).push({bottom:te,gap:le.gap}),k.nodeToRelativeConstraintMapVertical.get(te).push({top:X,gap:le.gap})}});else{var H=new Map,Q=new Map;this.constraints.relativePlacementConstraint.forEach(function(le){if(le.left){var he=F.has(le.left)?F.get(le.left):le.left,K=F.has(le.right)?F.get(le.right):le.right;H.has(he)?H.get(he).push(K):H.set(he,[K]),H.has(K)?H.get(K).push(he):H.set(K,[he])}else{var X=P.has(le.top)?P.get(le.top):le.top,te=P.has(le.bottom)?P.get(le.bottom):le.bottom;Q.has(X)?Q.get(X).push(te):Q.set(X,[te]),Q.has(te)?Q.get(te).push(X):Q.set(te,[X])}});var j=o(function(he,K){var X=[],te=[],J=new _,se=new Set,ue=0;return he.forEach(function(Z,Se){if(!se.has(Se)){X[ue]=[],te[ue]=!1;var ce=Se;for(J.push(ce),se.add(ce),X[ue].push(ce);J.length!=0;){ce=J.shift(),K.has(ce)&&(te[ue]=!0);var ae=he.get(ce);ae.forEach(function(Oe){se.has(Oe)||(J.push(Oe),se.add(Oe),X[ue].push(Oe))})}ue++}}),{components:X,isFixed:te}},"constructComponents"),ie=j(H,k.fixedNodesOnHorizontal);this.componentsOnHorizontal=ie.components,this.fixedComponentsOnHorizontal=ie.isFixed;var ne=j(Q,k.fixedNodesOnVertical);this.componentsOnVertical=ne.components,this.fixedComponentsOnVertical=ne.isFixed}}},I.prototype.updateDisplacements=function(){var k=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(ne){var le=k.idToNodeMap.get(ne.nodeId);le.displacementX=0,le.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var L=this.constraints.alignmentConstraint.vertical,R=0;R1){var P;for(P=0;PO&&(O=Math.floor(F.y)),B=Math.floor(F.x+m.DEFAULT_COMPONENT_SEPERATION)}this.transform(new b(v.WORLD_CENTER_X-F.x/2,v.WORLD_CENTER_Y-F.y/2))},I.radialLayout=function(k,L,R){var O=Math.max(this.maxDiagonalInTree(k),m.DEFAULT_RADIAL_SEPARATION);I.branchRadialLayout(L,null,0,359,0,O);var M=A.calculateBounds(k),B=new S;B.setDeviceOrgX(M.getMinX()),B.setDeviceOrgY(M.getMinY()),B.setWorldOrgX(R.x),B.setWorldOrgY(R.y);for(var F=0;F1;){var X=K[0];K.splice(0,1);var te=j.indexOf(X);te>=0&&j.splice(te,1),le--,ie--}L!=null?he=(j.indexOf(K[0])+1)%le:he=0;for(var J=Math.abs(O-R)/ie,se=he;ne!=ie;se=++se%le){var ue=j[se].getOtherEnd(k);if(ue!=L){var Z=(R+ne*J)%360,Se=(Z+J)%360;I.branchRadialLayout(ue,k,Z,Se,M+B,B),ne++}}},I.maxDiagonalInTree=function(k){for(var L=T.MIN_VALUE,R=0;RL&&(L=M)}return L},I.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},I.prototype.groupZeroDegreeMembers=function(){var k=this,L={};this.memberGroups={},this.idToDummyNode={};for(var R=[],O=this.graphManager.getAllNodes(),M=0;M"u"&&(L[P]=[]),L[P]=L[P].concat(B)}Object.keys(L).forEach(function(z){if(L[z].length>1){var $="DummyCompound_"+z;k.memberGroups[$]=L[z];var H=L[z][0].getParent(),Q=new d(k.graphManager);Q.id=$,Q.paddingLeft=H.paddingLeft||0,Q.paddingRight=H.paddingRight||0,Q.paddingBottom=H.paddingBottom||0,Q.paddingTop=H.paddingTop||0,k.idToDummyNode[$]=Q;var j=k.getGraphManager().add(k.newGraph(),Q),ie=H.getChild();ie.add(Q);for(var ne=0;neM?(O.rect.x-=(O.labelWidth-M)/2,O.setWidth(O.labelWidth),O.labelMarginLeft=(O.labelWidth-M)/2):O.labelPosHorizontal=="right"&&O.setWidth(M+O.labelWidth)),O.labelHeight&&(O.labelPosVertical=="top"?(O.rect.y-=O.labelHeight,O.setHeight(B+O.labelHeight),O.labelMarginTop=O.labelHeight):O.labelPosVertical=="center"&&O.labelHeight>B?(O.rect.y-=(O.labelHeight-B)/2,O.setHeight(O.labelHeight),O.labelMarginTop=(O.labelHeight-B)/2):O.labelPosVertical=="bottom"&&O.setHeight(B+O.labelHeight))}})},I.prototype.repopulateCompounds=function(){for(var k=this.compoundOrder.length-1;k>=0;k--){var L=this.compoundOrder[k],R=L.id,O=L.paddingLeft,M=L.paddingTop,B=L.labelMarginLeft,F=L.labelMarginTop;this.adjustLocations(this.tiledMemberPack[R],L.rect.x,L.rect.y,O,M,B,F)}},I.prototype.repopulateZeroDegreeMembers=function(){var k=this,L=this.tiledZeroDegreePack;Object.keys(L).forEach(function(R){var O=k.idToDummyNode[R],M=O.paddingLeft,B=O.paddingTop,F=O.labelMarginLeft,P=O.labelMarginTop;k.adjustLocations(L[R],O.rect.x,O.rect.y,M,B,F,P)})},I.prototype.getToBeTiled=function(k){var L=k.id;if(this.toBeTiled[L]!=null)return this.toBeTiled[L];var R=k.getChild();if(R==null)return this.toBeTiled[L]=!1,!1;for(var O=R.getNodes(),M=0;M0)return this.toBeTiled[L]=!1,!1;if(B.getChild()==null){this.toBeTiled[B.id]=!1;continue}if(!this.getToBeTiled(B))return this.toBeTiled[L]=!1,!1}return this.toBeTiled[L]=!0,!0},I.prototype.getNodeDegree=function(k){for(var L=k.id,R=k.getEdges(),O=0,M=0;MH&&(H=j.rect.height)}R+=H+k.verticalPadding}},I.prototype.tileCompoundMembers=function(k,L){var R=this;this.tiledMemberPack=[],Object.keys(k).forEach(function(O){var M=L[O];if(R.tiledMemberPack[O]=R.tileNodes(k[O],M.paddingLeft+M.paddingRight),M.rect.width=R.tiledMemberPack[O].width,M.rect.height=R.tiledMemberPack[O].height,M.setCenter(R.tiledMemberPack[O].centerX,R.tiledMemberPack[O].centerY),M.labelMarginLeft=0,M.labelMarginTop=0,m.NODE_DIMENSIONS_INCLUDE_LABELS){var B=M.rect.width,F=M.rect.height;M.labelWidth&&(M.labelPosHorizontal=="left"?(M.rect.x-=M.labelWidth,M.setWidth(B+M.labelWidth),M.labelMarginLeft=M.labelWidth):M.labelPosHorizontal=="center"&&M.labelWidth>B?(M.rect.x-=(M.labelWidth-B)/2,M.setWidth(M.labelWidth),M.labelMarginLeft=(M.labelWidth-B)/2):M.labelPosHorizontal=="right"&&M.setWidth(B+M.labelWidth)),M.labelHeight&&(M.labelPosVertical=="top"?(M.rect.y-=M.labelHeight,M.setHeight(F+M.labelHeight),M.labelMarginTop=M.labelHeight):M.labelPosVertical=="center"&&M.labelHeight>F?(M.rect.y-=(M.labelHeight-F)/2,M.setHeight(M.labelHeight),M.labelMarginTop=(M.labelHeight-F)/2):M.labelPosVertical=="bottom"&&M.setHeight(F+M.labelHeight))}})},I.prototype.tileNodes=function(k,L){var R=this.tileNodesByFavoringDim(k,L,!0),O=this.tileNodesByFavoringDim(k,L,!1),M=this.getOrgRatio(R),B=this.getOrgRatio(O),F;return BP&&(P=ne.getWidth())});var z=B/M,$=F/M,H=Math.pow(R-O,2)+4*(z+O)*($+R)*M,Q=(O-R+Math.sqrt(H))/(2*(z+O)),j;L?(j=Math.ceil(Q),j==Q&&j++):j=Math.floor(Q);var ie=j*(z+O)-O;return P>ie&&(ie=P),ie+=O*2,ie},I.prototype.tileNodesByFavoringDim=function(k,L,R){var O=m.TILING_PADDING_VERTICAL,M=m.TILING_PADDING_HORIZONTAL,B=m.TILING_COMPARE_BY,F={rows:[],rowWidth:[],rowHeight:[],width:0,height:L,verticalPadding:O,horizontalPadding:M,centerX:0,centerY:0};B&&(F.idealRowWidth=this.calcIdealRowWidth(k,R));var P=o(function(le){return le.rect.width*le.rect.height},"getNodeArea"),z=o(function(le,he){return P(he)-P(le)},"areaCompareFcn");k.sort(function(ne,le){var he=z;return F.idealRowWidth?(he=B,he(ne.id,le.id)):he(ne,le)});for(var $=0,H=0,Q=0;Q0&&(F+=k.horizontalPadding),k.rowWidth[R]=F,k.width0&&(P+=k.verticalPadding);var z=0;P>k.rowHeight[R]&&(z=k.rowHeight[R],k.rowHeight[R]=P,z=k.rowHeight[R]-z),k.height+=z,k.rows[R].push(L)},I.prototype.getShortestRowIndex=function(k){for(var L=-1,R=Number.MAX_VALUE,O=0;OR&&(L=O,R=k.rowWidth[O]);return L},I.prototype.canAddHorizontal=function(k,L,R){if(k.idealRowWidth){var O=k.rows.length-1,M=k.rowWidth[O];return M+L+k.horizontalPadding<=k.idealRowWidth}var B=this.getShortestRowIndex(k);if(B<0)return!0;var F=k.rowWidth[B];if(F+k.horizontalPadding+L<=k.width)return!0;var P=0;k.rowHeight[B]0&&(P=R+k.verticalPadding-k.rowHeight[B]);var z;k.width-F>=L+k.horizontalPadding?z=(k.height+P)/(F+L+k.horizontalPadding):z=(k.height+P)/k.width,P=R+k.verticalPadding;var $;return k.widthB&&L!=R){O.splice(-1,1),k.rows[R].push(M),k.rowWidth[L]=k.rowWidth[L]-B,k.rowWidth[R]=k.rowWidth[R]+B,k.width=k.rowWidth[instance.getLongestRowIndex(k)];for(var F=Number.MIN_VALUE,P=0;PF&&(F=O[P].height);L>0&&(F+=k.verticalPadding);var z=k.rowHeight[L]+k.rowHeight[R];k.rowHeight[L]=F,k.rowHeight[R]0)for(var ie=M;ie<=B;ie++)j[0]+=this.grid[ie][F-1].length+this.grid[ie][F].length-1;if(B0)for(var ie=F;ie<=P;ie++)j[3]+=this.grid[M-1][ie].length+this.grid[M][ie].length-1;for(var ne=T.MAX_VALUE,le,he,K=0;K{var u=l(551).FDLayoutNode,h=l(551).IMath;function f(p,m,g,y){u.call(this,p,m,g,y)}o(f,"CoSENode"),f.prototype=Object.create(u.prototype);for(var d in u)f[d]=u[d];f.prototype.calculateDisplacement=function(){var p=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementX=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementX)),Math.abs(this.displacementY)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementY=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},f.prototype.propogateDisplacementToChildren=function(p,m){for(var g=this.getChild().getNodes(),y,v=0;v{function u(g){if(Array.isArray(g)){for(var y=0,v=Array(g.length);y0){var ct=0;Ue.forEach(function(ot){xe=="horizontal"?(we.set(ot,x.has(ot)?b[x.get(ot)]:pe.get(ot)),ct+=we.get(ot)):(we.set(ot,x.has(ot)?w[x.get(ot)]:pe.get(ot)),ct+=we.get(ot))}),ct=ct/Ue.length,st.forEach(function(ot){q.has(ot)||we.set(ot,ct)})}else{var We=0;st.forEach(function(ot){xe=="horizontal"?We+=x.has(ot)?b[x.get(ot)]:pe.get(ot):We+=x.has(ot)?w[x.get(ot)]:pe.get(ot)}),We=We/st.length,st.forEach(function(ot){we.set(ot,We)})}});for(var qe=o(function(){var Ue=De.shift(),ct=V.get(Ue);ct.forEach(function(We){if(we.get(We.id)ot&&(ot=yt),ntYt&&(Yt=nt)}}catch(At){Mt=!0,xt=At}finally{try{!bt&&ut.return&&ut.return()}finally{if(Mt)throw xt}}var dn=(ct+ot)/2-(We+Yt)/2,Tt=!0,On=!1,tn=void 0;try{for(var _r=st[Symbol.iterator](),Dr;!(Tt=(Dr=_r.next()).done);Tt=!0){var Pn=Dr.value;we.set(Pn,we.get(Pn)+dn)}}catch(At){On=!0,tn=At}finally{try{!Tt&&_r.return&&_r.return()}finally{if(On)throw tn}}})}return we},"findAppropriatePositionForRelativePlacement"),D=o(function(V){var xe=0,q=0,pe=0,ve=0;if(V.forEach(function(Ve){Ve.left?b[x.get(Ve.left)]-b[x.get(Ve.right)]>=0?xe++:q++:w[x.get(Ve.top)]-w[x.get(Ve.bottom)]>=0?pe++:ve++}),xe>q&&pe>ve)for(var Pe=0;Peq)for(var _e=0;_eve)for(var we=0;we1)y.fixedNodeConstraint.forEach(function(oe,V){O[V]=[oe.position.x,oe.position.y],M[V]=[b[x.get(oe.nodeId)],w[x.get(oe.nodeId)]]}),B=!0;else if(y.alignmentConstraint)(function(){var oe=0;if(y.alignmentConstraint.vertical){for(var V=y.alignmentConstraint.vertical,xe=o(function(we){var Ve=new Set;V[we].forEach(function(at){Ve.add(at)});var De=new Set([].concat(u(Ve)).filter(function(at){return P.has(at)})),qe=void 0;De.size>0?qe=b[x.get(De.values().next().value)]:qe=_(Ve).x,V[we].forEach(function(at){O[oe]=[qe,w[x.get(at)]],M[oe]=[b[x.get(at)],w[x.get(at)]],oe++})},"_loop2"),q=0;q0?qe=b[x.get(De.values().next().value)]:qe=_(Ve).y,pe[we].forEach(function(at){O[oe]=[b[x.get(at)],qe],M[oe]=[b[x.get(at)],w[x.get(at)]],oe++})},"_loop3"),Pe=0;PeQ&&(Q=H[ie].length,j=ie);if(Q<$.size/2)D(y.relativePlacementConstraint),B=!1,F=!1;else{var ne=new Map,le=new Map,he=[];H[j].forEach(function(oe){z.get(oe).forEach(function(V){V.direction=="horizontal"?(ne.has(oe)?ne.get(oe).push(V):ne.set(oe,[V]),ne.has(V.id)||ne.set(V.id,[]),he.push({left:oe,right:V.id})):(le.has(oe)?le.get(oe).push(V):le.set(oe,[V]),le.has(V.id)||le.set(V.id,[]),he.push({top:oe,bottom:V.id}))})}),D(he),F=!1;var K=I(ne,"horizontal"),X=I(le,"vertical");H[j].forEach(function(oe,V){M[V]=[b[x.get(oe)],w[x.get(oe)]],O[V]=[],K.has(oe)?O[V][0]=K.get(oe):O[V][0]=b[x.get(oe)],X.has(oe)?O[V][1]=X.get(oe):O[V][1]=w[x.get(oe)]}),B=!0}}if(B){for(var te=void 0,J=d.transpose(O),se=d.transpose(M),ue=0;ue0){var ze={x:0,y:0};y.fixedNodeConstraint.forEach(function(oe,V){var xe={x:b[x.get(oe.nodeId)],y:w[x.get(oe.nodeId)]},q=oe.position,pe=S(q,xe);ze.x+=pe.x,ze.y+=pe.y}),ze.x/=y.fixedNodeConstraint.length,ze.y/=y.fixedNodeConstraint.length,b.forEach(function(oe,V){b[V]+=ze.x}),w.forEach(function(oe,V){w[V]+=ze.y}),y.fixedNodeConstraint.forEach(function(oe){b[x.get(oe.nodeId)]=oe.position.x,w[x.get(oe.nodeId)]=oe.position.y})}if(y.alignmentConstraint){if(y.alignmentConstraint.vertical)for(var He=y.alignmentConstraint.vertical,$e=o(function(V){var xe=new Set;He[V].forEach(function(ve){xe.add(ve)});var q=new Set([].concat(u(xe)).filter(function(ve){return P.has(ve)})),pe=void 0;q.size>0?pe=b[x.get(q.values().next().value)]:pe=_(xe).x,xe.forEach(function(ve){P.has(ve)||(b[x.get(ve)]=pe)})},"_loop4"),Re=0;Re0?pe=w[x.get(q.values().next().value)]:pe=_(xe).y,xe.forEach(function(ve){P.has(ve)||(w[x.get(ve)]=pe)})},"_loop5"),W=0;W{a.exports=t}},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return e[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(45);return i})()})});var Pve=Mi((E4,gF)=>{"use strict";o(function(e,r){typeof E4=="object"&&typeof gF=="object"?gF.exports=r(mF()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof E4=="object"?E4.cytoscapeFcose=r(mF()):e.cytoscapeFcose=r(e.coseBase)},"webpackUniversalModuleDefinition")(E4,function(t){return(()=>{"use strict";var e={658:a=>{a.exports=Object.assign!=null?Object.assign.bind(Object):function(s){for(var l=arguments.length,u=Array(l>1?l-1:0),h=1;h{var u=function(){function d(p,m){var g=[],y=!0,v=!1,x=void 0;try{for(var b=p[Symbol.iterator](),w;!(y=(w=b.next()).done)&&(g.push(w.value),!(m&&g.length===m));y=!0);}catch(C){v=!0,x=C}finally{try{!y&&b.return&&b.return()}finally{if(v)throw x}}return g}return o(d,"sliceIterator"),function(p,m){if(Array.isArray(p))return p;if(Symbol.iterator in Object(p))return d(p,m);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),h=l(140).layoutBase.LinkedList,f={};f.getTopMostNodes=function(d){for(var p={},m=0;m0&&B.merge($)});for(var F=0;F1){w=x[0],C=w.connectedEdges().length,x.forEach(function(M){M.connectedEdges().length0&&g.set("dummy"+(g.size+1),A),S},f.relocateComponent=function(d,p,m){if(!m.fixedNodeConstraint){var g=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,v=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY;if(m.quality=="draft"){var b=!0,w=!1,C=void 0;try{for(var T=p.nodeIndexes[Symbol.iterator](),E;!(b=(E=T.next()).done);b=!0){var A=E.value,S=u(A,2),_=S[0],I=S[1],D=m.cy.getElementById(_);if(D){var k=D.boundingBox(),L=p.xCoords[I]-k.w/2,R=p.xCoords[I]+k.w/2,O=p.yCoords[I]-k.h/2,M=p.yCoords[I]+k.h/2;Ly&&(y=R),Ox&&(x=M)}}}catch($){w=!0,C=$}finally{try{!b&&T.return&&T.return()}finally{if(w)throw C}}var B=d.x-(y+g)/2,F=d.y-(x+v)/2;p.xCoords=p.xCoords.map(function($){return $+B}),p.yCoords=p.yCoords.map(function($){return $+F})}else{Object.keys(p).forEach(function($){var H=p[$],Q=H.getRect().x,j=H.getRect().x+H.getRect().width,ie=H.getRect().y,ne=H.getRect().y+H.getRect().height;Qy&&(y=j),iex&&(x=ne)});var P=d.x-(y+g)/2,z=d.y-(x+v)/2;Object.keys(p).forEach(function($){var H=p[$];H.setCenter(H.getCenterX()+P,H.getCenterY()+z)})}}},f.calcBoundingBox=function(d,p,m,g){for(var y=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,x=Number.MAX_SAFE_INTEGER,b=Number.MIN_SAFE_INTEGER,w=void 0,C=void 0,T=void 0,E=void 0,A=d.descendants().not(":parent"),S=A.length,_=0;_w&&(y=w),vT&&(x=T),b{var u=l(548),h=l(140).CoSELayout,f=l(140).CoSENode,d=l(140).layoutBase.PointD,p=l(140).layoutBase.DimensionD,m=l(140).layoutBase.LayoutConstants,g=l(140).layoutBase.FDLayoutConstants,y=l(140).CoSEConstants,v=o(function(b,w){var C=b.cy,T=b.eles,E=T.nodes(),A=T.edges(),S=void 0,_=void 0,I=void 0,D={};b.randomize&&(S=w.nodeIndexes,_=w.xCoords,I=w.yCoords);var k=o(function($){return typeof $=="function"},"isFn"),L=o(function($,H){return k($)?$(H):$},"optFn"),R=u.calcParentsWithoutChildren(C,T),O=o(function z($,H,Q,j){for(var ie=H.length,ne=0;ne0){var J=void 0;J=Q.getGraphManager().add(Q.newGraph(),K),z(J,he,Q,j)}}},"processChildrenList"),M=o(function($,H,Q){for(var j=0,ie=0,ne=0;ne0?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=j/ie:k(b.idealEdgeLength)?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=50:y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=b.idealEdgeLength,y.MIN_REPULSION_DIST=g.MIN_REPULSION_DIST=g.DEFAULT_EDGE_LENGTH/10,y.DEFAULT_RADIAL_SEPARATION=g.DEFAULT_EDGE_LENGTH)},"processEdges"),B=o(function($,H){H.fixedNodeConstraint&&($.constraints.fixedNodeConstraint=H.fixedNodeConstraint),H.alignmentConstraint&&($.constraints.alignmentConstraint=H.alignmentConstraint),H.relativePlacementConstraint&&($.constraints.relativePlacementConstraint=H.relativePlacementConstraint)},"processConstraints");b.nestingFactor!=null&&(y.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=g.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=b.nestingFactor),b.gravity!=null&&(y.DEFAULT_GRAVITY_STRENGTH=g.DEFAULT_GRAVITY_STRENGTH=b.gravity),b.numIter!=null&&(y.MAX_ITERATIONS=g.MAX_ITERATIONS=b.numIter),b.gravityRange!=null&&(y.DEFAULT_GRAVITY_RANGE_FACTOR=g.DEFAULT_GRAVITY_RANGE_FACTOR=b.gravityRange),b.gravityCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_STRENGTH=g.DEFAULT_COMPOUND_GRAVITY_STRENGTH=b.gravityCompound),b.gravityRangeCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=g.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=b.gravityRangeCompound),b.initialEnergyOnIncremental!=null&&(y.DEFAULT_COOLING_FACTOR_INCREMENTAL=g.DEFAULT_COOLING_FACTOR_INCREMENTAL=b.initialEnergyOnIncremental),b.tilingCompareBy!=null&&(y.TILING_COMPARE_BY=b.tilingCompareBy),b.quality=="proof"?m.QUALITY=2:m.QUALITY=0,y.NODE_DIMENSIONS_INCLUDE_LABELS=g.NODE_DIMENSIONS_INCLUDE_LABELS=m.NODE_DIMENSIONS_INCLUDE_LABELS=b.nodeDimensionsIncludeLabels,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!b.randomize,y.ANIMATE=g.ANIMATE=m.ANIMATE=b.animate,y.TILE=b.tile,y.TILING_PADDING_VERTICAL=typeof b.tilingPaddingVertical=="function"?b.tilingPaddingVertical.call():b.tilingPaddingVertical,y.TILING_PADDING_HORIZONTAL=typeof b.tilingPaddingHorizontal=="function"?b.tilingPaddingHorizontal.call():b.tilingPaddingHorizontal,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!0,y.PURE_INCREMENTAL=!b.randomize,m.DEFAULT_UNIFORM_LEAF_NODE_SIZES=b.uniformNodeDimensions,b.step=="transformed"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!1),b.step=="enforced"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!1),b.step=="cose"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!0),b.step=="all"&&(b.randomize?y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!0),b.fixedNodeConstraint||b.alignmentConstraint||b.relativePlacementConstraint?y.TREE_REDUCTION_ON_INCREMENTAL=!1:y.TREE_REDUCTION_ON_INCREMENTAL=!0;var F=new h,P=F.newGraphManager();return O(P.addRoot(),u.getTopMostNodes(E),F,b),M(F,P,A),B(F,b),F.runLayout(),D},"coseLayout");a.exports={coseLayout:v}},212:(a,s,l)=>{var u=function(){function b(w,C){for(var T=0;T0)if(M){var P=d.getTopMostNodes(T.eles.nodes());if(k=d.connectComponents(E,T.eles,P),k.forEach(function(ce){var ae=ce.boundingBox();L.push({x:ae.x1+ae.w/2,y:ae.y1+ae.h/2})}),T.randomize&&k.forEach(function(ce){T.eles=ce,S.push(m(T))}),T.quality=="default"||T.quality=="proof"){var z=E.collection();if(T.tile){var $=new Map,H=[],Q=[],j=0,ie={nodeIndexes:$,xCoords:H,yCoords:Q},ne=[];if(k.forEach(function(ce,ae){ce.edges().length==0&&(ce.nodes().forEach(function(Oe,ge){z.merge(ce.nodes()[ge]),Oe.isParent()||(ie.nodeIndexes.set(ce.nodes()[ge].id(),j++),ie.xCoords.push(ce.nodes()[0].position().x),ie.yCoords.push(ce.nodes()[0].position().y))}),ne.push(ae))}),z.length>1){var le=z.boundingBox();L.push({x:le.x1+le.w/2,y:le.y1+le.h/2}),k.push(z),S.push(ie);for(var he=ne.length-1;he>=0;he--)k.splice(ne[he],1),S.splice(ne[he],1),L.splice(ne[he],1)}}k.forEach(function(ce,ae){T.eles=ce,D.push(y(T,S[ae])),d.relocateComponent(L[ae],D[ae],T)})}else k.forEach(function(ce,ae){d.relocateComponent(L[ae],S[ae],T)});var K=new Set;if(k.length>1){var X=[],te=A.filter(function(ce){return ce.css("display")=="none"});k.forEach(function(ce,ae){var Oe=void 0;if(T.quality=="draft"&&(Oe=S[ae].nodeIndexes),ce.nodes().not(te).length>0){var ge={};ge.edges=[],ge.nodes=[];var ze=void 0;ce.nodes().not(te).forEach(function(He){if(T.quality=="draft")if(!He.isParent())ze=Oe.get(He.id()),ge.nodes.push({x:S[ae].xCoords[ze]-He.boundingbox().w/2,y:S[ae].yCoords[ze]-He.boundingbox().h/2,width:He.boundingbox().w,height:He.boundingbox().h});else{var $e=d.calcBoundingBox(He,S[ae].xCoords,S[ae].yCoords,Oe);ge.nodes.push({x:$e.topLeftX,y:$e.topLeftY,width:$e.width,height:$e.height})}else D[ae][He.id()]&&ge.nodes.push({x:D[ae][He.id()].getLeft(),y:D[ae][He.id()].getTop(),width:D[ae][He.id()].getWidth(),height:D[ae][He.id()].getHeight()})}),ce.edges().forEach(function(He){var $e=He.source(),Re=He.target();if($e.css("display")!="none"&&Re.css("display")!="none")if(T.quality=="draft"){var Ie=Oe.get($e.id()),be=Oe.get(Re.id()),W=[],de=[];if($e.isParent()){var re=d.calcBoundingBox($e,S[ae].xCoords,S[ae].yCoords,Oe);W.push(re.topLeftX+re.width/2),W.push(re.topLeftY+re.height/2)}else W.push(S[ae].xCoords[Ie]),W.push(S[ae].yCoords[Ie]);if(Re.isParent()){var oe=d.calcBoundingBox(Re,S[ae].xCoords,S[ae].yCoords,Oe);de.push(oe.topLeftX+oe.width/2),de.push(oe.topLeftY+oe.height/2)}else de.push(S[ae].xCoords[be]),de.push(S[ae].yCoords[be]);ge.edges.push({startX:W[0],startY:W[1],endX:de[0],endY:de[1]})}else D[ae][$e.id()]&&D[ae][Re.id()]&&ge.edges.push({startX:D[ae][$e.id()].getCenterX(),startY:D[ae][$e.id()].getCenterY(),endX:D[ae][Re.id()].getCenterX(),endY:D[ae][Re.id()].getCenterY()})}),ge.nodes.length>0&&(X.push(ge),K.add(ae))}});var J=O.packComponents(X,T.randomize).shifts;if(T.quality=="draft")S.forEach(function(ce,ae){var Oe=ce.xCoords.map(function(ze){return ze+J[ae].dx}),ge=ce.yCoords.map(function(ze){return ze+J[ae].dy});ce.xCoords=Oe,ce.yCoords=ge});else{var se=0;K.forEach(function(ce){Object.keys(D[ce]).forEach(function(ae){var Oe=D[ce][ae];Oe.setCenter(Oe.getCenterX()+J[se].dx,Oe.getCenterY()+J[se].dy)}),se++})}}}else{var B=T.eles.boundingBox();if(L.push({x:B.x1+B.w/2,y:B.y1+B.h/2}),T.randomize){var F=m(T);S.push(F)}T.quality=="default"||T.quality=="proof"?(D.push(y(T,S[0])),d.relocateComponent(L[0],D[0],T)):d.relocateComponent(L[0],S[0],T)}var ue=o(function(ae,Oe){if(T.quality=="default"||T.quality=="proof"){typeof ae=="number"&&(ae=Oe);var ge=void 0,ze=void 0,He=ae.data("id");return D.forEach(function(Re){He in Re&&(ge={x:Re[He].getRect().getCenterX(),y:Re[He].getRect().getCenterY()},ze=Re[He])}),T.nodeDimensionsIncludeLabels&&(ze.labelWidth&&(ze.labelPosHorizontal=="left"?ge.x+=ze.labelWidth/2:ze.labelPosHorizontal=="right"&&(ge.x-=ze.labelWidth/2)),ze.labelHeight&&(ze.labelPosVertical=="top"?ge.y+=ze.labelHeight/2:ze.labelPosVertical=="bottom"&&(ge.y-=ze.labelHeight/2))),ge==null&&(ge={x:ae.position("x"),y:ae.position("y")}),{x:ge.x,y:ge.y}}else{var $e=void 0;return S.forEach(function(Re){var Ie=Re.nodeIndexes.get(ae.id());Ie!=null&&($e={x:Re.xCoords[Ie],y:Re.yCoords[Ie]})}),$e==null&&($e={x:ae.position("x"),y:ae.position("y")}),{x:$e.x,y:$e.y}}},"getPositions");if(T.quality=="default"||T.quality=="proof"||T.randomize){var Z=d.calcParentsWithoutChildren(E,A),Se=A.filter(function(ce){return ce.css("display")=="none"});T.eles=A.not(Se),A.nodes().not(":parent").not(Se).layoutPositions(C,T,ue),Z.length>0&&Z.forEach(function(ce){ce.position(ue(ce))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")},"run")}]),b}();a.exports=x},657:(a,s,l)=>{var u=l(548),h=l(140).layoutBase.Matrix,f=l(140).layoutBase.SVD,d=o(function(m){var g=m.cy,y=m.eles,v=y.nodes(),x=y.nodes(":parent"),b=new Map,w=new Map,C=new Map,T=[],E=[],A=[],S=[],_=[],I=[],D=[],k=[],L=void 0,R=void 0,O=1e8,M=1e-9,B=m.piTol,F=m.samplingType,P=m.nodeSeparation,z=void 0,$=o(function(){for(var xe=0,q=0,pe=!1;q=Pe;){we=ve[Pe++];for(var st=T[we],Ue=0;Ueqe&&(qe=_[We],at=We)}return at},"BFS"),Q=o(function(xe){var q=void 0;if(xe){q=Math.floor(Math.random()*R),L=q;for(var ve=0;ve=1)break;qe=De}for(var st=0;st=1)break;qe=De}for(var ct=0;ct0&&(q.isParent()?T[xe].push(C.get(q.id())):T[xe].push(q.id()))})});var Z=o(function(xe){var q=w.get(xe),pe=void 0;b.get(xe).forEach(function(ve){g.getElementById(ve).isParent()?pe=C.get(ve):pe=ve,T[q].push(pe),T[w.get(pe)].push(xe)})},"_loop"),Se=!0,ce=!1,ae=void 0;try{for(var Oe=b.keys()[Symbol.iterator](),ge;!(Se=(ge=Oe.next()).done);Se=!0){var ze=ge.value;Z(ze)}}catch(V){ce=!0,ae=V}finally{try{!Se&&Oe.return&&Oe.return()}finally{if(ce)throw ae}}R=w.size;var He=void 0;if(R>2){z=R{var u=l(212),h=o(function(d){d&&d("layout","fcose",u)},"register");typeof cytoscape<"u"&&h(cytoscape),a.exports=h},140:a=>{a.exports=t}},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return e[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(579);return i})()})});var dy,Zp,yF=N(()=>{"use strict";tu();dy=o(t=>`${t}`,"wrapIcon"),Zp={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:dy('')},server:{body:dy('')},disk:{body:dy('')},internet:{body:dy('')},cloud:{body:dy('')},unknown:OC,blank:{body:dy("")}}}});var Bve,Fve,$ve,zve,Gve=N(()=>{"use strict";tu();zt();to();w4();yF();oC();Bve=o(async function(t,e){let r=Li("padding"),n=Li("iconSize"),i=n/2,a=n/6,s=a/2;await Promise.all(e.edges().map(async l=>{let{source:u,sourceDir:h,sourceArrow:f,sourceGroup:d,target:p,targetDir:m,targetArrow:g,targetGroup:y,label:v}=sC(l),{x,y:b}=l[0].sourceEndpoint(),{x:w,y:C}=l[0].midpoint(),{x:T,y:E}=l[0].targetEndpoint(),A=r+4;if(d&&(Ha(h)?x+=h==="L"?-A:A:b+=h==="T"?-A:A+18),y&&(Ha(m)?T+=m==="L"?-A:A:E+=m==="T"?-A:A+18),!d&&Qp.getNode(u)?.type==="junction"&&(Ha(h)?x+=h==="L"?i:-i:b+=h==="T"?i:-i),!y&&Qp.getNode(p)?.type==="junction"&&(Ha(m)?T+=m==="L"?i:-i:E+=m==="T"?i:-i),l[0]._private.rscratch){let S=t.insert("g");if(S.insert("path").attr("d",`M ${x},${b} L ${w},${C} L${T},${E} `).attr("class","edge"),f){let _=Ha(h)?v4[h](x,a):x-s,I=Zc(h)?v4[h](b,a):b-s;S.insert("polygon").attr("points",cF[h](a)).attr("transform",`translate(${_},${I})`).attr("class","arrow")}if(g){let _=Ha(m)?v4[m](T,a):T-s,I=Zc(m)?v4[m](E,a):E-s;S.insert("polygon").attr("points",cF[m](a)).attr("transform",`translate(${_},${I})`).attr("class","arrow")}if(v){let _=x4(h,m)?"XY":Ha(h)?"X":"Y",I=0;_==="X"?I=Math.abs(x-T):_==="Y"?I=Math.abs(b-E)/1.5:I=Math.abs(x-T)/2;let D=S.append("g");if(await Hn(D,v,{useHtmlLabels:!1,width:I,classes:"architecture-service-label"},me()),D.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),_==="X")D.attr("transform","translate("+w+", "+C+")");else if(_==="Y")D.attr("transform","translate("+w+", "+C+") rotate(-90)");else if(_==="XY"){let k=b4(h,m);if(k&&Sve(k)){let L=D.node().getBoundingClientRect(),[R,O]=Ave(k);D.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*R*O*45})`);let M=D.node().getBoundingClientRect();D.attr("transform",` + translate(${w}, ${C-L.height/2}) + translate(${R*M.width/2}, ${O*M.height/2}) + rotate(${-1*R*O*45}, 0, ${L.height/2}) + `)}}}}}))},"drawEdges"),Fve=o(async function(t,e){let n=Li("padding")*.75,i=Li("fontSize"),s=Li("iconSize")/2;await Promise.all(e.nodes().map(async l=>{let u=Ff(l);if(u.type==="group"){let{h,w:f,x1:d,y1:p}=l.boundingBox();t.append("rect").attr("x",d+s).attr("y",p+s).attr("width",f).attr("height",h).attr("class","node-bkg");let m=t.append("g"),g=d,y=p;if(u.icon){let v=m.append("g");v.html(`${await wo(u.icon,{height:n,width:n,fallbackPrefix:Zp.prefix})}`),v.attr("transform","translate("+(g+s+1)+", "+(y+s+1)+")"),g+=n,y+=i/2-1-2}if(u.label){let v=m.append("g");await Hn(v,u.label,{useHtmlLabels:!1,width:f,classes:"architecture-service-label"},me()),v.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),v.attr("transform","translate("+(g+s+4)+", "+(y+s+2)+")")}}}))},"drawGroups"),$ve=o(async function(t,e,r){for(let n of r){let i=e.append("g"),a=Li("iconSize");if(n.title){let h=i.append("g");await Hn(h,n.title,{useHtmlLabels:!1,width:a*1.5,classes:"architecture-service-label"},me()),h.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),h.attr("transform","translate("+a/2+", "+a+")")}let s=i.append("g");if(n.icon)s.html(`${await wo(n.icon,{height:a,width:a,fallbackPrefix:Zp.prefix})}`);else if(n.iconText){s.html(`${await wo("blank",{height:a,width:a,fallbackPrefix:Zp.prefix})}`);let d=s.append("g").append("foreignObject").attr("width",a).attr("height",a).append("div").attr("class","node-icon-text").attr("style",`height: ${a}px;`).append("div").html(n.iconText),p=parseInt(window.getComputedStyle(d.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;d.attr("style",`-webkit-line-clamp: ${Math.floor((a-2)/p)};`)}else s.append("path").attr("class","node-bkg").attr("id","node-"+n.id).attr("d",`M0 ${a} v${-a} q0,-5 5,-5 h${a} q5,0 5,5 v${a} H0 Z`);i.attr("class","architecture-service");let{width:l,height:u}=i._groups[0][0].getBBox();n.width=l,n.height=u,t.setElementForId(n.id,i)}return 0},"drawServices"),zve=o(function(t,e,r){r.forEach(n=>{let i=e.append("g"),a=Li("iconSize");i.append("g").append("rect").attr("id","node-"+n.id).attr("fill-opacity","0").attr("width",a).attr("height",a),i.attr("class","architecture-junction");let{width:l,height:u}=i._groups[0][0].getBBox();i.width=l,i.height=u,t.setElementForId(n.id,i)})},"drawJunctions")});function Srt(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"service",id:r.id,icon:r.icon,label:r.title,parent:r.in,width:Li("iconSize"),height:Li("iconSize")},classes:"node-service"})})}function Crt(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"junction",id:r.id,parent:r.in,width:Li("iconSize"),height:Li("iconSize")},classes:"node-junction"})})}function Art(t,e){e.nodes().map(r=>{let n=Ff(r);if(n.type==="group")return;n.x=r.position().x,n.y=r.position().y,t.getElementById(n.id).attr("transform","translate("+(n.x||0)+","+(n.y||0)+")")})}function _rt(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"group",id:r.id,icon:r.icon,label:r.title,parent:r.in},classes:"node-group"})})}function Drt(t,e){t.forEach(r=>{let{lhsId:n,rhsId:i,lhsInto:a,lhsGroup:s,rhsInto:l,lhsDir:u,rhsDir:h,rhsGroup:f,title:d}=r,p=x4(r.lhsDir,r.rhsDir)?"segments":"straight",m={id:`${n}-${i}`,label:d,source:n,sourceDir:u,sourceArrow:a,sourceGroup:s,sourceEndpoint:u==="L"?"0 50%":u==="R"?"100% 50%":u==="T"?"50% 0":"50% 100%",target:i,targetDir:h,targetArrow:l,targetGroup:f,targetEndpoint:h==="L"?"0 50%":h==="R"?"100% 50%":h==="T"?"50% 0":"50% 100%"};e.add({group:"edges",data:m,classes:p})})}function Lrt(t,e,r){let n=o((l,u)=>Object.entries(l).reduce((h,[f,d])=>{let p=0,m=Object.entries(d);if(m.length===1)return h[f]=m[0][1],h;for(let g=0;g{let u={},h={};return Object.entries(l).forEach(([f,[d,p]])=>{let m=t.getNode(f)?.in??"default";u[p]??={},u[p][m]??=[],u[p][m].push(f),h[d]??={},h[d][m]??=[],h[d][m].push(f)}),{horiz:Object.values(n(u,"horizontal")).filter(f=>f.length>1),vert:Object.values(n(h,"vertical")).filter(f=>f.length>1)}}),[a,s]=i.reduce(([l,u],{horiz:h,vert:f})=>[[...l,...h],[...u,...f]],[[],[]]);return{horizontal:a,vertical:s}}function Rrt(t){let e=[],r=o(i=>`${i[0]},${i[1]}`,"posToStr"),n=o(i=>i.split(",").map(a=>parseInt(a)),"strToPos");return t.forEach(i=>{let a=Object.fromEntries(Object.entries(i).map(([h,f])=>[r(f),h])),s=[r([0,0])],l={},u={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;s.length>0;){let h=s.shift();if(h){l[h]=1;let f=a[h];if(f){let d=n(h);Object.entries(u).forEach(([p,m])=>{let g=r([d[0]+m[0],d[1]+m[1]]),y=a[g];y&&!l[g]&&(s.push(g),e.push({[lF[p]]:y,[lF[Eve(p)]]:f,gap:1.5*Li("iconSize")}))})}}}}),e}function Nrt(t,e,r,n,i,{spatialMaps:a,groupAlignments:s}){return new Promise(l=>{let u=Ge("body").append("div").attr("id","cy").attr("style","display:none"),h=rl({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight",label:"data(label)","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${Li("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${Li("padding")}px`}}]});u.remove(),_rt(r,h),Srt(t,h),Crt(e,h),Drt(n,h);let f=Lrt(i,a,s),d=Rrt(a),p=h.layout({name:"fcose",quality:"proof",styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(m){let[g,y]=m.connectedNodes(),{parent:v}=Ff(g),{parent:x}=Ff(y);return v===x?1.5*Li("iconSize"):.5*Li("iconSize")},edgeElasticity(m){let[g,y]=m.connectedNodes(),{parent:v}=Ff(g),{parent:x}=Ff(y);return v===x?.45:.001},alignmentConstraint:f,relativePlacementConstraint:d});p.one("layoutstop",()=>{function m(g,y,v,x){let b,w,{x:C,y:T}=g,{x:E,y:A}=y;w=(x-T+(C-v)*(T-A)/(C-E))/Math.sqrt(1+Math.pow((T-A)/(C-E),2)),b=Math.sqrt(Math.pow(x-T,2)+Math.pow(v-C,2)-Math.pow(w,2));let S=Math.sqrt(Math.pow(E-C,2)+Math.pow(A-T,2));b=b/S;let _=(E-C)*(x-T)-(A-T)*(v-C);switch(!0){case _>=0:_=1;break;case _<0:_=-1;break}let I=(E-C)*(v-C)+(A-T)*(x-T);switch(!0){case I>=0:I=1;break;case I<0:I=-1;break}return w=Math.abs(w)*_,b=b*I,{distances:w,weights:b}}o(m,"getSegmentWeights"),h.startBatch();for(let g of Object.values(h.edges()))if(g.data?.()){let{x:y,y:v}=g.source().position(),{x,y:b}=g.target().position();if(y!==x&&v!==b){let w=g.sourceEndpoint(),C=g.targetEndpoint(),{sourceDir:T}=sC(g),[E,A]=Zc(T)?[w.x,C.y]:[C.x,w.y],{weights:S,distances:_}=m(w,C,E,A);g.style("segment-distances",_),g.style("segment-weights",S)}}h.endBatch(),p.run()}),p.run(),h.ready(m=>{Y.info("Ready",m),l(h)})})}var Vve,Mrt,Uve,Hve=N(()=>{"use strict";tu();kB();Vve=Sa(Pve(),1);dr();vt();Vc();Ei();w4();yF();oC();Gve();P4([{name:Zp.prefix,icons:Zp}]);rl.use(Vve.default);o(Srt,"addServices");o(Crt,"addJunctions");o(Art,"positionNodes");o(_rt,"addGroups");o(Drt,"addEdges");o(Lrt,"getAlignments");o(Rrt,"getRelativeConstraints");o(Nrt,"layoutArchitecture");Mrt=o(async(t,e,r,n)=>{let i=n.db,a=i.getServices(),s=i.getJunctions(),l=i.getGroups(),u=i.getEdges(),h=i.getDataStructures(),f=sa(e),d=f.append("g");d.attr("class","architecture-edges");let p=f.append("g");p.attr("class","architecture-services");let m=f.append("g");m.attr("class","architecture-groups"),await $ve(i,p,a),zve(i,p,s);let g=await Nrt(a,s,l,u,i,h);await Bve(d,g),await Fve(m,g),Art(i,g),Ao(void 0,f,Li("padding"),Li("useMaxWidth"))},"draw"),Uve={draw:Mrt}});var Wve={};hr(Wve,{diagram:()=>Irt});var Irt,qve=N(()=>{"use strict";Mve();w4();Ove();Hve();Irt={parser:Nve,db:Qp,renderer:Uve,styles:Ive}});var bnt={};hr(bnt,{default:()=>xnt});tu();PC();Xf();var YX="c4",PCe=o(t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),"detector"),BCe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(qX(),WX));return{id:YX,diagram:t}},"loader"),FCe={id:YX,detector:PCe,loader:BCe},XX=FCe;var Xie="flowchart",xOe=o((t,e)=>e?.flowchart?.defaultRenderer==="dagre-wrapper"||e?.flowchart?.defaultRenderer==="elk"?!1:/^\s*graph/.test(t),"detector"),bOe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(ak(),ik));return{id:Xie,diagram:t}},"loader"),wOe={id:Xie,detector:xOe,loader:bOe},jie=wOe;var Kie="flowchart-v2",TOe=o((t,e)=>e?.flowchart?.defaultRenderer==="dagre-d3"?!1:(e?.flowchart?.defaultRenderer==="elk"&&(e.layout="elk"),/^\s*graph/.test(t)&&e?.flowchart?.defaultRenderer==="dagre-wrapper"?!0:/^\s*flowchart/.test(t)),"detector"),kOe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(ak(),ik));return{id:Kie,diagram:t}},"loader"),EOe={id:Kie,detector:TOe,loader:kOe},Qie=EOe;var sae="er",DOe=o(t=>/^\s*erDiagram/.test(t),"detector"),LOe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(aae(),iae));return{id:sae,diagram:t}},"loader"),ROe={id:sae,detector:DOe,loader:LOe},oae=ROe;var uue="gitGraph",tze=o(t=>/^\s*gitGraph/.test(t),"detector"),rze=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(cue(),lue));return{id:uue,diagram:t}},"loader"),nze={id:uue,detector:tze,loader:rze},hue=nze;var Gue="gantt",Hze=o(t=>/^\s*gantt/.test(t),"detector"),Wze=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(zue(),$ue));return{id:Gue,diagram:t}},"loader"),qze={id:Gue,detector:Hze,loader:Wze},Vue=qze;var Que="info",Zze=o(t=>/^\s*info/.test(t),"detector"),Jze=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Kue(),jue));return{id:Que,diagram:t}},"loader"),Zue={id:Que,detector:Zze,loader:Jze};var lhe="pie",fGe=o(t=>/^\s*pie/.test(t),"detector"),dGe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(ohe(),she));return{id:lhe,diagram:t}},"loader"),che={id:lhe,detector:fGe,loader:dGe};var The="quadrantChart",RGe=o(t=>/^\s*quadrantChart/.test(t),"detector"),NGe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(whe(),bhe));return{id:The,diagram:t}},"loader"),MGe={id:The,detector:RGe,loader:NGe},khe=MGe;var Khe="xychart",jGe=o(t=>/^\s*xychart-beta/.test(t),"detector"),KGe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(jhe(),Xhe));return{id:Khe,diagram:t}},"loader"),QGe={id:Khe,detector:jGe,loader:KGe},Qhe=QGe;var sfe="requirement",tVe=o(t=>/^\s*requirement(Diagram)?/.test(t),"detector"),rVe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(afe(),ife));return{id:sfe,diagram:t}},"loader"),nVe={id:sfe,detector:tVe,loader:rVe},ofe=nVe;var Afe="sequence",zVe=o(t=>/^\s*sequenceDiagram/.test(t),"detector"),GVe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Cfe(),Sfe));return{id:Afe,diagram:t}},"loader"),VVe={id:Afe,detector:zVe,loader:GVe},_fe=VVe;var Ife="class",XVe=o((t,e)=>e?.class?.defaultRenderer==="dagre-wrapper"?!1:/^\s*classDiagram/.test(t),"detector"),jVe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Mfe(),Nfe));return{id:Ife,diagram:t}},"loader"),KVe={id:Ife,detector:XVe,loader:jVe},Ofe=KVe;var Ffe="classDiagram",ZVe=o((t,e)=>/^\s*classDiagram/.test(t)&&e?.class?.defaultRenderer==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(t),"detector"),JVe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Bfe(),Pfe));return{id:Ffe,diagram:t}},"loader"),eUe={id:Ffe,detector:ZVe,loader:JVe},$fe=eUe;var Ede="state",LUe=o((t,e)=>e?.state?.defaultRenderer==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(t),"detector"),RUe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(kde(),Tde));return{id:Ede,diagram:t}},"loader"),NUe={id:Ede,detector:LUe,loader:RUe},Sde=NUe;var _de="stateDiagram",IUe=o((t,e)=>!!(/^\s*stateDiagram-v2/.test(t)||/^\s*stateDiagram/.test(t)&&e?.state?.defaultRenderer==="dagre-wrapper"),"detector"),OUe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Ade(),Cde));return{id:_de,diagram:t}},"loader"),PUe={id:_de,detector:IUe,loader:OUe},Dde=PUe;var Wde="journey",nHe=o(t=>/^\s*journey/.test(t),"detector"),iHe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Hde(),Ude));return{id:Wde,diagram:t}},"loader"),aHe={id:Wde,detector:nHe,loader:iHe},qde=aHe;vt();Vc();Ei();var sHe=o((t,e,r)=>{Y.debug(`rendering svg for syntax error +`);let n=sa(e),i=n.append("g");n.attr("viewBox","0 0 2412 512"),vn(n,100,512,!0),i.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"),i.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"),i.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"),i.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"),i.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"),i.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"),i.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"),i.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${r}`)},"draw"),fP={draw:sHe},Yde=fP;var oHe={db:{},renderer:fP,parser:{parse:o(()=>{},"parse")}},Xde=oHe;var jde="flowchart-elk",lHe=o((t,e={})=>/^\s*flowchart-elk/.test(t)||/^\s*flowchart|graph/.test(t)&&e?.flowchart?.defaultRenderer==="elk"?(e.layout="elk",!0):!1,"detector"),cHe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(ak(),ik));return{id:jde,diagram:t}},"loader"),uHe={id:jde,detector:lHe,loader:cHe},Kde=uHe;var Tpe="timeline",DHe=o(t=>/^\s*timeline/.test(t),"detector"),LHe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(wpe(),bpe));return{id:Tpe,diagram:t}},"loader"),RHe={id:Tpe,detector:DHe,loader:LHe},kpe=RHe;var e1e="mindmap",cJe=o(t=>/^\s*mindmap/.test(t),"detector"),uJe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Jge(),Zge));return{id:e1e,diagram:t}},"loader"),hJe={id:e1e,detector:cJe,loader:uJe},t1e=hJe;var d1e="kanban",AJe=o(t=>/^\s*kanban/.test(t),"detector"),_Je=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(f1e(),h1e));return{id:d1e,diagram:t}},"loader"),DJe={id:d1e,detector:AJe,loader:_Je},p1e=DJe;var j1e="sankey",ZJe=o(t=>/^\s*sankey-beta/.test(t),"detector"),JJe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(X1e(),Y1e));return{id:j1e,diagram:t}},"loader"),eet={id:j1e,detector:ZJe,loader:JJe},K1e=eet;var sye="packet",pet=o(t=>/^\s*packet-beta/.test(t),"detector"),met=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(aye(),iye));return{id:sye,diagram:t}},"loader"),oye={id:sye,detector:pet,loader:met};var vye="radar",Fet=o(t=>/^\s*radar-beta/.test(t),"detector"),$et=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(yye(),gye));return{id:vye,diagram:t}},"loader"),xye={id:vye,detector:Fet,loader:$et};var Tve="block",srt=o(t=>/^\s*block-beta/.test(t),"detector"),ort=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(wve(),bve));return{id:Tve,diagram:t}},"loader"),lrt={id:Tve,detector:srt,loader:ort},kve=lrt;var Yve="architecture",Ort=o(t=>/^\s*architecture/.test(t),"detector"),Prt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(qve(),Wve));return{id:Yve,diagram:t}},"loader"),Brt={id:Yve,detector:Ort,loader:Prt},Xve=Brt;Xf();zt();var jve=!1,py=o(()=>{jve||(jve=!0,ad("error",Xde,t=>t.toLowerCase().trim()==="error"),ad("---",{db:{clear:o(()=>{},"clear")},styles:{},renderer:{draw:o(()=>{},"draw")},parser:{parse:o(()=>{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")},"parse")},init:o(()=>null,"init")},t=>t.toLowerCase().trimStart().startsWith("---")),z4(XX,p1e,$fe,Ofe,oae,Vue,Zue,che,ofe,_fe,Kde,Qie,jie,t1e,kpe,hue,Dde,Sde,qde,khe,K1e,oye,Qhe,kve,Xve,xye))},"addDiagrams");vt();Xf();zt();var Kve=o(async()=>{Y.debug("Loading registered diagrams");let e=(await Promise.allSettled(Object.entries(Yf).map(async([r,{detector:n,loader:i}])=>{if(i)try{jy(r)}catch{try{let{diagram:a,id:s}=await i();ad(s,a,n)}catch(a){throw Y.error(`Failed to load external diagram with key ${r}. Removing from detectors.`),delete Yf[r],a}}}))).filter(r=>r.status==="rejected");if(e.length>0){Y.error(`Failed to load ${e.length} external diagrams`);for(let r of e)Y.error(r);throw new Error(`Failed to load ${e.length} external diagrams`)}},"loadRegisteredDiagrams");vt();dr();var lC="comm",cC="rule",uC="decl";var Qve="@import";var Zve="@namespace",Jve="@keyframes";var e2e="@layer";var vF=Math.abs,S4=String.fromCharCode;function hC(t){return t.trim()}o(hC,"trim");function C4(t,e,r){return t.replace(e,r)}o(C4,"replace");function t2e(t,e,r){return t.indexOf(e,r)}o(t2e,"indexof");function $f(t,e){return t.charCodeAt(e)|0}o($f,"charat");function zf(t,e,r){return t.slice(e,r)}o(zf,"substr");function vo(t){return t.length}o(vo,"strlen");function r2e(t){return t.length}o(r2e,"sizeof");function my(t,e){return e.push(t),t}o(my,"append");var fC=1,gy=1,n2e=0,il=0,Ri=0,vy="";function dC(t,e,r,n,i,a,s,l){return{value:t,root:e,parent:r,type:n,props:i,children:a,line:fC,column:gy,length:s,return:"",siblings:l}}o(dC,"node");function i2e(){return Ri}o(i2e,"char");function a2e(){return Ri=il>0?$f(vy,--il):0,gy--,Ri===10&&(gy=1,fC--),Ri}o(a2e,"prev");function al(){return Ri=il2||yy(Ri)>3?"":" "}o(l2e,"whitespace");function c2e(t,e){for(;--e&&al()&&!(Ri<48||Ri>102||Ri>57&&Ri<65||Ri>70&&Ri<97););return pC(t,A4()+(e<6&&rh()==32&&al()==32))}o(c2e,"escaping");function xF(t){for(;al();)switch(Ri){case t:return il;case 34:case 39:t!==34&&t!==39&&xF(Ri);break;case 40:t===41&&xF(t);break;case 92:al();break}return il}o(xF,"delimiter");function u2e(t,e){for(;al()&&t+Ri!==57;)if(t+Ri===84&&rh()===47)break;return"/*"+pC(e,il-1)+"*"+S4(t===47?t:al())}o(u2e,"commenter");function h2e(t){for(;!yy(rh());)al();return pC(t,il)}o(h2e,"identifier");function p2e(t){return o2e(gC("",null,null,null,[""],t=s2e(t),0,[0],t))}o(p2e,"compile");function gC(t,e,r,n,i,a,s,l,u){for(var h=0,f=0,d=s,p=0,m=0,g=0,y=1,v=1,x=1,b=0,w="",C=i,T=a,E=n,A=w;v;)switch(g=b,b=al()){case 40:if(g!=108&&$f(A,d-1)==58){t2e(A+=C4(mC(b),"&","&\f"),"&\f",vF(h?l[h-1]:0))!=-1&&(x=-1);break}case 34:case 39:case 91:A+=mC(b);break;case 9:case 10:case 13:case 32:A+=l2e(g);break;case 92:A+=c2e(A4()-1,7);continue;case 47:switch(rh()){case 42:case 47:my(Frt(u2e(al(),A4()),e,r,u),u),(yy(g||1)==5||yy(rh()||1)==5)&&vo(A)&&zf(A,-1,void 0)!==" "&&(A+=" ");break;default:A+="/"}break;case 123*y:l[h++]=vo(A)*x;case 125*y:case 59:case 0:switch(b){case 0:case 125:v=0;case 59+f:x==-1&&(A=C4(A,/\f/g,"")),m>0&&(vo(A)-d||y===0&&g===47)&&my(m>32?d2e(A+";",n,r,d-1,u):d2e(C4(A," ","")+";",n,r,d-2,u),u);break;case 59:A+=";";default:if(my(E=f2e(A,e,r,h,f,i,l,w,C=[],T=[],d,a),a),b===123)if(f===0)gC(A,e,E,E,C,a,d,l,T);else{switch(p){case 99:if($f(A,3)===110)break;case 108:if($f(A,2)===97)break;default:f=0;case 100:case 109:case 115:}f?gC(t,E,E,n&&my(f2e(t,E,E,0,0,i,l,w,i,C=[],d,T),T),i,T,d,l,n?C:T):gC(A,E,E,E,[""],T,0,l,T)}}h=f=m=0,y=x=1,w=A="",d=s;break;case 58:d=1+vo(A),m=g;default:if(y<1){if(b==123)--y;else if(b==125&&y++==0&&a2e()==125)continue}switch(A+=S4(b),b*y){case 38:x=f>0?1:(A+="\f",-1);break;case 44:l[h++]=(vo(A)-1)*x,x=1;break;case 64:rh()===45&&(A+=mC(al())),p=rh(),f=d=vo(w=A+=h2e(A4())),b++;break;case 45:g===45&&vo(A)==2&&(y=0)}}return a}o(gC,"parse");function f2e(t,e,r,n,i,a,s,l,u,h,f,d){for(var p=i-1,m=i===0?a:[""],g=r2e(m),y=0,v=0,x=0;y0?m[b]+" "+w:C4(w,/&\f/g,m[b])))&&(u[x++]=C);return dC(t,e,r,i===0?cC:l,u,h,f,d)}o(f2e,"ruleset");function Frt(t,e,r,n){return dC(t,e,r,lC,S4(i2e()),zf(t,2,-2),0,n)}o(Frt,"comment");function d2e(t,e,r,n,i){return dC(t,e,r,uC,zf(t,0,n),zf(t,n+1,-1),n,i)}o(d2e,"declaration");function yC(t,e){for(var r="",n=0;n{v2e.forEach(t=>{t()}),v2e=[]},"attachFunctions");vt();var b2e=o(t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");$4();Ew();function w2e(t){let e=t.match(F4);if(!e)return{text:t,metadata:{}};let r=cm(e[1],{schema:lm})??{};r=typeof r=="object"&&!Array.isArray(r)?r:{};let n={};return r.displayMode&&(n.displayMode=r.displayMode.toString()),r.title&&(n.title=r.title.toString()),r.config&&(n.config=r.config),{text:t.slice(e[0].length),metadata:n}}o(w2e,"extractFrontMatter");ir();var zrt=o(t=>t.replace(/\r\n?/g,` +`).replace(/<(\w+)([^>]*)>/g,(e,r,n)=>"<"+r+n.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),Grt=o(t=>{let{text:e,metadata:r}=w2e(t),{displayMode:n,title:i,config:a={}}=r;return n&&(a.gantt||(a.gantt={}),a.gantt.displayMode=n),{title:i,config:a,text:e}},"processFrontmatter"),Vrt=o(t=>{let e=Gt.detectInit(t)??{},r=Gt.detectDirective(t,"wrap");return Array.isArray(r)?e.wrap=r.some(({type:n})=>n==="wrap"):r?.type==="wrap"&&(e.wrap=!0),{text:IX(t),directive:e}},"processDirectives");function bF(t){let e=zrt(t),r=Grt(e),n=Vrt(r.text),i=Fi(r.config,n.directive);return t=b2e(n.text),{code:t,title:r.title,config:i}}o(bF,"preprocessDiagram");tA();q4();ir();function T2e(t){let e=new TextEncoder().encode(t),r=Array.from(e,n=>String.fromCodePoint(n)).join("");return btoa(r)}o(T2e,"toBase64");var Urt=5e4,Hrt="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",Wrt="sandbox",qrt="loose",Yrt="http://www.w3.org/2000/svg",Xrt="http://www.w3.org/1999/xlink",jrt="http://www.w3.org/1999/xhtml",Krt="100%",Qrt="100%",Zrt="border:0;margin:0;",Jrt="margin:0",ent="allow-top-navigation-by-user-activation allow-popups",tnt='The "iframe" tag is not supported by your browser.',rnt=["foreignobject"],nnt=["dominant-baseline"];function C2e(t){let e=bF(t);return Ly(),W$(e.config??{}),e}o(C2e,"processAndSetConfigs");async function int(t,e){py();try{let{code:r,config:n}=C2e(t);return{diagramType:(await A2e(r)).type,config:n}}catch(r){if(e?.suppressErrors)return!1;throw r}}o(int,"parse");var k2e=o((t,e,r=[])=>` +.${t} ${e} { ${r.join(" !important; ")} !important; }`,"cssImportantStyles"),ant=o((t,e=new Map)=>{let r="";if(t.themeCSS!==void 0&&(r+=` +${t.themeCSS}`),t.fontFamily!==void 0&&(r+=` +:root { --mermaid-font-family: ${t.fontFamily}}`),t.altFontFamily!==void 0&&(r+=` +:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),e instanceof Map){let s=t.htmlLabels??t.flowchart?.htmlLabels?["> *","span"]:["rect","polygon","ellipse","circle","path"];e.forEach(l=>{ur(l.styles)||s.forEach(u=>{r+=k2e(l.id,u,l.styles)}),ur(l.textStyles)||(r+=k2e(l.id,"tspan",(l?.textStyles||[]).map(u=>u.replace("color","fill"))))})}return r},"createCssStyles"),snt=o((t,e,r,n)=>{let i=ant(t,r),a=zG(e,i,t.themeVariables);return yC(p2e(`${n}{${a}}`),m2e)},"createUserStyles"),ont=o((t="",e,r)=>{let n=t;return!r&&!e&&(n=n.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),n=na(n),n=n.replace(/
    /g,"
    "),n},"cleanUpSvgCode"),lnt=o((t="",e)=>{let r=e?.viewBox?.baseVal?.height?e.viewBox.baseVal.height+"px":Qrt,n=T2e(`${t}`);return``},"putIntoIFrame"),E2e=o((t,e,r,n,i)=>{let a=t.append("div");a.attr("id",r),n&&a.attr("style",n);let s=a.append("svg").attr("id",e).attr("width","100%").attr("xmlns",Yrt);return i&&s.attr("xmlns:xlink",i),s.append("g"),t},"appendDivSvgG");function S2e(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}o(S2e,"sandboxedIframe");var cnt=o((t,e,r,n)=>{t.getElementById(e)?.remove(),t.getElementById(r)?.remove(),t.getElementById(n)?.remove()},"removeExistingElements"),unt=o(async function(t,e,r){py();let n=C2e(e);e=n.code;let i=cr();Y.debug(i),e.length>(i?.maxTextSize??Urt)&&(e=Hrt);let a="#"+t,s="i"+t,l="#"+s,u="d"+t,h="#"+u,f=o(()=>{let L=Ge(p?l:h).node();L&&"remove"in L&&L.remove()},"removeTempElements"),d=Ge("body"),p=i.securityLevel===Wrt,m=i.securityLevel===qrt,g=i.fontFamily;if(r!==void 0){if(r&&(r.innerHTML=""),p){let k=S2e(Ge(r),s);d=Ge(k.nodes()[0].contentDocument.body),d.node().style.margin=0}else d=Ge(r);E2e(d,t,u,`font-family: ${g}`,Xrt)}else{if(cnt(document,t,u,s),p){let k=S2e(Ge("body"),s);d=Ge(k.nodes()[0].contentDocument.body),d.node().style.margin=0}else d=Ge("body");E2e(d,t,u)}let y,v;try{y=await xy.fromText(e,{title:n.title})}catch(k){if(i.suppressErrorRendering)throw f(),k;y=await xy.fromText("error"),v=k}let x=d.select(h).node(),b=y.type,w=x.firstChild,C=w.firstChild,T=y.renderer.getClasses?.(e,y),E=snt(i,b,T,a),A=document.createElement("style");A.innerHTML=E,w.insertBefore(A,C);try{await y.renderer.draw(e,t,vb.version,y)}catch(k){throw i.suppressErrorRendering?f():Yde.draw(e,t,vb.version),k}let S=d.select(`${h} svg`),_=y.db.getAccTitle?.(),I=y.db.getAccDescription?.();fnt(b,S,_,I),d.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",jrt);let D=d.select(h).node().innerHTML;if(Y.debug("config.arrowMarkerAbsolute",i.arrowMarkerAbsolute),D=ont(D,p,fr(i.arrowMarkerAbsolute)),p){let k=d.select(h+" svg").node();D=lnt(D,k)}else m||(D=ch.sanitize(D,{ADD_TAGS:rnt,ADD_ATTR:nnt,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(x2e(),v)throw v;return f(),{diagramType:b,svg:D,bindFunctions:y.db.bindFunctions}},"render");function hnt(t={}){let e=Gn({},t);e?.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables||(e.themeVariables={}),e.themeVariables.fontFamily=e.fontFamily),V$(e),e?.theme&&e.theme in To?e.themeVariables=To[e.theme].getThemeVariables(e.themeVariables):e&&(e.themeVariables=To.default.getThemeVariables(e.themeVariables));let r=typeof e=="object"?t7(e):r7();wy(r.logLevel),py()}o(hnt,"initialize");var A2e=o((t,e={})=>{let{code:r}=bF(t);return xy.fromText(r,e)},"getDiagramFromText");function fnt(t,e,r,n){g2e(e,t),y2e(e,r,n,e.attr("id"))}o(fnt,"addA11yInfo");var Gf=Object.freeze({render:unt,parse:int,getDiagramFromText:A2e,initialize:hnt,getConfig:cr,setConfig:X4,getSiteConfig:r7,updateSiteConfig:U$,reset:o(()=>{Ly()},"reset"),globalReset:o(()=>{Ly(lh)},"globalReset"),defaultConfig:lh});wy(cr().logLevel);Ly(cr());Yd();ir();var dnt=o((t,e,r)=>{Y.warn(t),Z9(t)?(r&&r(t.str,t.hash),e.push({...t,message:t.str,error:t})):(r&&r(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},"handleError"),_2e=o(async function(t={querySelector:".mermaid"}){try{await pnt(t)}catch(e){if(Z9(e)&&Y.error(e.str),nh.parseError&&nh.parseError(e),!t.suppressErrors)throw Y.error("Use the suppressErrors option to suppress these errors"),e}},"run"),pnt=o(async function({postRenderCallback:t,querySelector:e,nodes:r}={querySelector:".mermaid"}){let n=Gf.getConfig();Y.debug(`${t?"":"No "}Callback function found`);let i;if(r)i=r;else if(e)i=document.querySelectorAll(e);else throw new Error("Nodes and querySelector are both undefined");Y.debug(`Found ${i.length} diagrams`),n?.startOnLoad!==void 0&&(Y.debug("Start On Load: "+n?.startOnLoad),Gf.updateSiteConfig({startOnLoad:n?.startOnLoad}));let a=new Gt.InitIDGenerator(n.deterministicIds,n.deterministicIDSeed),s,l=[];for(let u of Array.from(i)){Y.info("Rendering diagram: "+u.id);if(u.getAttribute("data-processed"))continue;u.setAttribute("data-processed","true");let h=`mermaid-${a.next()}`;s=u.innerHTML,s=B4(Gt.entityDecode(s)).trim().replace(//gi,"
    ");let f=Gt.detectInit(s);f&&Y.debug("Detected early reinit: ",f);try{let{svg:d,bindFunctions:p}=await N2e(h,s,u);u.innerHTML=d,t&&await t(h),p&&p(u)}catch(d){dnt(d,l,nh.parseError)}}if(l.length>0)throw l[0]},"runThrowsErrors"),D2e=o(function(t){Gf.initialize(t)},"initialize"),mnt=o(async function(t,e,r){Y.warn("mermaid.init is deprecated. Please use run instead."),t&&D2e(t);let n={postRenderCallback:r,querySelector:".mermaid"};typeof e=="string"?n.querySelector=e:e&&(e instanceof HTMLElement?n.nodes=[e]:n.nodes=e),await _2e(n)},"init"),gnt=o(async(t,{lazyLoad:e=!0}={})=>{py(),z4(...t),e===!1&&await Kve()},"registerExternalDiagrams"),L2e=o(function(){if(nh.startOnLoad){let{startOnLoad:t}=Gf.getConfig();t&&nh.run().catch(e=>Y.error("Mermaid failed to initialize",e))}},"contentLoaded");if(typeof document<"u"){window.addEventListener("load",L2e,!1)}var ynt=o(function(t){nh.parseError=t},"setParseErrorHandler"),vC=[],wF=!1,R2e=o(async()=>{if(!wF){for(wF=!0;vC.length>0;){let t=vC.shift();if(t)try{await t()}catch(e){Y.error("Error executing queue",e)}}wF=!1}},"executeQueue"),vnt=o(async(t,e)=>new Promise((r,n)=>{let i=o(()=>new Promise((a,s)=>{Gf.parse(t,e).then(l=>{a(l),r(l)},l=>{Y.error("Error parsing",l),nh.parseError?.(l),s(l),n(l)})}),"performCall");vC.push(i),R2e().catch(n)}),"parse"),N2e=o((t,e,r)=>new Promise((n,i)=>{let a=o(()=>new Promise((s,l)=>{Gf.render(t,e,r).then(u=>{s(u),n(u)},u=>{Y.error("Error parsing",u),nh.parseError?.(u),l(u),i(u)})}),"performCall");vC.push(a),R2e().catch(i)}),"render"),nh={startOnLoad:!0,mermaidAPI:Gf,parse:vnt,render:N2e,init:mnt,run:_2e,registerExternalDiagrams:gnt,registerLayoutLoaders:vR,initialize:D2e,parseError:void 0,contentLoaded:L2e,setParseErrorHandler:ynt,detectType:a0,registerIconPacks:P4},xnt=nh;return V2e(bnt);})(); +/*! Check if previously processed */ +/*! + * Wait for document loaded before starting the execution + */ +/*! Bundled license information: + +dompurify/dist/purify.es.mjs: + (*! @license DOMPurify 3.2.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.4/LICENSE *) + +js-yaml/dist/js-yaml.mjs: + (*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT *) + +lodash-es/lodash.js: + (** + * @license + * Lodash (Custom Build) + * Build: `lodash modularize exports="es" -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + *) + +cytoscape/dist/cytoscape.esm.mjs: + (*! + Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable + Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) + Licensed under The MIT License (http://opensource.org/licenses/MIT) + *) + (*! + Event object based on jQuery events, MIT license + + https://jquery.org/license/ + https://tldrlegal.com/license/mit-license + https://github.com/jquery/jquery/blob/master/src/event.js + *) + (*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License *) + (*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License *) +*/ +globalThis.mermaid = globalThis.__esbuild_esm_mermaid.default; \ No newline at end of file From 9e80dfc4cb4f04604f7b8fd19093c67e610b888e Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 4 Jun 2025 13:43:12 -0400 Subject: [PATCH 062/120] doc: add, edit common inputs page --- srcDoc/{some_inputs.md => common_inputs.md} | 83 ++++++++++++++++++--- 1 file changed, 74 insertions(+), 9 deletions(-) rename srcDoc/{some_inputs.md => common_inputs.md} (77%) diff --git a/srcDoc/some_inputs.md b/srcDoc/common_inputs.md similarity index 77% rename from srcDoc/some_inputs.md rename to srcDoc/common_inputs.md index 07e52674..96cada37 100644 --- a/srcDoc/some_inputs.md +++ b/srcDoc/common_inputs.md @@ -1,7 +1,12 @@ -# Input Files {#indices.sec} +# Common Inputs {#indices.sec} -All of these auxiliary input files should be kept in the same directory as the -GITM executable and the `UAM.in` file. +This only touches on the most frequently changed input options. For a full +reference of all available inputs, please see [All Inputs](inputs.md) + +!!!note + All of the auxiliary input (data) files can be kept in the same directory + as the GITM executable and the `UAM.in` file. Otherwise, the path should be + specified relative to the GITM executable. ## IMF and Solar Wind {#imf.sec} @@ -55,9 +60,10 @@ Here is an example file: 2000 3 20 3 3 0 0 0.0 0.0 -2.0 -400.0 0.0 0.0 5.0 50000.0 2000 3 20 3 4 0 0 0.0 0.0 -2.0 -400.0 0.0 0.0 5.0 50000.0 -To actually read in this file, in `UAM.in`, use the input option -MHD_INDICES described in -[the Indices section](#indices.sec). +This file is provided to GITM with: + + #MHD_INDICES + imf_file_name.dat ## Hemispheric Power {#hp.sec} @@ -80,11 +86,17 @@ HPI = 2.09 \log(HP)^{1.0475} The National Oceanic and Atmospheric Administration (NOAA) provides these hemispheric power files for public use online at -`http://www.swpc.noaa.gov/ftpmenu/lists/hpi.html`. There are two types +. There are two types of formats used for hemispheric power files (due to a change in the NOAA output format in 2007). Both file formats can be used by GITM, and are shown in the examples below. +!!! attention + GITM can read a NOAA HPI file, however the recommended way to provide + hemispheric power is to have GITM derive HPI from the AE-index. + + See [SME Indices](#sme-indices) for more information. + Example file 1 for data prior to 2007: # Prepared by the U.S. Dept. of Commerce, NOAA, Space Environment Center. @@ -156,8 +168,61 @@ Example file 2 for data in and after 2007: . . -The file type is not specified in `UAM.in`, instead different subroutines within -GITM will use it as needed. +The file type is automatically inferred. To provide an HPI file, use: + + #NOAAHPI_INDICES + hemi-power-file.txt + +## SME Indices + +*[SME]: SuperMag auroral Electrojet + +To use models such as FTA[^1] to drive the aurora, GUITM must be provided +Auroral Electrojet (AE) indices. Normally this is from SuperMag, but any source +may be used. + +These files are normally of the format: + + File created by python code using SuperMAGGetIndices + + ============================================================ + + 2002 12 21 00 00 00 616.74 -354.47 262.26 + 2002 12 21 00 01 00 623.75 -354.72 269.03 + 2002 12 21 00 02 00 617.18 -349.28 267.90 + 2002 12 21 00 03 00 633.56 -350.01 283.55 + 2002 12 21 00 04 00 664.55 -357.88 306.68 + +A python routine to download these files over a given date range can be found +in ____. + + +The correspoinding section in `UAM.in` is read as: + + #SME_INDICES + ae_file-name.dat ae file name + none onset file + T use AE for HP + +The lines following the AE file are for the AL-onset file. This can be set to +`none` if you do not have one. The next line tells GITM whether to derive HP +from AE or to use a NOAA HPI file (if one is required). Even if AE is not +required, it is recommended to provide one to derive HP as it is often more +representative of geomagnetic conditions than the NOAA HPI. + +The formula to calculate hemispheric power from AE is taken from (Wu et al., +2021)[^wuetal] and is given as: + +```math +\begin{align} +HemisphericPower = 0.102 * AE + 8.953 +\end{align} +``` + +[^wuetal]: Wu, C., Ridley, A. J., DeJong, A. D., & Paxton, L. J. (2021). +FTA: A Feature Tracking Empirical Model Of Auroral Precipitation. +Space Weather, 19, e2020SW002629. + ## Solar Irradiance {#solar_irradiance.sec} From 3d138805810342d036d34fdeb405db2481b03adc Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 4 Jun 2025 13:52:12 -0400 Subject: [PATCH 063/120] add references to sections to md refpage --- srcDoc/markdown_ref.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/srcDoc/markdown_ref.md b/srcDoc/markdown_ref.md index cbf6a342..e074391c 100644 --- a/srcDoc/markdown_ref.md +++ b/srcDoc/markdown_ref.md @@ -138,6 +138,17 @@ label, as long as it is unique, `[^aHJpxms]`, for example)[^notbottom]. Footnotes are great for citations! +### References {gohere} + +We can add references to any header level. Links are automatically created, but +we can make out own by adding `{#refname}` to the header. If we do not add +anything, the name for `## a subheader section` would be `#a-subheader-section.` + +Then later we can point to it like any other hyperlink. For example, +`[this link will go to the above subsection](#a-subheader-section)`. +Or, a real one: +[this link points to the More Complex Syntax](#more-complex-syntax) sub-header. + ## Admonitions Admonitions are these fancy boxes: From 94fcbb7b0cac49abb4ca37302ed0a890e1691bf2 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 4 Jun 2025 14:01:06 -0400 Subject: [PATCH 064/120] update common_inputs.md and all_inputs.md --- srcDoc/{inputs.md => all_inputs.md} | 2 +- srcDoc/common_inputs.md | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) rename srcDoc/{inputs.md => all_inputs.md} (99%) diff --git a/srcDoc/inputs.md b/srcDoc/all_inputs.md similarity index 99% rename from srcDoc/inputs.md rename to srcDoc/all_inputs.md index 13bd485e..cd73dcda 100644 --- a/srcDoc/inputs.md +++ b/srcDoc/all_inputs.md @@ -1,4 +1,4 @@ -# Inputs +# All Inputs This sets the starting time of the simulation. Even when you restart, the starttime should be to the real start time, not the restart time. diff --git a/srcDoc/common_inputs.md b/srcDoc/common_inputs.md index 96cada37..b1185395 100644 --- a/srcDoc/common_inputs.md +++ b/srcDoc/common_inputs.md @@ -1,7 +1,7 @@ # Common Inputs {#indices.sec} This only touches on the most frequently changed input options. For a full -reference of all available inputs, please see [All Inputs](inputs.md) +reference of all available inputs, please see [All Inputs](all_inputs.md) !!!note All of the auxiliary input (data) files can be kept in the same directory @@ -16,9 +16,7 @@ field (IMF). It allows GITM to dynamically control these quantities. You can create either realistic IMF files or hypothetical ones. A script is provided to automatically download these files, and can be called -using the `download_imf.py` python file in ____. - - +using the `srcPython/omni_download_write_swmf.py` python file. Here is an example file: @@ -194,8 +192,8 @@ These files are normally of the format: 2002 12 21 00 04 00 664.55 -357.88 306.68 A python routine to download these files over a given date range can be found -in ____. - +in `srcPython/supermag_download_ae.py`. + The correspoinding section in `UAM.in` is read as: @@ -259,21 +257,23 @@ below. . GITM knows to use the provided solar irradiance file through the EUV_DATA input -option specified in the `UAM.in` file. More information about this input option -can be found in section [\[indices.sec\]](#indices.sec){reference-type="ref" -reference="indices.sec"}. ~~For more information on specifying to solar -irradiance, please contact Professors Ridley or Pawlowski.~~ +option specified in the `UAM.in` file: + + #EUV_DATA + T + UA/DataIn/FISM/fismflux_daily_[year].dat + +These files are included by default, however will not be read unless this option +is added to the `UAM.in` file. ## Satellites {#sat_aux.sec} GITM can provide output data at a list of times and locations using the -SATELLITE input option, described in more detain in -section [\[def_out.sec\]](#def_out.sec){reference-type="ref" -reference="def_out.sec"}. Although this is designed to output data along +SATELLITE input option. Although this is designed to output data along a satellite orbit, any list of locations may be used. There is currently no routine to create a satellite input file, but the format is simple and may be easily constructed from a satellite ASCII data file using -awk. Here is a sample satellite input file: +awk or Python. Here is a sample satellite input file: year mm dd hh mm ss msec long lat alt #START From 4fe9299b1d0df18f267cc19a5a8753ea658811df Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 4 Jun 2025 16:22:55 -0400 Subject: [PATCH 065/120] BUG: inputs_to_tex should return 0 when successful --- src/inputs_to_tex.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/inputs_to_tex.pl b/src/inputs_to_tex.pl index 72c24f42..a6f70e4a 100755 --- a/src/inputs_to_tex.pl +++ b/src/inputs_to_tex.pl @@ -46,4 +46,4 @@ close(INFILE); close(OUTFILE); -exit(1); +exit(0); From 7840cf38b9274d4edaf3072b02a237d82d91dbbd Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 4 Jun 2025 16:31:44 -0400 Subject: [PATCH 066/120] DOC: Create page with every input, and a python script to wrap src/inputs_to_tex.pl --- srcDoc/{all_inputs.md => set_inputs.md} | 175 ++++++++++++++++++++++-- srcDoc/set_inputs.py | 75 ++++++++++ 2 files changed, 239 insertions(+), 11 deletions(-) rename srcDoc/{all_inputs.md => set_inputs.md} (92%) create mode 100644 srcDoc/set_inputs.py diff --git a/srcDoc/all_inputs.md b/srcDoc/set_inputs.md similarity index 92% rename from srcDoc/all_inputs.md rename to srcDoc/set_inputs.md index cd73dcda..2af6899f 100644 --- a/srcDoc/all_inputs.md +++ b/srcDoc/set_inputs.md @@ -1,5 +1,9 @@ # All Inputs + + +## STARTTIME + This sets the starting time of the simulation. Even when you restart, the starttime should be to the real start time, not the restart time. @@ -11,6 +15,8 @@ the starttime should be to the real start time, not the restart time. iMinute (integer) iSecond (integer) +## ENDTIME + This sets the ending time of the simulation. #ENDTIME @@ -21,18 +27,24 @@ This sets the ending time of the simulation. iMinute (integer) iSecond (integer) +## PAUSETIME + This will set a time for the code to just pause. Really, this should never be used. #PAUSETIME iYear iMonth iDay iHour iMinute iSecond +## ISTEP + This is typically only specified in a restart header. If you specify it in a start UAM.in it will start the counter to whatever you specify. #ISTEP iStep (integer) +## CPUTIMEMAX + This sets the maximum CPU time that the code should run before it starts to write a restart file and end the simulation. It is very useful on systems that have a queueing system and has limited time runs. @@ -42,6 +54,8 @@ since it needs some time to write the restart files. #CPUTIMEMAX CPUTimeMax (real) +## STATISTICALMODELSONLY + This command will skip all pretty much all of the physics of GITM, and will reinitialize the model with the MSIS and IRI values at the interval set in the second variable. If you want to compare a run to MSIS and @@ -54,6 +68,8 @@ IRI. UseStatisticalModelsOnly (logical) DtStatisticalModels (real) +## TSIMULATION + This is typically only specified in a restart header. It sets the offset from the starttime to the currenttime. Should really only be used with caution. @@ -61,6 +77,8 @@ caution. #TSIMULATION tsimulation (real) +## F107 + Sets the F10.7 and 81 day average F10.7. This is used to set the initial altitude grid, and drive the lower boundary conditions. @@ -68,6 +86,8 @@ altitude grid, and drive the lower boundary conditions. f107 (real) f107a (real - 81 day average of f107) +## INITIAL + This specifies the initial conditions and the lower boundary conditions. For Earth, we typically just use MSIS and IRI for initial conditions. For other planets, the vertical BCs can be set here. @@ -81,6 +101,8 @@ For other planets, the vertical BCs can be set here. TempHeight (real, Height of the middle of temp gradient) TempWidth (real, Width of the temperature gradient) +## TIDES + This says how to use tides. The first one is using MSIS with no tides. The second is using MSIS with full up tides. The third is using GSWM tides, while the forth is for experimentation with using WACCM tides. @@ -92,6 +114,8 @@ tides, while the forth is for experimentation with using WACCM tides. UseWACCMTides (logical) UseHmeTides (logical) +## MSISTIDES + This says how to use msis tides. The first one is using diurnal tide The first one is using semi-diurnal tide The first one is using terdiurnal tide @@ -101,6 +125,8 @@ tide UseMSISSemidiurnal (logical) UseMSISTerdiurnal (logical) +## MSISOBC + UseOBCExperiment - use MSIS \[O\] BC shifted by 6 months Only applicable for MSIS00! MsisOblateFactor - alt = alt \* (1.0-f/2 + f\*cos(lat)) - seems like -0.1 works well @@ -109,11 +135,15 @@ seems like -0.1 works well UseOBCExperiment (logical) MsisOblateFactor (real) +## MSISOBC + This toggles between using MSIS00 (false) and MSIS-2.1 (true) #MSISOBC UseMsis21 (logical) +## DUST + This says whether you want seconds in output file name. F means no seconds in output file name. @@ -121,20 +151,28 @@ seconds in output file name. cDustFile cConrathFile +## OVERWRITEIONOSPHERE + #OVERWRITEIONOSPHERE DoOverwriteIonosphere DoOverwriteWithIRI DoOverwriteWithSami SamiInFile +## GITMBCS + #GITMBCS UseGitmBCs GitmBCsDir +## DUST + #DUST TauTot Conrnu +## GSWMCOMP + If you selected to use GSWM tides above, you can specify which components to use. @@ -144,38 +182,52 @@ components to use. GSWMsemidiurnal(1) (logical) GSWMsemidiurnal(2) (logical) +## USEPERTURBATION + #USEPERTURBATION UsePerturbation (logical) +## USEBCPERTURBATION + #USEBCPERTURBATION UseBcPerturbation (logical) If UseBcPerturbation = .true. then: iTypeBcPerturb (int) perturbation characteristics ... +## DAMPING + This is probably for damping vertical wind oscillations that can occur in the lower atmosphere. #DAMPING UseDamping (logical) +## GRAVITYWAVE + I dont know what this is for\... #GRAVITYWAVE UseGravityWave (logical) +## HPI + This sets the hemispheric power of the aurora. Typical it ranges from 1-1000, although 20 is a nominal, quiet time value. #HPI HemisphericPower (real) +## KP + I dont think that GITM actually uses this unless the Foster electric field model is used. #KP kp (real) +## CFL + The CFL condition sets how close to the maximum time step that GITM will take. 1.0 is the maximum value. A value of about 0.75 is typical. If instabilities form, a lower value is probably needed. @@ -183,12 +235,16 @@ instabilities form, a lower value is probably needed. #CFL cfl (real) +## FIXEDDT + If you would like to force GITM to take a fixed dt you can use this. It will try to take that fixed dt, unless the CFL condition is violated. #FIXEDDT FixedDt (real) +## SOLARWIND + This sets the driving conditions for the high-latitude electric field models. This is static for the whole run, though. It is better to use the MHD_INDICES command to have dynamic driving conditions. @@ -199,12 +255,16 @@ the MHD_INDICES command to have dynamic driving conditions. bz (real) vx (real) +## MHD_INDICES + Use this for dynamic IMF and solar wind conditions. The exact format of the file is discussed further in the manual. #MHD_INDICES filename (string) +## AURORAMODS + This is for modifying the aurora a bit. The NormalizeAuroraToHP variable calculates the modeled hemispheric power and then normalizes it the hemispheric power read in. AveEFactor - changes the aveE of the aurora @@ -217,6 +277,8 @@ AuroraKappa - kappa to use in the distribution IsKappaAurora (logical) AuroraKappa (real) +## NEWELLAURORA + This is for using Pat Newells aurora (Ovation). #NEWELLAURORA @@ -227,6 +289,8 @@ This is for using Pat Newells aurora (Ovation). UseNewellRemoveSpikes (logical) UseNewellAverage (logical) +## OVATIONSME + This is for using Betsy Michells aurora (OvationSME). #OVATIONSME @@ -235,21 +299,29 @@ This is for using Betsy Michells aurora (OvationSME). UseOvationSMEWave (logical) UseOvationSMEIon (logical) +## AEMODEL + This is for using Dongjies aurora. #AEMODEL UseAeModel (logical) +## FTAMODEL + This is for using the FTA Model of the aurora. #FTAMODEL UseFtaModel (logical) +## FANGENERGY + This is for using Dongjies aurora. #FANGENERGY UseFangEnergyDeposition (logical) +## USECUSP + This is for specifying a cusp. #USECUSP @@ -257,10 +329,14 @@ This is for specifying a cusp. CuspAveE (real) CuspEFlux (real) +## AMIEFILES + #AMIEFILES cAMIEFileNorth (string) cAMIEFileSouth (string) +## USEREGIONALAMIE + This is to set up a local region with specified potential from AMIE files. Use Weimer potential elsewhere. AMIEBoundaryWidth is padded outside of the region with the geographic lon and lat boundaries set @@ -277,6 +353,8 @@ below. AMIELatEnd (real) AMIEBoundaryWidth (real) +## LIMITER + The limiter is quite important. It is a value between 1.0 and 2.0, with 1.0 being more diffuse and robust, and 2.0 being less diffuse, but less robust. @@ -285,11 +363,15 @@ robust. TypeLimiter (string) BetaLimiter (real between 1.0-minmod and 2.0-mc) +## NANCHECK + This will turn on all of the NaN checks in the code! #NANCHECK DoCheckForNans (logical) +## DEBUG + This will set how much information the code screams at you - set to 0 to get minimal, set to 10 to get EVERYTHING. You can also change which processor is shouting the information - PE 0 is the first one. If you @@ -304,20 +386,30 @@ code to sync up a LOT. DtReport (real) UseBarriers (logical) +## IONLIMITS + #IONLIMITS MaxVParallel (real, default=100 m/s) MaxEField (real, default=0.1 V/m) MinIonDensity (real, default=100 m^-3) +## PHOTOELECTRON + #PHOTOELECTRON PhotoElectronHeatingEfficiency (real) +## NEUTRALHEATING + #NEUTRALHEATING NeutralHeatingEfficiency (real) +## DON4SHACK + #DON4SHACK DoN4SHack (logical) +## THERMO + #THERMO UseSolarHeating (logical) UseJouleHeating (logical) @@ -328,20 +420,30 @@ code to sync up a LOT. UseTurbulentCond (logical) UseIRHeating (logical) +## THERMALDIFFUSION + #THERMALDIFFUSION KappaTemp0 (thermal conductivity, real) +## THERMALCONDUCTION + #THERMALCONDUCTION ThermalConduction_AO2 (Conduction A(O2): 3.6e-4, real) ThermalConduction_AO (Conduction A(O): 5.6e-4, real) ThermalConduction_s (Conduction s: 0.75, real) +## VERTICALSOURCES + #VERTICALSOURCES MaximumVerticalVelocity (real) +## AUSMSOLVER + #AUSMSOLVER Use AUSM Solver (logical) +## DIFFUSION + If you use eddy diffusion, you must specify two pressure levels - under the first, the eddy diffusion is constant. Between the first and the second, there is a linear drop-off. Therefore The first pressure must be @@ -353,6 +455,8 @@ larger than the second! EddyDiffusionPressure0 (real) EddyDiffusionPressure1 (real) +## FORCING + #FORCING UsePressureGradient (logical) UseIonDrag (logical) @@ -361,22 +465,32 @@ larger than the second! UseCoriolis (logical) UseGravity (logical) +## MODIFYPLANET + #MODIFYPLANET RotationPeriodInput (real) DaysPerYearInput (real) DaysPerYearInput (real) +## USEIMPLICITIONMOMENTUM + #USEIMPLICITIONMOMENTUM UseImplicitFieldAlignedMomentum (logical) +## USEIMPROVEDIONADVECTION + #USEIMPROVEDIONADVECTION UseImprovedIonAdvection (logical) UseNighttimeIonBCs (logical) MinTEC (real) +## USETESTVISCOSITY + #USETESTVISCOSITY TestViscosityFactor (real) +## DYNAMO + #DYNAMO UseDynamo (logical) DynamoHighLatBoundary (real) @@ -385,15 +499,21 @@ larger than the second! IncludeCowling (logical) DynamoLonAverage (real) +## IONFORCING + #IONFORCING UseExB (logical) UseIonPressureGradient (logical) UseIonGravity (logical) UseNeutralDrag (logical) +## FIXTILT + #FIXTILT IsFixedTilt (logical) +## DIPOLE + #DIPOLE MagneticPoleRotation (real) MagneticPoleTilt (real) @@ -401,11 +521,15 @@ larger than the second! yDipoleCenter (real) zDipoleCenter (real) +## APEX + #APEX UseApex (logical) Sets whether to use a realistic magnetic field (T) or a dipole (F) +## ALTITUDE + For Earth, the AltMin is the only variable used here. The altitudes are set to 0.3 times the scale height reported by MSIS, at the equator for the specified F107 and F107a values. @@ -415,6 +539,8 @@ the specified F107 and F107a values. AltMax (real, km) UseStretchedAltitude (logical) +## GRID + If LatStart and LatEnd are set to \< -90 and \> 90, respectively, then GITM does a whole sphere. If not, it models between the two. If you want to do 1-D, set nLons=1, nLats=1 in ModSizeGitm.f90, then recompile, then @@ -428,6 +554,8 @@ set LatStart and LonStart to the point on the Globe you want to model. LonStart (real) LonEnd (real) +## NEWSTRETCH + #NEWSTRETCH Poleward Edge of Stretch Region (real, degrees) StretchWidth (real, 1.0-20.0, deg) @@ -438,6 +566,8 @@ set LatStart and LonStart to the point on the Globe you want to model. 5.0 ! Width of stretched region 0.6 ! Amount of stretch 0 (none) to 1 (lots) +## STRETCH + #STRETCH ConcentrationLatitude (real, degrees) StretchingPercentage (real, 0-1) @@ -448,13 +578,19 @@ set LatStart and LonStart to the point on the Globe you want to model. 0.0 ! Amount of stretch 0 (none) to 1 (lots) 1.0 +## TOPOGRAPHY + #TOPOGRAPHY UseTopography (logical) AltMinUniform (real) +## RESTART + #RESTART DoRestart (logical) +## PLOTTIMECHANGE + This allows you to change the output cadence of the files for a limited time. If you have an event then you can output much more often during that event. @@ -463,6 +599,8 @@ that event. yyyy mm dd hh mm ss ms (start) yyyy mm dd hh mm ss ms (end) +## APPENDFILES + For satellite files, you can have one single file per satellite, instead of one for every output. This makes GITM output significantly less files. It only works for satellite files now. @@ -470,12 +608,16 @@ files. It only works for satellite files now. #APPENDFILES DoAppendFiles (logical) +## CCMCFILENAME + Typicaly file is named (e.g.) 1DALL_yymmdd_hhmmss.bin With this it will be named 1DALL_GITM_yyyy-mm-ddThh-mm-ss.bin #CCMCFILENAME UseCCMCFileName (logical) +## SAVEPLOT + The DtRestart variable sets the time in between writing full restart files to the UA/restartOUT directory.\ This sets the output files. The most common type is 3DALL, which outputs @@ -489,12 +631,16 @@ all primary state variables. Types include : 3DALL, 3DNEU, 3DION, 3DTHM, Outputtype (string, 3D, 2D, ION, NEUTRAL, ...) DtPlot (real, seconds) +## SAVEHIMEPLOT + #SAVEHIMEPLOT HIMEPlotLonStart (real) HIMEPlotLonEnd (real) HIMEPlotLatStart (real) HIMEPlotLatEnd (real) +## SATELLITES + #SATELLITES nSats (integer - max = ', nMaxSats, ') SatFile1 (string) @@ -502,6 +648,8 @@ all primary state variables. Types include : 3DALL, 3DNEU, 3DION, 3DTHM, DtPlot1 (real, seconds) etc... +## RCMR + #RCMR Input data type to assimilate (RHO/VTEC) Output variable to drive (F107/PHOTOELECTRON) @@ -511,9 +659,13 @@ all primary state variables. Types include : 3DALL, 3DNEU, 3DION, 3DTHM, 2nd satellite index to assimilate etc... +## DART + #DART useDART (integer, {default 0=no}, 1=master ensemble member, 2=slave ens.) +## ELECTRODYNAMICS + Sets the time for updating the high-latitude (and low-latitude) electrodynamic drivers, such as the potential and the aurora. @@ -521,21 +673,29 @@ electrodynamic drivers, such as the potential and the aurora. DtPotential (real, seconds) DtAurora (real, seconds) +## INPUTTIMEDELAY + Sets the time delay for the high latitude drivers and solar EUV inputs. #INPUTTIMEDELAY TimeDelayHighLat (real, seconds) TimeDelayEUV (real, seconds) +## LTERadiation + #LTERadiation DtLTERadiation (real) +## IONPRECIPITATION + You can only have an AMIE input file for this now. Make sure you put the ions in the AMIE file!!! #IONPRECIPITATION UseIonPrecipitation (logical) +## LOGFILE + You really want a log file. They are very important. It is output in UA/data/log\*.dat. You can output the log file at whatever frequency you would like, but if you set dt to some very small value, you will get an @@ -544,6 +704,8 @@ output every iteration, which is probably a good thing. #LOGFILE DtLogFile (real, seconds) +## EUV_DATA + If EUVAC = true, use EUVAC Model If Tobiska = true, use Tobiska91 Model If both are true, average them together If UseAboveHigh, then extend the spectrum to the longer wavelengths If UseBelowLow, then extend the @@ -553,20 +715,11 @@ spectrum to the shorter wavelengths UseEUVData (logical) cEUVFile (string) +## EUV_DATA + This is for a FISM or some other solar spectrum file. #EUV_DATA UseEUVData (logical) cEUVFile (string) - #ECLIPSE - start y m d h m s (int x 6) - end y m d h m s (int x 6) - start-y-gse (real) - start-z-gse (real) - end-y-gse (real) - end-z-gse (real) - peak (real) - Max Distance (real) - ExpAmp (real) - ExpWidth (real) diff --git a/srcDoc/set_inputs.py b/srcDoc/set_inputs.py new file mode 100644 index 00000000..235f4abe --- /dev/null +++ b/srcDoc/set_inputs.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python3 + +""" +I can't write perl, so this is a python wrapper around src/inputs_to_tex.pl + + +It requires pandoc to bt installed since it converts the .tex file to .md + +Does not need to be re-ran unless set_inputs.f90 is changed. + + +usage: + +./set_inputs.py + +or + +python set_inputs.py + +Must be within srcDoc! + +""" + +import os, subprocess + +# run src/inputs_to_tex.pl +os.chdir('../src/') +tex2pl = subprocess.run("./inputs_to_tex.pl", shell=True, capture_output=True) + +if tex2pl.returncode != 0: + print(tex2pl.stderr.decode()) + print(tex2pl.stdout.decode()) + raise ValueError("Could not run src/inputs_to_tex.pl") + +pandocing = subprocess.run("pandoc set_inputs.tex -o ../srcDoc/set_inputs.md", + shell=True, capture_output=True) + +os.remove('set_inputs.tex') + +if pandocing.returncode != 0: + print(pandocing) + raise ValueError("Could not run pandic. Is it installed??") + + +# Go back to srcdoc +# Rearrange set_inputs.md to have markdown headers +os.chdir("../srcDoc") + +outlines = ['# All Inputs\n\n', + '\n\n' + ] +this_sec = [''] +started_indent = False + + +with open('set_inputs.md') as f: + alllines = f.readlines() + + for aline in alllines: + this_sec.append(aline) + if aline[:5] == ' #': + this_sec[0] = aline.replace(' #', '## ') + '\n' + started_indent = True + if aline[:4] != ' ' and started_indent: + outlines.extend(this_sec) + this_sec = [''] + started_indent = False + +os.remove('set_inputs.md', ) +with open('set_inputs.md', 'x') as f: + for i in outlines: + f.write(i) + + +print("all done") From d46b621f33788471231d3e93da634b558aa09992 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 4 Jun 2025 20:30:00 -0400 Subject: [PATCH 067/120] doc: rewrite all of the output page. remove all python & idl stuff --- srcDoc/outputs.md | 1470 ++++++++++++++------------------------------- 1 file changed, 438 insertions(+), 1032 deletions(-) diff --git a/srcDoc/outputs.md b/srcDoc/outputs.md index 8fda112c..ccc70f20 100644 --- a/srcDoc/outputs.md +++ b/srcDoc/outputs.md @@ -16,55 +16,22 @@ Now that you have managed to successfully complete a GITM run you've found yourself with a bunch of output files. All of the GITM output is in mks units and this data is contained within several files located in -the `UA/data` directory, as was previously discussed in -Chapter [\[quickstart.ch\]](#quickstart.ch){reference-type="ref" -reference="quickstart.ch"} -Section [\[post_process.sec\]](#post_process.sec){reference-type="ref" -reference="post_process.sec"}. You will have found yourself with several -`iriOut_*.dat` files, a `log*.dat` file, and many `.bin` files in -whichever formats you specified in SAVEPLOT (see -Chapter [\[input.ch\]](#input.ch){reference-type="ref" -reference="input.ch"} -Section [\[def_out.sec\]](#def_out.sec){reference-type="ref" -reference="def_out.sec"}). The `iriOut_*.dat` files are required by the -IRI model and not typically used when analyzing the outcome of the GITM -run. - -The log file provides useful information about the run, such as whether -a restart was performed, which physical processes were used, and a list -of the universal time, time-step, neutral temperature ranges (T), solar -and geomagnetic indices, and the neutral velocity (VV) ranges for each -iteration. This file can be very useful when sharing runs with other -users, when revisiting an old run, or merely ensuring that GITM -performed as expected. An example log file is provided below: - - ## Inputs from UAM.in - # Resart= F - # Eddy coef: 100.000 Eddy P0: 0.020 Eddy P1: 0.003 Eddy Scaling: 1.000 - # Statistical Models Only: F Apex: T - # EUV Data: TFile: - fismflux.dat - # AMIE: none - none - # Solar Heating: T Joule Heating: T Auroral Heating: T - # NO Cooling: T O Cooling: T - # Conduction: T Turbulent Conduction: T Updated Turbulent Conduction: T - # Pressure Grad: T Ion Drag: T Neutral Drag: T - # Viscosity: T Coriolis: T Gravity: T - # Ion Chemistry: T Ion Advection: T Neutral Chemistry: T - - #START - iStep yyyy mm dd hh mm ss ms dt min(T) max(T)... - ...mean(T) min(VV) max(VV) mean(VV) F107 F107A By Bz Vx... - ...HP HPn HPs SubsolarLon SubsolarLat SubsolarVTEC - 2 2011 9 23 0 0 2 297 2.2979 168.75192 1062.87354... - ...933.09984 -48.19362 524.93645 1.01910 159.3 127.9 -4.6 0.5 406.9... - ...11.1 14.4 15.5 3.14145 -0.37655 45.73188 - . - . - . - -The 3DALL output binary files can contain the following atmospheric +the `UA/data` directory + +After [postprocessing](postprocessing.md), you will find yourself with a +`log*.dat` file,and many `.bin` files in whichever formats you specified in +SAVEPLOT (see [`#SAVEPLOT`](set_inputs.md#saveplot) + +The log file provides useful information about the run, such as whether a +restart was performed, which physical processes were used, and a list of some +variables which represent the state of the modeled system and its drivers. This +file can be very useful when sharing runs with other users, when revisiting an +old run, or merely ensuring that GITM performed as expected. Some example log +files can be found in the `srcTest/auto_test/ref_solns/` directory. + +## Possible Output Variables + +The output binary files can contain the following atmospheric quantities: - **Altitude:** Altitude from the surface of the planet (m) @@ -170,987 +137,426 @@ quantities: - **time:** Universal time -There are many routines available to process and analyze the GITM binary -files. The majority of these routines are written in IDL and are -available in the `srcIDL` directory within the GITM model directory. -Currently 50 routines have been saved in this directory and more are -under development. Alternatively, python routines are currently being -developed and these are located in the `srcPython` directory. Please not -that when using the IDL reader the universal time is read in as epoch -seconds from January 1, 1965 00:00 UT, while when using the python -reader, the time is imported as a datetime object. - -# IDL {#idl.sec} - -Here is an complete list with some description of the IDL processing and -visualization routines currently available. Please feel free to update -this section for other GITM users when you CVS your vetted GITM -processing routines. - -### gitm_read_bin - -This is a routine to read a GITM bin file into IDL. This is great when -you want to get a handle on the data and experiment with different -visualization methods. - -### thermo_plotsat - -This is the most commonly used routine to plot the 1D GITM results. It -can also be used to plot satellite files and other 1D simulations. It is -relatively straight forward to use, but experimentation can be help. -This is an actual program, so you have to `.run` it. - -### thermo_gui - -This is a someone simplistic graphical user interface code for plotting -3D results. The filename has to be entered manually in the upper left. -You then have to press the button for loading the file. Variables appear -on the left side, and you can select which one you want to plot. You -then select which of the available planes you would like to look at -(lat/lon, lat/alt, or lon/alt) or scroll through the options. This -interface allows you to add wind vectors, plot in polar coordinates, and -plot the log of the variable. - -### thermo_batch_new - -This code will let you look at at 3D files exactly the same way as -thermo_gui, but is all scripted. There are a few features that this has -that thermo_batch doesn't have: - -1. You can use wildcards for the file name, so that a list of files can - be read. The postscript file names created for each figure will be - differentiated by appending numbers sequentially so that no figures - are overwritten. - -2. When plotting a lat/alt plane, you can do a zonal average. - -3. You can do a global average. - -### thermo_plotter - -All of the above plotting codes will only plot one plot per page. This -code will plot many more than one plot per page. You can plot multiple -variables on the same page, or multiple files with the same variable, or -both. - -### Other IDL Routines - -Please feel free to provide a description of these routines so that GITM -users do not waste their time rewriting code that already exists. - -::: multicols -3 - -- **ask** - -- **c_a_to_r** - -- **c_a_to_s** - -- **chopr** - -- **closedevice** - -- **c_r_to_a** - -- **c_s_to_a** - -- **get_position** - -- **makect** - -- **mklower** - -- **mm** - -- **plotct** - -- **plotdumb** - -- **plotmlt** - -- **pos_space** - -- **read_thermosphere_file** - -- **setdevice** - -- **thermo_batch** - -- **thermo_calcforce** - -- **thermo_champ** - -- **thermo_compare** - -- **thermo_compare_time** - -- **thermo_convert_champfiles** - -- **thermo_guvi** - -- **thermo_magequator** - -- **thermo_make_summary** - -- **thermo_mkguvisat** - -- **thermo_mksatsave** - -- **thermo_mksave** - -- **thermo_mktec** - -- **thermo_on2** - -- **thermo_plotdist** - -- **thermo_plotlog** - -- **thermo_plot_new** - -- **thermo_plot** - -- **thermo_plotsat2** - -- **thermo_plotsat_constalt_ON2** - -- **thermo_plotsat_constalt** - -- **thermo_plotvectors** - -- **thermo_readsat** - -- **thermo_sigma** - -- **thermo_superposed** - -- **thermo_tec** - -- **thermo_temp** - -- **tostr** -::: - -# Python {#python.sec} - -This section provides an almost complete list of the vetted GITM python -routines. These routines require that you use PyBats, a module included -in SpacePy. This is a library developed for space physics applications -by the scientists at Los Alamos and can be downloaded for free at: -`http://spacepy.lanl.gov` - -Another library, Basemap, is required for certain plotting routines. -Basemap is a part of the Matplotlib Toolkit and can be installed using -Fink, Macports, or downloaded at: `http://matplotlib.org/basemap/` - -Yet another library, Pysolar, is used to calculate the solar position. -You don't *need* to download Pysolar to run any of the GITM plotting -scripts, but it does expand the functionality. Pysolar is documented at -Github and can be downloaded at: `http://www.pysolar.org` - -Python scripts that create movies rely on external programs to do so. -The scripts included here use FFmpeg, which can be installed using Fink, -Macports, or downloaded at: `http://http://www.ffmpeg.org/` - -If you have questions about these routines or are at the University of -Michigan and want to start using Python, Dr. Welling is the man to see. -The source code behind the PyBats GITM routines are also located in -`GITM2/srcPython`. - -The following programs include the vetted python routines. The examples -shown are meant to be run in ipython, an interactive command-line -interface for python. The terminal window that is running ipython should -be located in the `GITM2/srcPython` directory. The test file for the -example code is one of the files output after running the default -`UAM.in` file. - -### gitm.py - -GITM is a PyBats submodule that handles input and output from GITM. It -can be helpful for those wishing to write their own GITM processing -routines but doesn't contain any analysis or visualization routines. - -Once you have downloaded and installed Spacepy, the gitm submodule can -be accessed via: - -Though to be sure that you have the latest version it is best to CVS the -latest version of `gitm.py` and load: - -while running the `GITM2/srcPhython` directory. This module contains the -following routines: - -- **GitmBin:** A data class and routine to load a GITM output bin - file, based on the PyBats data container class PbData. There are two - keywords arguements that may be associated with this input, - *ionfile*, and *varlist*. The first keyword, *ionfile*, takes a - 3DION file as input, assigns an attribute called 'ionfile' to the - data class, and runs one of the functions called **calc_magvel** to - calculate the ion and neutral velocities in magnetic coordinates. - The second keyword, *varlist*, takes a list of atmospheric - quantities such as those listed at the beginning of this chapter. - More variables may always be added from the same file that created a - data class by calling the function **append_data**. Geographic - position in degrees and local time are also added to the output, - regardless of what variables are specified. A 3DION file may also be - associated with the output GITM class after the fact by assigning a - filename to the attribute 'ionfile' and the magnetic velocity - quantities obtained by running **calc_magvel**. - - - **append_data:** A routine to append variables specified in an - input list. These are obtained from the file specified in the - 'file' attribute. - - - **append_units:** A routine to append unit, scale, and name - attributes to the variable keys in the data class. Runs - automatically with **GitmBin**. - - - **calc_deg:** A routine to compute latitude and longitude in - degrees instead of radians. Runs automatically with **GitmBin**. - - - **calc_lt:** A routine to compute local time from universal time - and longitude. Runs automatically with **GitmBin**. - - - **calc_magdi:** A routine to compute the magnetic inclination - and declination from the magnetic field expressed in - East-North-Vertical coordinates. Runs automatically with - **GitmBin** when the appropriate inputs are present. - - - **calc_magvel:** A routine to compute ion and neutral velocities - in magnetic coordinates. Runs automatically with **GitmBin** if - the *ionfile* keyword is specified. - - - **calc_tec:** A routine to calculate the VTEC from any GITM data - structure that has altitude and electron density. - - - **calc_2dion:** A routine to calculate the VTEC (if it hasn't - been done already), $`h_mF_2`$, and $`N_mF_2`$ from any GITM data - structure that has altitude and electron density - -You can load a GITM binary file by entering the following commands. -Comments are preceded by a '\#'. - - In [1]: import spacepy - In [2]: import gitm # Load the local version of gitm.py, which may be more up-to-date - In [3]: gdata = gitm.GitmBin(`3DALL_t021124_000000.bin') # example binary file - In [4]: gdata.attrs - Out[4]: - {`endian': `big', - `file': `3DALL_t021124_000000.bin', - `nAlt': 54, - `nLat': 22, - `nLon': 22, - `nVars': 39, - `version': 3.13} - -The method used by **calc_2dion** to compute the $`h_mF_2`$ (height of the -F$`_2`$ region density peak) does more than just look for the height of -the electron maximum at the specified locations. Instead it performs a -few checks to ensure that the peak density lies within an altitude range -consistent with the F region and is not an edge artifact. This process -is outlined in Figure [1](#hmf2_flowchart.fig){reference-type="ref" -reference="hmf2_flowchart.fig"}. - -
    -
    - -
    -
    Process for finding the hmF2 -from a GITM electron density altitude profile.
    -
    - -One of the intermediate steps in -Figure [1](#hmf2_flowchart.fig){reference-type="ref" -reference="hmf2_flowchart.fig"} is to find the inflection points in the -altitude profile of electron density. -Figure [2](#hmf2_profile.fig){reference-type="ref" -reference="hmf2_profile.fig"} shows an example of an electron density -profile with no local maxima. To determine the height of the F$`_2`$ peak, -the height derivative of the electron density profile is computed and -local minima along the profile located. These local minima correspond to -inflection points in the electron density profile, and can be used to -locate a reasonable $`h_mF_2`$. - -
    -
    - -
    -
    Electron density profile (red) and height derivative of the -electron density profile (blue) for an instance where GITM does not show -a clear F2 peak. The hmF2 -is identified by choosing the inflection point (local minima from the -height derivative of the electron density profile) with the largest -electron density (dark grey line). The light grey lines show the -remaining locations of inflection points.
    -
    - -### gitm_time.py - -gitm_time has not yet been incorporated into PyBats, as it is actively -being developed. This module contains the following routines: - -- **GitmTime:** A data class and routine to load multiple GITM output - binaries into a structure that includes a universal time (UT) - dimension. All data types and attributes provided by GitmBin are - provided in this data class. - - - **appendgitm:** Add another GitmBin object to an existing - GitmTime object. This routine is also be used to create a - GitmTime object. - - - **appendobs:** Add any type of data to an existing GitmTime - object. The data can be directly appended or matched to the - existing GitmTime data. Three match options are available: - nearest neighbor, running average, and running median. The - latter two options compute a central value and standard - deviation using a specified location/time window about each - GitmTime data point. - - - **sat_dateloc_ticks:** Define axis ticks that include all the - information necessary to know where measurements lie in - spacetime. This is most useful when plotting data along a - satellite orbit. - -- **load_multiple_gitm_bin:** A routine to load a list of GITM output - binary files into GitmBin data structures. The output is a list of - the GitmBin structures, where each element in the list contains the - data from a GITM output binary. - -- **set_sat_dateloc_label:** Create a label for the ticks created by - GitmTime.sat_dateloc_ticks. Outputs the label onto a plot on the - right end of the x-axis. - -You can load multiple GITM binary files into a data structure with UT -dependence by entering the following commands. Commands outside of -ipython are preceded by a `$`. Again, the output files used are -produced by running the default `UAM.in` file. - - $ ls 3DALL_t021124_000* > test.list - $ ipython - In [1]: import spacepy - In [2]: import gitm # Load the local version of gitm.py, which may be more up-to-date - In [3]: import gitm_time as gt - In [4]: gtdata = gt.GitmTime(`test.list') - In [5]: print gtdata['time'][:] - [datetime.datetime(2002, 11, 24, 0, 0) - datetime.datetime(2002, 11, 24, 0, 5)] - In [6]: print gtdata['dLon'][0,:,10,27] - [ -30. -10. 10. 30. 50. 70. 90. 110. 130. 150. 170. 190. - 210. 230. 250. 270. 290. 310. 330. 350. 370. 390.] - In [7]: print gtdata['dLat'][0,10,:,27] - [-105. -95. -85. -75. -65. -55. -45. -35. -25. -15. -5. 5. - 15. 25. 35. 45. 55. 65. 75. 85. 95. 105.] - In [8]: print gtdata['Altitude'][0,10,10,:] - [ 96660.90047544 98330.45023772 100000. 101669.54976228 - 103348.94180562 105050.15497984 106788.53042153 108584.61276626 - 110467.61429397 112482.48190265 114698.91401856 117219.51380361 - 120200.6752566 123855.40706002 128245.43857411 133349.83464183 - 139220.53740507 145894.02746965 153389.42319611 161708.33330952 - 170836.59866663 180746.14929878 191399.58798926 202753.75931196 - 214763.18484817 227382.89781152 240569.83529396 254283.5502381 - 268486.11667059 283141.61144778 298215.46358093 313673.89525175 - 329480.19139848 345605.83193525 362018.21624294 378685.73558327 - 395578.19775965 412667.22510966 429926.74623085 447332.78448625 - 464864.02590453 482501.63589793 500229.1662886 518032.39821451 - 535899.14534895 553819.03817939 571783.3052721 589784.56266012 - 607816.61836022 625874.29578468 643953.27746286 662049.96890339 - 680161.38144647 698272.79398955] - -### gitm_plot_rout.py - -Common routines used to format and analyze GITM data. - -- **choose_contour_map:** A routine to choose an appropriate color map - based on whether the plot will be black and white or color, and - whether data data range will be centered about zero or not. - -- **add_colorbar:** Add a color bar to a contour plot. - -- **find_order_of_magnitude:** Find the order of magnitude of a - specified number. - -- **center_polar_cap:** Adjust radial coordinates to produce a - centered polar plot. Necessary for the northern hemisphere, where - polar plots assume the radial (latitude) coordinates should be - centered at zero instead of 90$`^\circ`$. This routine does not depend - on SpacePy. - -- **find_data_limits:** Find the upper and lower limits for a - specified data key in a list of GITM data structures at a specified - location (either single indices or the entire range are permitted - for latitude, longitude, and altitude). - -- **find_data_limits_irange:** Find the upper and lower limits for a - specified data key in a list of GITM data structures at a specified - location range (upper and lower limits or the entire range are - permitted for latitude, longitude, and altitude). - -- **find_data_limits_ivalues:** Establish the appropriate axis limits - for a list of GitmBin files at a range or specific latitude, - longitude, or altitude. - -- **glon_to_localtime:** Compute the local time given a longitude and - universal time. - -- **localtime_to_glon:** Find the longitude at a specified universal - time and local time. - -- **find_lon_lat_index:** Find the indexes for the location closest to - a specified latitude and longitude. - -- **retrieve_key_from_web_name:** Find a data key given a - website-friendly version of data key names. - -- **find_alt_index:** Find the index closest to the specified - altitude. Altitude may be specified in km or m. - -- **match_cindi_key:** A routine to retrieve a CINDI data key from a - GITM key or vice versa. - -- **add_geomagnetic_equator:** A routine to add a line showing the - geomagnetic equator (specified by IGRF-10) to an existing plot. Line - style and color may be specified. - -- **add_subsolar_point:** A routine to find the location of the - subsolar point at a specified Universal Time using the Pysolar - routines. Returns the geographic location of the point and will also - add a marker to a plot. - -- **add_solar_terminator:** Computes the location of the solar - terminator using the Pysolar routines. Returns numpy arrays of the - geographic coordinates of the solar terminator and will also add a - line denoting the solar terminator to a plot. - -- **find_sunside_twilight_sza:** A routine to find the maximum angular - distance between the solar terminator and the sunlight side with - conjugate flux tube feet in darkness using Pysolar routines. The - solar zenith angle corresponding to the sunlight boundary is - returned. The entire day is searched to identify the sunlight - boundary given any degree of magnetic declination. - -- **create_contour_input_array:** Creates contour input at a specified - location between GITM grid points. - -- **create_linear_input_array:** Creates linear input at a specified - location between GITM grid points. - -- **get_meq_offset:** Find the offset in degrees between the - geographic and geomagnetic equators at a specified longitude. - -This example shows how the index for a specified altitude can be found. -Note that GITM saves altitude in meters. - - In [1]: import spacepy - In [2]: import gitm - In [3]: import gitm_plot_rout as gpr - In [4]: gdata = gitm.GitmBin(`3DALL_t021124_000000.bin') - In [5]: ialt = gpr.find_alt_index(gdata, 10, 10, 250.0, "km") - In [6]: print ialt, gdata['Altitude'][10,10,ialt] - 27 254283.550238 - -### solar_rout.py - -Routines that use Pysolar to find the location of the solar terminator -and subsolar point. - -- **subsolar_point:** Finds the geographic location of the subsolar - point at a specified Universal Time. - -- **lat_lon2spherical_xyz:** Converts latitude and longitude to - spherical coordinates. Assumes a spherical earth. - -- **spherical_xyz2lat_lon:** Converts from spherical coordinates to - geographic latitude and longitude, assuming a spherical earth. - -- **get_solar_terminator_xyz_matrix:** Finds the location of the solar - terminator in spherical coordinates. - -- **get_terminator_lat_lon_coordinates:** Finds the location of the - solar terminator in geographic coordinates using input from a - solar-oriented spherical coordinate system. - -- **get_solar_terminator_lat_lon:** Finds the location of the solar - terminator at a specified time in geographic coordinates. - -### gitm_loc_rout.py - -Routines used to find certain locations or values, as well as routines -to align or match points in different data sets. - -- **find_nearest_location:** A routine to find the nearest neighbor in - a 1, 2, or 3D coordinate system. - -- **find_nearest_value:** A routine to find the nearest neighbor to a - specified value. - -- **find_nearest_datetime:** A routine to find the nearest neighbor - between datetime objects. - -- **match_running_average:** Provide running averages at specified - times and locations. - -- **match_running_median:** Provide running medians at specified times - and locations. - -- **gitm_inst_loc:** A routine to align GITM and instrument data. - -- **gitm_net_loc:** A routine to align GITM and data from a large - network of instruments. - -- **gitm_time_obs_loc:** A routine to find, through interpolation, the - GITM value at a specific observation location when only one spatial - coordinate needs to be aligned. - -### gitm_3D_global_plots.py - -Routines to build and output GITM output variable contour (recommended) -or scatter plots over a geographic range. Several different standard -plot formats are available, and routines useful for creating custom -figures are also included. The Earth's continental boundaries may be -included in any output figure. If they are, shading in the night time -region of the globe may also be included. - -- **gitm_single_3D_image:** This is a basic visualization routine that - creates a filled contour plot of a single output variable from a - GITM 3D at a specified altitude or 2D bin file. The output variable - is plotted as a function of latitude and longitude over the entire - globe, though the latitude range may be limited. The output plot may - be polar or rectangular and if the rectangular option is chosen, the - geomagnetic equator may also be included in the output figure. - Sample output of the electron temperature is shown in - figure [3](#gitm_3D_global_plots.fig){reference-type="ref" - reference="gitm_3D_global_plots.fig"} (a) and (b). - -- **gitm_single_nsglobal_3D_image:** A quick way to examine GITM - output at both poles. This routine creates two polar contour plots - centered at the geographic northern and southern poles for a single - output variable from a GITM 3D at a specified altitude or 2D bin - file. The equatorial and polar latitude boundaries may both be - specified, though they cannot change between hemispheres. Sample - output of the electron temperature is shown in - figure [3](#gitm_3D_global_plots.fig){reference-type="ref" - reference="gitm_3D_global_plots.fig"} (c) - -- **gitm_global_3D_snapshot:** A snapshot of a single GITM output over - the entire globe. This routine creates two polar contour plots - centered at the geographic northern and southern poles and extending - to a specified latitude and a single rectangular plot containing the - latitudes equatorward of this point for a single output variable - from a GITM 3D at a specified altitude or 2D bin file. The - geomagnetic equator may also be included in the output figure. - Sample output of the electron temperature is shown in - figure [3](#gitm_3D_global_plots.fig){reference-type="ref" - reference="gitm_3D_global_plots.fig"} (d) - -- **gitm_mult_3D_slices:** This routine creates a single plot - containing multiple global contours of a GITM output variable from a - 3D or 2D bin file at a list of specified altitudes. These plots may - be either polar or rectangular, with or without the geomagnetic - equator, and within a specified latitude range. Sample output of the - electron temperature is shown in - figure [4](#gitm_3D_mult_plots.fig){reference-type="ref" - reference="gitm_3D_mult_plots.fig"}. - -
    -
    - -
    -
    GITM electron temperature at 456.63 km altitude for: (a) -northern latitudes, (b) over the entire globe, (c) over the entire -globe, as viewed from the poles, and (d) as a global -snapshot.
    -
    - -
    -
    - -
    -
    GITM electron temperature at seven altitude slices for (a) -northern latitudes and (b) the entire globe.
    -
    - -This example shows how to reproduce -Figure [3](#gitm_3D_global_plots.fig){reference-type="ref" -reference="gitm_3D_global_plots.fig"} (a). - - In [1]: import spacepy - In [2]: import gitm - In [3]: import gitm_3D_global_plots as g3d - In [4]: import matplotlib.pyplot as plt - In [5]: plt.ion() # This makes the plotting happen interactively - In [6]: gdata = gitm.GitmBin(`3DALL_t021124_000000.bin') - In [7]: title = "%s UT" % (gdata[`time']) - In [8]: f = g3d.plot_single_3D_image("polar", "eTemperature", gdata, title, - "example_polar_plot.png", True, 27, 90, 0) - -### plot_3D_global.py - -Routines to build contour or scatter plots over a geographic range. -Several different standard plot formats are available, and routines -useful for creating custom figures are also included. The Earth's -continental boundaries may be included in any output figure. If they -are, shading in the night time region of the globe may also be included. -Input data must be provided in separate numpy arrays (1D or 2D for -scatter plots, 2D for contour plots). - -- **plot_single_3D_image:** This is a basic visualization routine that - creates a filled contour or a colored scatter plot of a single - output variable. The output variable is plotted as a function of - latitude and longitude over the entire globe, though the latitude - range may be limited. The output plot may be polar or rectangular - and if the rectangular option is chosen, the geomagnetic equator may - also be included in the output figure. If the polar option is used, - the latitude range cannot extend beyond $`\pm`$ 90$`^\circ`$. If the - rectangular option is used, the geomagnetic equator may also be - plotted. - -- **plot_single_nsglobal_3D_image:** A quick way to examine a variable - at both poles. This routine creates two polar contour or scatter - plots centered at the geographic northern and southern poles for a - single output variable. The equatorial and polar latitude boundaries - may both be specified, though they cannot change between - hemispheres. - -- **plot_global_3D_snapshot:** A snapshot of an output variable over - the entire globe. This routine creates two polar contour or scatter - plots centered at the geographic northern and southern poles and - extending to a specified latitude as well as a single rectangular - plot containing the latitudes equatorward of this point. The - geomagnetic equator may be output over the data. - -- **plot_mult_3D_slices:** This routine creates a single plot - containing multiple global contour or scatter plots for a single - variable at specific indices (corresponding to different altitude, - universal times, *et cetera*). These plots may be either polar or - rectangular (with or without the geomagnetic equator). Sample output - of the electron temperature is shown in - figure [4](#gitm_3D_mult_plots.fig){reference-type="ref" - reference="gitm_3D_mult_plots.fig"}. The numpy arrays containing the - data may be 2D or 3D for scatter plots or 3D for contour plots. Any - dimension may contain the indices to iterate over for the - subfigures. - -- **plot_nsglobal_subfigure:** This routine creates a subfigure with - two polar contour or scatter plots centered at the geographic - northern and southern poles for a single output variable. The - equatorial and polar latitude boundaries may both be specified, - though they cannot change between hemispheres. This is used by - plot_single_nsglobal_3D_image and may also be used to create a - subplot with this format. - -- **plot_snapshot_subfigure:** This routine creates a subfigure with - two polar dials and a rectangular region showing the equatorial - latitudes for a single output variable. This is used by - plot_global_3D_snapshot and may also be used to create a subplot - with this format. - -- **plot_rectangular_3D_global:** This routine plots a single - rectangular filled contour or colored scatter for an output variable - as a function of latitude and longitude. Options exist to control - the colorbar, ticks, labels, and more. A handle to the contour plot - is returned to allow the output to be further manipulated depending - on what other subplots are included in the output figure. - -- **plot_polar_3D_global:** This routine plots a single polar filled - contour for a GITM output variable at a specified altitude index as - a function of latitude and longitude. Title, colorbar, labels, and - more may be specified using input options. A handle to the contour - plot is returned to allow the output to be further manipulated - depending on what other subplots are included in the output figure. - The longitude at the top of the plot may also be specified, this - allows one to ensure a specific local time is always located at the - top of the dial using a routine like **localtime_to_glon**. - -### gitm_alt_plots.py - -Routines to build and output GITM output variable linear and contour -plots over an altitude range. Several different standard plot formats -are available, and routines useful for creating custom figures are also -included. - -- **gitm_single_alt_image:** Creates a single linear or contour - altitude plot. - -- **gitm_mult_alt_image:** Creates a figure with multiple linear or - contour altitude plots. - -- **gitm_alt_slices:** Creates a figure with a contour plot showing - the altitude dependence of a quantity as a function of latitude or - longitude with several linear altitude slices at specified - locations. An example is shown in - figure [5](#gitm_alt_slices.fig){reference-type="ref" - reference="gitm_alt_slices.fig"} - -
    -
    - -
    -
    GITM electron temperature at a constant longitude with six -latitude slices.
    -
    - -This example shows how to reproduce -Figure [5](#gitm_alt_slices.fig){reference-type="ref" -reference="gitm_alt_slices.fig"}. - - In [1]: import spacepy - In [2]: import gitm - In [3]: import gitm_alt_plots as gap - In [4]: import gitm_plot_rout as gpr - In [5]: import matplotlib.pyplot as plt - In [6]: plt.ion() # This makes the plotting happen interactively - In [7]: gdata = gitm.GitmBin(`3DALL_t021124_000000.bin') - In [8]: title = "%s UT" % (gdata[`time']) - In [9]: lat_index = list() - In [10]: lon_index = list() - In [11]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, -65.0, "degrees") - In [12]: lon_index.append(ilon) - In [13]: lat_index.append(ilat) - In [14]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, -45.0, "degrees") - In [15]: lat_index.append(ilat) - In [16]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, -5.0, "degrees") - In [17]: lat_index.append(ilat) - In [18]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, 5.0, "degrees") - In [19]: lat_index.append(ilat) - In [20]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, 45.0, "degrees") - In [21]: lat_index.append(ilat) - In [22]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, 65.0, "degrees") - In [23]: lat_index.append(ilat) - In [24]: f = gap.plot_alt_slices("eTemperature", gdata, lat_index, lon_index, - title, "example_alt_plot.png") - -### plot_alt_profiles.py - -Routines to build and output linear and contour plots over an altitude -range. Several different standard plot formats are available, and use -any numpy array as input. - -- **plot_single_alt_image:** Creates a single linear or contour - altitude plot. - -- **plot_mult_alt_image:** Creates a figure with multiple linear or - contour altitude plots. - -- **plot_alt_slices:** Creates a figure with a contour plot showing - the altitude dependence of a quantity as a function of latitude or - longitude with several linear altitude slices at specified - locations. - -- **plot_linear_alt:** Plots the the linear altitude dependence of a - quantity, with altitude on the y-axis. - -- **plot_3D_alt:** Plots the altitude dependence of a quantity as the - function of another spatiotemporal coordinate with the - spatiotemporal coordinate on the x-axis, altitude on the y-axis, and - the desired quantity as a color contour. - -### gitm_comparison_plots.py - -Routines to make plots that compare GITM data with observations. The -observational sources include satellites, ground-based receivers, and -receiver networks. - -- **extract_data_matched_arrays:** Extract points from matched data - arrays for elements where neither array contains a specified 'bad' - value. - -- **extract_gitm_time_arrays:** Routine to extract all positions with - valid data from a GitmTime object and construct numpy arrays. A - single universal time, longitude, latitude, and/or altitude may be - specified. - -- **plot_net_gitm_comp:** A routine to create a plot comparing 2D GITM - data (such as VTEC or $`h_mF_2`$) to observations taken from a network - of instruments over the globe. The map format may be rectangular, - polar, or a combination (provided by plot_nsglobal_subfigure or - plot_snapshot_subfigure). The top subfigure shows the observations - as a scatter figure, the middle subfigure shows the GITM data as a - contour, and the bottom subfigure shows the difference between the - two as a scatter plot. The difference must be computed outside of - this program, and so may be the difference, absolute difference, - percent difference, or any other type of comparison. An example is - shown in Figure [6](#teccomp.fig){reference-type="ref" - reference="teccomp.fig"}. - -- **plot_sat_gitm_comp:** Routine to plot satellite and GITM data to - show how a single physical quantity varies over the orbit. Four - panels are included; the top panel shows the raw satellite data and - the GITM data along the track. The second panel shows the matched - GITM/satellite data. The third panel shows the difference between - the satellite and GITM data. The fourth panel shows the percent - difference 100\*(sat-GITM)/sat. - -
    -
    - -
    -
    Madrigal and GITM vertical TEC comparison.
    -
    - -### load_files.py - -Routines to load certain types of data files into a dictionary of numpy -arrays, where each data type is used to specify the dictionary keys. - -- **loadCINDIorbit_ASCII:** Loads the Coupled Ion Neutral Dynamics - Investigation ASCII files provided by the UT Dallas website. - -- **loadMadrigalVTEC_ASCII:** Loads the GPS TEC ASCII files provided - by the Millstone Hill Madrigal site. - -- **loadGITMsat_ASCII:** Loads the satellite file used as input for a - GITM run. - -- **loadMadrigalVTEC_HDF5:** Loads the GPS TEC HDF5 files provided by - the Millstone Hill Madrigal site. - -### read_files.py - -Routines to read certain file formats and load the data into a -dictionary of numpy arrays, where each data type is used to specify the -dictionary keys. - -- **loadASCII_data_header:** Loads an ASCII file with header lines - denoted by a '\#' . - -- **loadASCII_data_hline:** Loads an ASCII file with a specified - number of header lines. - -- **loadASCII_index_profile:** Loads an ASCII file with header lines - denoted by a '\#' that has been broken up into indexed blocks - (blocks separated by double newlines, or indexes as specified by - gnuplot). The indexed structure is maintained in the output - dictionary by providing a list of numpy arrays for each data column. - -- **load_multASCII_data:** Loads multiple ASCII files into a single - output dictionary. - -- **loadnetCDF_data:** Loads netCDF files into an output dictionary. - -- **combine_data_dictionaries:** Combines multiple data dictionaries - into a single dictionary, including only the data keys common to all - of the inputted data dictionaries. - -### read_gps_bin.py - -A script to read a VMR GPS binary file, providing data at a specified -Universal Time. - -- **GpsFile:** Class containing all of the data from the VMR GPS - binary file. - - - **read_header:** Reads the VMR GPS binary file header, allowing - data to be easily located as desired. - - - **read_time:** Read in all the GPS data at the specified - Universal Time. The specified time and the file times do not - have to be perfectly aligned, as long as the specified time - falls between the first and last time in the GPS file, the data - with the closest temporal proximity will be returned. - -### write_files.py - -Routines to write output files. - -- **writeASCII_file:** A routine to create an ASCII file from a string - or list of strings. Will overwrite any file of the same name that - already exists. - -- **writeASCII_data_w_sorttext:** A routine to create an ASCII file - from a data dictionary of dictionaries. The first layer of keys is - used to provide the data columns, the second layer is output as - additional data column(s) where the keys are output as strings. - Datetime columns are output as two strings, one containing the date - information and a second one containing the time of day information. - -### plot_stats.py - -Routines to compute and plot common statistics. - -- **add_stat_to_line:** Computes the moments, first through third - quartiles, and mode(s) (as desired) for a dataset and outputs the - statistics as a formatted text line that can be output to a file and - in a list. - -- **add_stat_box:** Computes the moments, first through third - quartiles, and mode(s) (as desired) for a dataset and outputs the - statistics in a text box onto a plot and in a list. - -- **plot_hist_w_stats:** Calculates and plots a histogram of a - specified dataset, as well as the moments, first through third - quartiles, and mode(s) (as desired). - -- **plot_lat_lt_stats:** Calculates and plots histograms and - statistics for a specified dataset broken up into latitude and local - time regions. - -- **lat_lt_stat_lines:** Calculates statistics for a specified dataset - broken up into latitude and local time regions, providing a - formatted string with the statistics for each region taking up a - line. - -### gitm_movie_script.py - -This is a python script that can be run either from ipython using the -command `run gitm_movie_script.py` or the command line using the command -`python gitm_movie_script.py`. Input to this program is prompted -interactively, and includes: - -- `Ordered list of GITM binary files:` A list of GITM binary files in - chronological order (or whatever other order the movie should be - played in). - -- `GITM plot type (rectangular, polar, nspolar, snapshot):` The - keyword for the desired plot type. These are the plot types shown in - figure [3](#gitm_3D_global_plots.fig){reference-type="ref" - reference="gitm_3D_global_plots.fig"}, where polar corresponds to - panel (a), rectangular to panel (b), nspolar to panel (c), and - snapshot to panel (d). - -- At this point, the routine enters a while-loop to allow multiple - movies to be made for the same list of GITM binary files - - - `GITM key to plot on z axis (eg Temperature):` The data key - corresponding to the data type to plot on the z axis. A list of - data keys can be found by typing '`gdata.keys()`' into ipython - after loading one of the listed GITM binaries. - - - `Altitude to plot z value at (eg 250):` Altitude to plot, may be - specified in km or m. For 2D parameters, a value must be - entered, but doesn't matter. - - - `Units of altitude (km or m):` Units of altitude entered above. - - - `Use map of Earth? (empty for False):` Enter any value to - include a Basemap plot of the earth, enter a carriage return to - exclude the map. - - - The latitude limits needed depend on the plot type - - - **nspolar** `Polar latitude limit (degrees):` Specify the - polar latitude limit (positive, same for both hemispheres). - - - **nspolar** `Equatorial latitude limit (degrees):` Specify - the equatorial latitude limit (positive, same for both - hemispheres). - - - **snapshot** `Polar latitude limit (degrees):` Specify the - polar latitude limit (positive, same for both hemispheres). - - - **polar/rectangular** `Northern latitude limit (degrees):` - Specify the northernmost latitude (may be negative). - - - **polar/rectangular** `Southern latitude limit (degrees):` - Specify the southernmost latitude (must be smaller/more - negative than the northernmost limit) - - - `Load another z axis key? (empty for False):` Enter any value to - include another movie or, enter a carriage return finish. -With this information, movies with appropriate z-variable ranges will be -plot as .png files and combined into a movie using FFmpeg. The image and -movie files will be named using the plot type, z parameter, and altitude -to distinguish them. +Currently the following output files are available: + +## 2DANC + + 1 Longitude + 2 Latitude + 3 Altitude + 4 Local Time + 5 Solar Zenith Angle + 6 Vertical TEC + 7 AltIntJouleHeating (W/m2) + 8 AltIntHeatingTransfer (W/m2) + 9 AltIntEuvHeating (W/m2) + 10 AltIntPhotoElectronHeating (W/m2) + 11 AltIntChamicalHeating (W/m2) + 12 AltIntRadCooling (W/m2) + 12 AltIntCO2Cooling (W/m2) + 12 AltIntNOCooling (W/m2) + 12 AltIntOCooling (W/m2) + +## 2DGEL + + 1 Longitude + 2 Latitude + 3 Altitude + 4 Potential + 5 Pedersen Conductance + 6 Hall Conductance + 7 Electron_Average_Energy + 8 Electron_Energy_Flux + 9 DivJuAlt + 10 Pedersen FL Conductance + 11 Hall FL Conductance + 12 DivJu FL + 13 FL Length + +## 2DHME + + 1 Longitude + 2 Latitude + 3 Altitude + 4 Local Time + 5 Vertical TEC + +## 2DMEL + + 1 Longitude + 2 Latitude + 3 Altitude + 4 MLT + 5 GeoLat + 6 GeoLon + 7 Pedersen Conductance + 8 Hall Conductance + 9 DivJuAlt + 10 Field Line Length + 11 Sigma PP + 12 Sigma LL + 13 Sigma H + 14 Sigma C + 15 Sigma PL + 16 Sigma LP + 17 K^D_{m\phi} + 18 K^D_{m\lamda} + 19 Solver A + 20 Solver B + 21 Solver C + 22 Solver D + 23 Solver E + 24 Solver S + 25 DynamoPotential + 26 Ed1new + 27 Ed2new + 28 Kphi + 29 Klamda + +## 2DTEC + + 1 Longitude + 2 Latitude + 3 Altitude + 4 Solar Zenith Angle + 5 Vertical TEC + + +## 2DUSR + + 1 Longitude + 2 Latitude + 3 Altitude + 4 Potential (kV) + 5 Average Energy (keV) + 6 Total Energy (ergs) + 7 Discrete Average Energy (keV) + 8 Discrete Total Energy (ergs) + 9 Wave Average Energy (keV) + 10 Wave Total Energy (ergs) + 11 Flux@5.000E+05eV (/cm2/s) + 12 Flux@4.009E+05eV (/cm2/s) + 13 Flux@3.215E+05eV (/cm2/s) + 14 Flux@2.578E+05eV (/cm2/s) + 15 Flux@2.067E+05eV (/cm2/s) + 16 Flux@1.658E+05eV (/cm2/s) + 17 Flux@1.329E+05eV (/cm2/s) + 18 Flux@1.066E+05eV (/cm2/s) + 19 Flux@8.547E+04eV (/cm2/s) + 20 Flux@6.853E+04eV (/cm2/s) + 21 Flux@5.495E+04eV (/cm2/s) + 22 Flux@4.407E+04eV (/cm2/s) + 23 Flux@3.533E+04eV (/cm2/s) + 24 Flux@2.833E+04eV (/cm2/s) + 25 Flux@2.272E+04eV (/cm2/s) + 26 Flux@1.822E+04eV (/cm2/s) + 27 Flux@1.461E+04eV (/cm2/s) + 28 Flux@1.171E+04eV (/cm2/s) + 29 Flux@9.393E+03eV (/cm2/s) + 30 Flux@7.532E+03eV (/cm2/s) + 31 Flux@6.040E+03eV (/cm2/s) + 32 Flux@4.843E+03eV (/cm2/s) + 33 Flux@3.884E+03eV (/cm2/s) + 34 Flux@3.114E+03eV (/cm2/s) + 35 Flux@2.497E+03eV (/cm2/s) + 36 Flux@2.002E+03eV (/cm2/s) + 37 Flux@1.606E+03eV (/cm2/s) + 38 Flux@1.287E+03eV (/cm2/s) + 39 Flux@1.032E+03eV (/cm2/s) + 40 Flux@8.278E+02eV (/cm2/s) + 41 Flux@6.638E+02eV (/cm2/s) + 42 Flux@5.323E+02eV (/cm2/s) + 43 Flux@4.268E+02eV (/cm2/s) + 44 Flux@3.423E+02eV (/cm2/s) + 45 Flux@2.744E+02eV (/cm2/s) + 46 Flux@2.201E+02eV (/cm2/s) + 47 Flux@1.765E+02eV (/cm2/s) + 48 Flux@1.415E+02eV (/cm2/s) + 49 Flux@1.135E+02eV (/cm2/s) + 50 Flux@9.099E+01eV (/cm2/s) + 51 Flux@7.296E+01eV (/cm2/s) + 52 Flux@5.850E+01eV (/cm2/s) + 53 Flux@4.691E+01eV (/cm2/s) + 54 Flux@3.762E+01eV (/cm2/s) + 55 Flux@3.016E+01eV (/cm2/s) + 56 Flux@2.419E+01eV (/cm2/s) + 57 Flux@1.940E+01eV (/cm2/s) + 58 Flux@1.555E+01eV (/cm2/s) + 59 Flux@1.247E+01eV (/cm2/s) + 60 Flux@1.000E+01eV (/cm2/s) + +## 3DALL + + 1 Longitude + 2 Latitude + 3 Altitude + 4 Rho + 5 [O(!U3!NP) ] + 6 [O!D2!N ] + 7 [N!D2!N ] + 8 [N(!U4!NS) ] + 9 [NO ] + 10 [He ] + 11 [N(!U2!ND) ] + 12 [N(!U2!NP) ] + 13 [H ] + 14 [CO!D2!N ] + 15 [O(!U1!ND) ] + 16 Temperature + 17 V!Dn!N (east) + 18 V!Dn!N (north) + 19 V!Dn!N (up) + 20 V!Dn!N (up,O(!U3!NP) ) + 21 V!Dn!N (up,O!D2!N ) + 22 V!Dn!N (up,N!D2!N ) + 23 V!Dn!N (up,N(!U4!NS) ) + 24 V!Dn!N (up,NO ) + 25 V!Dn!N (up,He ) + 26 [O_4SP_!U+!N ] + 27 [NO!U+!N ] + 28 [O!D2!U+!N ] + 29 [N!D2!U+!N ] + 30 [N!U+!N ] + 31 [O(!U2!ND)!U+!N ] + 32 [O(!U2!NP)!U+!N ] + 33 [H!U+!N ] + 34 [He!U+!N ] + 35 [e- ] + 36 eTemperature + 37 iTemperature + 38 V!Di!N (east) + 39 V!Di!N (north) + 40 V!Di!N (up) + +## 3DCHM + + 1 Longitude + 2 Latitude + 3 Altitude + 4 N!D2!U+!N + e + 5 O!D2!U+!N + e + 6 N!D2!U+!N + O + 7 NO!U+!N + e + 8 N!U+!N + O!D2!N + 9 NO + N + 10 O!U+!N + O!D2!N + 11 N + O!D2!N + 12 O!D2!U+!N + N + 13 O!D2!U+!N + NO + 14 O!D2!U+!N + N2 + 15 N!D2!U+!N + O!D2!N + 16 N!U+!N + O + 17 O!+!N + N!D2!N + 18 O(1D) + N!D2!N + 19 O(1D) + O!D2!N + 20 O(1D) + O + 21 O(1D) + e + 22 N(2D) + O!D2!N + 23 O!U+!N(2D)+e + 24 N(2D) + O + 25 N(2D) + e + 26 O!U+!N(2D + N!D2!N + 27 O!U+!N(2P) + e + 28 O!U+!N(2P) + O + 29 O!U+!N(2P) + N!D2!N + 30 Chemical Heating Rate + +## 3DGLO + + 1 Longitude + 2 Latitude + 3 Altitude + 4 6300 A Emission + 5 PhotoElectronUp + 6 PhotoElectronDown + +## 3DHME + + 1 Longitude + 2 Latitude + 3 Altitude + 4 Rho + 5 [O(!U3!NP) ] + 6 [O!D2!N ] + 7 [N!D2!N ] + 8 [N(!U4!NS) ] + 9 [NO ] + 10 [He ] + 11 [N(!U2!ND) ] + 12 [N(!U2!NP) ] + 13 [H ] + 14 [CO!D2!N ] + 15 [O(!U1!ND) ] + 16 Temperature + 17 V!Dn!N (east) + 18 V!Dn!N (north) + 19 V!Dn!N (up) + 20 V!Dn!N (up,O(!U3!NP) ) + 21 V!Dn!N (up,O!D2!N ) + 22 V!Dn!N (up,N!D2!N ) + 23 V!Dn!N (up,N(!U4!NS) ) + 24 V!Dn!N (up,NO ) + 25 V!Dn!N (up,He ) + 26 [O_4SP_!U+!N ] + 27 [NO!U+!N ] + 28 [O!D2!U+!N ] + 29 [N!D2!U+!N ] + 30 [N!U+!N ] + 31 [O(!U2!ND)!U+!N ] + 32 [O(!U2!NP)!U+!N ] + 33 [H!U+!N ] + 34 [He!U+!N ] + 35 [e- ] + 36 eTemperature + 37 iTemperature + 38 V!Di!N (east) + 39 V!Di!N (north) + 40 V!Di!N (up) + 41 PhotoElectron Heating + 42 Joule Heating + 43 Auroral Heating + 44 Specific Heat + 45 Magnetic Latitude + 46 Magnetic Longitude + 47 B.F. East + 48 B.F. North + 49 B.F. Vertical + 50 B.F. Magnitude + 51 Potential + 52 PotentialY + 53 E.F. East + 54 E.F. North + 55 E.F. Vertical + +## 3DION + + 1 Longitude + 2 Latitude + 3 Altitude + 4 [O_4SP_!U+!N ] + 5 [NO!U+!N ] + 6 [O!D2!U+!N ] + 7 [N!D2!U+!N ] + 8 [N!U+!N ] + 9 [O(!U2!ND)!U+!N ] + 10 [O(!U2!NP)!U+!N ] + 11 [H!U+!N ] + 12 [He!U+!N ] + 13 [e- ] + 14 eTemperature + 15 iTemperature + 16 V!Di!N (east) + 17 V!Di!N (north) + 18 V!Di!N (up) + 19 Ed1 + 20 Ed2 + 21 Je1 + 22 Je2 + 23 Magnetic Latitude + 24 Magnetic Longitude + 25 B.F. East + 26 B.F. North + 27 B.F. Vertical + 28 B.F. Magnitude + 29 Potential + 30 E.F. East + 31 E.F. North + 32 E.F. Vertical + 33 E.F. Magnitude + 34 IN Collision Freq + 35 PressGrad (east) + 36 PressGrad (north) + 37 PressGrad (up) + +## 3DLST + + 1 Longitude + 2 Latitude + 3 Altitude + 4 Rho (kg/m3) + 5 [O(!U3!NP) ] (/m3) + 6 [O!D2!N ] (/m3) + 7 [N!D2!N ] (/m3) + 8 [NO ] (/m3) + 9 Vn (east) (m/s) + 10 Vn (north) (m/s) + 11 Vn (up) (m/s) + 12 [O_4SP_!U+!N ] (/m3) + 13 [NO!U+!N ] (/m3) + 14 [O!D2!U+!N ] (/m3) + 15 [N!D2!U+!N ] (/m3) + 16 [e- ] (/m3) + 17 Vi (east) (m/s) + 18 Vi (north) (m/s) + 19 Vi (up) (m/s) + 20 Neutral Temperature (K) + +## 3DMAG + + 1 Longitude + 2 Latitude + 3 Altitude + 4 Magnetic Latitude + 5 Magnetic Longitude + 6 B.F. East + 7 B.F. North + 8 B.F. Vertical + 9 B.F. Magnitude + +## 3DNEU + + 1 Longitude + 2 Latitude + 3 Altitude + 4 Rho + 5 [O(!U3!NP) ] + 6 [O!D2!N ] + 7 [N!D2!N ] + 8 [N(!U4!NS) ] + 9 [NO ] + 10 [He ] + 11 [N(!U2!ND) ] + 12 [N(!U2!NP) ] + 13 [H ] + 14 [CO!D2!N ] + 15 [O(!U1!ND) ] + 16 Temperature + 17 V!Dn!N (east) + 18 V!Dn!N (north) + 19 V!Dn!N (up) + 20 V!Dn!N (up,O(!U3!NP) ) + 21 V!Dn!N (up,O!D2!N ) + 22 V!Dn!N (up,N!D2!N ) + 23 V!Dn!N (up,N(!U4!NS) ) + 24 V!Dn!N (up,NO ) + 25 V!Dn!N (up,He ) + +## 3DTHM + + 1 Longitude + 2 Latitude + 3 Altitude + 4 EUV Heating + 5 Conduction + 6 Molecular Conduction + 7 Eddy Conduction + 8 Eddy Adiabatic Conduction + 9 Chemical Heating + 10 Auroral Heating + 11 Joule Heating + 12 NO Cooling + 13 O Cooling + 14 Total Abs EUV + 15 Cp + 16 Rho + 17 E-Field Mag + 18 Sigma Ped + +## 3DUSR + + 1 Longitude + 2 Latitude + 3 Altitude + 4 Joule Heating + 5 JPara \ No newline at end of file From 7b7525855e953726ad0258e0d21592dd19893283 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 4 Jun 2025 20:31:28 -0400 Subject: [PATCH 068/120] doc: remove old quickstart page (from last manual) --- srcDoc/quickstart2.md | 265 ------------------------------------------ 1 file changed, 265 deletions(-) delete mode 100644 srcDoc/quickstart2.md diff --git a/srcDoc/quickstart2.md b/srcDoc/quickstart2.md deleted file mode 100644 index 3b5c4d35..00000000 --- a/srcDoc/quickstart2.md +++ /dev/null @@ -1,265 +0,0 @@ -# Quick Start (OLD) - -!!! note "this is soooooo old" - - Will be dramatically thinned out shortly... - -## Extracting the code from a tar file - -Create a new and empty directory, and open the tar file you received, -e.g.: - - mkdir Gitm - cd Gitm - mv ../gitm.tgz . - tar -xvzf gitm.tgz - -## Checking out the code with CVS {#cvs.sec} - -If CVS (Concurrent Versions System) is available on your computer and -you have an account on the CVS server machine herot.engin.umich.edu, you -can use CVS to install the current or a particular version of the code. -First of all have the following environment variables: - - setenv CVSROOT UserName@herot.engin.umich.edu:/CVS/FRAMEWORK - setenv CVS_RSH ssh - -where UserName is your user name on herot. Here it is assumed that you -use csh or tcsh. Also put these settings into your .cshrc file so it is -automatically executed at login. Alternatively, use - - CVSROOT=UserName@herot.engin.umich.edu:/CVS/FRAMEWORK - export CVSROOT - CVS_RSH=ssh - export CVS_RSH - -under sh, ksh and bash shells, and also put these commands into your -.bashrc or .profile file so it is automatically executed at login. - -Once the CVS environment variables are set, you can download the current -(HEAD) version of the GITM distribution with - - cvs checkout GITM2 - -If you want a particular version, use - - cvs checkout -r v2_0 GITM2 - -where v2_0 is the it tag associated with the version. To download bug -fixes or new features, the - - cvs update - -command can be used. See `man cvs` for more information. - -A lot of times, you don't really want the `GITM2` directory to stay that -name, since you might download a couple different version (maybe one for -development and one for runs). Therefore, typically you will: - - mv GITM2 GITM2.Development - -## Configuring and Making GITM - -In order to compile GITM, you have to configure it first. The configure -script is inherited from the Space Weather Modeling Framework. There are -two primary reasons you need to do the configure: (1) put the right -`Makefile` in the right place, specifying the compiler and the version -of MPI that you will use to link the code; (2) put the right MPI header -in the right place. It also does some things like hard-codes the path of -the source code into the `Makefile`. Currently the configure script is -not capable of detecting the system and compilers available. Some -examples for commonly used set-ups are shown below. Make sure that your -.cshrc or .bashrc file is set up to detect the appropriate compilers -before attempting to install GITM. - -Installing on Nyx: - - ./Config.pl -install -compiler=ifortmpif90 -earth - -Installing with an Intel compiler and OpenMPI (such as Pleiades): - - ./Config.pl -install -compiler=ifort -earth - -Installing a computer with gfortran and OpenMPI: - - ./Config.pl -install -compiler=gfortran -earth - -Installing on a computer with gfortran and not using MPI: - - ./Config.pl -install -compiler=gfortran -earth -nompi - -Sometimes people have a hard time with the ModUtilities.F90 file. If you -have errors with this file, try (for example): - - ./Config.pl -uninstall - ./Config.pl -install -compiler=gfortran -earth -noflush - -Don't forget, after configuring the Makefiles, you must still compile -the code! - - make - make test_earth - make install - -## Running the Code - -GITM requires a bunch of files to be in the right place in order to run. -Therefore, it is best to use the makefile to create a run directory: - - make rundir - mv run myrun - -where `myrun` can be whatever you want. I will use ` myrun` as an -example. You can actually put this directory where ever you want. On -many systems (such as nyx), there is a `nobackup` scratch disk that you -are supposed to use for runs, instead of your home directory. If you -need to ensure that your home directory doesn't use too much space, -moving the run directory onto a disk with more free space can solve the -problem: - - make rundir - mv run /nobackup/myaccount/gitm/myrun - ln -s /nobackup/myaccount/gitm/myrun . - -This creates a shortcut to the `myrun` directory location on `nobackup` -in your GITM working directory. It allows you to treat the run directory -as if it were a local directory, but it isn't! It also means that you -don't have to compile and install GITM on the scratch disk, where -program storage may not be allowed. - -Once you have created the run directory, you can run the default -simulation, by: - - cd myrun - mpirun -np 4 GITM.exe - -Or, if your system uses Mpiexec: - - cd myrun - mpiexec ./GITM.exe - -This, hopefully should run GITM for Earth for 5 minutes. If it doesn't -work, then you might have mpi set up incorrectly. The default is to -allow you to run 4 blocks per processor, and the default ` UAM.in` file -is set up for 4 blocks, so you could try just running GITM without mpi, -just to see if it works at all: - - ./GITM.exe - -If that doesn't work, then it probably didn't compile correctly. -Hopefully, it just worked! - -## Post Processing {#post_process.sec} - -GITM, by default, produces one file per block per output. If you are -outputting often and you are running with many blocks, you can produce a -huge number of files. To post process all of these files, simply: - - cd UA - ./pGITM - -This merges all of the files for one time period, for one file type into -the same file. You can actually running this while the code is running, -since GITM doesn't use old files, unless you are using the APPENDFILE -option. As implied by the option's name, APPENDFILE opens an existing -file and appends the most recent data to it. This feature is typically -used only when running a satellite track though GITM. More information -on the APPENDFILE option is located in -Chapter [\[input.ch\]](#input.ch){reference-type="ref" -reference="input.ch"} -Section [\[def_out.sec\]](#def_out.sec){reference-type="ref" -reference="def_out.sec"}. - -If you are NOT using satellites and NOT using APPENDFILE, then you are -free and clear to use pGITM as often as you want during a run. To avoid -deleting a file that GITM is currently writing to, it is recommended -that pGITM be run as part of a script in which there is a five minute -pause between executions. - -Another useful script, when running GITM on another system, is given in -the block below. It occasionally executes an rsync between the computer -that you run GITM on and your home computer. This allows you to bring -over and evaluate the output files as they become available. To do this, -execute pGITM at a set cadence (60 seconds in the example) while GITM is -running and then rsync the remote and home directories (excluding all -unprocessed files). Finally, remove the processed and rsynced files to -prevent the remote directory from filling up. Be sure to replace -yourname@home.computer with your user and computer names! This is a very -simple, but very useful script. - - #!/bin/csh - rm -f stop - set LOC=$1 - - if (-f remoteloc) set LOC=`cat remoteloc` - - while (!(-f stop)) - rsync -vrae ssh log.* UAM.* imf* yourname@home.computer:$LOC - cd UA ; ./pGITM ; rsync --exclude '*.[bsh][0123ae][0123456789at]*' -vrae ssh d - ata yourname@home.computer:$LOC ; cd .. - sleep 60 - end - -## The Code Won't Compile!! - -I'm sorry. I tried to make this work on many different platforms, but -sometimes machines are very specific, and it just doesn't work out of -the box. Here are some ideas on how to quickly get this thing compiling. - -### Can't find the right Makefile.whatever - -If make does not work, then there is probably a problem with not finding -the FORTRAN 90 compiler. The platform and machine specific Makefiles are -in srcMake. If you type: - - uname - ls srcMake - -If you don't see a file named something like Makefile.uname (where uname -is the output of the uname command), then you will have to build a -proper general Makefile. - -You will need a little a little information about your computer, like -what the mpif90 compiler is called and where it is located. Take a look -at srcMake/Makefile.Linux, and try to figure out what all of the flags -are for your system. Then create a srcMake/Makefile.uname with the -correct information in it. - -### The compiler doesn't recognize flag -x - -You have an operating system that is recognized, but probably a -different compiler. In the srcMake/Makefile.uname file (where uname is -the output of the uname command), there is a line: - -OSFLAGS = -w -dusty - -You need to change this line to something more appropriate for your -compiler. Try deleting the flags and compile. If that doesn't work, you -will have to check the man pages of your compiler. - -### src/ModHwm.90 doesn't compile - -Certain versions of gfortran (4.6 and later) may give the following -error: - - src/ModHwm.f90:168.22: - - call HWMupdate(input,last,gfs,gfl,gfm,gvbar,gwbar,gbz,gbm,gzwght,glev,u - 1 - Error: Dummy argument 'ebz' of procedure 'hwmupdate' at (1) has an attribute - that requires an explicit interface for this procedure - - src/ModHwm.f90:168.22: - - call HWMupdate(input,last,gfs,gfl,gfm,gvbar,gwbar,gbz,gbm,gzwght,glev,u - 1 - Error: Dummy argument 'ebz' of procedure 'hwmupdate' at (1) has an attribute - that requires an explicit interface for this procedure - -This is caused by the inputs in HWM. The latest incarnations of gfortran -don't allow optional inputs that are not declared. More information -about this can be found at: - - http://cosmocoffee.info/viewtopic.php?p=5136 - -A solution to this problem is currently being sought. From 41ef716f1882bce72aedf9c2a07a98e0711425a0 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 4 Jun 2025 20:31:52 -0400 Subject: [PATCH 069/120] fix final broken links --- srcDoc/common_inputs.md | 2 +- srcDoc/quick_start.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/srcDoc/common_inputs.md b/srcDoc/common_inputs.md index b1185395..10cd5fda 100644 --- a/srcDoc/common_inputs.md +++ b/srcDoc/common_inputs.md @@ -1,7 +1,7 @@ # Common Inputs {#indices.sec} This only touches on the most frequently changed input options. For a full -reference of all available inputs, please see [All Inputs](all_inputs.md) +reference of all available inputs, please see [All Inputs](set_inputs.md) !!!note All of the auxiliary input (data) files can be kept in the same directory diff --git a/srcDoc/quick_start.md b/srcDoc/quick_start.md index 7de72775..21c27b54 100644 --- a/srcDoc/quick_start.md +++ b/srcDoc/quick_start.md @@ -173,4 +173,4 @@ Wait a moment... And if no errors are reported then congratulations! You have now run GITM! The next steps include exploring how to [postprocess](postprocessing.md) the -outputs, and modifying the [input files](inputs.md). +outputs, and modifying some [input files](common_inputs.md). From aedb838ad597c0aabd43c31958788ed72909418c Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 4 Jun 2025 20:41:13 -0400 Subject: [PATCH 070/120] doc: specify the table of contents. Site looks so much better now --- mkdocs.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/mkdocs.yml b/mkdocs.yml index 008a9760..25b3de91 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -25,3 +25,20 @@ markdown_extensions: format: !!python/name:mermaid2.fence_mermaid docs_dir: srcDoc + +nav: + - Home: index.md + - Quick Start: quick_start.md + - Inputs: + - Common Inputs: common_inputs.md + - Grid: grid.md + - All Inputs: set_inputs.md + - Outputs: + - Postprocessing: postprocessing.md + - Available Outputs: outputs.md + - Internals: + - Earth Chemistry: chemistry.md + - Development: + - GITM Developers: dev_team.md + - Markdown Reference: markdown_ref.md + - GITM Outline: outline.md \ No newline at end of file From 8663d0108b10c05a6155220e864b84b321d26850 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Fri, 6 Jun 2025 15:07:20 -0400 Subject: [PATCH 071/120] Update #todo list. organize dev stuff better --- mkdocs.yml | 7 +-- srcDoc/chemistry.md | 3 +- srcDoc/{ => devstuff}/dev_team.md | 0 srcDoc/devstuff/devhome.md | 45 ++++++++++++++++ srcDoc/devstuff/gitbasics.md | 4 ++ srcDoc/{ => devstuff}/markdown_ref.md | 4 +- srcDoc/{ => devstuff}/outline.md | 0 srcDoc/index.md | 77 --------------------------- 8 files changed, 56 insertions(+), 84 deletions(-) rename srcDoc/{ => devstuff}/dev_team.md (100%) create mode 100644 srcDoc/devstuff/devhome.md create mode 100644 srcDoc/devstuff/gitbasics.md rename srcDoc/{ => devstuff}/markdown_ref.md (98%) rename srcDoc/{ => devstuff}/outline.md (100%) diff --git a/mkdocs.yml b/mkdocs.yml index 25b3de91..27aaa9c3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -39,6 +39,7 @@ nav: - Internals: - Earth Chemistry: chemistry.md - Development: - - GITM Developers: dev_team.md - - Markdown Reference: markdown_ref.md - - GITM Outline: outline.md \ No newline at end of file + - Site Information: devstuff/devhome.md + - GITM Developers: devstuff/dev_team.md + - Markdown Reference: devstuff/markdown_ref.md + - GITM Outline: devstuff/outline.md diff --git a/srcDoc/chemistry.md b/srcDoc/chemistry.md index d9f43974..d79289e4 100644 --- a/srcDoc/chemistry.md +++ b/srcDoc/chemistry.md @@ -5,8 +5,7 @@ Chemical reactions in GITM for Earth Some things we may want #todo: - label each reaction; like half are currently labeled -- Add refs to each so we can link to them? will be a lot of work. chatgpt can - help +- Add refs to each so we can link to them? will be a lot of work. - make sure everything is actually ref'd and used - we can make an `Earth` folder, so this doesn't appear to be the only chemistry option. diff --git a/srcDoc/dev_team.md b/srcDoc/devstuff/dev_team.md similarity index 100% rename from srcDoc/dev_team.md rename to srcDoc/devstuff/dev_team.md diff --git a/srcDoc/devstuff/devhome.md b/srcDoc/devstuff/devhome.md new file mode 100644 index 00000000..6f2542e6 --- /dev/null +++ b/srcDoc/devstuff/devhome.md @@ -0,0 +1,45 @@ + +# Developers + +Here is some information which may be useful to developers. + +## Documentation Notes + +Some notes on the doc site: + +- See the [markdown style guide](markdown_ref.md) for info on what features are + available. +- The documentation is organized according to a table of contents listed in + `GITM/mkdocs.yml`. So, to add new pages or organize things differently, look + there. +- Within `mkdocs.yml`, paths are specified relative to `site_home` (cuttently + set to `srcDoc/`) +- `index.md` is the "home page". The rest should be self-explanatory enough. + +Writing docs can be tricky. Formatting is sometimes not what you would expect. +For example, we *need* four spaces to indent something, not just two. I tried +changing this & couldn't! + +You can use Python to locally host the doc site which will auto-update when any +files are changed. One command to configure, one to host. When first starting, +either create a vitrual/conda environment for the docs, or don't, and from the +root of the repo run: `pip install -r srcDoc/requirements.txt`. To actually host +the docs, run (from `GITM/`): + +```bash +mkdocs serve +``` + +And it should be auto-magic. open the link in your browser. + +## To Do list for documentation + +Feel free to add to this + +- [ ] Section on FAQ? +- [ ] More on internals: + - [ ] Electrodynamics section! + - [ ] Better info in common inputs? +- [ ] GitHub walkthrough in dev section +- [ ] some way to auto-update outline? +- [ ] more more more! diff --git a/srcDoc/devstuff/gitbasics.md b/srcDoc/devstuff/gitbasics.md new file mode 100644 index 00000000..116bca1c --- /dev/null +++ b/srcDoc/devstuff/gitbasics.md @@ -0,0 +1,4 @@ +# GitHub Basics + +This is being written because I couldn't find a single guide to point people to. + diff --git a/srcDoc/markdown_ref.md b/srcDoc/devstuff/markdown_ref.md similarity index 98% rename from srcDoc/markdown_ref.md rename to srcDoc/devstuff/markdown_ref.md index e074391c..e6d63d31 100644 --- a/srcDoc/markdown_ref.md +++ b/srcDoc/devstuff/markdown_ref.md @@ -218,7 +218,7 @@ equation. These are consistently numbered throughout the document. Insert images with `![caption text](relative/path/to/image)`. The caption will appear below the image, for example: -![hmf2 flowchart example figure](Figures/determining_hmF2_flowchart.png) +![hmf2 flowchart example figure](../Figures/determining_hmF2_flowchart.png) This figure was made with the code: @@ -244,7 +244,7 @@ More splendid documentation. To forgo a caption entirely (they aren't even that useful), just do not include it in the `![](../path/to/image)`. For example: -![](Figures/determining_hmF2_flowchart.png) +![](../Figures/determining_hmF2_flowchart.png) See? No caption! It is possibly to define a new style for figures, and to uniquely number them, but it is probably not worth doing. diff --git a/srcDoc/outline.md b/srcDoc/devstuff/outline.md similarity index 100% rename from srcDoc/outline.md rename to srcDoc/devstuff/outline.md diff --git a/srcDoc/index.md b/srcDoc/index.md index 5b38cc68..194ff6d8 100644 --- a/srcDoc/index.md +++ b/srcDoc/index.md @@ -9,80 +9,3 @@ Hi. Thanks for visiting this website. Here is some info on how to use GITM. Please see the [quick start](quick_start.md) page for more info on how to download, configure, and install GITM. - ---- - -## Notes for Developers - -Some notes on the doc site: - -- See the [markdown style guide](markdown_ref.md) for info on what features are - available. -- The documentation, presently, looks in `srcDoc/` for any markdown files and - adds them to this site alphabetically. This can be changed later, but filling - the docs out initially will be easier if pages are automatically added. But - that's why there is a page for the development team. -- `index.md` is the "home page". The rest should be self-explanatory - -Writing docs can be tricky. Formatting is sometimes not what you would expect. -For example, we *need* four spaces to indent something, not just two. I tried -changing this & couldn't! - -You can use Python to locally host the doc site which will auto-update when any -files are changed. One command to configure, one to host. When first starting, -either create a vitrual/conda environment for the docs, or don't, and from the -root of the repo run: `pip install -r srcDoc/requirements.txt`. To actually host -the docs, run: - -```bash -mkdocs serve -``` - -And it should be auto-magic. open the link in your browser. - -!!! warning - Make sure to run this from the root of the repository! Otherwise it won't - work! - -### To Do list for documentation - -Feel free to add to this - -- [x] Move over the existing latex manual pages - - [ ] Verify that info is correct, relevant, and necessary (ALB in progress) - - [ ] Organize that information (ALB in progress) - - [ ] Fix links from latex manual pages -- [ ] Keep filling out information! - - -### Draft outline for docs - -This is off the cuff & is open to feedback. Just change it to what you want. A -few sections here are repetitive and don't need to be. - -- welcome page - - Quick overview of what GITM is - - installation & config (super basic) -- Quick start - - more detailed config options - - how to actually run the code -- Grid - - cells vs blocks - - how to get to the resolution you want -- Inputs - common - - Important and/or frequently changed UAM options - - more details on files necessary for some options -- Inputs - all - - long page with all possible options that GITM can check -- Outputs - - each output type's variables? - - FAQ - - common issues: - - indices times are wrong - - running with a different compiler than compiled with? - - how do I configure for X system? (known good configs) - - where can I find example input files? (GITMCode/GITM_Input_files) - - where can I find example outputs (CCMC?) - - Can you add this feature? no. You can, or fill out a feature request. -- Electrodynamics -- Chemistry From 187b45e483908faaf673a42b9c76dc90af91cb59 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 16 Jun 2025 13:17:26 -0400 Subject: [PATCH 072/120] typos, add link to aether student page --- mkdocs.yml | 1 + srcDoc/common_inputs.md | 4 +++- srcDoc/devstuff/somelinks.md | 16 ++++++++++++++++ srcDoc/quick_start.md | 26 +++++++++++++------------- 4 files changed, 33 insertions(+), 14 deletions(-) create mode 100644 srcDoc/devstuff/somelinks.md diff --git a/mkdocs.yml b/mkdocs.yml index 27aaa9c3..d2f11eda 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -43,3 +43,4 @@ nav: - GITM Developers: devstuff/dev_team.md - Markdown Reference: devstuff/markdown_ref.md - GITM Outline: devstuff/outline.md + - Other Useful Links: devstuff/somelinks.md diff --git a/srcDoc/common_inputs.md b/srcDoc/common_inputs.md index 10cd5fda..e9846036 100644 --- a/srcDoc/common_inputs.md +++ b/srcDoc/common_inputs.md @@ -179,6 +179,8 @@ To use models such as FTA[^1] to drive the aurora, GUITM must be provided Auroral Electrojet (AE) indices. Normally this is from SuperMag, but any source may be used. +[^1]: Wu, C., Ridley, A. J., DeJong, A. D., & Paxton, L. J. (2021). FTA: A Feature Tracking Empirical Model Of Auroral Precipitation. Space Weather, 19, e2020SW002629. . + These files are normally of the format: File created by python code using SuperMAGGetIndices @@ -195,7 +197,7 @@ A python routine to download these files over a given date range can be found in `srcPython/supermag_download_ae.py`. -The correspoinding section in `UAM.in` is read as: +The corresponding section in `UAM.in` is read as: #SME_INDICES ae_file-name.dat ae file name diff --git a/srcDoc/devstuff/somelinks.md b/srcDoc/devstuff/somelinks.md new file mode 100644 index 00000000..176f9b12 --- /dev/null +++ b/srcDoc/devstuff/somelinks.md @@ -0,0 +1,16 @@ +# Useful Reference Links + +Here are links to some tutorials and other things that may be useful to students +or people new to GITM. + +## Aether Student Page + +Contains: + +- Editor information +- Package manager basics +- Unix commands (how to use a terminal) +- A git walkthrough + +[Link to the Aether Student Page](https://github.com/AetherModel/Aether/blob/main/doc/student.md) + diff --git a/srcDoc/quick_start.md b/srcDoc/quick_start.md index 21c27b54..1cba9fa5 100644 --- a/srcDoc/quick_start.md +++ b/srcDoc/quick_start.md @@ -13,7 +13,7 @@ correctly. At a minimum, you need: -- a fortran compiler (gfortran, ifort, ifx, etc.) +- a Fortran compiler (gfortran, ifort, ifx, etc.) - MPI (~~mpich~~, openmpi, mvapich, etc.) - GNU Make (`make`) @@ -32,7 +32,7 @@ turnaround for test runs will be much faster. ### Linux Install Dependencies On a Ubuntu-based linux distribution, the following commands will download GNU -Make, the GCC fortran compiler & Open-MPI: +Make, the GCC Fortran compiler & Open-MPI: ```bash sudo apt-get install gfortran libopenmpi-dev make @@ -57,7 +57,7 @@ brew install gfortran open-mpi And MacPorts users can run: ```bash -sudo port install gcc?? open-mpi +sudo port install gcc[??] open-mpi ``` > Make sure to specify a version number in place of `??` above! Use > `port search --name --glob 'gcc*'`, or `port search gfortran` to see @@ -77,9 +77,9 @@ experience with GITM on other systems: - `cray-mpich` Consult the documentation for each system to see which modules are available and -how to load them. The modules you use to compile GITM *may* be required to be +how to load them. The modules you use to compile GITM *may* also need to be loaded when running, so it may be wise to set these to your defaults, or at -least take note of what was used and load them in the job script. +least take note of what was used so they can be loaded in the job script. ## Getting the code @@ -108,15 +108,15 @@ anything! Simply `cd` back to `GITM/` and try again. ## Configuring & Compiling -This step ensures GITM compiles with the correct compilers, for the correct -planet, and a few other settings. To configure GITM for Earth using the -`gfortran` compiler, run: +This step configures the planet, compiler, and some paths GITM needs to +work properly. To configure GITM for Earth using the `gfortran` compiler, run: ```bash ./Config.pl -install -earth -compiler=gfortran ``` -!!! caution +!!! caution + Prior GITM versions required specifying `compiler=gfortran10` when using `gfortran>=10.0.0`, however this is no longer necessary. @@ -141,9 +141,9 @@ If this runs without error, GITM is ready to be run! ## Running the Code -When GITM is compiled, the executable is placed in `src/GITM.exe`. This is not -where we want to run it from, however. To create a directory with the GITM -executable and the necessary input files, run the command: +This will have created the executable `src/GITM.exe`. This is not where we want +to run it from, however. To create a directory where the GITM executable is run +from and organize some input files, run the command: ```bash make rundir @@ -173,4 +173,4 @@ Wait a moment... And if no errors are reported then congratulations! You have now run GITM! The next steps include exploring how to [postprocess](postprocessing.md) the -outputs, and modifying some [input files](common_inputs.md). +outputs, and modifying the [input files](common_inputs.md). From 033f7890c99479f7e7cd9d7fd5930e7caeb91254 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 16 Jun 2025 13:17:38 -0400 Subject: [PATCH 073/120] add electrodynamics section --- mkdocs.yml | 1 + srcDoc/electrodynamics.md | 183 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 184 insertions(+) create mode 100644 srcDoc/electrodynamics.md diff --git a/mkdocs.yml b/mkdocs.yml index d2f11eda..f46b48ef 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -38,6 +38,7 @@ nav: - Available Outputs: outputs.md - Internals: - Earth Chemistry: chemistry.md + - Electrodynamics: electrodynamics.md - Development: - Site Information: devstuff/devhome.md - GITM Developers: devstuff/dev_team.md diff --git a/srcDoc/electrodynamics.md b/srcDoc/electrodynamics.md new file mode 100644 index 00000000..fff0fd1d --- /dev/null +++ b/srcDoc/electrodynamics.md @@ -0,0 +1,183 @@ +# Electrodynamics + +GITM uses [an external library](https://github.com/gitmcode/electrodynamics.git) +for high-latitude electrodynamics. This library is automatically cloned into +`ext/Electrodynamics` when running `Config.pl`, though an update is not +attempted. + +GITM has the ability to use external auroral and/or potential models. These are +specified independently so one could, for instance, use AMIE (file-based) aurora +and Weimer potentials. + +## Specifying Electrodynamics Drivers + +The Electrodynamics models are chosen in the `#ELECTRODYNAMICS` section of +`UAM.in`. By default the values are set to: + +``` +#ELECTRODYNAMICS +zero AuroralModel +60.0 DtAurora +zero PotentialModel +60.0 DtPotential +``` + +This will cause warnings to be printed if running on Earth, as we often wish to +provide high-latitude electrodynamics drivers when modeling the Earth. However, +the run will complete. + +If, for example, one wishes to perform a scientific run using a commonsense +configuration, the recommended settings are: + +``` +#ELECTRODYNAMICS +fta AuroralModel +60.0 DtAurora +weimer05 PotentialModel +60.0 DtPotential +``` + +This will use FTA[^1] and Weimer05[^2] for the auroral and potential models, +respectively. + +[^1]: Wu, C., Ridley, A. J., DeJong, A. D., & Paxton, L. J. (2021). FTA: A Feature Tracking Empirical Model Of Auroral Precipitation. Space Weather, 19, e2020SW002629. . + +[^2]: Weimer, D. R. (2005), Improved ionospheric electrodynamic models and application to calculating Joule heating rates, J. Geophys. Res., 110, A05306, . + + +The aurora and electric field model names are parsed in +[`Electrodynamics/src/interpret_names.f90`](https://github.com/GITMCode/Electrodynamics/blob/main/src/interpret_names.f90). +See this file for the most up-to-date list of available modules and the acceptable names. + +## Aurora + +The following Auroral models are available: + +- FTA +- FRE +- PEM +- OVATION +- AMIE + +From the auroral module, GITM expects to receive Average Energy and Energy Flux, +for all of the selected auroral types. At the moment these all must be from the +same module, so one cannot use FTA for diffuse electron precipitation and AMIE +for monoenergetic electron precipitation. + +Auroral types are specified in the `#AURORATYPES` section of `UAM.in`, and only +electron diffuse aurora are included by default: + +``` +#AURORATYPES +T UseDiffuseAurora (logical) +F UseMonoAurora (logical) +F UseWaveAurora (logical) +F UseIonAurora (logical) +``` + +Internally, GITM represents Monoenergetic and Wave/broadband aurora with a +gaussian centered at the average energy. The diffuse aurora can be represnted by +either a Maxwellian or Kappa distribution using the `#AURORAMODS` section of +`UAM.in`: + +``` +#AURORAMODS +F NormalizeAuroraToHP (logical) +1.0 AveEFactor (real) +F IsKappaAurora (logical) +1.0 AuroraKappa (real) +F AllowAurWODiffuse (logical) +50.0 MaxAveEAurora (real) +``` + +`NormalizeAuroraToHP` is only recommended to be used in conjunction with FRE, +and the other Aurora mods are recommended to be used only with Diffuse Aurora. +`AllowAurWODiffuse` was assed for stability with OVATION-Prime; it restricts +mono/wave/ion aurora to only exist in locations which also contain electron +diffuse aurora. + +## Potentials + +The following electric field models can be used: + +- Weimer05 +- Millstone-Hill +- Heppner Maynard +- AMIE + +## Required Input Files + +Each electrodynamics module has different inputs. At initialization, a +verification check will be performed where GITM ensures that all the required +input data are present and that the data file covers the entire simulation time +range. If an input file ends before the requested stop time for a run, errors +will be raised. + +The check for valid data is located within +[`Electrodynamics/src/indices_subroutines.f90`](https://github.com/GITMCode/Electrodynamics/blob/main/src/indices_subroutines.f90). +Some required input file-types are listed below: + + +| Model | IMF | AE | HP | Kp | +| :--- | :---: | :---: | :---: | :---: | +| Weimer | Yes | No | No | No | +| FRE | Yes | No | Yes | No | +| HepMay | Yes | No | No | Yes | +| FTA | No | Yes | No | No | +| PEM | No | No | Yes | No | +| Ovation | Yes | No | No | Yes | + +HP can be derived from AE, and is not necessarily required to be in a standalone +file. See [here](common_inputs.md#sme-indices) for more details. + +## File-based Electrodynamics + +AMIE (Assimilative Mapping of Ionospheric Electrodynamics) is the name chosen +for the type of files which can be interpreted by Electrodynamics. A number of +[Python routines](https://github.com/GITMCode/Electrodynamics/tree/main/srcPython) +can be found in Electrodynamics which may be useful when generating these inputs. + +AMIE files can be used, for instance, to input custom auroral patterns into +GITM. Once could generate an AMIE file with nominal diffuse electron aurora and +several intense monoenergetic beams at any number of locations. + +## Running Electrodynamics Only + +By using the [`#STATISTICALMODELSONLY`](set_inputs.md#statisticalmodelsonly) +option in `UAM.in`, it is possible to run any configuration of Electrodynamics +models without GITM's physics, making the runs faster. + +By setting the desired output type to [`2DGEL`](outputs.md#2dgel), and an +appropriate Dt for `#STATISTICALMODELSONLY` and `#OUTPUT`, GITM will read in the +necessary input files and output precipitation & potential patterns using the +specified electrodynamics modules. An example of this is located in +`srcTests/auto_test/UAM.in.04.ElectrodynamicsGeoCoords.test`. + +Additionally, one can output data on a magnetic grid instead of geographic, +which is often desired when plotting outputs from the electrodynamics modules. +To do this, one must manually control the magnetic field configuration through +the use of `#APEX` and `#DIPOLE` in `UAM.in`. + +By setting `#APEX` to F, GITM will use a tilted, offset dipole for the magnetic +field. The tilt and offset are normally set automatically, however with the use +of the `#DIPOLE` option, it is possible to force zero offset and tilt, +effectively aligning the geographic and magnetic poles. The output files will +then be in magnetic coordinates, on a magnetic grid, rather than geographic. + +A complete example file for this can be found in +`srcTests/auto_test/UAM.in.05.ElectrodynamicsMagCoords.test`, where the +following sections are what differs this test from the previous: + +``` +#APEX +F Apex is turned off (so a dipole is used) + +#DIPOLE +0.0 Magnetic Pole rotation +0.0 Magnetic pole tilt +0.0 x Dipole Center +0.0 y Dipole Center +0.0 z Dipole Center + +``` + From a015671603dc8990b83edc58af079cf8e9dc9975 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 17 Jun 2025 09:30:37 -0400 Subject: [PATCH 074/120] doc: update readme: links to new docs, some formatting, outdated info --- README.md | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index d45763c6..b320f133 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,14 @@ This is the home of the Global Ionosphere/Thermosphere Model (GITM). GITM has been developed in fortran-90. It has been tested with gfortran on Linux and MacOS as well as ifort on NASA's Pleiades computer. -The latest version of the documentation can be accessed at: +The latest version of the PDF documentation can be accessed at: [![Build Documentation](https://github.com/GITMCode/GITM/actions/workflows/build-docs.yml/badge.svg)](https://github.com/GITMCode/GITM/actions/workflows/build-docs.yml) +For a more complete documentation, see [GITM's Read the Docs Page](https://gitm.readthedocs.io). + +--- +
    GITM's default branch recently changed names. To access the latest features, please update your local refs. @@ -29,38 +33,38 @@ git remote prune origin
    -## Dependencies - -1. GITM needs MPI to work. - ## Quick Start +> GITM needs MPI to work properly. This can be installed with your system's package manager, or loaded as a `module` on an HPC system. +> See [the installation guide](https://gitm.readthedocs.io/en/latest/quick_start/#requirements) for more information. + 1\. Clone the repository and cd into the repo folder ```shell -git clone https://github.com/GITMCode/GITM +git clone git@github.com:GITMCode/GITM.git ``` +Substitute the URL with the https link from the "Code" button above if you do not have SSH keys set up. + 2\. Go into the repo directory ```shell cd GITM ``` -3\. Configure the Fortran compiler (version 10) +3\. Configure the Fortran compiler and download external electrodynamics library +(gfortran versions 10+) ```shell ./Config.pl -install -earth -compiler=gfortran10 ``` The biggest issue with the above command is that it assumes that you -have the gfortran (version 10) compiler and things like mpif90 work +have the gfortran (version 10+) compiler and things like mpif90 work ok. If you don't have gfortran and mpif90, then you need to get these things for your computer. If you have version 9 or before for gfortran, you can do: -3b\. Configure the Fortran compiler (version 9 or below) - ```shell ./Config.pl -install -earth -compiler=gfortran ``` @@ -69,17 +73,15 @@ In theory, Mars, Venus, Titan, and LV-426 should work. These are in various states of completion, so I wouldn't count on them being perfect. -If running on Pleiades (as of March 3, 2022), you need to have these +If running on Pleiades, you need to have these in your start-up script (.cshrc, .bashrc, etc): ``` -module load comp-intel/2016.2.181 -module load mpi-hpe/mpt +module load comp-intel +module load mpi-hpe ``` -And you can use 3c below to configure the code. - -3c\. Configure for Pleiades +And you can use the below line below to configure the code: ```shell ./Config.pl -install -earth -compiler=ifort @@ -127,7 +129,7 @@ lon. See below for how to set the resolution. > see available options. > The legacy postprocessors are still available, but are not built by default. To build -> PostProcess.exe, run `make POST` and the csh script can be found at `src/pGITM`. +> PostProcess.exe, run `make POST`. The csh script can be found at `src/pGITM`. 9\. Go into the output directory: @@ -200,7 +202,9 @@ team. For example: NCAR. The IGRF code that comes with it is also not developed at UM. 2. Many electrodynamics models (Weimer, Newell's Ovation Prime, -Mitchell's Ovation SME, others in the util/EMPIRICAL/srcIE directory). +Mitchell's Ovation SME, others in the +[GITMCode/Electrodynamics](https://github.com/GITMCode/Electrodynamics) +repository). 3. MSIS and IRI, which are in util/EMPIRICAL/srcUA. MSIS is used as a lower BC at Earth and was developed at NRL. IRI is used to initialize @@ -228,3 +232,7 @@ processors, you can change the parameters in `src/ModSize.f90` and adjust the number of cells in each block to compensate. For example, you have 8 processors, so you can adjust `src/ModSize.f90` to have 18 cells in lat and lon, then ask for 2 (lat) x 4 (lon) blocks to get 5 deg x 5 deg resolution. + +See the +[grid page](https://gitm.readthedocs.io/en/latest/grid/#horizontal-resolution) +in the documentation for more details and some examples. From 91762c2e5c2ac2a39cf181562bb471bd256d0dd8 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 17 Jun 2025 09:48:53 -0400 Subject: [PATCH 075/120] doc: move & rename some pages --- mkdocs.yml | 9 ++-- srcDoc/index.md | 2 +- srcDoc/{quick_start.md => install.md} | 2 +- srcDoc/{ => internals}/chemistry.md | 0 srcDoc/{ => internals}/electrodynamics.md | 6 +-- srcDoc/{ => internals}/grid.md | 0 srcDoc/internals/overview.md | 66 +++++++++++++++++++++++ 7 files changed, 76 insertions(+), 9 deletions(-) rename srcDoc/{quick_start.md => install.md} (99%) rename srcDoc/{ => internals}/chemistry.md (100%) rename srcDoc/{ => internals}/electrodynamics.md (96%) rename srcDoc/{ => internals}/grid.md (100%) create mode 100644 srcDoc/internals/overview.md diff --git a/mkdocs.yml b/mkdocs.yml index f46b48ef..372a054b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -28,17 +28,18 @@ docs_dir: srcDoc nav: - Home: index.md - - Quick Start: quick_start.md + - Getting Started: install.md - Inputs: - Common Inputs: common_inputs.md - - Grid: grid.md - All Inputs: set_inputs.md - Outputs: - Postprocessing: postprocessing.md - Available Outputs: outputs.md - Internals: - - Earth Chemistry: chemistry.md - - Electrodynamics: electrodynamics.md + - Overview: internals/overview.md + - Grid: internals/grid.md + - Earth Chemistry: internals/chemistry.md + - Electrodynamics: internals/electrodynamics.md - Development: - Site Information: devstuff/devhome.md - GITM Developers: devstuff/dev_team.md diff --git a/srcDoc/index.md b/srcDoc/index.md index 194ff6d8..6bccda17 100644 --- a/srcDoc/index.md +++ b/srcDoc/index.md @@ -6,6 +6,6 @@ Global Ionosphere Thermosphere Model Hi. Thanks for visiting this website. Here is some info on how to use GITM. -Please see the [quick start](quick_start.md) page for more info on how to +Please see the [quick start](install.md) page for more info on how to download, configure, and install GITM. diff --git a/srcDoc/quick_start.md b/srcDoc/install.md similarity index 99% rename from srcDoc/quick_start.md rename to srcDoc/install.md index 1cba9fa5..07be4886 100644 --- a/srcDoc/quick_start.md +++ b/srcDoc/install.md @@ -1,4 +1,4 @@ -# Quick Start +# Installation If a fortran compiler & MPI are already installed on your system, you may wish to skip down to [Getting the Code](#getting-the-code). diff --git a/srcDoc/chemistry.md b/srcDoc/internals/chemistry.md similarity index 100% rename from srcDoc/chemistry.md rename to srcDoc/internals/chemistry.md diff --git a/srcDoc/electrodynamics.md b/srcDoc/internals/electrodynamics.md similarity index 96% rename from srcDoc/electrodynamics.md rename to srcDoc/internals/electrodynamics.md index fff0fd1d..5e9a5143 100644 --- a/srcDoc/electrodynamics.md +++ b/srcDoc/internals/electrodynamics.md @@ -128,7 +128,7 @@ Some required input file-types are listed below: | Ovation | Yes | No | No | Yes | HP can be derived from AE, and is not necessarily required to be in a standalone -file. See [here](common_inputs.md#sme-indices) for more details. +file. See [here](../common_inputs.md#sme-indices) for more details. ## File-based Electrodynamics @@ -143,11 +143,11 @@ several intense monoenergetic beams at any number of locations. ## Running Electrodynamics Only -By using the [`#STATISTICALMODELSONLY`](set_inputs.md#statisticalmodelsonly) +By using the [`#STATISTICALMODELSONLY`](../set_inputs.md#statisticalmodelsonly) option in `UAM.in`, it is possible to run any configuration of Electrodynamics models without GITM's physics, making the runs faster. -By setting the desired output type to [`2DGEL`](outputs.md#2dgel), and an +By setting the desired output type to [`2DGEL`](../outputs.md#2dgel), and an appropriate Dt for `#STATISTICALMODELSONLY` and `#OUTPUT`, GITM will read in the necessary input files and output precipitation & potential patterns using the specified electrodynamics modules. An example of this is located in diff --git a/srcDoc/grid.md b/srcDoc/internals/grid.md similarity index 100% rename from srcDoc/grid.md rename to srcDoc/internals/grid.md diff --git a/srcDoc/internals/overview.md b/srcDoc/internals/overview.md new file mode 100644 index 00000000..86857e02 --- /dev/null +++ b/srcDoc/internals/overview.md @@ -0,0 +1,66 @@ +# Overview + +The Global Ionosphere Thermosphere Model (GITM) is a 3D model of the +upper atmosphere. It runs for Earth, Mars and Titan. A version is being +worked on for Jupiter. GITM solves for the coupled continuity, momentum +and energy equations of the neutrals and ions. For the ions, the time +rate of change of the velocity is ignored, so the steady-state ion flow +velocity is solved for. The ion temperature is a mixture of the electron +and neutral temperature. + +The neutrals are solved for using the Navier Stokes Equations. The +continuity equation is solved for for each major species. One of the +problems with GITM that needs to be rectified is that there are no real +tracer species, so a species is either solved for completely or is not +at all. These species can still be included in the chemistry +calculation. There is only one horizontal velocity that is computed, +while there are vertical velocities for each of the major species. A +bulk vertical velocity is calculated as a mass weighted average. The +temperature is a bulk temperature. + +## Source Terms + +Chemistry is the only real source term for the continuity equation. +Typically, diffusion is added in the continuity equation to allow for +eddy diffusion, but this is not the case in GITM. What happens is that +the vertical velocities are solved for, then a friction term is applied +to that the velocities stay very close together in the eddy diffusion +part of the code. This way, the velocities can't differ too much from +each other. Diffusion is not needed, then. + +For the horizontal momentum equation, there are the following sources: +(1) ion drag; (2) viscosity; and (3) gravity wave acceleration. For the +vertical velocity, the source terms are ion drag and friction between +the different neutral species. + +For the neutral temperature, the following source terms are included: +(1) radiative cooling; (2) EUV heating; (3) auroral heating; (4) Joule +heating; (5) conduction; and (6) chemical heating. The biggest pain for +the temperature equation is the use of a normalized temperature. This +means that the `temperature` variable in GITM does not contain the +actual temperature, it contains the temperature multiplies by +Boltzmann's Constant divided by the mean mass. This turns out to be a +factor that is very similar to the specific heat, or roughly or order +1000. In order to get the actual temperature, the variable has to be +multiplied by `temp_unit`. + +## Ghost Cells + +GITM is a parallel code. It uses a 2D domain decomposition, with the +altitude domain being the only thing that is not broken up. Blocks of +latitude and longitude are used. These blocks are then distributed among +different processors. In order to communicate between the processors, +ghostcells are used. These are cells that essentially overlap with the +neighboring block. MPI (message passing interface) is then used to move +information from one block to another, filling in the ghostcells. The +code then loops from 1-N, where the flux is calculated at the boundaries +from the 0-1 boundary to the N-N+1 boundary. A second order scheme is +used to calculate the fluxes, along with a flux limiter. Therefore, two +ghost cells are needed. + +In the vertical direction, ghost cells are also used to set boundary +conditions. The values in these cells are used to calculate the fluxes, +just as described above. Different types of boundary conditions +(constant values, constant fluxes, constant gradients, floating, zero +fluxes, etc) can be set by carefully choosing the right values in the +ghost cells. From a1c70aa3d372b7ea52af3526e8a779146e98a641 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 17 Jun 2025 09:55:25 -0400 Subject: [PATCH 076/120] MAINT: Remove latex docs! --- ...ormat-Doc-Test.yml => Format-and-Test.yml} | 21 - .github/workflows/build-docs.yml | 29 - README.md | 6 +- srcDoc/chemistry_earth.pdf | Bin 52675 -> 0 bytes srcDoc/chemistry_earth.tex | 524 ----------- srcDoc/devstuff/gitbasics.md | 4 - srcDoc/grid.tex | 109 --- srcDoc/manual.pdf | Bin 1420494 -> 0 bytes srcDoc/manual.tex | 87 -- srcDoc/more_inputs.tex | 209 ----- srcDoc/outline.tex | 380 -------- srcDoc/outputs.tex | 619 ------------ srcDoc/quickstart.tex | 247 ----- srcDoc/set_inputs.tex | 878 ------------------ 14 files changed, 1 insertion(+), 3112 deletions(-) rename .github/workflows/{Format-Doc-Test.yml => Format-and-Test.yml} (72%) delete mode 100644 .github/workflows/build-docs.yml delete mode 100644 srcDoc/chemistry_earth.pdf delete mode 100644 srcDoc/chemistry_earth.tex delete mode 100644 srcDoc/devstuff/gitbasics.md delete mode 100644 srcDoc/grid.tex delete mode 100644 srcDoc/manual.pdf delete mode 100644 srcDoc/manual.tex delete mode 100644 srcDoc/more_inputs.tex delete mode 100644 srcDoc/outline.tex delete mode 100644 srcDoc/outputs.tex delete mode 100644 srcDoc/quickstart.tex delete mode 100644 srcDoc/set_inputs.tex diff --git a/.github/workflows/Format-Doc-Test.yml b/.github/workflows/Format-and-Test.yml similarity index 72% rename from .github/workflows/Format-Doc-Test.yml rename to .github/workflows/Format-and-Test.yml index dd6938bb..92758882 100644 --- a/.github/workflows/Format-Doc-Test.yml +++ b/.github/workflows/Format-and-Test.yml @@ -48,27 +48,6 @@ jobs: cd GITM python srcPython/format_GITM.py -l -s -v ${ALL_CHANGED_FILES} - Documentation: - runs-on: ubuntu-latest - name: Build Documentation - needs: [Format] - steps: - - name: Clone GITM repository - uses: actions/checkout@v4 - - name: Compile LaTeX document - uses: xu-cheng/latex-action@v3 - with: - root_file: manual.tex - working_directory: srcDoc - - name: Rename GITM Manual - run: mv srcDoc/manual.pdf GITM_manual.pdf - - name: Upload PDF file - uses: actions/upload-artifact@v4 - with: - name: PDF - path: GITM_manual.pdf - retention-days: 31 - Tests: runs-on: ubuntu-latest name: Run Automatic Tests diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml deleted file mode 100644 index 4cb9ef5b..00000000 --- a/.github/workflows/build-docs.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Build Documentation - -on: - schedule: - # 0 minute, 0 hour, 1st day, every month, any day of week - - cron: '0 0 1 * *' - push: - branches: - main - -jobs: - build_documentation: - runs-on: ubuntu-latest - steps: - - name: Clone GITM repository - uses: actions/checkout@v4 - - name: Compile LaTeX document - uses: xu-cheng/latex-action@v3 - with: - root_file: manual.tex - working_directory: srcDoc - - name: Rename GITM Manual - run: mv srcDoc/manual.pdf GITM_manual.pdf - - name: Upload PDF file - uses: actions/upload-artifact@v4 - with: - name: PDF - path: GITM_manual.pdf - retention-days: 31 diff --git a/README.md b/README.md index b320f133..3dc89eaf 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,7 @@ This is the home of the Global Ionosphere/Thermosphere Model (GITM). GITM has been developed in fortran-90. It has been tested with gfortran on Linux and MacOS as well as ifort on NASA's Pleiades computer. -The latest version of the PDF documentation can be accessed at: - -[![Build Documentation](https://github.com/GITMCode/GITM/actions/workflows/build-docs.yml/badge.svg)](https://github.com/GITMCode/GITM/actions/workflows/build-docs.yml) - -For a more complete documentation, see [GITM's Read the Docs Page](https://gitm.readthedocs.io). +For the complete documentation, see [GITM's Read the Docs Page](https://gitm.readthedocs.io). --- diff --git a/srcDoc/chemistry_earth.pdf b/srcDoc/chemistry_earth.pdf deleted file mode 100644 index c9e16479028169c72c01dfc6c93fde1be35d2b90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52675 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 1700) -\end{split} -\end{equation} -If $T_{eff} < 350$, then $T_{eff} = 350$. -If $T_{eff} > 6000$, then $T_{eff} = 6000$. - -\begin{equation} -\begin{split} -O^+(^4S) + O_2 \rightarrow & O_2^+ + O + 1.55 eV\\ -R = & 2.820\times 10^{-17} - \\ - & 7.740\times 10^{-18} \bigg(\frac{T_{eff}}{300}\bigg) + \\ - & 1.073\times 10^{-18} \bigg(\frac{T_{eff}}{300}\bigg)^2 - \\ - & 5.170\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^3 + \\ - & 9.650\times 10^{-22} \bigg(\frac{T_{eff}}{300}\bigg)^4\\ -T_{eff} = & T_i + \frac{M_O}{M_O + M_{O_2}}\times\frac{M_{O_2} - M_b}{3k_b}V_i^2 -\end{split} -\end{equation} -If $T_{eff} < 350$, then $T_{eff} = 350$. -If $T_{eff} > 6000$, then $T_{eff} = 6000$. - -\begin{equation} -\begin{split} -O^+(^4S) + NO \rightarrow & NO^+ + O + 4.36 eV\\ -R = & 8.36\times 10^{-19} - \\ - & 2.02\times 10^{-19} \bigg(\frac{T_{eff}}{300}\bigg) + \\ - & 6.95\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^2 (T_{eff} < 1500)\\ -R = & 5.33\times 10^{-19} - \\ - & 1.64\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg) + \\ - & 4.72\times 10^{-20} \bigg(\frac{T_{eff}}{300}\bigg)^2 \\ - & 7.05\times 10^{-22} \bigg(\frac{T_{eff}}{300}\bigg)^3 (T_{eff} > 1500) \\ -T_{eff} = & T_i + \frac{M_O}{M_O + M_{NO}}\times\frac{M_{NO} - M_b}{3k_b}V_i^2 -\end{split} -\end{equation} -If $T_{eff} < 350$, then $T_{eff} = 350$. -If $T_{eff} > 6000$, then $T_{eff} = 6000$. - -\begin{equation} -\begin{split} -O^+(^4S) + N(^2D) \rightarrow & N^+ + O + 1.45 eV\\ -R = & 1.3 \times 10^{-16} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -O^+(^2P) +e^- \rightarrow & O^+(^2D) + e^- + 1.69 eV\\ -R = & 1.3 \times 10^{-13} \bigg(\frac{T_e}{300}\bigg)^{-0.5} % te3m05 -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -O^+(^2P) \rightarrow & O^+(^2D) + 732nm\\ -R = & 0.171 -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -O^+(^2D) \rightarrow & O^+(^4S) + 372.6nm\\ -R = & 7.7\times 10^{-5} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -O^+(^2P) + N_2 \rightarrow & N^+ + NO + 0.70 eV\\ -R = & 1.0 \times 10^{-16} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -O^+_2 + N(^2D) \rightarrow & N^+ + O_2 \\ -R = & 2.5 \times 10^{-16} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -O^+(^2P) + N \rightarrow & N^+ + O + 2.7 eV \\ -R = & 1.0 \times 10^{-16} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -O^+(^2D) + N \rightarrow & N^+ + O + 1.0 eV \\ -R = & 7.5 \times 10^{-17} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -N^+ + O_2 \rightarrow & NO^+ + O(^1D) + 6.67 eV \\ -R = & 2.6 \times 10^{-16} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -N^+ + O \rightarrow & O^+(^4S) + N + 0.93 eV \\ -R = & 5.0 \times 10^{-19} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -NO^+ + e^- \rightarrow & O + N(^2D) + 0.38 eV \\ -R = & 4.0 \times 10^{-13} \bigg(\frac{T_e}{300}\bigg)^{-0.5} % te3m05 -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -N(^2D) + e^- \rightarrow & N(^4S) + e^- + 2.38 eV\\ -R = & 5.5 \times 10^{-16} \bigg(\frac{T_e}{300}\bigg)^{-0.5} % te3m05 -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -N(^2D) + O \rightarrow & N(^4S) + O(^3P) + 2.38 eV (90\%)\\ -N(^2D) + O \rightarrow & N(^4S) + O(^1D) + 0.42 eV (10\%)\\ -R = & 2.0 \times 10^{-18} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -N(^2D) \rightarrow & N(^4S) + 520nm \\ -R = & 1.06 \times 10^{-5} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -NO \rightarrow & N(^4S) + O \\ -R = & 4.5 \times 10^{-6} e^{(-1\times 10^{-8}([O_2]\times 10^{-6})^{0.38})} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -N(^4S) + O_2 \rightarrow & NO + O + 1.385 eV \\ -R = & 4.4 \times 10^{-18} e^{-\frac{3220}{T_n}} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -N(^4S) + NO \rightarrow & N_2 + O + 3.25 eV\\ -R = & 1.5 \times 10^{-18} \sqrt{T_n} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -N(^2P) \rightarrow & N(^2D) + 1040nm\\ -R = & 7.9 \times 10^{-2} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -N(^2D) + O_2 \rightarrow & NO + O(^3P) + 3.76 eV (90\%)\\ -N(^2D) + O_2 \rightarrow & NO + O(^1D) + 1.80 eV (10\%)\\ -R = & 6.2 \times 10^{-18} \frac{T_n}{300} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -N(^2D) + NO \rightarrow & N_2 + O + 5.63 eV\\ -R = & 7.0 \times 10^{-17} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -O(^1D) \rightarrow & O(^3P) + 630nm\\ -R = & 0.0071 -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -O(^1D) \rightarrow & O(^3P) + 636.4nm\\ -R = & 0.0022 -\end{split} -\end{equation} -I don't understand this... - - -\begin{equation} -\begin{split} -O(^1D) + e^- \rightarrow & O(^3P) + e^- + 1.96 eV\\ -R = & 2.6 \times 10^{-17} T_e^(0.5)e^(-22740/T_e) -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -O(^1D) + N_2 \rightarrow & O(^3P) + N_2 + 1.96 eV\\ -R = & 2.3 \times 10^{-17} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -O(^1D) + O_2 \rightarrow & O(^3P) + O_2 + 1.96 eV\\ -R = & 2.9 \times 10^{-17} e^{\frac{67.5}{T_n}} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -O(^1D) + O(^3P) \rightarrow & 2O(^3P) + 1.96 eV\\ -R = & 8.0 \times 10^{-18} -\end{split} -\end{equation} - -\begin{equation} -\begin{split} -NO \rightarrow & NO^+ + e^-\\ -R = & 5.88 \times 10^{-7}(1+0.2(F10.7-65)/100)e^F\cos(SZA)\\ -F = & (\frac{[O_2]}{1\times 10^{6}})^{0.8855} -\end{split} -\end{equation} - - -%Bibliography -\clearpage -\addcontentsline{toc}{chapter}{Bibliography} -\bibliographystyle{chicagoa} -\bibliography{gitm} - -\end{document} diff --git a/srcDoc/devstuff/gitbasics.md b/srcDoc/devstuff/gitbasics.md deleted file mode 100644 index 116bca1c..00000000 --- a/srcDoc/devstuff/gitbasics.md +++ /dev/null @@ -1,4 +0,0 @@ -# GitHub Basics - -This is being written because I couldn't find a single guide to point people to. - diff --git a/srcDoc/grid.tex b/srcDoc/grid.tex deleted file mode 100644 index 7e6f0563..00000000 --- a/srcDoc/grid.tex +++ /dev/null @@ -1,109 +0,0 @@ -\section{Setting the Grid} -\label{grid.sec} - -Setting the grid resolution in GITM is not very complicated, but it -does involve some thought. There are a few variables that control -this. In {\tt ModSize.f90}, the following variables are defined: - -\begin{verbatim} -integer, parameter :: nLons = 9 -integer, parameter :: nLats = 9 -integer, parameter :: nAlts = 50 - -integer, parameter :: nBlocksMax = 4 -\end{verbatim} - -The first three variables (nLons, nLats and nAlts) define the size of a single block. In the example above, there are 9 cells in latitude, 9 cells in longitude and 50 cells in altitude. The latitude and longitude resolution in GITM is defined by the cell numbers specified here and the block numbers discussed in the following section. The size of the altitude cells are measured in scale heights instead of kilometers, as certain regions require higher resolutions than others based on the dominating chemical and dynamical processes. Each altitude cell contains $\frac{1}{3}$ of a scale height, starting at 80 km and typically reaching up to 500 km. Increasing the number of altitude blocks will increase the altitude range, but if this value is increased too much the model becomes unstable. This altitude limit makes it problematic to model the equatorial region during storms, where increased vertical plasma transport requires the model consider altitudes of 2000 km and higher. - -The final variable (nBlocksMax) defines the maximum number of blocks you can have on a single processor. Most people run with one single block per processor, as this is faster. So setting this to ``1'' is usually preferred, and is necessary when running with the Dynamo option on. This is a necessity because the Dynamo routine does not correctly transfer the geomagnetically oriented data into the geographic coordinates used in the ghost cells. Hopefully this will be updated in future versions, as allowing multiple blocks per node can, in theory, save memory. - -Don't forget, if you change any of these parameters you will need to recompile the code (run the Makefile again) so that a new executable using the newly defined variables can be produced. - -\subsection{Running 3D Over the Whole Globe} - -Once the number of cells is defined, then the number of blocks in latitude and longitude need to be defined. This is done in the {\tt UAM.in} file, as shown in section~\ref{uam.sec}. For example, the initial settings have 8 blocks in latitude and 8 in longitude: - -\begin{verbatim} -#GRID -8 lons -8 lats --90.0 minimum latitude to model -90.0 maximum latitude to model -0.0 minimum longitude to model -0.0 maximum longitude to model -\end{verbatim} - -The number of cells in the simulation domain will then be 72 in longitude, 72 in latitude, and 50 in altitude. Given that there are 360$\deg$ in longitude and $180\deg$ in latitude, the resolution would be $360\deg/72 = 5.0\deg$ and $180\deg/72 = 2.5\deg$ in latitude. If one block were put on each processor, 64 processors would be required. - -If one desired to run without the Dynamo turned on, the problem could also be run with multiple blocks per node. This grid fits quite nicely on either four- or eight-core processors. However, on 12-core processors this would not work very well at all. We have started to run simulations of $1\deg$ in latitude and $5\deg$ in longitude, which can fit nicely on a 12-core processor machine. For example, in {\tt ModSize.f90}: - -\begin{verbatim} -integer, parameter :: nLons = 9 -integer, parameter :: nLats = 15 -\end{verbatim} - -and in {\tt UAM.in}: - -\begin{verbatim} -#GRID -8 lons -12 lats -\end{verbatim} - -This can then run on 96 cores, which is nicely divisible by 12. Essentially, an infinite combination of cells per block and number of blocks can be utilized. Typically, the number of blocks in latitude and longitude are even numbers. - -\subsection{Running 3D Over the Part of the Globe} - -GITM can be run over part of the globe - both in latitude and in -longitude. It can be run over a single polar region (by setting -either the minimum or maximum latitude to be greater (or less) than -$\pm 90\deg$). If this is selected, message passing over the poles is -implemented. If the pole is not selected, then boundary conditions -have to be set in {\tt set\_horizontal\_bcs.f90}. By default, a -continuous gradient boundary condition is used on the densities and -temperatures, while a continuous value is used on the velocity. This -is true in both latitude and longitude. In longitude, message passing -is implemented all of the time, but the values are over-written by the -boundary conditions if the maximum and minimum longitude are not equal -to each other. - -The longitudinal resolution ($\Delta{\phi}$) is set by: -\begin{equation} -\Delta{\phi} = \frac{\phi_{end} - \phi_{start}}{nBlocksLon \times nCellsLon} -\end{equation} -while, the latitudinal resolution ($\Delta{\theta}$) is set by: -\begin{equation} -\Delta{\theta} = \frac{\theta_{end} - \theta_{start}}{nBlocksLat \times nCellsLat} -\end{equation} - -\subsection{Running in 1D} - -GITM can run in 1D mode, in which the call to advance\_horizontal is -not completed. This means that GITM runs exactly the same way, but -ignoring all of the horizontal advection terms. You have to do two -things to make GITM run in 1D. First, in {\tt ModSize.f90}: -\begin{verbatim} -integer, parameter :: nLons = 1 -integer, parameter :: nLats = 1 -integer, parameter :: nAlts = 50 - -integer, parameter :: nBlocksMax = 1 -\end{verbatim} -This tells the code that you only want one single latitude and -longitude location. To specify the exact location, in {\tt UAM.in}: -\begin{verbatim} -#GRID -1 lons -1 lats -41.75 minimum latitude to model -41.75 maximum latitude to model -275.0 minimum longitude to model -275.0 maximum longitude to model -\end{verbatim} -This is pretty close to some place in Michigan. GITM will model this -exact point for as long as you specify. One thing to keep in mind -with running in 1D is that the Earth still rotates, so the spot will -have a strong day to night variation in temperature. In 3D, the winds -decrease some of the variability between day and night, but in 1D, -this doesn't happen. So, the results are going to be perfect. But, -1D is great for debugging. diff --git a/srcDoc/manual.pdf b/srcDoc/manual.pdf deleted file mode 100644 index cf13e8da8da2e99cbf911f8c4a2b843b1e73b05b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1420494 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.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 Q^o@0jRbB`9W5U5zTRN$>Kb-MB|S>CHj&SL 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⪚DgAGJ6xDPdph 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

    EG|v?myPrj;^RWdool>g|2G$U)~>bG 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±b=V<&zvdU{e^s80Jmp`RQi}|;AY1{EBPNyZ3^nMv$JY)^&P`BzG$InlAbnJKrDmFT@E zpJXHW1>X(C^o*$WSc(W(-7ttVj}FF9y^vQ@#>e@NMoZwV?Wd^&YoVYK415(=F>-FIB2gXM?JyxMfV3%e#8x7N_%xhcX+}-hwXAJmX9D@JV}jq=db_Kg#rNg|5HQ zN+)+8<*8;8q=7qR=ex<}_+(Vr_U>`b^J#_I@q?ec!8R~4HI!0 zG5u+17B5N5rNJ*0|CFP7Nb#$sxqmyrar=Kc8WbKemAwPP=m;6^QZk02i8(q6z=U zO?4^Y5W|1N%#W4p;NBx=dTJ3)cH4gqxqMcwHV9v}U%t4*HV%_h z9cM#D#SR+6Q1OPA0tY23*cg6%1jPX6GKAg&u-hC-s;V1OC-dWxGDmxuq1OF-^}dq* zYLTF=sgizHb9>Lh!VbY_a#g!}`Tn3X(p?h?l@xAud9?5@$ukXpixPihZ5RWNRT+5j_q!Hf*|#<$z><%5f08vsKx{VfNBy>8KCiQoTz&&C&;_( zbTz+Pb`JFt`0Qs^*^Kw7RO5cRF5hrs){IZZfq?DKop|P>Ds+Q;_;_?8#P_wITU!?| zRDS&+{=_VDSukNZ;*`qW3->xSlpZ4lWyk^5os>a75}h`<6ECQ?_m$^WCl^Ld=?NBf<`Si*m>#P!Xqb~#X*wQPrK?Mp@Pb*Y1 zD8_3p>h#{JP@r9UdY%gi31Vd-TW4@tzl!hT*NJ*-L7y2E)ZWq6TPPRzos)^iT%!e; zllOV}`Ad^XXUvNMzz3gI1mfhZTbv-LG&|mZYnRIK94J}DOeV`we!y?3M>xh4HN#O8 z&dyhGSefAXJp*^92Nqtl6B85P&YTO8+g}8;hWSZ~en`kL;Ur1_B_t|?)adJ(VL9>v zCF1>{;-vT@wekrzzN@TGW;3_MW5q7npcj3`Wjcw!350p+#)gOArI~wIU*I^QBxWax zi!nVeVSTY!uwsp8F7))g)VXUda#vSW80-6eRK83@-1bXN;KTiJjn73w+-t$R0?gI| z7+(}_(05mFaDi$J1+9OnZnK!9!xgOEN7A_*%Y(hT47rmPC&g>skKlA7ZZda#; zf%L22F#?Dg9veo zVXMlK2IQ`Q^H!ji!8wC>9{@|6%gZi%i=6?D0W-ZWiBQSnu4>3`di-zy#U1rbvG3hq zY>~Tu4BPc^X_MumEv&23SxRl4z4_^3{*uO_B+f7_G_;XCPS6?Yn5%H=9EX&1e6C+)j$-OTwW4$pYji4JKWGG4!1m7aocqr!C` zO+PcsIOYW~Q$3jqvNG&~oufEEm$9m&0MA<~M z{d02xsbO*rDdUBEA|4X)yG;VmgsF4)@*Z-MR=!c&hxa{$UuvAlFx$PsUA!C359X^apDOWIsGe4cdF@&+?SWj(mSWRP@9n+F*-!+{H6=} z66c^VR}xqGTc=;XA+Wr@A(5C{EfF)3mh=l>lSRsuSeoTMM|*lheat@RBfKT+x?9+I zCmPuWth`7vPPhs5P0Zpu$v9yM<(OXvl6aHfiStaYB>XG}a~=>ApTeNLzMKGPn{vI6 zi?9noJtae;1{5H%JA#OTgS8LD@ULJ$*y6nQe{osQsldi#lR+$n$H7LeEKyIGpq0Xu zY98ud$q+NPEt?`^i7iq=%8%Mvqp%+B=XX_vOa9;i>-#N_T8@p{O`LG+jWel~dqWSK z6vs_-J$5zp+GMQ*+@!8@+k!yPxdt_&)b^6SN}to|mUMAR$?A>2Owa>G?yJ>XGy!uD zUx4ET=S6nDcrzsQ?GVfpsLmmw!2buxKGqvKBqt=EQr!yA6*R?i+thqp7@}Y$;pckt z)bdRQlM4L)_cvdo ztKY%l(@iR_e<4~aWlg3@&#Jw&e$YypU}C2}(HRy*I|}xG@oJLhPYtVun6Jm`C;1X_ zr=pkkmc~mPS-quEYi?FFErz(~8Kq2)lkp6=vZE%YwY6^Op4GfUJo;HkQuk$u&dxA; z$`v#>uEAf1zY>z3FpsZ>QzE~PAWMGazow)^+xLsDge)8sNd+!sPnolX_M~maFF&G02k?(tH-7h+1@TVMsCD*O#kM2bir;b5y)e(8X6L! zo>OM*B3f>D`BPpfVeH|@=GhoS3h8Tl4&$qyPOMM0s=sSU=)!qlbvwmVDL&Rd8J2zX zDg>;s=C6ts=q5_#hO)hRa}4w2OC_Er&=I_!ysJ>e&F}8Yl(~~f*(s-r-8*7l{aK9k zm_|PdFq!XZ#Fvvd!57-}8%te%@bl--aPuXRs~CL}6$igD-1_QoIzc&=@)ZSvINC2G zM!TDac-*{8)rY}1JVGPW=@O~IpcuEA%9==J4Igu1XQHhrN13SaV2xm@N~R>!NP9aE zlYkizUz92DQ?a3it&kWs*xmQyd79R}7j`Isi zY{z^{eU_??y-9xIJoJ+?om8qNG0Ilctu66Tv)t*k-oceT`Xef$_pn$RzfG1YrI)$V z)9KN`R@D2|e8Fd^B4oJ3pKckm^c7?%kq;C6mS!5z9+V1oiE%$t3e-#pNwCTM#w#TB zrP8MV$4uGzE^}JI_d$>lkJ3la+(smk=69e9)js&&-j<>N`dZHE&*!qkTCVf9@3=)( zbX63%l!o#5Wy@5On7E_UF?74=A`ABC@7hF7wBQToZ+q=iDXyP>E~nvR?DX*PdK66x zHO4qH5=$fTSQ<`ycU??F3^^!$Hl1FJcxWXa%4sG1_k2Q4DX}0y_zNbV!o7KHQb%XN zRzg&YRyJ)lL&r9PI+s zv~2Hg`S)5bbh~oC(3H7bC@4ZeM1lLumz3EbpLg4>>;qlfORqCLW=g_e-dtw&A}R5C z3`c^mstpqs=jWAahp{yL#Lm_WoyoI+tv){fIA3G_todXP?#J&Zu|h4{mG|Sv1j*y9 zl})c`cju2ji1YGbB|e~d7wd{jk=#`jqQGJ#QfTB`ggcT$BAPFfra~E}==GGa_+wP$ z7>0~ApP~j^%z)0jim87=^u;UIBOqR5-hrqzD4FZtCH)EfPmJ+-5q<1lSv|aIZ;949BjOzGj_xFAn8yE z(bR~J<~k20bME!HT@xJ{O@CdnaP*6d#En6I?xJrCzUybJlN8?D5Bd4O+*BaL1vcC= z!l-Wb8GL7CN>`QAmm3!!LPAVEWSB|Db;|I@eHh`6G3BpA`}d;M z!=2wVz?d?#vHj@kLUq6)0@(GMJ=4zib}(9NWazDV2+2JaS26dhGq$qQ)2Q;&G=CbB zF-G+$$9T>~YcSZ^W(`gfFcUSjyxcsi!9RJK+vFLfdHK-^{h!Ci;ia}E=Oo7vft^5c z^1g|q(%so_ocCpIb1P@<-gXDp#pp*;4bW3!#<7flaa}}bNU>-^!I2|ixqpdCaA$=% zm2Lzbgz^{js64khDZWF&-?OJrH~#*`rg_a0q>dcoSlD~bS1#`Ub-J7Jb(ZkEa7CKZ zMWtkt`PK^LiKG-n-~0GF5vC|bJ}V-6Cr^$0PjQ@&vRZAIS7M%d8H_wQVf^E9%X+zw zz4-&JT}D~X6$V;#jPm-b3>i0Ln~{lhyF4-~%F=Hqd{XOAWX_L%#eATsB*e~%P&}2l z_`i>n*GN-y7_QiE3<2WA0(H=MMle~h$W1ds@R)CmG>h8~Riw3|jw6Gj^{G`U-KfvR zqeq(?ZOxe$<;M5$KKRcgE5=Muxg4`a=*ZsinF=W1W?obO$j>;PkIfd0gl50!h;Jb)UW?%J=mIEwktCG51LemBQl*(CN%I z_b<2xEJh@r5-hY*k-V)kq~eH5J^89C$DoWaM?m%N%a8XJB_23mlY910Plv|VHSuWmv_?%5t1 z#ac#Reg46D9&obYy8t-wK3p69%-6TNJy*t+9r5x3Iu-^czaJh)fxs5UpY1;f=#evb z#_)~%2g$Ad_J@Lzgqg8pMH|$ACu%MZL2nmcqP)48#j}T0pG>UV8~zk$V#^e*u`c01 zZ^lTBy3k_XOVitr%_zrtR9m}y-%xN*YJvJ#)XI%5{X^3LokF6KyH)Jhimc~cm>#i0 z{8MiWFMAH&k}+wS1#K6YdA5$A!-R7;MbJM|WH+nz!?xkiS4c5c&5qXp9)zKv1=535_!J=HKx;@?Sah;?jIes^|Tm#INEq*sQt}Miceq!X_X(Hp2G z8%@dwOD&ZD2s)wb`u6M%Xb0D&-8T+_->yHkecEG*VCx_IG1}|fj?`3t9clZj^yRGH zH}_|k!$J7&cDCtXB-VZi|K&PiMV0+KD|*f;ufQVeC)Xbo!gqyI(^rRFou>5rEyJEx z?_6Y#qYZ9?BUy}iTGh0Bc;l5)-1pV!PSo&;iHd#!xF2dbX?tIa!pbZ1lkc+hUN(^? zDO))m9r3##*UpOZ`*}JnC%e1kRM>=n1l2qp5A6(UFm(Qi>HYLfEhMUK^58g#Cg;kJe14w~M0`srY;c@@zdcR@)ekO3ur@ z6&y(28+ZPl>_@Uvv|$8^pAX;TGSSnWDRTZZZmDLiP{qLXC2&9ED=o^olJScOm3*Dy z_$w32Y82^91G(tB2^KXHeAa|M*l6rX)x(apAAN2p1fSFytL2R_)8fdpNxs0=8jQaUd~#v z<7vi^i#?Z1dQw?!_$T;ct33z=v``EHqt4j0=Y#rZ+NH`n=BvLpDEO`NsGjy9M|kAy zu=STRp_8fV5HY8w>*Lh+ac$SaN9@|zp)T%kBYlNde}}nnVx*7phS;}d^EoVZu-oC+ z)(q->HaiY@w43)V+Hj(Z!F)&bo*!;Spn_}@^~%!121-zUrBavmsbgLI8M*Y_)WBDY zw?b|G{o}64f(&nVY>>B5P!Nrc-k6j-FCG4Jy$B{N`?IqUks%-;(BgoFiHV2S@OG%H zEA*khcoo?4Y?O(`7g%*I+{%dvo}jHyY1hQc>g|GrP}hfb3f{_~Xrkhx5~vDP zPk&_OfURF^w&N_nD*ih~|L?EPW&Sl8u|IaGWiO|BP-d~_ zH`mLV?C;s0PmBGh^6NRB)}P*irw2s+_6C`AUL58F%?f@W`LslxDkNh2>SU@N4>wge zJ6lP{vRo*qYh zE9QUmOq{ux}QIy;P+%KdD}nP99Bn3DQsU5R$8jV;sCyyj)hUZa1pa=!yg*t>t9;wM zhU~%RI*u1J=N3#l_=daruw}1o7E!`!*d}6{H(1v zAGk;sJkg*??%4deoAQsgdVC z7x+3(I>`#Ax5AEvRM3xu{cm%Q5BC<^e*QI{@-Z_3*tzRdD>fD=U({%#B4ShX9`Ajb zoTSq%(JqP7-Q`ze(owvlNRqBX=e=qA0>5IKCVdY-Q!a*Nk`m9b+2?pJhW78w6Q7I2 zy0BPHima(&d5&W%MyW?&!%;4}o#gxz<@5C0Z~AsehYi2SPE+L+B8d>Nsx5}43M z*1xX!XKPi|z3w}uNQtRev-N0bD1MmSgFj4VmF_Ms`+G-A4oS}%sh5t+KhyF?lebek z1lW2WBg0bV?N(;_XKkASGTd|$D!8;Kec^wI?;$*^GH1~=3- zL>6@BVV}OR5q`#$*qh=zB5vYruTpFEyy6P!@zPL#vvjci;>)z~qVP8^*+@=ipO$wQ z26%C@++Mk#v>4nX8zIkq?Wh$4<;`7A&4Hh=+?Yt_=+;78>cPpw*TtI5#8a^R??p)L zr={YL?^?^Msm$w{7?j^BVJ4-%#@{2Fd=hn}fF<2dLsKY&UTg!mi&G7up_-;Xmlu)B zebkX=e6CVjuas;^Ik-Q)8cLCP=<+HcccS9W!S+J^-~$rR-*)kq3X|7^pQIshaTT2SIJ@qs%U?STX)G;mU+p?^DZa*`1(`&Crsj5@w6VWV_l=L%WZV0{rPE9+F)IhoxS{^l+$3Y z$;@+Mc+@EKFfL1Nuy^Ufj^fB0-$rKaNA^1zA(X<-<`%yMB6M&GDW2Qg-&>hq-MRfW zsG$m0b;|n-nNLgw+rA45rG5wxkH$OuhtQk;IX^YicE`9>iUeuocpBoq8bD~mbUMW(Zznu^i7GLUWaD<^gvT#`}5;R|Ln}{ z9(zaUQuZZsC>A>UYWbSvLo2~|DzUk}?<3sZiyFmQ@BC1;TzZF~Hikx^J+_Q|nm^1X;F}qaxv|IOI=LEE_xZRD2NnX<)e5j%?g0mQ;=jG+O)Yd*4 z#Workp;nU88e~rJ7;e@Pm$GtlV91d6@H+}#o||3>;vnh zpPMZC6>zNg3$y223rtIu)!u4fCGb2=GElV}Ys^h_E0gY{o72ZS_(Xh!|4n|MHn9Bo`n5!eMXQR`3oY#v=CH$UDcU9Udv_>&>Zn#n z)>XiNlP%%_0px6T@D2vHyvFMN2J#&jI$0roD%;bMU%z@qOHWhpi2BCq#r-*P5dPU8 zq+okI8#)k@s-mLwl_fL9hu6~Jy@hJUx05$1tK{u7!onEBgO4~zM0>?-ui8F(yYsnF zkT;e;c)%q_jq6KZ6wQKyiW=ZDBPy~INxX}ZPh7K-^;D%x){Z>8H}AHl)x7XfOiBvD z3@bjqwxrb?u%w2Cm41rCQ0V_YEnj%JcyVzN(cYtKGE#B$@~fW-{Xo_gfpmsPa!7Hp zLHy7J80KjT8@L7;Je`u2L90iq%`rBHi`kiflIs%SPHcGf zcxz1R{rguxPv%h{SZWKCex=qjpY+tL{%Q6%Sigw~L*Cu_95?bOUC*uPA`0d9M#d6* z2^SlWm$&~Bp$`0Cq8yusyed%$7Du46ZR!eNa6yzYE)EJJMl=eTJq*` zxJOl^d1(jHk+)We?yF{s@i21!R>r>`5~spZmt*WRdStinJAIcxO~{?c!g)>NT>efeM}7YC*6&HF+6L9xf)XnDW=C8-B@`{Z`nGyXftoVCEYJa(^$}xFQ?E^igf+rW<*YCpd5j-?O2O-p*3ju-yYGOA0Tmr#4KDeZW z_J8MbaEOr!s3QrNx=H6Y#LarD3}l`hV$aRZ9g@@cXZZZiIbwH8?-1M5NcCh=Zj#wZ zpkbbZm(JHL+3S{J$*VY}Cxcy~45*#PxF03y2Jfa3{9}z2r4O-rq%(e+G*mbnrF@h< z^+T94iP$I}Ih=Cg85(s$gR%Qi&=Qr0oLh5QMnl}_E7Ku=i$;#M6`3XjqGV~n!R^7i<_nMZs) zw-Kq(bFCyV&aT7s;+2$L!i|E%rVA+!6F1vmG--F@^Sie!^=4ZzP>*4wM z66cR5sFeU2Ibr4u;<^c*;IMYiefI2`I7s-$?{5mkRI-IqvX-UxI`GwB&eZLJPD9!8 z$N$V_vZ_d@Vm@-OE6ENqCxnbQlrOanc9NgDv@VHIb@xjA8sP*6csSFkR^R%$;a(!5>VCc?gmJ1CS2cL=ib3cu6pf;_48!e_DPj*~n`!6iwuBj-+y5jR3 zv4_t!&716s_U-*~dRf1A%?yn9wbE)B6MSG|4Ey8uV4fgzmHzQJZL&#;_y_56x@CBc zlU+JOv1ojJU(jQi_v7Blp(nZ}m?X3P-tDneP++2Cl))(zWKiL_A3=}z^jUik9ewF5 zbpdXMn7KN3@4*G9lLtNeBArv?=9@DpxUw}1ORKMuo!zoYov*3KET={{`FN6Y1+-o* z>TLcgU3xV8%&~iK1iw@wu;yGyUw^#0=CI|VRG@-+SgiB6JCD}%%8i~J(aN7AkZ~-6 zyAkS+Qz_c)W>(2sk9_ogwiw|GMr$nb3uB8Jmz@q4{b!~WJKz2Uc16hkd;`xqZ0~E3 z)9a$cZG&DDGzt-)Q?8SLU>%XPsMHRI3hgtvsQY|y<1YrYsYg^$^`3Q+FG61a&p@@~ z(TKU-`&ACZ9#NT>hd=j{O4TZJgj2FG#1GQjKe-)sJk9uO?|SgZR)KOjt@@Eo zj3_gXug}fB<(wX?S@Vgu4ne73vJ9JXHe(E!8F#^4*iX%(zfA86xx|y**TSe70PH9h zo~V(R@%6pTtNT!H=QECY)VW31QQ?V|7T;23sLf;Rpopu$rJ+ee_x^s5a&IiO|HwH@BFQp6;`*L|G?h+e`;JwO;eX4(ZG$XD2 zP3@}`FWGcM6oavjJ{F5VR~2=K-UIZ18#wL-ga{H|`}CP*cJsr{J0rt6sWJ-mWo z)!tYOJ9k$@Rxy5+-1!1a+a+6;DYj?J4Hd)m1)j(4W=(a{p0ROPnIf)$b;raub6F4l z@DJp4OmT|&Wj|-dQ+?1Wa7-mCV))I%?^+8*eAs$z!S8;;+BImJbms-jWy<*NNE=Gc z1r2=XBdW5d=&ovQo-~&6Ue>JW1Uzjz9sMaDY^Ha~ETe@Xp12Fef$OgV-Wt*jjPTe~ zh0J@}tol%^`5L|dkc2Q@!ZYbPdWR9zLt4ATBIZ(EwPZFDd+vO12GX!Po#{!Pjg!AT zW8ZGRblyEsGx$VIr|11Ug5h$lFy+r*WCFqm!rEh=UVYV%<@~&%1^HJWuicpncb$xG zR$I^VpIU{%9vVTKk8he9TS@<<@6Kzd>|d)XN;mM((sU1|mk3~o8J}S5K6#RvnHf}$ zx`>^coJ?GI4px~8{TiG28WB;C&y`(tKWZOlrp1bn8rM7D&2LLpwbftcq@z<9=~xo= z-n6XYc>CMm^52Gbx?N^ydb;J#Hr4sMw)<~+mU#D5!>OE4kugL+$PM2n5tHQ(*{XWb zncLg9X3qpX#C8jcbaZkBm+83ve(8kN?mck8H8=ZuxUV?%CZ2xo3ErMBTI>lXpZje3 zRxj3ak!(+r_&D+h?^DfM8UxXN=Er8p|Bs||49oO;yYSTH$((H4wr$&XO|GdYOg1Om znrz$lDsaSjVnx|fPNbUJ1=e`B1 zWfN-_J5jnq){$>et*WTouRkI zm+tP+_YEUmkn~1aOW7 zS>L8m*aaY$Z6Bvcu$BmgkWLf+z8ct>MLMfwVA@N(OTfKT}ACIH=3PmJNL2u zago#E8?F48%g^G6!q!Aet7tn&UU;E>Y0BL(Y1ZMKXAvJ;PzyA+-?Qlm99ux>c2xQ4z+!F7D1Z5yTlYH zAyg3vN7BE1_PmhIBrzAP^Ap1hg7bg=?8#21%-aEwCs%)3=&Y$cr9_$}W%#ADrQM%! z5%?w-o z+>Ee0s(7ea_P=v9cwTI{#LT;edu>DYR8}e)VzSbmUX|UnIAax0?5A_l(0X=O8!|FC ze3(;mdc;WjV0SPq1OBwKs-Y+a;b$O2|0eXUlAV7+P3xo4GN{x(U<922SVB8zXJ)bYQG$ z{o(Eo6prt20qa+0i_T*J;nB~(uY(J8aN+naxj0E#efBd?rt=!_)iXCUmgD?wy!9Ky z#~l{%O}g3+o_{T6m6Ae+?SvOFs`pl%drxnl;$XPkHPMW>OA8Sf@(%HK{#D^|u^%F_ z6i5T@GYRYGbZunOFHDMM)}Q5FI6FBxKQH^Y4m9_)FtZ;tGC)u=&DuIe+Db6WS~tbp zwM3h@#8}qHTd>6XrUB1JSPcSk6h zW=D8Lzhr7%uOBfm`Zxn^3j_{zi6W9HJm}Bkq#U$S3v~~(f)@Vx`0v8Qi2kxLb~3Z8 zw$)1L)Fh+czPQM{?Ce1&?nNLezyOpw6~#Wd+kdmN!Z$KsOBmx3xI~QI%#uciho_mo z4h>LB$=nv$%8-$JmA4378FlZKN9(k4SHBA@8NW5X0>1`PnRQpg-gs7G@{@muW2}^v zeEw8E?|7cSh`GaQCZ8tuLF+?;{$_8cVI^mdw#+Y)GtiXm^78W2M0E>%ogJfn`dO-B zlk=A1ViMdg8gvk0Fe7p#{6oz^7RBjiTWS%>wH|PHc=0^}XS0jo$8z@v#vxdipuLR^ zIOWX)5)d04Ps;$xi~;u#L@0t~HR}x&4U#Wkcx{{k#3Ovh~)2PM5>BH{V*< z;paTG~50LAKZ#+-(&e)(4!t zJnaw3&_4Nk})0{FK?7$gvjhC+oN?eK8vP5w5!#o;H&GH8jqYN&1aajlwTwMUQuVSh$Y z8Y8ubodG9)j#1h&C@I=3%;{D_nLZMWeP*|?^xni^LBWAdhcFgA|eeSKL z#oGc6HA({m+XvR*3d`15OG*aw4FYK)0E+*ZGllLe$Ixsd=Ke37F{uR11Dt6PLcx%l zn#NEA2 zUYPX9!dKm>&+4~6lW*T5!=n?WshaY4RkE0+cA8>w1*yApspv@)Ei4Z9S9!T+<};uU zeo0~>#i+c`WK;o;_`P0W1_P=-fnvyWVBHKPgpK&M5CPU8W~=P(C#MB&niUg)GI23ZU8;rG=LW>Fr`Q|$OCmS#- zhAuXk^E&;OIzlq=B`Rci6f3;o`H~;lA5LsA5shfZ&zDW z7hzU&oqMCrD2RD{YM4%tupKt|=}UsQyxskN=GUV!g)F>xrIJwS*r+xqyWNL}qy!OG z+ltV3kDq|~<7tJM^auhCHBlPf!JA<6DO|oSHUNhmQ-SA2QQDgO2=-6QD;)H}G1X45 z<$|~D7-kc$^4>aj0$Q(?CtT+In!A<9z&E*xZDx3twNZk{n%l5%YjN)BMohiujg|1Ux@l5l~Q&Z~)jQR8+jQP8@yt za-5N0dTp0ndZusHu(;)rUNJNCggNV|Yqws(t%Ng6eV=^@fM!V0g^h ztHQ#DtI68QB7j6z%dsN#x@1V5`I(PD-V@8p{%sJU1aMLU!TL6F@KIm`DHb@dKyIE4 zWZ>Fj4W09pG3DjtfvD?`$!_?e*;xjH%{?0aV1^?rv^NZq~%a1VBFk zsD+8TPGW8!bK=8WTuwKg{Ze5D8znwg=KXE)N3qMzL9jy1QZLs3O(4DL&zAo(4?NgLxOZo|y@k*?E89UV@kKq;f;WhU% zRrd;I-zF-ckR%QCW=-h)j(>DY~%rDRABb0}U z>pbf3?=)jy$_Z7p)91A^bmA2FgyV8~63iOJs^y}Qv4~rJp7PAhlH%+P3M>cvu%pn? ziOal{l<;Wi4{mb3S;Zf5{28z|R0<08yS=oQTlM`%^-EYE$3S|}wU*zBoAA_*3t-a@ z3(6lJ5Mi%nBjFjZuhb+(BTz9;GLi4@ZlInYOqu26MDmsTe*!oraf$MHUg#2z>4nzz zr8G9zi@wljU5Uwcz6#!m!4}A7jHz{zgW-WbJ|faa7oXoRMv?ry5`u0G4|n)r)MFX# zYqYU;HU^CowUoc0(pOnhv5E*4a;mDbK%&#|M0$hSr8uM1U0q!rA#4T)Ti38B@Avyc za5#%jao5{_5>Y>z`2fc}upuUT8v}aGfhU7LkSy2-oaT&9NPtb6&nhD$=2u_tuJqZE zpDn@LQP=I|-&KE4{z<($FLEGvq=Us6^vK!i$B(Md#Btu#xGkK}VN%$IvXgA7ppnU) zT(VVEA+Xivbi0$8}=Z}5lav4{GzLuJuEtDOGisWXGB>ygsVN2u|j!=&FUCtuklq;xIG7-uP4|p(#NGG+m(-tSnu}65_k={A~PFpoeX` zy_dY$2z17qx@R3s9<&7ICsg|lWNZexbrqMl#V}Zvyq=EA;JQE^8{y!S^F5_fOAA&} z1365m(j!3!bpW5ZXh zniHK}7RS+i(;5$CR6b8UiYD*7A@0*d};aIs2C!@mzax>8jz@)Xv=NWJ`&`4|i zco0p1#u)(lo$0k_v%Cq~{FHEPEx==vpK>6v1PQn)>r4oJdxFm&2OBqk&-in=Pj`;; zUdpa~7c@88Pa6<>d~5On2$Di%>r zuSr1}LV^DDDd=?xwzcGb@Tzmx8Hf-<(;!!=W}ud%G)Sa4DH4^XRl~T|&XDD`fYa z_jTLz#*gufsYW&<{dha#vA8lTcg)uKc4fY0NQ-o3OV`v|$PqNP&||CKlHkNQXT78q z8!^W)Q`0#)QphI`&}cq8kJBbZ3*R>Jjk-IFep!#6__F%^K}>hqklfSc&@&D>5e`np zqJ^bWYEL*WamXP{uVn=r#_suA;lA0zOJHA2r0fB#9MqnvvAUX^%(OYn>fh4tgw=dn z>X{UbK*y&$85XF5@KF;#Ts%Dc7!Hp>Et0D0vc?vhG@ZuE2BU{50Y%sGj_1gq8hP*1 zyO}7zhVI1=y6RLC=x$l%K**B z>FwDGs7!X8*!%Kdd=#Aqy(^VOM1;$QatF|%63YxbwFmxMfSuRZ1W zwkh{jzh57i#xneG`BpM{DZk1@c-Mu&G?>(`peN#US@HTBcHXly9qs(t#r~$k<$GV> z7(#iuf~5b4uoDXfE61F!;jDcZuf=xN$FTc!QLT)d$~bg|M6ao1-L4KwT=Pwu!UDIs zXOQmZ*A2~3JUsjBZa#_-d1!Ac{)tr{Zik(CkxW&x)mX?}TZ0>7db!1|Y>Q1HZBQm% zW7rO_APse5AwwQ|LtIuiygt~Wk%L#_Mkx62h%q>LVd(;0eFK`Nl%1e&OjlGp*#B^r zWxF)6;%DQ@Y$UeuQcYuM17afg8bU+DMjKCWLzW>^85$O1ensIpHgd=qe~6BT zD?6SSupaG^6P~}u%6uiXY8RtKW%GLxk?WiKAM0!$dS+(lmkI4X?+pBLqi7i!#YYZ~ z*LK)xiMm{CR)SZo<`S^R&Qehfb#3j{z@Ct@(80rxMR-R+=+ympuT|Fp0nj;41%amfub*%+#CqTXkQE0!%^nlRUJs35g?c>vU2pb2-QThd5zhpIND`k9 zAScIhLj!!hhyP_+ZQnmMb$cO-BCmRce*N|<<<35hm5=H4t4o)MTt-Y)-<8;>O*}hUuc_bf0KOL%~iL zCG^=9pUP#7lhx21Bzsx6cIL`tmJ|n?w9U-OCNMxC5CvL7yYJ(sM|k(giDvg20G!_l z9M3B#*c()g1?!F?R+*y(2pq`l5#bVIb(7mLtsJvMFV}9MX=n|5EEa&5`N~NA>K=12Z>p*-MeRmgCltuf- z`#X!ae$>p@7pQ|z^z$@D^l#aC&Url*L5L9~L~Lqk*yjC@#{$HA^9u?9SL~1THSx?I zBPI$)h(8j2|IniP3sRc{-qrzn=G((SSPoLPR%^Mt`t8`>IOC`9@!0eb`}u zrBFn;(i{?@W#_jb${90y+rcejIja-I_mf+tZMQf`R zNpftn#RtIeDwa#H_jzZKbI2aIkKu@VfZ{2N7-HgT@G4M__;-6DBwI&^H>pM5l{{@bR-g@q8& z5!KZUTEx(BBaWMG7{!Ppp}RRB|8klf|HfcV0FD>Nn;|%v`{@xe2GC0U*kZ}GJi2M8 zN(wch8amNnyld8|f{8UO;-S`W7;O8%X~G3;d>m5)BRVw-RWl3o zI_?d}d~}?SK57Ov&7_l?EJg(-w+GyqFn z=$(;}MKfdS{oVQtiG=a;SY3TV7~+(l&-YB>+M)K;P0s2?{dNtP{aV1DmtH`0w3rSs zT+i?*z7JQXr<92^m%jDt&Ox3IooP*$>Te%yXNR?tK*n#cwVEW`zB|7!r8ce`7GZGC zXMWe3(m_{+^~REy2Pe2D6-&mttdne9`mnr|etQLF!T^$XbANRAsvV;n zWW&R1s9qdoYsbc{>CuB^2wgiH2!J$Q<8ulwaj~3bAN^;S(m<0gHf=23Lds9E zf>TokTc$QhPI=&khZ4UN!&6Z>kxxU5T@y}xF%F`9*dEX{?fT?@nLwWVo@H7}_*{{i z)*Qau0wCB(oQ%-X(SHr@_K<1?P&?7S0b5$b^LEI?*v_A}9cgJ=PyVbdf28EJkDcC_N`M^si(5F+3$zVTK`xZdOY&Hfzp?~Ph)Mc%Si^YGl-mrs!BQ??J-F63 zA9q9H{_pNkxZYGzRR!>(y~)+(AG0X%y^jKdTYtJd{w8-? z2DoKdNh4A5Jzw;!9LO%mOa)lB+$Tq>8cN_*c6okfKwIo1hh=&``|d)}KIt+kcPJyt z2@QR5NZ8$f-$2gH^)|G+@ussAMEcR$m#q)HJ~8pz^xFP)IB<>;HJ)`em-?vXR~0>e zsZ_YfHDIpt66)u5_9`vRvT*FX6_h>73y(mRhHqL!5E`f$mSZ8O5r|h+VVq)&mA$T5 zvb9HJhl4J*nnY~5XkiI6RFyrQWY2}Tq03IOp~M@qaDq2(5^LSyw&{YKOk}<;v%{a; z7NJ`3%$&DXH@*e8{>Q&i-nF22P3i(h!`f-l&O}p^$0&fHS+LpNKcQzl>0t= z7hkEpa<8Z$Jr<>)W>?{)m?`e(4zCCEviRa2Zn%-hfl}-}EY7$W-1Y~~?AvJ-4J-Hp z{ydZmmb0GE^;UaKPqa67pFhM$xZ{g;99zQ+NN82ZE>|)+DMBw1w5aRJ$-zfZr&kSd z3;*6uwDo-DZfSb@%(R04|HI+fiEGREb`lUp0BYjKnE){{nD05@%K{85|3N`1QLQPK z5fpy{@w>g~9t>K|suS_D?26_4%=YfrzWz=>-X(kdl?a<7Ng^1It0f^1N5#utdR)d! z!})G|HdVLD3`ob!tjC9|iREeFGJ(kk?6u!~Jxm8%D+VcRlCs;i1I|@^Imn%y4Lo;a zIzOwQd%pI^$X32^e}H(a3&WG2LCyGKm;YW2X74*~)}1Q+`+NG-aV@4Y<~Qa}EA<{02jNiznL8kOs){awJ&ths9)Vx`CBOkiEddVp?T;9`892Lxgl-l%P~Aq@xK3I^O?;#NF{xTIX}A)|GM8Q;6ZJ)j ztE9|ar&N}!HMBVgbSnEf{qIl-v^O0F09E9zvGULKs=CJ+Y`Wm2u>Dv5ka{Z}ClT$V7c%Y4Mi=+aFl31|BTY3bt^h&pS0 zDo+?&A57b*F~+)l9lB~rvwLVu6v}>eY=FH#MH?G8^ABW;=z3$ z6|1@W$+urg20I3t|Hf;?Er=^}t3zi;O&2Lzf=V&%VIifDzEkfM=^Pz%YB9c3xy?vU z@y%jIl4fpLaFtPVF)Ck?K;MROt0vdCr5I^=^KP?I{M}pc(!Y@1Dc||JY5Q7oe{p?* zH$m6|t?}c*VyEZX4nc>|;#Uad?`4~eiro^Lc}4x-dY%x2m(l*#1~>96iO6+2fhpMvgyqwWMuG^z4yj)Ccm3|+WhyHt*O9t zd;O;v07s~=p#hYx8U-sVLtv`yMb}OHyFw8CI`0uOG+Ny*%E|70a}DlO&BcnHTyp=m2Spo-Z)J0Qghh&z&B6LWp?t(ug3gUpLCB?!5<0w$BeYQ{Nt{c|+Y9 zZ8KV%w?Q0h4cv)2_rKH1%@i*)$7==;f+GB;OJ(b)W!^!$#M;CkRvE0sCvBOSqwP^aDg63yD3( zl7SQ%^DbHfs6+e=qfeb8d9-^jHKbf#a^bnuOCHKIGhf76-%l;y5U$7Yr>TvZZRb6H z2|+5)9dv|IGzcZD?r;bgKd#N7%Oz&FlQq^J0|WjXs}h-XWl06$Oed znk?2|`1{+N?_v*as(I^J<3PWw3ACEppnZG(Ax%$v`+3f`_p>?@MEnYGqPMpFTVHT? ztiEk@{qHxo#sUswpv*1#&_*r~O;XmnlFQ;; zUg(+E8I?h+m>8!nFTh~m%SL(QK~gP9T#xK^v%qEVPS=}(!%UXAHXlDmkobli*W2LC zCBBQoUd2|QRty+B^~7S}kmG*Ul9N%$szJ&nLeEIBl72E|(d~@s$@zgMRSmmG4j!D9 z?8`BvZJuvlg5fpPRCpFcb#!LT%we(RibrvAa|V=Cez~d3M0-tqpc}4Vc@iy6=674S(x*z0>sxL*miO-InI z^n4p-$vEMHcdvC2z!8*nZd83jNNk@=mFx{7H&h_TzlWB^E6;r=K$EO%w}PC!>!7G4 z)UCgIu}YtdFgPkdE#87IZe#>m>%7vG+jjFK@^BbZ62TmD1ru5Q4d527Zn9t1_xgYW z6SiHyYn6PU-)!k}JveDvJ^xvLSkPY5>23U>d&K*f@WS`@>}C>Igiw$(^;&FjFQ#a` zSIOk$*A0h873`)o+1kkeKBT6IZoO>G|0%HC+|K|L>?JJVDGY!%`%IwyhqoVv6b1@3 z_KeV?s&`IxnIQyU&V(MzDIe3ed{1Y9o%L6ki}#OJ^>vO3-g?Kiilbh_Gfzj)wR;e& z0r#wv@$_4&;*UxlUEh}`8CS0(d-8+WpB5gtqJ&BluC-isa6Jr#HEQr>~?JQF4o1lsSg_}k^hMy}gyye}QX4h2#- zr}_eOh=V&iRaVBLRwWdlKPXtx6X^q!kY$hpHL7f(O=C??Un#=bYD9BrRJ@oabw4as zrskmHf*7U?v64VN&JIP{qN9@tx&lX+!FY>`i3v?tEtrm#9oZkZNmOxhX=p@uSJ(1H z53xR^RYEK&0CTSGIiFkC7tziV(tsAA&{j!fa8-fJaE(Tg*6z5|)2<%LPU^Mzhbsl& z-9lAO?i-3nwlvYw6G4?Q2&o}a;H(1gSoxiBO(VhSx^_6sho;vPW`WGI?3BDM0ak#@ zNvOX5eelef?J&RFq{%k&5S;&GV%(1pBUS= z=6!?>dj22w6Gv5NT-nWMn7zGp)&k?2gz;(NEMG%9^7qO1U2GaZN{hubcTTH$*|TFF zLW_eX`x-#pX(Pe}dUkN(Dl19Vv=7E82Sz2Qv`lcWw|pN)nkFQXld9Hm>^z_S5%LFk zs#!B?Wk@}6576f2H!V-_fV_K2MsYA!CXz&vkua#4d#ri-4d)G$2(SdlIV-nwE_E2n2XbqOSIW_WW-wTC?%OYI$!bgOH4b zS?<=BNBsq^NFEQLW~I)1na@Zu?wtWsv3-wI(WAY9XDHn8YbLAZ#aj=ln&B^Nxxy|0 zwU+4c-{4j9GOlZ%2Q~budvZ+qdJfb`OqcJyiKz>Md{P6LHeRo<&Mq_UzprTrnB2a3 zgs%U^0oSa4n~3g1Yj(||Qmj8aQ!j@Umy}ib>w>t&e$krEpdPulT;}t79ZARYqs#YL z!gIlu)7(h zb2An1Vr+F$+A7F~zC$;8;z=zTjIw;znW7|`X5|PS)bG1oZNCbs!4PHaw&~KSor>x_ zNqo2!^Pnm6kxR?SmN$ZEdrZeLLFGbK)X4IKB8K)lje#rBJoFWIWvTXu@e+ z)zmRL7UA%vx^Oo{@z4)?(``J=@HDq&hR{xsJsQkj&AvmrHTtneEGnv zr^+7)?l)gG)tYL*8_X(=oQ#ZeHEWShks=xSyt$#u8Eno)XsD_>CHo1a6I`t(mzCH) zcBDIud7~Ep3QZoqz5EOJEP;@I;Oc-B5tckU%WmXnT|OVen*f+n|JaS4?{iVHrwCr9M3sC@JWCAj#s zD4{SG#U2E_gWNhErRTV_@wO7?$x-VlJY(X?jkvKTm*o2v6x3*2nS7Yu*Z!g9_Gb-F zS?yE>%|Qw?3l;=5aW4|_V^^ri>+UbRfglxAY%X?dG8H#BIV~+MF)=X_6O!T7jqj!Q zB6&)rqy^i-!NFpAQY;#cEtx5zlH7@;(d!iMhJCq^(}^Ctcj^Ur3%Sf_iE+ep>Vk(E z>9Q`BlPlW-iP1LPf2{1X+eml>=p*xv%K33bx8^aw(kxzI!wU0obZr{^ah$YJwvsJ8 zacT5dgTT1>rp^#wE`fVPXX=<CXp2rRQlLR=Lr3ci+26 zh)~n!Vr9}JpTiwFj73&b2mmp_JB*A{lQmHrAH7%sBUD3DhViH`aKyT z5>&q4^ltq34gHBRAVY0zZbm{t2$@37gJWepI|nKgo?9VgU|KdAvcdM!-{{0wQ)pkT|_B#T4KG5uc|5!Hc=D9zJOg^ef&1&7PNE5=J zQ-z#++w-UjBmDl@nZMv_y(To9B77{(E)|S{jH=8RgJu3TE$$ zoqYDt8UEf5q-$1*d~Cy|qsSqOf{Vqurb|shkwJ{}WmgNvSh#z6IG^hTxD zubPc+)ud8cy27|$VS>At;6>7q??Ma@iaS1yoG}IG>jidvWGbs4rjcMlD+KFpK%iJv$+AXhm5Z*p=HP;dryDj8C3>*dgaiaV|lq7^^gEq>Rf z%#t+-z4_aRPriFC*5WKv&g|;54CMf`^L&r6^{wv@2QehSz3=r-X|Ze>^5{jF_)N?r zIdX+|Hw?zJiSZz#iOntl!Ija)xc)020$E9?CuhA6EOT_by8i1s{TXf-lU`GWBF(P# zec*4yrq%=#2gz+C&VYPU&#y_M%7Q_xUt%XXh7fb~YVBIyikN?g7JLTVOg29Cp>GrN zQj8r6dE#YZl5{3@9VzrhU&fR$2<%=+-wMa#$$5n2t2X-+mU*#jp);joKy}-#6|F8s5GyBNX#L z?`mUdW#QmJ^z9!;F7rS|hDfv?^QA6RfETudD!Bj0ZN;K1%1g*^s^}z5nJiOLS{eH4 z@pnbssn*hJWaIUV-ODbGu(teOm8;Vt=Vn{m!CqdLAXoD{w5XBo^hIDgG=sg~Ex}kX ztk{-8$holaZP!(diJEi+-r%^pS?Dg-!AC6?}7zD=wc>R-b2g|JQor)<(k+4{<8jf@-V+9)K*a zx~h?%_r)oKZmdK~$&n%p_MgvHgF9(Hn?X~7hE-LZmMpB}tY&<)iJkyK9%Q$QDKM@~ z6qiBX@FZ6w6ELw*#FyPGiHE3?6u3r}BI{}$?O=M91WO_lhUAV&aB}X(9CcA+dD*}l zrc6PkWMts*CvbmtAc~sq3D3AtJ%XXT(};co2}!4=FiR?>v@h~_f%2z2euGxDrkL3G zb#Sy~C@X&tqqn(8BK$MPYX1WsZdqQ)y_*pCR?Rb6Q@2 zUriNHXR7OHD66Z|CXZI=yMISJzr_^To9sQ9-XYhYJ1#Cc<0RmdJ zI}C^0RY-drD8=5OJz}R9q}*!l1=a)V{BO*$IeC6m$IJ?{|g|w}tjn9o>R)@B#$z zfP!}1+o$f&*KU9b*j!OT%fR4(>X-eOPt;C-@Okq;FKptELChrol6jgZZcwDMk- zWt0c&remgdm(fa7a2%mfHIhzD2*pt@Qa$)0T>M=<1q`g8#H4f%wTc?amsv#eTa<%+ z55}aOu6?NqEZv}Vp&Ou#&Xdw_kd?<-x`3_at5Tckl1{EANhA)(AHS)@j+~;j@pB&z zx#c90Urdj?>ZxU>C5&2@+LAZTG1IQ~JgSv1Y`=hwXwd~wadC4)&OB&M$dg^G z>;4K_C^Y6r3dQJ9ou8v9lZ825bOeE1M46X%0>OT+`C4_fdONzAc(aJ3wVoDhQiK>k-E+9;5ACDEU(X-?HNVF`2X(#sD(7q)-H#YX`J(qX7jras%F{W+nG8P_W~=e79(lJOV3Tg_esun zAFv>?d2)@w-yod7-$O{4JujGK_gS>4wdFz^iRYC>ezg2d_SMC3LTL5$T5N?hXeyGc zR@x(w8+k@0?ajCAS~MIgr5=uS&2AzPjjM1+lZiDVbxp$N)f4tZATdELNMv#K%bQBu zw~MHP{Rk-*YZUwJKYpRG%@n9KEx z_q9Jq4|J{_SX`dvLwr@Ed(^7%C95sLYmmDHz886x9U88DKNrSL+6(D@uTt@ipT_fc zaJGKlCC_3y|ElyeN+?)JpM4wLsK{>%JY5cKDs?g&3mY3!3rsNHYVGE($xIuIPk`>> zOPSbiY0+cM=&*q6rQhY)NBSo3I2N!ClhJ%{i;uHrh0{UCf@xA0k&-#?Ezu6p>q4CNE8~^!N8&IhjZ^z75=8}m!LFIPm7*z$aK8f7cf_s zV=;DY#%_w?ze%+r%KPR_+QumH>4!9WV$)+asbl*jb={Cqm8F5%RL6dzNl&=zb3FqVXv+Vz)%#{voTYfWmGeSfML04rSyP(4$c&u3tGg7 z=`SG5ioowCFPi;YIZiI1Vptn6``5u2^1H8*lB}pV6FWl>%r#4j4(u;0Ii$K}Ew`R8 z9}f=&IXgQQE!1_^C{A~eJV@1iduel%9~+eag!wDE#=O9VpU<3sP5$A0iv>a))gOUd zm1bAtxFH58^vl}HW#*2b8~=sUiJ!BzeHs}P^C4q@TErr5rnYeQ;HAD;&1c!`skysg z%^KuF@pW*xBYN^@HekFdQ$y6WT|av$2_s4u0ZV|A3~X!0crX|}?G$i7=!z#mw&KD- zfFHKB*sdw|-O3{!ehFx4@mfZjq7S$=Sq*nx#H#rUH;zbv0VlpSMB%FwM+9%ox*k{P zq%EGT1hics*%~ZtG|tuBfH?*anwUQ9ybB8n0+lt4FbCUYG7%51SNjW$e{~4}0oLmz z^1pn%*ynEUdQHIlX?KX+Y)M0LibkV^EZu&a<3r6G08Y8~@fT&D+iOp~tITS4ZGU}H z&*%P@FQn=didv*?)BKl|ccY^TfgXwBxs$bhw%zg6bWR$VbLU5nQS>rn{s%}`0UWwO zg;j~(?fY71@@R5zd+;+u5a@1KLJN1;EME!skf^cNi!Cge7BHp_O(QB4Y0-goCvbzK z?6Q|I6>5W@mMYOCLzN~ZuSnbRH20L+S21hZ`>L{g2K5Nx=jFyO z=zU@CeN(?3k|?eYEV}+FJEE}!oYp<0--b~xZ-zxwRkp=V;CvARl<4BYUz~OHbI%?k z14!HGdRe|`d_zN@H7y~q694rHks(C2D`4P5qOy2}ey_(qCNVO3aIKX>t=bn1zJCJ} z9KnJ)DBcx9bdgh}Dh(sXI>AU7MSoh#rZ^2%m@YbE*_M04a=M`C`d%`fxj1tN(F*^C zHRZP>80u z)=b5kkM;CH4$>(7+*4u8x#&7<0J4VjRjmKDz4t}hhmi<)TNh9=MS%q^$jyH~8@BnM z$hGd?L^&HheH5Ec{W4M2kq@UO6t#XK8}<`~e;Mt9Y`5ya;Awubgx{!Hy&Q8~lJ1f9 zhX4{cJM9 z!8avK7p)tdlp)+y8CjxRD;+E+CViu5`GVrQxIGDV4HkF=Jd9l;&4Umxr0)?7COk=OrT z<$pc~KhAFBLvkw#|D#2R!w}dl@sbPRXqh~83~unudwoi7Q9~!D)?@3qZ7+EY;AuGb z=|6yOx~do-i#@Yz^Kc%@Ajlj%vbMT$OnU9x6xL>YuOaBVxy^f!xB4_cUFTmcx20@m@+VIa8vSnbY#yd4SVa5;-mp?5tglYZ9^ zv>vK8@NPm5ZX`Egh#}BxFMf?yl_faZo-5#;9o21mcJT|e?O?u6ngTbDBb2@+8UZF-B)6ut$r)6G<%i*;(dS;PIUgX z*#&dd?bpz37pU>{657i2?`>|jkej(lpl$IM$fmupg>W-2bNx6+f2FP6_k*j3@>arS39T9n_ElN{E&ckDgRoJ)Es>rZ(+oyA_p*{P{XBBg4Ddlw2LRYDMS&y=H zS+;};NP=Tz7$+#YC%Le^n+Eus6(6eKzRH334lgo9O))#$sLU9HalEJ=L>obtKR#)O z&VCxn)?NYISsP^203tno`}WNnWzIN;V^ZZ;KpwgN|L@8M@24-k+mr`w@Uj*0_@G&N3x}=JMXE^ zx#j1;omkn};FnE{PaMEE4(n=MfKa-YEOU5pn}g9) z@?DA9s|ld=Ie2?ZD5!f%OuL@-0q;*T?|6yxH$0}?C;d*ghp7rmK|8!w!fE_ABe&BZ z8&%kPM(rFA7Q%os1O8)BjEM|CJ$Eht{XXfyGSNDo_JxM7O2EGmF$Pw0TE?6AvNFx; zOVTsI4IQ#?TX}$U^Vje^_ZDTN>tS0$gAIp2c&Zm=aWcdPR8rsf3Rif=qN40`4`K46sOa$u_+@< zn!6V_ZbmF92J23}eKV^?I?P|?psSd!{{f2}$!I}m20jztUx~n*s0u$ip|S*tIzEF{ z2@XBAE8kJme;sp!UCt%;*8-@i;Qc_BGO??Nta~RvCCX5oVWbUp?xuf)7(nk_P*Kuc zP$5w>2Z5W1LzT0}RR)@Xyur)CD$Q^O>?JHb6~SD2(a#Eum% zAwipZ6(KvVXg+ySb&1K)oii?m@I6QyxjrO<$@wbG#%)lRNUwG&ryr;U7dNzYz7{DE zRzVu#6!BZ3kY?g03Dh-}7MI58B$h5?&}mRYH2BME^JLh_N|z?m1h8WLuxb2(_q||V zuj)xc>dtbdlAge2Jb?7PJiWNV4O((y)rD$WjyY5!md3uUO4hVd<%rHeV{p#T_#6MM&>`@7tQ_Pm-1@ zuU26<8&FC9`3H)kjARG3q-;O@pxi4=b2lgKQ+OphUpjg zCtiZmmaxjP;)Aij+?$|N8J%fjLh0NBVl9$G0fhpH9gi z7?H1qqk6Qe&0$+Nra=^K@97EngLw5S!BpRcc8m@!fm!-Jqg@bAh@FNjwF*(Oqm*rQd1#{Q*v?=T7izLuNG@=;cVhmG-SvROMgcKwGR0T@LZ{pjW>NPv%k&8#4+xQriPssmERvIfCgwJ2u6eR`PPEtYj< zpKlpD4;h1}9y8D|(Jq|E@O7KGH+OxRmM$YlDMfTn%(7C84IxCq)*1d`VFBZ}o6*01 z?pUc=`>fxY)9<=#4yw(K_^xeGrFqrX^|b1xgxD46w=h?ulsCvuTS@&+(8cvNr^FqK zM?jnu@}FPpD&VQ}Kc6Cqei&48+t&vsB*eo5+e;+ieXZ5|x&$J1as__+Y3urd@TP(M z1n<`iAQ4-5orC`oyxh>=I$LK!DhleFFLQ6uW3ZhtE({(_0n02%&Tleor~3!`#YG4p z+u4sU~pLZ9ov^WuBm=_Kk zjsQv9S++z2CzvdOo;8IaZ5Yfw(VUBfL`E&Klp!CZ1vrGyBB5p>Ztsp31J6#EQCi@Z zGd4WS>8#;+E&GQuR7k}Ib7>9&(Ad_Z%$-2Nk)&b4E1@96``$+3>Pp2Nlsu`v;)jGh zPz(SGM|sf^CcB<9H-?T#L}oc#*X`e4rT1{o8*YgffS6-vaL9B>p`ej0HaX|Qe#C(W zw7-vr$YbD67Pymu4H=G!R+KN2?uWFX(-%-Mhz~{$(|YTIhA)ZCos^c7Lx=s<`~a$D zO&FJkXBPAH=QDCO8W?gqf6yIaCGR0l7Xw4ItagUNe5MUk2QE~5qd3dF1Cv(Mx8Vsg zZX9=cHoVNB(o#oBmOI7gZT}0rILXLE&iMeCTM6;6bb5TC8&NwhPaWS; zBLSQkyzd(sL38ftfw8YIe?!8`&JOW&SrWApnw~ER3?4|1+7T z_XT*%EggQ>VvEs?JIw0IHS`ZKThb+l`gnA94yLxXb!6Q1&)Ar+&=2%kv_qG{@~WxQ z^Ne(I9;VFiGc*1J?)Yttg{z*E<__HVx4s&qe*O43Ed$qR-o67}ft)h5IJ}Oy`y7&k zCcRcNI8^8WUIMHGT8Rw78Wzg%vPkyN_21YpD(Pk-sy2vva7JN@mUMQM-?6)3N|8ey zlE#D6N`ECV8di2^l!&db&qd&h5)|WB&GWEXN|0COGm-I;hE&K=A?&NtkTu^`Db}+% z6!ze&>YR95DTjWVuaT)&s0)28)faYv4s6MIh(H%Q&UxMN)}wPb^W3)bS?0k@_Jj^R zG35ffVF{!Nb*?ZH?Uu!FY4VR6s*C3_k5&kx_qG~%XbPG1RTHLXYqlt2lJ=&Vjeq_$ zuwdX>VpLYm#9-%v1nGU>Z`jw5{FbUvuu%qTDoeS3TFdo=_F9Z;WnK&hLSCO_`Df_F zHTm`FB6Ks%NQxzmSbgvS6*+oxuQI$|L%P%K;Y{_UJocQ2DIO# zr=GCohqtX>$Xzc{o# z^Ds3o?)zaD*S{%x!mfg4U2AhIt6`@w#XE!M#<-&uMaH*(;s!*`=hJCF`5y)(#pROO)DhOW|q#`$1_3L4f`HWr zgaE^$o><~oHii8YO_VcNx^#Sck1Vf|qC2_5kDh+Z;qlEol*WfPi+WDuB$pEkQ`SRY zzYElp;1TL0(KX2wNrO_}T_Ob4Xp{j5^)%DrVY{5e9`*S8q+@IXm)E$l5T6;Tw;?`` zInj5&xT!B`E4e(?BdE2*3q}LA;q5G{oI)JGbtLDxgfG8}tKZ}_nmsvsl*`*yUFNlW z#3;IU^+B8`AUM#UBrMSFx|R9oc4D?8PNqZRo}OxGXbj~AfQXYx(iC+oZ`^1Ygv>E_8LQdtcUfhMzL^Ma!S$5_J8kdH zMXD)AwxY^l;(k7>L zr@G|~dkD;R@es^Td99=@V=RDun$1;vO?xi>N$s?XI`HgJiD6}TPthD|K3*SLac^yLZ}{*m+7^oE zd7H#U8{Q+TK4K9TI?gOhJIiElxJ@Ek7r7R!VM`a>VL6j;>U!u4n|+gB2>x}%QfmEC zQ<%rJ?$AN`fp~+AUSfje-cmrY)E|)`cSK()Q%!DXwV$dy#^aF^NdaTBq>w6Vg87*uZfx12+@ePh~jE*Bg%@vAah64^zOd` zWFQroGckPjY7qy<#G)pS4ULPsL-cPc=tS+&D;p;IxYpBCwH4rN%4ABPkTWmnWv`DL zu^RnXFVlZ;ly`{*O?T$?*%i-^#rtq<&`Y?<(YcVXcfe_fhcjN6ceVZ1Hc&-hum%PIVgc_~CT$???y}=grA6a2l z+;tlPR>ZdM-p+?-F?Lq1e-Z3k?^g!;OX5C35D-uYc>n};4cHax$OD_jM+4;mGy<;NbU*{2hSeL6<>9FBv5N%zodF92m zv@5BD&sa23EOPOT`B5Oo_?q`1PVhNxJ}Y z^jXzZih5Z@3)2V;Zgj-07W4?pUDg{lvcjJsa};M7Ms~#~$@b4r4D@sfW8-!+E*w&? z1WD>#Sz5=?e`Cws%SsC=33T*iJUGHfDf+$!2sJ%I^0&p9?Pgk{2e2P7S~wfs4SPly zlb68ZgF@7O<=FIcKza@Fkv}QTvi`eTk?k>6-8L;847L3PP+1Ea5e7Bb0va%Z%F~2P z5=$?%J$$b>zxW!!?71=omf1w4N|hT54fJ8ysX_@b!-?p)NIAoE5q5-(NYr(2$6wSM z@5&MpbZLDU+n&GM2Bc<%0E7E~5{O=#rREMI#)+P{dS{}_t?$L&DOrngIqgC*zKQ-2EjL(@W4%CKv)YH&_9K8IECso1on;Yr zr4M@ymPVPDiFmS-6DNN7L0ZUT&b}b<|Mqwo80@@J1M>tAUS2XNcVE%lXtH%D%6}U& zZ{q9LE%Kdc<<(KO0QHfr|K{qRK--N#GQiWt2H^P(G+{p9j1mtLl3Bs*$jZr$o8RtW z09HT?iZh=_mpPEW=y&~rI8xT~eJ%cG!_l=iE#C(}b|Bzk!-L7zhLDJYhv#^ebigD! zLexbLbY(xzdmS=au959$0@gY*3FOd^jA0BE)CHZNhjq+-L^L4yYL~Ji!meZ(C`lOB z%OEltAzpEqA##__v-z`JciK22n(b9C?)X zt!=@`LyTupHnN9XN@cU8p2j}|^%&CCSrv9O9SxY2+u*VZR2eqKG@0@}V21NRhqS+` zX<}T8?Iu1#wm6Pfo1kWF1$dW0WNBt)UD=o{NGA}sP0x)ne~LJznbDk{8jcrw5RE~4 zJI(pmS&xO57UYk*Yi{ldqarG3!Q;+F#h;}0@t`&J*OvcYS_^LoRvmh)xt-l2TRX_`>g{nIpL0<6^O1)z=@jU?{ZWT(aX<(OVdpZ@eM0 z)zB!@M3A3rbCEj2pVrk{%eB?5-(^QgpfaV$_ObiY!X1|6YTZ|jx$&lH#Jl*GgD%+m zX2p<6TnWKvb?L_y9!1(?z8{u>63z;b@AReyfz~LU+P;0*$&F5#1pI!)i%|MEeQ62g zko-g%t+U?&4I@UPmC<=2%yr)P%m9$)3*d6y+WX-E?EP8^{7926kyTRqnl$>n9Took zCh2QvNOZFj_<0-{_Sd0nJ9y|q3Dn_a^SU7u@UR>iJzebxdtGi)!`F4g%CNC;ZNF@9 z@A$d=TlsQn`WhOsf)#D^G$0G}w`*4UMj)EpoRxWUgz>Nh0gw zvOE+YpHJ40ACGilnW1G1%)q|?)Vv#IJ;i41US9@8kduTfE`Tbg!0wd(jT+<+}0 zV=23e(UKnfV4i!#7$S#*i+d{O$KmLEfK9@-5}mxtjn3knJ8H;ov$*ZW=09D^z70Fheh2mIQ0?So%mzNz2tv-~bt_ z7K|n#f>4D}orkbINSMiKt|9(gZcT4)Bn_B%)FCVM3afY6lo&x^Y)049E>R-d>es5 zijnFW-;h0pU-QEMugvO8OR0o~13}16Q1}W6Xb5^0GBGi+n#t}D9R9(kSat{O57BF} zFPO7-X6(9~;YaU zk|R&BoX-6nk~MQF^uAAuC|d6?ED&De!vE?8@~2yae5_I1LMxv~&WHWYkq>Wfn(ymEFTT1GI%Q7;Xs;vQ!-Qu@rf*ofLAbx9CV76Bbqq?= zT?I|q(g)>zy9(0N5fMsnVHJ2lxE>5HN};5Ked8KOzC99y{>dzzNuZ38GxFXTV~@^V zukEmSeQ`^_c|xWf#SvRY1BO_44zTZn~X7=TqZu7Es{})1D5#E z)2seGXm@WoxF)qUF`16om(zM^@u-`t`KRXPP`%pH@-Sxm_u=l}1Ru`d<%jd2pFl1M zcsb9EcN*+^LADg%uZML=H<-OoRi+hY=9^s3} z{cIs=S)j8qKVBNR#$TTR+Js#$^?$4XkmB~cegbU2-F(V4{MSI!R}p=b3NHe^Q2`)! z0!SPVV$mS|Bu|hAo_9a4+leZpM-7YA4h@Nu9D%skFGDNFTv^n$%}$PvTp9Ar|Ezwe zm~R?B-85#wB7g3+e(ZRzM38`{e-RRZSD-gMea*D*IRPjMV`H#hKl|b6g@a3XwYB?4 zsxzcXyiy)7LY%fXW$a{sN>)=AG2Tj#JlacVH-(ilM0YzYWEKV;BPlKK%4NYuHyeVg zR;hA@=yClTLCAP!`gpV~$su0CYq@YQ2h&4IS&sxov1Ag>oD4s_nkpZ=k<8-ro2zr^yfs<$gb;R1)fRa)V zvvByTNK8hJ8y$+nMca?5^*JSb+lQz+y8W+UZ-S}?M>gRZFM|SY1I8tF0R^QERw1k; zF$;#DS2^;fKh4m71S2c59G>T?KzDB&?;-q>R-8ULuoi#vjcIsMea*PHqhB{ zzct7#W42nlUj=Bos5FSfSFMQv>StD#{5{{gMsL?NADRexc>H%hRkaL8=MUYuuIPB( zs!kSja#5Htro8@kxs5b9a4R#fINJ08K7l36T1+g2rS)UKak)_-p^kf51@_&Evz6P5 z;l!LD-pbS}GR&x&b*ozrl9Pc$w}Ts6{wz>XQ2b9%WsMnYyoj%6Xqz8#F4rGM#0Wor zHRJyXe02KgeH{c_HQxi;b;kwp}^5(IKRk62!B+8_8(N}#9-#DIM570({A;K9X`@Y>i%tveFIRUq*B~_?m=ao}(pj2m zXmKY({b!allVOU5lkEEXYY}47-$vfCiPqH^J~pMZu?Q%`rGL_TCLAWDWuVuGr6n5F zR7*uj>abn%Dl zQUlw_-!i|JzQr&O*s?=p)H>`&W*9Z7I}0e)TRzSw&U~aeH&x(ermR4x8V?(gBYa|v#yaV|0Zu)?u_@g1ZW z!ok8m8zdW0sKGp}+OTH3^rp)PX^AH%=ph?tJAeED3$7Bv<#T-ecBq2_V?uXUaoc`i(MOidi$xmIA0X)@&n)S!}==j%OPHy_5no@9|Ocu(-M;SS7P-R7E|U`v&P=xw$*O?&~=sl z;C5Y8@Zyx4b%*ucHi-SXSFxslQe&?QafS0XED=%lR9<5Ztq$CE66SlHC3 zZ|G{fo?P!7Ss*mJ4#mNN!>DQ!qkfVIE7{s-YPuKU>RTZn^tL*HbO~e%FxFW+NN@A* z=n;w_gIYl(Vz(84WTz6!srg<}unRZFjTndWh^nT&$Dp9nF_q94A1d*7##xBYUJl=v zCvrCV1!@JToal0hu`tg87PWPwziJrBm{K*iq^F%CB9)^4n$Ic3aD-4Z&@quATm0yw zkPkN+B=>%wGZfHm6tiUd#B)uf0k2rBb*gNd5+DAgyx=^%GtfD(?}Zp#u3;7e^mj!W z#F8}~CD_TqA>XEW>3+~@Q!NI`|q1(hDlNjgk(h=pAdXX2D z!)QT0|3Js4Pf6A4n|J&dZ*yKPUrIrS7jsPeP32DpK)xI0?1$6?eR7YY(l1Rb<&Dy{ zi*iz9H@T|f;>>+pCINTL(+zCR0G_VbqTL7LoH@lhrLhSxZk7aDECmO<9uJG7!QEJ| z@J?YI!_WTfvnR!@(p2i=GI4P!)z$X>il4!5>x%-M_0%(&SyGz*9Ei(zbF;a`$QM0s z)`uMp9*Mr(_q7Dnq@ekGY3FN+6bN+s>QzgM2&t>{y{{|#FGB}_%$6}lDVHkm4DpUR zXaZgoh^oWV0**H?2G+#@!%l!rQ}0gI4-Fow zxNXk};M8Ja&6`P4C(Ly+-9HFm-bFmi!(|Knk!qyP6;TD%_hLCFIMn`Ri=5fAd?a0)SPx({w@A1rqP%gWlu*geKqDuC3|a8+`HyE65|-L+Ok=J` z7}H!_oL<+?$L2t@qx5wi+zcI7?AFNT+>G)qAaQ=JCN2?n-pTGMTq^)k%7dIuKtLd4 zw>pJnlk4&}F1Dg=S)*cP^Nd>^f9JH)@9;UeA$D`FC%PvnH0{R?K`E8V=jylkUolQz z4xb(?rCxk?o(|RPe|pZ0)ec`h!fv8RsHhSWtuGQr(l%DQYX+3H-EL0EpL9Ktngs{- zzFz;DH7?1x8~r#f!TuSd#l89RXJHoj%nme`k%<7s8B*u@u^l$%1-#Mt4L315V9tAR%N|FWSv62NPI6Z+< z+{q}L6IkJ|$MN>e4Z$?xDZ%4#yilS{N2a#6S7%e=c{x;Rd;7Q7b3Q}~FR`N5TeFM| zsW^4@PiFCn9D?;#*n`6wYO>=->7|TmBA7CuYB~EyJhI%9nt6*9YU7sx+e6SyQ~#ru zw@sd%IkSNTSC6u|F|mmNib^Pd@tZK4I;vUQ{PAQ8+V_R*Zf%Sfd8gYu!zF_lR-%xQ zfBO`uv#vs%-I1}pQ$DwGh{+VXi~38m#4N~ zG5(g*^yEj@ zj~}HcJO79zsK%r=i#rF8)B_2_mrc##MilFjD7JWZoE0zjDfKrJ5;t}*Hu+M z7F#YhZmOt0g~Bk_E`MljXdsBR{fQZ!HRAH!-a~?#l9o3OCrM6Gbit+PT^@c3#f!N_ zJD){jQdD?X3`)(|hqh!Q{m&AfXD2Wlnl+(M)JXX2c)9hzRJhUY8fAiSDLBxw%I9>0 zyAn`r>|nv*Q&XpRf%DKeP%2EKzfg;^TC)eyRoZ0ZfZi+z{B-fBBQ5MNtgEjisU@jz z-f-qLhTCD|iZ=f+=;V$jC*Y3@-@s2rRfxKjj7-9q0N81%{XkT2RwvP$Kew15HQWuH zOvfENedTg>HOTv)M(W|_cC3|~>0s+9RqR#?fX;fPCL+eFCU(pJV}+YRvDlni)` z&cZ_llLbE;_7Fiv_Rz(*>rqfpqt2d?L89}TX*=w(G;v;e$eg!&ZTIVYJti}89{aYI z>u#H6#?Sl=8)iP;-cQ0`1DV{YP%GU_&6xGiM-k0sDC$dfON<7j5t*|gDOI+%8=hcD zS`LBLV|5yK%l2z6wPk^T7{xvaCPOgfp02~omG1u)oe4f6VQ42p2LxS8W=00D)eOP& z`Tjnn6!3X$Y|QNqI^gT$Y1KeWO{=rl=L3*O_z8?k^;)9odff?MSzHnNCTOhd!xe3yr!2`$3ss)N!Z}xe6xTJoBx78D zwvM{`yheBo-m4`7mV*_KK@gAoUGC78nom$z^Qc;<(SZOCbQE{omDp-MqB@zRW^{Kp zln{PLbWcCqR?^F|X=zUhXrM^ewoHvd*TI)4UoK99B9ExbcTNU@3%H$?6OX5-JWK1d zyV{W{Iuc51$YUz5R`3$6E_V0Pn5d`@`h|a#(YHe+7)IJZ7Yh~2e;2Q9rHK;sr-d(2 zPDev8kVZSEib7B|=)R`HvTQ(LPqv^*i79IIFilugszjasi!maXyTO_K@1Ole)1yDx z0`b2onQ!B8wmmR^{yTJyORX0>M_w|u9 z88RpvJ0&uxDwA0ZAXydLQ7_*L+(4nDC+&qsJ-|frYJ^j2SW##UW~2~CPLNxqJS0x^ z&n6CP=jvTf1U;LPj~fg&Tv%n}kUi5uBW)areas?meLrb|3U01p#Hwg=mWV;oL;Ol+ zm|QRv5QOy6cqyTrHOIZfKTCZeX6kk|UF%DjM@V zb?;~cztH=s>wA%9Kyvx`i9H|2zjMxa^9e_=)_v?X+5)0o4r)b@qUTm${TK{u4t(91 zV-7fbeZDi(fu~T9iHR`+)mq2JW$VX(wT1+^s*Jj3(rp@BSWwdoBYMPU(tlR=@cs|E z3Q`I_KYIfJfVN;RaGsW}cDG|tcyvKQ0f~8bcD6`mo}jPh6+8%O{Q3ELbaW)L3lbQf z3nGY@D$_7AF|EgsKb)_aoeQDQ&^_3-TsT;-ue6=PS){cR_6&=zeRqgKCV4t{+#zA;4o2H}%=y<(H9{otth1iTfc#tUtknGQs_D z5G4IcNejY0qJ`;`@M>9_>)BZWYuNh=5AEDCztdrZ$K;ZcP@ynPRS{SYhSLD-1BlDu zH6Fx?A!;J`ynEJaOn5(762}Nil**$i#zcQm@Qg1GY_D#vug;GIjj*>gJ!1UcN{1i| z3ED5-H@h3xFNtWcVPs9G8M{IGdn=s<~bYU~WVDMw-h9*h{U8I4s5H82*uSRSg% zf+m&}lQad7hAr2O34{AdyIy&&e2ZL;noO!UB4HvuN z@bU3MQL2y-5JW8|LIW1N<{mZXZU)z(4Q2zpDE(B-CM~HU`A8m7kE(6(s%^=rneYVn z7{{T4r>32&4i$>8bBP&Qs_}lXb@5Metw%2j;9F_^zEK;lHwIz3+nzeV zqK-K@P485m+C49Ll}P8ZlbY{74P|33-D#M68psG)xF~JzBRbo_z`%? z_b@us5p$j^iMX;V=L@na8MHUZJv|0I8r+LHUpHTP^%Api@O)13lyCi~E{GHU#Q78& z_zD1tg08m`$IT%#;PI#0o;eKbH;~gBu1&PVTkq zoC$EYr>Eo=v#PaK#zWe!71VF{GKj&vf?Ml|9qGL%94{)Oq-a+q7fXlvhU=1*aaaCT zGZl@mo$&*U?aAY$h*ZG&@p0URkkZmpiZJVzh>Z3kz#fUxk%U}HXvr_O1c>Gb3&jXt zdc8#n{*LGEzdkS=MP59*AEdwCf?P0K2BI?liCCbnW^Aj_ING&Dz$s9n$Vg;3{AQ&Y zE+^-mS{;a`nWB`UoinOU9Mb5xYa}c;aZmk8H`bAMdJfKB7N+E?skrf;wTY@GD>s;2{(sKLaw;FiSyiyNRlJh}-41z!pQIV0? z-tYh6w(pj2VADeLU=+gm`Rzz?P%}?Q$6(CrEi)g{)rn+^p?aQS*&j-|#hz~-#XI;J zVQ`=b{Pu=Dn{j6z-p$>oN0yhDmXHiH=@JLt?lCR%6AhnuaCT-PxdjkkFebWa6QeX8 zL{Y27p`fB_adwwtzyau~$SS6?BAdLSl5=!%&iGI5jS`J9Dx6A}k*?7pnvRaKJ=P-W z-DM%2ZxFmy(S{2_5RmMt6!w>M&Yn-P>7^bG3P{@UL$@#rOTCy#4?hP=u=yr7yy{k4 z8eTm#=Hx2du{G|P?m4=anjaM~J*8a!d_%umoR`#o#+zTe7SD8*-GRef~Z+S!=^=mo_{ zQ1gfYI`*-<`iI38&yacz^Bw6mot}OJ+?H3%lr)y8!?NZaPU2N(S<7jT+l8Sd+F=~{ zli7a4@Ksx~J_~NM!%LXqcWre=!MZ5Hyg&$6Y&8b0g3eA$M#xDqYtsv9)C2Fig>i7W zo&vT$O5J8SSel+a z1b?L!61%A#g?a+iU{39(XJ%seIB9<*kj$O*J2w+mYwI9s{f>=TP@-2^qtW3FCeh}k zGZY%r+oYxA8=#wDeq>Iv2g6`EkEztNw5Sw8bxM@6f(*h0x>w5JlkGO?-> zn%M)};I!5ovxctuZU$RB!M}3JC-pF;n+(5wEMO|KVX_k^akn>GE&! zxux~f@7l?TaPUZ?^}=?syF1Sx`vaArtKs-kspx-wV?k)Z=gaYeQif3SSm*^PwTr~x|t8`*7F zo2&PPMP+fR_KT~ha`r4Ye0eybi>0_vBj#tnP7kS0f5h5>wS}=I7q9B6yqMOt%-@3I zgDEyPF1E&dQ(A!~f_r4KI>jSeS_0_M8j8jQZ}(fcg~NOh znITP3LG3XXO_?FiEUu2aZQf`A5F9|H!XLyLUw?C+1POzQKOgD>yQ`RhY&<-_3Bx~4 ztgWrX829Fws^M00o`GsFV4k?sl>4~cT%rYvt#IL3eob7?f!%iYWZ#WN43eK*GaQBV3R)7 z)ZBLB=%!IIS5|f*&tRt060bbIu-Bw}lq=EO? zx1>xlP5;E;KC<#!_GuHLdvcMWI-uKblHcHPYiw?g{#Rvr9x>S>1F=1^c9bZp{Yr$x z`p9Qr?AXYN<|m0%Xl#<+=d}ic<+0O0Lp3em-ZQzs)lmVk$UO~Lm(ySzSFuWY`<9H8*!NkwVXscyoITvN45+jEvA|u^Wwc{`=~)U0#fB<=Pb6%{1$z ziqZ8&F(VkVACLG5OJQ&?lQbc|Q(&Yw0?lr@mpW;A4erIo3=OEn`P;D9@r`pj=guXYqBV#f0@-wbB z9Q}@13<lO$~*2BxZz)n;^N-7fAu!ny4FriB1Iqe|uGY(4{3s#T*DUFkA9vR6NDxn%skSvTH z0pa38g)__Is6tgnqSspVJ0b!O9)7;tiP@k7%IoOlga(EgD+=1{>U5#ZgyQ`_^}+wj zZB&#a2{-rT?^v)=_^>~OoexX!pXSDeQnhDcR_jIe%D7z@MiK@FMi26T?mXTw`}z5< z;%&;9WIJPH>!@^FeaVhM4dk1kkn<6V!!ofWO}R&crD*D$oCRM%qhemJL-qJgZnvM0 ziIv=Zgh~IWi{HE-&{$jS_*MhGLn$E%u=5wgM|6dosckdI$5n*YmF`R5=mt|`4pXDw z+v%l>roQkstnxCZw$ROAj_-_fe9v^Ya_Gb;7RA3j2zZ?rSGT3!+hoss?`nfPf69*= z=PR~+s)XOxW-!@L-@C@IfH`2bEFp{tc-raabhLJU$8|#$A{SUh=zu~Ns@8f*He#~} z@dvL3%>sD-n1=KwHN;7Jk-2C4`? zfe9kN0-)xDPZ!)d)k_iUzgtZBr@MX`(>k-nr-qWdC1_DcR8O)|o7Q7%VU5X{xxIh} zonbrK2-LuB#oT zz?&c}Pq%-8!qcvRse?z1pfQf0C=P&9@IuT3LT&wbp4pA{Q`_~4qS~pwY6{Z2IlEIN z&@PO6fcD-yaUrv0s;Udv7^hNKlFNvs$d%L*(41D#9%hM^31gAF(%x-H3}pfG^+(y| zw}^ERm`zC9%HPz3ZJ%b3rj*V_38sj62$z~L%SYuDb=rKjWS?x7TN*8Ah?WmTW@@8Y z_1?5>4J6qcL7QQu^PumYFyJ)A-yf(%FlV}FlZ2P6aD9&RoB`Jo>?8e; zJ<}+Y{bh3!!cc%60q>_rXt9v}FIfTspIZvQnEXE`vm0}BqGbyp7*5N~a4<9i10&-@ zEvVIEV`qOTBs9q{^#47cAz@var z3L->j0U})Cqo!^k$81NiEs!Gs_VXX2e811L9D}`nj^HU#o3byUZ-;?ikDEzJq_L?cKG5pWe34Fd38{yJg_kHG+^g+2Zj*r1FZ|Jd@W31y1D2bHx2|ZvUf^61s9jJ;8pg-R zJ6bnE77?pwy2s0{D8Y9SpLpB%s=N2=;|gVojOgMI9&N#A!EPG7Swlnh{xxsHu z(6SE;J;Q{7rF!uj!LKqP)P-OO6Xs_$Q|KsqS9isNK75oDXBS2jCl1IJbf=Q|7v%5z zGx1S@pjbM?PpiWU!GTdt1dR;e8VAQkl83AK!Q-{%tsIafNc#&zO1^)&9V4dJ`W=6(R=2DDv|P9rq5~kbt=>k( zRFnbr8hA)Jx-GQ$B>FagX0ckLy1)h;tb9uyUhjbx>NMm&+%LM3$vQIVpK0lS2v=I< zwAU%wPzs@qwJIu^5vg8nc8S8UIQv#r+jpg>svL5w_}SeK z#m{x69w{N(>X!|#wN)9d@>oPPr%GLbZOD$tPD-Fid|h2{hq-`mFiI)Awtx#NbH<3= z{2l3>7@`5 z8g!daxvo!Wwh=@?G;g(w-)q3dJhV7RBt%*jX&Z-}IF8_m8Ww(;X%TAvbgVoHl^=gxf>^Yruv%R0yb^ zW*QbMwiBCE-(=s;1ZceV{d4D=aQN_>Uh)^`F;w%hxZX?y{)o@U=xWR{Z_F|7B;P+; zc{BP>ql)l}RGva3s#~lX;f39#L~}Wc8I|VF_D=q`{i%N{6Z-5@UZ#ANcuGb~l8T1L zmX=|Zt6pBCyuAE+IyyJdWDM#h7Rqv|k7t&C`{KmXiFF*B18w%l!P`Q#f zW!Wj8tqs!&*QpvtdMEeL(S~4&`yOFWzBb;miIVg6Ws@{nO(Qx!DrBL$#zurL8ozL7 zEi*ex(5j!e9lD;qx1Q&FHLmtRXK*LsOjAn>m!H;k$*F;D7=fSc|80+Q$i1!%xj@?^ z=D~ii9e?cD6UzIrD}uPuzs|Ql6G#go5J9kV$xy9Oh}poIpfE^s%2n`hfFg$Kz12;h zQ0)gRo*wUUHf8O4$U(+g$3Ag+Y6vV3W=buR){&FdwhCs>`E0l1o`b3W`6!25@&`HQ zR_v#LnYXGoxEcBDK!fQDgVBmDJYRPjQ>iHDK_*~+NL;U*v$U>NukqGV+aRF~|3(cg z4Y(!H_2Amx^qipM9km~yPz8%2y|JxO{{!5l3yJ)U1dp(T@TA#~$Hv@nMldPKN4B2j zfo#24Ja*T*l=UEYQZR}f4o>Vev-=cx``$g+DOu?^#$Ra{6q#$23F!dVamJ8AA1J6Ie*~rJ@}(4lSoE^?yCNzwcpbQ9aig5QknN#a z_b0FjucmocX?rP&AWKJ4G;}-Pr&(zT&O})`@;~f3+Bd1*!uYo7Zr)^uiN_;KRClJz zk?9rNDa|o4jod-0xJU$u@+q?xH^DEb_sOu1pW^U5R%ojEiD#R`7PG{q}I3z z{ZNBwr+uRT^n(8%0A)d%zSH1af*mB;Lc?J25FXBk9}doW{7a$4HB-GStPt@1E=8tL zVB8oG7^HWpg1PgHN)|zjgP|j|HGsnM>bj+?8dg@&N)@2+ltdNq+ww!g)&d4Z>iAsEpsbYByHOS985jj zly!V(=BZPXhE0l|!%Hr-$PYARbal@e*e`2tSbn{$;mo#;XSQ~H(6#ndQrE_&u1 zeEaRgckaAoXmI@5a1cJ=JL(Mx2oDb*KKzc(wqe7D$LHXiZ@vjfnwy(-PfJWp1l_Ic zjCAhYIqkF8u3gi0Mw)Va2J3?`%F?S)Hev0%D{r6}`HFkCqIK$WX;@%FW&K+Dss4oH zBS~F@@yCXfyM};+QG45B545HA45oGufiY@YP;{Oeg{Z(p(@S9NE$8Rd?qYAhz}|6D zv}L5Cx>i^5c@imZ0TLY!s*R8Sa(Kc3cG?67nQ}0CI7%u)W2V^H6HH94t!&)gNgQ9M z9LtRD#ZsWup!6(X269%Ra1?Z2{B+)iYFE`M-A9S>n&fP@B)ayXr#R6|tn>>+ijTz0 zA@XyGf?SUXlxo|N5p7~+?;ep3Lv&w(%v&VK$K~N-3e4Rp_JLeN6biD&$LHe{^20@v z`z9?_g2?ud~t*x2dk>8;HLWKn{TxD z*rrXJw2qyRygk}wHA&U-QsGlz7FCiNH#g-;E#3j|=pmuna!60Z{QLr@_rvk`4N_impke$;pr)5Xw zXzR-JZ7W7vRvg(5537d`S9k8Ioa_(7OGMt4%ST%BNBWbxh7`m7vcZ07|7qo5fBe=) z`ht?wZXn|bz)_bY^tw~r-4}R!&a<{%iXlloraZ-9r8udgP_{{cqrsN zfR*GOh6o6M5#xf=^?>E($@HhAGD(2Hz#wT*kW|A#rp(OJfy7t(2r|5c*?QHvzeE{;T^G%Rb5^{)%xgN3k z#H2jNP9s)~+;Y#fr)!38fki=9V>2a>$WHo0ynBu$NfW zx^K?;-g%e0%U)G2yxOf^E~yY79*a3Tsu(#n??TVg-h(R|*G*L$aRq$*`;~Qj^SvY5 zi1^lHo1ZENpHde+a}K`o*8W?+j2jvpe+C@vn8Bu(erK9(|Ni};9~Uo1RV=fzvNotU zEISRBtRN~X3eMTQc{9ju6BCnHUwu{kzlRPT!jcuVwzgu)3LaP$4vQb88PqCzf(G}7 zC?fI!vT;>S#hxvdSC6lLT~jk<_2rJrHJV`g=(((UsYxG_bW&GbIzPx za z5k)9ekdc?onU{q)n3L@6;m+W5xk8a42Vs-T{ zj)gT{3fp{{-vJ6p$-6|ejG&Q+65K6i&t#ZrtH?%gLt63xF&hjj;+<#RrPPF zO0IM-8$Uend^hMpto>$fYk%Opli|S&R}OsflS<3MbC>qqH>u;Qny#K*gCqMkY+Cm~ z4nE^9`k^>@^OrG0do~=rdi5%nVc>~uWHK4kkF(Vqw)4?PA7Rh#-Mcp^D9Fsr44OuC zbhKWeA{M~n@9z&M`1tr}UFoLTEG>~+1)1Xg^f*|uXvy>wBQU%y8)`0nRaJctf|ylp z(UeUo>)5mIEyTg>t;-j`sw#X*1$q#L8okmz=X}q+i`_}B?H~pdPYj{;dV9yn=CjsB z@355(5r@wC6;y=RH>1|nG|bw5k+uC2SmfqGJr0_g+qyXWW0eQhi-VeZQD1fjfDiOt z08JXGwt%1s4wC$0XB(M1xdm7|P70{^An|+vf-IB-h6q>VC`f7)f_$S0Wrn53@nP}! zh`iY*=EhbI?gE)QHMg}D5l!vlLX(LJN@A=6Wr^YCP}mA@zTAteFtc_Bb0M=_2uxc% zO0$gTD?KE6#@2Sfnl;NcobN4EP-1fY6El2c((QbL-31Ar(fPQje53~x^2jmrDSK3N zwabmSj}JRZBFs$@WG8axWb)=`h301mDP?Rm2TiTeIh+MjW_~6oN@B=C5NlOcRX7|D zuEybTE?l_qM4HAUTo!v{%X&4kyMEqJL13{beZWfD^g>UIk@jYMo3T3EA5uXSgu zeZ?QVfU>5xd|%W0>&F}4LAgekysUy3nls)jJvER&cyi_a|FNiek-vYylrv7BeA)fw zPu*G$HXqg3gH_cvyLU8f-n{nJ8?8Uy9s&Eum;DVJ>Zj-6Gwz~i&cPdR?)mBVsG-5} zXY42Q!fjM4^=ao9O-fD$n=W{8Q{%GNR7+k}Rozfc=)r3zD%WbFajQ@4S$eg5_0`sS z?Tx^}MX#uG&YUV3>%}nw%U)5XwYRy@L%H=kfP{QYF$)t;5=1yp2Gu);=8uZe`!KSJTqQw}gBRucg=7b*=Q)9Zs5(3?3tN~&6OSQT zAR&o9QQovv#7(YJ7lruXM3fN}^dJjG@WIu9gD$ja!-zIJJ9}FvH*Gm24@tiMDq&I{ zIR(Z2d5ZHuV^SiOlz8NQUe0&}uF%O@R?-5(z8K2J)L`Pa8>wU=0wsNDPXYkL^uVqbo#t!kDF(k8SdeUpT6D% zW{glKDsW?CLm(3K3g&`DD%rhTIf5onLW}07wjItq*$+d(u&tNaP2+-n=fU`U$64Di zu(n=^tQ-+n4x@0w$}@uX=Rged_MFE_vdmrZVe3Yt4-MFp37PHN7rfN1ww{H@4^1Q~ zt=WiXT-6KltgYu)R8NwM_V)Jh<{t>b#pgSqY1h4lN(ZieOI38a8)Giml9SET{O`O4 z#RLLzN)G<_UyjAZF^U(*0S!klAaHM8zq)Pbs`@%49;;W?{Qix7cRo9M`yXxJ{XB$m z5bSu@j+xAhK35yY!Rv4C)_w|IgX90<;Pl(7Rjc&sO+0Z645Ce$P-3DLG_0$-SEw3n z)$7QrPUs9c4{a}h1+|W_OiB9gRnT4*zN{*`*b9Tkg_n9WdwM2E#BPRp6U}1@(nM{#VROiIXG+9 zq`WZ>PE==Hu&KEnl`bW5mD+_x3RmfX3z}R$NgWig&h|NJ&Q_ZRi_HyXhJ^^?f`rMT zf@r27%8nQ?iGy)!4o2jXIZA4{oS2kL%|xlv>_{{UDus}Xyk*o&geWm7DF7!-1xW~F z1HWu}P)a&{|LA)N<9NoQ#X(Jmw}d>JOv;u_;Vlyo5E!hkHptOgSg7rp=-baQhz*1qGuV2w<=?lcGxxPO3I-I=;uZ zP-ZxwcIJ{3q@$-N9$R!KczOF}q>5@+fhrW$*E$8#q7SNs>jyCiqIGli3`zJ_BoaaQ zMO2SQuNzKN4J3D-qLpot>}}0F*0S(Y&)oB9Hbzjha^A(BLLk(|?&S>=^M}%Ptr!F` zD_d2s=OEz>GTmKd`5LI>~ z@?n;4U%C96YROeplraCy$?SptX&g%g+f|VV&c+`*;}D3#3W({Y?Clq%8{3eZXjCpP zx&Rkb00aR}*|_`uYSwHcQ!64{uH_)8Jm@nu(Rl<-mTW6)cQ5}0NB5xFvyHtNQVM5+ zgI;WftB=0(ClTYIS}>Yh*sy%(qh-)^Gqo+!Ry|Bz)--NB;m*8{5Q=zVvPT zgnP$;g8)I{{_(W#!Svq2$U|p&yUxe#9|6+ko$KYUD1&d!+}^JA;?a5Iy@@AI&o(vV zHK`=cXQ8>3ZJt!;eO~PjEd)VY>iNipg|Q5i$>{sK9N&v^5ZTLJ+U1fJYuBz^^?kdQSON-P*d=Bb&E1HDH?V*5&eF#unc`yYSXv(Z|P%$J*CuIQV(Hu6o*gVA9mC zP$+&;>JPs5#`f=So;EZ%{vQs`a1G@t`ishyQzllL#KCKwRcZ)k_6-z_^yiQC&mHO2 zJ)!Z&i8XJi*1yw*z1z&aYhdWO_!X6M~#b1(>cMCW@7li(?M>BkFd!fZM*AG@BxgTn zOk6;+)GJm=5+I@HDapfwiE?pK=nZ>|6!pey>AwNaAARY;^dFBo{ zVob7sw%k(~?G?nNC8zmiD=_m)%K;j~4qbWQnhWrgp-e22C=7yNq{s+O7_u1c1Sw^K z3NSe}EbRHON3Z={GHS@m3*RKu(gf9 zcg)zzM!0uS?X_}lVS^@PcE#$txlQ{EnhvBk9s>e$w~Q6mObSm(Oir0e?a_*D8?_uP z9cp>l?j(UMy|b8dFz-fYjgc_Q!q zS9bshZ+_DD*MD?<^>fcxKllFWV^wqCwnN=btJY{{cir4jw5+|o{qxVkSKrw7?ah8e zgX7Oh+{DA?+5T7JU|zx8AX@OU@``EBsXlcOI9Pn4ciGjR>erFO%+jkpl{!PgnnO)> zZ+5MJyKCK>oi0?=?MrGFsuv1RCLPig%5#9HIYrgkor7{vq!({p?> z6#%lZHc3Yi9ZQdyu(#uG;brK43yEg!92T(F8B&-3j);o-@P2xTUK z!Os6-a_on)z#tl)Kzt}ws9V;7>f>umAQ2*C(t3sxJ5Ksa^J5O3CW+!GOg=y`Z0WM- zZQD}Y4!bhK1>27KDofmXQIUs7fOkdzoKYJf$1nnStE^L9k!m-}T-3 zmAA&1AP9CA{Cq_I^DgOdG5_ydQ^$8KZfLA)Y2U1ND^-2|W7q3{Z@>OY2iVBl2eIp5 z9`)J^U(YiKUwLEeH#bij8XSK%9E^*LE1h;*x^(HkEeEj{QMP>LbmweYzY5rQSpz}L zDkp~vtva@=@$D{MK$WEf zUJrty%y464<6w2FkO}wEq!cZ%z^JK8Z83CsId80l1Y66&TzFBGnwyv75t;8P%JqoK z$BXljEEVOFSQ!>Bt{~N{$-#g~|IBQ3%`Am~mW+{@$c~yibb=op8IhkVUXVcv4`Rxb z=(%bRrpp4@S$=$3SZrKaT%4J$?L7|4un<%~KfmXkgPi18c18jxHtNYjiXIYbVqy}) z2z{z33}fmr7F19m49ns0qp#|KN}$U z_YKMLaXx69|KZDg$`;s#f3N_&={HWb76p_lVAS<)luE-7_(tX4#P(o(-&_gv-6c5A00dzNC&|Z23P9u%)t;{KuBgchuT;4uj%4cK?#50Fh)xZUj0%s6=7{bug#7$LOxqQtfj zCY>0zcXdrYvVG3^zJl?-tkb9Bj}65ExmMQ&E_8w~oM|5lqr@Cb|_G z(WvO)m~j87slAh#gR^k|Na~KxMRl978PS|wt??bhx+nxPP6~}*yi_O>&!jToeb+bLSUMcTR0>`L(WPuOU~Ns(X&3Rp;CEPOCq; z4>-8`4b`$&REBI4)vw7qsmeNiGXB^|G_>XBvtZFJBjQ7&aUB>6N3b&if`YvxPRtk& zQLZy90j(0o7TEf+CL-d^ZPY9@dSHSV0zKJ_tt4_}o}sB8p{cmQXq4cEj}`=hS=LTu zb+o&}mjU7tL6E@D3FIT+62Kpo>Z`XhsL_eB@d2RSvgCnjnMAP?gCLsrl;j0+Q>ol+ zxFE(pwKEU$pYe>$_YmhJ8b%?vACfSKlB^^r=inlQ|oWOYIp<>Ks~GU6b5}vJobA4ksKRQD+jk5*8Dt;^K{%ot<+pHgX?#M`%;!ZP&F0Q4j89B9^gUR=vEkFdsP29@ zaI1geH-}}f*TvmDnge1Gac~F95P18O<~yGs!#Mc$4=PMI{o{v@zkh!Ovk(7y_(cht z&~os~jSbphNnL~EdK}Ek%JT5=C@(KRdi3bVjT_zF-L0*yfBW0tYB>mlE|tzUljOiJ zItQ_m6WMa*)4N?4mzF)a1mUYEDy|_Vh`dIxtIDsbDz0@^PWBdCbEs+4uT^z#s+M0< zExy{R?A~bzrp)dRkc641PDdO(3vD^3ZB%#w)ZbY^A&ht#m1xOWbYPU6y>!-WBX?nz zXJnpxGz!@>b0HYpIz144xS$w~BxK$TsGn_wIg47kkWDQe$m#-uU`R0D3o7&umt$U| zAmX%QL0vH?Z2CUUHzEymE3&8pZ!r>*;ru9~+JA-w24Ia+b5NXz6sTHqqE*7kJW5gy zDIo_Jo9`Kqa>&d!vm_+u`Nd^&BE$h%GJlyIvyc@1Bx4Z;sag&O#d1PZMZEdausK=b z^Q6Jq(y)vqTQ_GvHgn3PYR|78lqPC9$ccNxQ=?AK&JRra@KSeD>R?8APMb#=@I(}B+cjCc`=So&H$bAHT8){Ppkh02s@J6da|Uk zX{ABbu$h^8S^0{m%0Y2tl#Pw8p5)xHso~qNM(_T7?(Xdiw=dOv-z-19GV|j%l;RRgD+ig{QSq`h6cy=IC%Z~^;@@Y zX&?UakADR4<>%*XISBXjzuUa1qoX4#USMnc^lsPm%q(@;ucgzRv+7JU${}+DF>dK= zh=U8SbT8SrORs&^HgBuHaRNYD`l@RAYpSUFr35a+kX8xDP9+>0$>=*Bb96+oZyY!n za}=$5M754$Cxou=ci|>`M&-FN5;Ypo!rI8pYvtol z9UVq~VncI&fazkk0)!@=*4 zYB@Oe^7a>wgO{#1eD>opLxbZFTpwgInc?B#S`LCd{N&oa(0a^>20o{+7L_D!J4vJ#|{`(LFHdNUJuUsI;kR@$Q`~+jdpo=qh_n)%ccb z!FZd6gPkF;e6sU`7ZgiR^~2y+z3_ozB|sQPwT$YXX6vnShH(j!m^tFqF%AL;D%H}} z&50a7^~#_+bqx7lbUZ;Y$r03@m2TloGP7}}s*{V7IGR8|5Q*Mla^NQXqc1xPPawg- z~68WM0SRURqw~7}n6d#wX=3qWCK6i?hM4Ts#=vdpwP%7OWC_P$S`!Ge4=&dLP zcwxMQo!FxzOV(~gb2ZD#qjwyFgGna_wYM>ho!q$+{^mApYE*LMZ0y0IMQb-f8^p2s zwj{5F<3qX}RPH;f+m?f9!Bncx(9CB0Ks4XVQ+mSa$Aj$Pke4;f~Ml&x_|uGZfJ0P zdJf*XbH~%uGa(^C%Ry)_R#sNED4YogSFc%f_0p05{_Tm8p?!~V z(veqcYtE3HXFu2O7silIh^& z0v!~ZRg**qWn>0q%YvktEXjQ)2}L4)e3T$7QIMa?o14zbPh(0@J$h=K2p|Z?iHTDC zZ@4_?QN|yA^pRmMyC)v%Zfa`g?d|ilr$$4WVbCi(g$SqQAdE?9!681PL|0x4R#%0! z1MEU{Lz^dw5_xz8gCLGA5Uk(HUb_?HAc$EfcMt3-B%GrX-MNvhRol?KXv=8ozMk^c zb-Jm5V-K{8w;zh!)h60{P|Lx>&ATR*pUBBeNy~WJ99*%7t+qZB3hl5}*Up{j8 zhv7Tlp1Sj;>NnR9uC7@#aVgC&={=U(Ur zJySUQX;$%UeOWUBqOA{| zkdQ}+&Lu>sm;BUp(>;O8lv&w(TG-*VYLUpwLJ|^a$dTK*`cVAh9@lX~979RTK@dz) zQu#6rg76YvLYWVfYi46d7soq$(Pzyzat({YO43sWNsf+ApjOsI4sXoQF<4RTMs(Si+EyP@kv_&uBT^fg$2}y)s^= zrl$U)M9;Va9S&afPA^GJN?F*j8Hv8mA?;ln7(@dI!mkb3l9pCTx9kZ`K-HF)R<2&L zYE5a~hUKf*8aC3xt-F#thuoNKCki!p=Mm-JqeYu{>T0yWz@Va%MbBVHba81Jwldg% zVf*`Ew1EBYpDnGOTfY9`^pCfOzrQ*7r@wTqUAOjeUIP1~-hco77lMQ5U#tD!?^_HF zj!(lu_;j|mwgQ0wRN<5-Y~H*Xnt5+;@4pEL^VOB&?`Qw>e&?O9daz7HVDDYqYj{q> z#=4KbI)qKI|Ni6shEC4Y`;V<`SXXxW_~KVoC0A8*&-Ly6P1o-KLbmJIC-O&oKnVi% z7O9`raWIpaOD!IK&e4y!Uw_9t}?ptX!+Cuv2?qFT;yH@2|q zkarCsd9JG<&D7o%ag7`@ArHM6Gp`0n42<^1@83$&C!7Flf(Y;gl#x}pb`P5I6Nwq|i6k2Rekgg) zokgD+2ZQM$78VvWcjLlBF`f)N|Yx8MHb$RECH0sHSSTi*Ncj+?i~Z~b!q=IycX zejcn^RrB~9eEvIdjDzE^t-<=BM^Z*9|g7YqR zD~3)bw=|<@g}9iI!gYh%q$Z#=P-#L+Kesiex**S zZRJAI_|KSF7yxkAM2V%)RH8r=Fi6zNq;2IyqHvX#b{^LE!siK$H1~igA}zs>E)C~M zo|ac3KLe|rNMvPLxp_JG^30v^PBe)}OukPnayP}Yn=*1!Fy~2@G8J2XLiJ<=Ce@SW z3M24bzV;L8J^Mm9$>_SukRD?qdM2S0F0O7faeR6rl91}-tDA`kT9%2435&~vp;4GP znj?tdY&*x@b)H_i-`L7dwyYM*y8=qTd;Y~fs6QhMkZ58 zB(nBlN?HaG@PXMxpA-kPWQutUiq~&hi$M^xe||Y~_s(UoUw*mt#n*$6`6@3K2S;D6 z{pj0fLxbZ}a`3CKzG5&K&d$yc6ud4jE?HSw|8bQ8`{&>L?tIy;<=|g`cgUca*Xp`; zwSWG{p-;YV`}o_Vzxk}a_sZUy`iU$_DXHnoocsqTpV_>A*(+T@v<+`-Ah_j1^NKZf zbNi121VImiU@W?-0wxxNFuaU7IR7P7h!8-D0a1FYpD0GzadBZxBQrBUS#DhWX+cvv z@|I~mLyVg!AZTLixt$*!5Ll*shgKZ z5}I2(+t}fmtk|d38}p;I6@+oYamMC0p6oP7f4(zAj7ricPR;}Z5qXFD2XeT4 zUtuIQLkZ@cf$D9kZ}rizmFubTX)9K($;^`J-n~V|6Z4i8E33gCd1exHmY%81MV(1a-J0Kis?me*f8PAd?UyhPg8k;buE%+a7sW|N%fU0R)PDF) zv!TIpLk@z<6NyCD*4D4T{`&M6|K^)-;7eGvXwmem@H5^b7hLWJ2x69V=A>-!WW=@u zDCbGhA~mRHMQq*~i(F+!qub8J9!35D<}U6N(GYeHzk2x1+L5St1VbU_8#6I?%FLLc zXFwE{o);R=7-Vg2 zqg@$vbadkA$UrQuO+dyJZlz96PS1ZT{s+3sczIKwOhH~BUzFW_s>Cvnow9~w_~wZu zvY&r|tE;<_kx_^s0)rrCK2k+&`>^=HNf!o}y{4&P+g`Ll?B*Vyl#)|0H?w-Je1F^g zt-C5#t-(g80%64C=rT~Fo_PG+d4;9R${!i24{I<6h)U#*zq9YuOS=wsY`pgV{_7v? z-*b5V&p%z%awpKp}|7g0bE? z=Me|<&i3Vuo{Vqnp1_>FW9G?$q|PCAu8cEr?Pt8w^UYl+vVFRQBk^eFgqsQe%xqjt z%xyKUp)8pm2gzzlNMR|+A!$>nNZ$zGP}!5JbTFmS_(=dkPiE?@*+!nU2v13_M{K^j z&=TSxB{e4?F+<}gBM}1-b$ePofiTHGcJ}PBsFF>J7S8ewQ$1o?8({PxX^38)1q*8s&Ei4=z9hs6?Ed)J9(aymP6B}E5-=NSHjUEEYy%b3nY2AZh zDXO95F623u(lxN8VKb^*)W7a-fo@Cw?Y%=bzN1=!uc0>mMC_@AKC8K5u*D z@2wkmXmSzv^zOTL^AbSt^*1`7$fW4=?+N!ErqfmY0_Ul>mjElQ($k z!w)~Sx3^!iWXWFj2CW;;d|(^znDO>PbQI#qs3{@%&b!C&+#0|8RrlSmdcgkqmtzz0 z@71gSxlf5Wctr8T`4yjj-+AMc_VJH8FbJOeuwzX_ovy3%);-sE;^r}7g~tYsf8=N!%;#}FE(gHC6-!^6q;df z;{yK}5S-;t&th?(!1^GGM20~=Ba~?ndLI$Uj=~XrsDflvTS{#}Lvl*4S9*?jdJZdM z%2%IMHW6-qjc4hD`se4|Nk;efo_STlN6op-aB*>c;wS`_Zpc9j#mmUp*n!|pp|ip{ zJfGBTY*N(N(#jy<$4J<)L3;9}^wjB$zJc`KfwZ1MuvEa}@sp3AGEtF}w`6IVyE`r* zAn@66kQPkODv18mR~moFKYiWWdvPLgqqeSYU1R;@zsifUIH=`d|CPGmf6;1aa9odr zk&%%wh@Dcbef8B>1qB5@K0a1fR_5mB!NI{>w{HD+2%5mQ)YR1b6{bJZ(sc9o*qxi_ z)Ev~9RuAs3tN3}p?B{01tz&sV{^iKmKlNSy{Vqvr`0)FOFMfRNr4QTm26F!X0kLrj zPoRcH&6>q8cP)Aap%6F-su1I#wEwhXXd?Tla;Q_@-{Hv#b7h2sB#i4AvBDwn`7c;) zsMlNsQjge41qago}K_lcylk{&N`o9E$)2Ldv~!l9Ei4C^LSyg)AmM5Jgrh>y#|An2X0 zykAPLhl&J$Q5FZW&DIu4coP%Tr|dP#fZpQ?PK|~OC4Q20Ft$Lf`^|fKQ)v+i?h%>z z_#S2uSYi{}u?^o+_hvb3?G_?oC^`+c(WKmY>upj~A3pT^Qt01e?tdM}cP z0|X+>(_F-OzykOFN(JOJvCuFB}K^F0cK6 z|7b)0AB30N#QdGB- zY@B41Z1R1(xtru>bN43RcoU~PyV*E)Ebn~>2Ld5cqNqkMC79u^srblst-oY_pN%XjUbz;6Yu|S^+N-$IH?He8(nVwhlLh*wjI-E0I zKN@A9kp;86+`Iy62_ufBjpCFO*@kS6I8k9pP#AK#qL(s6`}m-5&%?uGQS|NE1$kec z2TMWW%i&-ygHI3u=E}iHJcFY>Au-9t#U-9D1_ zks;~eB+`Ar!I3e|n4N>z@BosoE&V*5T2lz#&;E@zhugA1xDcP1pG$M@!H1vx|j7p}Z+7?37 z($yJhSbBy!DMyo*uZ)c)0uf$1OaFxpgmV1t_Q*NCoVjzzbIS`_ygo+W#`Ox|HfTqWD3a9J}%MOaF%!(VD-5gM;s^|Nd{!%r!s#g1<|g6p;qlll!kf2GeD>KppMU=DAOCoxf6GRI;Li_PKRKlP z%U0!oG;#lL<`#x8dH^@}b>c!4FlC*Nu{otyTypUm=hSuX;dAsI7hK%E zmU?(S7G>T6(NA@iarHxflD=W_jwIVNWtb?M$P^aRhUvVNVkNDZk(H**O2xo3(=am1 z0&1YrN&*4`U_hf3mnBg2j+AHx#oVXwKxOC7EjLn9(mXxAUiC)UVu>7dKJa?MfkDBq zS`Q{9BtEvB*0a4&3BwtJv3!#)+jgppt84y)oZcBMX(Csh&R5`>?s6-z46P_#BXsrj zP*pY9ss#2~kDkQAo3U`(s2 zZJ49zc360LA*JXQaS%}Jh;v-KzHi-zzL);5w6=FGuI`O<@WMMAzWbZAvklr8l7l*( zE;u;&+u#27Z-4t+=qm5L^UlW~f4p<&PTc@|7gH+;Zh)&CPQU6`nXh$viquTekzdbdi5%s`SvU(tV?T zW^HnV3qR6fTBK`;%xX6dEjnaRyt zH?Y`T29xy|PCdN*VkuvSX>?E7i?@Zw6Nx0yfIyG6m``$BRsBqXG-uMbXs_q*TW9K_ozD=Wof@giC~ zg6YsxyUOA9ou8bvad3n5k4?Nk)<59jI`v2Yc_}$HN+i$u<$oRj{{KFB@c8COCv_`U zi~8FM1sTm>zi5|)H%>oK$(6P1b)zHN@loBiQPHtu-eF;->((2mW}HRStW{wYyWeGdM}1sYsaJdB8*INaImPD^`eV% z8CmHWne+Eoq!dwM-u~QTu(q~#G46oBY7T-J^z!ls?e-E<$1nxiOc9mNNKMNCJ^T1- zmGsg)tI7sJ+>kbG8aP-&M?~)GS&@{SVlA(HlAm^UZ9V+-No8WdFtyg#*SD>sOQBMm zE#>nshZGtX2A|<2;;Ff{1G;x@ebcMv;3A5caOU9YI~(5n)w$UQ?F-34FE6jtr%%Jl zr=Nbhbm`Kuu`#^;#EBD&WoqH+i8jANLPDR~RZi{f{r&mMPY!54-lq6d2mkjq4>;Jw zW2K;_#jkv4BcAR2SO0bL=&46hsNLF|E@#)>J%e+wZRFT9LvY;&{n)T}d`x}yN`hD{ zI(kfX<%;gwh1VU+#&K(t|fCyY5l<+%4XJn}2+!(9BYIuO}(NdZmn)8av1%IYXE=%o}Tq!iIW-~(Ho_k3xk3>v+Z!enO( zWZ8TPMZn9kYI4i%9Ly=#)EqjD7w)WYY=OI6QCTgP%EH4V08eIX1-?6vlhLs*3jYh# zL(itp016QR>gMLonoH=6mbT94@TGzGWOKMLMHRvaP$;oEqOR6dckC)Ozg<$k zqI1QY6EWe;!Be+4{@pJJW*f9GBnOj|lQ(YMh@Z#A#4KOF96#^u>O-L}77Z~Wx2?vt~oKd%=3wo>r>8vdUed0<_|D9-L*es#c6_~Z81AN6YP z*}JX%@6PkqH`l*&w)HFLyEiP;&aTAAvw$yAB&3Q(hgj-nt^b zFzL*rXtuI&{ZYZ$Yr=u+V1jc~!c(K{J;xN6?YZ|oLLPX8y14qpknQ1wwz$8*==9K} z;w4L6W0KhsWE5;pF3y14;p($h1@-nc)xXIwF|4~b3Q91J&*vXF zpt?G&9vxF$9+zLbW}3e08Dfuo=bs*D?l~(sJIOsgCAm0>8+Fy@fVjjYl@>TC8Mx{e z5E@Qlx%vgVczWYO$N29CM53_4Ktg6nT%n7*H!(v@&Xh*R(Gv1BITYSQ?DG!`ip}v3 zA~-k3WISg1)W$(;Vxb<_gK<60$lsBXj|h})`$t``)8d-m*EbR0Z#bJN{loS$vbzQF#XqoboAfBf-(+X5&6f&l>m zAt52lmM#0}qmLHLSL*9)j|-clt9*TQ{r!Jf{n>QG-!58#gP$BX{O5AP9~=0;tPzd0 zps$00ehRG4&p#1zmV0=R9+CET%ipzEmYQ{!qRwmV!lKz8?eS=~7 zbkV>yTm7}kyyaU_=A7+&;o`8|0$bq;RCLCVl>9)vc`Wtt35>ND8zPmMNOZIFB4-vu zoFIHi^u^G0p=r!VcMN0g<(wQDM?(wv@l>=ZiV6{ym=Y*x4-sDD^VETX!D;CkFR~B^ zL@S(k-5(fQNn~?8QMvo_eP1Wkt4Z0MK)|Nfq?lR3gF{V2;xNQH?u9a(0Nx=Sj6 zy0OVQp{2v1{mVG|m+mzR_U*|H_kXbdv%4*yP1gQxupChM=>_YhEv>yytM~u%e+K^i z=@@Q5egENHe*^n*4uT|IQI5W^R7(|hkFKwgD!&}7}PCS2rMUPn9@1n0L`?*mm$iRmg zf<(vh0nYvb9$#KQACq2zBHiI5K7Q*{C{t1iQ3Cds*R9_8^A?(*-4h}>9>zPs09U}s z2}z_d1JZbTRe`Crf6@S|y8smv^AWq8o`r^ok@0-U`{~3mJ6k8hW@+@zE>T6@?*_V< zL_nZ#rcM&lDm*kaXk}zm(Zf7hAxwx~lG62BiQ_2Us)96K<8YIlhYfHgkm9wIcCq`z zE@kD!!bMfgz&q24!833KXvz0m#t{^Ij~R`Oq0u1Sj!(Wlv570zCh+wY7Glb7T!u6N$IzT%G?XJ1xr z-yaX0)t%~z@ucL#=$Qs$c84!h8y?{P1UEm8>W!DF#?H z?Ciu$Or9G^OQpo50(7-f<4<2hbQc{ZJLv9UN^eY~Dnmri)TvMRR zjZxF^|MDtMfxe(hvzd(nhdIhFL>HWDa96-$vT{d@F8rCvzNx$Fn4)RY(UH?JRdZ{- z#Bvm0T4w9dN;k|f0Z^`cm`4<@+xC2UOb{z+nmeEfSf=pTUE6$b4H5sXDQ><1hmWC) zr-_M)rsf9WyGo1g&b3?UI#;{tOY&F8iqH4L)k{yu`8S)#^^SSBZ^zlp4R<5{PlGS7 z{m;Um93Pj9gC1$``?aVGHe447?S&OCZ-=)XguP|2D>*@hdF-du@)B^sv?Q?bSZnV< zo~=2)UN6tZn~x*p!zhLTA2ark)X$F{LIAV9bt4d8u-?2)TNAOiH1c!#I=-vLT+h4p)q^A`*;@P*{|uF>!Duznq>Q zZe;@8Cb(bPn2>;)IqLJj@}HyA(>nCxq1Yz;DBvNJx={augE3Iir|g9yi~>F-SZsnF ztxdU6cj}BM-nmv@WTURsn>?x)l|cnB^CQBYk9Vuf zzVCiK?VJC%%+S)>02F);8-Q6ZH8r&r^JEfjq8xWapEh&VkNtIE>gC4=%%-RHWfpAb zXE^Tz4{oc+_vQQK<@)F9cy8b;#yzLWG6ip~?ep+DdZ|Lp=pLKIqoSCOw!^dSm@4Hl zfv9~>Ku{jnaEtQlwbaB3^{j7>Vd)mLoQTOtGSAmN)AzN|5RrV#n>Mi@VJyGZ&5iyA zp*}_$!@6B)%{`|6BCGH|X;LU5F>8SU%qnLU^rbg;t$d1yoSK}*Hmu^0yg}H0atIog zkhvMdI2kL_TVlMN|B6{Mnp3_iXu0kUN>ryMB-9yH+8aVr)yyv6{j@+Kw*i#K@2Gv{ z!4&gM*K5Ga(BOD~9N4_s8BipdLRwNtI~g18>yRYTw2JWqSiD>DY*k#Y6Ku@n?bY=e zAY3u0C+KeP@3XmRH1kyUck%y5Ava?{x&KvGlW+PRX^~u##M`d?MGVhsy;bK0q$+wh zXo-XrXHn(Diy>(oe!LvLR)^fxRq=0<BRf@gw^6@?*dCg=h7;d??gqxlr8QH@inNdS+|AsG)k_4+62XawhM}g zXa-rs#8D@Wb}O;tLr9zhM0RONWISSHC!$Zb49Jet9VH3C?LEC2_VWOq0 z!l>anU&3g$jCSWweH5JAi`I3{iHkeIQ!WJ>C(X@|?jo`R-q0xi{$LQ9xDYJJV- zBK^|35!^O3Lz%4o??PKrE-5+bdxf6JJ@%_g0fMJ`~?iinU(Or`tt$3*OYd z>#^IE^Qg^p}^nH%=M|Ub@irn!4xBe7z<{Xyp8SxAJ=!(!pZr8Rva0 zk}iK*5ZDPRU_kh6K$(r#R)oOISoTeIeQ&qZi}!VCwVDYN_Ldf|i*JI1%HIcxhw+n!2MYnkm%T#cP)u1SqF&~qXHM^vl>5C~68$t&s}+9G zvI#@n_I$n|FUfMG_}FX}v30$6*&f&DtCcHe=6`xc>OYI=@yv6 zp{Gs&<;WC8-J0c~(v1O!QBoE)6(zAW-Ys0}p>&^$9Do3gPfljT38W6693J=R1+6<$ zhtnp*em-O#4-LobT(=~SA&NSV+ehrBDq_`ZapJuM0`s&k4#ByF1ky!Nj^*Y%I^Z7T zh=op}9?8AUG+ay2NupXD9Fa0>K0G+TJV_@&cBoeNSG@2pz5Iz)+F9-F#U51F*A!JX zFqk(~*7p)LVD`UVUCQ%6f@25m``#SmBdPJ~7;OKm)bKf0W&#f3^7&*6VF$mBd*%y= zY{{1#m@)D}_i6P1M|B&Bz#AGJ?c(e_L~oUKC0C|I9|4~AYWwqS8*$x{Wona_Vks^@ zCNDoX{e?H3;c6qBe8&#Zz{3s_K$@gtSNpugJJ|t;bu+CL1+D~@$h~dlA5|!+jtJZV zL6BgO37?Sd8jUHWOfJ*Z0c+1yL%sKDx+OB?#x~#BsH_k?_g&0!TcVb5kE4_OGfnVO zj8Oc6op+_({w6LaUQWz?(3cm0BrQx>>I0MD21&Ygvqt2<%4=$JwGdMu zB!xA3WhXvh`pR^(D^ky#+~SdeAHl(8B%HxHh z3I9FXMk(7vZ@?MytkpuAY#j-Bb5rsm@qxARCTjhL4q-C6wy|Y5KQE*^p_L(d+CKLL zZMP;=1CXt(Y&;cMZ>+nteJ|1Xu|N5&!`;6%D^zND0dLy()&=f|qSy4z)m2w1N2^Wa z&tnXPDF9rmjd|($`RGwqQhNRPI7qq%6ngMO2_6uBdEf|)z&x7)0CLu*MnI1p%i2E6 zZl0eyb5VW%=d-fr(Az{VguS?$qhsOcva*#C_8%;;-@p(Je>jm*HLkNk-e|1vB@g<6 z%rbxVL2|~~ABvpqX_7$Lpjly#UU6wQe#mUUN4z4+yF7w>|G*LMz#mNepi3K>Y^WJet@?09b3ps=fJ;d4EN8%5#;Q!I~ z#-%g?>iJVbe`IGuxu+nRM&Up+-N#*hD?Uw+i;J74&VjHiHZegbB_*Ll57~{ohb$W( z1Q5zM{OF+fOm0>;I+gbhrekf(V@)baMF_62kVi-YWxSLI(H#*!?_nPTK?7Xj6R~7y znXwX5eL>U+IlFFupkc^|x`FulT|DA0-|)qXnC9l&r#=%RfKeiT1q>=U7W+IXxZ;V9 zT&Oj5x7GNrEr0DN9P}%qw0D_ys6O+s%sls(3c78J6W0r&F{T;=*z~I`9>>pR|LtYl zXUv-?wUy`R?pM>&DqD?9NAAo(?}9HfA7=KAcl6A_S9?J26oNHGCiS`hKA^Zt*G(KU zMnufaOvD78A90$Z(cnFO>0g=tMO8&|hH6zyHD*l=CaGw%_euTvxZA}_NaF#~rlMkG zmFKP_bWGO4^;S+f8=2)4$CLEhQ`J69LMM}A z2_7PdJc9YR%q-D?W+s#VUdx*@{quYwZ$@z}NwL>zr$mni0bPPHcfBRsPfm&yO7H(kS8s-%sch zqE0m6SesRq);8x<30PTZG{OBf zxZUG@-&b3(EYbN;uJqRw#2%FYCPF_&AM zYpin`h7Il`zu#MDIIV~{9~7)JBuYy2F#xaE?oTTp4T*mxi9apbU!A7f=`j|R6RDd% z!@|ofox!BM9Jy92Y2yI$IQq%$mLAj_zu~U&|ZnVn|as-H8w(h*#Fp zQ$}+ADA|aJb8(?Z*FcXEX;=y-}ei{aBhCz@$CU}->)uKx~^Q8S8n2Z zG;()2*-Oh)DZu*c$={mJ(M>S?a_Rgy+CQM*0(ylC$N-Oih!+AI>&E4RpYzlciC37PiKwCS=7#%x6Fhk>exe zTZ3fPw5$k@H(ySFMmqK;V=zc0XWZR9o zrpO z+yiil#pf1~WQ-vSb3qGfn~f~}$I`x=f8Z!k*PZqiycT9TxL%M|U2{&|MC(4xs*!ed zh$R67JPJSkKTMjW)5x9T1 ze6a>8t#SS+FK1w$r9vu~axr{TH5>|?zEcCRtP?n55Ei_AfQg(ttd2ew7uEtiw6`ezw-$5_jQ z+^4I8*M{eL6idDxjj|4`pN46+>|Wu8z`UeJkSdDHXT;Y^k<=3zv`V_E>9n!#b4tl zjSAa8JcU@C;E2pJa2I4DMHn^yg9&ijAnK}}KQe%42{=Qyw5xY8jpD4jNxv=F_yeM? zr21h-D@1kEIFXov;RRt%#TGHM9T>Xq^%nqd_Bh+iz(&Tnt%&l9j;|NcpBjqA&s%u*ltyY@ zES_Sh0$6DuLI7<{U`|-%eUXz^vq)2#>X3+oaB`()ee7@+GQnD_p>>u^Z7SBuU}1yQQKSR8feA`gynibo*z*&G1*tUP zYH1)5Up;1GYfC@(0~l@iiRXyeInVpz&8fGfs2NC5FBBvbdl@%FolxS+A0osYUZ9>M z@k8cOH5h8{f%ym5IH$Fb+XDuS7rRs2;}rd6vC+n0P{;h`&`D?Jc|XY#Gi2C0FM#b= z0N`RDl%U*KM&~vVbn-#oh3tVRFU0Fq?!*h8{}?II(wy_cY?>X+CI=EX`=`3W4o+Cd zT`%=x=Q8`cCKZY1|E`HV#=4F}e`+C@f)C>FhY!*~lTQ5yv|(}`0J_?ywTty;l^|=i zFOu}+BJNN{rYR>qDR+zr3k!D+V>?*|@ZGmK()(9p2`v{gI^jS2bI6t2C;~yeMWxP~ z7&lq$;;Zd3Iv2Nl!f=jgutYW>j#N}&)ry-jiJRvDP{rN9aZ9~V3S#y5{ z^ujJ~AwXawO>;#LIr$^as}`|`4f+w&H2;mpGeZpCq;Yl8*Ox4*+5Gh*^dC0adOdGg zP?2kYR~@krk*#yA%r)tUEF~j8H9h8R(|CD#VzpJ+;St|v&cn+6FDeoXP^lo(kBYH~ zeE?b7_UAopFZ6OUpxNd8nrq0@_T;&9iqj*?+u*lT&TBvD$>9?*jRf@o2S?UIeY&$( zfa7DhDlrmfxR}Q)dZ*Bse}=#rDuyjz{Hh55h9$G+8I}m76qOoaIKfFUb1k9J-ypgG z3Cx!So5os=O+M7biO6pb2vqT-phOO-Q8#~t3_w@n#AX+h56{-Xp&%lH(Lq5@$b11^ zU}DtP(sIb|ivDaE3Zz^2=$L7N`WE9c5YL*Q?lX~EFgd}G7PL%3wy)Koa0B=bvp5&b zc9I?*U+f?5?jT`drzY=-);gryb^Z)7xPga=D45Nnj2{{_YYE4vhH7=WI>mQA7dgsL z^orpjzkh#)sWir6Q9uquTCqeDHk0k_Ukuf8;{-rZ6Bl4mRuQ!(a<30x{-6;(#I8`W$5>( z*iO5s&$BGwv)@h=*QDMnlvRqn-E4i`RF2=2;tNU^i9px{QdaYLHG##5G9)gGqh^aU zHlf!-7LilOC5Y=TWUeU3 zFAc!V3#JC)DGkY^6EFsypb$kIlmy{cMi?GM)(_3@B7me3CWIP&-E6u#rUP$iXwdb9 z=Va~6ijWH}KZJ+3*f7~u7#wSMAvY577wbb?qEfD+RB!ky@ec~cw()P3|69@TK%I_S z#jB%F80PFETi*Km3zMkznR&JJV=)6Wj%#;4B#R>*bhbWexz&IdKko#7uSkJ|it4f6P2 zA_TGq9x*_j#yV&FahrXc&)*x@6?LC>9kw~uk4mn8zEkhka zL!*z|C9vg)v2K5YHTMS9i%yfQQ7)e|K9zK2~gY zeyRcqxPfjXGKAutot-gN6gWM?B|1zDEWdF{60GGBirr%m@rtB!^|t zhoGsH>Gvm?&lj6N8EwPf3nqxEd$<>`W!tif7lkDhpn>F!lIQA|YamgHY_sHnVR!KH z;e6TXNf1m60Amm!_<-pE)k8@rcFqeQW{d$Vat~n6Ft@uyP&og&$Bfv4;FsOZM}xxkF$SrUc5@n1-nI+ zcHN@)3$i~J%n(DZ98m}+LyJS)qK_t!%9ETiT?JT3*vLppOzd>?4k;IU%>K?!T3}C7 zrU|a$ZiUg#hnEVsIvY2QRJ&P5nnnmI%NSXP5{*D%EnuvCHmkf6rI7|>P9ov7GBHhf zxe8hbGH^s!=ywcT@`=#1eh>x<=xmH~h zoZwyW#~=-&@Bw2nI^IS&CIkej>B%~Rrn|g*jw5LO*a+2Um)G8HIeDi7K9Y9DWub5Ykj!pQ6 zZ87rj5Yh5}i+|6*f0_FGg-@*bX{FaOOpT)T%_-sn`7dVcJVBCoFr>afPfOdy#1yWV zOD10S0GWaOj!&A{^-bG&F8?Qb7o*+!pmLU%LBUDn`JrOvhKdLk7&xVQOe!WO7iwlK z?&qSZ*BG{!W(`$G6DOri9F>s2RCMM98DQaEzur7u#ym_Fb*k(?$perX_2n+Aps26$f&F(T$IR&? zoLmay=R=wkd#ojl8vOoj2$h>ecHia9T`F$U=EtfN{B17dI9Y;@Ytw)i`{5DRaI866OjK zIlBO*ta8}=l?-IrqbRjCj>4y~fANivx0D=qoRxBWI6-oE~3op#{lL%-5@0 zjj9^yl_3r_hFasHmjB)2<}x1$Keq_7N4qyZFI=s~Jw3kHGq+Q=K8`6@ei2h9540tQ zFV|Zm(Kvy=7fo;dy4UCAQoU=Z95bv=({DF}tn3KYP48f#$89e2uCa?Q+ch0_P41qV@|jWuBpu*&$k(_8Hy{-5 z&?TB(aG|8;-Y58`E>~bX~Gu)0(+k?E*7NgrB3eTd8H7>J919$aIs`C&k4&u%9KYUVIGLgzFMoL zu|e2Ru-c?CUaoqi(Ns?wsSbmv#PT?vL_?_HK=96`R^=Hc67n`9l5>f*c5O{ zt=^-YGrHMY?>0_UZFZPvteApPDPd6^O*K3XRfV%S)Oc%$WT=9)6m z5yA(DP-ElyKKs7AhhGw7LwCYp$Fk8c1hEY(TE*906FlD94oF3~M_Fy~Jrmp>0JLkl z{!Ab6U~6VyX*REhpXKwok^}05pMDACVhZ?~h0?JNQAr7yyGv?s`FZ3*^eH&Mqy9O* z1(O{V07L#Kxy6HxEhR?~3^{=(!0-QQ5&H&maK_HG~AJ`)U|oZW^|>DpjU|t zjgL(!H0vvz!Yq(b)QAX6r*~&cE?YTCvdncIx^3EfdqhoQ{wL!*fxdmZe=UQ)Uho9u zKKi8=$Q_%90!~~!G}ibE?&O9PUKuk6U z-uGC%^@Cl1Ox;x20&8BURg%qG%mZlyL;~Uc4poFUoX+UJTsdsa$S|8 z>=CU-!zquiqzYCrHmG)4&Y(;_dDOi<^Y`t!&t_azI@`TEMLVFd5R>W30>h$^5_3;m z5D0r!tk=J9MfOjprTSitULKeok=qjN^kuEw@Oogp^UqsI*%`oZB8jO6!6x~TRlI$@ zz=X6Tk;bRBQYZ#kc8LEd^mH?^i}yvmaKC#6oXWPEVk)9Vxp>VY19Tz$Ox6uZ6plEt z19Bm*)SKDKE2*g&*JpNinx|eq)rADmNJ&b1Gq`n0NHvo{VRVEK;IxpuFVD@~kWfek z)inak!3@vU_JU%Eb=vX;Ow5vhH3vmO>Y!H8DqB~cDm7LsQR^01>5^D$Qe5a%U7jm9 zK8_E~_uo_U_D*m5pRLasnEy>t*amJ_fFc`)NApu&D5q?+*xO2^!6YBliU4+Hg`cK` zm6GZwNX=aoQAqnXABwYTw6V>IKf9CjZd~-!2XuTypiS@(6&I{oY%m5RfnmWF1f#wc zLHXh5%6aK4aE7`pWw2Rg{j`(MmV4{@PIR1Tc6;P~jmKpx&&U}`+tRC2SAdVDB`0sM zZ#UVWhd#V+b~!I_??7Ox3epWpvhcXf$d|D7>oU0NVQ4+SSA}vq%K4f|PO$y^Z!m{| z=y`6c+3NQ8yxHyo1@;#v{MyIpNj(VxbZm0^e7FdzIFe(~V5A+;Nd4sCB9gy~ z4*VbkwFiHM?qg(y6z=-UQN=CpBV?h*>PvL)$l|Pd^V?yGkYnii`^1yMC-lbS!!60GGO~FT8x|tUN@5^e@vJXfh}t zf*4&`V^ygTUl2Sx9er_yv-`v%y|`o|LCLZjI-iPB-v`Yj&(mltTrf&2F(^-{V{NzZ z$-ooD$-Fv_=?fP^IZny*^of5}nf0&hpx}@b&Nt*oo3+`yC;={roj;drwclyraA8W< z2L}txR6yp|+C<%z%rE1}-GtBs-xn)}_V5<6w&otTW&r6(#3jP_MbCFdN{Xts_7*o^ zV$(c1~n$%zWrb-VYxZatPvD?q!>X$Bn1Q z5$ENx@p`?~3GoV()X*#oWfnXT>XvFC7o^tXUr>B%X}Ni3KW4IM1m$r&u}S=((SsVl zA^hwt5=UzO5`nFImp2mH)VA_D#B@F-<{+VjFaZa1{OT?eHoCyUFqQP1)wbjweyJco zWw|Hs4UPz92wV=Jf&?w&{a;P!w9cKMK!R=&C=SG8;Lm`D^*24sZ^w{$-53TcW^rty z2Ehum!Ez7OtO~T=zJIg=X!x=+#%F4|pb-^IB+BX8Ea$^IQY-%$EEkVim7QDa>r|Io zrZ+nUx9TK-PAhe3O_%f=Ay|%>z~*~H$y4p~qD(Rx>_N4EQ?b4wj%Mr26PIxegyzdJ zJ#s3fQHbmRqRzi}M?#|b%`-U_ivh2`n)>#RsnkGZNDxtvGXAw~m|I5IOc-F;H=zD`B4u&~f0 zj=Em9KLD@2&(G~$do-Gjjm^v=!NWaFKwx0bfbySg#;@&#@rr}?J9(v8R|m|-ysCSA zkKQWJ7#LaEdU)MuXgJZnX>Z$(w|5L{ULb5xlx(5Bpk9G!nltj-I=3I|^X-l1auhaz zBn6-|)*R~}W3D2=Vj=~k^D;mQ`y&^HqGnjzjVv8G4l+6M`_}hR@EaFf_PORi^ z@r$FVtQD)bC@id2X|0*6br0v7D>_%kw^YU3pC__|Mo=c&Wk9QAYku<>(UU|V<<<6$ zBKxQTG5xD?etIUTQ@0Z+7fHcqEi8?TF-w=R%y2zZK-D-*EMg1?FGj@}sVxwa{?iP& ztkt@_b+?kWrx8H|eUK%Ir-~qCud?=bSLj@R#Ir>EZ(`zeCqbAX44fz_zwF!1Mp` zNnc}`eMN>7Js1gyOn6WVaE6n9iki~M+H1=JzFV`uYMQ&>P#w3`cBYOBP`=`xt+f}e z&ZDfhGEomBpI3B^B1>QA5UuGQ#PmTzCGm>^!`^hwXug5Zl%$hc-0s+XZ6bIYHS?!w zZ|g0eVmj9=4bzX%55S4n-p9qn9jXI2Ex1Q1?X9k24~}4ycsRYrGt=!c5cf|aS4^IT zWuBzB=;KE-$!HoAlrdspOD+NSk4sFBQ&mVF*(H@^hGK;bC<;rYiwn$!1^}dGjq#V* ziP0If`-~Tht#!#1neuAn$g3h69}c>5aVeD}>O~^+p=n%66YWV)UH9kkaYgc|GW!18qO@5K4V&QI@fJ_#EXCDJzg@c0cl@57 zEm$k(D|P*soXk5^sV2_pMQBvEXsA#c$~Y;M$@1#t-NywPd@N)8GAVcRK_r)c`#ISo z8_Nj_hD#u&r5xZ0@B{HmReSOy`XR4EU>rgZg%Q$>iY(t{YzigdR4jMN4eo?5WsSJB zMB&)taV~DfILtZKXs)=N**$FeA77Mg$X;4-HEAkoUdx73_t@7pwupDyDn32x-LTQ_ z%6xRO$#gwZKKltO^}70?rCXd|X0W3|A30xDutOY)wy17*FmB{}e`9}MHq3nAhVZfL zK4jf^jVvuSb#-}XO#4%&o5ni%4VMjnWH2Iz@TUD zq2@AH4KZ{=)}fMr^@PhmiD>>^9mV3XwCL0TEiL2ZJ+< zpy%YvQYe~cK1YP8V8OrZrEE`pXC?7R{hfk3R<*dF2M5*Lhu(Nc)=<`8&>kD76!P zcg|oBVq&I}#u>Lm(Ip~X<=O`z?Gaw$#1iQb~N%ZtRXeBVfiF4EF)kyj%z zfW&BX{~B6S(qq-0_oWn&er$-z`rB-kheKGgT+j-O^9+r3XYhpxKHz-Em0!L9K05zF z(d!T-Fy1@`k1x2SriIKrk`#21tPjfhNyN=KCp8*Hg6N)NQ*i+)nB+~{do^id9LAJ` ztR(L*Gku+v$EuTcZ73KX-r+ZWv&gAeT13Z2N;iWew!gniSB@^hOhaxfl%N3kw17q%{7G)HJYiWv zeNz!7jL=SbVY20caWP>;bhi|hl^n?Ey2^OrRQbFHOAQdm zh9I#a#|}nzkoH`#flu|5(&#WDla9Rh~Di0 zId?Yko0cW zpo$n{SK1bw^{tPn2p1l=hsBCe0ER0}spv$f%h8e$V<_?I@uH9!nEz#)Q6dVM|7VWz z)1+J~mHYj3I)A=D04X%)rlzKVC>?%&KY%I~po_M&ya>Vbd9B1d10Z@AE!|I5VPRoA zpT}&rqiTCcM=UKfu%pbjcsVI(P*l7TA3f6cGSZGR+lX*d`U3~&ad**8e|AeOs=D|U z)Cm5_K2dbj+eBov7I!k{V|JqIs3k8obNF&-Fwt#!;8*!LRyHQvpOQXY0X-*I1Z&<5 ziC-B@0a@ol1S&ivx3=a@4ilm@{sJlpS4aA5EL=wLFG2;iE3C}tPCbk=&{nC?)=4UJ z^Atrqlvcm+qDkFqufUCxf`|#0K}wQ(AyKyFWQ~^Eqy$wz4AmR?Z-$66DypL{I$S{k zl#R``Q)JBW47ikB4du~vWQ)%?(5vqI0p8CmVDYcp(Vr1jDk7biivz9~hQl^m!RINp z>LV0G%B$O3Q?YKB5v68A!)khTP)7b2fYCd7H6E>8pNz(6f>UfhP^$uKtT&4}FJBud zvsHenP6TqHLsMmgY#&U`FkDd@$I?i7;h6;2bw7;ez|D;(7rHaJZ{ZyMHzKn&k~1Bx zEsWH@RGm~iKnW{NmtXx~FiBjeP(a?rzoUhPN*e76)pC}06}QjqqCpy;x;dk!L^{ih z({NHmJ>-b8rt0eIiD7v287meow?A!DtC@To-3+TfXLbW?15qXLE>%r51J|cFI2`ky zXS?^#mb%(Tgpc~Vx;AhC8Wi*r=Bq=9#~<{^wD%{dl{;&F1!|xv; zUZq4f$EV9S$Z(rQ6G}x15Z_kFmaeOE!WIL&wx1`*&$ByYGhnD~ISXQ@JMWt3t<<|V~NAU;)nhT z)At+xG_diCBk*T5yzSv14mrO~c2F2cJ(E%@`&3ufcafomoX3{%NsAOUouQs2B_-{W zp?JZ_^`vulEjYd6Xn9}?doK%qD|JHRy=>Ufvp7|DsaE+##idGRnPP~xHGaLcp5)zLj0U}{ zXWSyVU1_jvaF335IudW;++1~O+YTiC25d+OSQ>+sF^eSNL@GqwH=w8HHyxb0HHqib zQk0kajlmPZVz_?64ISI%N$z3;5+0+&!ltGsLQWP9s_;jKnwnkv23d%iQEBlJ4FIlD zzc8#cb%6gjJF?O7WjVP_ajIpy8Se51n{(0rfLWU6TD{FgKfZw{A6hvT-IY5vsbCJo5vF!(u^@}I*SW}j2&Wc_RPtP_vfh_3I2x@03V%f ztBvbHe8bvGaHDrUWM%0z z7`AwOBqW|m5IY40FS+`A1z_&Y!wxd`ONWVB_x0-6bFCGcY7!}5>yX2sVVvhukiuownoNmW$Z6ue!f;0VKN;4I+kM%eKZZHJNTWshvXVdXG|Oi8uo ztU7A>l4}(N&(=8SewAdG$oj>4y}F~Z%N4tmXs%JXdhHli@%pcrOXGvCb@Usfjth46&ngh`X?`5lZH0-P!N(mY|AQy;XzJGUxdq6=!VJmhr$T7O! z{pVln{|6()3X;iWrcMc%Ik~#}qS%Z8zTzG3>B-56f#cTZW)9K*(-{|rw>QlR0;?|1 zdY$D35ns7ZLxtW3&-k?G+5|!YmZz4)6)7{uJzylNOm4a4S8kiKM40=id4QKSYOxJ~ zVO)bZxd;2^#Hsva%+FiK8gu}zb^ZX{n z??+@R7_JhNk`z=OufJF%_7n#8UI_dsLCIpAD2_X>t6FX+<$u5EAx}hVtD@{e_1hz< z%ez;=Xkvw2Lj@mrzt~drlF1n#gn`^#35cgJ6^(ohHgpgh{OL7Q>-qP!b7h5Fst6GJIyLnd~)?nx;a=bs4=!CU&~a_(Bs+Z9!d6pkgNp zw>s*7<}R?_bDa*@!FGa$8JA}wlCgP?=}7oukFIR!!%fvT}wi@`FjF#t$4Y0LLc zflZ(;|v*X+7rh_{O--z3yEG2&QwP&tN^1UqeGf*~&Hdv8mTO zXO1E7O8>hSYs<^S0Vwz$f-fLtNp!FF`JH{gQ${_Z1>Fl6;&PG@V| zsL_#M({7t$enkK%1$bF)^f1!mWBBK*cN}Nl*G93|OMLOlyndsYI_jV(rjl3DBFk7# zU`Eww^Z+6yhjqJ|M`2N=I7GsQj&da7DLASW&PTyRTtMBf_UEr+e*F_SXkRKL47>mr zG!m#Z6ep1DFAIk+0eik|d5I1-U>;ieD9k7=^57qH^g;(asJeqRa_{tKJKFRq-Wa zvEr?qLF9kIPf%8>PGm6f>o=i52*3hEXnG1K%Oq7R7nLT@Q7W^pU^t7z84%)@2`DlQ z81$EWB(}St`h@ECHi4eV}$zGhFrQn4=Qrt0IQ=84v}5M*>XhmfxkH1uJ+;HpC=E`?t(>X2A) z;2(%r-kTASxqU|&B;xt@CyHQ7B@#+TObZv#cD3?0ILPr&LKW|agq9qK3Xvw=m}Gtm z9(Y(`k#$8;_b0Tl5SWKU@psaw*7>nMl|{@^om-d!j*bhre7K4*1vl;A-hn4DLj1r! zR!J-bNC3?h7;UhW+`p?{HBGT{sK!#~K1oOLS`S}fUwr9+DugyeUwCZR7hlS$X>JnK z&mPT?9Fi}QSFxKwu31G(gc%Q=$|8fCaO4+V#*pYth}8!jf&P6es3-IREn9DNu7l7inz-4dCte0yG0k2 z-p+7@C!5Z8kHf-ychw)-PrcoHS%?rHFZ~67njayPHoZwkRv#|FhPd4eALbZa|NIM= z;T;f;1Uw?`^|}|r!ouQq3W^Ot6!4J&i=%Fjf6MXx(S+N~e{WM!4FANsPv0F>>((bq zg7ihpUbX!+2EfvD24^-@Uzv|1VAnC#yhXL@A=~L*`u*B>?g}9m9@M4B9QwHjUM| zu^X$gZQHhO+qP}nw$Y@q?KF0Bp6>nabN2pm^6R~Fy_lJ2=AIktUMna;wp50Uac~|s z4OWhf{OhW~{5&L;oggB^W;0G&adQ%VqiI7FdM*Nfsab5p>7UkrZSeC>?rX6Yya-fF zf^)~wW@9NR9^@icRu==CgA)1)akrAHxNt}KaS@9H25o4qc46WLU4{(fWD(E`{ZwGq znrd0;3NcE~fHFcb?rX4j(|6?{KU1qlKrw35TI zlzL?yLO?74#_n-6#TkDcAZpEfk`4BcDXBU6+}tkT&^VlSX8knmd9AsCfZTPy#G8Km z?uQ?wPx}iQ2j|`RK{zuY$O~eH)Os4gSAK!#j*o(ip5gh#UVg05c|UEK;r2)vfeu-l zbVw{pRq6lz$6`ukCR9epVbYV)W9BUCa0QhuNS{2MVZ+`%IDnaw+qUEKD!6=$Ev7s< zGIBQ~xK*ioC1^MImw=#LnF|Uc$-^%~2~M39Eeg@tyt};5n6BF|7H6YqJttj6;k^7H zprVd*in1xZ{7CV~Q>d_)b|YN|9Cj^seH*PqKbw(L6i3Ql>&d5$AFY^IIy)1o$E@o! z9-H4A%&vTBh;*uJ0;%Yl>$r|M@V5T^Ns4teIb=DSOmh%!BjxRaj55GW?u0+ zvPsN{1uY2Gt7)$a&QeQ3-_1dvO^ykwh}gd^JaZXN?&k%ON}ZApYj^l;T{Dt|TXa$V zcmF_Rray*%FdObEjJm$glHloJU}BX4l{5i|kRo%;9ZfKlWEQ2^R{_*1l0m-NpQO!g z$ATmcMT*6?4I@rG^HTPI2SY?eKtM4fRbR^m?QaCuP!J)4U|h(Yc`izAKWJ|gFqY_T24+1a?MVRfpNCOKYS+;S(nEnKuY@b(+H~Q0beh6RL_1pBx|f~SCl4k#sMA|u z@XSn10Pk&|4H6m}v-NuGQH~Gpd0*W8V~th^cn&oemlk1MZ{GxMk7P$~d%OG1{@7Zx z6^HBJZ2+9PqcJ!%l;UC8huqhlt^feL?BSOZwx zM=I1+i=-^Yh~9({Ko1ldp(Pg~X*kG||F)8d{X9{ETe){4B+OH0N)4nVMq@&l;Jvm4 z8CfChZZDq9t`{bpn3*>*Qk_>AANz!vvX`|wtZLc3xxR*igrv)uVl=E>u{4+PT@>Pm zi3C_Yf)5uqHnI{EL8;9J`ToLtmDO~=jF;j0QdS(4pSmgQBPHcp<=G=(e#u3Ul`P;?O8icuXKdx9Yyh|Z_S`0PR^}z;fRk1L}$lqT%Q~ z@avS^&fA6>9>D1N>9#uvm1@E-60k+V&5c_e4V?N1(c=%F&)2P<=R+)3R)@pL`3{)` z(ri}{nt){9u2-5k&8TF<5fJO2PLckkWR zD1bC%rEAOm)bk{~nhsut)8N;Rgiftm`yR&0VoAl)d5)vL%2b*`-ugnmQb^v4qBBl* zqbqeWRIt0B zqLbqj$ZL1I$>aHT$@+=h6>ashgx3$(1R)@)4+EhoKbh@?;4s>lPB_0kqqO;qNcpK{ zs#1Z^hYjqo5`N32n}y+d+WwXbMHB&bI3Qo+Ed2_*ENk7FHzS$HY?SK~G4vU*OAPZob9)NzlU_BPEqx^P(kuO2HO%O3tc5c_p z7aeluU{lGLhGG8blF3d1P-+b)2<5fRUbpPo>2$fRObS2Ovg53Mnw^KH#}rCN>f*il z^LN9ku-$NoVnV@wa;C)(gKA0eub38IpU%w<6|*Wa)J@26u+!^A?K4->8?W= zrE|7LTbT++L{{DyXAhH5DXk$#hEjxi-Q@=}nxW1pPB0;QWyZxGo9YV=|0?|smZo+y zCx{?z9fZOPxn~$2=$aEcsCko4V2I9bzYjSX*zN`rJ>gQW( z%YcZ^u&At0aeI3U0}nOEFc!$16#v(Db>AS$yU(v)IsZ#S`$lpJ0(c07MMhI^U-+-# zJiA%L=F$D|IOJzH2`MS5j;YZj4{oGQ0(fZL6|Ke{Fp;2Jm$ZPww@a5EkMp{bo0}Wi zX{$I<#(p-)`EuIsr`;qKZ9pN#*T()$(1nMX7}P5cxR#ExJ)&Rw6G&x9NJ$4`-gYBs z`A2-ts#-KX!R=GHMib3iGR%z^{eN0vHA{P1PMm8TJOxo^xWg;s@XW6}*gp6V-MrZ8 zL5YE6xgC0Xlt-oAhH?d8ms5zm1lr$*x+C8h-yz^brkB<^#HtC4xfc`B4}XD{Q-daa zPcI9TY|_G4FsY!Bt#A66T+_!WDa5sl4NVvul@g!eeO>?R@D3KVB8FsEwpc2S{1@P^ zlNgLg3gQR7t-|DLg9R1%DWiS$1IggKHXI~6KhZP5S&R1L$0Gpy@2^uZe0q85e}awr zO7lvkqE#DYnAz*&x(6ZTA$~PUk|@s6&ehhuNqjN|L2KU3ZSrY`~y@NH|Wj z#4*m$rgc~7stp_hV#~WdHI5Ex6AJ#O3!X-!B zjfSi&FLm3~^HEMpO3LHioo2hE8E|RRMfx(iJl`0VkBsTpYgPru@DOWn0$>DK6M{hs5zrSCAkSw6Yl{;f*I)}u{`Hi#xuACL_2@i0u-F%b}kizZXW{!fKubhYLi9YQtp-@ zMbahk5?J=&&DYe`fP#a^ zSGk|wr9GBAOr^EtR<0w=?2sgB+!|9|!$pKoQXZ(1&?gB_$J!y2M61;@HTNFlpbwA! z>?{szPdC*obI}!bY#*d0E8fo$)}QBklbU5BJyvf`S06zvD@|QK8x-5w809vh z-P}h;K#Pk<&CVn&tsY-G0|bmlw?x(~871k6APJS4lvY@fn3qN;SAQ#OpfjX*b_11D zQ|f)d5Cwky1pKSxJR*A2-JU8J9m}qZr2XEH}da!K!fOf2qwYO5kX$*gu z^+b>5iQ&pM?M_1jVF{6)H>Po`E@25JeZmgfLQ*IFwdU4B*v3tht#I5S*ib3hBctcw zHMt=K4KWmZ$tX<)1APp{YkA2s2g4eF#{%p~udD@HIswhGAL0G1&?{KjEk z31E^7Y?{{9<+F5Y%jCibxklkh`?^9E*`5Nqr?DB(us7~q+C}nlKh}{je9@Pr4lXA~ zpXD1R3y1XWcy(t>v3`1CnJ9ulWEiWyPzq5bxhW;JQ47XK>gP*s8Y8zLf#a7tN)|QB zlgce;ApZ#my_H?lt4Na$oJB!H{q7e~eH#%?#(;3S@r?}${s)8u$z?2+$1vbiX>D(B zeSSP{ZfYM}lc^?-8BS+&y=t==$XU{nFVt$YTyaBsf+_Njmz}S-A#Wc2LrBzm>Xz%V zS`Alv{9amB;V$QJtvg4^3-&q+We=XhLP8FQz8R@Uihxs)w!f)J1+fxGtXs>1ykBUt zl@wGKdy+8pLQE@@2rO;=X6iSI3#EXsWRi4Rpbyz%A{ptmX46=TRBbYr-Wm^{-NY>( zn`PYqK7zb72o;n@;=wHE)q%u0AZ7%raG8xT0?6orYOQ77DG==j&L8!2OB0roJZfDC{2;hchRG{QpU$}f;iUV;2N8g59s!XGcJ+)T z6YPrRG}nn8T*kvGyyn6c*H)c>={TeF-DdD=fe={LwOw1@ud?p1dU9cHd69|T>Eh+x z<*n4FMzOZZ6rog$mii*-a-JnQ0pZ;*0Y$6JNFJ*fjs!bx{K9@Jx@5cfBI~1P6TR3f zs)AI`OUlT7NN62Jxn(TN5ChH@2j~LtC=FJXe0d6|!%5$#V6jWf&Q}^n48CBPlHx~x z`Fs9ye|gdjCam%2PX>bc+FpT9rKH#r_6s2>=kf(YhUpye#Y7<_YyXvfN)&gac} zrJphyxT8QIfDRi#G4W&T^VR2*rGDsSCywAgoGxrduX&;9wu&PIP>4O^AhlWI&$DNZctmw{ln2 zo~NxHt;o4X57sal>#Z zWuWMcl#I_CD~i3UXW<$sn<&0Ow@92kW=K*sSsH`}f@WkFHaarG5;ufP1yNyfHgS(i z6ymE;G6S$wVGjT4eYGaWriXwTu~eGs*ay-fo5K;&2x=RoaBy(88o=M2z#YonV`*tA zu*N_&6z7~iwF4lS*x%oOJJb0jG-WCwCJ;I(a7Ll520zWKs}?O6m1P;K5GGA#&KnQt6yN=6)@(j2+0dk# z7kDkZq&pk)t9(-Z)b#KQkN1Pyr9GX~iu?k&L+$MB8cb#Y+0`RJt-DB`oUueKfn-C+ zYX{f6EJGRgbrH(z&2xdIscN9GN@dv~|4#hb)S*X=b+yv8DV%hfAasHKk22fPp=i5* ze?GuWqhW8maar9ZW5eNSW%9T(6`?{+O@UUoEJg$hFciN}Wen_aHWKa3vZ^lB3vnIg z7xcSL@*y0{JG~=lCJom1;Ww{jA2nhGMZ z1qK}G+RdX~RF+_)P8+~)mc%C|3E@0kDM7-ST4@RJ@gZ)h56u4|wZKApWu8dz^YQ!j zi%)Vfs=R}LE0*q*?C9i7VvvDl0j(mmpPkK|t7kG^P)%U+Y|V%^ewGdS&x7%HE}Gjo78&dyDuI3`&Vh)Y}|W>$}g;Z*6|xC;}fF{W4rNcLqGHH?qFxb zU+h8oG(3#dy0j^J%vy5!sqsET%e=II%EY20Vth4mM5X9b1G6o(vwaMrR)qIgUQ7!D z3##tueG7`9>FhXK#e)yv{!oAX`%oi@mXRJ~4T%w3yL|R{(dxHM$9AbLZVc9AQ*UR) zs)#iY*c5`}!}_$E!yyX}Yo?rp17n zE7VRwQ@Z_9xKd{}bzb7e{4&{M!lkbg6N;;I!df~^O8JG;ide74ApMa*o)AJ(c$s)#z;x2kgtf4-S1QWv0FDrhm|D&bs4aRF=oI_4#W3O%V^a_j62Oe_uYTL~xNw zovI~gAC@q@xH$`Eai)tRYmCn(gl=nYHD+#ZE8vHvsUMvkEp>ZpC7039D<>H>9AHXu zDp=9WSvL_3$q&ev8UzJpcY6~&qYcPygg$4{}!{jqtcx4x3Bgzt{ zP>v{{lCF)vnkQDQPHuj1FVw8Btb}RweQ7XQ)pitl5 zH;}LeD2NJ;b8JxR7E$DQbb}JCSphm&Gm@QTgP5+DlTDouBc9`is|PHXi6ttn9w(zC zLXYr%uOk+MZwQW8K~j+ZqDvR5UK}{(PP@eF>h{1~(cqJnZRn)gkAR2j@YgR-&(M&# z=_)WVa8vGWO10JVB_9=8*^)xDp2N$t#PW!t{<6d&QP6l)KMkZv>Khn}zgw!ZR*tsT zOv@jXiKH>qdrb!-MBFV|tT=JYCSQ{TO00S&XAgwLT7(fL)Wr-&gDKFbVU1biI;x^r zW5`O47Wl3A5Wir?H9AK6%yrfnMv}!#EVB&7%~?$nm1V60_k`bu3Ncy6pr=t8){3PE z!|G6So!!EqCJRQ;m=G#eIuDyV4+#`W5q&gg+za>9IS)Or_kKUNwwiRI{Q4DYoD#6l zy{yk7a_~C!zT>Lbc|Xs-DE3A5U+-s&)6aZQUOUQNzfm}xcknOXH>tm0gt^U60kHB97}SWcoi18Nb4IO}S(JHX(YMk+0t zd?{b6>XT!krUHW8y`cCI+0k?=Vv70(2ZSN@wWutK@{y*pBiiOE4NHIlgo>Qn%9=W- zyO*Ms_T&skA~C=_|v^`8a!(LE~ibWs)L%blR+9H9&Jy!1aZ%&?CBr=oA*$ zCvktf*vkTMt?6(j=0WHEZo4`m22PJsa5m~~Srq6f`P+r-3{Nq2R<$R?L6PaQuPY!B z5EJt~*A~bpB87oQ>v&u+y-959+yKRe=ZBzNSp&223AmQ;ePa^sj2+pE=iUCSkm;IS za}zuWcCwpZXBn9WDx- z!E3G5+u1C|x_|@+2F|8G)*DUyeeV*$R!mz|isCvbwap&x`$uoEpdPM^1?Vz^z+Kb2 z@2l~9-ekdYO^LW^$OkwDheAsn^lvChlgQ!Pb$V8Th{0) z4cSx*8zON8iV-E|nMTPp9kX=vd6{PNigDQ$Q$h%s5Dh}4?~NY$kGlq6`doTeTRs=u z6IHAP9?Nq+y=i&>{+?->(XrKF5K|~hYDdhj1abc1{KC19y>Pm;$eiV<$SSk9-RXAQ z`=#&_TCK$zC-(ZE-}&+D%0i9|C7KA}^e_a%=YaifJEa*^q#&aZ8j5z@DNL^JhyJwo z+mfV?np(;i*5wkhVG>__c|I>I>ms&__4OZ|0;W8mOyXu0QE3Ux;|7U)Pjt)f*Q&V8 z&pZih1}K)s5Yfg#}qp0@KZi0$9s zMG{XVo^+rj%#1lmVZ-$pwYWDNPwqO8 zW{|w+xDyb3Q{^;74)9IG6iG^J?Z>BBnuFOsiN(akT%W&BAQVKouDAW{yC-?UD-of%U2+XCW!6Zwr zwY!ZYhmhoOvl`70V@#+-d*rt~L-+L=@o=;qbs_tg2NNqOC@V-=OZ+QE@X~b+qh%#r zU}2t~Y$KlP>|WmiDY2(+T?{lfmrHCb9z-e6Z|?P1HB#*-p_r@dAn&$7^gE)G+kRfWijEhm zHJ_Mw1z*#uTv1ShDYm4vG&5$@g3Hs>UW^uT&d5#gXt7iVw#o&BVRB1LN=-~kPK}N1 z7i^FIf^B@)T!hMg7jOg$(9aqhFIjv9*_rKoJ}O4P>~8A~ z_EcRKMn*+N#Zklh{CvVF;co%Gt#*6t92|CrFv+j(lbX$zD}`bSxo!b`q;aCMx7B53 zW)>C!hf#aUc&=$IHn@_OrA4J3?d`UmWN1`CDaK6{^a5|a)sDzL^x=E>kpA0*Zl6CG zOmc|e>FKE~cN$QQ4HMiwJ9|B?sM*Z{gZcL%PGS(|f5&roZ}0v6T|!(u+vAe$EkpOK zUow7@IDoDpA|y07H|GYzuT?NWKbXB8AE@RGM`Cnh>)OWW@cMHpIq)wn;us{znR=4*g$P; zY%H(w{#uVuPe=&FiR2T|hp0-0mQKp^dfq@+Gt5Jdw%%E%+h^Z1s`GL4T$8agSsWtSztCYNNfMg-PJv5)s0a1GAKcBC(YXSVD&@0eYK@1>4Gk3) zhyXy3p5xyCY^mn;^%dZU+URhh)$U})$LFnC+S`Kr?`P&lw+{?PkqqUZ&MV0N(Gf@0 z#M`PxjaZRqd*uMfdH@;&-I%+T{ly(l)OHF z4Q}ga;Gn?f%aQ?+@{ud<|M{mP1<>py!x1(ytJ_D7*WyW~ihDTs<$t|pvf%6g`byb@ z*Q=h-a6+W8!n!&{b`G~gK$`4@M>7~4#`?MSz@YEO7n*v$yC8S{wG|c)ZT-e>V#NQz z55>Ir{fD+I0Sn6y_ZQx_M>`Bms@8+ODho}cSh&h7SwD63aTU%Nl$x?PtPB5^sGZPXT%;rfFO~8SldMxxonN8T?83C*7_BvJss6J8^|xJ)9y#HKB?^ zX_juFfmMhU!<@P-d4z<)Gx)2At6O`3P?(^9U8oUpz|6!F2N^xFQsPfMl{~W+ehvug zdJ6k{!UY)K2@Wc@bbf1YS~9}H`85~=M405bneNfiQ9pN6UePaa7t5?*Tr%| zU+^mnD@CMp{VPw*9E$r?w+?Re%+D@xP1(}2vOX6GnB)%pknecTzaWp(7gmMur&C(8 zKWYp*{TXjO^)X>Siua58ONs?*ZIoeW!p)hiqj5#YT(%FdGxg_|mQvC?f$^>(MhWjV zPQ5}v0E};?Kj#%!v=7t|tdwOPBeidiX`|!B3wDmH;h$XG$~~Vtc1{jB3IUm0T|{TwquGUyQ}CU2fVa0PuFsnxJuC>wWnB4(n`%ln1mCIYxF2qu8- zgZ+);Imk@+l7Q>&Qrq!n&<5V7vs2m}ZQwdJND2q5WZwdMR$*=HEUVe(D|`0uj()pA z1Qx8;Ads=+aKB&}msHVj`PTVtoHYHv(63JaR6I57w-qI(q;OPQ!|b;)sst0gW-@Q* zUrVD*H^49yBp{DX9QN2@qvXXZVj}DW{0)CL`{^Hifb9G>-o42Co_a=G2@UyB;`Q+K zKYi~M4@tOiGfjMxdEq}rooiI$aj$z0fZH@*ayh{txV0H>66dXsHn z?w7v`bggb%5g@v1(%sGSjJmh{V9QEtQ{(XI1j=VS(ID94VR)vvum?z_3JnG(L}NO> zFS>je_+BJ!RFbt3t3aS6*@#%-XFv&&PQigg7&~lKB4mrS`!qI0O(H_lUQA$$PIO+J zgyZ9bEf)YLW@17bh3S?KV#*K=>NuFAaB9S|v@UPp(9j=`G?voXRPfuEJ>RqeW~<7|7gSN~0&?d%G}8trzmG+cwG=SZEdU8321@y0&? z-3_26t3iqxiqQIH>mcOl!p&_yaA@#maPF)_w1@0>whnfrSU4Q~cktOtZ@snO5?Het zl^vTAkfIMdjMlEt?jtvC`^Rxc^Fcp{jg-%{WU{|u2)a^;Xv2~bD~n-Q4rzcO&dHWi z7Dl&{MJ%VR7ku@&#EmdzFN8cH-D7{jzp zK0gAZ0HuDRgTv{aGraOizv^|%KK=}ECmZ$`=((?dEFIwlMKJqSkFd5y-ZM#MvInDf z^5P>SGg^D6r1-1`n7)=h75K$~YT6qS$vX?(@fM z3vEw|>FL6-AXQ=;PB)&g-zIOyH#@W7kjv3>w9O{{InIcW|D^?#s)bg^^IFKnq(r_9 z79RfL?_bxGq7>5~j!sTViHUURus%MYK<*m|D`&W0BRwAgR<~>0ScMX4xvjjCl8`aO z`u~CeI-~PEpVjn8<3Lnexg)u8=(tMCrY5UpdLIUS+ZRj65Dmg->cwi;lNA)r)}Bm3 zzWsd;O&%4H3+%#fxnHG2D6*#|K_M8%QuX4AOZraGf-a_z<72z>TMsNf&r@8M5>{4L zwvSRI$oGZ(dAUsA)zfai^SsFtBk|p40RCqT&j%}g$5`l#IVvjZ!WVQci8ck0_5dD= zC(+?wP6e+@7m}~p(2|n3@L|4ZMjSbOKoJgVfgD*2J*?YrFx?n301~!Bi^c1`L!^vx z{pr?g&=~q_iDjktQ3hA(ZT8EtsjVx5(-JiK$2g8^7HKMEC9@j zY57d+c{!yt$1fGt5smWuIz_f!b)F@|wMPPq2%++B*|QWCh;DZx78=0V5+70`qMZZ| z4{Ds0l4FxBb>=7)J3dm${`wbn*f>8RwUY5Sb72+5Z{Oqe;JWpXzpgemS0456r~eIK z^LuVvu`KTMpE6d+fM8_1QOgx@c4ls@1H`xs3yDpQiE3jaGi#Vlrm;^OMdWJib9|+* zU67y13Ju26ZOZ0?f=98LG&L9QJ?Dad#LD}L8tn4&X4<=zm~UR%F~na=I2puRmf*6 zHzVm3HHiaq`8h)b3IOV`%-F{tM?}34i~Xz zJxEX>Z!)B8!J{!w*8QsSMmZhD2Xx1yMUVMhO5X9GPfBtI^?#vDVZ)CgqWK2+X+QNr z;PpEGSP`c?NfIw2DzS(xt#N+(t7qOoOGaCah`=|?^wq2wZ;Tts3fqpTtSsnWv4}f} zvAP#Kp(I2_EQM1l7vW@z*U_Aq-6?I+g?5)5IwB*APi`kL!%^Mq{*>G*L|HbgNP-p# z(HbU(n(eQ}Yx&4An3UJ`m-jTXN@Yr5$H5Zo_Qc@vYz~20Z%zSjI2H|u`yJW6HGuED z20D{RfR(fvIWw6|1y~i)Zd?J9O@R++{=8Vr3&dYL3wk?YTe$oSl;o6<5zuPRrkB(N zt*2u&u6cP=kUjz!JEwNRO|(u4WP#*l&xdE#kH4K+3{OM7Fm9A#BH8Mpl6Tp0*q!T6 zQWf==Y^^Zv2{4%V_%}-OVsd19x^iXLvmPAwM-fvmy`K+Kbe~xJ2`MT6b&C7i4O|EP zpSX+DzI~YM)12L~7Ubq>I*PjQNY)ibw&jsk%3{{74A`nt;Ar zx8KeeKKT$y0nkD68r%w19xN{@KW$6|T%ACJ=_dJDq1MmpPBhF zU9}i1!MT6ts}{cMp|foBd?6xD-f7POQs94n0A_BSvPP6R9yqzbZ-Xz5MMWXsf;QC^ z74Oy^X5@5S0W|FXz9BlYw&(Q_;54>ux?4cveE=Bv0_L0XMfQ9F$zcw5g4JwwD@is^n1-pjiD95MaCYn(tN6G7j2xyO{Tdzi zk401KG#PM43UXX4eiRn0{5DBeghYv*$c)z%t@&7NtSB7g@8ZtUdUgrzraVAExCLZU zalP*3Se>C^baZrTck_aJjU-ZN-alTi$^tkW!~YYNf(PiWHkuKYTdd#KEdKt@zd4dx zxZH;nd-_?p8)JMIH`-AoFE>ij_!FA)j{^<+4n9~=G-DyioTILfv;@u+XXexT*Qai? z@%+URmgB={qD6SB@aZ2OqHDIBV@b%&(gI@=j~_P(FJ8@EwZ9T~k@Ol?T=xg*BVCX$ ziQ3`;gw&VsVgK&TCFw14MPJG%@ZlK3LD~R5nx@;A8*esX5hd1dHDwN z1$HJ^M}7?a!d7%bhw#TQd-dt2q|Si=#57Q)-5RrwjaK~wdf3JfN##Bziis;)`9UGn zidODCX{(BNU5CKRprR~8$Q6_oDKY0IX=pdiLJeqd8`%kn8VDLDD{r@{&euiWw3#fI|>4ulu{ zD3{K$Kcz~NB=F4U6#5j-!}!50#od;SrrdrvDV_*oHouYsGBWTyA({BR@CZX0lJZDW*cv~hqOT29XQTf>siJ0QbHDH+K?Pj7kzBul(f zKi7*fN~;ty-~S?r^}>8^bbK~Z?>9ua8~5ut`oTb2ch=J+<21Z2=ObU?dB3%EEj(^{ zJ0Z6h7c~$l5HH{TX13ShvLXm(M@@+-Lm&$Zw;R@Qs2vbik5hy@%@}MKy*=)qaF@Vz ze|7&pMd#S?{;!p1A#pppHdhP?(-|9BHeCalO@MsL3vdh5{m*jIb&(B}VH~IXE}-(J z-`*ylJ4Erv2joe5vr?MWVmk`vS(uc$IrxP8mP_4+!Zq+*6&aU&MM1(vl{n#jzJ;(r z=LXIzn!GG)0!-d8N!!)I$I6U1c#4yg6P#mTe-O-$KhN9F_m<~p8+ACtzzZKQN^0C- zol%Jy89PQ)EnWnagXBDJO$T>2Y|fYc^aMO?yHk-Mi}B&ps0-tp9$B_y3M1hy zVOUH_fr5d4eL~YKHdT^#VZCSy8_3|ij0=&Pr3yug8>N;&u-+l3R}40-y=>2>j7eVF znDmox>3)hLWYkE(!o7JrGvp9v5`ka(*7kFWptF9*mLx1AV{!kc-+S&_(6l0$d*GB9 zdltNNq9Uzsl$U3#v)SOGFoX==dFQs*&l_ji@^rWl?)=*i1JEqZ*3`)Fui5nA^lyOb z(WmLwe!n{hy6bnmyzeV?Hl}5H3)UQZIQSLz!8TsUNsuD;elX2y7E31`syRu?jBxe_ zkw8VMr8`%&Pw}IXIxW;LfAEKN5^|&Zhhd1toBv$>wyU}_>%`{U_j`6}%S1LfkK+R3 zqd$bl=i`l(g_wYVuVBs-kWT$J<*}nPAaOXE#?TKCwm+LMSRwky!%~25uzZ6c%q7~c zXRwSuC4tzPnrBQvzMZPxGhE-nM-BQmhak&(vKnV7g!p0?E|M{ftsW(tY7)PKOsTag z`r$rnmGVGSD@`8(C-k1|7mCo`?M+Z~y7TBM4Snijd8x7|_ z1>Gb83WWf6VB!ugw>e(?Tn>QpbF1a;;ne;O#Qn-YNSSR7U_OH%2&$ARr@+_Uj1JEp~a=J^v#}A&njaf@fuj$Q5L2q-sRD2`!`o&bAsO+J# z)-o*eWMU0E9BRHmFt-yAj)Pe|TGZ>?J!_rKy5=MVRan@Oga*IUDq@L`4}^dBRWA;& zElnH7ug`C{GdYE$K`=k`_4UIeB6fiMJI_Z?x2weI{xgutDzB*l;IE#K8!jTQORW<+ zQB>b?2BPf(@&EidU4V7egm5I@roLuTg>OGW!2y9NBXc|@soHGF=dsk?Y&E56a9is{ zwZSvEVRMH6sQ+=lMRbLDV){F=1$To*!MDlQE2c;T{_-Vrjy|8HfgLp!N%?z;t6C%hb)-^!V%P%Iz}a366`f z;i=$zgdMV#^u!fA$aOOIe+6Rg!g-%jNH&)t2(6oz+_QuLx@HNum5pbzy8u5QpuiF@ zk~cL-Adzaok{TdK0O=ByF=Aj;BI}jc!uZW5#J8GFR0|svq#mZCUu`8o z3)?XvKw3_;NN=N$=G69j^v}C4ItcVyOm#C2X3N6`QRyuWcN-@er|A-<#*`JRz{Cj0 zjfgbW0DT1?mg;EF@fWW9`z0M0N5{Xxs>3+Dj=zkL3D@5AXzOMW!3hvLH*b8BQ!5VSVuf*zHvrf> z?h*{MWkim(pumcZqEA+7rh@G4VSShhoL#33*yQxz9B&pP_c+11;t2WJee4Je3J#^D$j8Mb)-5L?S1#|akFUV@cS%~e;vDKjfuVgotz zj^-%i%i!Vj!mt#jq~`uVm@(JM#Q@%G+qu~$J;=SPMtMnZW6l1z&>Yi%lSU&ia=DUgzDu8hj#+;j_9 zAU=4_+pdrYu`7n9YLd%3O7$`i5Wt+&7Ni=TA^%ziMB=AU#HynT9GA zzA;nnJjHjK-4_fd=ddHxI!~l3dzP8sHt6*S_SMoOH5EcKMVL?{D$WXU&qyLv@wke_1d)&> zO39kJvxuSJs4?4l^R}YOyDOBd`lD{6q1EVw^wHY15gbopx*UwRb2IaE+4frgo~gh_ z{5tjzu+Fc2?$1sy$hg6zU@hwR6@8t4fz2w_|5!e-x&Of^_7@MeII0?9#(r729f+Msp3yiy7r6woVw3|3Y6Vbs)E zox6vqzCQcdVE&Q%V1t<}GV}6S>B?x`k+2Lng&9uqeA_XFnESWgT(1;y{kuhzMOYhQ zcPiEOxaMZ&h0`Y?P8I@D^Dt%`e2{GKoYWJi%XB`5FJm|evoOist(2Ub+UkVNQ4D)+ zUBs`W?54S4Lv3Reh>q2(^ALT5M7Iy5No%d}MjdkJ z+89ZM?U8K+SC`kva86Nza)+H6j(HgqqiQC}DR&^}6Y3RILEw7?Wo4BW7b~l>jp4#z zh4FG58jx8QI3W0}0>-CGQ#D@rL*jfdso>>X;Kb3ikZ3!PKOUX|3xR_Yk6oD5X|vfu zsHL@D?}hsZaJ_EE;m`4h>}vuivB3};rDwA~?=SoEZBI|pCRi`_Q3pY`3J;`gjb9lA zjZT4_Ffk!Xr?YU90*HUL>sohctV&Ux6YY*@5HihW@$Ppg!oZ&JY_8e4R@B8%#t$jC zSFtX+HV*AM6r$!~%8XI{;)V82XD44G35~Q|M%fEN^heKtfb*5L;kES|%AHZZu(;&` zvIW$97{@A-Kj_~$NSVS>vCt9ww@C^^8zjpA#DiyB@zUK4p-_Fk_I*VUQoW3>R5yCG zy0K^DnyCsC3ta{LCtbGVR8z+_RDF>PAQQ_tT_&;HV5TjL^2T;M^sO;W$5wKo)dXJd z75-GJG=gs_p!-C%EknH%Yib6A(@c~qM#cDopplf{kdRvVCGuk0vhy8tabAjV1R(j-XR4hU>H~>Nx(EBp`K4Kb zuu|c*!5J1}k9i*+ zgHhy#$9;N8yc|*>CGc^WT^)=X>gF{XhIn9A0<&sR9`Ym)m(q?CTD_RV1q9} zn8-q=cSBkB^`*bH~;rYloyn5Aq%Rdq@J8aWQ3|LdW`yeq<$YO!tnkpgiv4V_78O2aZ#~xg68d^ z`UoU9P%8sfu&;f;HoN`k-06_)F)Rt>+B9U7Gj)WBh_b@Gc<*AOuV|&`ObFs(LKQK^ zN6-^)T!ol}T54njJrzwAO_j}@Ia#JzwXZ}6?)(|SDT9-yY4B`p!~6LQ25CoiSlT1^ z%?5~=dw6-UIc;C%wY9wmAmSzAOvI^oNugWA!tmL$BwS8%fOvmIC2sqj1o9F8vOVC#Oe*iB*(7xsA z}Y1LhleL4A&)Dl2#rii$}uMkYf=j89GM71UqC#Ou`MLU9uCA1ifJ?~7-L}t8>aqG~a63GOv=!bb`1^bCthyCnn( zCx1}P?L#mt-NH_irl#rHoKi0@-;``iL`=GmUkH4FNM=?Hrx+S-M%i?6+dkRUlbJ2+ zQ!D2rh-)+2w*m*@Z^q;;&}-t9^%;{lXU^*J4h$A9-jh;01r7j(Ig=OU&tB=8gPCJH z(6_#wfEjy|y6wySLV~DVtL|Az<)B{>u^_nOwY{sJBcjKrZhHhqlEsIJIdh@HZf2I0 zl;AduWw?Y4lXHY1(gV+}V5P*(-q`9s1f6b(KxUw3_84+bD5xUFlcr0L4}?FGfRfD@ zGA1l6Sa&5()!-W*Q@G~2IC(=vY6*d-+=`@<{tUy^AiA*dBo7a7A79ktJQy*VNnAOb zBa4Vk9_8T`5D>{pR>H~T6b&!Ef}N)E3y4U`u8fT3`}&9R@@f+KT4W~z3d31B_M*e7 z#e^NI9UY!!FR>j{C{4B4V`;dG5~8b)vytnDG#{y|L6ee`%uJ4tA;D+W7UrLFnn!LN-o| zdS?hM$vjMv3XLu7gc3n&1#LH0U=XougOjXcCKSR5XAsrIbd72n1d%&5 ztEoDQ&yN!1P(wq5!igY|)Eq0cD`FxPo#B*UNeLoGByY(0ce`|agCI_hDFsNLGhQxq=w*`XD0A4Az@*1k;y7;O95E`-9m>DHCK^998` z^eS5Qc`R54E95STm3t?-fFRQS&o1ZZC!c?}AD2UbAT)dJqsvqEYGQADUwlI4k;60t z5Hx~M7+IxrwK4;N!qW|{wXetD0$^2J-fQ(ebKw$|0MEDyN#taB%z`saHS5p@d z5e?&&P3ZTGm#AZe#W6WKWc-YykCcW&q^j!Dn8awQNz6`XRZcW=bCPA%3R)62r{2+M zW)z+q55Wgw?J$rW6xrld4pIYSz!C%q1~Pd;QEW8b;tGt2gUIL`h=W7$e**a601QAb zOFG!{yHpN>3McOa6y9bL-u&4sMT@%>kL~pI^%XB$ADqap=skCbP{_z2%GR_#-9yIA z%zSDKoGF`0^sLn{Y=a>Mp^z9r{Cvn#r(`uHELeu-7m8qnx(PwMRrt(uVJZL8uXnhB zpi?uDSQ-coMqW_)qdN?T&+?lm5W(u(_M?sy$YfI!luEW;M3HPab=w;dbmU-YB$3cN zEw7)0e!ihTK7pPdKAxUFj_xUDY+f>}6etOnU}};orO#k=9jC_^5RR!79%1^$b0w)c z)|7%;L_^Y3YEOnEHTVRFk|8uy!_X0hBnLsw6Ux~mk4ZK=(io&dFsiUTsz5)=!>cc>lvt1R4~Vd{FWu_z7ux4=kPSTw zlxK>LNQF5YAT=sHIqT*L+mJa(=2dfo!a?pORBk_+(Kt?j@U&l8I9pZj4hIK|!qyj$ zRqnR$U*?K(^ou6K(9!u~4|!|IR5LKbJpNlE^YG=54?OwXJ@(0Gd^~R3Scc{o^6(fn zCa831OlJ4k271=AD z8iSxTrznf3;^h*-U#{LXfE&?H8RG5FXFTt%Q3W63$}82&leLXhHz5 zp_zmNo)PT6%(O~B-w<{}$~|*67I@ z?CqmazhOZXk0Y8fmTdMd`|aVQE!{+nXlQICnRN}hn-~evf}(U7e>Od_5T}*EG6W%O zNj(3_?jdjxwEOZ3kv8wbZ}wdH?_LB!$GA``1fk_iS8jlQM2!NqZ(iPg79IFT5HTvW z&gf_iI&v_Qnbo&`M>s`eVly)YmZ<17W?~_7gz~uBu#m){0LJai*qx3@+!Qs7El$a? z28A)%SrsG=$-W$wD~Tx@D~pH;H?(MKr&jv<6FcQI3e&Qs zS-LUhPEkm{P*WpQRY@)5H8|y(Yw`5-yirAkSwF*SZZqA(>HNPbuT!3kuq7b9EZ@iYsMH4U8paM?=q0rn`!Q{pn$Le5k z2CfB%1qFu(kx?AfT$jnhG#`K8bP*B!la$Fp&k{QsnNcmXtelKQJRl4tWEB52Ja}`G~gmO~iiX|w(dk843+_zP;c4;_=RegMK zR=pAB?^Q3KK})#?<4HhRaOaCX0evM`NbhLX6wACF)9fWs`>LJ>2M6PJj>UbCsE@Dr zZ9)*tz)erBlA6VP-#d8V{a#vB3~2_Uj)451q-qabRPT8rI=_S*a6AL-8_zQ)EOJ6X z3IrWFNCu07NtnXZ(Ka=wBoSNb-S>PBjfVWpDqsK5(8#3zXi`x_03#_POHS6jV5`f~ zav?Qx263=#oIWZ(O5dy@qGhUxZHbn?4G};_OPhg;LS;*NzOhu=SSHkqR1F$9&*2jb zqe4Xva1a!GM_qeF)ACc`M>b9{B=8co6HJZ)qFjR|ER`RTBS+Uqa)i{3F$j5{p57dm z)E;ka-y%`s?-%CIQXl{ntUrKY>WwWtcZh>D0uIPQXDD=}A)2GoJf)f)2f->7E$)gE zWK+F8ZlbX2^eOA1ZeE49@yX+grE}q5kST?!90ZlOT58r#oA>;#b=P}I@95Ir1@ICW zh+sH+>ix~wJBsD5c|@rkL~DZ6c07_IOk4H(J_JFkFBEkFW%nr>2jk`D2ti?K_tX3i zd&&DCmVGx+-h%FosoRFeLE4Uq8?ozBf4^{d{7$z?LteUpmtMh4E)5B1B@3(Jvn3VR zdU*Me!81`gh1AFy#6kJkim1dGRfD>Enw88FQ>e}ZqJ=~R>zmcK4x^)0NL?k&m1Rqf z#b8LnOB$z}lLaj79d+Rm6%?n#FG&>dNM`CMS!ocYCD88olxEt<7R89N=lJsT4T+1n zVFRWUGZ5;o9H)!XT(->9(`RV2vRf_=(m0rGm>OSXaf^d)(2!B20uG|h^|XXD;w5Vn zN|j(CN>^@hVHnaNC||iEC@#*hXE!y~jAG#=r&+jXy>!T)em^Rlx=;vb&U|nHjYwi$ zE_Q}sao;0a+ol~Z2trewe`9dtY}%&*Ojb2ku|L= zqjeGLU%cj7_KAAO25!RwUhCTAriB?(w&pE66I_GL;sxZUwRm#S?7OF(%+(X`KeG_u1Mj z>~R9fvhx^4hQT{UyX_;vOOCRT38^|MS&)YEFmZugg(Qe>vtJ@7$+(SE+c12qpY0O10dkAX>eCn^upAlS#jY4ODtcOiHy6vC{P`Wvz| zX7%o~R2nKC+d0a^L-@!7ca{rnkDoLh*q>^wu$}79CB@aqljIUwL5kMPd(<;q{DK3s zjI#dBGZ!919L$#GtT?_HhNBIq7ffH-h`pm&-1LZg`*^t~-J5?tNL8m0Bx7Spcc^XU zq_`~J*ryNDAPCBDTY>^$q+6fz4UcA()jI~ma2qUx=T_6b)%>B1PKanNxG zJvn;tIO+iZ@U&!IbY!aQU>XDeC4T&OZ*(XQ|AfmbzBntU8=8(AP zY_pQOP*^pEh`2z;9SKClxQa1aesKnw`-_&H#?HZ6)(l|^Ib2}xDAgmHBhEkvw7fBn z^#o}Nv_r#KPFoI~%;cH<{lb88eJxGp^s@7_TRA8mZ< zglFFvWzWL>!qFf`1lgD?yJoZ>U7evQKo8fxeFO#{I4Ez?!f>=;`y@DCwZ8*(gzvFg7#Osv$R1z~EekE-BCrhwoQfL7 zw&R+f^I_anKp_CpDFn;+KVH^zJk4qaOVDZ7wUQYV0fN;>HUu#uy?lHGW~FY~6gWTc zKaQc88C0;lZO;N2e;8;*TpL!MA&tSgkbLc zlc0m;AhPdLIck5uP_PFF8et;CxqVwHJ=2qQRG(D}TMir~S9~(l%>9;Qk}}h!cME+6 zUYY^kI4~qGrJ$B@C7~p2y3vWc8o!9>1gVm?#U94zps=8PMJ^BxOhUf^U-K9Z$w5#Q zO-e(dqe*BUqxKKVQJuHpQ#=|}qstAQb)HVi!oeQOMkP1QCW_kN2 z!Brbmtj*91q+6dt-9)&gCy>eU^do$pxl2!Z`1-T0)5s7?M+lN}ddW?TNDd~Jx8*H7 zJy;Hs=3Z2IGIbz=!74VIPvqR@su2f0JiG>4(_uuWk?V$o8o2mbL_Xx?)c%^*-%odIFk1 zRNnB2QkMl`xVFc=L^5OY%4xUv`Sx}pqQwPJ6C?!#o{0V zK4KsJk=tAxbO(jhOx@X&IvM#QuBo0^H-SH9n&I$SPeqg^-`pf~Jp+6g zT0WM6MuVQGI^DnVGGzQ7d^5mKz^oS($xDalJblXMAmM29U&P3*`skUBJ zVOd0$Y#Ck!))I5%BY|Gf3azGOoSI+(Pg}&_^RNPyC*&NY_nRn{gA;+^xOw-nWm|Od z3@C}V#!f>b-Sft+y2H=%r84+;+DHMt?=gglx*avKTsEjAhgw()q{q*YR|MNV9gM}anGnPOQI|RM6)|T%$ z%U5V)Td$%n*pASY0!L!sSAr`}!adn%z8Eb;w)r}&&FrzyOXVOX6Wrmc!Ei659V*Em z)NA~tbU#24MW}k(9hMA+X;yd5@4u``bEh=D# z?DzXYCXgH6e*5ho{_uzR{QUXzzmFT^Tz5#jj%*v~7E$1p+-CLl&m^%iQr&2UTdB-| zOU`OkuF`A8SWV?&e|ON+Ar`4XPka=e=u78ddfoN%<>wzM2aBLEG;g)5YkFqa$;7(d z^`~EHzw}0Ecp=dQOGF`72?+-Y3hl{|GZ_LJcC4F$qh&}UA&Q)tRr|${FXM~9`OR;> zgfoBgC?pL&{Lb--T11y`>wosf)>0q{Q3zWJP752%-A5hOX_aON* zec%@TQL;Rfd)_VI^>&FIWEe$7LM4wU^0}HFmTWZ8i_^R8mJEzsoo#0W<5Q^=_WKc2 zp&_N*irbE}Q^P@8p;8W|aZZScST>%WpKCr_RP`S6pU`~?5`cYpVHr%s*1yW;KJxBuQv`>9iNeIaYR zQOJ;!sy4tE@@?fIb37n3>ckqgF;&4Xo)(S{Mq)WHFmTQ5tS_B|p#AAIUM^Q)GbbNK zxrPaGFtPMZWcHy)&A~!6Y`*w5m0rC6wwlID(XpLRUr3 z(6R5EFM&96mH7w?odGLuDXvhVj`n;$|I0S>ClB@^lc7>YB8i|B@cobfb)Ej_tv`L{ zv%kH}2#?7NLAo-CvL3d)$d@YJb9Q=W@60~^S?b6~qwc@5hU`&Po5C|=1XiE6tjX57 ze6&CH%$>+TzUBg1o^U0)?$U%f==Hbbm=?^Ykaw!bQ6HtQ7_>p7E=;+5TIdwR7g0}& z`?6vw*$c4s~Ms!#5d4W_En*4SFAn-R~dI zMMuB8|H5t5u=~)CdY0Dk0r8%6Q7G)l=CvA`k^25a_ezhd=xw zNP{OM@hTJw(cA12i)huNeosRt(A%MOA`@udY(a}Pg0f-4ZF6?Ut z2y(f6Yp9L46z*f-oQy=H`1_C!#p{f!& z7>*6OJx!7L^m|S~)F9QU3;Erxv3mjSfHQWB@IpxtM6<(Y)zOIVdjU3}VB#wztQ3F? zC?v1I=ZRy%0rEtYOp%=FOAILuK1X&s-8$;(KyQ&+Jl$Fr;PSX2x9MD?bC8ZgdXbqz zrcoI1f{e6!uh-k#+e@D3pe7=?xib&=$pA zJ%>Qh?QLdklic>&(IP6AY!Qp7TxK%pLNt4LIvVW9TeANW4hE;~ayBo1%p4>rtT=+2 zL>MaD>dt?^7GWe;vWls72xASHN>M~u) z-S5!Xow;Gy-nEMS2})w-&>hCw%pAU3sF)0cgYXu5Lx>(H1G*dR%uV{J%T|RuedjIy z4{Bp^LByeYuxeCpK3^=C8p(CLIZc#7*!*MN(`~OIuMGFYyW?03xH;FpFxo8;$?f5G zx^)zhQ${?+N8k#CfU(8s8 zf}=n^r}vVunUW;JN~`ve-`e9qK$M8p`J$v6Vbev`Z5U#dXy9>$QO~DfY=3p7KGhCrea9p-SWK8n9Pq6*dz|CoDxJWTP-I zI(d99-Af3fAR3Jp_mccxD}w{eI*Bq!?=tW2?F~$uW2)_f4I9HE8i`Lw%qndEgdaDr zQC+Kcv;D&NQt7iWor0eB2j`&ERmb39US;q;E2=#_6vjth0cqf!x7XS{NN9)?ia}i1 zTYBByGw6j$3!#uN788At%|RHOKEJx|_6s1CT@VFJHRJ+=1(4lq(LFi zU?B+RgYJ^ESB zKziVoK0TFwPxi=H;aT`mHV2LFTmi9QGEWjc+LITkjV6~G=$<~hDV1#Cfu1^zZ?q;` zK0zlDYdns6I04eZ{kc>`sxhlDU)5z|+A=vSczlr~I}N03yUT z9$h75aIlbdv=9dkRt_HDD@MJsUPc@GO{G4{jF)QWpu5VSvxp zxlCKuJYfhv7zY!3Zvgu|vv<;MLD{EXCQifl>mS1i&0X1e=8fVgjLtz-dD&?cbd_+? ztH)+MKZ44Qe(zPxL6BE9ovAN=^djM)&ZtC*FjDE0J@Y3I_R-(pPdSLEOjH@f9Aqnl z#Vw+-Eic-8Rsss?5KQbqF|v}K z!d^lK2b~o&s9<=hC)P`v~zO-;>{vHgoz z1oA3_;h8gGSy&qTb?Hu|$d84fM&*K^tO$=3ajl z=sUnCb>>eVg`~lOb4wq(GRU@w!f+0*m)iVz@{^V2n|lDMft#=U7aZoxHOYM+;Ok0X zN)@Vx6RuFg$QCRySk&9K-c>aW927{^$iEY4@|Pj|q|;r`;Gj~DY6wWhTEao>(X*LT zIR4XVtHPOvbgv%{@&u^}aD)?jWl?&KW&Gku6$K84hJ*qc+#mFG2>24AKpwvr9#cfJ zfetHC7=_Z&qWYHFR??NJVjfDMF#BwUOrztfg!DUgMwLn@rwfGP;bB}=N5reVU%ru9hC{4wc9uEARrI4LVP{3 z>|Ao?B^W4jCfR0fTg(Wa8JB~#`|e_W5LM(BNU$`^73k)R7{z25l|`|q#%e0ZF)d2D z^C;FFKSycw7N!i=-4AD1%5LMcftcfnZT#F<5Nm@M;;4|CJUaM3on08v`%!PIzQw#A30C#p0@}s?R_F{P%t4iz$ziR4&e| z3^LjavMr)04&PC%imcz&ER*QPB4s={2)iSJKx#I`OIPb$$o??I?(G%wPAw9NO6MTG zrYOvR0>J`SlmV&L_jn)}UH3xf>8}P?o??&}>E_$7r;mR^y3CLfS-gS6=M(EF1BFBx z#G~Wv8E1X9+-%~BL?Wf!7z?x?Tn7?q{#&QvHe7V{_;+7vU)F~#PdsioU>0B6x3ASN-sJJ(mT>wt8!T4ARv- z(B+G>3}?zHWF{b*&77WSS_J5QRJW#v`!I?!APA!%1n=o$fn~=_%=LQ^2&N8wz!gay z-K!Yav!_1CHH5=!pD*A4HiLt8XFsmkcbak+e#Ay0P9q{5tlPiOnoTAa4p(nkQ?qHY zxja0D!>L+1i(Y&?KDCC+=Ly6@l%SOL^98(XpX?!`FPB$H)eD_09Qx%kicScEYz`L6 zm7ptwumgmt9^3NbsArJ1By(kC;%NC-?RbxXOlm~#s?3I06C+>A9Qjm2{aHE(b>2#Q zdO)G`2&J0Q$N{RZHM0w+RQ1~z$4X? ziWikh4MD1BlgCkqfeR-{+tv6OHdVj7MIuI4P@_KLbk%`M7$~2Czap+c!mhMN`Z3{X znfY4=wFZ?;Apx$z=$nVW)rzJVHjU0&KOk4hv}P^cMcCAvowlR}ZeF$xxs2;Np4jee zO-)V2C`wlb>1}rNwil$AN{Hms{aHc9-Bc2dGq1sX+(G5q4|z&PA)A93f#hWz6jR~K@f8=uQHf7JOLhF_uWeZP>32OuneRVf?zQYQal>hF3RTM zL}{2l`Vmi}uuWYuX8F@8x$%P7=nSttQ|L{-GuLEBj?+1aQ3&5p*Q*~eG79NlLPt$X zX*CfJR?hF`@p;i^8M%DX|~c?!67`w{qJ%8h=IkiVNAzZ-!T$ z!RZwxLa3X+AYR1-24cXGOFCJ1cZ;z)ePJCT<=tx&o1PfilQA#6KkLj zU{+Gio2o(6j0Ac>rU42`Fd^_1B~yfk)JlipUgjVcp<cUT+O303oVS5IPD}&=EmXhrg{IYsYK&SCONJ^mB)d(0Jx2a_j2*RN4 zHouxVbUQI}!_qV-x%YkV@E*ClEV=hReYRVl=|W7b8}coBD*NIWWA8&cWJ4&%jgIne{_&eP!m`*9TuZpINnt z%jeZ^UrqvMTorM>*S_i2^LQHE`12P}y|oiK`23B{go8Y)s*=rSn=BmqCE;L^h|uC3 zEbbYkL(nm>Hn#oRxDdqrs@`?e-JWw**X;fXxd`{(Ryxb@2~uE1veK171_%A+(=DDF zAfUwxyFm`9exRuV@2CQy5r?(HWv>CL1$vyv*&q>XaG^6EPe@rr;~4Br&3sC2#bW4&EDueHbp*O3^hU7___C_P}{EDQ)yaiG_KdM+D7g3pK+rX?3D%A#R_~dyBfc5wM4>gO!|TpkI~M~G3vqB< z8m5om=F2sf)_M6;Fo<20!ws%Hh16$H0{&F`Q=l8-7k6~e!=a>s1=}P>OUn!IVhG|! z6>zkixynGHx3d!^gK;;_5F6}cVx)`0E3xbxU!thl^NG~xw$;q4*!mV+ zG{jp{Yp>x@8FT&2==#fyN;2beki+9^ZDqc)L0B0!dj+7-;jD>`HEhC8-fl_L(*psB zaw#gk#pj7ZI|I#eR6`t3B@B5xu~7?D&b;jubNZmhOWMy-uZ*%bY$j9@k!lJ&C>E(0 zg3cc85G&zRaf~(7NVE(#jaCkKr2FdA?HQBP1WUWVD}|w^P)QwL6N#AtsL^ z33fI;L7_w@D&D95Q6K;Q@BjX-Z++|5ty}-}Pyh6Aw|~{0=~Q!)5g|hl6D>s<40zh; z?qEg*TG+;f{oRp3k5sHJd*B|ses>E@1{amQQ;IT(@n^4_ql+}w?z^K;Pn8(mxGhV3 z(>2C=F*gh=yh%nTMQr_LSiJ6;+hmS#_L(ot&9j3Gw@;LVp*7DX4}B2d@lu|=3>pVL zvr+A994&+7lEs@n^%=Y=RtZr$;l)qU$%VUhXFqN{^G5qipOmd0$=SEh-C$RknR?-T zyiimBGw(8wUu|jP#Gd2kInlOep16 zdM20CS_!J9kE#;Gdnrrl5M}dJ$s{`b5GaZGMc|@|vX{cs;UwtI zx$nV=OK!%cZjqqy8C(9P^L3Ppk?TY8B;IEI6ZT8Tc$$RflL9A42z|6f1; zDSGzoS+!aX0*cG!{=pyo0bBtZYPH(y*RMbL%*RLDk{)`541A5)C_1iZ5H>=E3ZS7X z2l^=7AQZ}BKEM^JL>IWkqWPW_Y{83BX1wL@cGjWeGmptBs_TV;3O=*v_??|1nDTG8%4)e2BVuV0nQ>D zFP5kb64If~;ifmNRj6o~yM0AsDRK+e?z?NwpcrXourjgpMtIekyjtOC&c)u_T!EOp zpf59vzQbqBHy{*FY4@>Gm0^<~aHA9kifCFK-=a~u;3=T@5j~L#k{>PbqEuKx9e^8v zXpFAA*m_0|EL7p$L1q#aLoPGnYBp5mnR2?gld3GXWUoZ;GSu`jOrs=fG~0@l%7KN= z*gvS&DKOwL?Am4^|6pBTO(71#n7yKH@ur^t5)Qun^2;Ea=FXk_$}6wH3FaUivu4fe z=;*lbmu+as^%|bBVW@Xie_P%NnG%#i(9Q}a#cPyK*zLgYt5!O32{oPCTRiD6Z-5QJ zG@k~F;?Ot!G7%U!Bno9v*c}k=+0S8mNF9MZ{ zpfI%Rneu&amF<4LScX3J;<+88GFKbiSU)Xu;_j3J2TvlCyF!sA8|$BW8RSf6=Lu~8 z#H01>b#}l^)y7ru(6nnOFbD0~I8G$YSq8c)kG#2?;U9!CG`E)WFK{Pe@uVIbHf+Ey zBs%;4`~Q2b2m~<)3#CgGQU=pUKXMLjC|wzZp^u^n|HQJhbSA2O*<7e(yoD#0+1i)D z{#KySnj3}-wjFF+E|5`q2jM11cDgS+OhRP}agf8|i$zLokVNXCvk}v0Z0EQ#+^rtP za0dGw)+~pU%MFaPqCMe6rLc)b>b&8C3^kMF>4R3N*Z8p|4gR#5b6sPAq(tHw-4$AQ z8q`N^vW;OHB~hcPM)Xk!7a4g8Zni9?e_RM1bz5-=P?G`lU z=+*zmD1(W9iP~bx4uB?T&i0dF(eXIA!BRO`tmZZiUiBC5)Stg2(iqM4J%zMFSn^_n z!&p05N)*i)&T+WuqaP#DaqN@Sp$`h>P`HPdXGTt77hz`PI387dj&{BBKD#SZcJ&g( z!Iz%KrqR^AURVojKfZw9@a4aHW5Et)yy&E9^viH?D4l=d>UQ#rfBVPh*Y6oD0zn1` z^QKEMl)?DOE4J=s>EpLcjF8D?Nz6MzseYrW^zntK_!5OCP^omrsfEHzjJ!FjNiBVv zp%tc9zgV&PhJw0T<;}ADE)|k**qukum0)K^V0DkgvE$9T-JCIK1N1~`tU1~(sA?!f z6Qu9?IUF9JFJ^cQ;W{u8nTG6jbgH6EG*B_9Pwt6!3&cwJPnqgxnwyaT_w)?WO`}s+ z4XO=lkwmz7D`MHee540eHbpVo7H#fRsAYPKmXuj5!a>j_DRVLZaZXW@NOa}O6*dRq zqEIM&Kn~XTRiP-X=}mbeWLis#kSRW3>jKJ2#FtAj6bPhjH{yc~m}x*s(z=%@gRZh( zXXQ-L1dYk5^dOl+_`|ELcHiCFy|=4(-ps6j*_`e%mUqJPNv*k(UiZ=%8jg+O%s%xp zXoZoL2dphab?0x>IR!dn+0IwX_rG0Yt+wdaEBJRYx6Cdjaijj?r%G=$GUW*o< zRK=I6>E&f$MS~pB_)%+#>Rq?+-rk-b9EXFUAyEB*aVmwK-bJEN-AJal$lom#$f&+@ zqk5l6AZI9vtQI^T`bL=EWq`OBV^k1nPAOKRsB*ir8a}x{F^w;jxvGZYn~{6UK!D3E zHmT8QPDXt7DR(w1Q_H7trc`xi2-iFzD^)PfU*C~1TD4prw|St7RNl@TGRja1A9Gaa zv17;B9Ne;Hi__`6zt;p^GFL`sBX~f-~l3)~@w-bt$Y?(Ee(- zucucW^|w}W`8=gjJAMB$e=5Ki@Sp!+AFeV=7lxhya!kl%vPon-dB@$mcX99065WDy z4i-0xvJ1$-zY~RE)y@y41~+5PW;VQv>xq%WGjpeJ-a!PKEw5yceAPey5NL(2{*AD5 zqm)J&n|Ba;31sE1rGs$LjpHR{Dt79c8NKaYY%MM|SCls6=Rcpgpq z7?s8-(rf(axAV5>jS+adyL`}9JxAe9Y13`=TBF!BN^eKVMjN{WMUk7OR00L)Xpe1{ z{`99mwcG7Bn{CaSHNe3|ix$nBH%}xIx!vyj&Y@t`Qfpj3RJCY;VHCZ;+<8W>pH}Uq zD}#AEYCV);H6>wIs0{(0KnxsYrwtb2U}X3yg*}2xRa9(!E4%SE_B}Y0S5t=KsLOYL zr4R>!fbPMibrI(v?9v z2Z>RX-E@9TpTVtH9DQrXXY6!K`mov<}c-D}LGOSVVWT!0fx^L$;ji7!!B z?RXzlLOM-UwrF1eAVZ|6l@1PvPh~pDKrtk)z?@@F<#t*tss2iRgk|icFxa2F9d#11 z7Wb3~0m!zCx*fFuIH^R7Lv9S(ASojQii1*N^eW1hS5N63{Pf%VEjhP0nxWKR^~AgL`=h=Xf)_QQaa-r2Q}Um*Pa=RaS*d^t{?fJ3QN zf|B?kl^*FFq^Hj_B1Io4LdM_2=;mBxGOnxuqR9`J7=jJ z#Js~LDR7+%80Ji$%;YV!;$XO^ZI{}DnUkLy>xS52qA=p?k2$8!0ivb%y;x$Ync#}2 zVZSPKMI8g{VB2hNnZxi8YLhJ-9v@KXp1Do#iotne+jC>Avh%mvDV4D8>P=_+0J{}M z-io6Hg{5$iOBI$mdGh2WIKCv#!6FbO94urMWkkr7A9yFQ{KROO=ma^4QzVM4N-}Ki zOT4porw@K4*4k_}sG*WJSRoSoFS@?x=9ogp>;$S#BXttEo0ZQt53IsB8 zh2ba^36*0z*Bb?ViBTW+xtfBW4y@=gf&lqE5x_3ju*qJ-PGB?}<0J@&tt8q^NuR$1 zK8ZKhhf?bV5`jXmDQj_b&1Gj#V7d{s5v~yqq6~sHeRLNgn}hf%|5Y2~|NPJY1or*o zKmOzY{@?%mL0;$8S6?O0L3;Z9!!?S+PY*u{F^XdQ_M_tV8FUC* zDu?8@u*#G2PF-uQng$ERkr@iMu2DM@ngH^i8_PS$vP!SJUcUT%@fGKqu|?)U^I4l} zt2_4zBXC6%&FWJ1fWo@7AJZEr6)88$muoa-4F!vGZ@f5#!y$WV&<(`~tI`{#zpvO} zGgUTV{DtPNo~TL)99;92})zgWHVL%6|GnZuL6e=Dgc3f>De2AOT!^kc;6PbO8zOoWanOE{GIw~8&-n&W}NULMDmB-#7nqX|* zvD)Wv0RiF9(Bhp6cewVw~VT)7UMUDt8?wEt&Fi5QXFo)ED94-R~cpG>txa$H9XKsU)2RR~%c{ ztxvE<8v+CZH16&$!QDN0aM$1#Xe78paCdhI65QS0-5rAE*8ANbz!*h!?Y(Ty^?dfQ zcQV5ei_NK#E}$V7MVNd&V>hID*cdVt%HzOBK#&T@!a(m-XH-9O-R5()aGNC%sLc=% z)Y7W-0?WD$fq|ZG=$D^sfo!cvRWF!gZvF{CE|nWtiuNIX?R#}-wKhrOH2a0feJ>sc zUsMboY2Kluha*uzJXJ*zoT3Dr0>&MDOuiybq8e?6PvwdjpWaX*f~xL;0i6`#e*RdY z($2{miPe1w2C73l@s>R*cNm(YuLk&#J~L`L9l_gjce|MUZ#%uKTftC|aOn@ss)R_zG_Q1Z zp}=rA^<}JVoOMFg1MW5nY#=H)+5vn0UlX5!Vbke7l1OZTsP3Dd*67R*_bP$%TVYuo zI(_pWe)D~M-*UH2Lid;OGQ!J*=RBH~KDF_K9M#~c61|oS#5`4#=q2^~>g2f92vbGp zsUs0j3j`ac+RPa&UN5mF`w8*a^B3dvD zXod7j5+C%+f|W_BbITs-v{lWl$L8oC4-_)Ff&sc&1K0e?MOL@tN1Vg0vw1baZ>z84 zP#*6<4q&ny<1wTWFGWb#OZ(SD_|Rzd=EE9vUXKWjipmn1XYYVzbrq-dks!!$wglyn z&oMZp#6JGM=3Hfj(K5lLIzr8<-zN*v?@j81NZHj{?CR=RN#Q|7hL!ANNk=NJo;q*+ zcQ7yv(62vCz~ucIP6@EqL)L=F3O>CkHtV;_@cbMv$g-j*qkqKR>9PNA72lzn^`J zKqojY{;=CHoIFh+Z!b*xMte=j+%5R-nSNZPB4^_7JR8s+7PMaN_d@^|pD`1vmdzi2 za!j~fcM_43yxFnR?2h-74a4#~n9U1W-uX&~Gu&@is#s17VR@o^M{;^;q1;(Xz_S{s zFNlX{h4A2WS<9)RPy3djIt%KVTs?syz;hmZ)_TH}@L2fJBhsl%rTN*m6Tu5bv>bE| zW=iwDCy{SIPK{o&jKU4`X{aG(l7juW^M$aMiAZTonc#y3&qe>G^>7jjAmZIc`CDY{ zO(o4jx^E3f7#k>iEf|F?m2Ds2(!G=`}|~ z9>Ky4dO4UAR1El^29_dDdMx|PKkv<#jX%nR|C4fi-X0{Sr2GRCwvNkG^nZizjYIeh z^JU>YAc;iMm3^z6a&I9m_AMofvHr)N=wLecAF`@PoPKM`-0xlY4RWL(nJ)e^0DiukJ+L2&#Q?{gjZ)W=M8OLI9LHn1>|%zFFU}2@~j@{y>6A=T==l z#?Lmf;)9DGHWMwU^K%Qz1$#4( zQf!o~ev4bd>@AZMcJVVA9x)M*HQJ3#P(kKaMuuD@j9uS#eyV3sTOgyWBb1k}U0M%# z<)tiqgG@Lng||PGWam{%?)NOe6*RHyBgk@a`Bn^T3+^3d4caUH`vKAG$Y;i=rKI;w zQkWhb?gr2$cMHGiVOR3!^xV>Ct1A|Qbw$s?G2mWtdh@?0ks*n%YWM6Do!5jVghtW%lZh)CGu;0cy#Q;BA+GLsE#C6 z)a{Pv4t-kF;y~a1A(0hAp{P#t(3KlajS?NT1#CU%_yV+@iTnO?s-i{xLuBzHY4)!l zb!;*M=z@i`=7O0Mr>pt%GJ||QJXB|g^Cvve^;mgk^|FK=LMA?d5cmG*!MK6w9Quxny3kgH6?r2o6G^SuX!c`a1DM}+OMy-n@2Ak~ez{8kHX zf)L$D8)1u>XYYY>+7+8Agh2F0KOKXW6OK-nLT{X%9BrF~R9~{fX#?(N9uVHbG*B?; zuAidA=fKq}T~bl!uHfoOR@)n#Mjf-_EPl9}bN=2LA;A z$XVLMH^E)^h~Fme>x!ya+Vt7B;{usPXu(@BVwBDaI;_F4&buDNn>IM{@+lIh`afo3 z@*Zczt&vej&0y=`n`4YN_(W(Xee1Pq88{6gHw@TYppFjFJrH1TgRPM{aKfRU|>R1FGK4rb6X9cg4hza5V>!a&)1Nn7Ybjy4cX zS>h6TybD4Nsts$5KD_Yh1%+NXynv+2S~K7xfS-)9m}{CRHK(~l+3YNor@cy2$S~4M z_a{^@K%1bfadA8#DsLo{VUM`LWoo`ooY;;*0xz=q%K@Ga_=%iT!h~MgVXeuAn3YG{ z{b6_RBI2q2VEIw3Je!i-<)*68l}VVf;rY(;^Vo?++_KAi=d_0k6Z+!Xz?JJg^S8c; z_>$?Tk#kS|AbsXPiykL1$dL6WSL77_-M7ahm3&HP#~F#IAVPcY8RZH^yRZ?GOlTnw zNCo45Xf#d%mpEJ>ThbVg_k&&LXr0ubaNVEA3_Dg|EnoPGNDw~JhO5&_;c31B@nMX| z!HX|bO|(>!Bp&K_$Z$%DhqLs;9`d8qibi}^e|R^71?W;ssGcXrgPD@bnEOo`P|!*f z-N2y{?oT}a7*)GjLOfP5cOTcLkx~xxzDs%zt%kw!1`enC#6jRlEIEK)Oxv}%0oWM3 zju-LJt(rFNrYqmoPTE(qtPn-Bx%Um`0~-UtmJ@sSM}^cxl8gL`U;A5X7KAbc}zEuewadT2A6|;2)Ih?HgBq z(u%~J{L->IU)PXmj#bquvEuP*7$c~W*f98cdqL1Qs#|1_lJ_Q!PC1#^BlCg`PJzYu zEMX}bSH(!a%+7Y9oy2o%z4kA(oE0vh%owV%9af|Ev<@8=$JYmjZZ*8W%G=+1Y^n|p zo?%~(Rr2rDz4$=4T*TRXTM6HP_75%3t?2ssL&nm1rMbg_qHwn!0shoo2HC-2c!sx1?&K!Yjl z^Fy+I1~Ru6w?uxZ!MS8m1Mc8Z) zN$Mi9+I5>=?n8&V=K^#E;?xfiEx_v{t(f}s-%`?bTnc^udWOh)Fb5s<0(q{9mh$pU zeg66z!?(UVVe;NnkXRXhqlIh|j{jc{rG~+ssw6sjJtks=j22PCUy(RUXftr+`qnPL zs4-kxy7n@tXf#$S*nB_21STH>$*zJ*Bv%gU1L_P!7*<$#CQ_#Op%mM#1(6tf*Yuy~ z=eq{)xAVTrRFqgmjbG(y(nB=-!8M408*01ngpJ3S$_JgTYlXv+&0j-T!uN`m+vxfB z%fDMJYQ>5oFi*f2;yy-29_ea|1a4{bJV+2Ryq}b4iIj%K_^K6mal~CtO6r?H?%W1T zjDgDda>EdY1Fd>Gj7`Lfa+J1B@4PP_Mx=db0jjyDF|E;0W-Uth%wl##Cr8@(Y|+Af zWC=QlpDOU!!$Hu+ktTuNGkwcby?CFKj%k6u;xF}XOgPqKIS4%mc-{zVpz~uH2Mmz9yhmcH=HOw^>G!ZiOb+^MWe1`OS-u3f7rEk8PW0EPE#>&$I zM?@rhkr&Zh0*GMRJm_)I?^2{MM#2~zgHJ^^srSsgJGMa4_=a7$A-9O^oBH)a{7WdE zXC?|H>Rx7Fos%nf%_tIo+^maXDYUI)Tt|%}He(wwY0QC_I$@B}sw%XL2w?d&@rCvi zKC$h(n3_X^wM!7$TW9Tufl!`9`l3=P^h3;-1;l7~JC4>Np^AtHp(s*80Qr98-<>_M z-&nc#{>=(JzG!zIR$=a{id5ukjAfTVZK_&<|EwhodM4B>g-Ut6sz$%HGefeCG@95K!*+(}(5zfZ*JeMmONMGj~=q!jPuja$>% zfbNIPV8)l8caGI8XqrnP%+O-C4r85v`iY(6&%2HW0V@@{fy6qlip9%dIme05oZ(a` z!n!r1C1RNcZ?nEO&ZcJtR3)M%8+timBGyYb6fL*U zRL+h!=p}2NaP}e*Lwgf2JnMM1`)EcEj7Sf+o+J*a5xd8>`D+L{xhDqvsUF+uxuU4Zm#i&V z*YKXa#z2TIm7wm9>^Hny+KP!F_>+$FeNjs^a1beZmU^Jh90p9bUHIWAk<} zI4J@yBb_iyjO*6g+C=J5XY!0qDDL4Rx7z9CwPa1kbKRCAWRP_@NDqb1TN0(2*ahH*OXPCOr;z&Uh(~)B zBAIR)W(wRZM4($b=)couhb|gc?Zocxq3}0Z|E~{o7U&Vs(l=tAw1cVYp>?ws0(d0~ z7cNF)hHt^#GRf#?4la<2Z2I_9#%pjAW5~R)Tsv0N0$XN;csdrg@i)Xe%|bUTS3gO5 z;h1K4iWqrw?65?NWP~g;G_IKPH<>>CoqK}jTvFNP{E8w?6PTRR0!$`p{+^oZQENKf zhf!A%z7=# zOeq#@sbZmEg`+|`I%SYdoVfI%(Z*i)%R$aC2B#%7hC@}IYChox#UvhbsUZ4mL$wk* z?H;y`#z8ebz)*WP*7E7BmKNc>J80)Fj6c7YUR_x3Z*;xKuuZ;9>O5^MeSKRtf{L>5 zQ9ECvsp((JCV|luT85}MKtwhSHAxiV_&bPWRPpDD);j=jQ#gKfU_)KT;Ui<`R}#mu z^Y{*Ff0*#H{@_eSdgB;l`0sfUgie&f=UOJ2A5e|kRBrQNgTI(;0N-F{arY$S4eic>g)znNdbye9ni+u*0xc~>LbD|+@y~}|JcK>*|4tX@5cLSeR0#a2jAH}7P1YwbRxbfq7kYGo$&%+l>ruVehQx_> z6MTGoo`BPA>ZUA7szl+h^Ro_z?E$4;zsnFWSH1Ro)5vjeHMQvDpe-dj28eZHlKZo#}trIK$I70cZVtHaZn^;c8awvbxxz)Dmr?!o7d$45f0{;6+jX$ zudEEdb@01Qf64_|!{|X>sq7Y-724mLSO1-FzMtnZWQfCPT&7O(JGV;5D9%gWI>%;- z`)@+9kxez#Za#`&j5i!%ye@ct`SiY|*QtCdU;lD718YLT*H&+}{ZwdT*~|I!H~H|o zS+~YyUz6c%GPjEdOya*zQ(T1DKBI-85piofCaayha#tloDef_SiO{r0_)l;2aX(CR z*5$ssR^_Qo!kANCPC55Eve|ekzV&~Oajmr@-HKuzAsyQJN*&r zy(IP@4~-1KI5KHQJRr1GD$Y;)oD&1p4R@YWllVos=CkwOL|sZtr_DZxx_8g)6e$=e za4`HXZo&i=-@4+uMLz4O1uc>GV@3tgRm!s`+$bEt*~3WRi9qQivTYvbN$1&kv83j< z$d5z>G)5RD^*=9atBu%waJR{@ZW^tU!+UTIn2{PQa4O@*dOa({+99v~%zhu(PyV;lKz{u&%RBlg#P1LBk~oIv z{fUN;ftp&c^4i5^*X7XeHPu~otI>3nFDke$0d$!T^~k=ZLHrr2iQA=HEecUT_SLaz z{|tIuM^e~K(DN*n{=})R`AOG)D{k#g@!`m#CU6X`*K}qS@-54w;Wfv9fNTo%NfB@X zeETmlwx`7dR-ebCsPbxjgM}0^+DliHXvnqOz{O*3o`|6sG~A%)Rc(A(UzxJW+#@16 zM3W8;j?AN==O_62j9>l z$HW=52JexgLzb~)3$K*BW^vH&0^19}i>aSt{`e1>77BF^HN>SI9TmyZbpjjXl14#) zdhH!RK(w=$&7Jp*zf{P{$#bILfLfkDH5Ay75ajvuMFikRuC;q&8G=Y10l_WEkU=h) zLB!CTgD=;;Z9%Xr3h+7%(5m?eHvKYfVSRf~(LOQeCwPuCiDutL zn{;*W9TYF|-eXac5Y10^7T@&)Gx6{ygTE}lzpK5Kp6)the0oQN zJA#-}Pn)!A$CdC-Q783sOul&z*x$EgdK;SF2{|)t%%2diWt%s80 z19gqeMy(0x{dRTpy-BnDE&t0i`BIff$HwEPKQU94b}fvAjdbuXz69_=XK{3caTLxw zfBBviUgt{=ihWytSiI%GSTuA)vkw@j11FWPdlS5ciOD>6PL@cG9FV-yHwOnJ`-VXZ zbn0^sQ<62-;QnTL@|R3{Bzcv^R2(+v>4?)2WNP-A%Vd> zpKsiDNH(MfMPjNsF;0rw3h-dV+~tB)EE64T%pawEN@rF(gqT6YmfHU`ofm4CUK2dJ z>YcZ(UxbuB61E#By$>(*ecT4tI^ECh3;F+>v*G)PlN;mzOx7}UwO0Opdn>#CW21C_ zprYI)a)IaPOKtq;8_C!mZadFyee8erZthOtc&*Pq#{!Nl4y<^pR)0Hr0Sf42N&?ie z9nhOzne8|_LA!-JC3zOA4JWIPzj5G)aiI-{pb=cT9FCMtT z7eq^M(Ml<$QwfA3~r_RjPNQ_74;^P{(;P#BV+s3)X_6;}2J;CK;P#aa*) zDvrDiNm8$n`wA92fV+42S|y_N_j`aeQ}Xdrk~N~dOgJ9Rch7PMUONroI+WI;IGZX# zUzL~Pp3fzEZ&;>hXySlEk(I=^zvG7CnjN{@NIt)+4Camddh%Mj9G@!^zWEWMpTpHK zVgm_Jfl|-^cDS(Y*EroQ{&{y*P(b4{F=+R2$~!f_UV`Q5uGDP?w3tUEHoy!G>EP^4y;7SVKDF`DAmW<%Y6_&d>vRDz9^LXPO6S<7k z2omA(XJKha%`ZM5Q3#vPy9vhQTwnuLhvLMOu2sqmkAOD ziUK!Y%@Ne)N=5pTnHsd|`>6j^C7cwJc}`#59xqKH4D$*^Sw_F_%XMa|rHR*k;7}8Q z19?a9_~lG;C>ucLs^jq1MG$q=+)W*~UhUei&%Qi^PXAT=x7YaCtv0`(?JfRsvEBb2 zo&9?Ae0piW;p&J;)jL$XO`f9JBXF!c)A~pca^Dox@b#t(>}-u zaG8^-y^>yj;NC)5oLW#J=DSzDN?S;VuL-i_tlwLR4S76qgQaNms4Ipp>w z^J(pCi$u=T*n-JZ(m(by$aD&0Mx!FDaI#0sp2y3g8LNLw&!79f9p)u9awLfqMrSgG zW9>xwJdfZ{vUKjsb;Kc5_T3HJ#zoS%&#XKe;YCEF@BBcj4NtW)g<$}0f&$#|RT~tLY|NKAbjoKHNgxCHB zHj4RQw$F9gv8^g=EOxs@#J;Ao>N;4ZgIs!vjvb|bH|Q9$tQ~%zKSukO6SJHai1dS9 zGV>zDs70&z8li(wNDC{YOKGb{vugkWu|$2T#F!b@asARB?6tB@fqCS#YU6aRT~3R{ zt;{F^lfxVGw(e<&Tx`TsnY4X`;qzG;);BTz_Q2E2@8uYm^(bV`Jj%bh4ylnmV2I82C3Tz^Y<%p{fI|NYV3ec{R-;lk3s!&}H~ zcBylGrcck+TIARQQ#dfQWC)B2fO_>EFG3h*h>!@Ja(a?hg+#sQ#(m^FAaA#u%00s$ zz07aEjUa!KyC23lxx#NTxIkF$cOZ!IF%@=EwT-C@$&dE23v(o@g{|Sc79jX^?C=>( zJ=@mWDmdxW+96PiPq{&>mTLX0@1mxQ&YkT)I=x`%{pvigW?_Z{YBw=nCweXYZ+zHw z)!X3D@x@uC;GO*FE%4Wug{SYG83xOB-e!YCGZFrO5AN=vgNB>${f60w4ZrViFA3jI zxF4BxS8sL=4Lr8*=lQ{ku%xYrOJnTJl{A^q7*Q{OB;F^$V{_@%;b&y@L+|fCvw!LA zF#w*^HsT53QxRN_=UY<~M|9^%l|C z)d*z>=yb*8+~g`R`W9xd(WoiRm7b5JqB{X9I@*>}ihXm#xD+85qtIp#wAM~*JEX3% z+Qa-jez|vv++pa!G{#TkB9ixIff{JouzL2;XQMOu;w#R8?2l(MMH`Wli-lG!y*E<}aXDqC@~YEzgsO z6$G+=_HKuZBiEDSprhs8e9fYYn!rVVLE zxmn;b(HE^9IlTOjmKvwjQ;)QYR<<#UB{0y6y;!Cm@Dk$of+@-*_xpzN^}w6oh68bi z_mPE5b|%^#@%}^8s@UL5ok4wV)STQKoqG<)k#i;Y$(vgRs^rgP|0ed9i7d^XtZAHtKYc+8A zgx#7?wJ^Cv5uB7sc>nq1S8A2tl9#urTQr)zb~D9EAGM~nYvn=dOpx-(gZ64o8kN6n^>Ytw83gq6EBcjkGE>63Zh-Kw_2@z>sb2h>n46&6rzg8L*hux=*BMF2AVkI*%{>0lRFlGb31i6(TR;X9Pl-X4o z6`I%XrV^r(XoqWtt6{P#F`r8zKNpWYiro|~xoBwo@^tl|v9}G(j<~$EjGtS48EDpvR z$Rk*m$EFIK@0fb3+D74Nv2)dm(k+y!E2b37ka5qP=aF#t@rlLpt@aHqPvO+_Hh8{4 zTh*f*+6oEgDYaY5f(1}kC6uxR!rq{Fv7bVkFFv4qWD;=OvoQ7Wuh?>V@ww1m0=m}? z!*)y3SsG>32S)Vr5}l1@%J`Co1It`q1TmASRNuz@D0P}y%iIf0$~3X#`KGrBaPVT5 zN-&))vkg}fWuFT-JE(e=Kto_?=*104;_6vQ=)96;M(L5l6}ZGQqC&IW^i0sOg$sLhenJ7@+5CF%r=Z@w7R;F!qBu89Y&KhK|1O$K9#si)Ip0-;yYdQ2$>8)b>^J}nSng%JJ` zyzAvRPJKF#ws2vLx990nwnj!~kkfyW!bM=kRSmdc36fvHylCpgLM_z6Y6Kq{{x|la zk@Ftpnl4#rZ$kKCYP1le21p!J`{UNW=ZJ%Gka2t+!9rxmZ5cQv3>C2d}x#b`<9pxl-Yp-%wsP?p(ZLnZCQLs(=Bt&Ca=s+mIml+)a#|b z``{ve#)f{)Wv35msuUik zo4fNG?Pd*l@a=FoptsQb38|*EZ0G~Gk^3b1eonc=v~O7u2R6>k#`b^gRJDENOsnxZ1IXH8sXpGVb`_)+95*)*UnZw87Bw zCS}5K${sRLtkH$$!Gww9TkE0vE2+1aKmWW1N<%_Jodofg{##sFKn@mtX6T54z2i@n zM=<_S#4&`$d#+4_ZC;P}FpuRc^_qHUhwstl#TJu0phF5isYHrmRYwf;(8kgi$W<>Q zu1u3VB(WdTt=%8!As=N##L=L$l#O zk30xPcOEJt&`=y?=*ZscJ$Fl>doG9-ieovP$c*SWCW}K%_Se;2{a;NsFuM&<$Jq@oz27EMN%qd z^PNehFi)o0r6+Tk;{}dtG?i%|##<7Y;YUhKLc%^BCz)$~%7ivOq;_|UVB7>jNnTk& zcrsXMmAu~09Q(9=BFYFVL4OCp2%zBtm?&FQQ@AC#F<|e^Gth=2UO1sKrTrb_-gjP1 z@IoK4xXi@rO2&+AhS@Qm;Zq=~Vrc$Zk`#Q9*IsrwglgZ~ZKHJGR&FuNtKImf-zg5{ z^j|(G#Olair0ULJKaYjAl?=Ikg}PY6@}v0aA*R{1y}ED-eSeKpX}#oq3M)r992)J8 z9(8E=bA_J?jU36dHFMMh3z;7adJ6PG4J^F#APk9Lq_h75sy+(IRamDhBIJ(x$NuJa z`N!*TVB~p86OAt;R(ubh2UB*g1x$+z$tN7SlY3*o0NXP`uL%CJyh8n0r3)J8Tk^wS zTYTgBE<9VT2u`rpMZZ|whqip=r1eg%T~^F&dpFI4Km!j^|78qVe_3B9C!#w}GWGyV z*;X^#>xNRm>duxSdz>V(Z5Xu>davf;Zc#z6WzpsvFhcC){(XzWt4BmtK4hYsbM^O# zDigMaH*M5RTD*QMwK0>qov?PK93)6%2uqe-}JP3CW$DJoShsEk9LbrbYq_9B@9x4jv;*s zUuw^JH!EDx%P>`GP?-dSt;sK6a{31DhF);027Jc4ZN`sTAq8k+=Uv!fEz|EhD+jDZ zbsUox?G@uHX6__fY3bI##Zwe7q`BV|GdnUIuM8#);hFwON@?eI-u6cfE1Q{;6`;}6 zo*fj({xbHow9h1ur9E?X4Gu4x4nr{6t=f>V;iphlq1iST!`Q4=m+{-=MI>-2yNovy zh1@-_Iu-A#@*w_U_-jQ(29i>^2(!}BP333p(nLTp>(QYrPGa<%(B!W`n|J<8!%^;a z7@9mn3Qoyhzmueei?nMmL)KU+uA)FuD`AD#%1Wbwvzc5g^eik*~6L-p| ziCkK1<&iemI|PoI;ah@Of^SOa7zEN>h3^YERTDP+3lCb+i6Oyo7OA}^Fj8ooVzw|l z3_V>vq6+=xXm}iBjbSh0+T5kM}}eg zsY!Oi*as7kAuNCE>6Xq(>D`_t^rwuT($0*7NUEXw6XlAVDWMy;mAD((n|ib;$Jve5 z*?D_^i^XJ}XLN!{it@CW$}v%%vz|hiTJG95-!A^qPlcvv=TY6&0du;(Oie_PlT7Lk zk&mNRj1yU^!R^vc>G0%4 zpBrW2JKytHU?W`qDKqSoI3N83lJP&IldJKt-|)b?maF|TG8rs%QDK3MOfl62SKxJ} z9TxI}@E{pn=#;DB;(0PZ<(*?yEYioj!^x|25&yXk5(UaWoh?EHZD@y(W|Vx{()6Y8 z5yo53FEn~$96E_MUuP^!D zhWF*V?^=}iWyhBN8o|J40v4mLA`lGeFw^p@*bmcsBpDB^`1WI}^mTs43~gtjoWGhqOPuwxptk3nu8`IN+dT_%(4ji2E0jZc1)3 z6Ns!3>07)S6>CZMD6c~mv^!VU{5X#~4%-T+R^iovi~ zH<}ZlDZ65%3bU-Sv#LtFU*aR&HQ*U31M+|?Q*D_8u#4l%!#Tg(+0)&u(!Z3s&=e!5 z4u&%xNiCg9y0};s0nqw`^Wm>uiDTXpj-r6&qv*RC7Yu*wXsLAX6L45R`UM=pXjc!G zjDU#aaBG8vMOUMk<$Zkp3;pj`&A5pV_Ir?5YmZ5k?xe%YN)+1?Tk5w7wRjHHBCDs0}*;%88pjs^{5qb;Z7m z!NShb!*B4r64`LzMWEaKlU^AjcTpK$P_Hixs5^@oEGC1cM8=)m*hO4<4?EHTQ8NoQ zF4=%DZ0!|np0u{0MJ8zyg#X1Z@0#HdEx!qJY-~tJc_sG-;%FMuX2?it zZ%V0zWLuw+V)jfFGn1@z9<>XGK;OO-Ejp-s3Qsk;!scD|MdBa#L^2kV>Bl0^G`oX# z*58uH>>$Fg=RlLJ3}oV@oW9DS6h$*Ln&*1VEd>9r0T(WpAg0NH7IT&XU*l zTljPI`L_>)!fhXpgU4+v1vurK(U@cNPgo_-;z~L`FP9w>#E|?}?m9nWF>qe5Nco`8 zJ%M+sBg@yHh3M#Da2-ag4bRicAHuxtE&un)gj$}T&sRGyOdlnm<6mH1nj@9Yj;2Ju zH5APj$l%cvOCCaHAO;?*F05GRp?vnb-sH7$IC7;qW?^4fH z6L2qCVaqV4l*zdN(~w4t40ytlR(Ev8lx=j5k~Kd~oNOrI=Q8W>Mcup)E{=aQwo4W0%{yC0G%2KT9+P@{%u4-RMJ)|5pFJ5qMaN z^8ONTFR>_TNE_9ZyjEZhA&>eT*%a!wS1K>!RZNo#-DrIQT2{{BcKqc>7Ca_CM)~fW!S(#K+6OHW>`Nb8%4AZ-kviRgvk)gF|#48B8rV)QT`gQ^r z05z4dq$^cHa2aHbG6s+azKNP^dzRy@0ix&xjMFX{GNQtQCZ6<$MK$VN0j`tFT%vW? zYI7Vk*rk=oHX+M~!Roo%MeY_2`6OcH-*(!dARauD2U@vul^#}Buyw^UTjRO`i?BbB^j1!8yHcDcqBoJ%ZMqK%IH9`k zjuZXE2Wgk_gY#CpSbFR%qx<0Wu>?3d#SR$B_qP}&2wZBSni!;yUt%%i>oi9r*~0(M zq;1X7x+wze!XnAM0|W*14Vm;zO6h>4U49?|8fxJFP(i*M#ylI;{6(o(q-HS~f_m;D zS}9l%30Ei z06ZuwO&Jm4utMJHC4jDA+vsJUKA_W}T@8B-l-4Vf40W$nNasRpEU*~r)-JuP<TCQA}Tj ze=Fxtu@uQC-0_P7RGh+XlKsC%&TQ3HoZ>WP$-?X+2M_nv{=UG$18({sW_)hZ4WH;W zKSvE@WMuU5@OV1C^%Y{A%n6x=`-<`&4Owexv)4pUw-Zr8I2I>VpHQ6L&<*V;0?;ta zv&TeCzDD%z6t%0Ppnt*o)dpybdx*~~*){OsQTdSqUAvUm5Gl5UoLTDJs_P5=)mfL` z#%7-)k`{*E&AIxX`+#kk1F?R7Vxo@OfLZFc&4V^+dLyZ!&B_=i231&daE zO`0g6fP91jN3)tHu6Y~p@L1kx==7XFH;ky<=g^hQTB9GFd7?qL&gseQ{-#neeKG0% z#0H8W@&Fg{e=uK8E0VBqezBDxsTdh@cN>>8YzJ);ZhY}3&y8pCG_B%;DTgXHNHsW4 ze$`fqYE?@VG70>zoA`YjZnV3N(=?G6ghZPE6PiexKYar(&N6cL!C*$N=Ms=WV(_%4 zsEg3XWj)-|Qkw~vH0@h7I`&g7cTvT(_z6X@Fll3BTm`<=iWyb)-&GkQ4wD?};~v1y z$C=Xt9qQQdtD%rsQA914dP-(1)p&;z%#}X)VWZ1>r||sRC}tdj89{{Xj-2K+Drs|d z@B(nJ>=vG;Z#%5Bg5Lr0HSlczc>z&aQVM+9Qc{ z9w>7EDrebiHA26*!KR<0D}m$nl#7%?>$8l7)*TN`srm1wP}hp&C(lqpBx)-3o^e^M zF&&OU=z9I@?8JpKa zL=ScoAeTc!b2YmG;bcqiNKL+*x;;{WaoeUst?g7+r?B!`Pl7W&z&#(h=6k6_f)g6E z@=Q|)k{87ejI7N;wyPW;=YMVAlsMrUC7IGaOCXeY6v<@cp}H*ut&D1zE4($}_ldy3 zb(h$W1&vbyXYvvHr6B(cF|iK2x6F9v+9&^~?NC5vcHJ`hsx1{nqi)U+uUw5(z(+@w z25o9L$knp|oRWJvR2{0e4}px3&*b5~6#~`twqjaXPc#jG6;v%GEf>d!-k6uuihC7X zYDS@Jgkw6si9S`_WC#a)qooNcyek$eLTP{gh3#N5ADsKz=9!q3F|VOkZ>Tw)$ao=Q zjtuqfV}A;-IqfJe4(%V*HxVFenzbROF&*lL6P1($3nkVXF>aCc*4>(jWtj_Wr@q6;Bnu5}$-GMiI}DV(zN`p;nDgIe&(p zn%S-pH9p|7zOebnST~+rt+5kj(g#tW(v6=IXkq<3%=h5fu5Kq@GDvbzr(1C&1?wV> z3%KVSQgbP6p(&VdCOjCwyw-T+=WDlEb$KtR)urX1j@GnXSBYTKJz)IAwb2Xu z1H@ROk8DUuAM%YBODp=*f4LjUd=BpPL^oPS9*+nK7x~74YUd|ujsASeA08ZeG04?S zmY+bafp1e(>T=o|zm1`+PoYDTPMys1fecxZB;ylbNJgHHceHXImE)A{xRN$WpDT}L z$(ehj!h(fG1Segh2>K@KGA;f{_l_q{MTwN6%20Px>ikiRs72sWvr+6=liljYlHS|K zV<&(r&rqh>b8E|N9^ZES;g5B&)j;XW8iR;6QZ(o?Wkw&IDRS{2XrJnf5=ApMx}2y& zjcSGKXZj*hf1w>CkC$8F$5iVgsoj#t4$O@gn1hFktUxAueZR)BZTEYIzM-SxG3}=8 zZ{jpRNMeJcn?%|b8F;TTJ!pLtrjY`T#`_N`snVPM!C0(_JU^|&MT;#N5bGfA?xJQi zyq_;Weq#Wy5d7|Xt?)bw=Kmq8J8JxSHjtA-$C07^4PL`s!f_e?O5XdBZLGGs$x(tW zK$MxwQ(04p`YTTuFo!C<8r%-@%9zAL>5&=#WOY8h=Ueq79;yv*s})D7T+UG>qdrZ2 zYS+q^I-I@0D#Cbj6$%}=p*4D`l$pe_QjgwY8OgcSU8$NIslQRht+28>p3v{C`WV)| z``yTeGuDBxo|tt>j?#xvkzQdw!GV;lt&KnG`yUnVLnY^D=k?%ka^i~~oH`Z+2k z``c$yv9D^_2+}oxDbKkC)sJe5_@n3|4JBxprb6HiTWHfQLq)m-NkH8;idoI(X7x!m z$zmXDJ2dZ|c;ae0TUdbBuU>M6_SA}6j`N5}s{pi?&t)MwOCNbm=X&xK5;iab;m}l2 zF~i|I(FuIZ3|K(+d0Fq)u%jLM)_Ce@#V)2jJbM6UAb`30n2Z@!x0*NLp7!L!tF5DR z^7!%(*zEv2FxLM5e7ZI9Ke&l(;mv-EA(31OYN5@X!K}Dj6xEL&b*VzO{^YL5i6H1j zhR~}bYE2BY=6`4_Z1fEYqL zw@ehb%JV^gl$IUz>6mh%3}=K3%V^xNrKzx!v%%S9cBT>SKZ|wPU))Or4*_*E5k9xSJT*eZIcTf|kbW+c zq_**@7v+&A09k}o(4I0L8}i#M?g#7vjc}H4*gMBqD{Oh`@=cQTvJq(#E(xM!7g#<|F{XdqjF+2{YYd3bXjh&5c+qP{dZEV}N)0mBI z+g4-SjhejseAoAP|LnE1GjrzL=Z5R=*{I3zXqaoGoKB~M@0wM z$H5}3{*EPwqn*`b+;ZjsLuV=31Dw$zArz*!D@|ygvTE?}pK8HnuUb}jATH(C+jP)$ zh85cG0iKe~b$YaL_>r0{;v&#ft$!yXi{hra)VgEIrfA6UN36(o(^G0!KSFKfT+zS9f6?@~JV#9aJUO~8WrgDvS3i3#oj~@`IL+%DlCx3vZ|@v2>Ed3L?YV`7+DV4^sU*07{9!mp39>#e$3p-mhd(X zX0Dk1U9Eil6skk03AZWHrBjK$ivU;&2?@QBm@!*XXHKP8xNwszAtp`Qs#+i?C7<2_ zK1lG9!8bcxtH#aV-gmx`?f!H20c|;U_T?+LU_20LC40$!aZw*PfJy^6Magfd=tMx})VR!ngK2+`K%(5NY?|>&Kr+QR8$)-e10-!@mKeNh^?~3A3%N8i z+%S!z8_G6!+Ie|hmJ_q(G4_UB#-p}g9B^gtSHTY<6NHS(3+mj$l+56WU_g)=a#C(# zD0v?5Y`>zw>mg_onD6_H^Ko~+TqOhtuI_PvIR2k(!Zhb~jvbzy*xcLep4wRNUq%4- zQpG>vk+?e#ZY#!9PIFG#M?26JHIdDff)Y@0iv{1TA^M80uF+iLDSbYrF9p2-Vm02F za&IyYBlHgp&N_seIMH->n|p11TrHyra5@5-)YvTO^|%>K62gL+G^zG{v1|<;5W)vV zEwy|aY*Uhg4+mJr*ejoTD9Fk8EP;LC5tv@L-Vr*Q*;1fIzr>`TY7f_&y?~ z(3x$ddLaw9RBQq$(hj7`FlQJ@l_#Yd$o#Ni5H^~*VDYfL2Juv}4LuQ*Jb|8l*zzk{ z70%6wGG-Uc{)?fX8lEhGrF&|F38#8{j9O;Lo0A!NVA;sXXg8Y4)%|8WS7?VE90tZh z6IHJWQaVBb4vm-Uk*kUuUtmydK#LJII{2+grbo&y(nV=yMWZxbw%X71h|RnXy{byW z^(vvZA;$dOmvxne(&)M4pz`sf5GHR@&$amF1p$3#0gbU@aWHRN8!d&yin?}Or_Sfn zxbP9*EVuA)mTk&$M8XI=JQw!mPp0Fe?-ayY_1dx=wha%JGyJSQRERg8U{u1k7b1Ka z3z~W)rD~UNGN_6P)%6Pda8w5-64Mz8wyKgj*xT2XAYRuS1_cE4U3@?l`CxK0e6X{-#a2R0gU!Pi9@LyP%owxD+ zHoYPx)P4P;o)MKmxu`-3YIWo7l_IJ#ze}o^OK~XJ9-yXT-rcnQ-56pVa?bvMA&^;FvE{ky;i7&)n^k(Kl^kO8iAio$ z)G3jJZ8N>@!6gB*n-oS7E{D%;Q31lC3DA;pi8uGC^yrzE_hJ4V*aMcRx{Pc!NaZ=t z6i#>qn?ZtCpSMjOb?|aUxCKP7u@D$-(#3ge$j4SjoGB*`3k|Y z>;b2Wh-}!tz6I=;m46ioy;en7eJ6y6>?gI27M_VBtx z&*7HGHycjGL(XOvxCT9X4@=Gw)k0*|_2HtoEM^)hyh802zsczTI;mBojEjs~Xiihc z8K6nE(*_`4N>+wVF*3U{&;qlLp#t?PNo)Jd>25{2KV@{lG>x$>R8*3tQges)z;UEz zn&W@!5h_B)f6!H!#|c3wdFnW)v9A4a!X!sJGFHwS#kxA5+`C=q{+aRROm+;*qf9d& z%*=51&{6FbxorP4XJC%H!$Di#&#`j7vhW1>>Hzo*JlK5OdpH7tZ7V)vMX3df0j1La zu$8S?PqLBr>UqVdduSL8tq?d+?_ogj6_1>|{2%-cPmm9OdNLjKYT|Fl%5Dr=`19O) zims!sBGWh)`m)=(#e!JNt$)$sd?or}NfZHmfg%Uj`f5IxuOIJ3mL9pNHP@Amin8>` zJBP0ayWjtKC=pCm^LwXydLVXV4>&Xa?OFm5n{HgGNrYMJmOMU2Hjy30DV;EcicOC&P zr)zf#ztJB%#jbhOUUuabS+io@52{fM||QC+&d4NM(Y0@zG#pbk2ZE4qa!oM8PTfZ+O^LfKU| zGIIGWzDDe>);46A6NZYe!K!}VqV+=Y=n+&(h)Yo0A<;aP=$@iv08PZiiiu96evRHv zZUBqQbqepw-N=g(7Qnlej13cBoBprXqPi0i?H~SCBiJ$5huN=}Z=ZcIN!`~WmJ?2S zV$kI$xjneMD0Tt|_rFvOHu8GbLpx{H^89S7+aGkVIWf|PdGN_R#FRbcz)b*{S#uXp zbQITKXh=`Hs+DAHHOhU$AtEx;QZ?){ks`YKk|P68MKjJ>7M3jGJ4#DJTntSuV#%k* zhRPzjnN8waFqundo&7&&r{2Y((}e<`bWkgcLNPr>s%KiX2<1y}-?Cl9V$|#*rociV zwpa@r%3J#n><4xZoR|A0AV{y}Y>V`E7JLaz5_K5ZDWHYvq}UhI=@uj830YuFxy9S{ z6f6xDyzLcCb=~NYRd~erzDMf(?lE;{iOh_hM0Qx&w`m|F^OhV98W5^;w)#@dtix{d zs^a1cWd9wPASg8}tgew-@08VO*m ze?AaGjIGn$xIfnJ@lHDoifs8FJVxzxu|kiD=H4A>kJB!3#vLI^OdJ^0FoH`CKN-)T z#$oFTPDRJ%(R~`2-7nrbm_7SF4xzDyFK~{O1;iUK=yp~&JDCK8=AC)x{L2oSWZc-$ zl&AuY>)sq#^R%gXYWa&oCuO0%0EqrNyw>a&1Nm@SbnSdK2`rE3eA-ko5=$?^1P(Z4 zh-IA<2i14&7dVw7LD)?pn{>kvVGVw|i)ultY#KP3M;Cb1tf!JkySeUB0w7}_!ydko zuV{^`VK-quWMNbl(E5albdp-ImMU|f&R8iZ~|4|f+t@tax$ zxg1(6h1-OSN~{VNFkVB0)5y>js96vY-$9}_kLwbr*zCpQ>f`z;?>|KTfqTjVmXe5{ z?@h3_faeP2PGVrktebIK1G}RUHH;fb#4X}z%L(aXMwS+&r9o*uGe4Q7xc-~*9Q-B| z<-&LIb`hnlk#^r{l2k4_T?9f-{aRC|peimSeyRESY;wzp?dUjnTy^Z=A%wC|`=acW zKuL&fA&~?y)QL@|D@DPi=X-Sd{GP90;9>k#ehs?iW%JUh)5y&99 z0aJ+&C2Vi!*6 zkDVfaG!)HMQ0-4IYoXCx&h$^mg(y4tn_q6R^*oSaYK+*rDaR@SQX;igX$Bbks}i8$ zI_*}GG<_fLZx*+xk!dYr?T=t23GVTvxtZ_!ltHqymi8TaEsuO2QhX`m*!)B(RQ5L+ zo;vpRD$Vfflt9ES4uS0Tdozc8NTg(lV5Mp9_eBbQ0)NA_r7SO5-J&u$`mFFOTIm7KOb34!c8Q)JXyQTC4$0jgaSasFYG^+z_!`(raLvG{}+x<>}`?15i;- z>jfgx6V~>M1{6GHJa~heSQ0i49o3X82NF%{bPN8TeH^V7j`mUGA_O6#z!=jvPfbmA z`oXMmHh*ITg-VB-p_8a%M~Bt-*c$$luW<45k$(iZKxg;oN!pGpOrPT-z_^CyisJDx zpdp8GN6JwjhC`2u7eEb}>I_~8mEqt_$%Tf%ixr=$yOu;Ex z->iv7M0T|^ecK2hzw!#6WC)ON02S$#Sm{=TaEd!f62JE?v65Nc>-Mc6tjWu0+- zC~=ism5WqFsPv70PxA~I3Utfhu%gJC-#*!O@4sQr*YB1`Z!1AscLp#jQ|GXm%$@&U zz-HY_6d;2h-A5lLLSEn%zqz(Xp%Oe?%oF2c6^99Zq#~PhP~)sv-2rb=cay}KHghOj zp&)mZt3h=VZ*Jo%r#;;*vm$=aaB$H3D7*{nNg?#h$flFYZ_PU9RzJyaR%64w;gLfT zM#p2de|Pz3 z;L`9r)SCY4?bWD0Iu^H3&@mumjtUunJ1+HPiY3XC7M>{5G}j1n6~)38I8gPvAGWC; z;4myaz8Ci~hSvnHaNk$=LuFcrKvfDhxoX({r1vOW;ZbT=ls!?#V+AAjT z6#vJSDTareozH3vQ9+`k=B@;lo)E-`LE%stK6HigPD!_bQ~OaObd^Gfm+FK-CbC5) zz~v*94${aEACs9n=RRGO>(x!CU#Mm?!XkKH@?;%o(OX|h{&$WP_;g;o?E|E<+s4R2 z-*Xxp&My~--x*Z|dE8S$qC|&aX~3 zcA0VEi2$4~GJJK6-td8D+;E(1oLDC4tK1#@zS2MD0>`YFP{O`v-B4CJ}OJu~r<3 ze|Yf?$(EU8Vher-Fw z0qi0?XA}H!4}c6$tt@p$I=q;0yagJSoH)D^+LPi0f$(=pYT9U2E^Jvu+{rQ{%XOY` zj#{V>SYQS!mC-XI^4rq}C zVi?Y=YvbI)YFqTG1P!zpP1M2w94*I`0y4-VhfP0U1z}LRN}z$1sXP6A5JE&v0pf&$ zCP?nOKKtTMFIJ#-rXsi##6ywD)JB2UW9~aIK;d)@J0EmN9?sxJmzarADV#4$+#{Ew zQtk|*Csm>R!7ZAnas@#1{)Xup^!*HjLe@?Xgk2w0BYWvy#jzNIl82W*D%5R03%bEQB}N3a>XO7I*=%Wi_!ICy9^SHl#;J7iqEiVs zvZK^OqJelGP5G44^B7H%-9_XChzDku^oz^d;`sV|E~Z6|buaod6ITFfKS zv+)E$kjM+s{UFvYCd}Vz{`bp9M`@7|5hrA*ln^;3SP8RX33pr0t$Q5!i4shhjMt)L zRqRQf*b@4Lu-Er|P+K5%Tv-&N!n)3z7dXsD(rF-!bfMpkN7e$=Y1_qCXxxwfg}@d$ zxXSG$-y^fCwA8V!9zxr|ucl1Dwm*JNxDe^|O<2>5Ha$Hj0~>T`%LQ+FaDNj?B;!th zzx4-WL|zrbCQjBWwxVN}ItGHaN!P;+Kg)x0yRtyO=yM#ZQbZET|0Q)k7UBmnTm7fffgTMxZdIyHLvHVSQ5s+2 zx#2fetH_T!wY+vhMo8rVD#9Q+(4!4Gn|F5OmfF~+57dpb;Sa$~{rc<@LS=c3gSMRE zJjPhf@hf(@VZOEByJjsiU;*7t^7~GUSU2pN?kCqhg^bm+dai4{ZF##uC@-d_hjpv; zsNb9f1hmf2UC^JQjeoSbk?2XK^`fprq^0#f6F49*;-$ho1zy3a83s~d^7@V<(Q#4M zZE+bPCB9TTgSs824FtY*ehN)yZ8%gQc66{5q67i1$&ZBz{`T`6ua6uM$PyYB zJTueY@sTx)6$*l#R`q-sx-1kyO?Vou<1x>xnL`jTVhFhDmDl{AbX);?NH{DhVV8g$ zaw;ZD1PHDE2{fd!^*O|Gx)He_GwAuFq^9n4OAH$5*dOx*h)nRXa>E$7%5QV&DV(<$ zs%7tFRkxhVdhN0V5uj5z9>)DB&58JU`Vjm6YYkTY!f}Qxm1YUA_GkHBW1Vp zh+m~t;D;0q)`KEb>gw1d2ba$m`gkIN5%CF`z_QaqcBH=++Ty7)p(ywzV#M&-fy)-y z3jh=`7PMifYW1iQ+``9SBS9ekQrZGF)jiHfs28 z{kj>46k0VtLD&YW>{L7{#2}Vr3B9=(}YafJ;h3C*0|fM|a93%#)gaUTd43VA~%j5;Dx zP*kH`yv%Okhx@Jm{6#cx=ChP`cA<#L_KxBfxq#{MaeC&@(^$kz0i}VQVMFWguB%g~ zFUW_AJ$|5Y>xCV@nodmo&a#)HcENb9{=sLKde( zUqBfAeiGKKrH^I$YBrGA#9l@lIjOnP(4S7Lu?d>|c=vycbsFMPc&me;GiXQ|#ENQ0 z{^^xEmBgWj2iS~+O9}hFj>f(i0&UrJnT-L-0lKcwgS=BBB?1F?|b#a2RGv%=z5jnW^ar8uKw}Cv2xi zSEj7IE3`C-@OSG_(jT6sWPo!54WeH`OrZkqoG-Oa`no!cp5ISCCD;^TI&Iy0v@sHn zW!*Z#8H5!F)-wsSlv`9B4K!T)LkfNfl$i_9AAa74y}w$kNx9$P@7P>gpMr=R+i#bn z>aY(A8Muzv5}}=ydl{-`RAQ)k9X3;TN+v5cOOMwd-sQAoR~$OU4*F((g;Nx$oq*#4 zWR<4RLQIvy|89xuXz)L7cQ8AUn|@4c=a_og8!o8S1eq1myLp%?n%FhkY89A9c5!EA$M!>Q(}zh4V>HcsEoo?P*J%+ zpo~ClkkSt%q+c&i8g@2aA96?Y4=L)aY&h%9CxpWYqW8vc<*^8Z*)y0#-gyh`@GJ1* zb&x*`!bOo~DDa#&`)hc$OZRS*ekZ!s-AgUIH3?PFYsXb{G}gk~CU|ug$E@qizzH8y zL0-x}Ek%pb2#NZ0=qhri#JBcR8_2LN{v~^lg@mUMO4It4Ila*dg)rjwO@mvk* zpkoZ;|JQU&66W|a=0nwuI0!pGr^P zDbN5zX5};yA+#r*KQMTtl3M$sw%~^sI1Cu1`SG^|qj8m3rr~dYl;)ddE1A6}?j$+p z-wFdIaA8@53+B=HABKB`Xe*mTQLsYJP&<+skPVH-XhlpC7N|kYL`V>JNrj4_#SD8D z%efsuG@P=21S!qc22R^}FzXbcSnF-zYiACPx8qDF>E?4Iu_4S;Ig!|bZ7n!jBi1C?e!XQ1YcoENy+7uW$ePX=LrFqbl&?0 zu867#t~9K2gdi1}3*`^rL#OQtj6aHo_B{S}DP~c$v!(L+x?j7^Tg{udzN39lDo&@U zLS`~HxK2@+H~s)#tsQ4fy8OU}+3(94S#l-ljl6 z32fFRd)>s0zR4s4erl5wMl!xP(LOHeW!y(!~otCb5aL}8FAT8aDm6j z_tYrJO4l#_Kszh^BDJ(->wq3!J4LXeBzJrabp^z&j8LnD+oOgfxH*nworQR)!6TlKqwIjz(YJb{wcr~6) zAcYJ>sVbW2RJUUpNT!zM5BTBpu!Y>TpMq6iTV2;kb}ec!pBPmG+(mBlcHOSn84Odf zVThlKS&Fm@$vH_zqlJAsLRx!{L*qOAw0!K1n`A8yXwe;S?RhsFqYf zL>nhrpF|VEy$p;3z@@a(2jYE-2yRf~@(xvkn5Mp}9W0fYJ_Y9aS$WOCyTZKG&znVy z69|FIAYx}v2obXe6;gMoM2{HodN)X%k~l>1UrL5ix!gg#pnptnncBVN4;XS9k-uEN zrbgEd_*!#N6&EI$vJ|3R+}hJF31R;GTW9B4kx7Q=ZC_^QUyDjQTR28o!rs6IUYTQ~ z>I@vF{8rz8KmLSqJ8%0`U(7qdG!7^$Yq{^?Duv=SVpV*cfv8iFG6N7;`nikATshSx zx*$R$dM#*u?-{(x_pKU*YM76kzJuOHdk(J6QYdJk@^OmL6g6a%-92<+|6JCb%*_QJ zM7l^WqN+Q2?Dp+!UZ6Mh5}h1z;ugCL8$IgfGA(0-mxrm-iA&9beC1cMsTcRlXVQpddkLu=*JF#pac@uoD@G8vY)N#I4|Xy|}k`agJI{)s$)MF5B8%7)LoEWkX#{ z93jbti19BWEFj>GrP_c^lg@IcpEp5J%lYng;7?iAj6m-Gv*gMjMIg{AWMB%`1vg?} zr1$NQzTo@mP`l(Y=~{u!SG8nHGw%UG_v;7<&@Vm&nol8S%m#O!NTuA9*XEE9O)&`* zV?$;C4U%V33Js(NDQL0^9-yj~FAI^lFaE}RDUB(if`dmrF_;=y(n(uArnEc18NtA7 zInis-o68`3{iCOFhKvvnUD$I_2TYE|JVq3X*ig9>N{pdDFOx+lP4dW&DJaVzqyERw z^%BeUki1Kp`=Q$DLowEW-4EYILxvzKHTVW~g(}{3OqdWJCk0f}gcT=w%pw`3#@&rp zAUa(reUUi)2Unm+>6 zsI=p$Y)$XuSQ0}Z(f$4o7DczBY<;|@9_;Xl#$_7Ei7-u|C_zv8)T=C`SNy|8Go zI}U~|fY5V=oLn%+NtOE`xN9zo!akN}Uyf$hJn z9zIs`#D53Yd5u5eb;VC7gy%2UWsQUSIz}oIpi2k|II04~&imaw%9qF9 z<1myN&dVT*qJ?Bm@B_@*<)Eq{^tQZ7c3Ru`DVeoT$)+z1i z1y}a&?Yr@OO8E2|sOKt1>yKz=&9RENy8DE=Led9G#N0XlhNe{yj|PGMp8^@gS2h40 z_2}$OVp)X$V{|ek^5@4&=855sP%R|LJq+!?!^G?*>0Nd>?;-ge<~zLqYv*Kk>)(HO z2a?-g)5;UK^N>nwE=M3JWMrb~1flhcsPb)KTB|LO7)Fwxgzd`0fqZrKr3Y6KCZB1JT>} z^Yx?-2*`iku4ivPLJy<(dBNwaak-%vDydkKwlGwHuYW z`69u$n6RGC8ZM^A|796LsRWUpd#{o3z_iH1d@ZnLK!7WiHsStgpD}7wxp1{?N-mNx zeZuMsA59nr7KF*|7`5vW=dpCgv}4m%#JeePHQQqG)=RQ$c@jRW2?LTFGS-sP#V08A4Tp%a%Mcqc45PM%GmY!)sM9$?M~yPvewYz!d~ z2Z&F_DAKiN&gnnTqEEB^;&970tgC(nGJ7qJs=8fm}>%8L=o%}NckN`lBIssyb zDSoP$gzRcwQXMEi4*Td1{=&7}6mG7FsGww1#Az+f2Q1jyQ@c8|zwH zi|v&k4oiNIN#aI_v1yrsPbBr6hlLWPv6U%NFyyaV!*@&zb8^GNn7~RD1E4!jH);&5 z+g+$vmL(;&BM8opEC(i6ICBND+HVAq<5%Ctj;==;<$PbI#{@zIalxb%g;*f>UdF%p z|6MDh5O8tC!a*X)bXTKTxD--17_Ri{xrk44a)*!eCq4>8N^9*a9cc`+zo_r}bfsASy##&8E|!uP3HU?-{3 z$zPN?ilyDHZsA@bk_`VIGs;foOs>SPEW;eZ0z)}Vqi$WydaOAV1U#g`zD1K&P_Uq6 zb?$V%!2H;1f`)oQ^v%=)PE29^HiJd3v0>$Xa?8izmKvujhS@IZYa9YSL}CodW0T4tNhdRc`&y-W#F#DU@SxlymC|ZMD_cFKHzH|NwmFi`B&;>WUlt8j7#IMe+L0%;`E@!;fXd@{NvYW_xvw}7358z#}gj=%tVJuW*RA1Dr{=Lik6MkL)@){IN>{cEWe<8eVQy!T|5dB(ty~RUv$v1xs!&Lh2NKX=C z`OQ16c2r1asc~T@FN+kLCu)cXTR14i-GqtZAJTjETGrOoAK!Rks!HhwhBV8^Kth>8 z%X&{a4{(-~U2Ms6#Oxd@3Ye{Lx}{3$*lAv>r>U;ax~={XUA=7H!>WI4{m)JxNhe$V zPtG@L^R)lIaXUO+y<8U|5N+}vOi4IE#HjChcziaZRC`{W$4q)}+!#WiVqRBNY4Mo9 z;%Pk%l>SDr5cC5sX!d^Ep7bYwf9lhEA7U61IQ$?xK!NLHMg_czxL@Afy&ws`TuHM) zDo^nJ|C&y&aO`&%^?v+00_h%lzfL22KfXBO0HBGtNEAOBa#YiNNY8onY%&^Ef@IU- z60Hy(56`g{?#Us($Fv?N)n5rCS&FVZvr6gu*g;uB8|V`^vlcLLaCIp(nq(%(J3?ij zUi~0!GG{;xca^TUh5CjHQr!lePL#g2M$5tTnmkSFK)mBdL+OXil(c~o9ypP`x}~wB z>CB<|Pe^hu1AMYx3O_mhz@LXQI`^jS2JV8rH**&#_%G-4)lqY4Cn(SMICA@Bxi71< zPy`^57p3jZ1vz-#p0!vfurTMYZz6M4GZ1U*{;i_2{fed$^IMILf%i$8_U_1j6|dXZ zq^Q)zUIom^8$#9HWzi6k!M73FKCRy=eJ`s!IUalYEq3dxk^#W@QDa|VwR}Qqx+L$| zk3WmCN-rz!C|+HqH~)6&h#g$iKf3?TxFZXkLjr1$Sv(aQbA$r4ZdvNZbY?i|k< zO6Oko&Doi8*>zhEf)SP8I`d`dZPsr)(%tXmWf>0)?1SsQ)xq45o6xpiSRCdUP;3(9 z|Gv=mOy;=ZMv{s2x?ge|cSq(mk$-ra!0fITn#!&k{_)w@EwjALaJ_vhqWnC%+z98? zd-*Iu_IN3WxTh7UPE$0KE)fWaYjspn>+y>dpBK?7IKs=pt-Tc_RG(?Hj}= zDn2iZ9-8+3FugoqH~yUxaRlZOB0h}+ZAw;jR3rOlA%(j+sal+U_itMGkd<>F zaijrs*x#N2#y_>=w%@59sXxJ;)_=bEj4Poz#B_p7H~na6iMfi6I;6`jvkfutp>6^9^>lV74Ig5@CP5~5y`X_LfNBp7Dh@dhgMMaQT9W=T!kGFE2f+Ap}v8UXh6d zk&eP5E-)NW zSufTzCf8b?4H9xNZIhl8YS$iz=54+ncpp)Ci|vJ+#JeAus0?ro$3=v8i`oW5kCU|n z`T^h@3b1Z;d8+vvWfxfy{uPOUi0QBnlP!PQpD^Zu@rVMr&wq@OBK%FAJkf(d22`e& z)VA&mE<6M|-c=mUAT3T2Ar_0Uu?=S$t1Vqc!5&bPs&uN9Q$ubZ%N>ul6qSoBW*`U* zxKFpoA;j#ikk8+U=}(HPY6Vf9i9FD?jzs&Vz3>u%hk%$ zQ4t`~Nw`H06(OvG z)PBdGwuzNEMwz0L!43^c3r!JF;d_sAC!|^T4e9HjU|qc{14*k8>G;LhqX8@Gi^t6X zpcTz&o|vuE@6E&C4rZo-Xz<;Ng>?WlJXRgMi%}b&J2urT7h6#^9q4x+l^+yclITQ) zqQ|?t_s8Q1HgJHZw!+wlg@uJRYtNHe_yYCkG*-rp5r+Ux*+~>CSNIU|KqbJ1RHBan zSLK7V4>7jp>dO!ta8E30_N2}-s2U99D(~0o_wOw#3cf-O#G-x#$=GvmL%O~H9-o}p zHtQ59ojSE2&*sP1w)_R@Z7C8j$0_rNdIw$~PUI=jer;FP_Q-fR=HIk1&J_1)LV?N| zXw!KSSq}~>t{VCz0pUOtMV>>fZZ+RMiM!9}6#S_TpV*|}umu5ii`0T2Mr4rQQjsA+ zT0&}>g=fz`1zWoe&;tqibZ9c{HBu<;K~z&o4$bmzY)#`oIXvhh;=hwe3p3$*BS;o| zXe~jh<6OJw-V8`A$y4Jav*vSvY}KI*U1VhuK4M|pZoObOEHbqEC< z5WHY&FifpwBf0VRBgHLdu|i3WLZ%3kgEHLMNquOymO&|iM;By|%}sWJvfg^O-vuG} zS^%fI9$q3^qV%a+yUEOsa=+)w6`V=ksEY=;3#PWI%-PJ=9lz|^lW4I*kQxIV>jwv( zA4R}=C?OPZY;5e?;@MJ#s#_<)R5{}$JBzSCqZVt?o=OM0M^SM%mkNf-wq_9DMA;JN zUp3U5{KcF?b+%dipSoMt4!F+e&eZ(nX1F6!Um^HDx1q5x4D<>@C~>)ADU6`*=EIxU z%?~>3Rqh^A@UM7Mb7V{J2gpqJ^C7=K_F}bG)o&Qm`#96GZ?SJR_A4qLpBwe!6_4Y` zT9Y+e7e6TF8{}M`@PWV7jlRY!C?K}p#A!f8{ji&9^_8BiSls3lH$u3k^&9lG@<6uu zIebqs(3wBz3@8N5As~P?!(dnspEt2MY^tzix`?gW&)!JpdeR5#*y`l6h7f>nu<91^ zN7HAv#85Q$W(f(&z(T*hedJElq?2n?)Q9^VnhG;n)Y^QPt&{s2sC2o{G&)FeI(|3q z`gcI|MMXyk`8KxakkI~3<5R2m1@sa25BCB(@a*mV{e8w^D3$_$dkYJSbwQzokSStV ziKEA`q#m1r+`2rDI#B=U%8EBcos@Ov%2pQjqV}d$;cv9%@!n@@e~r&hm68`Gmm&2K zUB54A+D&vzOOCPaFc8BGpfde#FN`k?A_1QlkO||(f2raL`Mp2Z z8(;`MzWot!yId>3gXlz-Q}`At7eZV}TtWsC7(>~*Mhjq}Iigl&E2)gkcj|nnE8GR9 z*G`oO@Mka`k*_9+niuo5iv0|3jXiTcWn_P+p^l!~g_DBokD>nahDhX<+c4gor(`2x ztYcBoTT|QAz`mMqt!aH!F2ey9bmo~?4j$Xvc}g132j0@z`}OZ8aD>>In4kaOqM{(w z1@tS{j^{~kbv2#G`yclm@z&m5j(Pu^8vRa*l(U0}%6D4Rf`l!t1Scch#p3Dm@ktx1 z5M*av9?S&909d>9XHDAJ^R2Xf(0M*Z+XHnBd}kbC)ToGoV-9m>LUZ`qL55<|L6I19 zpFUX9D+2Dw+a0bK|7F>7_P$OR7Lw%8hUdWD(x#1@?HVG7Cue8BZ`juE`QL3c+cKmh zRKxw}o3BQ*ylLMn|3D~KX!Xrm+A{z(RIUNR6iyVElUg9W@Nka2V*2-F6@$PhIJYaf zvv&(UOUmE-;)&B5729O3MbH3OkNNn|g2jrGh2k$`kS^?%M%9H-((Sz*5F=5t4?MlN zF61*qpB#dE;$9cm(g>X?1_$KyKwg9kcpCqyPNnyNok*RJN{0_6*_OUH{CYBk4&Lhv zg!tlJ^2nWn3KaU*vTno@Q1JhS#qOf}*e8`9$DlH+W=Zgj_bw=Z-Oo_u=p7 zeR{9hPSG^pG<|Lg+xRKl%fsSWrGpwWrsD5eYew4qWflHjh(DRD`r6&VH~3~}9W@Fh zx(ay#Eirtu6k*c2+YxWcT3=g1`8Ym)08Uckr@Lu={6{Y+h$If_rU~t5$)mUynf5zq zHr=D=(uEf())#+T@Lzh#)6)}3%RJ1m-Bq{ zTQV6g8_6ze9D-yCu?TSqlbD@~j|mhxd?3@K+~7GVi2eZ{*&rOhsfBK8>%-%G_uBZG z%(2a+onir$x@`;t@4L=LfEq-<5&z9cRl{HENh2o4{x%uCZQ>N%;uv#K(8QX2O-JKT2 z4={H3_JXViyTQL!Rehv)F;E+#eW zD_p18`(hejX%wZ1i5U1kM&CAS24qyih7<*64F&l-tlO|cJ29T*s`kZ{bV@ZNFV&+a z$ZVN@R7-hx(NPL+jxf}q&jbYD%5+9U1*5Q!LrOugs<*~j0R(?C=Rl)}lUW%18&Gft zhw<#kb?1%W+gX|62krjMS9kdmYTZ`Wo>u8nf~6YnhzK!1TC+kj?IC#%<-Rg@l^6%M zzVpSRlggQ?%vt6bWL(j`of>Q%NH%Xu$mit-wWMcYwy3; zu}>kfc$`6$punPDoXPi(mxK8EXDzaQG$kofQ5QjNY!Xgt9=75#7)k+q4 zl@CvmZqf6Jl(H~6*Lj2GfZ&ZT%pN&<=g{2}3Rak;whuDBw2ImAcQ%{OhFV;VV)(;cLW~bd2L*1zAm82 zvHLp7xXu7HL_p%6J|tqVi4jFIT=|Pue4cYw7|N{PSu;vI0A-b zPa#Bv3b7y?odA~vH;KOl9jaBa3;k!G%Wc)QweHb&g!e?tBL<4~gRVHVoQdW7eSUjR_j>dJ6B=29e;Rne|50;&UMy`4|Aq{00LBFs?JAW$$dCiZ3l<@cSgiDvX*?+^K3AJ8+OAnRD(z*_9`&zYGSt@t3< zZ(TE>EAZXXbI{CKN>Ow|SX8vDEJZINR!$V15m)cuFFN*ODO$%T`-Sw!k#inmW-s=$ z)cUn>5@R+`Ei-S__}ZDVdNmH?Ws4siT1-f#<5<&Ykbn>(@eALpF)Wz?pdT3pgsFTg z=m|-%Gi=xvCqAjcRUg!$C9h#Pu zCq2@^B?7v~k|8jxv1QsSLkB|^Pi29Lfr5pSg82M+sYDxYtdH@AWPC#`AH|Q)?8Q6J z@6GzQsYo)u@BrnbsQ2@!wjUDvZ;z{oahr=dX>4{19K13cbuqC(R2a)(kdSD|z}RQ4 zN9h$y$|LeP=b3{LHL|l7q_+(rj?asblDU__hq&U&H|!P`I=DninVHOGZn3^oFLnNi zyLwwkUK!^&aUrHl15*ACy-U!21i0sQZwTI~Pi_HXa+ z-1svfyT-rfUHCn~|9*SR)KFo;d6}97ExKb7dq3ZIBJ)z>WJCmeM~hdwY9GUSA$lZu zI5sj^(JYPNA{J&amW4^7NH%U}oELLLGHtw~E5e4rK(O0C)0wO=pRh#WSj{@WLD?sF zk)Y(%Tpo5VuCbE`R#w(8kO6u>Wq|j@#Dv@Rmgn9;D9A7@kP;zOgyOxV9#*tkd3apg zaUQ@A^9hd{W`?_eWL&){$_Hp{)o*pL{g%WuoK5K}Mq7MmhHLJHGexClu0e9%54Hva zBNvKIBSwn+_!NkD-68V}%r~~gb5VCLj(~7w35ml-?p)d2sF;k24rf0-a4Ocp;Q2V) z9v3l8y-EY*9sPE@H#j^zy!)=x=CG&loatlm-=a8iN%Ke74>WVEI{KMG$fC~IN%h|iY9n&GsZlTFJ;V19E;N5GKr52 z*T6q-nh@aD18j;fXx|$1{kG8`re!I78jN}Z#V9FLBMee)Y*%86zUCTVqf}~U;x%9&)!U(CvtSr>(r?$TzAHClVy4SXU znUa^lk(6rnF&ST`Z+mc>d(5gSOdC~)K9YGCP%eJJLPTc#>g#&DmJ`I?8y^~q%qT?+ zldAQ2=_N}4WA+Iy zVpP^324V>C76AQtS)3f;AM7Jpcp85Yc}Zxn@xzN$HR9A`#&xwIEpwF;zXuwX$ z&GwsIhL_w$Wp1zeix$eSbKm|p?ZK!(JZheU#8V>lfM0X2hc*S2E)xC=TMxoC0_VHl z$ZhA1;^G!&xcb3WeWQofXq<>GzV}PYLMl2eCVn9Oe8jp`l=|}Z@mAp%`FitKOqi2} zF(;eYV!*b2MZsC4+3dF8_*rl6XWr5re^E_VT*DX9Zy+>_W&N+3n*GYrZGZfip%W2( zcIE9x=kfm81@Q!$iTGNJCwwaUfLzqx{82h-)>9BC1vHEWSM=RFhQ>&RFwg-z{;S`& zsRZAb%`sO@;9f6phk@uR$BtvJkGXJeD7RR@C}Nz15PE`;lo%}tJG#R@_tZet?p-wJ z2iiDlV_K5c7w%RJp}C`h-mM&+a`(Fgcq3Mr)aJb{!?|z2>XNoM>fAOw5a0h@!?y?g zV1o*OaoZ}a3RBn*_9+}U6cQr%v%vM~YKXRKGHgptA z$3vG7&`0jn+bD*oR&p?G!I(|SW)3(TU=uDFC4d0f2?)2?DIgIH-Z87CpU$4-W<6!h z`dUoBaO4`B)1c6Qew@$m(VAtRN5f=sR ztC0744Db+R#S6f66vA9YQwTchT>nzQq_B8A@$Q zdnjP^AxFfQ&NG>zFcBq~4czytP_#e3wZbhAVfk&oY<%_@MG}oOsIllWU;Gj^c2RIJ z<2fMGH|6VxgW2{4tKTVp8aY|4@36D6B46lYwC#BdUYXHGMwD5vj!Ps&My487z)mjb z3o~uIU)%bmZ&l?C$udnq4vz7`gCxe)4Nd-Z(za@uxo*$+qm zHk#n2lH+#S`DoaRF^%W1EB8|69Fs2j#hv=oQ(MRARCSiDrpk!%{tOnqqEd)hS|MPWd< zlDy}^Z%JCWFU|M)EU%p|Rgh^h$mH>7xSq(8cvV))F3u1M&Qt@d$~pw}&%bEL*&$(z z@gF@dLAQm!l-Wp9f-dn#OUyQ>-kmEOx%3$Kk}Td@w1bRecovcFE{78uLo1^X#|+%sWeE)!A`u4VEx&7nB4#jd2rud3r7f=KU8P zHvfM=?#vsO47{pZTE4L2v!smX=H?o{><|PqwBIi3T_7U_83WVG0J6mJGVTp1Vwe~i z?0Aj#Jp-C79 zxYB0Z6`1dQyu5|7J^Mh3IJ3U)b3D(~whpj_4tF%>F*%RG)2^ls159qa!TIL7Wds>_4t@RBY@Sx&ZW|+`qk+x;O>A?{ z;#pkI_-||YT>fkBdS&~94)8(&U0i&8K&$eXZA?F?=67JQD3Q>A!+swal2cP`tF010l(iin8F?`4-_MJ45b{u}B)wZ^b5@qFLc z9)N%Azt-p9wY2cs8#aL*d~uY*qTT%uU@S@AS>{Srv>9<9yuPphhW{L=BKn&ADx_m- zAp-1$JL#tXI`+7MpZ!kt5xsF2u0?TXQAd8V zq3aX2l$xq49PVDJW&%AU433!R)T_n)e(Js>vK7|oq=jQ%$GTfv*1E^J;PnRXbfmG0 zv2j6h@g7pPgrwxy=%~>y@Kh(#EQ<>ZKgj8&llL^FW+?xjt+(Butrz9?MHQcSK7WUc z2sdd-W7iL4_X8$%EGsK0knlUwj%IVXrt}XD4NXkMc&6j3C8}Uc!{*y}y*2?0X(nf2 zK#p8oSXkKBCU_bwIe+c3;S6NAf3(NdVM3lapJZjjATa-3{VOgmCMG5hN4P)V4AYiz zpHP#+rhCLyn6Z z#=!fP+vCd29UGYENplw*67u)>I8sUtpp;TPKmVTx^I?#blmv$OL3J81HvlCM1+f?x zFdXzaq64Jc>Fr@_dm2r|h0ppWK06ytm`oGbF$fkBV|aA*cT3B77GF(cqn5HVJ2!W- z=lB2fd9T!1#lSqBK#AM&RA8xs2IoI`8Q)w_i8_HvYljN51O)~A(x*En04fj&UGC}G zSzurV&Pe?y?Ek&SY7`Mj;y=QvBN+?B3;E(@q6x7-e1QGD4TNWTsW`SYuA0pq&pc^=(rKOW?xY^mi z&lbxiF{s>KTs&O#VV0NPP|MLG`?*P2J^p_lRbsE*n$pYb?iBhVDm=WluFkmb%YQS$ z$Y)UL9dX|5{xtCm2=r1;Yv}s^lt7mTmS9I|hB9Jkx5}X7sW$|5zQ~dQ=*WoGU^LM@tcNrr%K!cA?xUlbqLh>rAeB>}uK^4u@XpGl z&NyIiaV-`9=T!l2dG7~^iAiC3d3k%gP>%Bb-JL<53B17k%1W!*NMczTBP=W|JUqOY z*E3Kyx^nEV$ucuBVP|=t1MRzFVqz@6IsBrXJ?m}m&d`ufyK86)`^9sVsKC<*(tOz?E_riBlCa+l{j#Z7KFCZ>J--Q zG?B?e$q($;p!Nl9AXCFCzXCiF&7C)} zl%Q~FS=lIbC{n1ZFLi+fCeXFLAzR}kBO?H1UAnQZ0OL&~8x8s~_xkd}QgJfK%k9PG z^E7~l$RLozPDiKILoLlgbs;A&&&|m^e(2uFB|378!0K znPTWGb(DIks;djQo)X?>G7=MdczWK^>VEwAF+crQ;qwF=>n%FkK%kMEjP}R`hm=N% z$+@_mUY0H;Aw4Nt$&C7dLoE_UE<@^Z_43PuAGBO6l!K5^nFeaMdsnVAZ*g;m>6^VcN=t>nc>azil`>juLF3t=TQY;Y{!go_(cKZAYN#dorvU0WHUY+;y z3jgB~OLu&1HT&w_)we=)fXQ$(-Sul(vszrVR55k&=`KXJ)Db-f zpTE^xOUsI>{45B8$3|Yw?Fqm*1D=qK3_Y}zaBHiRVHU<4csT61a(jvU{GUH{1%Dg# zYXU(D{cy5D;UPqR%bO>P5jtn7vjhGLhY0kw{D6xKm)Zs-p>*Hv?QN;wfD|#={VY-8 zZg#A&dUuwbn;Xk3^8Rw2Bj~o#<(KD;izeBEb^C-M2^^m5w^QS%LXLTCOcih^m>2~$ z5pqlq4aHYSbur~u8AsZAVE)&)oIA~y1fchVLjFg2lpgWQs>vsh>KVF$9Jfg$H4;av*i^bd9#egRU%%Q+X zr#lB*NAnz{w98@tDyoWtNXLgusBfmb^W$H7O>9W?>R52+z5ibK^tcmOeIXsf6vUu* zbaV5&*n;*@QB*{`eR`6v(5}JP$y}P7V`wtn#koR_RP#eak1~384BxOeHLWNs)6`U# zVXQvBLfQZN{`5qj;2WcgNgNLDXleN^>LfJ72a;0oz0k3<9&K)@{8dL*Q4}OrtEJyT z){MB#)tfsr_pz|JnD&vPIQa)(7%>Tn^hIy)>~V&=_Q96emQhj1E9If|GklN%?_kMjBn@410 zV}<46nZe8=BjdVwQ}CxW0ZsQ=+i{s1Rn(Bd5KQm`EDo&~g2B`LSbad$2T0Gr7+ge&&bSx&>&13^NlzQ1QweV69 zxVXF>WP8frRnxzj1tau%T3Oj!5M0^Trlc%@T$_7)C0a57{Dkc!BPArooK7L?yEZn4 z+Fw&${k_alqy6}vqi`!j?~DH}fvMF3SUoZ<$mmxw?a+FXEn3qqaOrArEDMZ#xUc{B zOl@zw=aM`;FFH21Ix+FeNDQm4zW(DGM`Ww7)ydHVB0>Z=RD~05wV$U4S47TZ2;JTx z7CHG_p!5zN8M#+?4=ZSBz+n-xP07#s7f@;L{{8u{dU$wnS5i`<9=MNcO#+HP40gm_ zhNO|;7~r^$t7QfTM&Oj9KS_G}<8SU);0XXI=YI1n^iyU=5?F%rL@9OG` zk`2(!rwQI35A(z~F80ULMrgWzq{Ms*gSo|-pA>Obk!3g(+Wt+oqjH7v87y#&+|kxk z_(DUcg@qRaiMKaj_+}R~F0coh8}d-|rn@YMvheVL7xW4pwl<~UPu|9|v+KLNpJG?)+#VVE%bMMg%3@>?H#Ajin7{buKD zInQ?=pDV9>r|aRRMW)$lG*@R|W~iZ|=83rv0hCh{Y|B|A`w*JIz!lp~0xaHTS@w#u z(03qCGSZ`!`lY30;>iCnHleFZYq50__8gymx~A5cYj^B3tpTTpO_jSHwr}_L7#sl| zGYo5u0#Z{K<7+B;zbP`!H;o8JXJW}HuV4~+M> z4nYDm0*t`Fh`Q)o>zJZ1luhF5>a+1v{deTY%R>Yme(%1PP2P`=S5dhFF2?}RCRIp@ zt);CURIXs#_5St@+vXRq?x^11Tc}~r-nvn0TraJ&LKa{f@29rFa0IoAo_(>uL&)8 zZy<`GhyFO0=I-tesOkf$q-`->oSmiqAYzbGHsuY;_m6qMpPii*GphY~E7W51H?n2j znLSG9pD%kdqrkuZY zAEnmt1^7eS4q@?5`zU%c)Pavlgh$86p z0BRlYf~@dvqF(X(yJbO|C7!@U_1W-$D@{$(2nfDEe~SKDDG)wS)kbjll>Y4j2Vfab zu85RQ_BGCC_k-?*!U|N%<)1%7sJ&sVu{U#9BI4r;5QnLVZj57pHHWNfn@Gr zBEdCB&#s^{SmN|d#j(hM$!4o4zfyT=FLzki30*=CT^Wu_lv;1N#p zuCn|5dEXsvpt1*(<_W<+h^l25-8PyNB-V|%7ApIyT~>B6ztHCi)nbMy3j+s@)#{TT zil@U(+HSlY^%6}cxHvwJ2H)*Eln@vg2)uhhtMDC&#QTH;q}5^c&sDncVzAFdXoJ@* ze0Po;qAO_Jd|c;aHs;T@CxxaD5fKxYmj$F}AIu|m(r2l>9j& zD201faHr*pE~3bf98UMd94DYK5jZSoX2egiBj%6xrTehze4bt1eLm1Ds%mMuxVj?X z>7Gj07<8ZrIJq$#0$D52nwyYo`m6T+5nr54cxecIV*THYxq?ad>aw%~ zDQm00I#R{kC8O5jN)r*m!8Qg4pij_;NvSX~(MnsX*?E%&=HHFWg{(EtgXGeqY>INp z5w%VJI6Ei)J4GTz!?A9vize@D3tSUk4F-QPwptPO6V>ksAPV(K&I6zcEJ~$bGsf#r z!PszsrQ{4>+34_+p8pF_h-h|oDQPcnBj56qgQY6!9orJse?R^z011QP#IPK+G;fk< zrTv3eRtS-H*1l-*&?O2e!#ZH*f7hYe3skFx?9UmE3tVKhM`Q#9COg&fp z`Vr0WcH2P=jP$#|ZKuVv1rk4Ca%>FNNn&L_bRGV&}Jul2X+IPmys~64z((L~*kb`T@+lz#t+We*H15M$_qH z#-}IcXT4_8N2!YyiwjnE$5zb72Dqmuzj~hn^vE8Da3R&@8J6ADA_ zcmSDkSZy9m=Aa((J0DH^pJ%7P$lm3brtvukHyt!hIEgM_^$3xRFrjSWk&$4MRJhwC zmngvwQolL7JRgzMT)7y0=}#<9<|vu!7Q}=-9B;>65#M9rl8n9+-wvf%<~VRjG&>R4ueA!Kj7hMG(f|kW@qzCq%zd;!2O6O zejf4%#LGD`IpK#R7C<4PTnf2~07kiO-?$KyBL)PabFbPutbw8(Zh#yDSIfo8DV`2E z+tUH7A#fIx^E<*3_YVwoX!?FMgZa~y_9uu6W>T`cV!5VORU(}zc9QZCsJ?1fr94px zozoNI&hwT=VXDuMN}89UjXr=-hy{X@SK%1%q1Tg5gM4Num@GN4Ix(_ZlZh5n9q!k6 z@I(;*Mwc^5!H)y(8*b_PEzCKywuxt5cl8S(Vsq#J=2HJPg7XK4I;r>)Ee;u8y!JgP zhVy;lA#%4h%5RfxjKzTIVP<11Q7yf)cn*DVOyAj{iQ4}#etC_@{_i0(KdJ6$DCU22qL*1Kwm`nQKt&uG zMr=DwgO@)QP2dg1aP&QGZTh`;c-|fZHy{uZ5ee0{nP&bv^Ygc+K_lAlN^Sgd{ih4` z*M4#~$q4eseIvkvWnd_UUZdidj{cFtbBtkxmZ%_&^#)R#sq4>W+Z`-A&6(3(eVQHk z-Ef&e!%|@*Iz0R&D-ONDcdV)TvfXiyF_G<(Fy&WV5(hN0*6%7^Ih zrW6%%CAde1GfH`IT|D8cWJFqphQeXsSGZ`M+a;$+AHreT67kpHJ21^ok_S*io`(}U zg1))M*4AlZi#0~ag&MYN)q=1b*<0pr*Z zpx4F@?OyBZdMGJ%4?M#A`mPnAtaa?^&Nlm5C4A8A8 zDVe-7W}q#>`ltW(t3m0u10w`0_hI9MSZ&nK(6etO_N>4h1m!{jNF89nEiRgX%sIGox z;qiF#Fiz`HZ!Tl7T@qg#Vnw8X(PPr=0QMFYec>208+-NN!?Z?;OOM&96~>T?Mq+V#|b(-hk~|DjYo2YjMg;) zold?@|Lqp?d4*D`v3&Orti9kRg~J|leD(4uP*dY1L`nqn^7p{qJfVA>4{KZ6&j1FB9Th}sdGr*1ZV9M5aH3NJN>&QBo9MEeB@p=aTupyC)HF{ zJzD1`zxu7v!6+o^2?gyB7H8t!FN?UF|z9iVlor2-rm^YGCp31W>~?K@Axy_-c;w|N`W_d#2#|} zGgeu{2&CpCS3E8iQN!U+xkKGl6IROil+qSfnvhTz91N(MIAXtWb1Cb(ij;m>Yj^19 z21^b9N)7YBcDV&%B_~Fn=ox6tz|-@^X~IfYr@D46YUGxKXmCb`91q4b_V&y^eE2|^ zu(kiYtqoJIVd**@)5G^(MH5XkB|&M9FPy76ys=?thyR26DUpAWzO4~xb*OXY!WZ@+F|9Ul82ow`hIcR8sc<#y8-4RamwK0 zYW9DV#?6+nx{hEsoXlQ76 zcQ;V51NcGPHi#hA!fQDqeCt>L0Ew;G(eS6gnpDqM)?CK}*61 zA|V!;?&OPNuwlGC>}vxBRovNA9fxl*K=|g@e_n{@<>l;QkT%aJh~k#KmJpK}9Q=Mp zzGu+t^L)prgAoD-2gvBL$11Mf+QX$I0U!1n>N`fUfh zu}a?osu7Q|`X#~n_}vqRpm67eGf>PSnqGE4&UcI1@_>ZNc27@#CeLrf17nc+eczf~ z?}GY!6y9AaN#QmcJQVH`M9)`PTKp&;dj9>Hvlz$af7*WepR$;Y$VsyBVsp}nwEy_iL5eqKbBN^(*XMeonx)>_cKU^qSk(8dJ^CQL9PCU*N8go{pRW}DLWhW^wczD#ngm` zT6bsX!NH+DIk_;M5dWl{Xa*2^3JW!G;a~T1b*Ff8o&VUa^G7N)Fryc<0`ao+v z03Pgj`{|3q5iY?~tCv0fo=JjSc6^k1SjHow+^l6X~xHrFpOV`jYMKy)ZCdMC@i}X35DZ z&%$`+{&?H}MnJUZH}^M@5GRX!2IcAg{`uZnd0S6DR8$36*giEt-O>y=x(KtMxxKj| zLX)LFRO~XTVZ;$6W9Eg(c%Mp|;nvh)D@1%&OGt@l^yC&O|D72J7A{IBEs>u*yqHyv z?0nvM-uwr4z1rLDddGjcnX7VrYopGPPGi$!cfauO?xBlHa}|{n^xOHlK$6O;ud%sI zeaC#kEp{LsnoQfi#lc@rxk{KioRbEHXfbDL7`eOB_mRW%_34&~3t%_FSR*XO5bDm4 zglLvf69!#;5*Y9ROCf`iw?h-HyNZQG{pPaje5J-a#1T3mbK=k2k~f~c==zX-a1sT% z(Bvc4)E>g0{_D(xZF3W*|GXt<*uf0;eet$=);r;|?dmvWII8P5LViNmmp-?sugd8_ z!We96Y1;i|fsT*wYp~%X6qnM7e$Z-d7t|T3Ovgq;!%>r8RAggmX*LD9@LpZQZ7?TP z!^6exY0~Otp;fmDfu*F@kA{mWDJU;5E8AOWHmiMH;RpEr$Q_)7A|o^$aC)Ah!k{>b zUfW?zP*60*UI)+Rrr-I$KMc#AfJ?yVMp9Daq&`l&n1L=q{P=La4H~Y-#W_6ROh?*9 zP6z%8g+z+J>?}J;8=&wb9_P0o@uZK-6Z+~m8X6_2FeZP@bm9*=g}M1$-29zm`CJLe zBP@N$yjv{tW|z7+ME>$)%&#rbl!tg)jV3>SH`eWMw|l^0802ti7x%1%viqg0?CxN> zPHX-BRa6Lk^U{J+jXmu>y`vjc3o;stcmNKYowr!`FAGi)H|1LAl~VK=HYB)!$B>X2 zssa-fF*x)7!KT4}Zclee$nAb!y8d0z#S3?HEv2M!RSI5ReDVy%K1DP(riy(xj|G9Y z?US}bTbh*~VRb=W4jHWK?D+Us{J6mW#JihJhfL~^*c$~#j@)veT2{HBinq$|2ACD) z6saK~J{CRA<-k4`mOt1Sg9D{qMhqDZH1i{t*3 zY#ga@i<`ZQ4Ji=+Qal^Es{l5S>L?2U;Sg=%Xsxi*N$+F{chp`TxW}V7Kty8ha=^J9 zfkDmR*LN=60Rj&&Z5gGp>HpT;3;ty>)zs7!>Hw%p_BTf}J`vN!Wr9f6PmrFCTM`kS z+VB$!q|a0y0a@dQ9l{yiJ$-W)&h{5RH24he&E@=}tS}*##zd_rS;rwg{=Y27UvB@L zhbtW7;YP5F^ESS{-kSmkkzUsuyes)iE%vsNhBABD1XVXoj1^jFTb`k@qGH7lx~LIF zY3VuOR5(2)g1}A#j)|lIi}V2F+OFNWggWH9LTJN^Pq888>k_B>U)O#95&c-?^}tWv zJ|j2j<5m^Xf`yfw%H2iZW+dd;LwNf5F}eA%yT1+ZkW$uS&j;@Ama9sFevUyK7RG zoRlO2LQ)uc+?%N3GQ!{psMvLa-CT@hcejDatUPaOu=m5I-#aq90q)BMEJC2sHQSfk z_T5dtDmFI1=K~U40f+m&5sF1SOS}C7U7YmuhH|C=oxd3?W*5|??fUxb5o4{tTP?mF zx^|&!2}!~`CQ@mae8$K3@Q}==4FR{r%RC#9a^QO4mU#n~FV3{FkQno^)P$+U>1imz zq@*Ok5@V>Z&qhZFA1)UI5Pkgju7&>vhBC%4$&NX$VJlo zGci17bzT?basF>7Ym;!FnpO%%P*7@9Ea3MNnJ6={JtZYrs?N_pJ|+%o&|t72Fg5)E zXq4SjFB;Igf&2)=NI}Tyrl4UcR!Cq@#{o`+KB2M}+75`&5(6Qj;VdHJ6+^r}Ohqr?$Qjh_a@poQb-DIUR+= z=g*Hus+hREs0u7tQ1N=*Hp{?a2o;EOMZ?5|9FGVkRXS()?=){jgJ>Q zTbqXZaU|;mw%k?f?HS-+joWdrL&5-zCGWEU;u7lBheLdSJft98baZqK7yhq4=gs1^ zD;x~ih?w~1#?MAzsx#*M=*JcuvyPm}z?sWRF z3|s>4;nyjq~;%ZjaRG*z$2*O5yV1cluklvJ7Y)Gi-{%QmS zyK|xvMm2nrn`&=wA5s38&(x=-$lXY5*#H(46bb8db34@2Yu3|wY;Emp6kFoy528fF z#a;ipKC)tZWNqy}EE+}n8)?;1#gzryL}diR5e(B@M>K;?^Ho!84h_Ao-Aj=|G*yKw zH)%0jnNMBo*4P*&BJ;Pv3YwpK%11D#5OvDP@prT*SR|NTnGP2N-wy#nDJep+hGJc7 zLED{M56OC&9Izw={4eZGP<@Cxg3s&2Y`%MSPuaJ?GNdmpviZXF+p^ za11IiNHCjSE`~=;H0i=_zG=*3B+c%Zvu6po4Y?6(<9&S}D)EY669Z;9a*fSw6<_vZ zdV2P`S4AA!+ZpEE0plSx_+iB&uP2wI>m_k{Ze|AB3-FJX7334>)*3-`&V&U+c4y7u zkYMZ$exp6go1=RW;CVI-gb$ zEU>*=>h0o~i0=OmSml>}6sbv?a&tviktOk8e$s)kSmC0B0v}lMw~TUf$VOYqjO~(? ziWX)piMTU!8={+HV~di0l}-;04i6Lh;|#L2u!zaD(0!<69ON<~dCrY}Rx0Z6m%0hB zzfjTF7v7l}c&b$c&=X%X4qx+{KNJChwrWhSqK=@zE|YafM@JuEjijMLO-y3RW5&SA zNKejA%iT!NSV_%T$<3KyVWky|2V^l!B(#61FZ?JBR^n3IEVj$5t3l4KtsX*iI^0Zj zY^>B*89CLi&cfcI!J%QYQZacC7?!F(eo**a^cbR}=W*z_w_UF`4ry1r?j&Gli9C}E z*X0PpTim%(V)a8V&P-tt(|p@eG*pLFetYaQd;58xZ&=tY-3A9iIfV=Wuss&UB+DZ| zm9DLdW|R}39_?#lXR070x35;z-7N)N*uI?@nhDp9 zXqP08htO$R|kK2tdmiWRW&mIq&8g--TQy-xY%>s zKu1SgyBR5k%*?oa2`Nzs!+5Q;;E3akT|=V_2$)p=Yyi)gnx2i4*&I+nb;D%hSsG{E zBp@O!S9yj!grAz#GI}+wt}h8YArp82G9SAUA?fjP3x04giE?M0IrdLD17M)JD_?68VKFB{t_Q=_>*P zF;e+IQt|1gs2hN51J!%5Wx-hxEdmG7SQx{&+}N&T%>2T{?d_1Jwsvx|V=HuUEH)uw zO7_<%tpr!I!^3MG5z_Wd90tB-gzcQDsJO~XZ+Uqo19JQ+U4vLEN{E3kdeVa44i5tZ z7AGcfiY0GDqjh&aq(wS2f?=&(tp3|!6T z@NyB1abQ@1JFt;p^6rA8bZ`S1pq;FP1Q{@2gZsAIp}{SgGS6D1HD`ht}cIXOkKU+%R=X)&E#QJnsUYkuLlA>y9hP}V(s#;uUrFuu5>d` z#K)K9d<5oXudesXfD!bf|NC-1CGXDG#BqSuXwzT%V!+J2XGDnwHYcwQm^c)dK zN&a`Dhl@qYLbnhdWTYq7Z7JG?gE2%L@kK5a6R)OXPCQ1C8@l+ zXJ}54%91&o`T4@!SPL{`FlAcY*X<;@KVdjl^~BNSsAPye2;O>986!InmoP97M(wgP zsUg9dgF{PZ<_k-UpHotbBK4P%P6?9JmZ}R1!aCMYOV}}IlVN(#SlGWuMvbwuSFBRbPM}Kho?S@!Soy>>X*e~lS<<7w|GtrlJLQ~ouho;2*!R`?w8ZZ z&Jn(@k9ypc=7i4QEY}G9z;MRH+o((`T31kKJ|jE!x#}(Xei05V z=fn~RCB8NG{`F|=M}kEQ$574hZ_et?^%0C^NoyY&!MM0aH{@XzIHRcjJ&oL}Y7Xs9 z=U}A0{e5^~yak=YWH$dV^D%tjUIt)UU}7qN+gMm{bBl_KvY5!EyE_78bikFJmjOB0 zXDE!9>Jq>{fE1S8K|vq~id)ZI-`Yd;Lh`yquP;N<1KIRqSq(Q{wPPm!O;mYna9ywb zI(U0J!EQM^0YE82BD@bc_%kO0yK}3JzoHUx_ziO5 zA425yhet+cLZn^t`dwF+1Kj-w5D&+%;(cXn+9qj3W3Mtd|sj6g!=^4bPY3X&Q>!p)W!NbFAVL?VlCL{+W@*vhKcN`pV zBe@Y?{#GHbYZXfXOvUtb!murdi3$~^&JamJ5G4e^vlta;=V1smpsycoEML*Oj5Yy<{--gPlXeBwYtMn|msYuGP^dcI^h^|cj- z_~`Yy`Aom->0&%%NH%uuOXrJ4OWi^RCWx@Q%`Hzl*D9~-57iy*Z44VC4Z-ejFCG*W6u8G2 zLEfgOMWv;sKYv>LoukBK3>E^~Tcj|`v$>g>r^JYMh@w(ky-HF?`%|wG9y>E*%i~#_ z-_;`$3c>Y;^>=HZc88*^Klbns-lMtZ6iI&dR@bqp1mybd%gAYZO}2FER1|Js#rdFK zFS}w916j0(ZBQ)XFLd5`RWeL*5));LXZb92xoPn;M5beRLRLAplgW zP#KwZ8sc=;SPljuO3*~whsPVLrWkZsu@C!0{z>lcp)D=+uv1^!^g+P84(eSAdJZKt$tZYhv)NW<<(V$l5byTs*~sIXJ^^rD$BNh{J`6_ z37MIg0PaJ*gob_tNUplKJP>2RIN;ljGP*Q^OpAh$CKvrGYWH(SG$=L)>VN3}zCaS+ zuyhcaXMQ|i6Riyx%TsEJpw%2K2nk`jyHUK70%{P`pS#UKN`A{Vh3_7Y(uN z0VaU*qT`>6b))T{P69ge;ISNjr`xxVq5E?e7z~ki7tD1@S;Wvd2W;%s%=E?ki`gHU znKQy#B)CyQAPj%b@M$av+;q$r8(3bh=J>QUK5lNDChT4EcTJ+N%4W{as0PL<1Qc;T zPY$~wTZCiZn(J1)@hh-E3c$rmy`lNhpDSzL(TzM)8=a$LfB2&JX$EE4X=$h8{)}zm z?`#o%p8|355;5`PASgOs_9tS~U|}?kj$ZL_V__`rzL7(PP@#p1ZRfA141eDn<|Bmz zy!D>Ac-*?=2VMOV<|*F67`pQ6>KiIU1yZ4*bfL0R2ykYl7X1T*Jz3J7T31&nIxCI- zp4~k?Bee`{RrM|Dm}o$ciS9)|^^;(Lo3K0@!}gg0+%?C<#AP=TQ5Am_5|#hGi#+1$ zIB9d3g5A$-4_AKWgkid!Ejvu~_WCYWZvsYw+U)F|wN}Az?OoO&0_vX&a0nscxTo|} zX@O6rg@qCrXWic0wzetBDI=YH06km7f$_a$W-@Yj0x&iQ#**^G*y-x&J$q>bnV!P? zLYxB~@KHR=w}D)=HcRFZS^rF=@KlVk_HU`K}|&jn{51`n&1fDcuGCW7Xvstm@Q7H$&UMPA}3+TmH_{glAAQVw(sG z(<37TXj7r+UT87VT3UZoKQEf38Ktwbhb492#keOjvy~7He5Iwk)KCXuVAi0Z{6s~z zLPgtqe7FdJM#-oo1R?+X=j80tM@whEwnm(j{h+MOAN+yo6L9m8QdB_T&mWS<_FL|j zee08k0Aq|km>7I<6726bVep2-BXXZU_3PTm4S` z-0|D9E+HX~;KP`L>GvMaV@IBv%F5zzQg#XW1%)VA{)HS|IwJpzrE?0ev+KHW?8ays z+fL&&wr#Vq(b!HJ+qP}njcwchp7+20lN{t^?_{t2%(>Ox}Xf@-&jc#ZI zGunQ#%(7@DWKx7M^t;r<-=#=9jpTVP@zxh8cI1vU#*7@#&zB!kSlnOj;bg0qE$c6v9_o*Ajz!ZeBU|1s2MqYdPGAY=^Hi4c{O0%VPWt4#uY=d7Sw!yBpw-c!6ho{LswZLCN`tk(}h=_9wSS zZ{LN!@0xgQtQ;3NV`K#J3y;Z5GSI)Ph@&M@w4E@z*=4wQrQQs%X69B@AlNYi_D(Qa z$^*dc>6z z(>qyna|erW6Qye4>lU(VqD3X~=Qr-DlOr4%_s$p?S_GfNM5lYimRS^bc*e!rCnf$& z!yEigfL&leoX$2ky*06-U?|EuGQlIZ)iXU4Dy!E29<{N)mXYxzGjqPPGeZ5>2`xcU zjWkOvv~M2(0=8Rt%|BGN#%9xhV`H729bN71&+87j6(J(OMBV~gS#fFLg94qIAR)`5rYh%m zuhQLHQP`>J$P_(89$stT%K;{$m`}N{F_t~+t22Qe~16nwDLW@Qlq0Yp%F9Q zK0~6T&qlr-u3dTi=BKlN!DL$P25My4Y$i`{dVAhIrp{*`P4P0avC+_1y*=smuD43H zE3Ozjn^08%uN@(WON|U6>KrlR(bpdl*0wux9}(Jv3$?df6E`#SV;LLO-zz8+ z2AY>gA8C3inE+!@h!Ex&HaOQ0bf~Gx6Dr{7au#tKvr3#+n^@25zIuhFuA)*ZGXpJ4 zcHNrFPcEDo8KGBemkd#3zqi%+UkN!by`K~->nO)^QQ0azNdP}%mZ%b@;0_K4x1?%` z|N6QB+TzT=$m{#vJ;%kKZ&QZ2%KR(*d_>f~HJ+aJ^)GXCI#X1KP;X0QYj!Da|JH*=Sym%fW$t+hsd2={~m2 zwdoE?V<+0kX-L2pGAehBVu%C2AN8ZqKg(U+jTHM0#B1}qYDa$^Z{w630h-f^PCU4s5;bDTugv5m~-k7H7s)mLMkUSzD zo`9es!pD={A8TS1sq61~4UrXolSk5N*N;0N;JZ~6*QXW0yvE!<)K9T$zndD@xg z(;MpS^6`&#+Z$3UDr%xp!(VPZTTFPuytjcB6&VIg3WNCaPb#mf66i8Jz8b*L_+>@B z#Kfe?+1>&L8It$SbCmz$Cz>r0qCcvG5UvlOHq|h|P(!E&kCbtAylZJ`0r)h}4K+2s zyft3{?7+v_On9EfQJB=_abm>`==NOCpMnT}p`0TXP4W|lwsc0t6q4=7r1$#7Js<3? zI6|5y?I-Jj0ZVbbOk^0{PU;rB+`DWae4z9{70YRhEp2qX>;nBq>-u#jH_}E|RHMKr z3rOho!|g$NSeSYz%V$fN5C>H_wn_BV;i394-8?dw#K@3@Eqi6}8f)kmJQ!2TDKinSj&KL#a=o?hg`FR3ukaZ@9ZukY>@Fyozmd`rhhgzNK0Meb>Co)+DCQ7=QIz%oz($DB_OV!kjMgv`(xC2=f@ zt|E&f57;BjU|m=)zYh?T{5$s?3&!H9U z9sQ(s4>Pbc_adw}Uooi% z9UeY3C&tJu89>fJGF5)&%Ut)+H$;YZVkIGsA%@6>pLUqm z=lAuxvq!n8;a=en&EXWwWz*BqEzHl8j9vA)0BUI(O`jSHg4v>^M=dORL+m5KL9jK; zBnu-HKP2Pnc1;M@i}Uuh#NPDI>JhEKK;2uMou$=QfgO`+Yh%OxG|7IA$^CToWpxQn zW|HW5IJMRJ2BYcNV*et0UhGolgH1G(z`I(PeK zuZkOD5a+%hkTL;9IlaBOJiVQ_AJ|v?q-ihB@zqo8W1t2@t_Y3BM?>xzpFEJ-@umXk z3i$X$FE1%#5a+_d{0J;W)21_pE^O6bc=&7&K<#DqD0y`bO%fdQD9JTQU;2P>(lOelvDre>^PdM+;z-eGL8$~;n@lC!gpkZRvBt!U;uqHxw^VLEDSq+^5FR;UdPaP;U}w; zlM^%=+Rn+K3FGa>dBnzg{~JCl(+F3G*Us^>8<~koQjD#gcw~LOtK;3og5{&IC>h8Q z26~c{UM7STBYMK%EBUQc2@ImB=rB2HA?2Q5APmiHWQjP7FVC`_of8}aq5u(wo1ng_ zs>|h>a*9M~0N<=R(!h-zL%+{|>I|TxKTE9om7SixHXnH$2y07%Ed2h9%K1HR#qsO) zGel|2o89Qv?vdzE{GqK?WC@8Yf2<;&r)yPO0QZg~Ho`VB}scZ>}Wl@(Yb^fG;gz(w?7uqDg zWE@PicwOaz08@|z42Zr0K7uk&%6Kc7Eyk^T%%0sUs(*U7cN|Z%I%~?1*Yw(RG@Z?!xnD zBO~|QC10RH!o^9VvBi*>K{IPw1*2*?MQIDbJrNQL0Ne#Y4J|G{V$Yf5kpb|p|0#rl zE0Y52rIeItOFh#cC+6q#l5Vl5M$V+hs7hd5161x)DlB65#yl|)5dSF z0+!0UfziN3z}R(vKsaAC3e2eHDr`2G%?-INXxYMKIt(<@a~W5N#ON8Ke6pu!X5gQ6 z!GE_ob$>&6MAQSuP+Z6oZ!gF!5o)$es$pOG4s$Bs(xj%QGV0EjhWFCdpuU;6CH@Xz zw;m(vK^y(l$yxYa&$sFPg06^Wft~fseV>w0|EN;S)pm>1k>B42F2=@O z5BA&0-+}Gk_T6$Vw~C5q!_n;In*Ule!Dfp<4}lXs4Gj(tgO^&TAjm+&J*|UaG18H3 zXvFvp5==xSt+m&ofYW^k}5Q!SM*@cl)U zCU38d+FA`aff1ks9p7&7_C6sZa&F;;S$lwi=EU`#f-xxEKo1szU2A6KETrW1V)do% z>kS-$LZra8i4om{`C<{WzHrge$tp5+apRaCA|GC$Q#d!b`fak2c%!8wbnXKI&R{X0 z2@i~jN5P6?S;Lo?)oT@F)6(FY7$Y$NmxM8MYE36F@7g_1Wii_X=vJV*=M_aohX+`; zQ2n6F@o>RHsrg2PqxX)^cXmz=0%w&vcfV8oZ_ur3uT{DWNbx&fkB`UR-?2OL~DbFv75`1NehCXH9txV7D*g;t!QqUM!}pJiEkB z$YZvRs-Kr91keGz7Y4OL1G*!>6CF>vjfNTY^a7iLQb3mdL^Z!D^sGk>hJC!jThtiU zeNkRbu;DZFvc0n>mZ?^yZE0>LfdGrGr$P1n@g!z8?OlHo0hE=@dQ(@pi{3k$?1B_? z8@#WFrDl1AkLImk>W??ch=^6NOt4??pGWOiHm^G&Z#1g!(rov?KAiY!KY&@4(`MJa z`xVeMIBRN>CrQxay{$jLusa^nOUg{5CzH7$i3{5^b=TC;k(mIWWlIaw=4S4XA8Eo9 zeQ0t#&|)ks;~5!A$Hy)h7@ajWL&xS_rKR;*S>EF2%GTB%Uc3a*0{9VwHos2*ses+# zvbvQnx^!Po4mn%<;8OEK$cM6#_=EBBb+wBnsN)J#^`1Dj0hWc79v|C^j-ZG5m$_n&%|6r}LZ~1>ggivf zdon?|&)6iL&K4z~H90vssuA~}&tQK9rGeLSu_AeqR2h{XhFNE0E-G@h_g8bHbxpmP zN);e-XLaT3bC8mq5~fy73oIxI4==+*G_bMpduHVzVCs+|b}jMYH*dZ-R|H(8m-xEO zb#+4IX+!)*~|A-GG4a0y``&N|4 z;^x;6q$OlTu;PM$fS&ddDRgM}{2f@8K`5cHFRp{28x#Nr#mDP=0sQn(Yb(3)@i{o1 z+LjhtX67GH;1!b6`zRctU^K+UJ^1^zE3txWz0)x`laCi;L>k)bF!^NEVd;q~IM^Do zahghs{x8dpt&?v01cck)J;US$MalhS8T6TZt7y-DTOi6s2DCExKM>6k3h8wxidx3~ zjl`@X3b)Itx2&qtt!?|m%=W83)RBvWBUD_(%Zt~11nAUBA3N@*xCvi`H^YG0ts|gL z6*s_VF`XEvS`$`)b>@k#>zk+;88B`Lf?Qtf(v_y&K`IfDqqqaw3N}W@gv3N}k&(?! zPz2tlYCddeB}KQwLO|y?KBl?SewuFV66Ag%wGMo1_h)MGHz9{T~t)miHH9?o+U zd*O8ojlAm)c^opbFzv+i{&>3=F)$zm(K(UgBIZSLOBO;*)Jr8lXuZVIv)+V0C);#fZIT>(B4i0=26jA>>BQR=`zOR;)e9=cQ_zej$Nr9szr#ALZK!QTD`$a*f?8c! ziG8wKYxGY<3-Me8!~XEY3Ls62w3r4O<69%wQfy#vSB&dq2hoWX z7Ui{}y>I_L28Q6<+kZ=DW?FW4o8}Z}8mUt%s_IbY=9ujiSXd%*!GJNWmKOe{%fjIf z_M9v3{_~4#wgN8oFQ;o{;Bont;S*|iy(bs-03 zd~?FjV|rAS2&;SubzRq@Q&AfV@X>#v&H@)?3cees+t;2b!RrxKGs~d{-z42swAYnY2Ft4s!PS%- zIJrH5pUDXgMwW0;!BD|Nr>CO7evxfXKxk+TqL7f<*`ZVY9dod^Cn+m(cqeZ8td+*3 zprnMNZI45>nq?#jnAWcm5_A|@G}M=OaB(5aU?e52?daG@MuU+L4Zqr6gwRu}Pn4A# z@Iov%$SIuN)nA4p32I;-MEr&b3Xis6M5YmxM`93IiRTxfk5QL}s5s8Tx;sAZTHD}M z#AxBmkt?37`<+a`g78Y<#Z51l+SY733&UOYQ+Jc-5R>a!8sO7)L|0WsR#-9M)0!S) z0(v-K64|LNH&%$pJSC;_QS0z<&9L{pm6f07GRWS?+rBE{tgOtJY8{?(k)Bn^EZ={A zf}-r~{MP=eG210vmXuz+tHYGb=8^#xR!g>Ccayn#-Y>2juLRLw_DKI`NyOSjQxa)x zr?Ng=J>I5N%59}nTAGrnF$|MAJTx0oU`d77^hxvLq-R`1Gl?U%tCQSF0Gam}fIpkb zG~f#g2+-pK9eha5gIRWcADLyLkoCTwjeEJ8?%R$Tz(T^$;Ca~yvz=D2xvqC5pC)gu zXkgHO-r5}mg9!3?1cCVlz$QO-`ZM)B?H_ymrYf}vPEXU~zEypFASsam?n}p)+sxWp z9r86jpN&4G4Q}UMAkfs6V6*k^Y2}XZ^3(ZoJqYkpON~*_9xU1}Z_X06M7b}*q@}+! zHVT6o>#ATt`2)N)RMa>Tk%t-`)kQ?1jJCGmva;H;veImV!=sbQ3G^wnTkVayKLlx> zUf`S=;yuhgz0c2vyL$3U^AvV}mru^m53UHn#Np&|kpDuPLcUW|!A?w@VkCmS(~St3 z70!;?n~Bm^1IIM)RuO~5v3duCSh*{(%)la`7nICSZc0RR8&$@XSqGSvk-`@D~$*H`Y61d zoELt6v;7y&k*uru`KEJlF8+ZQ+g&v7MzqoY~s0 zl7>d$R2CJnyG!axDd%9UP0-#<6%Op$%511J;wTi^_-}s`OwY-gQPb%_LA3b&VW>}d zJXMq3*W1gGd9Q3>ciYYaghQS!*Ot?$*^*y?6-TVbXGZj#6B+LI7A6^=8@Yc{%@7mL-6TXS441yxl8%jNbh|N5w4Xd@N6qlI8R6 z_d8DCCO8P705K+ey$|m6Kkb}Nmb-?YtQ?HjW;~9To*3-J3hFh+RB89}BS$wk-lV5J zkC4*RSXY-@;Ofku?(b`;E`kxl)TAV-T3H(v=j5F4D1Z`<7)L)mSQ|0p;Nh;~;y#D+ zb_&iC{wA|&t<0$@szqrZTdw8#_D#q0qXg!IVI&z!Usg&>kK-*|!%W*IBQdeL-NP8z zYH_BrJCH6~TU&)ro%t_;QM&>)M7gq zuOcYJ!@{XhJU5jkP$e5`M(_tL)?5)i+r^xL-lnmx$%GMiH0)o8-E<+SdQfhzNNsJU zf`ap}bAGjEVF>@l#md9O)Y8%iN{8Z_8ZwIFn$p5fEL``hn}9nk+SL~O`S8T@WLm9X z2c0M7OP+pt0dg5`Zh+!oOcK8?-}StuQNK4=j<2)UbTaW|-Y1RC3mpIWU!DF=k=)W{ zHp^3d)>O>;FAuJ?gtT`&s&f%fSquAu}3ad>`br)wCl{MzqfzS^ASEyr!(C#rJ)SIJY8(D zu{BodeX*o?j9^2#J!VX&rwxO@`*mI44Eu{jK)_?cnND&AYWWZE+-(cU_i*`z?F5~^#iYU(0pTN@ZiU}B;;I9O^zQ3w$ zE~n@(al0Y-Y?$L0OyHkuIHRI?Km_!c2|ptg^8bN@)e)1x3ko^Dx5S#7rZ7i(*t&cx zfPqA9DA+49B)<4sc|&X|n!5a2^dt1JHNNVU5GRC{AmsmUaD~x_$U?N% z`BbuIq2t`>ykJpT-kt;;caN7cYcK0FEz5G}zgw+OL`#1OcaODRzC8Gj`j2k+$+c~= zjy$KIc+7ZEBDQIJ_>B4Mj4SH=zF;7WASit8-IKmY$+={RRq(DxxYOl zVpJBKgsUuo9>R$WL#)iss%(wJIpJ`eY!JI$kt2wLT3kWKC6e{gz^DWTuBZNnflg1a z#ddptUTbUgp^(#Rb6YuIag2}}tFLqX;=CRbd5uhqwWjv3gN!vUok*!GYY&an zw8Yn{D>IiBv-b(O0%52ija@y@TR{ONoT7tM+l&{7(^;JY+uLc40q@^&)GE%opLcgI zxD&!h&5h5R)O5Wb5D|ZM-q0yjTTExIal4i^+p1No=VmeO^|jceot~*#`8@8Y+v-W2E?G6qN zr4=ZvzUSrTrx;v;r$1+J1l`>;d?5bT)IU<0XGcb+$Kma2IJnc})3V}~ptk+t2mVyFu zknL*n1c~DfTJW$X9jK)7?(Vi_OXTbaPz`ttC=OQ>yQ;9oR9z$kn>%4F1_>15wy zvvcRMw-?WI8ApbKlZ=cd=iuak&q-sNZDY!zwniQm`!h1RAXgxIq!Tt zRp-^PuNO*dwOM_2yi7|T)Wbzc(NJ4HUc5mhJdMVmdcFOdzHA|l{icwN1Nn;RgQO1? zVD6gPvL?F=Bpr(F-HUP@UuCZ-}+EBrDig@p_Q(53mzE{B35^gw9W8YDVBTmQ`FZK+jXV!`QY)@*yE8vghz z05Z9x*A2_g=zg1Jy~Y@+)%E^UO>Jv&k+X)Kdx?z=dt zRXkbHN;DS@C_4Gy8Yfb?LK-p=k^G;8$Pi(X6C{Gt8dkDaw554@m`(~tO0KFdC=r?Q zeG_C9xB_}(;1a*frDE0L8baS(6+aZFQn!moWH&04p6dg{*H$Xsu|A~u-*Q4ZL zRy3lCYqKP^3R5a%ZEdMo~{eGnCufQ?NV07okEqikt;4it+B2%L;Wt@tln z)LR5r6%cLa`y&8XDI&QyowQ#F!kb`AI4q`CaPdNc3XM(v)+7>p`v^-s?3ByveS%7w zQRK+tV`G{;yx+iDU7#)uflLF>}p~B$PCWuQiXGnU?RUy_>0FISkJR! z#deRfZP6?Z){?9tVEkDZmVg!OmouQw+B#~mzkYv-@bdcdzG!3sWEsHI=lY`A0>2u4 zvOHhx3!<*k_{6NCW&Lc72 zEYeP4La)Yoa&@o%uws}UdP}2Tw9}4=d}pV%w)UW0t$eBCMTt7w;Z*r64DD1RzJ}wd zKLkK{2HDm5ddvEeO#B? zoRj%pApG>dg5clVL=}&i^5zOM<>5o`0QM2nYyJg=gy5xvkTB zTUemf4hx?zC9C~wZ*>P5+99y{jx{_vR@NtVjDF|l03I+!k##IBew-+oXjofUE(M8; zd}T&)_ZUsI8#EM+t@N!~U3)z(OV+a`H+MFFP@pdmyh8+%9Y_t6AvTaP(u2G+xtF%} z&1(OsmzA9|FhEh5Wty6z|JisExDW`3t)a2v-|Eo(6ir~uC^28qRnbvd2x(WgIy)OR zjkQ(IPigvNWsN)XFGihGxdPfmMFo9Iwi^Yyu1;n{o?uq|nn1pplk=!PDki2X5D7uy zYN+ONJ~z}0ujfUUO!LWw>v@<;*KD)S?>$S?{n6z%>fl!9{2u%`m8GWVfi&oByAh7@ z$>k=`>+^|Gcw4?w&wz#1y|KATfVI?UwSo->-E7;<p{DdVA9DXs%hz_1x_Am( z?`uCUCMK*M!kCbY_0Gq%A35ipPu|Y+Tot@!_jKo3UTGw@Z1Y`tS;ZU(D z)j%10eSQCJZ{LrMIGG($dfru~^!{C0{R0VESgTIlBf!;(-Utb}k&4MpL_}i^uMHEW zO>Hz%;b5bZ0+J6A0VQoJ>nL9J310Mtp;OuOJED9+Z0va(*ZJf6I$%Q#(jO%!lfe1m z3v0*$lib*BwCHV2I@;Ttcui|?!3Ki2gS1WNu&StNhlKy4u#=No)QV$3`gDKK!NuiY z7Znk~?XW*mlClYq;`+HooC^v?WVZ=@f9Q_$wl_729n~3Ya;58JNbluj2=jF~;AJzI zF*}x(aRFV){;S7l<#p%?Y;f?ZA8Vkns0c7$JwZUl<`VM$k=aX2OFcc#fGKrJn5oV5 zQhav=i>uw}>8|-_NUv?qY&x^s^y2mRyy;_TA^$){r8Q9W7(dUaI$@xtBv-e?F4jx4 z*sq#XS$vdBZSG#MxVio@r~WzphZG-I)@0lLjicrFJVvIRXk(-EOx_Pax$5?LJ65OxVGtE9lFn=kk(?}^r+K>QcR&Con9gYZ^Jv8v z)JGc6`S$n$(fm5WlAXaZ`*qpgtX93^+RR6hTz)u_=6HII@-WS3L`aEBC8GXnT~QQ| zh=LmCT{!Emp`qTd&DF`t>XdU|Qf$Vrua6rhefJO%7E|5a^k~RfKt&Z-V65xu8PwUy z$K9AIT$Gpa_)nQCBwteEBv+p0hPOx)4BF9AD>OJ){ku83>IxSb84D-&b~Oz{H8(kV zeyN0C-HArUdSKvvI2;E3*daMBX;-a6Y^Kg{E33G8rO_iPMMXya%CU(7JLD=FI!N4# zT$a8*l8TB-3TZ}MfW_}wNnTXMC4ko>;QI!0+XqQbUIgmbD>S$t;s-TE;}LSQJdwY& zv{OKp=pt8Ig^6m6+=b|7D=+V4V)CXxFiKCWoEN3T5i-o-a^B+WJCnDoYGhO&2qCHz z9~Ym+Ue|=8&oQ{Rx_VM0=;^5+I5;&jMP*n}V4-p(RbGmsta20oJJQ2+M#^~X+ga9T z>&ME=9oBz>k)w|-Gj^&~!kJqaR zV{oywLUUs&D6~B%;5hE|d>J&$Qee>a6g^^zy0J-LU0Cq^cn9e1Ls0}s+mL!pWu)^9 z^ID3kepR6O;r?CxQruiz2bK>Rf|Hj!-{~H9ob4F7+G0eN&fp`z0s@dKDDh3FY`45o zD!ARC2*;D2HV*1Ed;_eltN*zD#iD)wroOYn&@-7)YBGKANCJsUgryWXv2O2-+z; z8+f+>0^?s$NELe&KR6{un3A~ggJ2qr?r6uJ;wNBp&nqj#UUXJe#QfVjr-%}w1S1dA ztf53QHEvl^HPnY69-$&3K}pDB*$t(9qqhDpovSXh00j3Qxc0_+| zO$|iW*~x#<<}m*WoelEe#Us5q0!BTM0Hf0mpOvGWn3#F>n^{GU?lx!6tF5Z4YQB?= zUYpZN*9c(}beeE=skN9^U{sW1#)#PbaezgWu_+q}4Dskbn|x_2z@0oiY@$^Kx*?t4 zrGMkIdsTUU%)a82Z+l(MEjK0**|9>x_4scrJ8`TFo8?#B zC>E03y~7=xeq1~n)wwdFodIB4q@BuO7N>iDgU;cMToIg_va8YwB#45BfG80Y@^Zt& zC5?TZoBQ_)w)eHY{ecf8Fg(!~uyx!^7I$6u0e?*_4HlAfVMWJ#j-<2qY~JTj%YQiR zhDDOy@dc@Ldmcb1Z*Ef6P%9Qx)QYGrU)AIcQ7VW^oMoyN z5%KH*OV4X*0rasHM1D#NL9`TwN8XPG?g6e&74F;7{5S~ zXrhFcHFb663YpJN17&1((|#D(+t&j+(faz3#zrX@7lyH4;J6i~3K|;j+pzUiprGo) z!tR_1i1&XP=rLJYM*@Fd{wvv zfWvxwevLWR-7JyX2Kwf!CAti0DbUX#xcn2TAH{J!z3=bz9cZ1#6DhU82qZEJK=_b7 z7x|WIXssRB2x8LUA^-imyQ}G`YeI-DEGQ$1&xr_T+{5!;o(jOJ+$4T;Wk=U=;AUxHEL;PGjGGe(NUq@Rae&#m&_~N-wQlYzkyL( zTA&{sFw-~xAY5Lf;9#Wu9>kQhR#JIE{sRsKe0&Ube;>p|2}Ew7---+7+OWR;`2M|M zA7Qt8J4?dBO}L=76>_y>&#rEAk`5a|)~uL1Sxr%|x~8TE6DEOHb!Q+fNkl}Q*hM>o znj)lxF95qCo*Y(SOI4*5Ml`JPywaRNw-?~Z$uhE%<_YLiThLgrH%pAjd6;QQ_CxP% z5wP2I0OH(NM}T?`)QTH%$<%Lsy$$|-eVcuP8mcZz&W)&?wY3!3qi);N5O?5NF2egc z`uHi-s~jVHiKo}S0QcPERvRo4E!}|7oag5J=_*?&*HVGVHWG)ss!00}(D`3(u%n??Ns?OlZG#2XWe)yns&8+u z>Ox^uHuK9@4&7mg2EC=Fr47{sy%D(aX9{2-aD9e=`>8<@9(+9g#<3JafC~M)p(_LT z|ED3enC0%v`GtiC_K!a{CcA#zd~Q#C!};tqk>c~+&Ks=WsN|xr;4Zz73W8^1IL_ca z9gSa@F9zfZ!Ftso%YGmPo*&K?Tpz%U(AfB2jt6)aOaMG4u7#!6_3IfsdReQ!s&s}q zPaKX`hcOU{wgIBPb7xXgI*;XEEv7F#n`0Kj1QH1G1hR5+ z*TiKe!I2>(L&b{jgM$>p!?}Jp{4@R`RUVy0&0UNJ*<8P}&=yWl+c!N;kVC=4!%UJ7 zQjPI9Ggbk#V|sIwg&U}TMR2f0A%Ucht!3N#DsCLe{6Ur0lm-~+n1-aWY)(^+pI>ha376gVr+!I2%e7K+=!kfOeIyT5 zJ|YBQn{@7$okbb6uB+eC0s(b|f#*9k!nd-$3jK>*me}~w?+NfPLPyNqwju1|(Mlg4 zbYLLPAa#T#*3eBYR4}^p@>JXBJJ}GybPMd6si`f;Xv%e0ENOg*Bw&i*ikvYxXkC}pf7~4tL5UY-ixoy=NS~Z zY`R*jmccCTo6Ku z0fAfDz5x`n`VWiz#&u@e+B^W-Z8#F!MyOSwI66_UdYqk7yfauQg& zJQvrW8#l?0M@^b8qM#jpeSP*!T~vbVy1Fs8pE5NK5QzS@3i`3w*zRm>E~BGVl&{KS z@{`{nbn!KVgg_zeWw}BF2#04kSXoLWGllyUoB%L1X1_hnS;%l#&2=b@%&Lft3{szf zwlObnO8x3MO@i!ET57r_825_)PC*gIuO0$_v#QA%G%AUVdt5edqrmJQ!{S~DC{pI1 zKOqm7*Qp^;|II9edDfH_A)0rUm#62{Vq=QS+US}%;}M4D$1ACP%kDMq&4yC{ZDrxb z$Pcl6`}jCIkVg;@RgSS7UBp^A>`Wbo_WdF*G1%z8H$uJsB6@#8|trz zMF{f2{FJd;3(71apkp~De&@{Sx^?*P5yQvv45FKV8(!A^XC4=!={RMX&45DJ+M`z6 zTZw+SuK)w?X9fs5z1C-MZ@{u??_6Pune*wtWN`3!M1sqwhi~l6%%9i&T1V660LrEN z_4H}_SHDgAa5`WwKw~}Sk}#e6Vf!C1kvQ?nCjHjZ<+L_^?viE<_%oFf&>J7GMTL7*P-g`Zj852Nd7)>TLU|) zsxJNo_Ti!71S>0w%5m^Pd#KR9C|ox;VJ;50ptuv`Xa2qa{#o?&o?1Y5fk$K1*4Fhs ze&pxvV`7#w}2@?{mS0Wzl^i-HR707ha zrdBaN+6SQ1;4|{^DJCY&`?Pd)iD2ZL3^Wj|02Zo+!IeIRRe!%nFn?A_AB<3WPA`l< z$f;*nR;hdJ2M7!Z9uCghOpP4}5u8JGAZ%a4p6S6c$noQ(maTT1)7eq>)-M;ZDBwQ5 zvyk^ms5+4QLecVX&(zeJj&5nGQYl|mhS0XdJvuG{!D*qV2V^b11P$S(*wW$*9xj6O zBsD8*NA4FV8}DB9G+Gug99Glu0 zEPQG`(gkuMw^gu`uag$dpbjJ{v3TFk=@J6pCRo(NKXyp;z!8Ik$<@`DIk?))Ej$pX z+Va@ZI7W=ez`z0`qX35^9xG*ce?2blCF|G2?c>7(xG@nbT4-g%@o~leKI*O{aO7sJ zR8@(LhF8D^-9Zr9*Z~*UI^aRsRw)p_xY+oHAkCVI z$@B|`116!SwRLH34$4^sSClueW}2fT@)7)6K#$L77f}E&iVKjz`+B3FJ5~GBvF2%3 zH1&91<7qorc6F5(LY^V{YmY6cs61O47~HQ+AdstDSmcslK*qm&?(lM*`Zwkt35M9h z+1aI#%dc+5##9q%BUm-GCGou*TK%?MDpuxdCjwx%{F&k5&ldVGuXo36!^suMO6eZE`Ko~}X}AK<+xZ24ZAVwG#*AI@lcb%UxuS!l zgajH)t&Vshruj`TBIBTv;ywhTA|+i3yRe7}U0Lqrkx|E7Z!b#E;K~XaD=jf4M?$DX zfOB#p86`uqh89u+IuzZ}?ykje4I5hqS38gt@IlIxV`LSTFdFLpRd_xoruhj7#L+3z26|s=9!9fycX47X$s;sQ#sN5lGl63;y zqK*m5v`rwMZncv4QnNWeaZrK*NKSzChBoHu&Vd9`DE2IwqJV*@TU4cOuc=i~(B0Hj zrN6(vj*;upb#QhBH<2?>ht3qchgRqkufxL413hfqU>unY;`-E;1w>D;Z(VRaS;|mtw^prjJa4i zZvh%nJA=s*LlG}+cUf-tR@h5uo)AaHU2;20L?$N)BjfBvGyL>EYy;2#4GC_KWM= zRBMa$+$FP|OddRhIxG21RS~%f^S44AdGmWHa;4NbV)EFPv_>}HfKOm6MJ%nF=2Fnc zkR`+4vI=rYE}Idm7Lb}CE)l#CMWcdo>2MF)0s+FzZU!to{L~5+6NU2zY=tmT1c-Bx zNA$fq%j)Xbc`{6m_OvyrX&9hIfLKWEWnz0rc;99a#HMCImln6TJA$%<;`C>1L%FcM z9XdKd-6n01zvCG1aiKiw|B(jPbz6$ z3k&R@R4Vauy}*tpukW0&we=?&`FAMjVF!-NV|Os0fnA{_~1UYY4k=76K`<6H+cMon#8kMw*mWP^Sx!s8Pzt9m% zLpeKAj?n0-sRdx(tI{Zk+y41DbwrQPS8KRaoin6XA>aLK@pV>hqyS1Gw+V<73rWfH zqdIou5=~61ebJLEW^Z044~qGt3X151u{W2W4Px97Q5Ym;B*}60!V*Y7$}9(>qUdpH zsZQq63BHpu{vt)}6E`(2N=(F{EZ^SVE|g0C1os!>67f@CSYYST#ElFOzq!Ak!^x&j z_TjSD&Y1I-&|=+1VWRnMuogh2ZO^zrmDJFP^eCsmV_(-jtQoe zmZ2RxT1iKHK00lS7IwLv6BSiCm4tSj*ORktzc(Z@Ov=hiDgOk=%!wu^*bEOtdw*B% z;DX7?IjW?@ge(k}K~G4isKse))|`+8U_OL0HaNC8=~otk(o;y#jvpr!n0&gk}gZ#(SjK|_5#4u)g8IU@=N z9!un2bD5-|aSSSlx+?kXSWF4Ogg+#tg9U2SBme;d6AChyk4scJIl%@Q8QCk1i({OU z&BywS_PZrNamx6Be0~m}Ss3~d!&7W^i&oWP67uZ00NmfTU%;2z#)bZU{{U+adm?h8 zLR#AZ_#5@uC%j+vVA;8kn%yBRxV!xdxBC8?075= zL~h&K8MwGaWi!n4m35)N3GE~0o$DCK8@&X`3MF8RS+@fJLs1k&RkbGxQVTCXdoNrb z&u8FrB_Jr+2V`9>RcbA*tRx z+BFK=jnExMtR$3M7>d%H&Uh(eL%iJlV8FrQ7S_E-Vzgbi!_D|<258NefN%B9PUon1v`A|Z1qb;?gR>XER2_Xq+uRU9n!RHUr9uChsh?PYsP zR8bX^pcMc}_~wr)gb2in`@Q|nzZas?2J&(`#sGt{FgCDyR7fJo^P8I5g+Sfd(z7rm zet1j@6IPE!&io={S3@jG&aO5tb}1-O&J%zm3km&_79Z&Y{|yHZuY!$j4d|SI{@gG% zHB~t{sMCc7X=rV2h1ZoET3Gm|B7eU)FslDxT=Db4mJG4@B?>v6P$zK(35{m+VC_x0?Hpl;)wN+P%wIefnB3nm>lz#H;^m@8 zr*xNSI`ie;-)sIb_Y&nwtCq#rvq;0f=R4U#C5qzGjS9d(pPjxod;=HM*M^4n`FK$C z@bJKoc|y8A!5!&9f(9df+PC4x`Hvo!Aa@+1^9(W^6J-tg4VK_UAj8luC_lJQ76K-?KVp->7%mV zy|hHkg4-OpY)sXQffx@`>Ka$Qd zptAPu;@OiixyiPhIAJnQw%ycZ8BNtYxkB?W-~qDX~F))5TY zG`j+V7=B^iNn{h1un=JXeCX(#YLoc&qY?Xiqj=9EUo6e*+{(xMM;Ma!vI*4O)qi3$CY{qmLG>dgIV!{D#^Lg-*&2$BV26Xe|D6%`dm>Wj-ukU=D!M4u)jo*oQBPJ25XEggYvqs5=VLLEh^#c__|5Xu5C zWwPdSx(n}WDu2_G{?i&sJ8PHIu@aYtu53DcxsAHvApx} z&?TCj2pi$Kp*a~L;3qMW?q5eL+TaPH7nE@TWE9cZ_k1v^f=#2~{q5G(&-^AbmIyu| zyrs?SYd4|n2tz<87k6ew>04>chrQ7Y=((S1t4D%&adlZbw*Vmi0=~ihjt6D|{#Hs# z%8ky~4K4a8r>WA}j0#%?Pa#$=D0o7`y{}op-Qf1GrJ0#4ndjdTVRJSDgKAfSPb}=d zI?f>5Ztmf1^|h-JXR0W8ihc{~85$B~Wd-v5I8_saN)i&K-rlMh7{fKJDCm_HGLZ8` zME=npTc`0v1O#{(qEzoNV%>+9$+!qH1L;aq%S#@uZDFAyg*8i`*4IVj;(p4@+d(`R z_VxAJVhgqB=%~;q<(qkyC(8UDl{>%u&`@D#5GdvrXiFZS9Gl8l0$pFXA|X+xtuCMc zfPIc=YhxoCov;UX?~AAL+uQoo^<@nWu!;w9TUgSP&icNl6|7&`d3ia7yJ*SCO3GzN z4OznmL^DyGd%T9mhViEpw6ydrtgY3x^dhM&cSKpf73polS(rGLPYw*&4<1f_f&E39 z>R{*(`4o%>j~*KxNuv)qlPBuxBfH&quEfQ*mb*nNe#f=ARk}uyGP>qe32swi4zbkM zilx1#kW6K4eH`x6>EN=wn}U0U{yIJlJ}^s3+{5&Mo0>ZLoc>!)@be%A`hc6CVl9LC~#y91N3~tS$yNqrkpb&^x`=gSLwErzcrW?v4F*8(ZX?Ej0 z*BXO@F|8H1ZQ^D6WRo0WY=3&{IS|Fh&4vi!s0^CvG2Y|mG_2y@ES8W!g3JF*lU33F z)s~fx?%M_q5$S}iqW$o&3KTpdTI`ksyI5e*)7)H63u#Vhc$Z)I_p0E+V1DPQE#6opzKR>=O6)}?r-#%-ox?r{rvNtHKonG{zcOG-vb|VJp6ER0w&(Ysi|he z0ATA4yz&9$Wc1ZHTI~PG#&&j^3m4nl+fweb7E<0{g<`K}6orX@sp;3fkERJj!fg1y z2s`fGN+AatzDP()2($Y0^TI$w($_p&x#bq7BFWB`|>`FoCb0jGVJGBP-L>bR3{?2Ufb$fAjOD zrP6bgIg?fjSKonm7bh!gOHq-~mjK2%T8TUXd0)Y=9ZGyZ+sC1kNh6M(ihi;yA&0Jl zt)M7MJt03w2-Q@y%Xp~;LgYdx!UVzv|4c1g2rgi){d`LB6|J_iLspoKhNT*NaI+ND z6%fK@g-L7I7yz!I$#Pc_DC3~!9v3DTo@FYn3HKq`S63E6h}wlrCSa)#}5oB;=jRuvbb=i((K~qZaO2Dfw*-#nAK_S z#Ky!lvN(X~XI17Pf^or^HkX^5Q_-r{1^hc^b;|@s5)$@mNvfnf#wNAaD}YS#ho80c zP@_PWt-7?5$=}z+#7ho^jy@tH%xBoiQ5EQX(1v8yG=MPa%6-pJBL)XOVlSgW@+&z!ijj#?H6(1I}w%eIVyj4uRi6fb}jeC7ww8v{tauC_Qb zwF?tQq(t8-#K<(&LUMI}{4jD=5K^Kin<8`eqzhLaGIfO@(AH^tehy7a=B{5{m5TH? z^zFWliHI57HJ2?!daRn6=AECPAH=}G!8zI5Qd8B%AR_vcu8|YO?oYr!R|Z@P0z|^vc75L2w5d(WdLw)~lZ&vWZ??zBP3xr>GbzcW3xSV7QTwf0Wsg^qPGuPDn8h0AS%np+U zS*@ifN=IXiEGC8&26qqWj;&UHQ~D67f6!=MKV9zV=r91t2Sn9T3N!$f?dDjrx$8(A zY(v;S<{p}0!C>*Aj0qoVtiN$|z6C-XyN*=;LGI*!q7F5~laoLoVjyU7sV{CQL`X<#5$Y0sfX(z0D~t<>O$W)2GbN+N6+W43pRekQi7P>f`$(-slu z_xg}1j8_Goq;yQXLpV!eJBW?tB^dX1ggXQT%&e@^n5#Z3U^HIbmZ+cp zF1-J3v~#v&Vq_GiLpIti5}%?0H2bIJ=cn^^%A=gd%kvT)f?*nEGk zX0t;!xJy^A6sM?3Y(=z=?6tAhdN%@?YDWjVGaTy=PS^Z40b!XKUcD;8_^T<-WIW(* zteSc{=7L8@2+R;z@VnkEc1Nr0-%}KUPX(;`Ib+h&@IO!INQ(;!ia2tv zE0FFI!q8II;Q&&uoZP0PY`c`4xk)~DM_f*T;_BPw4dJ2@8z*N!zA->Q#!+goU=-ok z`C3`cPcQQY-7v0PLPE{m*%B2sr^(edi<6-LQ3X_+z0;3xEd$>Iff{%Yd&tN#KvbEO zq$$RejmA5e6CeN9(cWrp9c*TXmhWX%@K4e)?{`M3tb%He9G`9h(;2FHtXByN1|>)t zJTcf^rUe%kjGA2-v*6D~eIH}=Z+Lilbd+e($G4M~DLOk*H8EaAn%oS?SmEL#X`K@J zE7Xu~8pGwYQ+$JL`t+FwxWTVhgi65%Lik;l0I`peVE{T7Uu3Q)ANAURDJ;1(3u)|%x0`*gGpy%_E1{!e>L3zh*yk|ekC>@W@{62+L4czMa`8zLZ zqO56KVj0?Q#LgVo*t41lVfxBuIM3!!H>ZQjnSN1u%5)cf{gvI)$hdExN!e(qR9cpP z_0pSOn_(^me!z>Fp`$8fuNSY~C82*_0BlSfexxMsKnF6Limooo*S#=O-^a-FO8`>8 z*zVzEVPOF@w>IvVl$8Z$$Ljn>@xBmnBNlMlf0!xu%Mi3U%C9VxR5Us+raQuk*vKAf zi|~}1pC_L7l%ArnT(Dg0eY>Gt#y4(-S)Vjw1bQrWb2-23f!May#HQ!yErGADV z9b*CnEA)eHhiQ27?^kO`^3gUlP|NK;aP+dVgghiU$R^zyIA?#{+G>C>~bI?9lXVLv4y)KQDUeSK|he`S}ZzF66Mec?ZkEy`_A_;HwS7r`etBl* zH@9Y8W{tJZ%J55!|QUae3tX8IQyMhh{S35Z1t({X2OKG#Xj3}ihPuA;DDu1@awU^Kemp}ht9W=BW%j}_n2!b<2LIItZK z(;QdytM-igt6iR4^JmWeqZDpjnB@7A5+x`=h11RR{i!mr{y14kfczS0p|7dgV%!(; z`s&S_GGyvEb>{Q1<_4g~FKK|a>{fAf^w?sp$rNIgF!jVFP;E*>7Yfub(r9O7_&#h? z`~y#4%Vj4>i&wRa&cp5XnkMWr0O~K@qSZE_$7`6tAx|& zHWeJMzLVS((YFn>D9+8@?e3{zKqiQfO&6F-iiqSymg~sb5@iXgAMWl3>H`*S3eQJt zQX?arn3%X0f%2XW0~~?~E|$UZs_wt^XyZYFm?9ypX@Y8M?yi1+RDyzbM#m}}y%0l! zO=~nY+sUKV@ktakTwFupVBA|;98@&X@_qN*Kh7=T;r+!RMAeAytNGIYM3ku7$m?#K zkWl6iL39XT!{(HNthwUE4jfPF>Iog4PB0MEHAdp&wE$N0a@wh!xxT)>n`mzE2oB0p z!!~$$Fp8K575#5r9YCoaSHRJ9w#C(%TUlABZmxG49;D5mVK-$D`A!K(^tu)Hfzri& za!g2HW-U1g1F0l4O#h2j*6#x%a}uOnT~~e4zdvRVybOu>9DfWq^bHT)EK~{rFDV8N z3*!(GG@=%LP!Qi5ze&mw!FrH?{A$n+Mh` zn~^}t#v#z_4D|k<93MYF9b^NK8G5M_f6!moH3cYm;iuhLsS`XLS7)@1;rfbKJ3FG$ zJ-w4-Fd@Qty8>nKczRd}WPaLThb^3*HArqFHF@G=azQz)G_86(y_TF#XX&wnW^3AY z-m^{Io?2j;r7IT|YPa*w~n-t4|dX2_Y*f%uP*BKEJZkRSyCmH0Q>Ooe@g9 zFRr}w{Y&gcWR)k)He^kM31nuy7QMj7niV0owG$&yQC6035?JrVo4yu&4RxvA zR<~_z7(#V^o*U9GrUY0*IEY9^V0QoAr+y}tm8BX-3MV{|j`4jhA4Ydemz!at``vG< zhKHNHyBkkha)>X$#Y0gKBQm+x>ooXD3NtNlrhMB7=2TEaqq)UhMUpzU8+`slP1*`4 zB%bo*Ts^{TAe#8V@M3VwR8m4h0MN!;ex7VbvIx?5(dr&;ZkBXZCL1UfY#_QF-@=CJ zKVKK7be^87_w+HS|M)oNkSpwdW?~jwJpV zxxyC+g8=_^f_JC^Fx(_oX#xH?T+&uH7f>!RG`%^MszOgE)gKT<4b5)R$F@W}V zA-Eh49B;O2;bGuD0bOFdV$@Vkn~627WB~t8g*2O=-J@aC(5AdXz66H4#~ke+90xv~ zqrAMJ@6Vy$ucX}=Qc^S>gVPOlj);<5$RU=<7ei3S&S-!_Gd%)omnQ zCzw&)TAO}g1COEieE&FfnJQs$H>rG{ySZtjUXFIE*!DB^B17C*Du0K&1KqgX5AIh9 zvhZ)GKWFE9WwrRe&L#2zwFZO^4p+u5#@n26hy5HACHZ-*#YAbknxJ~}FOW{dW)>s! z70N-3dSzL{2E^E^tgff-ND_%jjmu-voIs}FOSwN#F>d&Vs((FAEKqf}TzG!gCsNaN z-xd{BnYjjn>r$pm$keGZ^hZ(1Y|^n$aRMwsHwRK!s8za4@UQJ59Rp_J89+Z-2*tLq3CVhzZAqBF$7;r`V3@vkKYTnHDJm#y8}AMNEy^1f?4`m#zp zTR`70m2POmPyrlsHv+|7kPSWD`-7@pUhv;~!=XeKK_HgQ04jmVva+PRJ2Dvhr{_mZ z2@^4~US(393ZK|C{NwE~E^SAb`lco;8^G`MTj@v)9^OL!uKp(=N4iHvQz)azzp%2h zhDQt+DwVyxmS9n*Zfa=LP#3v68|t(Co>y1%?HnBlGqtqLJ1PqJIhUI1salpeqPFF$ z*L-YUQK={*0%a}sB>|E=(gg{avP=hPlrYb$3BAZ;+#0vGR4}DUNMrkc)oDhI$}vO+ z^n?GG?EDEdwdA6otOhKD@eXz|L(Hh4z!VcdXz9SOi{G!|+|b=0VG|*cwfB5D ze`o1je7~jM4n**Ni7J^(6K+wr_@OT|WS#*4lFtMsP~^xZI0g)Z;g zEm3rwJipE6k=+&Zv1gz8iWA4a8FuLpWi7!i4lZ=~ru)N{{nOK&iLo(>9}x^B zC?GCAgwIP>7Lf>hVL=$?`;@%gXkNZc{RIO<5+H%Hs<4v^eGlb5aA*M%sQzFqboB3q z(@J=v-D4CN;fqM^3f2$4{Q?@I!_f$}llQ4Srh#I~thz9b~W_pU!}$~zhx|CSyd zuyi;B4I%=2fmcYFQ*1vOUH16lwm|Q}qoDe{8ohdvpX1W*SMp>*dPf-E(Xd`&q8jpgAibPp?xIt7Qn?OE7!S z#iZkkh>qSDX1nGpG5g{_2DLwCaNSQx+IhcxN0a@p=%E;>rF-1j4E^L&B9IgVMC>Dj zqNAg?wzdv+bCtR^Lh~d=tLJBDzp6(-9o`hm`n|umJ>U0zl(6WFU%!VZ#1;$$2Y`c@ zTf@!{Rv0o{J;wwD+}>+EMg~B|EJ0Kdp(R2^IqRmuoXt%;Rq3u@dn)5vP()^CXQLi* z#${!W0o$S4r%!iJPe7L=)zQ)S-d;BFBziK(D^esmJAMD!8U=F}HV!ee0j-j+306YJ zYT4;2fBQI1c`oEkb6=nLS(}XX(9~Z=9i4%Q2=2ER0Oisz90tdUPW#2u2I$*Q%ZP#{ zwRTuyB_q2Cr^&j#IgwW!cr?_{icqNT2d%JMHlWJNHqWZ!_kb%Zi1JVXG7G0aS$uz- zgu-#k%okKENjRpsh|Z9Kfi5-_z%AI@i=7+4z!f3^gUX$>k^fE;E+=0wc{gx#L+IXK zl#{a5Cjo(16gXrDCEC;J z(weiAgX&CaRVB@7`qP{#{G9=lr}iOENfmZtb*xcS|DOILbyw}@)3kb!m9vektdZJW zfiy`<7wI{^8z%w*?;B{OZ4OtffDuVW+3(X&fx% zL@>sSGx^*+1IERWH8I2>4YjeUEN#apu5g$W`~uZ7wX%~)T)i+iCQSz|#wmH|q4BLN zSb6Qg%A}S0pZ<_W3S@qDx%qaSq1V>Q$&JrX3tXJq+%7s@ z&j@64AkYEgd{`PtOY3RlNbX3%}67(r9?m@?ylOZx}xG*nBqK~tyxEK#f(+B0Q7nuLyI=4BQV>QOMu(1Ld=$u1g zCgu{kxr-vS_dBD~>$5TlJMUqCK(=iXFM5YJ@;N3YMUeOvr}c4N+^t^8y@o@xP&SY;y9 zOVUE`JEfmoCKA~%wTOOEbQg?g32I>oe$kh%nek%uJB2iXi`%?D1I6_B*WQz=q;k}@ zmdEWFikAUW_-vo1*u%*(Cf4_d?adNir6;Tq>+_h*mnz-AZwGtj2rz!aUatF5T4=&4 z*2l+CAw?ru+k?10|iV>P>i-gwiidw5{#d&@&N zWIDLKu8BW&7bRqzV)+cs3*bgE)1VN(=T3K<_j?zFhs*c%MTEk2a}=r1-PP(m>qMM-B3SOR8= zaZ$-=QITc;rWhn<%8i)RjxnZKQcZ0KwVY3cd|dP zJd=*+8?27aMyhOAe@!)KWu5VZ{`6`=Dj|&co$I>TloK$+d1~ran%4?3(>^wpdN4(R zIXF1{8o*~ADs%79*_lEb#>+D=ElZO z0P=#f{#vtrb{GI#syr)_PoEqFYSNUJ*F@4fkDRjBTh1oegS^~MGuV9QDbiFS14JR% z(C*huXB3!pOF|nVipVy}WWts@UM3E*+8RCYPL>;Im53oUv7e=H#gj>=Xs{rf}Bi=3Q-#6*S18FO>>FJGb}kj$jo*r_D?_x5vJbFjGfXhDPFD41y^ zisT#R&0;>(c#Y{}(w`q$^4i-~zv?U7+M0gnZK6p^EnsI;{@aRF+B(++^r16jh7%DJ z2Wb84>+5*E9$8NK4-wDJ%?$|&`OwBnx@kfq|0g(ck$96VE{)QW{Ya=M7zwErkw{LS zY5G{=JG>VKjnwZr(zc7MX}d?%Le?D&irn=lfiTixiO%EGOq<_KR)3SPIy`<|%KkxU4* z$Xs5MT4%E`5r$TdM%=p26u$v_ zz$ABh;xr*Br3=)`(SIJAm#KZu+>PJ(f&&E=RCd17e!y_65jB+Ph9RBmF(*jjp8owDt*isHm zS&3j?wcIOoAaFmtFn4it84|sz*F19Xl>EGS0JM9|&vTco6O4MG7O(#M*VESr-(6Ct zvOYDXqoj$80kmXvpk#`r{`LpMXJ)zbBs#mg;vuM(c+=*k{r&st%a>AE*y&qmob&V$ zI4e*7t*b>XgkIIgI-}(`ungFNYMDNgKe20wIIz0aCvxZ!W>^fxP=~xBylM2HlY%yns9on^NWcS1xNv znvQlE1o|k;;j~q8`cS1IE7H}QsXKR>)VeL+gg+T994s`!`WX}uu>g`o1kqD-RLR4M zK!T1u4r+^RaOEOHw6EbQkoqm+4?~J@NC2707yr$N4HL`9my6?AAr-&JE!$G;A~z4M zK6ug$KJUl;(NQrG$@Lfzb6~!*TfC&&B>SbprSwlOSNpH$omzKipRABFeYRF-yWapR3Ou+WO;88uP?rC+ zXxFnwCu`NfhmZeOTdVPF4s2e|N8|z;Ip+6;{@n0Tq2^*x_qN1?K(yNR!Etu<)}=8; zF#v{!e;&{JU&^3^7hzDy6mc6^@q2lBox}pf>1=?26P)0-;iK{K1(59m@a0}T_l9vm zpqYva##@F8A0^mJ9CSROau*B&suI|*Z~#~m`Uakit@v0_=%})fYLCJmkbg!+4oq)t zW$l8GZ)%d&W-34%OAqT){;%bW=YoCp_!U+Pmqm~fv}%>FrK%EoZ1xGnnDR%CkOUr_ zH-9ve&m@-nxeu_{DE(UZyR@~lwZm8w!Lh2S%=8B%!ek~TdDm(pI)oQP79}Nq4-@AP z5Xp*Dwly{N=ApH!{9HwTewI%~0A+*)pr~p~sNzrT<>`UOy;1-JKx5t8^JPtq zi~`zIg4+EspOQwp?t^?=oR9k5Hr_6mEQH%1*3k_7-g;jyHsC&aU*(n5C(wrD5)iCR zl7%HCCm#VxPbeh>Z&or0Co|oS=YvX8mQp~_96hP-g|)$DdOp2vgVrM{VnjkK2GM#z z1hRC@vLsDRD%@hp7L8}s+l{xsjidmkUy@!?5tK&)@HS33Gw_N5#Ky=J(gH$!KC5bE z{x^bzQgikf*k~KzYHe$Gro_`L1s%AOb>?-jGgE92@dGGy9t(-&wpP6O=!gJ<_MNvX zq~k{}|2yF`0F9ycYa?0>Znp~Yel)=AnD-k5b`bdZ_{$WisHoytMr50p$=||IF{(SC z_S0E`6CL;V1R$}6h~fRY&yP;qgMun6o0X{Wbxk924J73o zt*x^fn;){-Zn!d=o$8$`D=NR3cb6oUvkqjqN?f(!I8DKXiz9~WXwJn=OCvJ zrK5jO3~JPB-+)Q#XS`yV8Z*;k0 z--U7G02HXRq5&OnXa~B?4<1S$kC4w>A$an~ui(G31J7FL=n z{Yy23sQ5!vG;juY4-b1zQ@WkS%{D|;F)y)nt-fytRZr1dUYt&$skYs}kT%;tY;*#& z!a~`BhtsL^7|(lyk7IcB4&RQlJTZE`R*Q*&k(7%WC(FsPQ6`8$pyKap1Z@G*IacU_ zsNL6>U<`RkshOM+>na5EgQG|S>zN~xSq6uO)K=jn!|&HdY?AOdT@*w zKRkYC2?*-Be}JR8_KtBtA3Ejp>2>~&zj{?uU(m3+vI5UR21@me+>TiXst}wBE2N!! zWi6d^Ye3Ts2@f)=nBijNXXom!E_7Sb{KL78jmTSMi@R0sU+L3EODg`6>;LzaaJb8v zdz$29<{&*KI@cjU!t-Smweov7)eleogfNwr(T0FuS!QK~dJT{6BctVYC*!AOt{R_+ zjcQ#>N;F(y5X;3ZVUXz!!z$HG&dSn*CIWVbWKml)F#e$3U1J0Us7nCG$E&EVjdu>K zHf5P=fGtGNrxniglNwt>MkZohzk4cQvv3a@9+m7eB0M}`sm)@7q$ZffzmdOg2P~ux z4>)8Tu}}jYG3nC9eJRu3P-7IfFqHi;5HPEzjPx6un*Pflk#^0nO|E}QN~r2G{jt&N z^U_4H`+ULU_w;(BaewBu_jF*eR13Yk9CGnetq=QY+V6aI>tF-Ga@A26ESICI*E}R?jO)K2QUA`y@96j(>U*m^kz;P*LO05(T&=>Q;R9apIF1$W2THlw?y>~m z3LGks(0lIkx?h`;Izk;HM16GdYJxz}c~#{rN~P8KBK8>oJ96EQI{9d<}aNLa#bkww_OGr%P0W*a~# zW4%{FYRBJU9u4T}S@83_Sg>$v)iXUNXalQ@tkRZn`@o2ohk?IRLupXkeQ zafr(~R%*p)J(nVv33}JoOg=AQg=YZPs6rJ+C{b$AFyt;JW~pXY9Jp7ut;NPf%arnO zt|&QrLoWsFuzes;sbT>o&CDWg1DY>4mk}>QkD)1+eFkeTJ%g;WRw)cg7!q$v5@ZPW zP82&l0zMfXgtA-|J-OK4Nn|bnldIXhQdj?RbVU3ZBQ0fK1f(vjb0G&4kXSB?;_rv4 z$h9P_BuoG-xS63}&6hZK+oR8pqEMyjlD*nrpr~MMC1E=`*p<)>EkGdr9BJb`pyn9@ zBS%R`8A2P<+)A+rfGZlFv#+u_-W|^c2g5w#B!2*H_EMdRB&Q}}NVrrp(x%7x5Tfm? zT2XOR|F#JE1Pgfi_|OO`gZ5nVgr>f2ld+2WPsP_EWj=lEr)QhUp$~}4>AX9h+>b@RA%dCEN9`W8=wQ*1a*f%R%@B1R#VM z#>M$<{z7qo1J%ELF)`aa-o~V4iWWl# z4jXYaP0c}DkjpTKNUnXNEjP%KBmAqcH~TC; zj!)-)8s}u#O%9}j*09)FANhOpcPV7h23_uN*F%wl={zsLhY}=XnHj30!li>01H8N@ zvgRZ4;!a>CjYLGS8_fIql4b@Jof_+**UzAprQ~FO^5(bEA&Lfzb5-cQ>~=$17Am94 z{SKCj$uVpWf{(j6)G!cr8VDi*95b}FqksXtvBpsP`yupuVBll2M)$-e9IdyFvL5fJ zv?e0|wTr($##%uGek)C8I(B-!ZH_fOe-5*pE)S;+ehw4`0nZwV@PA2=+goPur z%xy}6_Qa@|9fQDlqM@XOfQE)=3v?sC|H7ca1fZrzwjyETE%jeo4W*!fn}+7X{QM7F z+jh@8dLoOJCOhD{4M_?^BUM*Z)6&%JMm1&U|_h9Gdj!&y2KmCMnW7Y;5kPQk$EwoI=&~T;pOrd}5%i9E#ed z9?VE09cW7_xQ*=N9Z#qnxUsaf@Tz{Ihc4{%PuQwi^6qld#L)KlcQ2{W$&r(iLOVBg zfBA(GfgKU+CxWmP4aKRdriO;5=#Rz9?M<;))mPkj!C<(>Px=utRe{yGq}iWw5G}Y^zX%Ns^-GHCuaB&KlhiJn zsSm8?cGx7V%Y3U54cZMwH3PD>XoQkelO;%Kq`ZbA@j7kZ?7d+qkO~ zr(LP2?!@{dM#@H)jj9Aq1=0`FnxkGp&+-N2w~Qej`8x8ZWUkH&WI>+7D2E_injI(pj8 zFBGz}E02#oqCs%>%eTQYg=v4Zdm)L4GZ`5xRDV_6wF2KT0in@BeVd!2S$(e6HU_L4 z@B-e{3Z3^IO=U}AF$g90eLgA%l)~QON*zT^OiMVp`EF4VD5a$2b;H+2;>lfhpB>-J z$n5s8-pB|VW|%r=H)-b+$zL(Gje*C6ok&8Vr&f? zTT*`|7%eID;3E$u`f-AP&i?>IE$9NP_pqReOlD2AWxgCtU(qkQbXNG6r;pFDyExc; zySUvl5@zx$G6V{l*nsXL#cSkc?#g`2VFXK3i(>66V#tb`9vu;bBb3-2OZqicsM9x- z#CmkGD?k5WZaxbz4d7sL*pH@qaW20rpd}?G*qE3gTS$~c6>?Z?bm9T+QJW6xknliL zKO+;J&4NAybC#g}didX)rY#gE*_0pucrK&xkuM`I@q(E-IgR;SJzei(B>Snal$B5a z5M)%vscVX}(3LXMcDIHrSeT$95gEqEvj+zDuF;bGz<&5WIT#=BN#DpT&^9_iQ_zrz zfs=H0gfE|8+uM`3y5`g2^XlSqS6N{P>_oP9PKh%rDr{?lvcpUHyq$GGMfN5;)J%fY zyhlL9T ze$ZwXDFBv2i55~+Uwe*}B&UReD#_Av@TY6c^uk0_ov}!Q zk)0k1HYEyJ6dKNfHW3CZfs%tmn0%@3@-+vjVVJ^%jEs!7ghXTcHzO&tmNEQABN-@K`$9eIBmzH6E%2ect}OObD+YOz7x;_3rn%4t{vNDwmoVm6u;zd(+hu zoUeSTZ}(o`AFJ+sG!_o3_1r&=-in)2H0&cqWdT*i6@4j5tA1H+ctxW&xO2_WsBtv?(VMm zoPHD(kF7QBjXz#>nOU&tHbos=bd3#IfXu05#h&;XPc22abiGR|GQ2sQB1bET9y@vK zKV_(i86zQx>7sXGe;w;xJ;~u*kt~(0wqiI*a&LBgssG8ffT0MxiVU6!2D;PNdm>J!FwO zyZ$`;eFLIp+`il$`U;?#>~2$oGS9;!`!p6DJKye?;wUT`_a?via^IzKJSe0$`K@r1 z#3=JS?&1y;elyu_dpKXym|W=a-g}>AG5^}~@z{5>U@`tWW#l`#I!Z1qn3-MQ()wp6 zIWbL78L}El*WmKd(u@k8_j|BL@#9MvFMm83$VocbAuQ(R`0MG1I{pFcSX(bbh=2G` zHh=Pq6L2A=N;p|gE%~CFM928Go&F0X&hgl&_|yFKw9=)v7}P)y`FFjw!8tAih4Gw< zC_VMzeyo^bnKFG-9@ifv8#f&6(_zydRAg*yY&L>E$>j_L*o8{G@9!n;KBklcxMn+X z35gZ=_vV<;xt~lOsg{^TXzxn8Yq5Tm4aAZnpVtCI3L=rf{|)hT{Z~ zjPP~~l`Hpo$4_N{gw5)7V*jjVa_Hh7Gj(HQtoe$!qvN?`LLTi{;3SpX&jc6P+IMXn;hzaPJXg5_#nbNcrBO{uTn_2zo{q-~k(2xzbw_EA>%;vp#j0JZM zS-7SyxOqT-fZp9g_jx5y6v ztUJMn=wMT79yq}?W+>;!C}upGUhm>1Pzw?W?xS~frcGU%=)IL4FT3L8ad9dWuyG$e zwz^ot8NGQXS~{PoldOWA_FtD~8=!d+CZ;-lz8b|4eRV%JAlEs5ds%&XAZ@;jZ4rKN z`PMS^`}gl0UIC{Xl7cB1BA5|!`kAEUc}!6(T9Vw>KYBW{DPJ605UKnl0yV-hRJqgp z_G>gz;L`o+S0*P5T2k>b@KfUB0T$>ycm%4ouE=~JGd^CB8AN+_7M-CEgn+lYq@`(J zXk*SIqxb&(b0{cO8y!`ep1O2MjAr6a)>H2P28= zM8RqO73svrSpbRqP3+p+TZxGVItZ1nB?S7dNG^?>=F0Z}QMlpleIU?QT-(C|pNK5)eFAEVxX>3{aOmFjew-P?SH zd{0jQ&ZktjJQ_iGy|v!G_a=LxY3sLd>$T20zV$~QR92G+!LEGF#4HXDeiLvjqNdh+ zdr|S}wRGM27c=wV+;6bKxWl9u!RP+tJ_EJTQHqw<%Dvzw*?O)$j-h>Iu2bM^k%x#1?6QMirFW&0Skw zt$^lco>Ra(1LH{OdGV5SWUm7_ha(ekyzk~Tc(uTfS37OOI=Zy;J;SXJyu8kblU3GG zNQ51}J%?-`o7mQdw)bYD+$(rnPk9&FTS_sSyoGJdWJb3$YF<4e%dazF}v5*xMf{!o$xe-3S z&)Tr&f$1CjwR-HxwH6o+`9{S-eJeRvt&Im2>5!)jAK)<@=z#iHj7I0pctn zlb7Ans8-ka_3)w6AK0;3oY=^CZ|&ZEZsSC^{tFAF&p%iEDklU&S)Gr=QxY_k=rILQ z_IKbb!Fr>jtX^THZBMt#Cg#!EHQzZqza<7`w}kt`qrTrJfbSJ2z0jH*)1rf%(BGw-aDLfMpKIty#=tNO=;&f5|a z8Y3gs#l>BXjYBJ~D9}ttpaf_rOUTHJ%FD1J$j}Dzy8X1YEJA+&mUeWctNevyL&mMS zHrPTF8{WXtOmlNvi2z@Nh-`pXfsQsai&nrwBNcZgXqc6$j*sJxF$xmDjRKT%fb~f9 zad~vq;`QO2cz@J0u73xksK1efdxVa5a=OgRAUv!%&1cKVP(9hrq^XNiMK!vg}KrG*YlYb`>cDoR_AAj_s8CSzZYY(UDH~} z?91i(mp$uGOp&Y0?#paGA8@|Sev@n#U*?)q5U0yOl=DDuYI(s{x6On+S5D5@W6dL$ z+WgAxd}M?Bm?Bg8%sVJN#+e{|&ivu$=ASxtdR{&ckJw06Lp2+kimLG0j0{W|KGLE$ z%;?9l|Dn3*`TA-8RD^!@no{Sltan{^QNna>=@fFnct<8!Yl``+C5pTJv2w~J5Y#SZ z91yb}7v)?3O+_VXB%XHOi{QJAwCs18bJMVw(Bm1nY_3{DfU}`vb%e26i0~MQI5FCq zo9PMm*G8*3w%HhNdYKz+quzeIv!x|-fBe&*ucqGdqQgVT#AIavPLg28`~;NxSc8UaBiC5_tJZG`;K`+IwsSRD2fyy^MNHSt1- zk@7vb4BJ8a#PPvFFi1@e&eTakYiptc{5!h3ph!AjYQ~x%w!j7$a?f`;+v#Rol(WzkYK= zZf$+O0f2d%3|4LsbejAZcI2}{d7JaCq4pOvYTDK&y?{yLOvWX9ZD#Zt?om>rl#wtN z9u5HzSd8=Hj{UM{}$zG`27$1Lne_SD(f5kR3zW0fYz7o9_ z$QY975&2oT_e0#>SlKYKHjY?;ww#x8P+cdBh$uF28C*m!*YAQ|Y%s<}2aRhEneN$T= z^BEF5YBSDU5h&P~*FWp)vizMLBRMn(HiWv6V&o7@Bk%p|A>Un`Eqi_k2LxpMgYjnY zJ3iS@^g0%5OXk_o*!KzWSR7Z}-JLCSbJgoK#vp-$yBj&G;)NvG0U@#t7w)s*T2+-z z_}N9OK=f&tm$ZcXmm@J%rw4ifd~MLj;jTFp{Y=lF-Q;#z3H0&}a$oWdfC))!98pss znD@sM<>Sy~DxiGH_H=pUzI@!QCFZtw`*i|r5Pi~9-c0qGeKV+ib_j#?9F6PWw-kcl(eBy^0p)h)&C_%&aCpCiVTwYu z_MOazopS{m^}BRYRFp=N)Z!Q&N6EfRtH&(?fxEuEd`GoTt0=*bm7hEm{1Mvqd`8@_Pn&fh^fPNq-ldmE2>2d|Mq2klUGf zANCzGs?&`zQ+V%SRKoOku2{-2l+7;3^7}ZUmZ$FV)M_wTB7SE~k8VtCCmci;iWeDK zLPkaQ25o3jptAvvv-Kz>s%nd=wOnySn!EHr9=412BSA z${{uaa_bvSbhOHW(VMeN<>*LzijnEi((EWJ>&ZC59Z7wU2v^)sp1u_)=AN=t6^lvF!yp6H}x2b9HUz zV-O+~@nWdEm3Ld+rSbuT(@o^$$hgevPr)Ma& zf*yn|1S{2dOO0Hw{heB9RO?PpHSTh4PYHEl{VN^f&w~Ro2*lp&2pTVW$V!Wy;&0!V zbSk=`p+eGiG+no=^zt-%=;*ffQ;~>%d>`qzHWzJZJS{Z(Vg!IlZlLmzIbGMhw}YUd zL+(~s=LvaQTp4TsKm^yl|FOT??hgZ|d0o!O=u>X9y>fSeN}80EG%!DLy6cV;q%!|2 zReedfBxUQb0KqM=&fZ9-?dbGMn5KTyZ8~ecLf+qJK0WoIr0i(YUUbXKjQ9P~2row& z9Qq{+9nhHyI;ONPd+ur@I7dz8NnSEC)pUC#x!uz>|Eh!7m$5S6@;{WWT8=adrtqSIyb%YGmn&BpxC%@zIA(TWjI~MsPoPw-?M)F%oQGQQC+T+~(FeSsQ{%f7nq5O6-D<-z1 z4?dJZ$lSM%AT~T!%13^bru-TeX50~{r(`!z*>=%oElP3tM~B8ndThqFU!|r!#tMQS zH`m>tj&7F+XelJ|oA(Ek_N~HE=ghQP^>&-LnVE3c*SinrySe<&cgHI1+rF0@NomX; zpYNbZi(GwWyNB#=w+D>RuOrMjfu~(sOmDM#8-mKpbL&E{;>g=r5QskQA5(lB%)O)r zIZK(eWnUK-4-=$*0vbJ&8M|ThW@?6P}Z9+Qpc3~6Xu0 zr3-HQ`JL5vyK68vXMa{=al2oW#nGIUMSw!^PBPxI3lJs1LdXQX-3fcDTGDmZQ!&55 ztam3iG$e<^deK)-(Lq*F4p6h6q?24*+vEUY0Evm|<>ltytkj@M@s!m1{e3LxS2IB1 zKF8~s0q<4W6sFH@&WuQ`=rlWfmX70l9cE5;&p|+}2ty1-oR%8OfHDZJK0N%#Ag`Dr zSeC?5SU58|xg$*@rKYB_BGHkf#ytQj7KZ?lVB+?yUcN0Ng4R)?vB7wC)d^M_)-&F~ z81qbqNm*TjAUSQgl%7;%Pm=H-S5`Q(24Bxg$?_61qPk$J-s$;*B@B!N&~A0igW!bt zfS9hKp(#?*LE*L%+1l6F;fwWGGi^`76m77zjIX;Rb0r$7%-uPe+HP-8?|prq0Ks=W zP03>ep9@eoB!z_BulzZ*u{npjSfbaszTe92EUQ!40qRDd)~(afQ2A^|FHH)!-ZU>j zLN}V(sG*fTdb!Zye|GNN-h3(UPhv1nK|v>7Y>rNg)doqSOc?;UaLS|T>FLc#qy8MM z@hphHJ%b*nn9GzLo0F*hv_1(1ksl}qj!j;8K?V0v9?XXSJ6w7KAd@1X-P5wO`L)b5 zSWU({JZ@t}r;Fk^F!TOwKt-11uo*zOZHo#*{a##>v*gOqyY-fQYIV3f@?rmX5(x3o<}zINUCa69ZugIw$KP6q>D=wUF`>_^g+(QBSg@T= zua30opX9B>`l_iZY6pA4L4tI&;K+pullArb3e(Z)IOR-zFVQj4csL9*3HjjV3u9Yb z3snpfGBO?pq{<=oV0cJc&d$m}wEJ0JnhwR837vWBIbn8jaY=QR^}p9|drh<~#+Z@$ z=p=>&uAjpmhBT3((&QZh9JT30)hi5}nbGTu}_ABa8n59$xcQwCBz ze6oW`yL=sbNdZ32r@$e|#@fW#7^pnGutF{Y36AMm2Zxp2=T-kLAs^91`ZM5gYf4G^ zyHvf#W~TSEHBdt2^pv`!^uTV--RejYj=45GhwoEeQSoIvtUrxOpxY%10cB*qY$TTW z(`P9fca_s7&}#Xn0-EIM&Exbg!zo-i2(ItqS)-=wm)({#4lD$2)=$kfuX7k0IXG!) zJK~?SY5bj3XsE$Mq|tR!=(M5YGNdG$!rwRl^78tssDJfXxv}y4jCmQ-_;|Zqe2$v7 z6@0n;r+aZ(CW(QOvkd*7nHz$> z>u3G?On6+eTsE03pw>ngLeJ2ulM}D~{VUkpe2?KWU8Ub2RS@QaYC1CJR9XIkNVB4&8_08A?lnlU-nMvNtyH@70Z9=rzVfUeH%uh zxcCIm(TMyjzM?($6cPiL3vjaP>)|~-7&M2Ku=n?~d3ou9+r+@&tCF~Zn68)!C4yjC zejNdqI%kt>eZ3>_YJ-LsC)j5gq(s4Yb~)YKKkg5kkB)J8 z$eK&AEIB#(U21Cc@teoz`5_hsZcw|0l)S$g@HXoe+{FS-iGOHLD8F}=f|9awC`@-) z;!MoW9|xn;$IV*^$XiARe&5#^uO0EzI)k0b$wMx?gFrfdhd{SubWdTNiQm%Ft(cLU z`{Qe;e?3r$NVsNSA3YRu^UWi$nYDFtyP=+Nad3`~PrAHc?#32@scCf|dEvOmoBg|I zB@6s;tkq+Wsqq00ZdQkj;}zum6JU5QQ~4wQlaAIZKGl}$7xt3rb}$_SS%M-NEEkua zH3KtKY_mbXk2zC*b<554xFm|hZjYDeEooAGv(KjV0TSqNQjB)|8)DOAd=Q{5OG-<_ zzB?^01`OF}Ky>2!_Td9?8RFyPEBbv7^T0~DI$f6TL49Qu^j%`ugWxrRuRoqoh_O03 z3ewec2$v8m(WH_)8Q?Nq_~oP%b$T#%*?&fUt`ApqM?EG*Q{gwaKU7=-~SkPTJ zGfg8Y4I39T*y^5V^1j4Lkbu6TqlnvL;u5t~36n;0}yPVN{T&gKnVWw)(uSS6$TY{N+&@zx?<1Ewi|#5 zE|=e>I&_01`5+`UF?DuzSBivF#3gb{NL`in?!MsqGZfXofFiLO6*MnRforsj|Me?u zpuX4RjQ~AB_Weol{{A@S_dcj~hXfL7fcJW9z_q@F17S02v)ga=0H0Q;Lnh5Se~BWw z9Nzn)?A+{ZU{G}X3Ju!CJNXD$=bVN2C$v78_ni|gGx;b#VKPFIPVey$qNPz!s8;1leCWa9cD<#0cMI73(-{2}t%m8Di zt_{z9BvcQ4DkJ)YQft+DHd85E_wC0I0f?X*hZaaMCiaGGDcjww>N6gu9GEf?NkjiN)%F4;{N839x&2?MpS>$Y-^0u{F!YE5GuLz1# zUs+%qe~T>ot*>z#I|c=agtmsPgrhCl%!c@^XsJFuF!j}E)Gg<4#f^)6`$mb2yRwl> z2}ElE_#E3?nv0r1V`EhhDXECu-1V1x#(ek!G50rayWv=b>+ACTr+gjvD-zEyA8)5v zGVPPOsfmdQP(XjvHaIHdJ!PfUpS)x@^neon^*9H}|ZV0t#U7BFncUt!^_* ziJHFxCbh|lvwG!nIvJU&zP`JWUo;>|L8#t|3C*^)nsXm=asmE?ZrUjZJiJH=?V`e& zwpzQ~YTXX9n@!})SUv*)v z9SIW?cpn=lC%sT!PE!9B3hbq7wx`GNRGuGTFYC6#zPvJEm$W~_`3qS21Oz}*AQ%)t z7TytqkJ8IFXpyb1tPGllZX)E9|Ir=0bM*PNdlL-z6G-B-w6HLGOfQo3iwcj-V0GCj z5KCj$-RWba499!Bsl*~I741Itzf|{!O>du=Ge;gXQM$3!X36&QT0+~qAyYSNi^`E%N5HV@cx!pcVj(ivq^pw%( z-Y5oB+AEsE<=M&~fJshEOACyi+g;E9bw0=vw}uu;#tr#icH)X^5~am2q?l=BRZg%f zdN>{A&(2cHDyH2pf4zHS((aI}Ly2N@nOJ_lYttn_hR>v--CkVGxxm!i9rgoe`qM%m zBanE327XE{d+9-TWA_JpTPb79n%MMKWYt=zQ>~Vw#{bZCg$+4W=T9q7=`E@v;W?`V z7X`%w%gfBF3i%Vi)f%zkOuz^h;kqEI3ls%Rfq5S6r{Lk>(9zOAu0h71J($YSlaT23 zh@b{tT$n3j#wG7$11A)}1Uy;7_lNm;v639oj!q;O=Mm#(Vd_IJ0(K6QlM|OM68*w~ z>Abuj>=eO47_R-1aSEY=@ChRtYWwC^X6adv2*|MnJc;3i_-mE&3_ay~lQjohN5Kd> zJvm^g6v}-0u!OS$iwg_D#Mf@!6WWarmLPw_uDds>Pg-_-sGnTl?=67!A{IXmh9~3f zH#T!uFtDH;R4>4_chS*#U999<>v%pIL}1z`ny)w9*H-FE|*g@;j4#pY7A-xu~DTYchLgUulerD-kQ&;S_GIF?xC~bGIS33I2j-N^4H^tw+ zlor>4yKZd!k`mB|m%PUQa#MmIk4BQ7s-Bmop`oj8W@n+5o{Rj*>1y@8&dr>K?JzyP z?(V*b&*=&bGt|S~^!0gOR1{}>`)o@;wbl;)E6Eu>Jpw9J6sd&sVgw?j56{>W(6n{x zrfiI^VAc4i&S*L?boaO3{9tSIe9@@w z>O%#T{l`G2pM0)2%Y9Vq)eLx@vkOuk4n-)3Ohcm!m-Vv5_aukQHIJ9UJDws5uG!O! z0e(TF(2)}L4mF&RKEOANl951m3Y}0 zc{2lmDCQIx*jHJ3OuS6d)=CKh4rf$W%<>f!A>7A{5+_AT88gE|x3c7LmET)({7czD zPE<5FtSmVhvt~XLy_BcDrE&VVg($Zl+5Rjpu7hYRgUTOPv3_F&-^^MO@fmUAxSA6i zWOR>!Ga(TY(lHk!>%>ImNJ;}^Y+=uC7eOvATf3?_lWi5tiSWuJZVTNY5lk&F=_F(%HI~G%Gp9L*LSpIZ62-Dk_g8 zVJcDTP*v6MyS&9qd|VGUe9Mdw_lRlHgVKO6Wnfd=A&ESWpv4?TZz|vqg@cO#B*Rx9 z(+mO*DH&gHA$}D1iR#%h)$b&B=EV5L5(&P|`h$}MZ|8R0)oeF>f5<*K_@ciOi8V4? zUI^hsP+v$5$hYA&4ugrm*heeDe&+C{H9Jz;oojCtetQE~6Ul5Wk^O128B5jc_Z;H( z#Nsv>S>*Tm?z!D3cYElEQv30=o6E~9MDIeOq=@oG4hyTk!~{j)+j*5Wj){r+RBZrU z2V|?6g+Jj)r!>El0M(I2V&BPZj3j z0ivKzQ!Kx~hGSQ#CBeq7&*==}8|);bqFP$_32tb>rD@qSwlt?{ShS~-kDY4eZhh73M_;sV_AFlc+n(LZyI!78OO+hX-U# z^}zhQ^E1Mj7&(DXZ$MxL;gV1QjWC zWMphd*4V^`&H1RVS+MNq_s_&pYnky8I;QHQEx4qF49I3TN11=rTlw{o@Ju8%H6MtW z`00u03Y%Lb5qAg%k^!M=9QVXiy--;{&+y7in_5`n3gvDM9$F$g3}eCK;;Ta zO-=nGEiEm)4g3ZD>ivHIS9mB+`D=AI!?GI8zaCrL2lUp(*6YAUP~EwVU|tXiphyBKf^)!g za1!jXt=C4fIM2D2+{!&B(${x~?UviIjn5>W<<}Rzt$VOk; zP#mnME)f+Qaatn5O34w_E8Myh2_FfOoz438KH1oa!7mUH+X=sp84bG6m`NBFSxI>{k(bEYobL2kr_b<`z~6A6bd1O4@oWtAd3PUyrtrbK=vL6}i!X^-1!AAi4#$!D}cY&r3kw z+%&gTSrIrN+H1}C1{hvQPD=QO5 z!ykM;nXmVMK@bpzTNz^$Q#SO@ffwg%Z)DqAoR;cSuLckcKP60EMGU0BRs_kWrKFs* zFPhomuwcLDr6tFxDO(Prsw$cja@$MdgWN1FeLhKvXMbiJZ`j96h=st5BR08hZ3Tf) zT;Um+^*W?vWC9;PiD%$!#(}oLV7x#qOmGZWK2MO)7A0EuNqiZCJvlASE|jYM@;;;8 z^?)Gew3`j5BM@Tmmvrqa&0dR|nNe14zA#7g$UN7Rn*2pcGZz;_G$=Lx$xIDNjOL=T zIRDq(ISoN)RqOM~SV}bpRl^e7M@1Epq$()^ht&fvs?W?Y_({NBP`4%`1ge9rvSI?5 zVtjBC^=EkQ<66Yn*f03G!f(ThJ(y_fes@PIeQFZgU<}**ivmBDjSP9Md%-HoeUr@i z_}Q!4USg!8BV}l5evM2_9G4u-3Xw?lh_HC7sX6PTN-F+ip`z-?|EA~8!*eQIK-N7b z7FL*S{*Sjm;&VseUO>Qy-+L_Yl${;Q2nV+{vN)HhymaYN<+^)OO#(R5ihg*{WL>5E z4J>;YoVaj%EEoRzRa{Cw`6Bg1cS>-XRzhXzkQ#mB`1US(`~Ry!c6Yl-QrNmlPe^At+p_n`LXf&%c*=Elaw z$w@g85fM$&uE%=wSu$?!d{+RPP#4GpEBoU|c3$33p&fms9Ka**2S)M(#_eCjr{(Do zoL)%_Hkt>159`1H5jXc0X?S(9bE-bFuCikb0G^Mt`z8^_?P=)lIt&opz`XzKXVQb} z>K!Sy!I2Hkw$E4dV6`0y2~}FI?6I@?BMfQebN67NDUoqmRqMp8tu3ansp-kt3T@0A z3UX%yg6{9FB?$i%KHmX=)wVB6Aal66ka-%dxiUXJ@ZsV?_qu5hiQlo~}!Z+a=n* zxcyB-yGvM&T54#g%|(0I;$KM>AthM+iZheQu;E|qSs1GY+1aVt+1Y4l3feqRLXi%k zx(~`#YNxY3VvP1bKC--C?*1qlQSH3_BJM*_456#2$X5`W45tyI;5oxbijkF&_+eyJ z(|F&%GgmrhxuDL?!({|pQC?f5_Em6?{L19=^?%PvbpW4BenH<$;b!#d<)sfJCofM3 zm~;1Fc)!WadD_Pnp^6L-s|1r%8H7I-cT~&oSxS)92`4ucWa)=9zERJ zqviUy=#x5XySsHnDwfO5dm}0aO|X}$)-lSPo}H1?Z_fcpO_}owX%jf3!cqT%_?^H_3(>n8CPRAbtJyzBoz9A@38Ab|& z@!7dg@MdLURiK7w#I~HJMC$K?f`|gr8-}ro<9H*WaAm_^w*Eq=tEn+OI(>-2Nnfd| zr`J0$P~VlSqSAkJ^YBWu@6OKAc=j)?5)1()?z@cC+~TbC&4Wb16$AqEK}-J5jbKjW z+f0pXep6tf@+0*ObGC7?-Q@q6y> z^q?S^h}aX9k!j*?ms7}WyQ_%|E)H$K_xlHsV6???#!BmRJ`@%vrU;rJ9<1`3Kx5;I zj0__rOb1zlFkBN9=n?~um5>-)=oyl9IgSdnY0p9(Hf$L2uU0(yPKW0|p>t#;JlOn9 zff!(aSFh5%{w9bh}tDEiKa1^Dr>r>3$3R2Mz+c0p2J!Guzo2mVxSE{llJ~g=j>o zZIph67CDDo7e~h-0kICu!#ziwXve}R6Kiwhf2rnp<;RxnvakqIgEci0S}ohPO-;FN zZR#eJ?fLl?^@(W2d7>q$L&Ij?%fcD-QYaWIY%HJzf`S?3tjvu5O~jv@T&Re!!X{^g zguUMF=D%E=@3(4;lAKV)`d*d9z9!>B7m7OJY?ot!|BkX^w1-xHa@9megWK!#!$VQTCIfz2BT9saR6yy?-5@C)kK>9`8Rr|grQ+SR3Z!8 zpShVC%ufw5u`CIrqoanT)E-U-m~X%qHL`*ZlM2Oed_04Ri6|ms<@vcGF)=d}FWDhk z-YgcUz}Uiq7(eTQbh4;4b?ItbS-13=^_wmpf~*xYmyC@fs&G6SLH6!JC~5lsor5<| z{^uq$73dm3J)|n23It%-`Y{L`ZR5sguf=CZ%6ta`8@eL0W)|^T?Dd_UEwylEVi9P7 zJ|4&dc(_9ZVt8Vr#s@Yr&0E|qyM;S{nIyt^+)ps!%P1uzJ-`DBbQhg2hsG=x zf#uk-f9D&SCbquA04(%T(7of6w}AT&a7gZcJNllywWSgZ zzLaF)LgXNTVb$2saIx9VJOT8T3bHaXsmaNAlfTJlGcI02hm3|VdenmFhr4JdC%smO zc!pQ_zGGuRuIGHWw@*l47U1E@EkD-MSuJZ>a{7KYh3q4xt;YCpUttt&$};RXa?We_ z;fh*u`nQM`1L2E(8pC#KYK?Z+Tcf{RrFwyOCy?YM;Ew7W3+&Py|N3^T>O^>J98A9A zdW0b-VPovRP9PF7sO#xno)a>-w}*!2c6R<@ISYIjYs=(?ib26cW#CFvSL#((nRj%1 zEcwfF+{hpy5H+a3w8-M*RC#-A6%#F&k4wt?cJcN1Lh!&3zt6hd=6FlXlXZ7DVLoev z-sxN<;w=S-GE|FFQ%y(frNXbG=@e+H3toM2Nr@E z$))^KDs>Fmy0gQ|0_sJ_kbQeU<=`M37&PhY&v<^$h6FJY2)^A7z%hlA9FV+GT26Fr zZ(Z-YSsg{Y{gr{ff~|}tpv@$uW5d7G|7MBTn5IhFKm>Rzxh=9HM!zD8Kn7tD<4`Xz z=9_op-1_zR21Dstl>fgSy1cTovb-EPL%~4v^YckbNx+z(qPlt=WJFU8TP9**aXfVb z8T(=|Z;`!!HjY)(;FLxOT3D4T>k&4yu{YCvLoRCjD z+@S#b_K^7F{0PzsgH3vLJEwkPGGq?xfFgp4Y+JN6vT!!%$9+iO=@o=vbUdzaqdKH=Bwcvwx1UoHU_b2w8Amfu622 zHahMH0s8P|w+zPSZ>i>0uGU~ic;g1zuybA~de7lAj|&Lcz>;G2o-aN=kWXLS*RVVl zX=$Hl%4Fo|;ouEHFpl0nr`b7we7r69_c=~+jb@{Vk`Hv-FNk>NJfG}=Z;E`j37E*F znZ7dpdpWIr*bftuai-hWP7q{dvNUELKKzzri->lGla~5rS@~V^;R;q>ns$%?3IRdkC_=^X zkthP#zV!5NOkGpj)1ONcOjwMUf4~L4-XS3h5rlmGYGQ*LEU4U)@EcC~C6&-hU3rZh zJWxc$+sTbtMRkF>Ob#|K8V19$Q-c0%==$e(E0{O9-2CugILvmNx%^fGB#^Cz^)QOd zSWv&g%f{#`&=ZvfYv`c*GBb3XwOt-}Gb6{O_&esOxpA;4vya5}|0j_7cz-2qvTyyN zPdueR|2Q1$=~yW~>bGej*l@t)F*PNEjNIEFHm3;@n3Nf3 zl$vQtDm3)Fn3(Lz$@V>wQCb$qDXMhzJguaZA*ngK3Asus$*N@Ze0{UCm2xQcKHfqN zOu3CQghzu4sKb+PWQB_E@0QQ(0BuIl{7PR};2p&^@fsFc9to+W&Fcvl54Q*v3%`9T zxyVcy3?mJMwj3PsI?2cY%$i`Q*_*RF0&9rKz|^@!{H|PkGJsr=>WZcQc|IEMhOlX> zEoB*PJYGoR=98MlL`O^B#%7-7pL3C}d;0b)%#3otH6jD&?FsyDDaZku&n=M9`?09F zMPURu#qB!P>g&7XQ+b5RY{(Ky6Qs0637~E%5B|BL;Peo(fYl5|HQZ?tqN&eYTc36K zzLQV%rqF--9v(&TKGf*OArtMLuMSt&d^o;73~%~+LHoD(cv*pdhxV`Oue3iNSL@8k zZm+lWw!6l>o?eHw{FQ_i=wwRKch3w8l2uaD_26;zH(&)?b`QJ7IN`Y+L*xSzO+zw3 zU>t<>p`#Q)M_E!f5AJ7c8;}p5l!PGI0S!Y*!{hBfJ(v%_P5w?qYWFUW2=6qrJkZdr zWNvo3td{WdsF-HsVPq|Csp1I@P5lHC_wuB2-O`_bI>(XV@dyE;27Bt$TcA`_*nqwq z`~mJz4YCDRNNa`X8F#@NEH5z7&|XSY!jv;xSj1qoU9bQsh_4*J{=O#uhSgW_ORIJL zXeP1#pMTF=U3lR|9P;N86by{SCA>Eg4R^YR=9uOqs0aBiEmQ>+7hA!r`b(T)yaWXfcWW{DpIK~& z&5SzQP1YVfre|wzZAzy&0BM(qm^XMV+V}O`L|XcIXeb3>EmZx(=Op0*GoaAY{s#ad z3?DDT+{s;iu`yBt-OSwGLZ0~Xpk06_rq*ADSYiN{YY;1h&TuPGH zbW~VTfoy&XtRI=_Nb-O5h>+-;P*xy;)3>(Xv$EdU+J3Z1y@NQ@^Tn%dJacyv5j{nK zW?mN~R!eL3K?NBPAAdLR8AHnS8zm(V&ohb;vLe3x^4tj$l#fpm8QIbH_TuR1UDNXO zSUsz&1#JaiM)E+xtY#ch<6FmTe7-z!J}DWi_GVAK6nq76bxIbOEx{rIE7MpNH8to5 z@Ebr@psz5Kdxd`H@9mPPA_PUV-*B=mK77{Cb98A6gvU zZkzF^FDGmL$T+>jq5K{=(6FKr|2)`6qa-i--V%4?Bbk#Uuw|#HSQQjRO(R3cAw*x< zGdNgXUoXhQqKf0x)I?-ysXa9GWkA0ib4rz*baoa+Qfmd(3Dub_CX{p}pow0nyQU$z zy4EgOKx%VUKulD5Ze+Rm5G{P>CA4u$ZYI1*;pC7ryPP;)?*e}Dy8+>EsPKh+6*@~s3-F|zfzC2Oe0FpC!r9VX{ z<>ksCF7wAR^WrfH@oP&}% zNWrIFtarY~;QVNFzTD_+_Io}5=5(v@`bdr$7=!yK+WnYcc&3*$9tV$5LW+mbmk0}5 ztp)bsA-O5yTk(2DC66;N=r1ZFa>SnoL^9r(pnth|u~D*o+?H1Ot?jqX6jV2|WG^qN z{kdQw+(5Dtg56B=p-DP;{wt1e%@1n=GTS&YvGfrQS^gx>80bDsimT0?G0xMlG z&#wx+pYlbYKd&%thD9_q^c3U&D{-epdjDf7NheWh>FDfcuTD)(`8+4OGQ*W;46m(w zI6B5jQ^W@k!(m=H*{ADi-W_br&v1Vy)9o)U_Wtp7&SrN0^x-woJDKG{OIzgaJ(rag z=X#1Ve|6rRR_DFiaJ*8ZD+M=auF`DV+2nL6K(b}mT>!Sd=_kp~?+7K;EZ$Qzn)KIt z^#PmCOO?wDxOeh#3s7zzH#_d`sNxF;2Qhw!14@tNBo!)>k?F#NgH)Ip#5c{Mp$Fjq zEnHbaC*B_j(bO%p+DkgWm?HC*?2TDk%1TJ^Rv?Y$eHV^ap{!g#V_#C5+8onp*{g$y zWW&a)*(1U&sQ+0K&cmd9iq9}SEZi+KT$TC5XJ{m*>X3w}=0#3w| zHEe9`%QQg!w)6Z9ygrwF1OwycDrEqL$pP^j@gyu~^wbU0<>u;2@WMtYL9IcQr z{3Hn%XzU$X8Shka=89L==*J4+pv8r_hPdu!I07hG+kXR<6)#luR&#shR_zF}nk@)o zsAq?HvzzCumvr=2EE$vePyzmB3gobT@L*`Z=SIUDEn_{YKxXHztb@bo+}vnB+2^>oeGMIj%92S8ygmYdR>v8K5F-PKQ4%N3!I(Z`;gTmGgBMj{K!w$ zh-!=6jOPR3kQ??ayrp}7g5F)^p!0JNJ-tGh)mK;$Ghi%V zSojaC2`5FBbU2l>YF2B>faW&JT%)16rbRNn5FPym0U@{appsOK2#M%TQLa;$Xg0x8 zC|=4;y4X*uc${L6(kzYRyy#}QR__)J5QjnOv|o^BoT)9l2mp*}TYng+H?&+9fJ_sC z&zZg1e2GScFj!vbZ>x#5(;axLAeDcy?uDUFMpi#Jhm*$abh&N=Y?r6zN`}8M?$|8% zaIiY!@Vlogmgv&j*!Z0B@9rj{p#_X_3=BGiqNG9NSz4`*j9cO1z0lI&pz)0l4~g!o zY@O$jG1txoI9po6NJ}Hi(tCkx!X-ROupI0cfX_uEhDOnUi$BBruJx_)umbhpMBIMn za?IZzOX;s3w*t(&3UWg?oy{iHSrV$%%bm zuq9XAAt2_$Z@QY)m!{Csl>>JvD6tTz$X3@(7b0fhR555NC^Wd0iP|QIs7wVAae~Eg zaqxUHsXD85InMtQyd`h2io=t570TPXY5A|w5ZQ>WaRQ4wKsI;DboooNz(44M$YY?` zprV#}^=}&F!Lb$&LH67>Ck&uUn>Zv_6yfgayfe|BjOxD|KOpS+REY+b7{q=MK~G z3OdgV2~x=A*J^XN(AOt%{X)p&Xl!C)l82Y;bIR)dWM3$JJ~JhGR!M!h-w52Ufk7Tq zQ~dBDX(Bdh_>4KcvEnZY;{PPc2+0y$O%9`dt?U(fs(Ir#l#RT1-rg zG^%+4f*2dY2N(*gKgtILctDWZbYXX&A?lF?VvL|8X?@B0svC-Hi+#cUHMub9TS+2|tp4cH$<0IF-oVT_ko+(u9!?8;uXmzh18k(SoVaEEGnWt^Uip^Aw# zVE2q*DYZ6>?#F1~3J(oOqcRQB@ywa^-ZGdSI4rt4b!Ls0l2W;sT6h`evQE1Y7LtYTN4`DMoLjD>Zc~4?SeC1dC*e<|22!QnY7t zrl5aoHL`2(IE6k?s16l<6kffd0b@1ILPu5WdB}!>Y)2k@HWvE*@!`N}W+dFqh}`nO zR$ft56rxPAAE2#NSHCw;uPy3ot2)z>i=mc}GSccYIMz-94W(ks`bvpp`IgVyTfwUT ztz8tw{D<$M{052;KO0A*3G1Q0A0U{V{o}n4pZVDBo0CTaLjvS6D)kAN!j0H28|)4x zji(XQ(&MWr%>v8puLk5({N7tVPOK}#i;L5vqd{jUlfNo3;2{?#r|o9u*{I2O2E$pv zk)WaFxSExPx?Q&esHjLIBYABg3*M}aw6#+Mm*19`l?4Q3mkUcx)3YbO%S%ilDk*t) zyZP(?AgE$nr!lFi>FNsrf?N_!55BA;=8Ld>)R3YO8}^4Hk~fD*2iom8v$4BYyYX@)p{(6iH;3Ef!xCI#hv#{ZO`O@The{wjT_juX_AtV9> zH0kcW;Oi) zwC;X|`s1U?xbkRyOC^PNg>R>t@w-QmeRcLLLpPi_@q)nDpdz{_d)1B%cDmnPZ=Q82mD+q&{ z?Gpr!tltaC?~&=iI@A9xTym#RQB196@RQf{To@n!d14|n=*Jh({c10qnVR~)J?N285lKTz1OB+Tqx6gK*Ki%R;kwE_ z4D40-thn}ev;b@dxr(A98Hz=A1Qk%00toMN(Cww#y`848Sg2E&o#BV)01DWzm)V`3F9$s#2}70;`H^+$YTMXH8uftlU-jMl29 zBb=1fxSy(QlMGT&#`66CDp=oKFMGabwuC(jPZj{##@xhA1RFIze0Q$!hYIlSx%c|^ zV;d#S*#ExbP{qR$C6*Kr#9v!Au#bx_zW(cOzurg=BApNgBFeOOvhm+_kGCXK9*_HX zzJDGFH*ldVEA`jZ=Rb@RTM%1h^-0TcF*8H{`UOixg~i#!e&>EVSBN%bQ|Y0rOX$GF zh1+7ky$uTs`yX(00JE*Azp*mf7ojLkjENR8&ZDJ$8<<8N6ZH3w3qQ#w>js`w7;p#Q z4emq^a(ec}3Ye;bC<#AA!p63E6ZmQ!wQalCfx7YNP{SO}j^2r-+Q6Z?Y(vy)9(gc#-iw z^l3i^CNw;pqQIWh5hmvSy_1%sBm7uj2n5mtg9m+uu$N{?c(}cm7J5MfDv>At3FI6s z3PiGGL_mO`yc0_m`1DC{hsC@g694l@W9?t0%eP+i>YX=9*I`qWBMJ(t_!QcZNrH+K zK%%7_sx;pqE)0>M``+fsNn#h}kYBiWp zlYtSukKMHfJaj7Ap?Tnd2@Rd1&C1n5MJE&S1D0TEJ~IS4E*7)1t7$BztbvH=4p_>a z8>2>xC2%D~7VJj&FTuk^7A-W2RODn++di!>E)FtV%rMw>dU-t;b{BL8Qu&Szk=Oyz ze~#o38~Hy~MC!kkiqG$W@#YjEQ=(*ED&N==<$twU)ZCMkA}BxU#RzI@hS(^Ql36#m zdIE!ohg%AsM-?(0s6Bf{D%b)AF^Kae!M5^*iczPhKa!G`GH}|?7T<+ksq*=^{9c`I zN@aSOFhiz1gdzQ$>wO;p?Azwg7L!-CRX{5T|k2GE2dk`7B)wT<$b7`|c23r$% zErOuzVU5A~K#&aZ5OdDO_EG`0N-V6EN->P{$6-ZIFu2-Uy@qEQAD{7|$S{vRjI6>! z;J|@(MyOqv)}^zKh7Ri_f^x>6@v*JW*-DHuH$T5Vw)Wyz7g03?nDX$6R<3Q$?6&#wF>=`=9b7!1VUVI1f`IuCYzC#%_Ww9y_Br`g$Cld0tJmQ?I4f+NGjpt6Ng6|&gc zLS#0p{+;`CE9?qzR#aCrG2vMBCP1!8aCw~c-hS>_*<0)nA|SqWxvaCJ1h1hV&ylu= zc<(*M3t(u->$SV>>uN}>zB=x+)0BG)I>&ySQ~!FHagHl4+bfPj08ulrgj z1%jPd=gYoyhuF{B(h^q{O}X-6a}!Sx*u|3YlHo1J4pt7n@-{UlG*(ya?geL`f{rrIPladESvaWk9@FS2F?~fr@<`k{1E6B*vgKuDAN=e@ z1)p!|2$H&?{|BP~@hov>FcPm}VTt(vA5YtcFO(7GWX3I@Z!x&e{5PFOotulhu9CVUx8LDgvVz~q4e|Z^jX8*0!Tavh zTEliQwD;sBeyc6d>RP+u(L_E-F$t*T*jE4g|(P1+dz>yqI)x zguTZ8-ma&lSjx;+_&#|vUk`!hF7dY{vgm8)G*!ipg`x#?0cB|0Ln;9)eD(-<0Y513RyBLZ-TgR2LVA@>uJ5pJWC zwG-2380k}&SJ7i*ok$IUsA_F$35|?C^ps?+#a_BBe6Q7MwCAr8~-IGsfc3*N&RGh zIKPiN&+3H2)@ak27UC9)E>L7wq1j1j%P;>OuG39LU4Of$d8^^1C?Zl=$u;LkDnlLP zbc^&Cz&nI`%gE^+eC`#bw;_|~M1IG_%^)L~T>o8_@d}}x$vHpknA=`-1EmiG1M~|F zZ3Y4kg5&-0<@G=Pk8;xuzV;VNui>#V(iuoGg0y|CAH9M9F!&a9)$OW5DqT?lgj67G z)o%_qHZc9|CDEm&f;%{>|ln6*YWWU1_#6G>#w3^e&FNJ2f?`a6jdo^`tLt# zy6S*Yba)7-MxRJMBO|!j5w`zwjVvui>IM~NCTGMWZ7m<7qRPskEX6W0oaY7>@cfGx zl9U@D?(FvdG1_f^{F5N|Cry5ywb;8lu(mQ|SB40Q?kTEj?Q9Lik`8|#E;UV#1;VZq zc4u-ft^#DF5m%E%Nm^|wa!d2`ccgnHAbM&S^3#5}g%RaLL%_JB`FrlBrnEHlGwP-X z4WTSNw7NcaDzE3GvRwc3DBXI;_nEryV(4z09J-5VqwcA>?YXt($Hw1!z3x_bdwWB} z!-IS5dSdR4EkDP{bN88?4v40meX-J`=Ldao+#Sc&Dlwh`s8PtWfFk@JO15Msz>ehowrHriX{elUy|s zd9F?jP!b;#dl7aj6(+$b$};fb|1iL`m|5vdj~Y@t`fpl}rNG>}T6cl0juHLv z0tp7t#M@oFn<1B|^LgL;p3ZxJ2*wh_>5mD?*Yj0Csr#I$+Bl1oAJhm{S0}FEJiWf# zU^2iYM1P+1@c)HmSE$$t-9%45By>9N;AA_-{z!$G_r@59X(RvE6HKD1=nx?dYoznO z*Lg7NjgLPJAU1&>&ROS5lfA)ghjS0%Rc?<)UBIJ@zJODESA}G^(-AfwH1cB(=lYgs zPcirpev;ikzEOPMf>8S3ccab@#D50r^j0}+I8RO_c>D-zqx1NxH>G41BvAcJOMwY< zNSiAh9EB>a^#BARUG*6|`;4}BG8y?1J3G*jc}u3&(b6eyn4FoB(O4auVc?_`n=#uN zV?Vei%1jG`yAc;18yuLk_25(vva@r-#vT$P&YvojGBM>-Q&Dj?M6y*31-^Q}K!u)F zG575Y>+8QyZGx(K_Td&5m$}A%HA&^m*4O-Gc3}Fig_k8NH`!X;}bla5PoA57)uyHy zvScF5L4RcmpW#jU5s@MRa1b!K&yNqRpPCM6s-q(FfWrK`au9*0U+5oCt!6{jyVq<( zF#!AbbG=+U0^G)5v*3EUs|f^`e>NadE_=LMPP`QC>`XN^2bP<#>+(6b{0h4c;Eaxd zVeK^`Zw04g(euNZzTo!t*2IQv?`Ieoz#kZR2Siip;YdFWFKOupjS~8PaL{c)`o&SO4UOU^X7Veo8hqI{fo7o!W8;>KVE18v~ z{Iva>Wx#am)Sfu+f}K8gX+t_wK5B+-Sgx4hH-{@q)*(s;4f`V%1WrelF*=^H-;OoT zP2QvviXmQtZCPeC2DcbcJSLN)M8j69>T7Do#4AWklZ!ZMY9fO{R9F3e{t-xRGpFYn zyAZ}*`8$ldV(-GjI-Zy#FDC4Q&#gu!H+W4xr~TR``;C>V_Jmh@8zX&5V(}AO0D8^fa`{|f>i>%g$AJ{2o85L}=_UXe zzvHr+t!-??5esYsszqQTzqPd`;$OABy$x77J8NpD=H?tO*BY3PJdRQ|Hvax4jyobJ z%#C~&h8=iZQvhz=mydnxRWI(k2mQ_x%@(WLygZ<>OZf5bqhRko+hX0rN2uZbm+?vW z!pCTPkt7l6if8MuTj9TfR26DapQwEQuYd6Z2`k`K`dvPc3!xVQ16O}Bcl@elc>wm4 z@F6^74Vb#RMlm5V&MzzLh_cR=dnd5>9%#s6`3xrJAC<0~oVMQH0(0)aeoYVx(*B3- z0bPU)1Jl;fkm~!Nr_#0Jl#mTGvlEMlA`#)Dtk=c~71cyTsDugf5K07?9$!!45mALO zx{68$@8%;D+;Y?@0COPD^>r{s2u;J<87cG10w-spNx{M!g)vVwm8I0uqO8GS@wH$^ zPxUDktZ!G^rfaE6jnAoJf|HR(fgU#E5+cbIhuY!{4KF|VPeJWpThmD@NAX8d>_QeT zYO+>BHXSfhsIJAldu!Z!dnx$tsi_H^tgWoEsj4Qw^%oj>DgJ_OQ%i-YZ!YXi&@fQ^ zFYn>T)yW08Ydp_Yp9PVEt~OjkYeB%~>-hd? zI}WKC1`gx>Aig(_$QJnFK|R-=+;4{A`S?cT-F445TAY!iQ$h1<0cd=p`BdqoYpR?{ zY$U*VrtPul1O&o!D~oeXK(@cl_q%6*lsHj!2o)DZ!lR@Nin2RszNRe9q9%D|Wz4Wy zN`?*@PTH^m#JsiuLI~N&5A=OkD7A9AiV2ize;|~zls!055yp#&yYoM)G{TVxX?d(l zAn&GDca3dj!Rgsqoa`?+$0P&C-PI0UIlm0|?s=H1ta>jK@1b>CZE(N#>CMcXWF~2$ z!y(Kl64OsiOjEJYf@Vzp_~|02k0aizLdK$t;GMfIDPLZ#;|4(qVR1sZRz$7$hWrzZMuud{ryIxhKjh+dene~m^g-9CLub;wxVubgd24O z>CKeVWCv@3xlVwVo-g4fn z-4&6p*PWGJeM1#3pB4$Ob-Zlz1TU|z@ukfX(6fMLf=cUKMx z$}FxfuJYTSvX6|E!BK@Z`rBZ7F&y2Kn+qqnHyllJ?S)MI6+J!kdfoL2oUksQuF4q< z&O4mGoV>knx;utXwfT$C?^YP0c{V@5z)3Itg%+v*~uF78g8dk?xHa zVYqw9%C&}Sk1#Tquaz_f(Yz6!d0=gC41Ul~rPjS}Jxlt1{(&Bdt(u zz$9hXh3EeH`FPk!Vc|Rz9Xea-D-?&8G2Cf|>ePR#x;ooQ_0(`;?TrVh_M7%|lS16nejWV=;C( zp{C>%9Z1hE$K_3$Gw64&c|YDil81Np^aL9hsRSh1+Dbwa32f_YtnTma5fY$yc>Qh7 zYcj9bz2@@m#6Bc~krLc)k;y%ob@P4JL+-4mZktD#ZVBWu}|>u2b@jlH<;Ot2{Tx; z8y>bsEa~ZflofABhxay7x1cca8uN=FJ05JXu-`$@`77Zd=3@BlHaC}`kR^J0LH^4i z;0Zd@@2e<_%1MH;jlH&pt2iV-hq7Eb+lh`2PNzL{+EZ&k27yg32o~7|gj=ty_#kcv z(M-rUN%4AjHwyjE)V$dDq!UeFuQuiqAp}DF-Aq_hn~v^Bq_`RdEnFkK9F@XIJtjMw z5mHcOC>p523N4w5G8rDGy;bOVwjc@JfqLRPzE3-4=`4TOX>g0c<#w!hlc{ zcY0sAsOG=a*gG{lYQ0H2!o+xmh8Qr-%j18qZDZ*7KzP~n6KDF-s{^H?9!^VEDw_gLCA?xP(Kr;UH?99^2 zYCuLGC>~9wGk&l7J1?JG!0}wkrx>Cuj7jey6hhc95&JlFweIEd{^r&7ek@&a13o5Yioyn+n;(TGoa9n`j`CfNI&>@Nl0$m zb}$5dcA7j@W}mKlyq}-0cj75Xai-FQgzUE97}F0T%$Nd55L5zs6Htg^)n`nKZlMzb znNkAh23wLB0CpB(wWZxPkbe#EPg_#OB>+KzP>aYl@$p54C@xMVHEU@Jp+$C9PMX@- zm>FBcF`aem`XrMsfTRCe>j1j**Mn>HmsfHelF-Os{vf)d;JP@tmgYllZYLfdPkDLn zSTl1zwIS?PbCcGk|Ik5rnG_!b1JT^;H}2H~@TNj{v54YgM1KSu8N>4R2(mV@%~^YT z-n*n#bhl%^A!u2l5F$u`F*vhO4BUI2dfciSgOggI6>!4S*G2$LAIXYJpms(`|D$qt zh9N#8pKHms4KmHCRjj(;n z2_5tyRt!a2Bm~Zb*{t9ba??{IK%O-M0s(2Fzn&(gDR^DOeX9R?$Df!;x5X;;Jdsi+ zt&g0Dh)AS+`F{>zJw))vy9{RI3e|JqW$@jVIdwCCP7~7uG-#$j(tZ(r_iwmr)VnW01~b&HG!wKwejR~T0;6M;FJzg0dmQRhXz)poRg)k zq(NO-NqP&veyJ`YA#Or3J50H>;dQPT8IS?24Gkc_vffBG2`93 z8o0R~i`FLKO1d}^xolh6X+-`p-I~nLL*y9a3C%TbdJ)4w?lSKm>gbMj#&xo zHtOGFZDiaC61$DPJsa%gxR5>QVr9duG&g+=3QXZM81){?>Frzt zXy`csuZ!eeFSdb(o)%;%B`_Ej(e+Z``y|x`l6d!($YGh-s2Qd(0wG=0+g}0DN38nW zt+g7%{h3X9J!;=r|9+@Inf;@ouLhC|5HrWem`^va7Pb@tzU6m9#Gp1WA4+Pdr6NFu*Z&c&W5MU3H6#EB z3&IIurl*9ARpsZO&&op2$yF+w+tlqSHg*scMA$`(J9L=)4Uz1EvzU~e3Ttk`hPsV7 zbj?hGo_)t|WTJ}NZLUioKvBZUtvP?Tq)#?fp!+}f0!LHSk9)Urer8juCBKQKUtJ*ENC7dsT&(Z zeQ*O14w%_QSxluhbw$yHQM2{X^TZJoLAxNpgw+S+3OJ6AP;cu%G&9tdDl4i5cPc6p z+F(o}a49u2^8y6|LTcQ8Opfh(cuF1Y3)|TE(9_RrgS*US;d%P;3zbhsMU}cDqL0IQ zEl}l^Xn`c59~N>$J38s*RQk>4$*{Z<{8y=#m6^*kRN8h~>U&P$^J`w=+pEQCfdvq6 zR9T%n|AW84|5Cy`OFc3$!l=`3c~uWbQVgxLyJqr2@c;4|#AReUE!0I-JJ~(Kn2=h) zQlU|@!r}}F*3;7~U(yC#xpM?V@P)uhF+LGd{u-XK8^EBPUtRIBL4UV=x?A(_mr1um z^^VZHO48CV4Gi3yIf{tjFdMHl^t^+b_q8NbqkeUEV&vvVUE4wCj3DCw`LjLm_|gX| z122=J{cF;mW_qIoo=3 zpr9bR?cc@12(deJVVi)2Dhfo3>92^2tp(VIiz_P%vJ^!{6ij77q2a5W!xhjvJl=|- zz;h3=^n@Abrt?FpZNIAExk=>A!p}*N-)CjK)K)!dEe45u8fBON&C}~WqutI zCcs(B!&|1NMmsh}iHeP%beDWSJ(aSFHAi@PF?oZhU|12wEHrdZWAp0uK~Y$h(W27o zp`mthC9PpSBsqC=Tqud?F9BN2Z%vJ@C{miEJ7JMQG_ni`m!CFgXQHwQAFDsjPjH~2 znUlG;mYT^Jki^=A-47iiSW>`*A(ET!oqjm!qy~N1)E(x3Jq`u-z4?@5H5VxL)B3#VJpIS`Q83fb<*b3|wf13-ef8FBe0Juke3ql-oEN5bjc;G4 z^||scoLI7xXmlnUY4c>uNZFvwS!QO|)?BVNhaH29j{Z;4O=GIx6=Pz)-)8H7;B#0t zm02PmR;2w_@8|2A-tRv^BB{6-93?F?lWVA4o4FgXOy3#!J}&FJE|(2CK`ZSKQLQ=h_Bd%!9k4MCF0q^zu{pM?{LJ{$~sZ)Hml2UTg(r05Et+FXJ5 zKR|saAr8k3vG;AXsfH9p+uYJ30qHXix$vUc856S(QXLnkB)~E)0AlL-@1M%2Q89#S zOU=(CFmKX;_(9m;ZSG9$PfW~_psxr;Q&Y0yr4tJa5m6GQN|6xPE$sAEqE=19a^r*vy;_!&?pG?7*j+?xO20aXDnprCgmlf3I z8EB-ZB*2tYk#mc0j|zd6P(9GH>&UxJd*Rtu75*Yj&cs4NF|w7Lv%nl5w`gH!My;*G z!YUi4UNJKPC&MK6^Vq*~*M?4z+ya0e)z;zn0;o|DV$p5gPa8Wx)GMD4o4%s8S=zwc z_KIWYTIcz!^#r@;ej;l55itn(;OqT5-@7Z3Nvq*@*xejYw&iSkPNV0!sar*?5H{qH z9N3#JC4QTd%m~g`qzQ*^Qh;(m5o{Hz)$4Mz%^*;1alKgS|Hatzuz)gZv(bDumB|`E zpxJN2l4>lbG~W9pu5FRg5GiHcv@2g16wj~eeWW})ey|n()xG_svHEz?1JZwev2{N> zkFcmmzsTP_osI0%e$02M^l=pDzO!|IH>%@yrF{8!6$t%r4~Bc!>tAwvRlHx+V>+ME z^1n$oSfI}RPM+i&Gb~^u1OrV96cZ!aSFWwSay)br3C^iW3KlC$8K#Ym{GqOf6A}m) zM%TRti8nVXV`!VZw@Z>;V*ks=2H9)wFON3nmSE|yg!qJ^p)reTv*L=L0*tY(EqE0Z z2~&FlY8+|APX>nn0Lr^8x5M0^NE2hbcZ%<4R%K z1_p|lScoQBm8Fx@y@UHRde|@tOpsi57`T1NtEuT!w>Xwo&YzN!GUX&ZO|+9?Q_fV= zAvSh%a{r%x%3i&T&;&O0yZ5wNkegnXet|60#80dvGZRu$j&^o-W@Zq$$2T0NaHv>N zR0>jwAi0I)PMj8A&(~d($9!Bvkf{Um(GlIDo|TFeTb+-$k?2t(;oQ%cmgS3?H-Fw= zM~Us_We*8Bfzza??(JJv)xdD64Br6OxZbl+Y_tLduFmQluPh9IP3Yhf*9&T>lLOQH zY1}jP`+q3G{QUe_SXd%mzQ70%e$5Y;cWk%1xnG=T-D+zZeCo@Hqo~EX@%1Dpz zPhwz$2;gJA9S?VB1?cqs_3rwiqtXqoKR^C$fB1OH%IYaA8_OeUy9Ld|Ys`W^fgk$<-jNH8Uf!o^Dy5#dQ~N`-}$s@hXM zk}*(K4!{Ll0EZqNWbeSl+(5&i?}|X5VO3Zg+dCj~JmK1gSEmrZgcYoGycf7nD0te@ zIUy&PxWPyRl6>!x)YzDD+rGB;aNG^o48i0|n}saYR#9V9X+bk)gIZR^TO#@+Jpr`> z0ajaC!7gGF?KmyUDGE;o?#yZneE7F0_0lTpnrlagdI;8q;~qK-H>x8O1Cp&SkaQd^ zASlVazAokGheD@f6BT6}8ot{OCpTh0p%AE;N{42kM8x6GdEuOSr}~j;QhbBgp$89k ze>MUUV9;KG<#m@|We#+$fse;@2E8}nt;oZ}1B@bVH`^UgIebbuE1YO?z(OB>JAi`+ zzlm?_bwG3m=#v~e`einmcg=qKLf$Dd8z1X>sHdXW6k<^Jvam7ndbgeogl?l#cLFQ& zKlVGA930P-jCH!t;|e1qD*WFzH^*`U^?v_?MWDOm6(b)z^Vr*j&v*N7s>w`z9rXoR;Fj&E5HTeH_*3P;64^$xQFw3<5G-82nx zvC-|?8UNFG6`JeM`=hw%)w%~co_@2LEa+K=%fjox>fAE?7R^D1^DX8WLy*1*Z|_ z@Na3TIP+>vZMa-&#&+{oX6rOY!{e)Jh(b73NO=3t<9=3eG{A!ft=+>b)+w2p$f_iZ zswoE4{2+;oc!7pHEBsY?2P?(g&{han&coe5#l_Etkz$yH2hro3@;B(~>#O)Teo-Zu zS-E`98eYsfi*+on%I^6{Y-Fu@X~f#4EOEXIN+hRoP%wC5r4$5Y;RG4rno`@#?CZaj z#qDiwF8l-P*}co1Vj^oPR`|O{GG`>Qw2bUEBPWK61pt0Wgw<;@!GKCMtL4W2AjEMsn{%w&R zF=pshMVca3B@;CVHSy~F8t$YwfLR&8DJRi3wPqKx)-a#VQtgGD(`&veWXZY~(%u|*N7 zJPlyAYir>OAseTqE(6I1SEMM>`=#a@e4%S8DKrM`-m-{fFBt*^*g`BW+2>47B?S@i z;Wgy365tb-PrB3JwjezQ&*eHbmK>Qjh82ki1+%{^ zN{TBrl+-D$&n_&y97a{p{HF%-GFTbcr>s0jWF#KO`{PF*Q5Xk2XXRPTV=OQLke8pi zjqn#FnTp$;F(D_{;o%V^?N)Gtqb8>t?dt=1Af^iiccxB(qw2Nbe2hPqGKn^yvav;t zm%O$^nJ<7_#+Lkd4^O<3@JbrC(?*k$8@#SVKH4A7Z)aq9@VKni^!vB!%3@6&cywfJ zZ`YRJ!N>v0M8DgOdJf>27|P?`;x{L%V(z?~Zrg=rB{!WeK=*awcfTb#?Qb$y`dI2z z=uMv>N*CY!5c3{vCye z(s-9dMmkwC^ARH2@bjl$UweWGWwc6&mG-xf!o<%^)-%!`mzSyc?LyV7IVK>0S=(9( z&+F4-v^E#~Vj@NLoauwqS5cBnunS)+(YR-l~i0ij`9CKs>-Y#Zi z>HzxqHaD(_%#^Ja@K8U<($m*^EAe06Y0cIc_}^yR&;DurNLFXQ8%myy8e;ia%4TE` z3)t*>KER~gH4a%kBleHzE`!s#+zxH^Xm9{|(i=YHjIWVv>HdZqwdzhS;6Z7%QLCh&NIVN=2<-TQw)~KvBGC3J= zlFI$KydNOTtHO$}O5qyOR>O>9vbGS66jh~x_;Tt%)Y4kMgFSnN99G78c1Yt`fCv>E zltx7-3Itf~1TGh+K=1BfCX<=mfN!m%r&>3-S#gl1(CzBpc9Zmc?Ys$(N9bEe-rzt-pH2&=gWOVfzZu8A1s0>e|enqaVn$aK?8+=5QP}!#P1(~3`)Y5>lzWx z^xg1jfJc5sTwH*wqr;PW@DNA13KDd&dV?8N z(quk;#_OZ$xIZ-SOZd07Ww41_!ENyBdTWcvy(s4+fI7z{J4UrGK4xmTL3d38V}}}j z=Jq{p(nfHaN-XJ= zUTJgKph1nAcQnZf%b1M)C5{Bg?*&tvCrw__EKb{LAk+zOL~g-0C8QXdsA4Nl>Onm{ zGb8W21>%VEJ{W+D4{&3K(WxgM9!-r$$&jq9j;m9VB5#o?e*RRvEbQPSh#|WhuK2AX z1$)ZdOa?~~;*5!>jgKAv0Pue%2%@}$B}0hLE^q_u?5N(}CdP4du7^aMdoxm(5&Wwh z73Y`Oyd{y${$IR&=TfUfGYlAY-x=1Go2SvMI65p}c90JPe;5!pf9VGHXHTe`Xns^P>=XTo7F7kpUGHkEmj>xxWAxo;LkNeG|6XFW>Obs%2%=mbeogAM(X!iJju5}h zkq!y{7752782~0u>p{UvJ+J}T0m$NbzilvzW85qak>pFa#}3nyifWn;PSOF)kX+c| z2{u-gw2TfNZA2r>;Xy%C2el96LiO-ET8I@iH(TCS{TfMR`#EBQ?P$_)nI|EPzh{diusqh*rY$X+LoH?H{{;I3(Wb@(!O`UFW23K73*HI_0O z==1cn-kz@mH{N4eAv4kq=|Duea?oKB&EEO>!QNheMg~>#*hEycadGizoR}-IwDi#Y z{J7jEi=}Z>O<5g32eKs`9v?T`&%-c$1bRl^pn}CCD*{odL6!oP5%mPz{(hz>tOrb0 zywKe(vBISZX)`NYA|7?&LdgfJN*^IuXXkCtEtow8w>Fv)~7W>5b{G? zU*B09k3J*|jX+tbJe`$1KM6&|fag0)<4VeCWF}pI``?5UN^ppz&;FS?pdxPNd%slK z$G0vC5IB>(MA$|N7Nd-Jk_X-gm>3ht!Rt|p2L)b{Q4&6ZOH)%HdHP`S0{jizMqPKZMrdRWZ#I4 zxq*q3f|iyy4O3?zhNf_V>_B*Mh$%cWo_dV(8gQ$W@LgOqSXx;`;NemDD5(_7P8rsd^V(DPscp~U}N?uZ@y;G^gCdjRY1#Qu+~+v@j^H(Fc! zcP|x|Xgz(c#Ty{Ei(&UM9DcFH1>@H9Inj0V^ydlB3G4H56iIcoh!KsPIZ;hnIKZcP zJ}E$2P!K1OmNoF-F@e!7eZr3om$2YP~;ZNo|4aAL@O2>3X7FFngyBk$^Pa+XCOpumlLCahMN@N$$ z-bpx?7-%#J>|TngNr6#_t1D~+&APCe4;bi4TZLpw{%l3`|goo9YZ>INp zzgBHn+iZ1K{3?Fdt&H{)?)dO{kY+5o$W1%;+Pr@*F5C0SWv?JIf+FSdZ#nMa`J}2< zd+i5zkZ&JVd;7%<^N6j^2;-u5r+NP$Ys`W4ZU06_f?6I-EdU!-E zQ*ft@tgmqldj^~mIToD0oeN^l=c=W>e92k_#0KyV2X|v$RYpMs<1kJd5h!g@9h;qv zjbRTDU`oLW6&0#fjs2$Ql1Qy1qfLRqv9XOys^-QA%)VU0YKZ0FDjma{RVN_nlcDIj z85tE{hMJn1y?H43_|<-W+dbaFK|uxOfVH9$+u2iaL+@L;>d{{8h*Xe<_BfFfk6s;Vj!z|$D~$(cO? zN;czDQh@wiZ!Ok^}`vJ>>FwI?XwU=-BzqZ*@YH7->D% z_mUw2i3Hk-d@kpsvBZ;OMjW5`gR{^V@XOBw3q9AZ)Ws98uRjItUTX8}uUE%;96O?~ z4pC89{&!l>El<_{`P~1eSSy4r#Kp@LNnBkK0p_c>EFzmphBJ_v_Z1H#p`y|!6S`1l z!h#L8*!|T+S+ZII8;qKtG*G?>zceZ(F)DaTUo4BMEOnb@LRQ!;CVBfRD0oN-_?C|z z0m`PjI(uhl@_11&#;GY%A+oUl;S{*oH`T_*|=sHcTxlR55Vy?+P&?&so9I<4IlMws*j-8(0Ov*%wM%TiJ(y z!&?E5TW<%P2Z+Ze0nslhR9!P8=0EwlxxP)(1hjFxyqNBG@Mgdj+87vY`2J+;bHn#K z{Veq7%Zul9*gW5ti;Bwf(+h*C{rwr7Z!LgO~@FQX^14EvcmYSoZMI15V*5&Ex_5S|V z@o|1Gy>SCxPEOFk0E^&k;{5Z(i;z>HS{Qpo0(e1lr4-lziXmLv?Mz=kj9E-e3t~r` zWNmE)1_#@O*XJ=;zPXtwLUxx=IN60U}zm0-knS3sxp@W_uWGby3w`qnR*NjO?ml9C41KT)I zP=w}&#en;EF1SyKN(B#p(nK7Pj3`+?e3)RJ6BsTp&#~Tf5f~Ws&KX*%$=BgF&P-Zg(F1hxvgwzgb-F40{6 zcWf*#yE+;=IU%dKc%f=lj|0FbXxmUwuhWHP-2=F>!5_F02pk-3*VlG9%1}Kxe0+R& zpI3j|s;>oLuK0cacTmJ%rWrrpKgYtskVQlqe|qWw6=GxzD9DhuHe_j1RyH{tVX7|# zb;YpZ;+ktq+TXwPJo&xuIcE>kY^blS8^x>Y$r}`-aQle(yCqj$gBk)!eU)vC2pV@! zmcuwigx_CLknKYGr9@s;{n&UUmBX{9LU!sQ(%Olox;3*ZbqU9S_7s zLLaKRS^c&D?7wTI%_dFbyp3fx<$oN+I|mH#dCv@d#!M0T ze;2gv=<`^&vV4lM_8ytVG5m6Q13GI*%9SkoF^7gCpNL3LTz7??Ae?VRRF7I(G$SZK z8R}4wC6wmRq{ff#U_%QZ@Gmq9*|?wL`bJ<72jMWH6_?F%IP7?1Dhdb%vn?#Fygc6_ z5{{1PG86ClHN0Q)O*S@|t@3qU(ZY8a^t&z0%$^RD6$U?3d_kPjKgfUk?M?^{$ky_$wcpoK$% zYJn+7zAcx<28U{*A;^RK1ifBeHFs8KU066|$z;hy5Rxnnk);@ceK9Fo84=f)mM+W8 z6cZAXv(a6+a=h&|otdd~zs7qb0iKCL!SG|s!Qi(2FpdrY!RS_`=XLm?TG( z^SFPHB*%T({NLkasK9a{(yex<%NcdPPou-0aQg!2uZxvh6$3}32F;fiCg#u8_`)iq zc$PYfhU>qW6c&kN#QD`x%s`a1pR&qvA)B#x)A6aMs8;Uo^+bSzveb!lT_R2wj1$QF znQ*1!W1|Oiak|xnl|aU7qZKNnfqgmHvHgxgD0!)>Liutq6jN6IoEE3X#@3jF2O{Q+ zKYs=UBz=6~eBX(pLRH_TDMD(&+mZjcu!AcWkR;JDsFs zJ007$ZKq?~9ot67wt2tbLDj7~|EhZ)Zk?BV_tWAPgifgIqi3wG~ok`AZ zh?3sD%gal%f6(4cYaj2*$;q7it)Zdyw2g&{4W+4^G>FN#%Y_AK17ro6r>C~|wFM%h zeeYhKwhStA4diH*(5TSbgMWg~^Wdy1AaHT1Uqc3I2}q~6P?p7Dl1&8*UKm2`{&Zn- zg(LS#x-D~a<%($XrcDx&0Q#E?08YZi)wRO$I+}BfOSBo#q3EydZf}1D<^ll~pTpYE zk;iI@4jdfZ&dx4P1o@Q`(BR>mNYBp7dgbr-e6oGE9C#;Z8dTQ1!SDNCQU7PjfG0}1 z`tGRb_2bE2w+c^r zwQTf=OV^~sf|+TjzGmRm7!_74qs0*?i4EmmnIlcvIrkJ2_bU*kMU~p|R#s7>#nhtS znv!>R5O`&Xxcf4BdISN1$!>w}J)EPWcWFs+F=R{| z_7{8Bu!^PJ=A>s@#jfD{H8=r>*;H2Mx0$sFN>eHTDKijzT0`j@GGgyWbPi-T`ELHo zaC09()a^7a3q;09)wbk@+%$S@C4&0+oT^dL(c3sVQEL8NsUW1Gw}FD`Z~O+uxq}%6 z5FRllphjH_kDbV8aVdGvCZl6m8(M>LEUxj8aO6smQ=S2BCIvGVL=sdc$?(od z{ki1OeSd#dH|tfyu#WC5FdOE`p6;+j$YV zNm51h^ych@TT9D~I~-g;w?`_f>^uM(-x530-!gTAU-|LZw!g1o;SRF<&cji6^O~C< z0nWC{*M_R9$@zJJ1;$sMA8>LBo~loXZ%`E(?b=sN)7=5G_>f>AZc|b zMhX@OJ)ou(&&P-yENN_p=CoH>u=#6~5T8{%c%gklmhHl< zj$D>9K5@^)ZaXdm?_@8qpCBsQ5oe4G26k!;5$X#%L|-Nn;gg(XgoL7K4waMXTE2bk z_F(+qV<55s*TOO#9bKC2;lF`UI}Qpc9b`uLywfZJMLoEZZq8HH)6*Mp@B;w>5oF}1 zcJe`=Pyem0Ztt_=#tDpO%T*OxbETBsT^W2hxRd=Y=AXX};sH%@iKHYrfC_4ZpU*BZ z@IUDp(0Kn}3{ND4uvc)g(2iG$(ar=G1yJU~VAL?l?v<b9YDled7jEAty6%MLj-^-TT#d1aE1n zf}R+5f4`pS&k5KlXNP9x*(52b0fe7fuG?-nbZ8**PO36?2qr_dpNOVnTy-^rm<{Xl z;v_#Y6V9NIgEHz%Ug*tBkWd-zBwa-{y{sI(5fgxgoSSn9@&eVx#*7RP5%*EFhuJ}} z`@T&J(2vNlurv^{f!#tB0KfTl5`T@v%@r!*?#PtMDnj67Z(jyz6?uT8#<-(ALf6E} zeZ;d{E%h1zxRFZf`f@?f_vhco_`15fu1^i+@IQ_p*`1@GUfR(c!;bi0Hlot+l5Rra zb5uHSpqhvAAv3%gZdxg*N;x>B-T9IxA%oGSi}Ef;j$QUi0xe)H;|FNOoHgcIXFv{4 zG;(=0Me>{u4xVF}0B_}Hj1_rkC2_W0biMtpUp%Z~19%%i-sr31H&=?F{ zBaCA#WdH?Om z*8iOo%H($NVF7doIWwuUxE-N#x^jJ38b(r*lOan1Wdn?_@Z5ki@7w*+Yk%N!U&JD@ zFflO!e1M0W8_?gs1HOaGlMQIc#Rm3cMh@Cv0~wPL*5vjd23$V-DN?^b-|bR6ooohL zQe8gXKRb6SV_m5!N5Rk;#A?q95!@~iEa{AxDt;M;tNFx=f4U7MNH0exwYdWdLDPJ92+7jHmrh6W@K0^g|IJtv5fMj?8>*#7E3?iC zTK|qj-KX5wjvUS@yX(m!)xde^L>9GI*Ne0rf{3fr#v_tvmzF*iNhN+J2Ra_oyEz|( zR&2fhXTON}`xm^4;q?5xK)pb0Fa8^>U2Guh2$~GI%@A->-RTQlTU(nMZLwaRyP|RX zJ2{D%GdMr{HgDe>d8*D|u?}cO)6&vrWoH9h5lkuOWn**mA83pk-7X$FIt0_%neRIs z?CcM^(_f4HQup@{64!rzb?;Vv<3*bEeH0V?5>hfruB^kgn>jedN?`WZYE22Mt~Rjx zP8%L5Gl7poTxV(8AkbxgwZ(wrS^M!kUpHiG;A}Hs&k$;stNp&f3V)^6Zq3p$n7!}o z_AK77eUO(WqA8FzD!~x*xfd%KG7jf+bTVJ+$dwfk0M;7(b`8V#`7e}+R(!oS6dq`5 z7mo`Gm!iYR*GAPNF1Ny9hZ`g{Oym{zee+2M!8S!_9r!&7A@YVy>*Ql_`XpQ33Op9!{=MTOglB;f1i3=i|AOf`*li zMYs~zDhjN4;pk!U$w_AdTAFBZ$Q(FW;5#^&ql48e7xjSye%b_%GjO^_khe6FkNG8I zwOb_hN-YSUErlFOIMVmD^(77|Y+byO5jIlh+Xd(I>aOA00e0Rn&AHw2&O{A!c^Ez} zzCJ^cq(se#Y+8>xS>Xbx(B0nN(x{Y_H6Kn+PL7X_Jzi}KdhFU7wE|0@NEnZUlO2^M zfKFKf1~TX;-PGjh!}aw=C?Bg)5{Te;fz=^6di@YcC^*TUxy~R_7a?L{(%!$MGPnq2WkjSO+dq9|4qF5_Yw&xWAiga0E8UBA!58x9AyDTyA08Oh;GgG?7*Z zUaBlV#ZdP4*fw@{f-dJPKz2`jdfBE?LGVNM!w{F#cEkIz0DvO`{1o1gtHE9ZdbIIP&COCMuem9?TWosMmp3)UVkt_NKW+cLZ^kOPno%?n}a)rKK?^ zn><8lojX}+fG$5ksl2jWMF$`aBu$e#CBTRv&#hd4oma@l=b-Kt_}QURRS_w+i@(~i z?fx{-t(+CnWFFp2|cL!nOkLNqOarkQpDdhO%MBo?yg z#n-Rbdrvt4A>t>{0Qfe{+?7=+N`*^jm+td_>Bk4r5oOBd*9MTCUG-9DTN^lvYt7LC%hRdft7saYE+xx`fPLsBc& zHce?C>(uFNYoC$P!+Q^BTc5^Z(d`!Z!J|QQGB^k>_F>96a|5Jgg+FIpB}&!R@zD!6V&*6YMOu!AzlP66LY%r7Ima#Wn0_IKp>VZ{nHJmr$>IlzACLf3TmRN zuLD+OaS9G1ry^XT*?YVt0H<4qX!0N(sZv$A5|`?;w^hY3FgM31Vgz~)hliGW14k?0 z6VTi(%K6xvqDGDXVF0o_=|!xx(aFlpGuozGiQ_(>n*NB2X$cA6P;h`eNvS;~Yc0k2 zR>*+B*RB=j^HS#%^9s;!YyY)=)x0$Xc_0zuT((@SY|@Tz0}LNis)sGp9%5i1W6wKF z<|M#+cL@Z=x$cL!jEsz25*6xI{nM8~crua3JUcskjUkDK6be2K^yJ1k*c;=gj$cSb z)2Ps0!hxEpEfKJ?o&i|p{9?!@D>KgRm7jJKI1|F@@$u$!M9C31<{T4NXIie22i9VI98H^WAd5R{5P05LET9v#4QO6`e>9|i@P-w(onuV_6z z-Vo0Yn|)+zs;#Z{*<2s{%NC$XgdSKR^P2{pLz{3YY0Q5dy$YJlQc{d;t9Ua}(B&Y_BVhvzOSvj^iolirtu+jqk#JGhNwY6={ zsi8NI_Q_qHf_UZRr$z;+c~eG~)NPH(T597mGt|@4?rnS($;#O*e&V2oBS4{I9h#dm z&tMxKccvCzC|NP7m%W8Q$R#4&CRzo}juw>tbujgUEfwHY+3021t-IrjulrM=Gek+* z?eobQnd5f#@ilqi$@zltB|QQMTB< zzE-DQl$5dBdA{~5D#EcrwgwimuAo|Q|HN<<&HZhHglOXsMd9SZzOkkcTW_m!I+ zP*k&j{~FIYv?ty_INn8mdYi=!UJ|m3=jZ3o%qsoVq{+%U%uG85P^WqGm<9$BQBl73 zGjqzY07IaD?!*u!DY2ry5m{YrEg7eWECK@iFw!p6S6*=`q0LwFziPcMw1cFpy5Wh3 z`;5YZm4B!&{{AkBRGz@fFf;^-{NQrK5^tW&?DOET@i1K?IKIYIW2Y!SXaVhBd!_V* z9`^BJ{G-YQlxOhx^`6oL*)hg8`YKIV2%^Hn`$&9dCYP#pJR1f8f(D&mzs@f%?55RB z8#kvp>=TQLu#9XI<~@CsM%!1O1M}~}5r$GLlTumhALj>90J>1jyQA-i6Y*zf<5cpZ z=Z-GwA~RD+Tq{f_W2#2z(V$kEr|j(F*bw6D*)0IE6&E)*;%rxRQg)y?VMJnt&Mw>Bzvtv)onatvzA035#Wr`A;Nzd1?ibHg@v$3&pvpiiW z2a*^$DJ-})t}T6|U>E_k?+27}-vS~?B3b`v85xn;*LHR3Jd6N)#&FCxfD^>0f(TiB z_Fz19?+p|b6li68{siRv^wYladl%X?MmNuLtciDKb32w0Q3DE;e0+SWvDRCixTexy z+gn}33-4c`1i7aR+&l&Q$`Q474i-Ahn$#{)6s~QEtU-!a4Cod;Y2)If!k28;)sa0( z+eDQU?Bf*6v!)4Z(r}wzzBMoBPpf97-5;;BsrxU_h2B$dcb^20pPd3VcYyrJTToDt zs)oi_j~zp@nzeN$9R>!*2-Qgrzh~0pH(nPmE-t2L5I?=C6rFx0IEY`T2na_FX?-Xcv0}+GKp} zP$1^86Q*~y1_M0Kr$zH8?JgHQ?zhGl-t1!!q7M@Ii@CP4l9J|QnW?F%(`n2<1f=-+ z_yAqvDmLKgy}G^*@JdJY*(m{Mtq`PdwCu5kg@r->NkUlP03GFIBs3}jnO{>@Hd76x ze@*}kixxL>a$<{J^t*<_BT-V-(t7=7rg<~n28dWEar*oF19K4`9)S!nb3N^B>FY$B#}yCV{fRZKhJyqm*JcnW3hpHu&6#LP0@MucBU~TV->;T$5`IW%2?L z1oLFeuM2liwOB3N_60zWjd!?Sd3bt$ALr)gK4lSd+e2;v20y&FSSD3km?EFzVP$VP zHkD43G#VHiGcT<$;83_qhR;rj7W0E5Wl2Wr7CF9OsRIJsB_)zwq8vw*mystpYTLvu?@ zswl}~O=l7YNw~;duuBDS4r^^~En@_T@GY#YzHdSy;N(pJ>YiJEfq{Xq6L~4C)`u^B zSSFJh><&=?v&JK^W`Vc@m)oJpVZqGIY7Yin9V z=s}!$ORA^u1zH9M2HVWMh#4{;7N*4}z_6S`{z@Fhz{RD32c|X}V*=RF5GY~ndPTyA zfboYyBETUe1XOs_zvKY_;Kc$A;5hBjsm4o(h3R&eC)MiC%iU2u0V=A2kx?Na7{3FV zl$S^B>+1^z{HA`s+&nOD%<4U3Usxu;4|XB07Wo zLoD0P9NK-PZ=?ox)_AQ0fFsFr93Tq#rK3YnSljOP!eRv3k1zBc(0IloBmP)`7i&IJMz zNS8TZrbO4?*+-+7aF1P3Fe^K->c8%({ z%q>12ui`u-T8Ea;ND?sw@kZ)zKSl+qfDl5nJbV|ZUrI?y2|ni}P>4t2^dUk1i(VR= zn!3FHHxTW_<#ZfZRYec}piLf8qt~OZrZ%c~Z~*YC0{+3LQ=d`^SmN8zxMka&&#`thU9#~%6srYWz z0nEn0IZ2rp*mVYnhdWwZ8*SFrW40w?2_KGUjQ|HWrgZ^{!3{vO_h^zEZa+`yVtm=1 zCMnq2n>1>4p#n*mn63e@j}^WPtTmvlb-dZp0*qWo#~V-oW-1I7`W%Ihq z|6znhhSj2(2I`4qz7%{#Vr%pzF2l%_aNL#TteqYY((W&SYcJ0#re3tAfG%9qLy{WB zJUBS0|Ml}H^*B0}yy`L~Il1H)6uMX-RScd2#^T~4@VzN)K&MS%WwJG~)uL#8N{XqC zP1QSEmX?l8D6p|K48sER*3*Q|s0*B1M-~^=_@{SvcS#@8Zab*Vt3{QxwZ9h+0;)m&*2ae)!4{NOD7C< zcJet_Xt&sE5{!(|K?4DL%E9})*Ttc{ygV>zK))Qt_*}uJ=&2dIlADJI$8*CkAS5)7 zMc)eI^gEQsSgUG;b_fgyv=-}5!gr5n3$emQ#;%6YgMmrPpniS4IJ>y`xbi5nHvR7( zDaqohZ)sWH!kO6#FYJ-Q7z-~1GU3iPzkmNGqly98NzCG@ffmu?AGWsDYYxXVB$4P6 z05JA+?ex_0BAjfL4?wM+|3cXU>1I?4gGHx2e(-2Irl+F=ssxH=E|z>sot{tffVZ+E zUupeqL>4Z>l8`jN=KBHI=9~dgv$EX9V>6Fymy(l{14`({A}Q~APAkCH{wN**2+nB! zGC<80@cvU-`9J>QYq;TP0>#&yq^xX`;i5U4^lF>?o$0}lLttN?F0%!nQrODMPj_4_ zEK`omMf`C-=qRB<+R`ftxj*%+9az%goA z7(1C0b1*T%F-n?Pn3+2fbFr|(F^X6?IVzes{IIjJx3e{|1)hat1fpGLdjFaED`*HL*1VzJr^KmH5Bk;26a%tes38h#AGL4V+9wO^ob}P2dCs;Qq&T zx~*OGF(ZP2Ab{t+aBh~H&w)$+pC7;f{}=!N5%~Y`2>f*VfAP;NUQ0G1$^BQJi1q*G ziT;P5VBzFu|KIf!Ra)APXU(WSPc<`zY(^xl=*QX_9HmsO7ITgpE<93%=HV$^`I5m! zyL-OdI=`p`3cd|5MZyI1GSt3ZAfo7;V>#XYJFIc#)bsxSw;!#dO?QKzu94g{o>{z6 zKeFRux3ri%t8z(t{vh_N<82uE>(__F)20aRkFpWJF#JNu$F28|%fl9YsBEV`Fp3OR zvIj%Q)|V6P_LctBE370KE38=C4Fi%Uf3v1%ue%!j*W32S{2;tb_vY`WDPrAS`_|-2 z;%&1VwW)57hSA?z^&Hr7mC|KjE@L(+WW>3Z)_w(26-H1OtCT#M$i*m(V2jVs9yb+{ z2hLiV!X_KsFITW@IIY^O-LAa3Y(JYtqB&M=2!7suP;Eb7@0o3b=(@k{uM4V-RqQVH z5UiUHF5EsjXfN?@H%-0?QC*?eZ`Q3Oadp6)f9j-uM@ozrnRRhL=(tiBp&$PtoF!ZM zx#viV#}Hmzt1%VM0h&V;v)N*z_HH81k&qa*7B*}5r}K<&UQXr7T@$%uq@p(CkVMi- zPxk3)h9h)zcscA+?M=&3vB2cAJo<&qi?uHd0^CSnd$l8vvIsvm$q5Uh9XdyhmrB7P z>>use9eUK+7BTAf<1h6D20Q3)Y%p=dxYlCVTcM+3Tghs~TI`vfvBcv80nK6>&4Z85 z{mW6*R(%0%s98Pg&lsjso|q@#G@wNUdxX{o@{a`XRR%_@1M+Q}DeM9bAO^?R?S6zc zV8^fyK`9MN&lp2#;mQ4}+~0$Ln|;@Tr%iE@x9-~MZ5=9j8L|53+JS)HZ@d)tKvg_mHDdnJJq#wPo+tb}E^qaG6>RMxr%chUQV9!F^n%feUfH z$=SiKUe?c@HvjiLWN-J2Tp!+Q?lh*xA3}fqKW87Ro;GJ}wZ1B)L&eYCabi!isAk8% z3?Z%+|1vXlU3XK_jxa*B=P;zAScuDLnMFtzs(7B>n!7#BoId?%S2hsGh$;{g(9<8S z0SA!-f3$L9GzeZZU7q1jNZ`13(fyZD5mK3SQ(?atm#m!P;GJcV4%>g>{L^&pU=DV? z+TyMId2ag9Gs;*i)?n%{%%QAD+K(d;M|0k^ffg9YV>~9PP0&NG8NmSX5QTMz`Bb?P zI{@!b78CYC;gP`JLMb{Sgf|cr_Q znVeRgMe<4edT(W1TWvi`%|CEz!6V-eQ2_TnKlj=m$@hc(LcGTlq4$Ev_fCmGQ2kr) zD_Silf_6~YH_mn6n^t7)XJ9ahgy!$0Dadv~BH=!9@p}Z`Fqus<3yOnvaTH~9nntuz zrTIl=f(EL);l?vet?=2qGQ)?`>qlkYjt&mhudZ>Qe1sNt9%)svyNkQe)g43zw4okS zH@ggQ>e{q@EnC5xw|rPlEC+~KUE3|f1<-$vn1V_0amir_^%x}E8aLXc7_LP@ie^%i z_Q41e(mt5gJ6=WlG#YW&vV)1j21z=>R6)XhPGb#Vkkh908PsGUx0`1K@%n{wLVGg= z5$&!emcvr5_~6~XEwPLy9S@V+^6u-YaR-}*NNAwObTeyMMs_C5M5=7ad_R=jKc9E% z3C^l;4-1dZB6ijr5N7Cdn0>GOOBU~N|5!w$DG+A`BRAPzH6(+){HbJg$duD9rTOHV zk8V!VTRI$IF)B`wAk_Iv`Fm{g2I_=6UTr8SB(42P`_=}wY%XY2{WO`XNe!-HYMNJR z^t=e0)Py6v8Xc}UgbgzZI(f|@-Vo{F{LCcQK$wp!P--566l;3XRJH17x~*ZyU)dBC zU<7uyobL`+g3(Rff&)p_%jfw}(KpwP@r9C_;;&Us`YYpUcaBFy6-s3#b(44%I$kj=8i-Eaz&u)z=<|6XLrKqU>rX1?2F1~5@l@(#Y5W917mBs#)iN|WaexI*(- z@Be$laa#E&1YHiji?lu5I^g>En*jf1E&I;Yd=+@UAG5Vblz~-H-MXL32(sMYa-^Kg zTPOzsZo(xm*L?8npNhz#$tv}wQ{|d} zCpJ)RkV4}?eIKeO(C`E20wwSrJK2(w?xaKd!Qsps^r5_RUm9FPVfAP*l@t@nXiN)J z%-HGr;;8pD{$==L9V`fz-7CF(1OjTDFU$ z`r66S3b_aii%w6h*Db*i;Na>URYYv&rSuJKqdxzT);gFpeNwrZ@#Kep)jEk8NkvnT z^^?)XG=$=W97YT8bubp!Mx4vKJ={4jvV>F9lmh&<*@i)X6&{)^) zH}&@xux28r_}nT(;=02Vn~ZM^?XuMJ)_D>91HQyT(b!R+gP8S9`rz#1o2rx5_p8`m zmiD8+BMLqRCh3U!W~;h323XMMX~k2Y@^c>Lr`f?re-rZsx#8{Yc5|z(-_IO}VWR~$ zGgu{sS1;+_Nf*Z4qKOq3 zWlbcla?lzE#Ub_Tf#l9WR{DCh5Q%!rlYc;m$3;KdkVI_aP3G)#pP=YR7uQ|z7_QgV z7idO44F7)>J9GT6u`@FV2iyN{>^%8XCU%_zrTb0e7z;NHL*V|rc%`w!B2Zv%NEmq) zB$<8PAWRrXz}tE9-8VUjeT#jJ$G3{N-frnnCZ%&K2>}aQ(5z-?b^?Ot5f_& zgNs!adPCPTr`{5n-ds9P`#o7~dETR|I0qYG;9~!07y~UVI}qokgYCSurQBGJi%vl; z&}T6Q+Oe=VLvfC^EFwx}74Qt9&8%;AeoZ>G@pPI3;e@(gvcNCZUh>GwzDgAZF1<`= zY$J(4s zNUW=n+dS98Y#dd_PLV0FvB$>Vkl2EvaX%d<=w>47{32<3!7ozg(#8H4xy%OqX%Tfn zkka3SCHv!aoGqnk$_CFGOu4PoAKB~G+7*w@BrW>Sc3{?6w5ZTN1hLQtp|4&rs-eAP zV`f4zZA3BxbnYS%JFP#rBcbTKE}r(=?HlN`Fai{y;)&{e`>|({il?B?<6+0(v@LB= z(m*8+$kEFcS)4)!_5?)@V{uMyP|yak?VrJrtbKbO-Ez89nu!{2^^c4{bUxuk?&<8r zb^vAy0TTN1BBs}z0vuuG)?#LK51cc+CYoz5{2=n7K&UN^`{*|Cp6>&#yRT>d*r^2;mpZxXK4Eiyky-p0z3tRqd~%XpZSR z*$&yufRGnb%)n`|^{D?VaQm3*&05B%U=yFq;3X+B(5YdXVlY3;e;0iD zZCbb5rAm3Ti;6+Y3o2wyN6%P9d>e^&oz|+vSSXo3 z-TcS*w6}sh)Oej4!YkDDK!%bl)(x}Ai`t79l|T>Eq^4n^0xFFB=bo-RJZRX#>sBA9 zfp<-4aHGin&m={oc7HH;^a^LN3mSnt?DXz%ATKwxD}i?F-pEBI4?HJ={}`%`+tfrI zgM4qdN{I_*=d{{e<=n-?c2>%)@I*K`Oi%D| zJYEQkVl7V>U`6d$LWbc3zVwYotW}GLz=X2s#f6?)1+mc$B#JFh15M>_jkOnEpNR9rOAO z(L`iBQr&IAu9pk(^6;nuHkrZw6O)2Hrp#k%I5nv0@lm2a&$nNiEtU}%9<&KN&ab(p zv4KH8kj%5>$d2^v(&3cY;V=!7iD8;1+wzQt<$;=9U5af%$*{S6!VnFMY_JiBN2;R2 zN-qORZDRJ*XNx_inFWp#^`h7DCQ}#nEJX$KV5YRE6x$}3kTq9wDlOS{>^h%V6!B3( z=O$O`9nIhcAdj+s_Veu3n;G>DD(Mh{*ZhaOb4}mY0tLJsNJP`9V7>1RpEkPt@j0%+ zvY}jMR9qjmF-Gf;D=WfZck$MotbSx7Cwnr`cJEob9j&n)?!x+Tz6*su*;>%fFsMn{ zYZPMjY?6n{D=LSenq$_XUz)P|3{EjbwzHX^wLHJ@xKaD8BrlJnE8B6t*GB4&&9>;Y zw_BC`M&p`Mr9?&3m1R}4&{wQ2b)Vlme4TFcZvIy8hCwA#l8;uPaYKKzz243-xTMy6 zL4({_km{p1F~jIpzZueqx?Qv&ayx(Z;GdbX_7I zuVx=PcTomKLVe5uj-Nhongl(k#Dc)B0LE4al*15R0^>v|2OG-x9@_q>8QaiR)?I%| zMnkRHR4rD|%8Vvy4`m_0Ev9STQnNpiB}o6e4B-?J zi3t{}9AFFg6g;-wG@3N+ID0<`_;*wSCRuo~Xr*Iqy&AJS2Loo}j&pVn;h*%lrCQE+ zBnvwhPWL&Oou(Yuum#EU%z`OGOeh&PI38EdFG+mkzg#0wzFBWVc*{z#u>;ELz4PFq z%_dms3d8r?w6v>ckKkNMKfPCFoo#RqD`@Qc-0J5ZBD4ZN9jPZXr)#7q#$Al0MsSs` zg?7NK4kE=lwyy&e#^M-zv$owD`hBSRx|$B};SL{Cq3Tn!o^@omlUKHg6o;6EaOxjo z+~3(t29z;#Z2Z&+k<`%z`*f|PN@)})daVlntI$v7L7SlqpnHjFaXj2EM7Jo^;6JVe zj9+_GA1?=}T=Wj@L~2y-r79d3dC}~)zj2{m(L+h>&hvBEW4rB0cFGt|8Sid2?YDjn z#FIif4t@QNf3^F@{md9n`kUiJ6wi`I{{5)7&vq2`12kmZq9+6odxlAe+c$oPz*>?EYl#>X9H7WcokYq~7q%PL37BXFz&g(SY0%5oRJdo~ymF(}EOY|u14nnHpZKwvX< zuAI><60eGBDOXyMP%o_$9~k^eATikbU73A1f(yCucm(~l7d8EMPZFxuZ3s~cs-WJ8 zkuR&0u<29X{fO3sbNn{C)p~|-t=$c>5AK&M!A2yZAbIw@!2!zrJ zoTkakAsgEUNg!x`shGra`8~#}T#xsZg0Zewd^tTmU&pKv!M4+)4OF#W3>$?1P+!kz z-UK-$13jcF>!dht-*tqjUyDt*?)72%aZ??V(jRx7!PHErH4!pftwG78hw$yBGDM$) z9$=_J7t69r5iN2M>=wOQJ&mWOCZyV9(((egj~YQeP_@2G^2&Gu zm&&QdN2`6kP7R?C4^=X3vs?FXwc=OZaZ#zX#ChlAj1tt=WBe>?m}`SNr2)A&M^yjJ zy!$OV(o)%_j$r*(be*4?i_$(hcfVZfPK2#8U*Xi$NI+8OX5uPp~p1_k3 z$>6Fm_@NX(+n;vMw^2bI7IowIv`?f&ruAD0k^n1#V_bn%XF0ko%HNCz>noONq@vfs z_~a`ogDD(LuZV;~Johniw7@P*d|Ucpgx7ufd6|)px7^&g`AB-8yT9bTBJ<+=p%}eY z4GvXiM5MpUw0L_V<=MX3;z*8%jL)iDncpD$7=MFob!!$#4=BuV+Dk`aT2P1-KS=Su zaZ5M!n41|@ic=lvUm_eP3*eC52u4o(sCfq#ztv}&6X=7a2uZ*nE9>%MS82{s;4Nsk zOZoDEB}Z27N^Q=Ew0W@=7I01MlW<&=&5ikmSX=gf+$M^uKo0$kOd^_#Z)G-KE_kGg zC6ABh;8QexP#XX4^YZF;@7f*-6u5V+^E2R z5lOK#|1XggGchw43+MkV#3*HM2FSyr(H!hAwPX#Wr7H7SJ#%^OWQ%M&ejer8ugvIO@2T|>1%p}H=Shr zuAT3S(?4T3o2MZS_b&uFVqG9hLqjbr2zgS{{>mzdwRIMqwKYN6!UCRt8RD^^gQ_Kc zTp>D+A=Nb_Jgfu?$}3$Wgh(!8GO-KD3o-|Yi#!N#EC_E62tK|a!2a|l7=j`J>PJ3< zYYnAn2s-lPTu8ob0S(2IQ=&GQ;+}ijmk`vci66Ze5}^sA%s)#gW{Q}# z_bLT+Oh|i1uc|Ij8Jvx-Pu`byf#gsTJC6+JnywZ!GvGWcM@L{K-Jbw-dKL84Ap!)` zGj20?D8d(y3G@>W$uB$jeEr@9<(?ErLK z*1jIcH0gq`F%~hkUuJY{YGN!thy#eN^XPp`KmqDggLkzqV!&2^mMopZu|25{*1(P^4&z_-|11I z{*eQV2sZOE;Oos{%Q1f>c>Xo5aUDATMfBn;@zQhq<@-J1Q{U(=H0M$w@GF+k9KQMY z+xTueKr1;toDbnHfZFlJz6kZTVWb}ov({ziO<;T0jZ;!3jT-v<(I}(wv zpI3GW9s*5Y)j!6jFbp5xD7jnRL4+hE^6*btDRNLbdjmgS+$M#peeDT*#|)wU1v)@- zJRiZ*eh?`6GG>HA_tJi9-&5^E)=IxeyRGKXJR|Rd)Q)`ya)DMleB~WcM|=?rfK=RW zhh1@xb@ZTqIYRAhhkbCDz{0%7`sEV!TE24ben#i$!F@Tn3E-;F^blkFE#B(I;rGIQ zVtdJ(elR}&N}cT4adcYu-C_OEy!eF7MHl`o-(Ow)O#h40&?A;L{rH&jH8%A5D{>Eb zAHDpS>?3zpBI3-6-eA2TGU6+;*VMHa!Hh5R5qIDj(RGiy?Q7rcO**>o#wjb&XW*9` zRiIEcvC6`WW>~qtpPHP|x?D0&IQ-q?vv$z@KK?hP!yB(3#^yZ>MYA529^$V7BIWm9 zL>-O!YNhq919FFB8^Ocs^zPaC%L=9rC;adZiN~v@xr`-yeARj?Q-rE;8qhQ6lF=5UpMbzu`d;)dD_^!nZuUGHu6qrY^~b8MbW}UkWp~mYbC&! zD_hZE-)X4F-x<(WhlWqc%>HQjoUXVJ=VTu{O3^+Fg~D*U(dkSXx;gxJE^*mX#PulS zwmTZL>du>Q8kwFu@(&L>c&|FU(L<%Tp8xv+e$moxE*RzpR*5Iol8?8dWWxL#4~o!m z5ytoXpUuwuY6_c#|Evii)+Ta7?6op~#4@hd%l&Az z4;RcElzYt+d|s8HK-%<;#FZB zcDDivd@*$>d>bg0%B+u<%ehp2Ymhmpf$-B`=lDLZ$Dj5vnQ)5YO*M`Z)ZU?tW$ddK zeXMEgu~6Unrtj~6v{Fb7O5}{IN7>v9M>iNWr-Ry!6b3S<=9$2!5}EO%yc@h#D8Hvf zP^T1Q-;Im4OCkvJEs}hFtdw1I)HRJCRx-VoTPBuCT!jh$jHN^?M6D0 z$U1Z(k=;@yQiY*@raxO%y)Slv_MjGpINC_x8j-G4g+w*xu~}RLN+Wm+c?mp} z;|{ww$h10Gy(Cp$Cl@U*;@%pH%l6oUnXdoVVeeRcgY%6vl>IC3k{EO7^rD3_%lqC6S~nq7vjCcgQ^iZ$>O?>zSTJVR)QQ#&wt;@H^a z;&B9qt;pL^t*{g-*sYF!GuP4r0ry`vzBa+`rFF|GQUA)Es&0nSfU3D7)oTKa1j83# zuHEL20jl<}1uUK6GV5k5g;Ic#Y6^_L)q6;A9;9~IVXOwMdsHb?)%gqwfCDDu-nvF~ zbelPXT4xC$%C}=)V-y?!Kb?WKo2y3g6_HiYVB7fCE@16!E@A4IJ=in8eVW_#HGx&e z`4I1R&Z>TR!R;Dj+e;gEcikXNV9r>C#v{YJDY7{Y7r-9dIKd-~ObTNe(9tO$;>7&U z8Va#;TO)s|8YJqaM{m7kY3zd+kX_bREL#PY=SwIF$dpsim{Sncd==MoLq=-f!Dln@ z1U2>xyrnrm{%n(f{LJR!2VR}N>+ZC7BRjmP3Vh#RSt)f!+SWbjm2s;)s+W{!wAOmF z8z{XMj9Z*Ghtz&T$c@#Xp{t@vs1K>OZHiG!^Eg?j?`7J0sVCV-f*XMqVRBBO;YJ3n z(9JY>9l!+`FzrMRwJOYcAsT-@*Owhw``3H;Gh=_ssX&+RN4E1AqjIM2_FkN^{~DlAeMz}khYGR6V!&?*omkDd|x};ena2m z-CCScu}HBbeNSWzzRFoUHfpfuqV@@vxg-s*eG6>0bH zsj{$k^-D2{m@Y@UN1+wINEKvIacT7*?>`jIADzerTv#@aAjV7y6}}}_K*>DoTNYzI z_zfA}&XSh^7I3g!Uk=d70s4|KK_HHaF&@})z!We_EiRJVnck^MR2InL2PWps>%tcS zn(FWRz#wEt`v3gVU1Lh9uJ7i)|Mew=G-WWKIk>1#k%>46)i^vq%Gte17LzJj&B^r!gkPg2BzT7pV_~G%i0${X zSmtWq1ZA<9(T&wto5_-ZR0T`*bBM_8ycQJ$am^Mq7Yc;H6)5F>@QAP@YMd5$(^t~` zSc$FVExZ(0Zu33yS|Vgpcs4-AIcXi?A?iX`bRJi7KO))xLHP<1#WRd0S6K+>zsr)8 z`r5yzGzyQzb}r6g-e16s2HFFW&GxTd?b|%x;Ag`)soFJrF_XZ*zYdnqmT}K9Q(~0} zsfCFNW#L7N@F6FuS8-bR^2i~t6T`T&;f;bFn@fJr zD04kZLHyF$O>Tn*sClVBZs9}@gz!oZ=VRI&sa|*ftIUGU*(*JaI<1>uwRUV*nlax_ zD&k3|E1YXBOo9PJ>4#Trv zouF(4prob+iGz8KhkjM?i@5}$9SM`LWwQa5bIY5Enki`iIk@Xb$^5BcIg z6HFVe?snUX)s+$ZIf5yB2y%KY>d7hUBkN2|b+y=(OWjH9oSyGVKK`kE#DaT^&cJ5` z1ZBvR->ZD$-?*~*OpVc!QFIeDXw=j{hJz#%k2z=FEz_394yZ3-SSi2&%`Dv(GeWv5 zH1Li0wY?Tl6Paj`Z8)9}jf4N03@P4Qjt7i17`r$HuI0i>bdK;Xa^3g`-EMiWatu3~SDuINcRZEpe}Bc_(_^*hpgdlRvx5Q_?-4sMmC40>2% z9$8;qu+Rl0a|oj5zmdX$g^!syJ>l>Q&utARJK9^`kOrAsLF?eW0-~)^CF1;LcK8o| zntj!#W+nqTVioi%?X3pN7`4@4s*qar!?2mlN#{d#7FuBh} zMdY={6AB0=Ue>+7Ygo0e3_K>Ljk6j=eL-Jupt~;S(Zh3@rr5Ooh;ZT0cY&a{39k*| z$@N|TONTv$CtIaMZmqvpik>ANQM((cc07$fXV&`rAFTNr%{e}Y)8>-RL_O5=q{zx$ zz@#J&K@QwrVo80WWUU>rW|#tZe}1pbGfI178%GKWF1Q{(x0gD1qI4DS#&*5PDd-X^ zB8_)4zpN=Yrq|B1=daIF5f7^WDL89AL{+S0C5x&i>mXXF@5_oLFS#J5vx*INwyDsF z=#8b!13?1O{!m|^70c}QrO8bVJ7K4n_G%C#5%IFw`^MuJV2_K5CNoCJoH5m@=<>w< zN=(%>vXnFe(<))Xq>KFJS3Ppoq>Kf3Oi8O9hO~0OlAmGANF^8f(|c$4_uXeJZ|UlF zyya+4+<2a-o9cm2X9*l{Ms_HpgfhGK^CAe(c{g|RloWQlY^a;{nx6If!`EZ8LmgNk z2G>|^8+&F?BRakVU>$uF>`q6?pijhh1>TRSbe!6{X!VNFP0{AatUhfN zPR=~gR!|J$@z^0=&Cq71m`O2BnZ>K{{SPpp2mKnAcr-E-tH{R?MIzy6VWb0p3<>Z* zicQ2+FEdhFMxnQsQhkJ`WsnC~eVk&IA!DPCB(JK*h9@;HG4HVZGh$FR@Y&tK7JAWn zqQ%GNpL4rhz1Xr48LXSny8pAE=;ZrcM-GDIlgDke-Ve6BOEOagJdSQlHhJ&`W3^HFW$0^ z9FSTK%V~_P9uLUkqiK1Y;v#L1yvF4dAB~HIEw-PR&QF3s0gq2fPG;&$DJ#Tq(!t`6 zt2>L~7#GS%aBNZyN&I001QGc(Vj}upG2t?1Ix&=Zx2wd{U4d6pPza8@hk(q66I=Pg?Iqw>UaK~7D#Je!?&6#7uT%cz4S?-4ML@imme~kj53TfJz%i11Af-sR z*La@g(kni2677_dM$B64NP=u=!oZYB*xhX;3Z=XEkcEEJ9Ccou_JQOxOx)#2jq&VL zF%?fbXdOFT*-m0e(F{!CR!-0V`53fWYng&kKcQ>h4CBNKgVjcf8aX~*p(6lRYuXX` zR!|q?280AFSwcl~)2q4&rNpYKq5M!Bv3&;)El~ zZZ?qX{PHnHN%D*i4~{VUo>cva&=u8vkrFz06bK}wiYiRHAts!b%MSSq7PFwuTyk2@ zuKhW-=U1jFo$kfT&HVq(x`HHYM-`-uSvOH)Fa`mIT8g@eHU%SJQg7GlP3M+q70L7FY<(H*ZjFmwFJgJ<-$@3p4hBAY*jZp42UNX zc=l$7#xXO?H6=&bu&{;ew(wRQBx~unIwB&lK^GEXHD6Ia^00ZWIV8GTbP)(lH*8s> zUW~2so-R@&7gxnQ%a>JmxlVKLfh^OKL#I@7O!X^U(`xJ4j;p;=mN%Dp>un^N^F;P7 z4$Pm_DRr(|itSTGm&N3>$%&e&C&M+oR?UV=C)3FCu#8PqeIj~X?2%ygih2&q^&*z8 zA{gH$yOV0va)sU!#lH@b;|s~-v7+>CTUJz2hQjcUed^-^-8Nv|w6Wr%V~GdrgiUiU zU(cxV7xy9-Yhmkr#Oy#k|Ed{Tz57jaz_?{s zBf8!Y;NYx3ks}Uq9T4uE1v+4kzG@R_9_}w!=4XKm$c(`<74%?t=e&3E`9%68a<#F~ znMrc;8k76%Xs%~{bEM2rAB-Dk_z8|7VaW}ca-xlfZp@l2xN9o0ojj{n z4uOz_MTt6|`@E{(Q-7-Z;k_uPg9 z3cs`BB4=obtX-z2nX{lTN0H7Me7oTYVwSxF3){#*&0k;VGe=VEnA}Clty@rfo8qP31a1DB77*+E2?|}Yk2t&&1#Ps> z>NH^8({_-^!{o3`a8rG`W1+#%A{|(OHaiP^Y$zH1Wug|pJw=!g?&Ia^p~NjP3g5Ds zKglmAfxJ09K$_9+ze1|UGl{65wU#W&mXY6}9&oklZmf#S1CuF35cjv2T?!faGA_ytQ?Gk)OIrJHj--z>}YPtSzar?X4~`_s!Wz3 z(HWxm3Z&8SVIAzjwOVg-THPlb?ETJJRejRjc&^0kzKcjCR9xx}@@~-=|Eb}y83@)G zB>YMG&oe%ZsiaDU1|^%?Njek7lTUg*jeWnC%_ zAGK?3ewQV+qc=vp?w{t6(<)6#0}Enjj;!EZ?3x6e;#sGB`&6jurmZK zKi7-9^AFCjkgm0d6$nTYj}&tytnrw(!?*$EnQq8(z_{yN#A>!*FHr41v@mv?2DqJ) z%{XH*dU&B~Sml>v4ZBX-FXh{3GmNcMP{9})==vwiirnx>BB&r343M9~ysyI;<-tjx zdm&da9x8FX2_lg~E27Z^swUv?c-z4@zWLLm^V~EZo`-B8J5`QLKE_Ae^3diCk#ty5 zJnRYV&F6yKxUq!QcgIhpa0;lV{Z;ZLGH6OxM-zhm`5Fx}-n$wl9YP&JOOa5nfv4*(hy~thbys z7e!kt({bmXA8^s|stS5fcj{AID{q7ldWkDrkaXN~Qw`i?>D`2PpksT^#w);>m9sB4D;-AwVplW!SaMQv1kLx^WY;QB5)~WK4 z{#*@svq)*z5#c;&5n8WC<6cFJ3mygFgOmD<-KL4sbKEX|I<6`m;Ec0n#;r(w?feFM z-fmIkwQN_XylKHcsX7t%jRDjQr+{^{B0#)MYAlQVv>@*aod5;A5`q6o?^YX)%bp@qM!;uU%jDMyPkX*l!zTjvU~R2!!K zc6GiE3oPAnOH-Hrg8S_v_%nj3TbxbU$uo3$JUsPPyzEij6F#mxBRgdJCxdFxcckX&h>zt4PJJt{ zE?AT}tJV5Q-?0(XMOJexwcS-dk#|hAoo%3L8GqF9PRx(w5h~jypk6W(hSy=u`oHZ1 zm``?`McN3$gyi*`W2YTR}Z}^_$g*&ogl5aWe z)5b8ZF{*Bnao94<4V^uAK&ry;(?vI|PnhR$LW;~XJJN|CkX1=GX^5TfER#|zu)Bv zVQ4eyWU-p7d&R>kBBL@Y=xt3!>L(F;ipzQAZxAx$tERK-v?*s%yrv}7X%z{?A--tc z7fX9EYiMcBnjN~Te;{@i!SQRgwfxta?y|%Lo*z!pxwAnfHX*OjfFt2~*t1Cu%Qm4~ zmzBz7iCeY#%>Zf&_U<1%h*VQEGO#x+%Bk9C@$Nb;YWwvruzeR5S>I2M#o zR-SiHk|m5e`1DbT09+5k3fY}YQjc(3SIee_x-d&M+z7IJ-uO&=jR;c`9SY^1h%#UQv&=%4iOu7DQKAKUgXGmCVW+zB&WM#wa+pB2srRyBKJf{G11vOP zq=z==AV&BwS*E=R;_TOz!24_1#7q|Va7G}melu86M+Mcs zyJ%r>_vu3~A}6$~nC8~BiWY=_@7mR^(ex~@ta z$4_w1IIVKg(JO4ghwV5W<4d9?$;yNYM#g;>ndZb(lud~0Fcx?jenSQ?*)}qUvve2Zwk#FkP0dyAbT1W2 z8e_Bc3F7lGq$ZhAg6CW292CC86Ovurh8 z$Z|!H6xKbxiEk|WRz|Ito!^z)QB3|9Vp*%sgx?X=H@Yxmp^>GFuV4Q+6lZ9|lC#V% z1c{CmY3-j99DmU<(cw1}0!LR{X0U@o1`H@kGY8<3 zUsz9()O0jW_{p+F;?lL(u4RKK^Dz2NOJwX}944iAIcSS)c(RmrKG6B*Z7{|cldblg9Q-Autw+k)ucb~44+>XjS*te`=#cR5 zJxj>K{nJ80jhB-M9x^?_xsCf%zJVWZ!N&nhIKD9D1cO~!r}OEgGmI9o`ax6-V5@p@ ztX$SIbXZukH7vNAX6%$N6R!?!G2{Nb0nozc(_(r}#n(Z`yQYb+L6DA1=cHHM%PfM@ zaa%|*kAdi`c1iYON=e=;A|i9T%uNlWjv<#;%7(lk!%nQlCIO}+!iVn`;$lG?N3H|) z*@=xjr$}@@aXp{(h_QrC(@Acd(YEW5)7AlU>xDN>8+R@|U+Ja5(=!KM@e(M3{fmOqe{_DpjjC^N_RUs!*u# zM%MWWuTwQ=8$N`uu5v|a_;d#0;G05Dgfmzw?LkQyA69H(jI62AIJgPQc&TCzsG08Q zvW4INW!=JQn-cG`PQA`Nn?PM)`lw@i9O)u zj(YI}^zLKh?L+1A;UIY$>QX*?mPTZqa2RjYX>H5huAf+A71nx%D6j>@*5!X|FvDpc zEa2{5&6k7A&+BnKpiFFH8cwCE;3)PhcT$lFe5s8p1(~1+7oqDFELZs{ZNuly8I~DY z*=Ms|mWW#8AZNQ(7o?{D*ok)?Y<{V7sJOPH-|;T*d&vrA{fDl1Tuy}?&d3srk}ak9 zN#g`W6Nu(wo5-Mb6qPb zPsLN5e&i9ai+C~YKb;ZBsz27um$sq*DN|lE#)oiB`8vRi=9~@3%EhF;?kn8NdGp{n z1zisdFmL4;LsF@9dH;*(a9^ZZ^T8ULpHpeU-Z2M3)S!gv9!TTF_eJCdl}|>dwZhP+ z%(M`LzJgemO^7aUb(e0pA*}kmZ^-^V$p^s^1&69MH`ZfF{A$iQjm7a_{<1?p+Jxv6N#c)Tj#}MU~%KQmkR`7cExzXS@{g;i{;hi`l<=OU3^I}K; z>9s@UshBwxC!V;E+~qFCO=FT%(&x8EADq3MQHt|V(Bgs|P;AgC7o^T9&E(GKNuyND z%rkPkuZ3f2_ffQj66bd3wq*?!$=$q!3M+#p_pgxe{+}>EWZmziyqEx47v67)y{=|7m8_C!rWN{vZ!BX8 zxOL=53EyEtsx=_CmtR$N{GCg$#H{VG$*YN~&j>M-wCF^#6laH_Z>6u*VZD9R{6*Rb z{duVuXZAvb(sOi=9z-jtgfu)xP^EU01_Y8qfty;d2Qm4mh9TL+4$vANg%cuL8`*|d zmtD`2*v+yWD$J2_Q}|jZ{6k3G#mf#7?|cPQVf&E6vVY zW!}yCrePA}Oxw&vLD<8)C0*r6I-j&KpvuB&%Rq?LOM&y!2V8}@BF2KE;hw(Wrvdhp z*{vx20a<`iNAui9Msy4xVF*%0PKk8E0pZeEeFnXPy-aEIaYuh=heGkLuA1*;7~dS- zRbibyf6s{U)G1u08yP&V^M;62$?2f}MxCovY_!T4D8e%(vR#y@oeowEEL|qkPCI?U zkIF8m=#WMPcbJ5G?k#Wt>@E)=QsW1nF_1ku?C$Z0nJyp5k@0=hkNVn3 zm=M$2wES#7+tX!wcjxTJUXOjno@0y);<1H0lbx-yzqrZpQi8dA#sS^fm)Co+2rI_TQ)vp1$(;DiZQz5guuv)fSYLLkK+QswEc|P?Zrlf zQmP-c{yr>!g45h+NI6l{k83q|EV!!RL5|-*imJir=X(1JtDZL}k{r0+o4Hy2YgwE zXfy*}g^-vlrAv)X2K}nFP|VR{DOa$o7D*8uzv`U2ItMaZ$uo zZ!DhrX}6f1w=V}=*#-D>!_R3H)5N6I8=H6xe(#G53;by%)(Syq(oJ6)d#Bhng;_UJil9Cl8hysbm>A!L6s7UCo6!%c<1G_-B<$wd5TQLK0#P1MPRLXZntC8?S=V<=wYt=0oDp)BkC82R zHB4CB(K=gWdKOe+P1^1S#3bgC8k=F_|((1fTX+6#1dR6M{e*UB7XmuM^ju!1o23gJm%Jpuo`dlzV?i7)f*Nr(k!xz|(XTa| zeswr8G&npNn-eITMF9m1L%GNjCoVBg#|WCjW3N4_iUdD+;yHi`r!@nP*)M5xT!INF zg)_;_u96K%UwDbn8i9r4cXr!$y3 z_thSRVm6M7-@`eaf0hLVJDV8a47IrNLu`=S@HEEWZJ98e$dw!8wr;{^+{<%UDv+<%u!`y;Cf(j>*oq)N zzbc(TI%pnFlv8M%>a1|f&2 zufq5kKbJ^N6cdW+{jcCC^w*&_&UrF0(pdwut&d5d0{8#K3NPI6;1ii+~Rc5&vx#!rac|mn^I^A9t zgp$Y3Exd}es+hR1Q6_n+!3H4a>siN{T$JM%Js~Gmk}-Y2OlvtrG~)0&$RUAudKB0J z0{@KF3dd(jUvhz8j#Bo*uDm_hWFpxe|AiI!hNbiA<%#Gq4q~f+GSrUA5>^|%*`J(t z>D#q-2Qxa-%ihQwzT1tW<9q8=8$EWFqE}b4?Kth$?S!Lj#I7ENyJ-}benHdcl`5IDf&!HBdD5g=MWRPZzwcYU#5&F$7FJTo ze1MBp+=AiicxlV`D=5He#7*cAi2mvaFhU=n_Wzj7e{{t^mVf`7pn-KEY1wWFbu=kEY6m=ND%4l z=EfGt0udgZT%0@{<~i#%`}O;$xz}b|WA^H@w!79_=e49@W!@yAIY2Yu$Uu<|J3dPZ z691of_ZZyX(Xq+N(a~Uj;evl3Zoh9D!`V|GT@3<;>bVZU0=*vedw|Rc&@WsmL;z6I z77l=b4PcxcEJ*dY)Yk9HUOSl;ZW zkO7{2UZ4Lz5KEJvsNj?=TZccs%_e1eNZyd%21nDbv7RQGt!0PSo>h1>I5Ql&dK;HiF zMpmG&-!*Ok;9MwRe&T@K_OGDoL)r|!EgJFo{RR(H&)7elh+!*z1PJ|rzvw6+_UymF z_{W2QKj_{Np+De{Pyp=Nc$sitY8(Xc{zE5v@#y^rpY-G4`~H8Se#^wGc>lugI+(z z6=s5UmAV@arZ z#qkFMRr6Z21054|_Ipx(mqwIv^dG+H2g{@H;sB*y9g+{BFB8uA11pq z7I=464zYaKZYpELw75qMSv87F!NzQD<$SLyVTV*X%F0?_u6(i}zwlAV1s#TEk(dMoNq9!4}yCCwo+fa(CJI}1BPWYnXjzw@gy=Ls4_dW7a zhC{ONi^G+i6Lg133g^cTcAY z#SRixRpLZ7v7$YEg{?DeNk_8~`n)Y{7MNsyEm~@mbuGUsW!7-j*+rJ}TrTb@1!WNx z23yUap0Gf?qg1La=yFZ=F|?yEJBu|s_HLb~u~HpkPJ36`2__k3KtxZ2RO|>-?K;jk z`1naRMBXdGl$BBj`5t%o{YN=3cs7ak}KynH+jX>YEoh1?isILkfopZVf%OszZdw`C!lpXbn@_4H=sukkJ(|CfNU1uxY_f4$vtobu>fUn5MWWVk31M3Ma#U;ju@ve{R zN3H{rpiS}hNc$}MK*%@_7n>mtEq;OK%MP1)is^ima&5FF4MFK_VBvM`ib4Q|kbJmV z@L~kdx_fqm#!LAK`){d2FXU13GLhj}s08!`R4X?)cKW`!?K21Q=+Rz0IAS0F2~{R4 zmm_r%tLKACN&SR##E737{1V;gR(>wNn5pK)k|rYkSyL-^kQ!1R6-&#<$Wn5mO>Z>` zN?v*1!`p-k)eMo#q4a7J6)ikU2huJYk-gA*<|x*vOaV1gOC=TLYdl7+Xk#lPELWKy zqp&DT9jVkb^Wmrzuw&Q45FeZD$ZJk8gEb%!g)b%IVl1~9`j3!ejB8g)jILv&1Faot z^FUf?nlz^=8SY?cIR!s@-8cp?Z*&%cPtU~^>vlZWi zm~%GrX0dr%1&IB-jV?`@SjHGu*qemVvjZunw~{S3o5(A<>k`1^o=ga^c$)1pUOFOC zONd9~rv`;BnxV>1ZEx`-Hw1m`i8(QiZXvKLon)YrlPl50$0!)3C56gBF01ho=h5p@ zvu1<(D4X2+EYM3Bb1<1uBpf&sqa9Bs;DE~66_rS@I-v~bz__}?X%IzBF#xM@=;N_y zi90cy+8uE_l77+oA;FApKNq5vjNXwLlrC!^u*zG;VBTKM zNGi|GZaVLV38jPc4ieQal<1-K+6t+tEjC1fzMW*acL#~ZCJgC+w~dh1;kf5cFlzN` ztk*FEcgNfCd})d^*^uX(C2C^+2eE0aP&?`@hJ6}PJVqg2VhXJi!F&`#9tM&#nG`5vi6dPelf=P|JuTZhv zHAl0#Ns{=diOl=gDMD4Y5<_1WscjAr1_BWZQguMfc zkCOdz)f4iE=^sotGdAhKv_x1ZncW#+OD(1pknZ5)Qjie7xiOS1poHVS5wCI@q}(%yVk;}`LReo*6?hi4I{HTivu`3NZe); z-zND+WE%*~xy-atr)-k8Neq>F{=8Z@5YUq=oo!2B9ypXx0yH6O4KJPCerBySRS{>9 zbl1^DDFo_Sosr!ba@QR6ULXZwn`?*O^*p~_!wfW+8|4#0%OPCrH)+}vOd)^(@i6;F z+0{c&J0g#HtyYO3@AsO$Y8)45ajrq4(D$PR9AdgkUp+KdSn0|3RFIR_+!x|H ztt+3{j&Yl_3w+K4K#X^nVHKtoZ*Eh8CIcZ%4FXJ!a>H2r@58C|{3ztNa-YF^Hr+L6 zOL3T>5@xxJjBFL62@oAG8Dq$k^VazDeKu^3m2%i%sy43~5b_=XB63e(Vu3SKZkhDM zx2-JB9^+(n6*}ao-F0eybYdWtjT!X6tu&QYXq+p@2D%Zob36N%=WV+~nK@a7*hzfi z+_>IrT0^fRmODy6d#`Zqz%Ned8M$mg8?MRHA+Ox=f=&j;>qqmnmmRYIK;5U&?`N_J zPm7MmW@DkTHp0^MFQkR*_m8LArWuDY!{gOuGL$DLN%y-_UJ1U0z8Ys@i`|R`lE{q5 z#8?~JH8&lC&&VC64q1E!-28H(SaP=0I_G&fJdTl{*Ua1+Ea|E@+riw}_D_d9rUik< zuAwI>2j=qsbLE1kQLX7evjYi|4yUv9roO|_5a1?&&JP3P1(cHD_SNHM{Czf z3!5%VJq9KEU0m3Jc2}uGGimgUpOkL7l52C4EJkZ!^(U^8R;q4s?<{D!B;usn9H9fw z>{|{b&)&kylh{E6I-2DW)DidJMfVTF$Qw~Z+8p%yy_qiv@uP4iun$uDFJ@f>zJX8b( z5b-aIA2gOqWIM4HGg;Z~><(#OA|rX}!wI^-UvIFFz+iEGjPycHb+dnW$o&IEF0AjW z)$7Lzjh4&?WtE}SzOuLN>W!K;1upleJRE@L_9v2EHagi{_kyaNvapW}cSxI!%P5{`on*8(Ux0vl)aZ6WA zu8l_UR6DUlhps^{!p=J8tRN;mI!H84bS_wFgeVNbknMGGNhYok>V}0TXZ2Vbm;Vr1`pG{WhGHt)*W6%9)rG`!5kXhz%oPGOCe{K+wXGaBX}aKIng8pFkFys| z$cXDbE9#`;CmqtR8S(587*lmri!J-t#dKxHnoxAGQ^sN0*AaR6ZLXOj0Z#{D&bC9g z+0$Rk>M9>Q;~S%l265(R+t`q%^u4S^E1@VSIs}JTszI)S8CBLqz+mHmlFJ(#t3x9~ z#I=ReXaPngwi4-)IB-(?+Po)VODdEWS>P~qb+TGdGZ^Od4Ql&{JxL|RvCj2mi%hN- zEq)zN(z)7HAah5GdF{$OT)!<>B2@8ZWv5Hvg7u}$b~jPaQ2`$@EX^7g?ENb9RW9wo zS1wT(mD0t?F8&-2TxB7;PR({PWOGN7KCLB7x)OCev*Fr2d5|L0v1zC(h4&ywK?O-D z>6^tg@$t0tnpoAO(F8~MZI9!zL`AmjV$)p)6jU=rpNqaCxyht*6B(a^J%=QgV2kOO zFQ+cO>T1W^S46BPyRaRjZ3bZNb6+LcMS6tjEwjb?lqnCWV;a6RKb0Ec;I8$)F3#S; z&{E;}Xo_XG6{X^O^KNM)dS|vbCP3N;k=+p0tJHi2>(Xk12GKJ_{LT!)o$A`_`Av7s z$T8tnXt8R)S94^U&|*~-0jo(r8E`#9luAK13Zg7$CVPU94an8gHkIULbKe;5b{{?5 z{;irxj&rXMx8gtCxKT!oM;pag%g`^B{7s`uf%2(b=jf}>^e6)p97XRxJ$mC<%P5_? z`D|(}vf&7XX*Uff9aU5jJnb_&{B&2s>FifHQ?SryC+gkY;qA)n^X4ufU$CZ;c6A(S z0}hxDH2G%N!kJhxHcgtcd%fIw?4q`t*b{nQBd^D1tM_k36_ShmfQ)-cWG`@Rr+n$* z%8NX=6lcAs@{)JCh0)m-c9(lSHfG_rP`p-$XAz$mp&@r8w7e}AFZ=|PVyqm;ap5@v zQgvR`SOLn1mkRm!@{IykAI~g~a4L#cZ6icnfXL)5KHyD}O#fE1c)g}o$0Ol8-Z@Y7 z8BBrSKO`sXy|rY+886N!?(7J(!Gr8#72D!2SS<>sq{)rnOng<7?t_+>jDcXy>K*^_JII`0Rg@=-JRYyJXSD7of}O{+b;BPpknlx0+uSf zRLYo+OQK?e+M+9ONBJM>(WH09p|vKFYY3=ehL+IjHj;_W9jF@RUYqm3@ z*~`Vn?mK)0rZl`GgB_~kv1pbYODG=KWyUz55KZC#e&0j(A;p>Ken$=h^b& z9Dg}$u&1;5Tyfy*%WChyWHv41e*RUJlG~(0`xmR4&BdiPSdW^L><@SR5LpU)aoJ$| z%{{*~4Ydnn)d3uhm-4c>EV_2G(v%)Qo z<7;SR@))+TmG^ScLWZ2Az_@Me`>Q_05i&`}YGgevMR4W_67VnuDHtYbpjsz%_5VQc z4fi^cc`EO~9v#l4)*10Y%nNWE#2=nf|8gQdYm&4+_+(gG$maBm2l7-T*q{uzygXbz za~zHojYdk6Oc8MR-00=jJwynQQ2YkoIR@SYdi)&lN5fznx+q?=p$$6tYlB10_&bpu zi(%GKAd^5|?dXVfT92fVAS~@QqoKsbyY&BI?3}tY0UC50+wRzQI=1bkW7{^~*tTuk z=-9Sx+sWxO>zrA0@m60so6;Yx)W@4QFRj_it)xU(2{t63|V5RQzz7)Xp7{3Ni0%$K#CB%RkHu*RD_l z<{|E<-bF9oadI~A5v&p!gpK|3F58v!Y2k$RG-YSw#nTiac=ACn&mk0aP8G%Fb@m*; zdA}++8}yDhZ3P%Z6@Ak79N0KbD|%1nyqr|3sEmXX<{qSkcF_-TGCDDpTRSv@x^&LQ ze}^e|F>|?I&&k9p_dCZWzbn-&wS2cnQ)RYB zsbJ@jZ2VicUZDz8a4&nkg8KpwV~3#@?49!6{Bps%NVUX>iErwsh$>6M8}q}u-+$NR z*cKs!P_ZDXw?ZdVP@r^&{zYZY@M!l9UnQk!ZARN{rg^rk1|ML}^g#md*{nHqE(5b_ zo2_%aF{<1OVl6}OGPUafJAcW-9p_rH^w7UflNLV)EW0w7V<)5|AkR}Vt2;{c0E{e{ zjY;vW8+!Ay*c~YDCdy1+g_vHgx1uCt5{#gN2jBEY1%ZU*d^SOK%l-w+9QX2eZp}{L zSsl1fT(dq(iu+-?`ByBNmjhXV-!%{>bILxv&~0M}=86@)WbyV%^M$pRyMWF)gbo~u zT@_~{$vc}e`x7Fk>9W2~;SgEawTYdp>8ged%xocwe*-D&o}rjBSdSoL3Z*piA7|b3 z_nXs@2sPD{Lr;|*k7SQGHeruv>dE1|f|{${h)Z-<{HDJraw6->yA3ZCV&Sr+wriIj zTzuwcB-2tv@*y0Fv|fU}oj2Pc3L(l7I?S~!oHiL5gd~mOwDEbZ=$DI7#?nhHb|iI^ z{Cv}t+nFxUj||4Ld7dJF8J}~5jm#>=aTIGE({7jlX+MFvlA9tb*0W0by+p@-NzTGY z4IK_5+CE5hB=z0U%1WHVDbEHHBS}CMcEl@Ogo!gqPc$&EBKIcR!W?JI*iwI=5>W~%Rl_?dBwFq)Lm6m6$?HVUF zrH+30ErZY6$ln*PY62EQWaz*hPUhThr2rfA{Pm0sVM}-^F(J<#Fry)8(Q1dOkMz{5 zRJX;aAgZ^FXaWavM3#DVWqC>Oe@HdFzchxl=I=l8G-WKdPlJcZf+(rgLDAk`OYwxe z8ygvQ+Qd_1dmO%7Wq!cdrZdyYVl8xuNTCRO7gIy|&=&+R>_ay-t$2|Um1j4>dE(dS zbRe%U+#V#GgetHlK)l2Gdo2WFELmpLcGPNoRIXObnmn?7;Gy%wTbp24p|S{Y&<35` zGad@VbtS~rDpm|nO`cF_)pwMJ&jg>N+8KZpbaT_!;WLn*9;#Y1E={R6%+j_UX;dyK*+({rH)~NnN8% zS;>-_Pc0TowhdJr_h0_(eX(^ zThAgUopLJAE#5nkC$~gyP@%|7-G>Nt{vcz6t^G-yv!ri@(Q`oC+f<*Ie*z%o0z7tp z8rPyH*ic-jKqLtP08Y=UUQt2|S5Ghl9#qhED3&W={zVp}z&~X^Gb7-I0><7oJ*Pi2 z3)zXX%$VazAw@>Y=eS8<(_I{UtliU`JLX*4T33*Fbn<2Tw5F&D@RpiGfrj0hGlUT@ zQc(Eiv|Hgy2If?BO@CgAwyqIw6m_zSxeA?v6F|^!zylm!>tg$XgSB8YDJe!|bEY1E zxk6Z76yq8Q2CFUxzV-4M9$7o-ohzgoZUup-5*Dnvrma@SdCf% zi$V5n`?~N#Ol`nCxi;Fh)WW#1AG0sRdXUHAnrLy4cBo*NmFtLfe^~bLLG;#eRZ^L+ z$Gi1QWb!#Zmt(e|9?5ec{kHxQ5 zR8v^vl_@pb&crLRvS!=|1_uWqCfqErI_47g(yH@V-V~u49Y5g?J=)L7b)3N@=6~JB zKbQV+r>?K=#+oW>e*dC18Zs{O%1y!pFG)Q|k^tQ{g^e-49*eXmdnX)IHj+UXcJV{| zIJ#|iql>3gak$jutJjD$HknqD^uDAvX}8dlD_l{Cr}Lk&1EktyLs$+ec`A?ng5TQ$=SSd z8r<|q)=J+nC+7@eW2mBZ*Uh=0nZ&zcdMDZY{)!S5)lNp9aP$OdX*p962i^ zd~3aEyCc2@X>Sr)TLPKffYPa-_oJUy24li@+A!q1#~ zd@;ilRm35GJ35Z~BJ9Rrf&^%WaAW}wClWJ#{HWe9JRUSY8N|ypK(5&ZIi5>UIJ`1< zSlF70{}zJ$I5zx+r%Fj-Q?!|#(0t>P4Xu)DUoe;KB?LafyxGcu6&Co|#*Cele!-Gm zdrI&D4|mML;QX>IPXs`8D)S+}hKlgS^u<|G65SYm8C$bEWs{jxi1`BvzO0n;XYA*S z_~1k>yk~prxWqu$Zr@V>1zneVW1>2}I(}o)?0me->O3sB@$BX{HQE4ooYJ6K4^gd! zYoe!pH*6iPWgThgq2XN@E?Z`~T2%iL?iFtP&G^c9n+7GgLNkC_EjOoxk!&`MQiShe z*G?p^d=%(DkxfRH_5e@qWC1!K34Ceu1>f)CS9oarpxaw ztPGRpN+$acOpq7nshT=345jLe^MNbh^gi7M)3kZQ2!obvfz(rjm#EzNwRlz@6M?kt zF_%$>WY3}5U%6qhBm94-lq8X|naW{LP9=L*Co7%hh9*vJqMa1SYx(bO0nE|%6vWpys<3vA)XhEFNbC)SrHSd1e9|BndeeClrD;YQSj0H~F9*6C|q zWV?R*tMIK+Sl742`Q6Ws)_Z>o*HuW*C&wVg2GFWwYq8PnEg&LCF zi1GwYY(jlGAY4CI7>e&x}u!sLxZCwmb4jaJ=*UK_?gTm`}z z1ULr>Y83^{#dqA^U(-JeNIny^2~8E~9D(puua6o4UI+Bug9Ai?bHac0J^fvXg!OL5 zJUfqKdIJ>X>6gz2WW@*urjV*^5ZF1O0VGhiMBpzF#&StTa0&w^?1v!_49LNSic4Gs z1ImT^mYrFfhrR@IGj)Ox{>~fy7EdqLN(t7K9Jss^RA^%vCOAn1=Juz}t=S6vs-5l$ z?BC4O1>h{}mnAG=5C@S$Ci>5g7N~GkE2IMhJ2Nf5_zzOuz$$c)szz%>Zk~s*g{s zWa&SKpZ^7{Alw=r?E%#}-Z=ts{9rMEmj=%OQr}KMzD2*~RY0M>KkR=L6_G9B|4oPX z&hEd52A*!}^*^v86PY?nf^osAK1*Q(%pG7|WXaE69K7XdZ2vooA3V(Vb z6P)}7zMWaV&whT|{Gav1Ms|SZ3ok(c3BlBtlK%y)fPRsgsK%kM4t@V$U}ZOvhcurp z4p4)9Nek%;sbS%_m(l{5n(ghlRlx@d3HYr)y~~e}19YK0@ICTE$}!<4j~MZwT>I_p zpY!;*qctu>XYdCA6&sm~2;}St;;GNm{5`f0?(V=xwFq<+_Z9M;g77s+odcL|$3F*O((1L>;Tmw;tNG3_ve0sw_apS0Bjtyy zljHd&KdIcn`YOrv1H!?XgOvHh=mC7W`@;whbQ$+=1ipO!p&v%n59QOD?){QyHVXYR zy5|uc_#XHwf^-cnEk%6S^LFR>5&H?9Qf^=w#kYnIaGEhMsA~X!9Wrk?L zKyIjl|Eu7PCv`FU;w0u0d{Jfy4qvjGE+0BNUV0EI8GrnXUJ5%l_>E9C1g|md6z(zZ zRofkMeqs=Pmm%A_?Pf}_9rI<~pN2P zEsp80hTYz#W~+05z0)C$5h7Fyu(VaZr!v}3j%pOU5cvh^ol`VXKbl5dAQs%1P}tqa z=?dWW@MZE(d^(6%Is;`1neqMY=AXJptv30TbfT2bmgZ6&|`&-B!#hyWv~1>&{o=gK}8 z4-18*%jY; zs?_|kXtggFP@F41&)lKTp)u=Cj-AnUY*AWzsN#4Eej0y7lIAmiw7WX>V;xlR>l|QV zkuDJVB3lWLl?P4^IPe@7VuX0SdsDC6!Ple}+{)$}Il~!&O?#OD{J_^me7YVA0)i9N z4abR$(op8(qOq3V8I2f|S+p9EB^ik1I)d61)VeV=FNF$k?UQWYvtqhk#iW~0PUSfQ z1Kd*sH@dVD*D|e|1+g&{(s^jIcL}mP#Y>W>W_}q70>kocANp5U^iP@vIu5p zIB=(mt?^!w{;m@lQxh1j@ZMKxq%Qv2hm#6R#a=@Z_xPA*G~v{qWUOOuz^0G z50o9!6t5&(&m4DD6eWuxCGCe%_#cempEf0dG{Bcq z+KsYscWhz<>K*XVG!Jv1E@)hs7b+=Z;300&>OG`!@qW({3LHvSP1a;5s-sQD3g#`IeM2E=&eH- zK2dm0&C#pc%m&Y8_kPtvwt{ZSS$n{tDg!ij{rxN)FJ`uEfM~JVYVkbM9R&tvTCL?T zHO%;vhKUjRHG@QNJEhERw4TdrcMYy*%2%HvbI~puc~1Yo3E}3qBS#r`^|BaUS-M^B zB*)?_YjkL;UNhBXzLn{08&Xs19ei{EW8E*q_fQdk{8a9v7(bHah$Z(S2rBCtw?ySs z-U@jsmHmsgDPZ)G5!XQ6v=i2=zNb@@T7Dh1x0iZf@7CrcR(e!*$rG5o{!3l$IoI3f z3Avc0uY6qUd(egQ?>(9y681 zeLBQ*d?B%!QNk}%5pFG(>`M!}ndcmSYE)UH)HNx}&#yCoS%YmJeHJS|I-hk=Ts)QY zk3`;%o+B}wah<4Uwl~vCuX%6A!}Y?=TKR4!{hDSiMjel!6i=m?EhNk9?81|faPRk1 zB+R6atF=u9f@r!RHW+_dV4FSV3LYu&D;0_o7ZHNNx_4&>`wZIN%##~${$Ah~Yl!o{ zRelaBH_X_RlPA3}sO5?CG50vDFYkC5J<-efT538%fto22NmMx5oG_RXh~v(eDLZ=3 z%X@1wc+*sMF;(f=xb+=_TI;#2pL-Bb$|9iVLMS@yNa_%ltO5yQuB1V)q!2xBte!v% zZ75r61tK>c;`z>cuMeS4@90(|@TTvQA@)T$%XYY%t zskyb5d$4~UtW4!VKmX_Wt<+C31@@n}h{*ezo<+)}RWzDYg|=*8!ZB&5xx$UyNJ6ac z0A@lG3zHS~8txi$_jp86{gN9~nP1GiTmNE>6HiRMorq(|Q?cJtY|Z z)HbV3`+Z6?gLq{=Gx5;!5L_~*!ps{kYgiX6oyAB3<0u`Vy=1IOqI&cOZh@})7xD2f zp^>e~N&zYt(l8ChvntDTsyvMOeTFxB&-)2WQnCPeW!Am-$U%bs%XKQbZzkO`q#YTo z`)w{)@X@9n7kJzc((qHom66Ncb`yMyII&0=TR5+ELRl$apE?o;c_8p=k#eKkzz2Go z>P$&D;jUls9x@a8-#v;pHCPLzkqk&T3s43@Ow>S@_^U#*|FYy;M0BrHgL-oEMnCK3 zST4$_jy~3)V~|FRsjCe&HdZ*rq-8aZRL`m1^>ZROUg#dY2*K?#ZoymeZ}3$s?8DwL z?$eYV)1DCq|IGI}6BnGi@{v>vwT%auK&rartTqNT zVN{PYY-W_ocR(61QPxTe_b)`~xK0C+p{!`74?M*%%C3$-`cDeW4qkq*^|%+dN3u>q z67mLe`(o_2jJD7XPFneS64Bn5(iR#INLzaCEtPa%I?k^dcO;JBjL|7IPfVAD{ObvA z80Sp3*T>TEeZTsA2F%U+7)2l+q8%erKja=fSA;B~!9RSaQBS&|U6N4BmIWE+WyhXU zgihPtH|-;ca?-S#616?W+f;3(iFiNG12AGe_{*1I8|@)Op15{K_tO5o17&z6iCFlG zBHqX|F3VgJCVMG2KrNGVgl{vcf@-U$AC+f79)()YSpbx+RE}e-MT~quEIfBc%L%V) zW_G)9UjF_?K3w>8Nx2jiJUprrOdFp1H5`Up5MzD)eG^)C0DY9#Qoi!fEUn6F7#5O& zLQ;!<@@LQ4BQsX=%tlO9=2Pdf+HI|cWHt&@FC6fTQHCCf+p?Kk9_umtlU$9jUU(`m zd{l~>6D-Xw8i$`i= zgdIiub3I{uJ$Lrk5>?pC&AKNyvL$A%*hf!Kv~~!^nsil3k3VohCc!xl;hl19h55u+ z-?n_Y&=-s1V8@EkNb*M;Mx=B>$ZKs=io7ENo%=sjp|*s3`6l~bC<(!j<)7Ffi5cIj z7_oBcNqbU54&BO_M5#!xh89Q1b?UC*=4kllKE->}2en8E(Kp>6+BY?t?t(dn*oYHA zsTo@5QEt~STgyus0ZdOK<;dsgX7i(^pwha{G<_(LO!U6R?P%&F7V}gb99|LzN3~e+6c)r4Ice_ zIdI+h=>Wa4xE zv@=Is1}LPRDBP#Rq-8@}l8J@g%g17%ClU(>cq7MDYO?ZaL@){=EO~NE^Epav!LJPd zwJW?u_vAO^r)xpvZJBJ?#)-dB!A19~10ms3_^IZ2xi?!n8`)-}W$s*lOci~kfrDQ< zK~@!#BBD)_fw`in8iV7`+$rD<$xk0>tri7JPQnr7Mc+y<;Z_I!bBJ~ z;BO>7$gtF2RHM#pDKv@1%_`-|qj-2Pf8HU1AHs+t{e>TmgC%9zp8eA7-}=H)rAJ+LxcbKLy}ZI@-(OGO#fE;BV5FrQxU?Gx~^(H7yTx&DAz>f zlmSWxv0gLz?l;B~bpAEVRKVLL<>KE7+rF#~oPa|qU4!k>JgBjr7p*U;r^a{s6K|nH zBmEs3B23j5<|7H`LEtu{h+m9Wou%IhYdnS5j5Y&%=f|S$evu=@)e9E$^EV=xa8?A; zBXXwOu84XSA7qK;Q8@FJEnjL}v`1mpx7Hx%gqtF0IXL}|6EXt z1u$RTs&}SdJjJnUU{$D_eW{1L(Z9gMhuVNH2n1hl&UYHFinDh*nO|Sl8}}IDtZbY| zf5T4+@?2AfzaBt4>S1NcO9N&fEjL?t>Zas4RQ5Zgf${ zO9~PX;*F78n~irPfZ0}yCwq-78XuZWF3kbBBY&YUFxw~Jf)%VEyU>RoTER!9{oExv zo+Eje6F4w>V*lCe{+>Rr^i(r6pBR^DAURO{ya?&DPl=bxuxPFBoernc=2ENIxA z>(}q`JK583UriAE?2wiuSE9e&+7kqb@5HD!N(Xaw;daX9u9&hUf7dZ09p`>2z}xY+QIo$fgw=$UsvJ1*RE6BrXpX@7Oqad zJuf6`pVuDb`ST5?nW%7Q*=xIWRfPuOBY6Sh$ zla-ODT$728h^aj<+^J#g9SCesY1lj6fCps2yRMUdwZv3ESCB`3y9*}=s#r8W?~4Xx z_nOmX>r~AYqdg1xbg?GA*JYvvMa_5gh?0-w8s+>{rfCshW~4a2gAaXT3`Y)e@Z#QP zQ~H9+!n2|{I#Lxiujt8c>rLcDKrDgy+t72m=RE+R%|Da>B9OTuV+ z)oY%@QBWy}zvAI;&~lfQ?*W_EFrbDp-y?pr% zD}qiv7Ry7Di`Y7}faJ@leW~ZF`!R;Bc{W}t)5vIt%5ji7#(!9w(XfKa{l~4~QIBw4 z%%zvUvxlvS@&PV|Dnz<#w+C#msKn%|Y+5R8jVb(eEyJ#YEi{sM`tX_my~h6!qO(a- zNmn8c&Xe9pluwFl#3{+;+;!sRMqd+ohq%<(M_S$<$tP`qXMx6>VSwpjpsVW^P5T7S zflb1P^un0Cu_KDH%%1$I&3309F!QjEKLffp`5QiK=Z&~B7W41+589wDi*qB&c7U=a zJaqD^hCTu9?9xCoACDO(&Zr`QM~1>}UI*cn(3Smd-fx|DxXCwZN!Mr}ajZ@3IJnvH zm(5AkIJ8lH*&HU*Za^eSRBwev3r!BS3_@F_nuoEE-X$#i^4VaF$JlYF!L~3ie&qJ<0+Q z%lj3JLbTb);SiJCLmQLW747HlUY~yS3Qvl{^a|}%H!l~I2E_t*g5ZyltetvY*PvCl z1udVbjM2D!-$vxWI!~dm4%1eNFGJCgE2WcO2b$*CD?8R+xr?0-hU~!5j*LseQa&C;zTH-8yA>h#s$H{;cr6k( zxv=E)KNg=SF2<9w2u&z@@7&BS^qUm$*}aZHfa427F`H1U!|oj*tOvX&22Wu3a&3 zfAh5XCbe4SxjZgOTGnEg;6^GdNe$JS%tV7xd=YfE8!5a%Bzrm2(v)`b;CxDGZiyT0qa91-F-Z;u(b=%IHwRv(^ds#)pssIY|BELuA%}qjcUE6Ow<6u~eX@Dh8g)*}WK7ga=4F?~} zU)Gk54=+#%q>>HQ)qGV7#^R_ZtO%tzYU4U|ruA3b28$O2ONJQgw>y@URF}#QILpfM z0$e9IqwA{j^;ttEAe<_{ih#aS%gP(wL6DcXfKF0| znx*BD-X_hBL;hP_e3oiN5bf#am{ac6*V$2ZG!vB!w!RQ7d4+hdF@;qfS;0+fV2mtVo9uGt_nN+v0Owqu zy?)-ML|I~#u&^>!=T=lvt!Z$b#{_f(TI76`Di7P$8gE-}XgBxR6LbZa&Nc5SMA9$BP5T9+=x zIIurIIqac_Uh1S9$1;&S-@U`~DNfdKFTF6kCbCtQ-2_n_ofWy$xID5?+~X=D-7LJ_7jcpfv3TNv0Z9UG%^KhO(9?jJRpM)VKLgPCw} zG|tczLxx)0^m^iBvm%r&C;;nrXH)%s>Y({`iuMcajjpVhJzaMnn$Mjg+15l z0eqiHKHkB(0|{6Q&i?1sQJ*A`%d7KgYmP0nhgB6MXCx06pHtqAcYlK}ae8yX;ZTR9 zuYCBOPWAGyJLUI*>~*@XOqvoySgNB{D|+C~8n1Nuoch6)FzmU*JKOkp?8Jo{oO_@2 zGWUl@>ME61*@2>%GxIwbLSWQjDHz9h>`rOJpve0h_{v%g8^L_QloxB_HwpfHXh7z*t1MVg8u#9QJ;>dz3 zR(g#DVOl+B4+|0Z|9Wg!h3cF=o;iNL>tuJ7a~Q7pJQ_aY%YtRQ=D7bRr?lN&(gZcB zF<&M{ZH#z;y&|}J8Iw!VLrcbq@AVW%Xg*#|PyL~vU|HdR-tm?UjjU(jxNR0a1DKSk#XXQz<;aHHquBY=#IdiVX=JXQS&P z_;f4dd7Q`Rh*E-8F@;U!V{lZKZwCi3i0S_R7olo4r!luB-~(;UNTkgK+l#=%jN;oY z=}jB&-srBZIl>!<%Hy)rOdjbA`E`F@&`9_tXgl$(TP@}e1=;YRJx=|iI=e0uPbb-j*WjI1pX`RW~Ot-bwc&gUY6 z%IEv9tr;^PO{_I3iHA%}xJx5)@69J7&BNQ!1&;-LhNVTW*(bwX<7&?mCEMPs73;-P z)Hd&-{s3}8g^;#UY2yR~LsaRSMYH1K&fbaFs^Q6~rw!Th7aJqGw!lM*=FQd3r(+D8^FMMPdwxL86R3Xk@tJoqhG@ zzn7b)UVzfcv$iTT3MGY6dO5Uu|4K8rXV|{p9*7gBO0^VHgKSYXV%*@HLfEW2tSPWg zqn;n1r6o(ps{8puY*seOsc&F!yB#|cvBizRCewPx_}^R#8hsu-x*Yw>fG!Q<;PFw| z8e>#8o`#SbxSB5vY|HHbMWM|?qHX*v5S)9;Ax}xJY?D3;muUmaZ+}Y?e|=*AW1CPQ zD#J67Q<%dJ$6gG=nmD4CHLGS-+d9$Wv|o-(8RGS147`)??tL1>WgLTbL&>k2c~#n5 zxhO&=zNrSLD~%@h#kIL>kd}92ufeL59<2y3CeFGqtjT`uV7);y&B7B;PFhJZ)Eq9) z`|S&S&<#~5Z5`1dgq_BE;M20W&JR5)eil)l%K=Qz3iM6`c0g+{*PhbM0Efg^6XRXZ zH0wzI-m*TV%rBzxqa$CBxiV zygnE_uX*3IiJN2=t%k*U-TabHNJ9i4Ek`9vb0j|er?^wv5>{N*jzXckOoBt zuW=ev@#?oBbsviBsT~RIFA(7G?)XI0Sh}EX72*k8lb$Z#kpSt^WECdyL&aU;3cpH{ z=K`W#f8T!VkCj z2RFsH1*1)U|M&^qpT1ih_3)x1UvyNxQKEUSwkd?F`224Ev)$LtEP|>|Q`sN!ub>Uu zSIaj}Ex`Cl0_F@jR0W~1`d**1Q9Dyb$7yZrPE5fWKX7!!aB!g_7KY;ClzP3t49x4HyrLW)(BI<9-hPY%u58y? zE~|Q#7huujvTj4IV8U>G1Z>yLH$DTQO|@9VrvuDN*L>%|pcPxGE+r z@?~0us9SJ@x~zP9-FpP4Cr_-mnEhHbDO#fP^V%i(m2Xr+c^e2oAx;+YW&l&Z0kXr( zD{(DJ?|lrmpCt7O!HN-uMz+^Y|IxhQ_@l?+z>E^gv#p`#*kjvHMx|KESTGYuOdd(f za32X2{A~Oj_!I^ibobP`ZSn!iS(*;LDDJCX{OP4mx`Ekm?L^U0iztT=Rc=x#f&;48 zUir59sOj;8~<`x&>En~6AG4NFsk+5*Vs`(qMU z1^$Jy7K~y=i_hf|NfP(3s5J`VE!H19)Kr61KV4#rm>i+#p|PwA#*aNRoQyjHAsil(o{z<6G5KyEk&b z3EhY$Ezk5b)%HyNo~7?`fR4^T_JH|D@_;iOqVTk}Lm>**j{JOSa~)Pf)niLQOM0*n zfA!4EC4^rx@%9%0H7idt>y5lmh~KoWn}WyNkIVV7;$fFp?Ec%`>e8}74W6MmVWB6Q z+~jZMjZj;Gbra@ZRK9{(C^0dwsmBdG;i8)h1X1Z zhgIF?MWgTjXYQqvF%P;qC);VScYGpxA*vwUp)tfo29gD7er_tci-telzTCgvlw&3C zwAFHy48xzc)5^;*x}bBy*+99mEP1cB7Lsi;Szlsrtr57k=U61k>T)s`g)5yev2?IG>!08Z@O)hxTSHYE*Dniz^Ad43+XxiTSZdgSR6R^*7+w__DJ ztrCXR%Bh7gm60cdhIl5J=@^qB?O(W53gH1ajhFUm6p%ceQ{aKBVE(WV6FqC`5~Dr? zuE&Xq1m?%3@pH0>M=GHBvBM2Xh+dH;`>fNE16m>c zN@V;HviXnQs@#gnNLBl+xBB4Zfa?le(nZFyh8rwmjsa)RvYZ&o6xhTiqQbtN+g>RP z=&9m|b*z}-C=8H&5k^`x^fr*`*o}^(Jv9-=SB}+2! zhnR&NgP4{14qDRZdGDw zfnesHhzQT*7i<*e2dl3l^c$$`6pYzfZe9IP5yVJnKrr*Nd(!WUg`kEUjVea2b>c+U zE0b~OCmu3~b4;#wf+Zqw;nu~emjIj{jE2_D+MUAH0$($`plbB1OEB^lUL)G4hcn%X z4R5s7c=SOuIFTCsXvP@I1fjfW6F@!aTS1F6nV_;3vj+h~R+b5d#MbDMDnurh5DnHo zc(#WTnhb^5hPpU+*0QQK4Yd%Q?x6Ua!A8Q}s|0l3x?9#hhh>h^MlX*nwWHBPuU4Ho zJ;&e8HOdSBc&vwxFA4D;Vm5K!{yA+t8*$|*7)=l5D8_ZjmnyllBWqQzf%H%uLWNp{ z_ls$lb3iyX#M@Eb)}L_|&aQ2JI^@81G@{w&yYp*#v`NGyarKA4JyKm!P7J>S2}|eBI<9_!JI`iNYi+#r z@9dt!yY_fDwp0kSYbqZQ{A&Z@eMIofw1>iJM`c71IjvN~;VFM7&(3sc6Wk)^9h2gO zQWoQ=21f-yp8f?0P24h$J8J%h0)Gpl$Ck-!`&GIST$-cn>}7I+WZEViC^i_q9>{S z>9H}dxEI54Gwr>uI~(imyoO?A5l1HjoO%dg%Tv@A$5r~Hri?+N_bm%G>0iB@%HZNx>*eEG_I55%Z!SeF!GAaM&Rz4el-;fvO z-by%DzT9$d&YGt5ga7YzQ#`3en1^YRtMmvtf+1`!B!hh;S`GLEJg)YX0@n439my6T zVLw062R{*65V)-IcakL^t!S5bBuu<%Yw3dNP^i3q((5D5)TL&QY}rysH+qOSAK z@VlrgrPevbn~6ycC^BU_NXTn8(|Iq?3yI5*y->#XintFi2s~bGYf^#%AU%NKw!yAz zjLuGwJ}39B=i%B{zoD*zpv{%M8>}GiVd9Opyl{pIqe5kM;b)x(iEiTEA!=%^BR^|F z&^62d3b$km7aQ)3M6TTVgP+$X8uveCC)oc}cH%cD=l{2R{&RgYGXMALe?})b7+L=J zu1{BR71YZOJ~Ae*q!dZY?r4a!r0Z!WHmo}RC&*Xd`T6}%ZI-WQi0GY~bI$)Uwf#u|GYIBW(8WJnqyR=6o+fBm{5 z4lG(=B&0fl{q8+L9uP1M$24ZRAkAl}4k%>kK6Dy6n!G*BV4lCH@3ue~DH3rZP`oNo zpg)R!-KSm*Ru+f?>Upd)D0T$s6Qg+>gMa{NAbda37VmA4^0y`kxPg#BSXWoo>5Y9J zHcX6gf1Y_B5!wx~II>)jV7LD<78Xhj;=3A*peP~_ekBkHI2c%%uwu_XR#s<293>-A z_zO@*pU)l#pbh61Qzs7@4g5z|2A2@1=~m$V8#vPl=@p0)0f7`~TLKIBN*d}`xUQgJs|9yBOS_*?G9?6Fov;_*hG5-vp0Apew*bR92Dz;nQV zcpYN@RiKL!DZ=&R2O z1okB*>~2iglnDV598h@I=8x1WG`dKeVIAOf)R_B1`(p)$M04k4f0gYF_Mt>vlaOsmVA?+7A&$41Q`tG zmXQ=h?iD!bRp@I^fM*&JALBkZ1aJd{1T_l}Jpih+cP;UIH}?_@E9TWmzKjRq7gQ4@ zY7iuF0Kn&4mlLJwC`8Z;^6TKcvyITkibNP5G=3-OhpoKQ2*jVr5T!wY3EF}Y2_!xa zXdDH@;Ai@t{inC>M@%+vl>Y|eo1%~&+aGxRN6`P)6)<=Eql_8=Xo*C+-J!rTfZ_@P z1^mep4tDwyZ>4Etfl>ly!`p#Tld}G?yU~!o&1SKj}Y>N{IZ}ZTSb&V zg%XC#XPEuDvV{Nnr!U#FmEd0lXt~@e2$_}TZ*~9piWJqdF(X}@1`H1Hd?U^3u@V-& zh!yOSW9c2%GJ&E6`t|*okUU~fMlwoyLnpu61fXi3?TB0E8(_8S@lp`cfd=i{&k_RV z-v(v>W&{&5mt%L|wbKC=+&72IK>{J2g#{&M)#sN+8OCI{=>2q8o?&<~U z`*Pssj{#s~{yx`!-GqaLLiQW@l|#c_zSGU9wPqmDEOLMjra&f(fu~fn1Puz6*iZS6 zIHQ#dG31I&?IA2GeQ;s%(OW=YSIRwP1y`-8DG#z0rLpA%<#17CM$@u`{2#{7sX36a zL8Gy4n-kkkCbn(cwr$(C&53Q>wz0X{t=+2cVlVp#bT!WNol}I%EHeBS7`ac4r2CZTVy0c`| zmtcJC>P6=-Gx_Yc`?DrfD$@dEwuyR@d8*3N-LK2-Oc+f<bBQ!S(hr(aCRTTX;Otv{^N48g$(Zsb3d%cfy4hck75N zZ)cP7a+77UI+Q*|YtORUjhtr%HsN*COw*D`=A$}^OadE9PblYut*^eDz{W}G*)S3l zrTa|MJ%RRbO9=<@kX)oOMHy$6L3g!|p3T6i=#_~J@mFEw!?0q~PoH>F+brp^0Nad@PzjPUdrjMVhAQ(A!NATJwS*s518OXXfJvnCDOOSGnMc04u6KKs@-%@}Y{6KC4(`P7juoXerJy`R$C68%}9 zjBY7VsDtAkL0G~uwAm&us5aLLPZ#BDIA{ETS-F} z5ykG04VbuE^HM$3QnMZR*LzRrN#pM3G?_)GKki(gjJ<#O#AOah+LSTtcXKeH1-!7= z?OM`XPJdvlmV8tHdt%6DnM96%z<2;TS81XWk&Ny++2>M41^`C&cP^(tck#Ctb|!1B zGw_nwdyl57DPQ3!51uMq*77NZwRS2VVWdx6t2Zfu>*ARt)D+@`k!pX@kC4E8HzK8c z{U?RnNNdU5u$KgCocibd-;QyfsXzE_vYr~?2Me9XT1mjqZ0CN-GUv_(bqhQIoL!PNQ)z){#$|pl{W2p{WJHSeb z<=O}yR!G94G}!3RbLC)1Bjw#sMh&9-?1V3S4-tKKNmAhL1<8p$Y?L#4bxU7)_(wBt z%}|G@&KPixsvUf;-PacKu@6=yn${Ah%rkc44t516?7m(^3cG3l;ICTRO$zqj>@-3J zVQGQlT8~U!c_^#D=-IO}>ZL_B!&b%C8CU25ce4pA_VZvzwuH~~1aY7z?tU+a%I-M06IJr!s`xJ%l zsTHyhOb`OKaHa#f#)27DH>`%(TkIw8k^{>_$8#r6-HU1z&YdcEp>PC^86(f|p0FVL zfjObp68Kz9$|84%7Zdd=nbbKFS~tD`)6X7MD{`s)gg#ec0aCdhLY8P1C*4AVU&S=I z%8`?`Jm1A{qtd5Z{K{5~6Dq6+vI#vNu4+BbLy67hD4-thaE~;K*qJoCg5Qe-|X778$5`V%uD)hcwI|lG! zIz>hu!7)kHd4u4`QFuf?&-%V^eiP92r0mmqkWY78NAnR*WeAkEY;uom%jMi=xTh`n za9cXJd~=gnt17KRUBp~pdG^j#r4F)nbV_tC4pXGQeiM>%g=O+4*3y`JZ}P$ z(BcL=Or({Icmk^s^KN-U^epaarxhHMe{sAV&(R z6Sh36mk-xFP|8JZC@9F}MV)&K&+1a|+u*bB@ZR&rcYlpc@>ZoVVS9NPqw}M(QjUzp z@`x;sm0ZTq2|Z=q$t00C@j-XeXE{eTQ7e33_{$ud5u}j$9zU+)qsUdOj$;U#x3$$S z%iQ&R7#iEALV*zN&X#0D=!jcxkhuFU^XGj*2jd%@yYh;h5_@d*@y#-jQ0(=62?dy~ z)4z@<9OL39J!=0#LFA?2Un^EN2v`twNP8vilch}X@6JZa`qwb$JcHFB^cnCsO+|6e z2y*`B%ngN47Po3;z$-1|A^h_K*!bF(Is<3z583p|#;d;6b)V~3&>~4-kY(L`(AUbQ z@JFK(e*3Y3<8|Ju+T>WW`ue{dGMW2evYo^;-W8E|0ENIfY7F@( zm!LUlq5@Faam#dDBu6Ra;e@*^W|z*$L$0rgU?7U2ZZuKjD_JzbKiCGuQdOtBr@+w5e^0wheWcNC$_l!(c) z%=ZFH%^g?qho-x-Pp+N&iLZ3lsO9i{NH>%y8iCZF&cY*vH5O$bBE~VA%;)9wj=4v0 zW4k7GRqiVUYz5@P@7-_(Ga0yyT&01h0%cQ^NS2vx7ud+Pn4M|E(rAwn3w6kzH1z6v zt{Fi82I`60sb*Rh3Dv_=EK_MXTg@J2x&E%({Bnajm%N|1=lxdW9IITA1VI&*M2>=1 zw|`%ectesbxIDnnCI#Pg#y7K;?MNcdwalyHjTH8mRIVm?#fsePXE|;I4rw#4^>c$+ zV^Y-?Lh1#UDcl+JZd(5`b5=}M;(UZ3D($5%dvaHJ%aa^2W~5}%bRl8o{UhZqHyKvT zqKG2$=hO|~-jX`@3l!2nI(iszL7ZT$dm7wHU8qH7MQVTkfxEcht>QI)e(w`N1e1&G zvDrFx2rR*;8V=3P7KhDKw4fvJ0T=s3LwY3V0A>hTA-rYlc#~VI2Ra(`XS`JFuq_|j zZLz7dG4qF~dW>dM+NOGAs&@=XEqGCZ?Qfr519^RIKWzkS^fFhhCyG$9MTvAfrla{v z$-~$MjrGYG^2|R`ZE+9oevz=|6Y=)u-hMXAKA>0*M7YCH++Wkn+&@g{-?^gLt}FM3 z%<}ATNjWD~OX~{OZt+TLn-?n@#D(*zg$C;$JGu*mFgTSjWdD5fixT_eF7woSu2cyj z^owap1Lv!%OMMkk3+h+O_Lu9AIB4cQ=F>$YJb%r`uJvUHK41@5WtiY|+hAtJ4UrE| z)6=FTl>sz~^y2+ym1I0N7tUx}C=kR(vsuEL42$jjL^lHk^e)wk==?%=dzd`-Lh^|+}JV}!=)Zz=-GqW z(ImANCi8@=Cl&yWuQ)e}!7+^T^XVoiQ>x#S80wsTif?_z<9dn<70z{Tl86vId8Dbe z#I&(|+bQ7;Hs3X&3TTTd1$o5>*;(c4a51r8hH*@(X;OEWS1pneascH}1@82Dd;uw! zyH#F7znp}#UTKe+j-4RplkK*r4vGAaCbeL7>H=Wtk7cy%7hl&tsg>;{6Svg-p6*KK z`8vL&I9rYUGJ1H?5z<`F8?6jY-j6-g&1c{fGtbszs=8$-G;_HRJ*{F$SE7BRCv~uR zCE5&uI?Ie-Zc?kgaPg%pZ+r_1s{^=(Bb$%S6_u8|&XMM%oH(+nYNPgk?du@qB3sa-}B*PUlX00oJl>1=5gE`f=?v4q9 z$;KXHS5-v=G@xKIIwk{ki~Ivs9M%oD5FU-Nix;r@DSPUoTv`LO^0LoM6By0WPZk}H zlP?hUA-xc~aCOO$O-@-&igM+1n_LKX1bmstt802q1j&OK=zu0z)kz;gif3r?H}rPY z2a>6l7Ry9(nPS_^Rom;PHYvbk(vhzXIOJN<&?0NQhTsQY4bhmdw1BA^_`0oI2i?(E z)6XZ%R}&W!Dc6Uzb5P|saogSi*`9z$GzDsqh(U}h3# zDZ$RKRa2jfj}uU&v8xvSrE8+>4Kg_IQdbS9i zC^Ij*Xj#%KfUau=_U(*OqX|ciXJS)eK9n01n0~zfXY&J^k7j3D)_=faX&g)ffdmtCp5L77Any_;3%qpW;wr{ zuCZ%#uo+nOagdI=bmLk%77FuM2oBjDgHiJ8CBm|2t@@Z|DbQbza_xJrI3Y7@@%&6u zBBW4Kw8g?50+ zmmrtAI`RZ9+hD=Mq0MM%{8>^h0bALH&Q3K8){cs#KrPBFJAh?tz@rN$4aK9~z+};Q z{%mXY3AT+{e)MMQ{wt!9Vndb3>jgUa7KnwBA(B!zS_`lL_az8yoX~aQ}<44C4K&L6TNNniPHDkse(p*O+Pu%$+iBYZprg7a})~ zg-0biXi*u8X~iSlLuO&djrr4}=!k;yL$7i7p-pjq&XCknz$+i#|7$`-#K z#rZAD_?Dy#voCVTduOottI6=A0cvAfSOZr=W<;XoqN~oc^bM<{oUOqd6Prt))?qG^ z?^O?`uF8cH^ypiY9W@(uRnMl#RUrzYVip#RS4pFD^zN-hjcEnT;Nlj6_JK)EEy>T2 zhb-e@KKV$SPZVX!f1gsj!i=xuL9Ns%?{`hyF)DG6RQ!z7dlSUqnN_6C+sl)g3hA^r zIJ!0^!6mOF)FQHy{2Ia6il)E+9$YL_enp5&Hn;O?fK$i?iBT4N)E;%Yw?d8K7c2azlMAS!_vM>2KE0M|$U-&MOFn%%E$h zRtpogmr>ihWs?=xg^kdIlNpHwjVR~+O;oyg^_=j0;-9x}&4$WRK1m8xzB?0+#%5o{ zP*?vx{2l_G;!gm@h!{TK5-zeoJ~WP6k9tS$nk`H7txP3U28E)T>*?lc+Ng~#L3*-b zcJcxkvRn>$BwYhZ8*`<&v_PQvjLLxgvD=^yr`oQVb`Hf|Vgir#b&E>KB-j$eA5CR- zIhD7HbmE-0(Bw|!j_6pNDz|o1k+oi=+YRrRu~f`FdkP8SISrhgS3={hb_*0hs2zxn27oIHOJn zAz>x_1-;sB&3D?UR1#x0;tIqTR~v=#vWKDJlnwyTUCdq4EbNPpuZeAsPf_1-WA(WS zVB9zjFREL)+*joiwi;~2jtonwm5281n`;>|(focq&yIim5hIRH9H`q{%>xU_cK{9# z-f=Uej$>Gv4bQW69{FKR2ybjSHjl{-%4W^xT(-Wit<5BGyi~JF^L-gyMO}|c<%6|w z2XafKtSszug!MQp``8_nwg%1tF)yMMFf~=;S*vu?IP_|6P@y&oMrbh=H%&c1U@}f5 zA1FHmtNyNTE-vQ@Yz?jPo`ZN@sETgZD4ouJcKQ8XWp6L<#!8MX6CYx~`=`SsqR+H63UpW!UdupWmn=?-T4?fII!0g2m^+ARnY^RhM5(3suI+ zWm|c5*_lZ@;_h!WNE~HAMaF6qlDzawPkE|G`Ih(@-n7qSR!uC|_ zqygrYdI#+{-}F0=krJ7vl!lB!%v zvKe@BG*k9iJ#a$X(*AT3`Bc@k%8JA)j0jIn1VJy$Y)b~{d4ELSaW64G>Weg950F@4 z@tk>vvPoqmfOoLF5k;20sK6wWUvFqCY5G;GxF(vx+TblMdJ{XkDMid4U7^5ldLA0& zuof}9&JOAcW>%yg__{K`nQsWT*b>`n>wUH3D)GGxH(Ur5Wi=@(5|7g8YX?D)RjXjH zCn?|fSj*tpW=NM{jDM4M`?tPOy=j3Ixu%sNkhtN=(6TQ61@Au9y5z3%p^=jKfpQ$c zg0~*0K`U}-{;?UeiMDLi3K?UCWXn|)TI8&f{(1~j({hlleQxeia{T+ECsq=1>msdF z_C=D6Q+exlCy~I`o*MKpo5X4fRjOZUmoueLT&7-YA;J@PW7TfNplaxSn$Gj}zN9mP+FS+z?$Yq>zm2=W#u(qvMS9(3 zP|;3WwU%iswMH*C**)S=(pR>SW%lM|0YB9$o(tyHU(|QOBFt2dKi_ohW59yy$O?l} zd(n0I=MFQL?!s&Z($}jF^*KeAOR(m>od=%zl+k>sQoF|tcOx=aSB~3O*;!f_8dLv= zUfiNZN4vwaL7w9(d2gF%Y}KPW&71Z)T2fUF>1Dhdgs>a)=Qj{=dAfR&Av^}iYa|EBtEZ0wBx?}Dcr zxKg6#0`0s=1#>xA(aNmnP4|lo1OfzP!mNM?>KQJGfCpmScJdzr?T!HEGZB7%khj8- zhwLA(mm24ragDLgTz3-_K2H;uhJndE%RZVDfL3s-L47eBUc5YZeu0U;D0qlplJ4fm z@560kA_Rd1^^HAZ$O`63Kwy{l`eQ)h=64lGAvFgVPGr%q58y0I;U^2wM@~IWP6P)6 z^y<%F-y3cRZ|_%-jXngJ_YYVubg&PC+XS?&vle`43^RQE;f2@_b_i}485w!+{R%G5 z5!jQT--X^U1$Q3vGGrX0ArJ^=_c!Bt_EC#ql`t(<)X7d)+uF(&n~fa+e!WLBH4St^Ro7^$7edRAFBEw9VDCe=jc>abNIWi|so|0qg&LZRhGo zECI%jun+Oqd-sj_va1iED3qLi_Qx0dyL;f^0GOShU(AnZ6%uIhgPaozjO)Ak@6rzN zK5!jC!Fnt_z~|HZOd@K%AOQcLn1@{CSIsY5r4_h)Q`aA=0<1|yID`*Lkn_iHwEd@2rq%B#Sgze2 z%%;6EA28t6Z*yPCJOqRwkAsgNynr3rpVsXk)T5uZ@1JgBV_AyF*6b^~fgk-=$3TAX zA9}g3%W&bT5HuVX!n&W548I>NGnzW!p@pm7Y6~&0#i-H#EIIG#De_TZluzhTf+Rv- zJ#cLZq{B~Dx-V@QB{&KYu;pN4g5GP~By@yVUDm}@e=T`eXdvZ=9Wr{0hVN`uNU#8| zPb>i+LVdsN(9mo;yb54BDndU#dAAhA3xK+-V3AMqyejjBEq=?|A zJl7{SGT3d05D(%H!cQ^a;n|))*2B(J2-54z`%5+u*oU8h+pqm5PPlF2;x=YNg9FR< zdP@E>d8sB%xbfSJkYr*L+SgP%%PP5ivL^QftVySC@4>=Z_tO8lTn%Fx{l4>cnX>{8UQ?QE{#KHVYLep$~) zjpmRktnd3Ht!o~i&~A}jVe8*E&V;0hN!e^dTN3xU2yRN%ZcP7SB08rUxtx?yG386N zv4$vps)kR)4!b-abGg38IdM(G!<^~F7wMcQyL|QXuAC!ejm&7A!J94+c#Q!Q4jCDVGY@sCXR{jV=XbD@S)@{i8U5|p{Lme) zNcR`We#eui2hUD@74j8NjQg8?HOqbHWVW?rv-(neKzLk9_t1s4dt-T=Vf@-}mo@jV z0Be!4EcF9!?pN4Pi}UZ2_E$ZRZw(hMew72I(dzz|Q?uYjki+^gHRNMUZn>TkYjLo| zam-NuRTuF}VCcrs)IcdvCcU=+;2stK&oA3#L>;F-Z-NTw8o7R2Gz_vz)e^KZ?9Fgr6dRlp$qTt#R*!8CW1J8AK)}((YGA`}+>BZQ zN9r z{LxV0!5hT{C6#My0!l)md#c+DS@7VP?i*ys9l<}exWeVGg75MhpABG7Da3@YtPXsv z>`_y06R|N0d73ul=dNZ;dX!}mWXC1ddhNQlA(`y3fG2Xya!SB#T zN1EMZ`bf0Gr}wqN*3Hl5FMY&F@mFJ|ybRt16;@^rg;9M;xTdPqL%JYGf6mQ)pWI(? zgI+z2p^MjWtdho-Pram+_bFf4!X|rhRMfoY*8gdKoK|vp{6^Y*Eh+IGTutX4%KYJ9 zTDwQYw3|}ULIbOodmsvNyKr{R3uVq4mtgDRBCT`v9MySa7kY!ZB+g=p(wEj6KRS>; zFCWsGVW{9UY)G`z(mC!I%ka1;;v(W}XrT!UE+}}{hmI}sFb$N3@8m+O8RG@Y=(TZq zh)Bt1s@Ae`w5l&h1Il4C^B_y#V&AEiQU$4_N-ue1#{M(|HtoI$yC`LI(L^YOmMWn{ zJk7ieS_3bdSR}({6}q!kB#7L{d9rYD^Lbq;8-fy`NJ+001M=TZSk->I4vFO#PjL^A z^R@$g7Jcc0)6Y98hr(GtDobfzYa>_I+w-YD!QTf&yz<_nt9$jb$?ei3l{ytdx0wWP zl*S>0CB{-J7uMWLKn(C!#ywh`onWIQ#hM}JBK%!++wBhvXW7X~pI-MDzQ zTfJy|AkbGKIe3WCL+JuX?)>i?)6Hg5;N|e9zL4Yv?85JHL@J1;38A@|taQX3DwmiC z0JCbx%5@QxeC$l+;Ye)5K>aP3qcs)N4Mrxd*Hduv=TRUti4vxIyZLIFCe>JJ%9iix z5083bU_X|SYrw#qkAGXO;mqjOcmwFTwxkgkQwyz~;H+K8XaBVByv6q^v6K_Nw@AxS zLywmMDQT6!z1orYN8a~Tlye;}zm!mnFw%v9`*I_?FOhD_k2hLpqxwe{lJ*=%o4l-YmWJ76sX)H$O!syjtVKupTVWdjzEg z=kC}{p=bDsOQR3$8bBW_R&k`4_TjCu@MmN)?^l_6_qeAIvNVCx-%6fhThLEVHv5U2 z=RELT4JT+cV}ZMDqr8O%JyN)I*z9#;m?^OT5IMxXDVa*dh>xS0prOsV?p0XNn>`=% zyX!b;^49Tsk2L#~qnnES_*vVVY-af8q+^89x_UR>pl!#XvHfiVhP8tZlWvOiE zau`q}I2e=qyoXj8VMpLI#@qiZ{mxM)*7e6R-p_1Pn)a*KXo*%iNUx=;|6{By7cU1Z ziiOPBYaHv930#i8G#H_tH!h>9vqRY2Y)bcPxUI~Vq zpw5V#4B4@C{Q8d|Nn=R0&9-YI<>621l;2iG>?V*1qGrfEVg=LvoF4duu>N>P8xw53 z+>E?t+l0eCf;*v0a&30JVwvzkpII}zV1FjmOFXqbb|((dE6)D&VIEu;z4Xtrn(cJ$p4b z*7okdR2=c6vcx`4GJpuuW;nI$-!{f1%BYM%Hcq2j(ZBHG-;nBS^@xe#geJ@u!i1L9 zirl_B`BDW#nU~~ZjJtkiVUQJY=nQPkmegw*@Yz}ZKyYBt;8lm@hLJs5x?OO1dmQIX z^qWdcV2m?iV}E&7nbyMTF0dbut#xi(NU{MjmTh79qcW}W!W)KL8+f))QFWU@SR*`z zd}Ka+yS?k<;0QBz#L>l?s{w&sEuK<6*Xo)&F5pOrfu?JSBiTzROGXii{T$ zbSZ-Cvx>{ud}r{yo*t! zV-&6BJV!w+FYyhkq)EM`OZ;xp1Gz2u-!0=@wIoTG^XjGDRal0lQvqE@8-piJdOmMD z(biEPbQd>XpIV>cI^yIaHY$5@N2_2t@0(Mj5e-BI7ejdm>X#Ps;XTio#J}~OvCcw3bTy?wMK%Ww^1Y@WK~6wUp7pJWYX-WKX9vJ+tcvWn zr|j9AM*-~??b{NdZA$mh@f0w@5r3Y5y|k`C7l2f1|?25C*2NE8;CzqZ{>LmZI(a>I8o={@43yNB>p}dF)z3C#iwvCso zi_|MxXd{8LV50c6vqQmC_?vphUxFb-L_+Z?ZDdmasyH5Wxl<;I?H6I3*kGU$< z7AmYU?g2`@ZC;gZiuK!Fz*u_13jh(hXHh2}S>w7&{#N*Dc#EgjS}~ zDCU+n8m-!zRUY4d;!`74QzNAk;K_2BHbO9x5>Sb??*b~7=(Ls?zkm-kGsCorFZg7k zQ*`P*7SZ3NOGA9(%-6l(_8zcIe`KF}Uqn$dHG|2KaA>oNSH2CNwIRqB?dFTd2RW90 z&3%c`n&=E2Hu_;75z@Vxs;kaHVS|?mhP~~dO+adHvacoUW^X+HwpF(J@OKz@M#B5%EKi1fGdn+9!0>n$N~!p&czT_3I#JHftvw^0 z<#2CXTzNwD*dei2N>F+e7dC=_mT&=1NsVq9g?eFQbB&>LZKmG$c%6HajMAt!Q{S?C zoYJPNw0J3GMGar()~zqHxZLDbP~TXQAG=z70Z0DEy6oaCSJ?m547;{_amsUi?5nGz ztMAnOZ}vS~p``Y(OLYCH*z|Y|Wg~4JL^(`d0?ic;`aZu-sOd#hV0?73#9w2303!(O+Z0_{g! zO+}lXffUVwPrw0J`kX{b=VTT265cu!I{|*McaNP;UI9bxh1QR7XMX{xqV=i?8>brJ z%WB+!t^4@h^|JQZ+2dl{MI2X4K$)#EX^*<|a!lrutW=BtyK8;8pgme3^+bU9a?_hO zF7%bmUd}lY&`e;ME4ECRifiXg0CS4er(<(TDyY#hQckjEwwgCOTYdro@tsE+hCo)h zaR-?{D(w&bn~hXCr8!XSbwx&y6mOuuJhR`44pV>u{=w#`#euR~!(x&7<%}oWm>{gJ zK_E{+bKHE70!uv31>rLkhPG@KBxn2=vjd(psN8bN#CJl|#R6A~Df+{kP*Vossi!_@ z2PHL;7zyHgduc>&P)OqL{@EduN4SZs%W$?wcx5b@`5BK+Hu1>H4oc4Agi~c`^8*b)0L-eul|dMT8EOJ39@g zfoozkkC`NdWW*69xy;#B+{h1-t3-)^!(C=N!?Xeduq`Po$55Hjqz%kg-k|)q&Rq!4 zPXr?tlNGw~U)^JY5ZP}e=VokzIc=$TOCzpNG#wP=jC<<|w6Q(A-$t-o=NG$`WZC3i z#E7qPr|bg?RHqzfDbikeS#so#c!=#X7CEG1wTM?J!Rp(++KY-kBEo;LQ!Uk!q0;o5 zxlE1lW+Cd979c*gUTwaH6d4%VNJHpvlSp4nWR;>$Oj??}Cvw&$@rE#q7N;l!`AC$I zrhrhnn5>tQbNo26x0DsPky6hDN~XyTurbb}{J|i!Ur{%yBluL$!^A?{GPK&!&{JFs zV$+uELb`d2sPaciiEiSV|9JD1c9T>9PW@)YEMXYhs_u}C`-pdTn9 zm2)j`_YF@ugdsoOv~q?!T6#}oi#XfvQrYW#XmPvO12>~DDKb5ZSv5XBH!E=$f*$|AmQPZ9dc z=J8GAzO*k7x zrZp!l3Z}Y3#F0in=&b6;Go>t6cRgPuc9Uxij~@>5=Wj5`s5VRcATyYcJoeq20Nf23 z>n@}NFjkb`w^a8P6EzgE`PDb=O|0qfQ|o;1#(};ynN&IQdUUOM-+Mf}x5b4~y^YT# ziB1ZzSB#~YX({s>0-A;k$R&m@52S+rs(V9q{2HPY% zenEy{7+%D$V_ngKkxaJsdR*T2(y;}vM)>t=FCuEpZ9%+TH>Zcm0}V5pQ9}<&MbT^6 z%J{f?d@91Ios=>6k?l=WJUOl+GLIx4R0Oc6$z!ZRtH*X%K73u|Tz%Txv)M`Gst3@H>}5gG@^@X z3iH~wzS-lATD}yB{H$qq<5=mxUW*D~s4vYC)i-cFix~Y$EjfiImo#%x% zIKE7Crszr}ZF;J8j6?tqw-?`reO@@!uZzJCV0vP(8>jwIYqj{EmDqjttC5(+&! z+j@>G0X)L*hBfUn@|0hZx2q_jtl&rKHV6>0;q{CUI(-b~Ox+zh=r!C_%}0(=@A8bt zF9ST-wV*AQi);3Wg4qtNw@c{B}N9hwt-f zNsf<{{t76RHA!OmRS_zfG$}8%5~6&vUs`!tw6z(9I()no0WQ{&1ZnyaIJqZ&8xM`4 z#c6d_eI3vf{a7LW!s*kCjF~XPG*g60UDH+1{O)puwmg-q)_GZ`MK)QIBX*^pG>W3` z{R+oqLg-_MEA2aO+n?9NVGr?%z0`O@#I9&FZIS?rbcp1n!o`W)KF!a{T%wxrkIa)T zA~l6?$~*l-_HR~w^AWGi%(zAJDCi`$wd+P@W6@>aOMdA&P9zr(-WAx4qpA*8^;tvCle+%6~ibL#{ zkAmTK4l3|^W+D{oB@@c=+WHw+bvw`5pJ8k6hCTe={6vYmHb+85BRm)gTSTM7b7{b) z@!y`_oPO-GMfB#f$lvPKK^mY4?RmI}tW(T+lGiua(Zj`KQ` z)zlpV`eT25Uu;g(!Ud;H3)a?xQAvkKVJ+FNvf<$uybif_uCpFNxk2xH4QM!x9Al5* zrjsb_otzB+Y+2z0dDwwc>GX$$~b3I8KvfhM(vY^s3o+s zTOBjdvGDVTnH=IYs~cW|vTpgp$a=nc)XJ158Lgn^Rw3Ey>kNeXtAr7D@#PY&{MN?D zdjxf-Gn~n9rtR!O;?iE7mE3-|OP$yH!P(U|;@2KltaJ!h`5`1*cm_?!h?XDh!#UL0 zr=XSTFe-@*j%?`jm&mBs(eBlya{u9WGVm5;$@DD!DQELhN!)k~CX7)tf>+~{{?oq4 zywcZ-Puy-1;lR&(leA1?E3=WF1n%p+CR?2@$8O|ngZCbiUTODrs>edqqkJ137coB4 zy)^g_$@=2_(bd}=vX26tZ5)3@Mdof`-z6BedVq7O^WN;DGI}6!fm`B0+13Og0p*XS ztQ070vja?HT}5jZTJWC3~*}Hoq^w$U7g1Fz(!cpxdkr|A}rhv;ME%A1gE4 z|6Khay3NeW`v0cePM}Ik)*G~26w!})enIpwut4)$1h{a6078>}^iFIFNb|)CV6XuY zK=aW-eon5?3P3+)Hy=JfAK8t|9G11sFFrM$IT!7M3Fm1fO{pg^zwZd8B?{82$ z!8QN_d;2-?-a){IX*m)Ypb%i@ehSYrrVb*IOORPnem%LQmtF-siSyQ|`&<*~004ICDo(eGj4N$0`gQ~lcJ;2@CMnJz;{-2@`s&`c)j89j33?Kpa zPQSfv`ZnA?v||uZGb;1j{4P0o0KK*;I?=jBY#?0tXMn-1zGbt}9WHR-BqL`)J?8%2 z({_P4dh{ghTkhi_&R?9IRMKtTo{?h z+)FbIix1Oi8(ySiQ2GN=OL&mopQq0UQ~#7ySfJ~}FZ`FCFVG4e6}h?jy|=+v{LCzz z0qETcXe6-P2DQ}B`JX2pBv^MoW7ky-$KscaX{w5kL+LNHX0y;?@-|P+wbGO zyHslSA1qATzFsOb!dZ|KNGX0bj9qBK*mBs#i`E`MeqMHqG#*o{EU#{Js-dr8}a2_-fcI!)nYIk79v=Mrhc_u8+kQK za-)ULHnw{6>a*K&hpF>V;fN8vS=QAc8gh-^i(Q!=8>&*T?JWDK3;%H%nybju;HMc( zNLpBhIss_3Ek^xd{RPS|^XNZFeA@BqW>)>GA2*iA_f9hu6xX9W&Ya9TnWIX)n>r&f zc&QISaeO1Do2=slG`+F;Z8j}s=Fa&A?kGzuWcMN9g6(EJM+scE7TT4s!Cf5m;I6$h zNDRbH3XL4A9|0sP?Sj7kzQdpENbC<^6Y)sEUsTbT03Zl_`}qLChlNf_6g%rRSBJlLWx5tj`YRfJ)1Mz`5Wh8^2b69z;k7J zYkr5=@McPP3Q(3Gf+hFnUM=I@Xtj_G)eG))%}P1)vt$d8*NT3T`0*2t=)-YSUd|G%n2E{7|jtF2Z{(0-EW-!JAaQR z$2`I5rr35SJUS17YWwv5y4yq6R0-LqwQwr-V8SnXXqSsYNWqlXAfixsHRW0f^?x}g zzhCKFCyxRW4~0Od#Kv|11$sb*zvM(mu5xQi8>K6HQMm68%KD5wq{bU^`cd5J5Q4gP zX7aH3AT1t*+DjX4Q5!Y=Re`PKy2FD1_3y7Eb0rk=*oQyd^3QBY(qL6qo)SECboq>z{^;xY$o-n$p?& z_#8coR_|pXrus&A!4_q5UaN)xM!O#M_LDU~-;cnFT^k@c+T;5UvOR1*{TN1?lcYu^ zM?UI#U+Ba8;73kAK>JYb0+dqMTiMXV2Vge0>j!fT1{AT z&#yj7RMFy8Z!5r0lu#1)aC;*<#Orf7TJq@Sh9!DDNr(*c>!Xe0cj-HE-<;zs3X5ti zI4osakG!z-TZTQd9o}Sr&RPl@T{)XKxqqNgK*N$q_h@YCR;}=Rg-Mk;`xTsTxo0Z_Mx7*VM;hXKv z{X4AV#^NH1_a!%(Q?^>22{^d+;?nP%st%7x zGpyfIOI>w+5E}ou)U+*Z)+|fy>nB}xI>OjoZjCgt@}=eAkl;NBHKB zjnZ_kfKNRxjbRCu;f`!M-4qotd|WB~`|{5hFL87fcinF1a1cn}Tg%k!Hx?;X>}MrU zR5=zV*yNCd@SO26x`FmNKPJ&vM(K%@=$O9NpI40?mW?9DX;7iw=Zf_8elWaJm3e38 z)@H4EdRapfW7g>FHzOM_Lee)5Fh=8p3}$I4OWpEt#O)ETj5*1M;CoA#U@92dL>F7a zbqXyuI}y~i+_`v>!Ik$+AfCiAl(l3du!#VT|rPG#D&+%fjgVU98T>0Qt0^OFkupp zcX=?9$MA50%qa6V>WXG5kptt;8^&g#bz;Z4f+Uo|!?jV|MPH30x})Izi4LrCQ{vzV#<H z!iN2TD>f`pCx6zeGA<@F^|9r)=~(K6m6~Gj1ozX%q^-w43diJ?6be@(Z#6)iF#V#m zdB>o)7t)BCSgS0e zPtq%aKVkKbTdu8-({2P-3Wr|qerRrY{m@MjRUV`KIwV86Ntg^*QnvnNdqVY{mh)VI zQPpzDEA!AhNWHsEvMUmTXWYBAaBjHBC&rsxQpd)i#1#dWBaz8hnNl=JMbINuPwUnM z|B00b-qYJcIhfpJJl9ORk+QmbTl@?H*nZQg@eK@bYb{i1j2ArX*A(_kOCVbvu zg`+qBG~a|Bt42$>XDL!-XVhw^smL}3yCf26M(3ih0-D+88SEb>G;}L}7t~(Ra$34U zqYLcthPs4~Me&RROlJ~=VM7DA3i7u+22il{MtK~=)zQBz4IR*5bcoi%wrM}!|} z?Y9mYU$<+Kl;$Q=E)J8nIgZJv&oY;&-7r>e5|eCb*fB0>4QO9!ZkY>IH|Ee0F4-~n z@kl25w?A5T@GByCxRkB!!@}57WBJ^^qjRYxCZjNMKyb2wO(b0`S}DNpkrlPrj|<=9 z6LTvxLQ3`8?<~j^j7mL4s%fB3uCJ*vMSZ#szPm-%tGOom*Cf=5pvt?os;6PFY_(7 zOj+lsC#N0)Jgx#?hQ(mVj^^_Nn3KQS9xA~f*ten zVW`7%kKsE#zI&%T^S;v?ypfJPD%xcGxE1qPMgv7R(MQ_-63PNJ``)qAWv(ThxU+Ky z;`BmzxFbxQj!n37-!Gyq>kxV)KX&K(&42-wjPij3vm{kV8`!(-j)a=Ep$oq8wJxEP z7tY!noijC_W_{E4`%v|8CAcZIr7L2=TWNY{3v}?7^gs(Z!Ej_> zWb6>K?PTwnOmCoByHwX|NzIg#(QDcD{m2=LrShUB9cu#<96l-I^!V-&tLbF7V_TRs zFO3uf{tML}O0_j!Jy~uYnL1YY=BEd>yIj4~ZQ~v|7SQDU_g7bJK9^SE>CFjc4~>2n zB1^KbBdaCPsQVO22sXQYwRgZpyQCX0P~6bv19i8y6iq3XGj< zx^K`0%D~_i@!tdhQ8#rTdDvF?r!7bi<2pd!!;7;VHpZoHuNjCxP z$>uj7q*9x&gR-KfkxI;4(O}L3JO2dDk#A!(hP+kf+-K)Du2h4SW?Rv1mP4db6H#O< zjTpdh-n6vsiKNr_4U#Hh6_O^e;XunNh9?8Hj0$0Iwt2c+_f@?jFD93hlb$xka%%6- zvth@}Mi{FJ8LXRRy}ir9#~8|F;`_rD8R77$d{}_(i_*i9y-?{uO{rXe2#82-e4RY8PRP{amtkR8_ zi|$FvgIbuT*6YLdYsiaCs-r#zJEQ7lO7$d3=4-OUPp@va9=DfjBbhct_odcyw}5xA=Eq<2`TvWjd{!mBm7Qi^_V3N=cCU{@3rXE zV3eK_`#;O$M}Y73*G}eFY;ki4jwZ-nml5rd2dpKY+|Q%(Tc}IX6242hA3)L#5TK(@ zdVi!696`W)7xJ+Xg4aDlUna(i{G7w6xo=OEdLY@&%wM|p7(&DPQ{HQ}ERKtW|bbbPI?7coyx zaG1XIHU_gaQ$QVgS|p6F&nFctt-IsJ(JkO8T>nj+A0z;b(XOX zYA-)WlQfGu4tpl1Mi_={Qz=M|pBJ-`VxG3D_PzD%7z}GCtLvEvlWX@oKaBi%*@0R3 zoGh8N?YO8s4Z5W^vtG|bo3l+P8W-Y}VER&X#Zw+`(*xth_t{RNsS|sr|fTx$`vS}DE zcj*LTHkl-2=Zdj}@;h66;f;o2bJ0R0^#x)P#aZ=N=B35nwAcA}+X%a5W$3_SLHca^>x;b0j|&>x*on5E!dO>YF7kCk z4ZYJ$si?>|aoxr#libPm7F(kIulCQsaZ)m&5~|Mfa$8s{i4H4iND&{ z(uPm_PSuy4sNMQr#XDKO^Ca1;(oo@N2?tij6PJBrMxO70@3-13m*^d|d9{Q~&T%mf zE0vU+mUBL(H1Av&r$loHs!w0G=SP}%Ij-Wq59^;SZ)-#YY0h<)>uSy{fY3sTI|@X?0)&l64X z%JuSu^|#Gs+$=x8?1W8S1v3Y>1$+&ym(&z}AM`Dv+v$1h?%0sLpxX+Dn?%2VuK%ZY z!G11pINmdZw_-vKl-MOJ0fHR{B4n?Ni*Gyq$R52VfT*o!&EqL2>a=o=W`GFtb9>cjXCvC~>ob{IRDMr9JKO2VjMZAXEjY znl1abhYNPl>Ui(+!((C#>?frhh&ug4r18LGPK~j+>C8K4!%|N})Nwu$%>(xY zWol)=_*G*m^UN8@#cby2tsP8+k_u{%AIdJveQ;_W_FZ#xx=T5D2s#x7EDt*Nj?h~r zLRW@)DQ*&UBeY7CbhCoK(qU#1J>N?`h~tJewM%W*VTH~piS2M#y`)-Tm(na{aK?&g zF)JQ;X@MnLrxFqh+#K!3d&dZUUJ6X9gCr&^E+etbg;0vp6V$2#4Pvv^2Bfx=iDeK1k}I!>mUiv%3GiTfs)& zcqEIcMyX><#b@9RRl(i@!9e~peq`W@ZB!+@j+!oc$#f`V@-x;h(`n47=cM%f^c_Ak zvR3p*fK)=y?-;jx=!uNTW$(ST8C$P3U$K-ffJn48Ch8xL5tQg*ac*88;_Pn5?oqJC zqx=sgnTb?zF91QzM77$!us~`@ zwMDI(n2BiiyWY?2mh3fSTw0!51{#c(6LVm5gx&aLbn7K?UG$p%#m+} z$&tTc$PI<`#h%Fi>^cc?r+V6fuKkG<;e+g3M#NO1*IVA#-2?aZHWNRv_FYkAM32>E zLhUCVv#Dj3JF&}r#hz`RLH&s*j@D5&7ILuumC2sfB(n>(!R%E++c&FuC4xZtVHpj9Fe2|H6oh z_yXl1rug!szFWonm<=m>l2%{eeV-o|@$|-snY8VuSAJi|(B|TmbbECR9*4uQ23{{P zh&I3ycAeiTg5M5U3fS(zTZxuBemat>`^(^`|Smwb8 z{h)Yy9s(D6x^u@0*SX+hy=9+5<%rX3d(D)26%4?^ahY;;ldz>r+3s5Y-!GgzsL z$JjL18SL{$CTd+iVYwD5bL<}{zhgQyE+oy;#^rC8&LAj7teH1|mrtr&c<|n+fiitV zR9l+Odk^le2-0ksnYgu#o`~?6Z%PebfJ-d_^{{}Sw@%*J*Xv!3E7znRcpI)^5P5ig zePsK_@cjf+ZbnGEkYtY=U)=qk!i7Lx71t%w93wN~*v%8*1*3>g$uc> z>OxBFaQ%Wwyy0oZWnwR<$e3`G6kjR*JRB(`HF^*b58XlzIso~_LAJ2-rpL0j6j*L& z@30l+++uR>oa$)4@C`^mRd&YPz-&NChpWkh9TZ)9Z( zK0XR_baG{3Z3=kWthHm5rrok7nzrqH)3$BfHs7>aX;z{tZ96M%tJ1bvY1_Q@?cLp{ z$G(04^gTbGF`g9>YsQS2vDTs>QC4FRF?TezkaTo#V_;!q<^?DM?M>ZX6&xMp8B{H- z+yQ@$9B>pAVlEaYZa_x|aT7NSUVxT`IY8XP48Y0?VBz86fujJ3IXZc}0IjUu0Mr_) zS~PTY^#5h~Cj?;X{Xac_ce(^Pg9G&bf9Nhjw{9kWWv#prK{5MZGYZJGBa=QZmx&e-s ze0iFTFn_&nCO`*QfSZMv+dsKXEdb^~S0_6Y@4vbKf;qVW|3$;y73g5~ zUkvC0E*4fMF6MR?uC9M!{$l^ro&Ty6@V`}W;^buK{jc4Q|BCuw9Dr`F7Iv15a4f8U zbDFvR&20sAfMfb+P-Gk|9RV!N|F)aEJN-|ehlR_(8btli%+UNLVPfv+VCM}mx3Gj` zQgn3tn-W0%f2T6zf1k+z4HEyi2>jn7@Bcq>|5Ky??GXR}JLo(vguBRhOds&pY*BQObX{cT@Lv`b+G8l%n8h{=XLgV2Fx3dI5YH z{+>VvRyHmG=ih|fEG&Nihiw0XVfnAMf{B|8&D=qo3zYyw_5Dn zp$T!l-@Pp0Lt##(4eCV&fz^&Z0cnvtJQc?8HDQd6Q@o#T-ixPBAN#Vj2P3^$c2qqn z7MJ-1eq=O#1*n^p9b9w=!Aypwi0NlqF}_y|^4k!)oXnaBe4E+?RO4YUTv(^N7e5Vq*9 zoK@uZPTpmm&EyEQ*Mhr*<*{r+s;+7KTTf0L%>q-ET--Ck2A%u^J#4s=#kX%9&VgL| z@a6yu%zc-kWjuNV@IeetkeN-f^t5E#w3M&Tj+TJFW-B8i(U3R{IT}v?Ir7sSBb9MM z_Uu_4QM$Ego9$ifJTgGHOPbKqD;a&l_X8RYDi}9Ad5>+S>*4x<&iteyWvgU}-uD^= zbN(b<3bPBT$uRDV1(BZ1#0?Q+QG(U0!*SLXydQ*r1|-i6f0vAC?2D(eTnOa%pLO!T zS*Z0s{XC97by&wJs%UaKJ&m`<_s_MVg#l49XGiQy6LN2@I5O&`l6q%C&|}$oDNBJs zS)8!)FZF}Rr?$pxI&7#!<%}kh5zpHYuU%0< zX%7D-CuON(OJE(dLkj7lW01HH150O+2mWrJScCKK|K-$Wd;CccFQoF7WfGOCXIXkw zv;XuSN!?0YOlJp+DE|#ZfVDW5->NEtTo~qwzPfcunMQM>EcS7Nu9pW6fi3A~lP{Qj zIUwxL9g0eC@fV)f22%2Ai$(2YyttW|w+}XhFULD;pW^M2T^6pCg$ORijDWU{&|2zt z(4N1bx_pLA2bk7YM-n?-*RO18)$K`ONvE8P{;qYqJf|iU69&d+Kpb_fbDNJEIrReD zNM5&N$`@UsiT~hPd-Z<$cJ#Jl$3XU?E6E5o(;nPG@-gXxxakDm7 ze=o})Jfmoq6~!K!^at=24OefFEKuDIfC_U=8Tl>%PAePMyItSNhj?_K;s6o@W&3!R zwF%jx&GNy_t|v?F`a&D z@%|E;3t9!K5w+HW_7-t44Sik!k8}&=$^3>RZ+=ebKr)06aJBHQI`=CPXq_<60n}MH zIf%UE2>=_v>|EHIcnp$2hQG%a8C=hNcxa#ZBZ(&9;&}5@`Nl5$IrNhmt4~ftL`9wZ z&z*fI`X3zi0^S$>_o5I0BI%(V3wJPOQ!VxTnQU8FpeT%)^YMUs%mbwZ;(BmG%0}(O zGA?Khn4*pyf+QP%>4ju?3cAw3$fp!M>G~gT6`ox?Uy3O)aM=6mNK_$B@L#HP73ktO zSZ{@0Yd8;p$CdblT2?zG#r@l}<6GR_lc=E((l(p zhc&cvxZBAFNnVw0upGw=AO$e`zRaBDc!GcA6zLjXuy!G)ScyiKY@&V}zLa0}SJgFy z1~|<0Ayj|r{22=at9*b>@Y0L*d@3r_H2D*?t>xo$XCP9@)_jmIngF*s^%3?y{k;>~ ztL|RBqHet*djdEBkS`~0VB07bYAVuu#@94NfQ8;`#?PKp%@I>93r8>w_IBUSW^F@A z9WZxI)Bo~UE8jN%bY&+$i#2{zN-^$@2TA71zURJ|dO>oYd}WXm%SR(l9@5RvVYE<8 zCBPD`r|Ebyy$nLM3`n=`T6;%|h_oxdtF^w5b$UzdzXFvbe%o1xAADWmO2vl=&`)STW=DjVSe-8l*v(S0>f^ zV^a8GwVTguw6+jiAmoJ-*Gu(Gpk0K*TLWxkYo0Nd7cZ9JR(J$ABhnuU~+&OtUh)(CNdz_hZQr@{H zB8Jc2YSt@7_*2tXAFRhUNH=;EnxbuiM$=^CL&7fhcmhjQCxh!P4{zpuF^hSYEE4uc zGt#FsET>qy-7#==xTcvjNZO|nn4qa7{mzdw4yI7)kEiPgM)CsNGARH!2kS8TJBC$JH zdx-g2{|qwQ=|m7n@aw8tWvknLnLaavE=U{Bv_?$k6rGM#~@{u)@yAE zL78m&x4@WUmF}`)+o`-B8aaj(kyl+i;J}^#mi##Nhl$fNLZuN*YVm!7ag$`Q2YRt! zy^YGdDIpF)`~POjA51FdSxM(hhNrcGPP3a&RFRid>f`u2Gh`??PQHckL4Fw^_#)8sRJ9riuDpnoU~%lGEg>ywQkpj~%N8kd z7J&ew4{z6?9@$ZkFit>*l3?%kY(=-1sDY9a8U<4!UDXVY=srSG z(FDTE&7RzF3|Ei( zxwNz%X_?3Q0$OCgDINH7k9^4S5NPd%7tf3l^~hgbe_|8qMpXx45itSucT^!H)23_k z8c1g>`Zf@r*LjXjFiE=6=-Rrki@3F&`#VechUvIfy;ku6tsqMf4P^6VZEty&7J?R^ z)?Oj*>f3Gf!8O?>KZZVJ&H~FKq&-iTUMXTNQv>}K0tG%959d$b9v!kcBa7{%-MGbt ze#v3taeXw-V%fr>`~3=tIjBsMQ+;;xT5>~|x%c@JNTu`Ph(EP?I18dy6lVL-pjCK? zK{KU~8p3hr=Lr}i(&|U$cB3Q9-AQch;cfztY!nqE5E^+4{7m`-B0t^_JSXuc=L2O# zr#$&_%u%ICXy>CPXXwDhQ8VN7r?!JI?>B}!OPUbs)0qF-ejXUWn4ogu<59az zSI@Piv?0Wv$o5hJkBn z-{TxVgwU-bTnxR%^iY#vSjleLe5geeS2_+#z^_P;72NG@U(T9Fai65MZUu=iycZCE zGL?xvlWJInf#OLU^*AC-!03j7eDVSj%P6&wicxviEt%OAx$^MT;nGW~h^v_pFYfc$ ze7JIfQv5!3{4HuYMrqI>+cI*Hxe6l6n5)3JP|BJStg-4WY%6Rf&mXJYMKPDV>%IV# z<9e81W^zP<80a%(!sf#Pc?qSB$BiFhoVXwqLbNI@*uX5{>lP^xIFKHrY6__rnIO@T z%qLcbx3Lf4aurt#)?QFOV&PH@1Eq7*6K78Er9 zMb%d2L`EquZ0Ur{3iBNxO@g$f_N26GPirp9srPR3D+w7Vxe$il`hgls!*O+AQ(kUm z_vj-lS2<7D5P|V>t`daPyxIfLQS3Y)MMq^8a!Et2XO>F~VzZ0NG;D@zDk+@&OR=P*+ zVk*fN7QM(xMVF3`QFh_+Kx>+De|gYkX-aVL@Z384N(XbTbqBRUoP0?-K<;7!s0mAn zBV-9UV0C_l;inC6vT#83Q7RXf8V!>tV7c68&?UdjdujkH8+57?2*edUYbJ< zc=TNz(LO>aO1j&6Fcesw_B7weuc-;Pfn9wQsk?xQ&Qbr;XkWMV zs{;+iI(iy?eMfc{swD?7q6xpQKI-B{J)(g@4pv=D&BzP}SB~bc17(;=3k?^vkzhowYzqu1# zM2dw~{bv+Z)ABGA2MP|<#G=*6RBm!37GM3@GpKmi?-I}IL{l`fkzAB~%^guV#{`!2 ze$G$A&%X3_~A49}G>F zz>dOIF)qS1nbc52brfmm{kv`{4W+SY-AtSn8Yqna9U{rEU6u(bhA)vhc*&E8_Q3`4 z=|mT@cPtqJ=}4<7;)*6v7muI3)whRNRj$9jW>>_=(;{5z?@`S+@%0AajiU{D3`O&? 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 diff --git a/srcDoc/manual.tex b/srcDoc/manual.tex deleted file mode 100644 index ef46890c..00000000 --- a/srcDoc/manual.tex +++ /dev/null @@ -1,87 +0,0 @@ -% Copyright (C) 2002 Regents of the University of Michigan, portions used with permission -% For more information, see http://csem.engin.umich.edu/tools/swmf -\documentclass[twoside,10pt]{book} -\usepackage{times} -\usepackage{graphicx} -\usepackage{alltt} -\usepackage{amsmath} -\usepackage{epsfig} -\usepackage{fancyhdr} -\usepackage[square]{natbib} -\usepackage{multicol} -\usepackage{subfigure} -\usepackage{fancyvrb} -\usepackage{color} - -% use these lengths for a more uniform margin -% this format is more pleasing for stapling -\setlength{\oddsidemargin}{-.1 in} -\setlength{\evensidemargin}{0.0 in} -\setlength{\textwidth}{6.5 in} -\setlength{\topmargin}{0 in} -\setlength{\textheight}{8.5 in} - -\renewcommand{\deg}{^{\circ}} - - -\title{GITM User Manual \\ \large Version 2.1} -\author{A.J. Ridley, A.G. Burrell} - -\begin{document} - -\pagestyle{fancy} -\lhead[\fancyplain{}{\bfseries\thepage}]{\fancyplain{}{\bfseries\rightmark}} -\rhead[\fancyplain{}{\bfseries\leftmark}]{\fancyplain{}{\bfseries\thepage}} -\cfoot{} - -%\pagestyle{headings} - -\maketitle - -\tableofcontents - -\clearpage - -%Chapter 1 -\chapter{Introduction to GITM} -\input{intro} -\label{intro.ch} - -\section{Code Outline} -\label{outline.sec} - -This is an outline of GITM. To produce this file, go into the {\tt src} directory, and type: - -\begin{verbatim} -cd ../src -./calling_sequence.pl > outline.tex -mv outline.tex ../srcDoc -cd ../srcDoc -\end{verbatim} - -\input{outline.tex} - -%Chapter 2 -\chapter{Getting Started} -\label{quickstart.ch} -\input{quickstart} - -%Chapter 3 -\chapter{Inputs} -\label{input.ch} -\input{set_inputs} -\input{grid} -\input{more_inputs} - -%Chapter 4 -\chapter{Outputs} -\label{outputs.ch} -\input{outputs} - -%Bibliography -\clearpage -\addcontentsline{toc}{chapter}{Bibliography} -\bibliographystyle{chicagoa} -\bibliography{gitm} - -\end{document} diff --git a/srcDoc/more_inputs.tex b/srcDoc/more_inputs.tex deleted file mode 100644 index bbf46230..00000000 --- a/srcDoc/more_inputs.tex +++ /dev/null @@ -1,209 +0,0 @@ -% Copyright (C) 2002 Regents of the University of Michigan, portions used with permission -% For more information, see http://csem.engin.umich.edu/tools/swmf - -\section{Auxiliary Input Files} -\label{aux.sec} - -If you have access to the University of Michigan Atmospheric, Oceanic, and Space Science resources, the data needed for these auxiliary input files are on {\tt herot.engin.umich.edu}. The following descriptions will allow you download to create your own auxiliary input files yourself, but this process is much more simple if you have access to the resources on {\tt herot}. Recall that {\tt makerun.pl}, previously mentioned at the beginning of section~\ref{uam.sec}, will create many of the following input files when it builds a {\tt UAM.in} file. All of these auxiliary input files should be kept in the same directory as the GITM executable and the {\tt UAM.in} file. - -\subsection{IMF and Solar Wind} -\label{imf.sec} - -This file controls the high-latitude electric field and aurora when using models that depend on the solar wind and interplanetary magnetic field (IMF). It allows GITM to dynamically control these quantities. You can create either realistic IMF files or hypothetical ones. - -For realistic IMF files, we typically use CDF files downloaded from the CDAWEB ftp site, located at:\\{\tt http://cdaweb.gsfc.nasa.gov/cdaweb\_anonymousftp.htm}. - -On {\tt herot}, an IDL code (called {\tt cdf\_to\_mhd.pro}) merges the solar wind and IMF files to create one single file. This IDL code also propagates the solar wind and IMF from L1 to 32 Re upstream of the Earth. You can use the {\tt DELAY} statement to shift the time more (e.g. in the example below, it shifts by an additional 15 minutes). {\tt cdf\_to\_mhd.pro} requires both a solar wind file and an IMF file. For example, the IMF file would be {\tt ac\_h0\_mfi\_20011231\_v04.cdf} and the solar wind file would be {\tt ac\_h0\_swe\_20011231\_v06.cdf}. The code assumes that the data starts at {\tt \#START}, and ends when it encounters an error. This can mean that if there is an error in the data somewhere, the code will only read up to that point. To validate that the solar wind and IMF is what you think it is, it is recommended that you use the IDL code {\tt imf\_plot.pro} to check the output before using it to run GITM. Here is an example file: - -\begin{verbatim} - -This file was created by Aaron Ridley to do some wicked cool science thing. - -The format is: - Year MM DD HH Mi SS mS Bx By Bz Vx Vy Vz N T - -Year=year -MM = Month -DD = Day -HH = Hour -Mi = Minute -SS = Second -mS = Millisecond -Bx = IMF Bx GSM Component (nT) -By = IMF By GSM Component (nT) -Bz = IMF Bz GSM Component (nT) -Vx = Solar Wind Vx (km/s) -Vy = Solar Wind Vy (km/s) -Vz = Solar Wind Vz (km/s) -N = Solar Wind Density (/cm3) -T = Solar Wind Temperature (K) - -#DELAY -900.0 - -#START - 2000 3 20 2 53 0 0 0.0 0.0 2.0 -400.0 0.0 0.0 5.0 50000.0 - 2000 3 20 2 54 0 0 0.0 0.0 2.0 -400.0 0.0 0.0 5.0 50000.0 - 2000 3 20 2 55 0 0 0.0 0.0 2.0 -400.0 0.0 0.0 5.0 50000.0 - 2000 3 20 2 56 0 0 0.0 0.0 2.0 -400.0 0.0 0.0 5.0 50000.0 - 2000 3 20 2 57 0 0 0.0 0.0 2.0 -400.0 0.0 0.0 5.0 50000.0 - 2000 3 20 2 58 0 0 0.0 0.0 2.0 -400.0 0.0 0.0 5.0 50000.0 - 2000 3 20 2 59 0 0 0.0 0.0 2.0 -400.0 0.0 0.0 5.0 50000.0 - 2000 3 20 3 0 0 0 0.0 0.0 -2.0 -400.0 0.0 0.0 5.0 50000.0 - 2000 3 20 3 1 0 0 0.0 0.0 -2.0 -400.0 0.0 0.0 5.0 50000.0 - 2000 3 20 3 2 0 0 0.0 0.0 -2.0 -400.0 0.0 0.0 5.0 50000.0 - 2000 3 20 3 3 0 0 0.0 0.0 -2.0 -400.0 0.0 0.0 5.0 50000.0 - 2000 3 20 3 4 0 0 0.0 0.0 -2.0 -400.0 0.0 0.0 5.0 50000.0 -\end{verbatim} - -To actually read in this file, in {\tt UAM.in}, use the input option MHD\_INDICES described in section~\ref{indices.sec}. - -\subsection{Hemispheric Power} -\label{hp.sec} - -The hemispheric power files describe the dynamic variation of the auroral power going into each hemisphere. Models such as \cite{fuller87} use the Hemispheric Power to determine which level of the model it should use. The Hemispheric Power is converted to a Hemispheric Power Index using the -formula shown in equation~\ref{hp.eq}. - -\begin{equation} -\label{hp.eq} -HPI = 2.09 \log(HP)^{1.0475} -\end{equation} - -The National Oceanic and Atmospheric Administration (NOAA) provides these hemispheric power files for public use online at {\tt http://www.swpc.noaa.gov/ftpmenu/lists/hpi.html}. There are two types of formats used for hemispheric power files (due to a change in the NOAA output format in 2007). Both file formats can be used by GITM, and are shown in the examples below. - -Example file 1 for data prior to 2007: - -\begin{verbatim} -# Prepared by the U.S. Dept. of Commerce, NOAA, Space Environment Center. -# Please send comments and suggestions to sec@sec.noaa.gov -# -# Source: NOAA POES (Whatever is aloft) -# Units: gigawatts - -# Format: - -# The first line of data contains the four-digit year of the data. -# Each following line is formatted as in this example: - -# NOAA-12(S) 10031 9.0 4 .914 - -# Please note that if the first line of data in the file has a -# day-of-year of 365 (or 366) and a HHMM of greater than 2300, -# that polar pass started at the end of the previous year and -# ended on day-of-year 001 of the current year. - -# A7 NOAA POES Satellite number -# A3 (S) or (N) - hemisphere -# I3 Day of year -# I4 UT hour and minute -# F8.1 Estimated Hemispheric Power in gigawatts -# I3 Hemispheric Power Index (activity level) -# F8.3 Normalizing factor - -2000 -NOAA-15(N) 10023 35.5 7 1.085 -NOAA-14(S) 10044 25.3 7 .843 -NOAA-15(S) 10114 29.0 7 .676 -NOAA-14(N) 10135 108.7 10 1.682 -NOAA-15(N) 10204 36.4 7 1.311 -. -. -. -\end{verbatim} - -Example file 2 for data in and after 2007: - -\begin{verbatim} -:Data_list: power_2010.txt -:Created: Sun Jan 2 10:12:58 UTC 2011 - - -# Prepared by the U.S. Dept. of Commerce, NOAA, Space Environment Center. -# Please send comments and suggestions to sec@sec.noaa.gov -# -# Source: NOAA POES (Whatever is aloft) -# Units: gigawatts - -# Format: - -# Each line is formatted as in this example: - -# 2006-09-05 00:54:25 NOAA-16 (S) 7 29.67 0.82 - -# A19 Date and UT at the center of the polar pass as YYYY-MM-DD hh:mm:ss -# 1X (Space) -# A7 NOAA POES Satellite number -# 1X (Space) -# A3 (S) or (N) - hemisphere -# I3 Hemispheric Power Index (activity level) -# F7.2 Estimated Hemispheric Power in gigawatts -# F7.2 Normalizing factor - -2010-01-01 00:14:37 NOAA-17 (N) 1 1.45 1.16 -2010-01-01 00:44:33 NOAA-19 (N) 1 1.45 1.17 -. -. -. -\end{verbatim} - -This file is not specified in {\tt UAM.in}, instead different subroutines within GITM will use it as needed. - -\subsection{Solar Irradiance} -\label{solar_irradiance.sec} - -To provide GITM with realistic solar irradiance, the solar EUV must be specified. This can be done through a file containing modeled or observed solar irradiance data. An example from the FISM model is shown below. - -\begin{verbatim} -#START - 2009 3 20 0 0 0 0.00389548 0.00235693 - 0.00127776 0.000907677 0.000652528 0.000372993 0.000250124 0.000194781 - 0.000389686 0.000118650 0.00642058 0.00618358 0.000133490 7.67560e-05 - 7.80045e-05 0.000145722 5.92577e-05 5.95070e-05 0.000102437 6.48526e-05 - 8.94509e-05 0.000101928 5.94333e-05 5.36012e-05 1.51744e-05 1.10265e-05 - 1.26937e-05 2.16591e-05 9.57055e-06 1.82608e-05 7.07992e-05 2.55451e-05 - 1.12451e-05 6.89255e-05 3.03882e-05 2.33862e-05 2.98026e-05 4.44682e-05 - 1.50847e-05 3.00909e-05 8.18379e-05 3.52176e-05 0.000416491 0.000269080 - 0.000269080 0.000275734 6.60872e-05 4.46671e-05 0.000220697 0.000512933 - 3.85239e-05 9.30928e-05 2.71239e-05 1.23011e-05 1.05722e-05 9.30876e-06 - 7.08442e-07 3.54221e-07 1.77110e-07 - 2009 3 20 0 1 0 0.00389548 0.00235693 - 0.00127776 0.000907677 0.000652528 0.000372993 0.000250124 0.000194781 - 0.000389686 0.000118650 0.00642058 0.00618358 0.000133490 7.67560e-05 - 7.80045e-05 0.000145722 5.92577e-05 5.95070e-05 0.000102437 6.48526e-05 - 8.94509e-05 0.000101928 5.94333e-05 5.36012e-05 1.51744e-05 1.10265e-05 - 1.26937e-05 2.16591e-05 9.57055e-06 1.82608e-05 7.07992e-05 2.55451e-05 - 1.12451e-05 6.89255e-05 3.03882e-05 2.33862e-05 2.98026e-05 4.44682e-05 - 1.50847e-05 3.00909e-05 8.18379e-05 3.52176e-05 0.000416491 0.000269080 - 0.000269080 0.000275734 6.60872e-05 4.46671e-05 0.000220697 0.000512933 - 3.85239e-05 9.30928e-05 2.71239e-05 1.23011e-05 1.05722e-05 9.30876e-06 - 7.08442e-07 3.54221e-07 1.77110e-07 -. -. -. -\end{verbatim} - -GITM knows to use the provided solar irradiance file through the EUV\_DATA input option specified in the {\tt UAM.in} file. More information about this input option can be found in section~\ref{indices.sec}. For more information on specifying to solar irradiance, please contact Professors Ridley or Pawlowski. - -\subsection{Satellites} -\label{sat_aux.sec} - -GITM can provide output data at a list of times and locations using the SATELLITE input option, described in more detain in section~\ref{def_out.sec}. Although this is designed to output data along a satellite orbit, any list of locations may be used. There is currently no routine to create a satellite input file, but the format is simple and may be easily constructed from a satellite ASCII data file using awk. Here is a sample satellite input file: - -\begin{verbatim} -year mm dd hh mm ss msec long lat alt -#START -2002 4 16 23 34 25 0 299.16 -2.21 0.00 -2002 4 16 23 34 25 0 293.63 -1.21 0.00 -2002 4 16 23 34 25 0 291.28 -0.75 0.00 -2002 4 16 23 34 25 0 289.83 -0.45 0.00 -2002 4 16 23 34 25 0 288.79 -0.21 0.00 -2002 4 16 23 34 25 0 287.98 -0.01 0.00 -2002 4 16 23 34 25 0 287.32 0.16 0.00 -2002 4 16 23 34 25 0 286.76 0.31 0.00 -2002 4 16 23 34 25 0 286.26 0.46 0.00 -2002 4 16 23 34 25 0 285.81 0.60 0.00 -2002 4 16 23 34 25 0 285.39 0.74 0.00 -\end{verbatim} - -Note that the satellite output is not specified in this sample file. This is because altitude entry doesn't matter t this time, GITM ignores the altitude and outputs altitudinal profiles of the atmospheric characteristics at each geographic location and universal time. Although millisecond accuracy is provided, GITM should not be output at a resolution smaller than 1 second. The temporal resolution in the satellite file does not need to match the output resolution. - diff --git a/srcDoc/outline.tex b/srcDoc/outline.tex deleted file mode 100644 index 7fc7b4fa..00000000 --- a/srcDoc/outline.tex +++ /dev/null @@ -1,380 +0,0 @@ -% Copyright (C) 2002 Regents of the University of Michigan, portions used with permission -% For more information, see http://csem.engin.umich.edu/tools/swmf -{\tt main program} in {\bf main.f90} - -\begin{itemize} - - - -\item {\tt init\_mpi} in file {\bf init\_mpi.f90} - \begin{itemize} - \item {\tt MPI\_INIT} - \item {\tt MPI\_COMM\_RANK} - \item {\tt MPI\_COMM\_SIZE} - \end{itemize} - - -\item {\tt start\_timing} in file {\bf timing.f90} - - -\item {\tt delete\_stop} in file {\bf stop\_file.f90} - \begin{itemize} - \item {\tt report} in file library.f90 - \end{itemize} - - -\item {\tt init\_planet} in file {\bf ModEarth.f90} - \begin{itemize} - \item {\tt time\_int\_to\_real} in file time\_routines.f90 - \end{itemize} - - -\item {\tt set\_defaults} in file {\bf ModInputs.f90} - \begin{itemize} - \item {\tt set\_strings} in file ModInputs.f90 - \item {\tt time\_int\_to\_real} in file time\_routines.f90 - \item {\tt set\_planet\_defaults} in file Earth.f90 - \end{itemize} - - -\item {\tt read\_inputs} in file {\bf read\_inputs.f90} - \begin{itemize} - \item {\tt report} in file library.f90 - \item {\tt stop\_gitm} in file library.f90 - \item {\tt stop\_gitm} in file library.f90 - \item {\tt stop\_gitm} in file library.f90 - \item {\tt MPI\_Bcast} - \item {\tt stop\_gitm} in file library.f90 - \item {\tt MPI\_Bcast} - \item {\tt stop\_gitm} in file library.f90 - \end{itemize} - - -\item {\tt set\_inputs} in file {\bf set\_inputs.f90} - \begin{itemize} - \item {\tt report} in file library.f90 - \item {\tt read\_in\_int} in file set\_inputs.f90 - \item {\tt time\_int\_to\_real} in file time\_routines.f90 - \item {\tt time\_real\_to\_int} in file time\_routines.f90 - \item {\tt fix\_vernal\_time} in file set\_inputs.f90 - \item {\tt read\_in\_int} in file set\_inputs.f90 - \item {\tt time\_int\_to\_real} in file time\_routines.f90 - \item {\tt read\_in\_time} in file set\_inputs.f90 - \item {\tt read\_in\_int} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt time\_real\_to\_int} in file time\_routines.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt IO\_set\_f107\_single} - \item {\tt IO\_set\_f107a\_single} - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt IO\_set\_hpi\_single} - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt IO\_set\_kp\_single} - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt IO\_set\_imf\_by\_single} - \item {\tt IO\_set\_imf\_bz\_single} - \item {\tt IO\_set\_sw\_v\_single} - \item {\tt read\_in\_string} in file set\_inputs.f90 - \item {\tt IO\_set\_inputs} - \item {\tt read\_MHDIMF\_Indices} - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_string} in file set\_inputs.f90 - \item {\tt read\_in\_string} in file set\_inputs.f90 - \item {\tt read\_in\_string} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_int} in file set\_inputs.f90 - \item {\tt read\_in\_int} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_int} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_string} in file set\_inputs.f90 - \item {\tt read\_in\_string} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_int} in file set\_inputs.f90 - \item {\tt read\_in\_int} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_time} in file set\_inputs.f90 - \item {\tt read\_in\_time} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_int} in file set\_inputs.f90 - \item {\tt read\_in\_string} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_int} in file set\_inputs.f90 - \item {\tt read\_in\_string} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_satellites} in file satellites.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_string} in file set\_inputs.f90 - \item {\tt read\_in\_string} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_string} in file set\_inputs.f90 - \item {\tt Set\_Euv} in file calc\_euv.f90 - \item {\tt read\_in\_logical} in file set\_inputs.f90 - \item {\tt read\_in\_real} in file set\_inputs.f90 - \item {\tt read\_in\_string} in file set\_inputs.f90 - \item {\tt IO\_set\_inputs} - \item {\tt read\_NGDC\_Indices} - \item {\tt read\_in\_string} in file set\_inputs.f90 - \item {\tt read\_in\_string} in file set\_inputs.f90 - \item {\tt IO\_set\_inputs} - \item {\tt read\_SWPC\_Indices} - \item {\tt read\_in\_string} in file set\_inputs.f90 - \item {\tt IO\_set\_inputs} - \item {\tt read\_NOAAHPI\_Indices} - \item {\tt stop\_gitm} in file library.f90 - \item {\tt time\_int\_to\_real} in file time\_routines.f90 - \end{itemize} - - -\item {\tt initialize\_gitm} in file {\bf initialize.f90} - \begin{itemize} - \item {\tt init\_radcooling} in file ModEarth.f90 - \item {\tt start\_timing} in file timing.f90 - \item {\tt report} in file library.f90 - \item {\tt time\_real\_to\_int} in file time\_routines.f90 - \item {\tt fix\_vernal\_time} in file set\_inputs.f90 - \item {\tt get\_f107} - \item {\tt get\_f107a} - \item {\tt init\_grid} in file init\_grid.f90 - \item {\tt read\_inputs} in file read\_inputs.f90 - \item {\tt set\_inputs} in file set\_inputs.f90 - \item {\tt read\_restart} in file restart.f90 - \item {\tt init\_msis} in file init\_msis.Earth.f90 - \item {\tt set\_RrTempInd} in file ModRates.Earth.f90 - \item {\tt init\_euv} in file calc\_euv.f90 - \item {\tt init\_altitude} in file init\_altitude.f90 - \item {\tt UAM\_gradient} - \item {\tt init\_heating\_efficiency} in file Earth.f90 - \item {\tt init\_magheat} in file ModEarth.f90 - \item {\tt init\_isochem} in file Mars.f90 - \item {\tt init\_aerosol} in file ModEarth.f90 - \item {\tt init\_isochem} in file Mars.f90 - \item {\tt init\_msis} in file init\_msis.Earth.f90 - \item {\tt get\_temperature} in file init\_altitude.f90 - \item {\tt init\_iri} in file init\_iri.Earth.f90 - \item {\tt read\_waccm\_tides} in file tides.f90 - \item {\tt update\_waccm\_tides} in file tides.f90 - \item {\tt read\_tides} in file tides.f90 - \item {\tt update\_tides} in file tides.f90 - \item {\tt init\_b0} in file init\_b0.f90 - \item {\tt init\_energy\_deposition} in file init\_energy\_deposition.f90 - \item {\tt report} in file library.f90 - \item {\tt SUBSOLR} - \item {\tt exchange\_messages\_sphere} in file exchange\_messages\_sphere.f90 - \item {\tt calc\_pressure} in file calc\_pressure.f90 - \item {\tt UA\_calc\_electrodynamics} in file calc\_electrodynamics.f90 - \item {\tt calc\_eddy\_diffusion\_coefficient} in file Earth.f90 - \item {\tt calc\_rates} in file calc\_rates.Earth.f90 - \item {\tt calc\_viscosity} in file calc\_rates.Earth.f90 - \item {\tt calc\_rates} in file calc\_rates.Earth.f90 - \item {\tt end\_timing} in file timing.f90 - \item {\tt calc\_vtec} in file calc\_tec.f90 - \item {\tt calc\_single\_vtec} in file calc\_tec.f90 - \end{itemize} - - -\item {\tt write\_output} in file {\bf write\_output.f90} - \begin{itemize} - \item {\tt output} in file output\_common.f90 - \item {\tt move\_satellites} in file satellites.f90 - \item {\tt write\_restart} in file restart.f90 - \item {\tt logfile} in file logfile.f90 - \end{itemize} - - -\item {\tt report} in file {\bf library.f90} - - -\item Loop Start - \begin{itemize} - - - \item {\tt calc\_pressure} in file {\bf calc\_pressure.f90} - \begin{itemize} - \item {\tt report} in file library.f90 - \end{itemize} - - - \item {\tt calc\_timestep\_vertical} in file {\bf calc\_timestep.f90} - \begin{itemize} - \item {\tt report} in file library.f90 - \item {\tt MPI\_AllREDUCE} - \item {\tt stop\_gitm} in file library.f90 - \end{itemize} - - - \item {\tt calc\_timestep\_horizontal} in file {\bf calc\_timestep.f90} - \begin{itemize} - \item {\tt report} in file library.f90 - \item {\tt MPI\_AllREDUCE} - \end{itemize} - - - \item {\tt advance} in file {\bf advance.f90} - \begin{itemize} - \item {\tt report} in file library.f90 - \item {\tt start\_timing} in file timing.f90 - \item {\tt update\_tides} in file tides.f90 - \item {\tt update\_waccm\_tides} in file tides.f90 - \item {\tt advance\_vertical\_all} in file advance.f90 - \item {\tt add\_sources} in file add\_sources.f90 - \item {\tt advance\_horizontal\_all} in file advance.f90 - \item {\tt time\_real\_to\_int} in file time\_routines.f90 - \item {\tt get\_f107} - \item {\tt stop\_gitm} in file library.f90 - \item {\tt get\_f107a} - \item {\tt stop\_gitm} in file library.f90 - \item {\tt init\_msis} in file init\_msis.Earth.f90 - \item {\tt init\_iri} in file init\_iri.Earth.f90 - \item {\tt init\_b0} in file init\_b0.f90 - \item {\tt end\_timing} in file timing.f90 - \item {\tt report} in file library.f90 - \item {\tt start\_timing} in file timing.f90 - \item {\tt calc\_rates} in file calc\_rates.Earth.f90 - \item {\tt calc\_viscosity} in file calc\_rates.Earth.f90 - \item {\tt advance\_vertical} in file advance\_vertical.f90 - \item {\tt end\_timing} in file timing.f90 - \item {\tt report} in file library.f90 - \item {\tt start\_timing} in file timing.f90 - \item {\tt exchange\_messages\_sphere} in file exchange\_messages\_sphere.f90 - \item {\tt calc\_rates} in file calc\_rates.Earth.f90 - \item {\tt calc\_physics} in file calc\_physics.f90 - \item {\tt advance\_horizontal} in file advance\_horizontal.f90 - \item {\tt calc\_physics} in file calc\_physics.f90 - \item {\tt calc\_rates} in file calc\_rates.Earth.f90 - \item {\tt advance\_horizontal} in file advance\_horizontal.f90 - \item {\tt exchange\_messages\_sphere} in file exchange\_messages\_sphere.f90 - \item {\tt end\_timing} in file timing.f90 - \end{itemize} - - - \item {\tt check\_stop} in file {\bf stop\_file.f90} - \begin{itemize} - \item {\tt report} in file library.f90 - \item {\tt start\_timing} in file timing.f90 - \item {\tt MPI\_AllREDUCE} - \item {\tt check\_start} in file stop\_file.f90 - \item {\tt end\_timing} in file timing.f90 - \end{itemize} - - - \item {\tt write\_output} in file {\bf write\_output.f90} - \begin{itemize} - \item {\tt output} in file output\_common.f90 - \item {\tt move\_satellites} in file satellites.f90 - \item {\tt write\_restart} in file restart.f90 - \item {\tt logfile} in file logfile.f90 - \end{itemize} - - - \end{itemize} %loop - - - \item Loop End - - -\item {\tt finalize\_gitm} in file {\bf finalize.f90} - \begin{itemize} - \item {\tt UA\_calc\_electrodynamics} in file calc\_electrodynamics.f90 - \item {\tt output} in file output\_common.f90 - \item {\tt write\_restart} in file restart.f90 - \item {\tt end\_timing} in file timing.f90 - \item {\tt report\_timing} in file timing.f90 - \item {\tt UAM\_XFER\_destroy} in file ModSphereInterface.f90 - \item {\tt UAM\_write\_error} in file ModSphereInterface.f90 - \item {\tt stop\_gitm} in file library.f90 - \item {\tt MPI\_FINALIZE} - \end{itemize} - - -\item {\tt stop\_gitm} in file {\bf library.f90} - \begin{itemize} - \item {\tt CON\_stop} in file main.f90 - \item {\tt MPI\_abort} - \end{itemize} -\end{itemize} diff --git a/srcDoc/outputs.tex b/srcDoc/outputs.tex deleted file mode 100644 index 91c64494..00000000 --- a/srcDoc/outputs.tex +++ /dev/null @@ -1,619 +0,0 @@ -Now that you have managed to successfully complete a GITM run you've found yourself with a bunch of output files. All of the GITM output is in mks units and this data is contained within several files located in the {\tt UA/data} directory, as was previously discussed in Chapter~\ref{quickstart.ch} Section~\ref{post_process.sec}. You will have found yourself with several {\tt iriOut\_*.dat} files, a {\tt log*.dat} file, and many {\tt .bin} files in whichever formats you specified in SAVEPLOT (see Chapter~\ref{input.ch} Section~\ref{def_out.sec}). The {\tt iriOut\_*.dat} files are required by the IRI model and not typically used when analyzing the outcome of the GITM run. - -The log file provides useful information about the run, such as whether a restart was performed, which physical processes were used, and a list of the universal time, time-step, neutral temperature ranges (T), solar and geomagnetic indices, and the neutral velocity (VV) ranges for each iteration. This file can be very useful when sharing runs with other users, when revisiting an old run, or merely ensuring that GITM performed as expected. An example log file is provided below: - -\begin{verbatim} -## Inputs from UAM.in -# Resart= F -# Eddy coef: 100.000 Eddy P0: 0.020 Eddy P1: 0.003 Eddy Scaling: 1.000 -# Statistical Models Only: F Apex: T -# EUV Data: TFile: -fismflux.dat -# AMIE: none -none -# Solar Heating: T Joule Heating: T Auroral Heating: T -# NO Cooling: T O Cooling: T -# Conduction: T Turbulent Conduction: T Updated Turbulent Conduction: T -# Pressure Grad: T Ion Drag: T Neutral Drag: T -# Viscosity: T Coriolis: T Gravity: T -# Ion Chemistry: T Ion Advection: T Neutral Chemistry: T - -#START - iStep yyyy mm dd hh mm ss ms dt min(T) max(T)... - ...mean(T) min(VV) max(VV) mean(VV) F107 F107A By Bz Vx... - ...HP HPn HPs SubsolarLon SubsolarLat SubsolarVTEC - 2 2011 9 23 0 0 2 297 2.2979 168.75192 1062.87354... - ...933.09984 -48.19362 524.93645 1.01910 159.3 127.9 -4.6 0.5 406.9... - ...11.1 14.4 15.5 3.14145 -0.37655 45.73188 - . - . - . -\end{verbatim} - -The 3DALL output binary files can contain the following atmospheric quantities: - -\begin{itemize} -\item[]{\bf Altitude:} Altitude from the surface of the planet (m) -\item[]{\bf Ar:} Argon density (m$^{-3}$) -\item[]{\bf Ar Mixing Ratio:} Argon mixing ratio -\item[]{\bf CH4 Mixing Ratio:} Methane mixing ratio -\item[]{\bf Conduction:} Heat conduction -\item[]{\bf EuvHeating:} EUV Heating rate -\item[]{\bf H:} Hydrogen density (m$^{-3}$) -\item[]{\bf H!U+!N:} H$^+$ density (m$^{-3}$) -\item[]{\bf H2 Mixing Ratio:} Molecular Hydrogen mixing ratio -\item[]{\bf HCN Mixing Ratio:} Hydrogen Cyanide mixing ratio -\item[]{\bf He:} Helium density (m$^{-3}$) -\item[]{\bf He!U+!N:} He$^+$ density (m$^{-3}$) -\item[]{\bf Heaing Efficiency:} Heating efficiency -\item[]{\bf Heat Balance Total:} Heat balance total -\item[]{\bf Latitude:} Geographic latitude (degrees) -\item[]{\bf Longitude:} Geographic longitude (degrees) -\item[]{\bf N!D2!N:} N$_2$ density (m$^{-3}$) -\item[]{\bf N!D2!U+!N:} N$_2^+$ density (m$^{-3}$) -\item[]{\bf N!U+!N:} N$^+$ density (m$^{-3}$) -\item[]{\bf N(!U2!ND):} N($^2$D) density (m$^{-3}$) -\item[]{\bf N(!U2!NP):} N($^2$P) density (m$^{-3}$) -\item[]{\bf N(!U4!NS):} N($^4$S) density (m$^{-3}$) -\item[]{\bf N2 Mixing Ratio:} Molecular nitrogen mixing ratio -\item[]{\bf NO:} Nitrious Oxide density (m$^{-3}$) -\item[]{\bf NO!U+!N:} NO$^+$ density (m$^{-3}$) -\item[]{\bf O!D2!N:} O$_2$ density (m$^{-3}$) -\item[]{\bf O!D2!U+!N:} O$_2^+$ density (m$^{-3}$) -\item[]{\bf O(!U1!ND):} O($^1$D) density (m$^{-3}$) -\item[]{\bf O(!U2!ND)!U+!N:} O($^2$D) density (m$^{-3}$) -\item[]{\bf O(!U2!NP)!U+!N:} O($^2$P) density (m$^{-3}$) -\item[]{\bf O(!U3!NP):} O($^3$P) density (m$^{-3}$) -\item[]{\bf O\_4SP\_!U+!N:} O($_4$SP)$^+$ density (m$^{-3}$) -\item[]{\bf RadCooling:} Radiative Cooling rate -\item[]{\bf Rho:} Neutral density (m$^{-3}$) -\item[]{\bf Temperature:} Neutral temperature (K) -\item[]{\bf V!Di!N (east):} Ion velocity towards geographic East (m s$^{-1}$) -\item[]{\bf V!Di!N (north):} Ion velocity towards geographic North (m s$^{-1}$) -\item[]{\bf V!Di!N (up):} Vertical ion velocity (m s$^{-1}$) -\item[]{\bf V!Dn!N (east):} Neutral velocity towards geographic East (m s$^{-1}$) -\item[]{\bf V!Dn!N (north):} Neutral velocity towards geographic North (m s$^{-1}$) -\item[]{\bf V!Dn!N (up):} Vertical neutral velocity (m s$^{-1}$) -\item[]{\bf V!Dn!N (up,N!D2!N):} Vertical N$_2$ velocity (m s$^{-1}$) -\item[]{\bf V!Dn!N (up,N(!U4!NS)):} Vertical N($^4$S) velocity (m s$^{-1}$) -\item[]{\bf V!Dn!N (up,NO):} Vertical NO velocity (m s$^{-1}$) -\item[]{\bf V!Dn!N (up,O!D2!N):} Vertical O$_2$ velocity (m s$^{-1}$) -\item[]{\bf V!Dn!N (up,O(!U3!NP)):} Vertical O($^3$P) velocity (m s$^{-1}$) -\item[]{\bf e-:} electron density (m$^{-3}$) -\item[]{\bf eTemperature:} electron temperature (K) -\item[]{\bf iTemperature:} ion temperature (K) -\item[]{\bf time:} Universal time -\end{itemize} - -There are many routines available to process and analyze the GITM binary files. The majority of these routines are written in IDL and are available in the {\tt srcIDL} directory within the GITM model directory. Currently 50 routines have been saved in this directory and more are under development. Alternatively, python routines are currently being developed and these are located in the {\tt srcPython} directory. Please not that when using the IDL reader the universal time is read in as epoch seconds from January 1, 1965 00:00 UT, while when using the python reader, the time is imported as a datetime object. - -\section{IDL} -\label{idl.sec} - -Here is an complete list with some description of the IDL processing and visualization routines currently available. Please feel free to update this section for other GITM users when you CVS your vetted GITM processing routines. - -\subsubsection{gitm\_read\_bin} - -This is a routine to read a GITM bin file into IDL. This is great when you want to get a handle on the data and experiment with different visualization methods. - -\subsubsection{thermo\_plotsat} - -This is the most commonly used routine to plot the 1D GITM results. It can also be used to plot satellite files and other 1D simulations. It is relatively straight forward to use, but experimentation can be help. This is an actual program, so you have to {\tt .run} it. - -\subsubsection{thermo\_gui} - -This is a someone simplistic graphical user interface code for plotting 3D results. The filename has to be entered manually in the upper left. You then have to press the button for loading the file. Variables appear on the left side, and you can select which one you want to plot. You then select which of the available planes you would like to look at (lat/lon, lat/alt, or lon/alt) or scroll through the options. This interface allows you to add wind vectors, plot in polar coordinates, and plot the log of the variable. - -\subsubsection{thermo\_batch\_new} - -This code will let you look at at 3D files exactly the same way as thermo\_gui, but is all scripted. There are a few features that this has that thermo\_batch doesn't have: - -\begin{enumerate} -%\setlength{\itemsep}{-3in} - \item You can use wildcards for the file name, so that a list of files can be read. The postscript file names created for each figure will be differentiated by appending numbers sequentially so that no figures are overwritten. - \item When plotting a lat/alt plane, you can do a zonal average. - \item You can do a global average. -\end{enumerate} - -\subsubsection{thermo\_plotter} - -All of the above plotting codes will only plot one plot per page. This code will plot many more than one plot per page. You can plot multiple variables on the same page, or multiple files with the same variable, or both. - -\subsubsection{Other IDL Routines} - -Please feel free to provide a description of these routines so that GITM users do not waste their time rewriting code that already exists. - -\begin{multicols}{3} -\begin{itemize} -\item{\bf ask} -\item{\bf c\_a\_to\_r} -\item{\bf c\_a\_to\_s} -\item{\bf chopr} -\item{\bf closedevice} -\item{\bf c\_r\_to\_a} -\item{\bf c\_s\_to\_a} -\item{\bf get\_position} -\item{\bf makect} -\item{\bf mklower} -\item{\bf mm} -\item{\bf plotct} -\item{\bf plotdumb} -\item{\bf plotmlt} -\item{\bf pos\_space} -\item{\bf read\_thermosphere\_file} -\item{\bf setdevice} -\item{\bf thermo\_batch} -\item{\bf thermo\_calcforce} -\item{\bf thermo\_champ} -\item{\bf thermo\_compare} -\item{\bf thermo\_compare\_time} -\item{\bf thermo\_convert\_champfiles} -\item{\bf thermo\_guvi} -\item{\bf thermo\_magequator} -\item{\bf thermo\_make\_summary} -\item{\bf thermo\_mkguvisat} -\item{\bf thermo\_mksatsave} -\item{\bf thermo\_mksave} -\item{\bf thermo\_mktec} -\item{\bf thermo\_on2} -\item{\bf thermo\_plotdist} -\item{\bf thermo\_plotlog} -\item{\bf thermo\_plot\_new} -\item{\bf thermo\_plot} -\item{\bf thermo\_plotsat2} -\item{\bf thermo\_plotsat\_constalt\_ON2} -\item{\bf thermo\_plotsat\_constalt} -\item{\bf thermo\_plotvectors} -\item{\bf thermo\_readsat} -\item{\bf thermo\_sigma} -\item{\bf thermo\_superposed} -\item{\bf thermo\_tec} -\item{\bf thermo\_temp} -\item{\bf tostr} -\end{itemize} -\end{multicols} - -\section{Python} -\label{python.sec} - -This section provides an almost complete list of the vetted GITM python routines. These routines require that you use PyBats, a module included in SpacePy. This is a library developed for space physics applications by the scientists at Los Alamos and can be downloaded for free at: -{\tt http://spacepy.lanl.gov} - -Another library, Basemap, is required for certain plotting routines. Basemap is a part of the Matplotlib Toolkit and can be installed using Fink, Macports, or downloaded at: -{\tt http://matplotlib.org/basemap/} - -Yet another library, Pysolar, is used to calculate the solar position. You don't \textit{need} to download Pysolar to run any of the GITM plotting scripts, but it does expand the functionality. Pysolar is documented at Github and can be downloaded at: -{\tt http://www.pysolar.org} - -Python scripts that create movies rely on external programs to do so. The scripts included here use FFmpeg, which can be installed using Fink, Macports, or downloaded at: {\tt http://http://www.ffmpeg.org/} - -If you have questions about these routines or are at the University of Michigan and want to start using Python, Dr. Welling is the man to see. The source code behind the PyBats GITM routines are also located in {\tt GITM2/srcPython}. - -The following programs include the vetted python routines. The examples shown are meant to be run in ipython, an interactive command-line interface for python. The terminal window that is running ipython should be located in the {\tt GITM2/srcPython} directory. The test file for the example code is one of the files output after running the default {\tt UAM.in} file. - -\subsubsection{gitm.py} - -GITM is a PyBats submodule that handles input and output from GITM. It can be helpful for those wishing to write their own GITM processing routines but doesn't contain any analysis or visualization routines. - -Once you have downloaded and installed Spacepy, the gitm submodule can be accessed via: - -\noindent{\tt import spacepy.pybats.gitm} - - \noindent Though to be sure that you have the latest version it is best to CVS the latest version of {\tt gitm.py} and load: - -\noindent {\tt import gitm} - -\noindent while running the {\tt GITM2/srcPhython} directory. This module contains the following routines: - -\begin{itemize} -\item[]{\bf GitmBin: } A data class and routine to load a GITM output bin file, based on the PyBats data container class PbData. There are two keywords arguements that may be associated with this input, \textit{ionfile}, and \textit{varlist}. The first keyword, \textit{ionfile}, takes a 3DION file as input, assigns an attribute called `ionfile' to the data class, and runs one of the functions called {\bf calc\_magvel} to calculate the ion and neutral velocities in magnetic coordinates. The second keyword, \textit{varlist}, takes a list of atmospheric quantities such as those listed at the beginning of this chapter. More variables may always be added from the same file that created a data class by calling the function {\bf append\_data}. Geographic position in degrees and local time are also added to the output, regardless of what variables are specified. A 3DION file may also be associated with the output GITM class after the fact by assigning a filename to the attribute `ionfile' and the magnetic velocity quantities obtained by running {\bf calc\_magvel}. - \begin{itemize} - \item[]{\bf append\_data: } A routine to append variables specified in an input list. These are obtained from the file specified in the `file' attribute. - \item[]{\bf append\_units: } A routine to append unit, scale, and name attributes to the variable keys in the data class. Runs automatically with {\bf GitmBin}. - \item[]{\bf calc\_deg: } A routine to compute latitude and longitude in degrees instead of radians. Runs automatically with {\bf GitmBin}. - \item[]{\bf calc\_lt: } A routine to compute local time from universal time and longitude. Runs automatically with {\bf GitmBin}. - \item[]{\bf calc\_magdi: } A routine to compute the magnetic inclination and declination from the magnetic field expressed in East-North-Vertical coordinates. Runs automatically with {\bf GitmBin} when the appropriate inputs are present. - \item[]{\bf calc\_magvel: } A routine to compute ion and neutral velocities in magnetic coordinates. Runs automatically with {\bf GitmBin} if the \textit{ionfile} keyword is specified. - \item[]{\bf calc\_tec: } A routine to calculate the VTEC from any GITM data structure that has altitude and electron density. - \item[]{\bf calc\_2dion: } A routine to calculate the VTEC (if it hasn't been done already), $h_mF_2$, and $N_mF_2$ from any GITM data structure that has altitude and electron density - \end{itemize} -\end{itemize} - -You can load a GITM binary file by entering the following commands. Comments are preceded by a `\#'. - -\begin{verbatim} -In [1]: import spacepy -In [2]: import gitm # Load the local version of gitm.py, which may be more up-to-date -In [3]: gdata = gitm.GitmBin(`3DALL_t021124_000000.bin') # example binary file -In [4]: gdata.attrs -Out[4]: -{`endian': `big', - `file': `3DALL_t021124_000000.bin', - `nAlt': 54, - `nLat': 22, - `nLon': 22, - `nVars': 39, - `version': 3.13} -\end{verbatim} - -The method used by {\bf calc\_2dion} to compute the $h_mF_2$ (height of the F$_2$ region density peak) does more than just look for the height of the electron maximum at the specified locations. Instead it performs a few checks to ensure that the peak density lies within an altitude range consistent with the F region and is not an edge artifact. This process is outlined in Figure~\ref{hmf2_flowchart.fig}. - -\begin{figure} -\begin{center} -\noindent\includegraphics[width=\textwidth]{Figures/determining_hmF2_flowchart.png} -\caption{Process for finding the $h_mF_2$ from a GITM electron density altitude profile.} -\label{gitm_3D_global_plots.fig} -\end{center} -\label{hmf2_flowchart.fig} -\end{figure} - -One of the intermediate steps in Figure~\ref{hmf2_flowchart.fig} is to find the inflection points in the altitude profile of electron density. Figure~\ref{hmf2_profile.fig} shows an example of an electron density profile with no local maxima. To determine the height of the F$_2$ peak, the height derivative of the electron density profile is computed and local minima along the profile located. These local minima correspond to inflection points in the electron density profile, and can be used to locate a reasonable $h_mF_2$. - -\begin{figure} -\begin{center} -\noindent\includegraphics[width=.6\textwidth]{Figures/determining_hmF2_saddle_profile.png} -\caption{Electron density profile (red) and height derivative of the electron density profile (blue) for an instance where GITM does not show a clear F$_2$ peak. The $h_mF_2$ is identified by choosing the inflection point (local minima from the height derivative of the electron density profile) with the largest electron density (dark grey line). The light grey lines show the remaining locations of inflection points.} -\label{gitm_3D_global_plots.fig} -\end{center} -\label{hmf2_profile.fig} -\end{figure} - -\subsubsection{gitm\_time.py} - -gitm\_time has not yet been incorporated into PyBats, as it is actively being developed. This module contains the following routines: - -\begin{itemize} -\item[]{\bf GitmTime: } A data class and routine to load multiple GITM output binaries into a structure that includes a universal time (UT) dimension. All data types and attributes provided by GitmBin are provided in this data class. - \begin{itemize} - \item[]{\bf appendgitm: } Add another GitmBin object to an existing GitmTime object. This routine is also be used to create a GitmTime object. - \item[]{\bf appendobs: } Add any type of data to an existing GitmTime object. The data can be directly appended or matched to the existing GitmTime data. Three match options are available: nearest neighbor, running average, and running median. The latter two options compute a central value and standard deviation using a specified location/time window about each GitmTime data point. - \item[]{\bf sat\_dateloc\_ticks: } Define axis ticks that include all the information necessary to know where measurements lie in spacetime. This is most useful when plotting data along a satellite orbit. - \end{itemize} -\item[]{\bf load\_multiple\_gitm\_bin: } A routine to load a list of GITM output binary files into GitmBin data structures. The output is a list of the GitmBin structures, where each element in the list contains the data from a GITM output binary. -\item[]{\bf set\_sat\_dateloc\_label: } Create a label for the ticks created by GitmTime.sat\_dateloc\_ticks. Outputs the label onto a plot on the right end of the x-axis. -\end{itemize} - -You can load multiple GITM binary files into a data structure with UT dependence by entering the following commands. Commands outside of ipython are preceded by a `\$'. Again, the output files used are produced by running the default {\tt UAM.in} file. - -\begin{verbatim} -$ ls 3DALL_t021124_000* > test.list -$ ipython -In [1]: import spacepy -In [2]: import gitm # Load the local version of gitm.py, which may be more up-to-date -In [3]: import gitm_time as gt -In [4]: gtdata = gt.GitmTime(`test.list') -In [5]: print gtdata['time'][:] -[datetime.datetime(2002, 11, 24, 0, 0) - datetime.datetime(2002, 11, 24, 0, 5)] -In [6]: print gtdata['dLon'][0,:,10,27] -[ -30. -10. 10. 30. 50. 70. 90. 110. 130. 150. 170. 190. - 210. 230. 250. 270. 290. 310. 330. 350. 370. 390.] -In [7]: print gtdata['dLat'][0,10,:,27] -[-105. -95. -85. -75. -65. -55. -45. -35. -25. -15. -5. 5. - 15. 25. 35. 45. 55. 65. 75. 85. 95. 105.] -In [8]: print gtdata['Altitude'][0,10,10,:] -[ 96660.90047544 98330.45023772 100000. 101669.54976228 - 103348.94180562 105050.15497984 106788.53042153 108584.61276626 - 110467.61429397 112482.48190265 114698.91401856 117219.51380361 - 120200.6752566 123855.40706002 128245.43857411 133349.83464183 - 139220.53740507 145894.02746965 153389.42319611 161708.33330952 - 170836.59866663 180746.14929878 191399.58798926 202753.75931196 - 214763.18484817 227382.89781152 240569.83529396 254283.5502381 - 268486.11667059 283141.61144778 298215.46358093 313673.89525175 - 329480.19139848 345605.83193525 362018.21624294 378685.73558327 - 395578.19775965 412667.22510966 429926.74623085 447332.78448625 - 464864.02590453 482501.63589793 500229.1662886 518032.39821451 - 535899.14534895 553819.03817939 571783.3052721 589784.56266012 - 607816.61836022 625874.29578468 643953.27746286 662049.96890339 - 680161.38144647 698272.79398955] -\end{verbatim} - -\subsubsection{gitm\_plot\_rout.py} - -Common routines used to format and analyze GITM data. - -\begin{itemize} -\item[]{{\bf choose\_contour\_map: } A routine to choose an appropriate color map based on whether the plot will be black and white or color, and whether data data range will be centered about zero or not.} -\item[]{{\bf add\_colorbar:} Add a color bar to a contour plot.} -\item[]{{\bf find\_order\_of\_magnitude: } Find the order of magnitude of a specified number.} -\item[]{{\bf center\_polar\_cap:} Adjust radial coordinates to produce a centered polar plot. Necessary for the northern hemisphere, where polar plots assume the radial (latitude) coordinates should be centered at zero instead of 90$^\circ$. This routine does not depend on SpacePy.} -\item[]{{\bf find\_data\_limits:} Find the upper and lower limits for a specified data key in a list of GITM data structures at a specified location (either single indices or the entire range are permitted for latitude, longitude, and altitude).} -\item[]{{\bf find\_data\_limits\_irange:} Find the upper and lower limits for a specified data key in a list of GITM data structures at a specified location range (upper and lower limits or the entire range are permitted for latitude, longitude, and altitude).} -\item[]{{\bf find\_data\_limits\_ivalues: } Establish the appropriate axis limits for a list of GitmBin files at a range or specific latitude, longitude, or altitude.} -\item[]{{\bf glon\_to\_localtime: } Compute the local time given a longitude and universal time.} -\item[]{{\bf localtime\_to\_glon:} Find the longitude at a specified universal time and local time.} -\item[]{{\bf find\_lon\_lat\_index:} Find the indexes for the location closest to a specified latitude and longitude.} -\item[]{{\bf retrieve\_key\_from\_web\_name:} Find a data key given a website-friendly version of data key names.} -\item[]{{\bf find\_alt\_index:} Find the index closest to the specified altitude. Altitude may be specified in km or m.} -\item[]{{\bf match\_cindi\_key: } A routine to retrieve a CINDI data key from a GITM key or vice versa.} -\item[]{{\bf add\_geomagnetic\_equator: } A routine to add a line showing the geomagnetic equator (specified by IGRF-10) to an existing plot. Line style and color may be specified.} -\item[]{{\bf add\_subsolar\_point: } A routine to find the location of the subsolar point at a specified Universal Time using the Pysolar routines. Returns the geographic location of the point and will also add a marker to a plot.} -\item[]{{\bf add\_solar\_terminator: } Computes the location of the solar terminator using the Pysolar routines. Returns numpy arrays of the geographic coordinates of the solar terminator and will also add a line denoting the solar terminator to a plot.} -\item[]{{\bf find\_sunside\_twilight\_sza:} A routine to find the maximum angular distance between the solar terminator and the sunlight side with conjugate flux tube feet in darkness using Pysolar routines. The solar zenith angle corresponding to the sunlight boundary is returned. The entire day is searched to identify the sunlight boundary given any degree of magnetic declination.} -\item[]{{\bf create\_contour\_input\_array:} Creates contour input at a specified location between GITM grid points.} -\item[]{{\bf create\_linear\_input\_array:} Creates linear input at a specified location between GITM grid points.} -\item[]{{\bf get\_meq\_offset: } Find the offset in degrees between the geographic and geomagnetic equators at a specified longitude.} -\end{itemize} - -This example shows how the index for a specified altitude can be found. Note that GITM saves altitude in meters. - -\begin{verbatim} -In [1]: import spacepy -In [2]: import gitm -In [3]: import gitm_plot_rout as gpr -In [4]: gdata = gitm.GitmBin(`3DALL_t021124_000000.bin') -In [5]: ialt = gpr.find_alt_index(gdata, 10, 10, 250.0, "km") -In [6]: print ialt, gdata['Altitude'][10,10,ialt] -27 254283.550238 -\end{verbatim} - -\subsubsection{solar\_rout.py} - -Routines that use Pysolar to find the location of the solar terminator and subsolar point. - -\begin{itemize} -\item[]{\bf subsolar\_point: } Finds the geographic location of the subsolar point at a specified Universal Time. -\item[]{\bf lat\_lon2spherical\_xyz: } Converts latitude and longitude to spherical coordinates. Assumes a spherical earth. -\item[]{\bf spherical\_xyz2lat\_lon: } Converts from spherical coordinates to geographic latitude and longitude, assuming a spherical earth. -\item[]{\bf get\_solar\_terminator\_xyz\_matrix: } Finds the location of the solar terminator in spherical coordinates. -\item[]{\bf get\_terminator\_lat\_lon\_coordinates: } Finds the location of the solar terminator in geographic coordinates using input from a solar-oriented spherical coordinate system. -\item[]{\bf get\_solar\_terminator\_lat\_lon: } Finds the location of the solar terminator at a specified time in geographic coordinates. -\end{itemize} - -\subsubsection{gitm\_loc\_rout.py} - -Routines used to find certain locations or values, as well as routines to align or match points in different data sets. - -\begin{itemize} -\item[]{\bf find\_nearest\_location: } A routine to find the nearest neighbor in a 1, 2, or 3D coordinate system. -\item[]{\bf find\_nearest\_value: } A routine to find the nearest neighbor to a specified value. -\item[]{\bf find\_nearest\_datetime: } A routine to find the nearest neighbor between datetime objects. -\item[]{\bf match\_running\_average: } Provide running averages at specified times and locations. -\item[]{\bf match\_running\_median: } Provide running medians at specified times and locations. -\item[]{\bf gitm\_inst\_loc: } A routine to align GITM and instrument data. -\item[]{\bf gitm\_net\_loc: } A routine to align GITM and data from a large network of instruments. -\item[]{\bf gitm\_time\_obs\_loc: } A routine to find, through interpolation, the GITM value at a specific observation location when only one spatial coordinate needs to be aligned. -\end{itemize} - -\subsubsection{gitm\_3D\_global\_plots.py} - -Routines to build and output GITM output variable contour (recommended) or scatter plots over a geographic range. Several different standard plot formats are available, and routines useful for creating custom figures are also included. The Earth's continental boundaries may be included in any output figure. If they are, shading in the night time region of the globe may also be included. - -\begin{itemize} -\item[]{{\bf gitm\_single\_3D\_image:} This is a basic visualization routine that creates a filled contour plot of a single output variable from a GITM 3D at a specified altitude or 2D bin file. The output variable is plotted as a function of latitude and longitude over the entire globe, though the latitude range may be limited. The output plot may be polar or rectangular and if the rectangular option is chosen, the geomagnetic equator may also be included in the output figure. Sample output of the electron temperature is shown in figure~\ref{gitm_3D_global_plots.fig}~(a) and~(b).} -\item[]{{\bf gitm\_single\_nsglobal\_3D\_image:} A quick way to examine GITM output at both poles. This routine creates two polar contour plots centered at the geographic northern and southern poles for a single output variable from a GITM 3D at a specified altitude or 2D bin file. The equatorial and polar latitude boundaries may both be specified, though they cannot change between hemispheres. Sample output of the electron temperature is shown in figure~\ref{gitm_3D_global_plots.fig}~(c)} -\item[]{{\bf gitm\_global\_3D\_snapshot:} A snapshot of a single GITM output over the entire globe. This routine creates two polar contour plots centered at the geographic northern and southern poles and extending to a specified latitude and a single rectangular plot containing the latitudes equatorward of this point for a single output variable from a GITM 3D at a specified altitude or 2D bin file. The geomagnetic equator may also be included in the output figure. Sample output of the electron temperature is shown in figure~\ref{gitm_3D_global_plots.fig}~(d)} -\item[]{{\bf gitm\_mult\_3D\_slices:} This routine creates a single plot containing multiple global contours of a GITM output variable from a 3D or 2D bin file at a list of specified altitudes. These plots may be either polar or rectangular, with or without the geomagnetic equator, and within a specified latitude range. Sample output of the electron temperature is shown in figure~\ref{gitm_3D_mult_plots.fig}.} -\end{itemize} - -\begin{figure} -\begin{center} -\subfigure[]{ -\noindent\includegraphics[width=.45 \textwidth]{Figures/plot_single_3D_image_polar.png} -} -\subfigure[]{ -\noindent\includegraphics[width=.45 \textwidth]{Figures/plot_single_3D_image_rect.png} -} -\subfigure[]{ -\noindent\includegraphics[width=.45 \textwidth]{Figures/plot_single_nsglobal_3D_image.png} -} -\subfigure[]{ -\noindent\includegraphics[width=.45 \textwidth]{Figures/plot_global_3D_snapshot.png} -} -\caption{GITM electron temperature at 456.63 $km$ altitude for: (a) northern latitudes, (b) over the entire globe, (c) over the entire globe, as viewed from the poles, and (d) as a global snapshot.} -\label{gitm_3D_global_plots.fig} -\end{center} -\end{figure} - -\begin{figure} -\begin{center} -\subfigure[]{ -\noindent\includegraphics[height=.9 \textheight]{Figures/plot_mult_3D_slices_polar.png} -} -\subfigure[]{ -\noindent\includegraphics[height=.9 \textheight]{Figures/plot_mult_3D_slices_rect.png} -} -\caption{GITM electron temperature at seven altitude slices for (a) northern latitudes and (b) the entire globe.} -\label{gitm_3D_mult_plots.fig} -\end{center} -\end{figure} - -This example shows how to reproduce Figure~\ref{gitm_3D_global_plots.fig}~(a). - -\begin{verbatim} -In [1]: import spacepy -In [2]: import gitm -In [3]: import gitm_3D_global_plots as g3d -In [4]: import matplotlib.pyplot as plt -In [5]: plt.ion() # This makes the plotting happen interactively -In [6]: gdata = gitm.GitmBin(`3DALL_t021124_000000.bin') -In [7]: title = "%s UT" % (gdata[`time']) -In [8]: f = g3d.plot_single_3D_image("polar", "eTemperature", gdata, title, - "example_polar_plot.png", True, 27, 90, 0) -\end{verbatim} - -\subsubsection{plot\_3D\_global.py} - -Routines to build contour or scatter plots over a geographic range. Several different standard plot formats are available, and routines useful for creating custom figures are also included. The Earth's continental boundaries may be included in any output figure. If they are, shading in the night time region of the globe may also be included. Input data must be provided in separate numpy arrays (1D or 2D for scatter plots, 2D for contour plots). - -\begin{itemize} -\item[]{{\bf plot\_single\_3D\_image:} This is a basic visualization routine that creates a filled contour or a colored scatter plot of a single output variable. The output variable is plotted as a function of latitude and longitude over the entire globe, though the latitude range may be limited. The output plot may be polar or rectangular and if the rectangular option is chosen, the geomagnetic equator may also be included in the output figure. If the polar option is used, the latitude range cannot extend beyond $\pm$ 90$^\circ$. If the rectangular option is used, the geomagnetic equator may also be plotted.} -\item[]{{\bf plot\_single\_nsglobal\_3D\_image:} A quick way to examine a variable at both poles. This routine creates two polar contour or scatter plots centered at the geographic northern and southern poles for a single output variable. The equatorial and polar latitude boundaries may both be specified, though they cannot change between hemispheres.} -\item[]{{\bf plot\_global\_3D\_snapshot:} A snapshot of an output variable over the entire globe. This routine creates two polar contour or scatter plots centered at the geographic northern and southern poles and extending to a specified latitude as well as a single rectangular plot containing the latitudes equatorward of this point. The geomagnetic equator may be output over the data.} -\item[]{{\bf plot\_mult\_3D\_slices:} This routine creates a single plot containing multiple global contour or scatter plots for a single variable at specific indices (corresponding to different altitude, universal times, \textit{et cetera}). These plots may be either polar or rectangular (with or without the geomagnetic equator). Sample output of the electron temperature is shown in figure~\ref{gitm_3D_mult_plots.fig}. The numpy arrays containing the data may be 2D or 3D for scatter plots or 3D for contour plots. Any dimension may contain the indices to iterate over for the subfigures.} -\item[]{{\bf plot\_nsglobal\_subfigure:} This routine creates a subfigure with two polar contour or scatter plots centered at the geographic northern and southern poles for a single output variable. The equatorial and polar latitude boundaries may both be specified, though they cannot change between hemispheres. This is used by plot\_single\_nsglobal\_3D\_image and may also be used to create a subplot with this format.} -\item[]{{\bf plot\_snapshot\_subfigure:} This routine creates a subfigure with two polar dials and a rectangular region showing the equatorial latitudes for a single output variable. This is used by plot\_global\_3D\_snapshot and may also be used to create a subplot with this format.} -\item[]{{\bf plot\_rectangular\_3D\_global:} This routine plots a single rectangular filled contour or colored scatter for an output variable as a function of latitude and longitude. Options exist to control the colorbar, ticks, labels, and more. A handle to the contour plot is returned to allow the output to be further manipulated depending on what other subplots are included in the output figure.} -\item[]{{\bf plot\_polar\_3D\_global:} This routine plots a single polar filled contour for a GITM output variable at a specified altitude index as a function of latitude and longitude. Title, colorbar, labels, and more may be specified using input options. A handle to the contour plot is returned to allow the output to be further manipulated depending on what other subplots are included in the output figure. The longitude at the top of the plot may also be specified, this allows one to ensure a specific local time is always located at the top of the dial using a routine like {\bf localtime\_to\_glon}.} -\end{itemize} - -\subsubsection{gitm\_alt\_plots.py} - -Routines to build and output GITM output variable linear and contour plots over an altitude range. Several different standard plot formats are available, and routines useful for creating custom figures are also included. - -\begin{itemize} -\item[]{{\bf gitm\_single\_alt\_image:} Creates a single linear or contour altitude plot.} -\item[]{{\bf gitm\_mult\_alt\_image:} Creates a figure with multiple linear or contour altitude plots.} -\item[]{{\bf gitm\_alt\_slices:} Creates a figure with a contour plot showing the altitude dependence of a quantity as a function of latitude or longitude with several linear altitude slices at specified locations. An example is shown in figure~\ref{gitm_alt_slices.fig}} -\end{itemize} - -\begin{figure} -\begin{center} -\noindent\includegraphics[width=\textwidth]{Figures/gitm_alt_slice_test_Te.png} -\caption{GITM electron temperature at a constant longitude with six latitude slices.} -\label{gitm_alt_slices.fig} -\end{center} -\end{figure} - -This example shows how to reproduce Figure~\ref{gitm_alt_slices.fig}. - -\begin{verbatim} -In [1]: import spacepy -In [2]: import gitm -In [3]: import gitm_alt_plots as gap -In [4]: import gitm_plot_rout as gpr -In [5]: import matplotlib.pyplot as plt -In [6]: plt.ion() # This makes the plotting happen interactively -In [7]: gdata = gitm.GitmBin(`3DALL_t021124_000000.bin') -In [8]: title = "%s UT" % (gdata[`time']) -In [9]: lat_index = list() -In [10]: lon_index = list() -In [11]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, -65.0, "degrees") -In [12]: lon_index.append(ilon) -In [13]: lat_index.append(ilat) -In [14]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, -45.0, "degrees") -In [15]: lat_index.append(ilat) -In [16]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, -5.0, "degrees") -In [17]: lat_index.append(ilat) -In [18]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, 5.0, "degrees") -In [19]: lat_index.append(ilat) -In [20]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, 45.0, "degrees") -In [21]: lat_index.append(ilat) -In [22]: (ilon, ilat) = gpr.find_lon_lat_index(gdata, 150.0, 65.0, "degrees") -In [23]: lat_index.append(ilat) -In [24]: f = gap.plot_alt_slices("eTemperature", gdata, lat_index, lon_index, - title, "example_alt_plot.png") -\end{verbatim} - -\subsubsection{plot\_alt\_profiles.py} - -Routines to build and output linear and contour plots over an altitude range. Several different standard plot formats are available, and use any numpy array as input. - -\begin{itemize} -\item[]{{\bf plot\_single\_alt\_image:} Creates a single linear or contour altitude plot.} -\item[]{{\bf plot\_mult\_alt\_image:} Creates a figure with multiple linear or contour altitude plots.} -\item[]{{\bf plot\_alt\_slices:} Creates a figure with a contour plot showing the altitude dependence of a quantity as a function of latitude or longitude with several linear altitude slices at specified locations.} -\item[]{{\bf plot\_linear\_alt:} Plots the the linear altitude dependence of a quantity, with altitude on the y-axis.} -\item[]{{\bf plot\_3D\_alt:} Plots the altitude dependence of a quantity as the function of another spatiotemporal coordinate with the spatiotemporal coordinate on the x-axis, altitude on the y-axis, and the desired quantity as a color contour.} -\end{itemize} - -\subsubsection{gitm\_comparison\_plots.py} - -Routines to make plots that compare GITM data with observations. The observational sources include satellites, ground-based receivers, and receiver networks. - -\begin{itemize} -\item[]{\bf extract\_data\_matched\_arrays: } Extract points from matched data arrays for elements where neither array contains a specified `bad' value. -\item[]{\bf extract\_gitm\_time\_arrays: } Routine to extract all positions with valid data from a GitmTime object and construct numpy arrays. A single universal time, longitude, latitude, and/or altitude may be specified. -\item[]{\bf plot\_net\_gitm\_comp: } A routine to create a plot comparing 2D GITM data (such as VTEC or $h_mF_2$) to observations taken from a network of instruments over the globe. The map format may be rectangular, polar, or a combination (provided by plot\_nsglobal\_subfigure or plot\_snapshot\_subfigure). The top subfigure shows the observations as a scatter figure, the middle subfigure shows the GITM data as a contour, and the bottom subfigure shows the difference between the two as a scatter plot. The difference must be computed outside of this program, and so may be the difference, absolute difference, percent difference, or any other type of comparison. An example is shown in Figure~\ref{teccomp.fig}. -\item[]{\bf plot\_sat\_gitm\_comp: } Routine to plot satellite and GITM data to show how a single physical quantity varies over the orbit. Four panels are included; the top panel shows the raw satellite data and the GITM data along the track. The second panel shows the matched GITM/satellite data. The third panel shows the difference between the satellite and GITM data. The fourth panel shows the percent difference 100*(sat-GITM)/sat. -\end{itemize} - -\begin{figure} -\begin{center} -\noindent\includegraphics[width=.9 \textwidth]{Figures/gitm_tec_comp.png} -\caption{Madrigal and GITM vertical TEC comparison.} -\label{teccomp.fig} -\end{center} -\end{figure} - -\subsubsection{load\_files.py} - -Routines to load certain types of data files into a dictionary of numpy arrays, where each data type is used to specify the dictionary keys. - -\begin{itemize} -\item[]{{\bf loadCINDIorbit\_ASCII: } Loads the Coupled Ion Neutral Dynamics Investigation ASCII files provided by the UT Dallas website.} -\item[]{{\bf loadMadrigalVTEC\_ASCII: } Loads the GPS TEC ASCII files provided by the Millstone Hill Madrigal site.} -\item[]{{\bf loadGITMsat\_ASCII: } Loads the satellite file used as input for a GITM run.} -\item[]{{\bf loadMadrigalVTEC\_HDF5:} Loads the GPS TEC HDF5 files provided by the Millstone Hill Madrigal site.} -\end{itemize} - -\subsubsection{read\_files.py} - -Routines to read certain file formats and load the data into a dictionary of numpy arrays, where each data type is used to specify the dictionary keys. - -\begin{itemize} -\item[]{{\bf loadASCII\_data\_header: } Loads an ASCII file with header lines denoted by a `\#' .} -\item[]{{\bf loadASCII\_data\_hline: } Loads an ASCII file with a specified number of header lines.} -\item[]{{\bf loadASCII\_index\_profile: } Loads an ASCII file with header lines denoted by a `\#' that has been broken up into indexed blocks (blocks separated by double newlines, or indexes as specified by gnuplot). The indexed structure is maintained in the output dictionary by providing a list of numpy arrays for each data column.} -\item[]{{\bf load\_multASCII\_data:} Loads multiple ASCII files into a single output dictionary.} -\item[]{{\bf loadnetCDF\_data: } Loads netCDF files into an output dictionary.} -\item[]{{\bf combine\_data\_dictionaries: } Combines multiple data dictionaries into a single dictionary, including only the data keys common to all of the inputted data dictionaries.} -\end{itemize} - -\subsubsection{read\_gps\_bin.py} - -A script to read a VMR GPS binary file, providing data at a specified Universal Time. - -\begin{itemize} -\item[]{\bf GpsFile: } Class containing all of the data from the VMR GPS binary file. - \begin{itemize} - \item[]{\bf read\_header: } Reads the VMR GPS binary file header, allowing data to be easily located as desired. - \item[]{\bf read\_time: } Read in all the GPS data at the specified Universal Time. The specified time and the file times do not have to be perfectly aligned, as long as the specified time falls between the first and last time in the GPS file, the data with the closest temporal proximity will be returned. - \end{itemize} -\end{itemize} - -\subsubsection{write\_files.py} - -Routines to write output files. - -\begin{itemize} -\item[]{\bf writeASCII\_file: } A routine to create an ASCII file from a string or list of strings. Will overwrite any file of the same name that already exists. -\item[]{\bf writeASCII\_data\_w\_sorttext: } A routine to create an ASCII file from a data dictionary of dictionaries. The first layer of keys is used to provide the data columns, the second layer is output as additional data column(s) where the keys are output as strings. Datetime columns are output as two strings, one containing the date information and a second one containing the time of day information. -\end{itemize} - -\subsubsection{plot\_stats.py} - -Routines to compute and plot common statistics. - -\begin{itemize} -\item[]{\bf add\_stat\_to\_line: } Computes the moments, first through third quartiles, and mode(s) (as desired) for a dataset and outputs the statistics as a formatted text line that can be output to a file and in a list. -\item[]{\bf add\_stat\_box: } Computes the moments, first through third quartiles, and mode(s) (as desired) for a dataset and outputs the statistics in a text box onto a plot and in a list. -\item[]{\bf plot\_hist\_w\_stats: } Calculates and plots a histogram of a specified dataset, as well as the moments, first through third quartiles, and mode(s) (as desired). -\item[]{\bf plot\_lat\_lt\_stats: } Calculates and plots histograms and statistics for a specified dataset broken up into latitude and local time regions. -\item[]{\bf lat\_lt\_stat\_lines: } Calculates statistics for a specified dataset broken up into latitude and local time regions, providing a formatted string with the statistics for each region taking up a line. -\end{itemize} - -\subsubsection{gitm\_movie\_script.py} - -This is a python script that can be run either from ipython using the command {\tt run gitm\_movie\_script.py} or the command line using the command {\tt python gitm\_movie\_script.py}. Input to this program is prompted interactively, and includes: - -\begin{itemize} -\item{{\tt Ordered list of GITM binary files:} A list of GITM binary files in chronological order (or whatever other order the movie should be played in).} -\item{{\tt GITM plot type (rectangular, polar, nspolar, snapshot):} The keyword for the desired plot type. These are the plot types shown in figure~\ref{gitm_3D_global_plots.fig}, where polar corresponds to panel (a), rectangular to panel (b), nspolar to panel (c), and snapshot to panel (d).} -\item{At this point, the routine enters a while-loop to allow multiple movies to be made for the same list of GITM binary files} - \begin{itemize} - \item{{\tt GITM key to plot on z axis (eg Temperature):} The data key corresponding to the data type to plot on the z axis. A list of data keys can be found by typing `{\tt gdata.keys()}' into ipython after loading one of the listed GITM binaries.} - \item{{\tt Altitude to plot z value at (eg 250):} Altitude to plot, may be specified in km or m. For 2D parameters, a value must be entered, but doesn't matter.} - \item{{\tt Units of altitude (km or m):} Units of altitude entered above.} - \item{{\tt Use map of Earth? (empty for False):} Enter any value to include a Basemap plot of the earth, enter a carriage return to exclude the map.} - \item{The latitude limits needed depend on the plot type} - \begin{itemize} - \item{{\bf nspolar} {\tt Polar latitude limit (degrees):} Specify the polar latitude limit (positive, same for both hemispheres).} - \item{{\bf nspolar} {\tt Equatorial latitude limit (degrees):} Specify the equatorial latitude limit (positive, same for both hemispheres).} - \item{{\bf snapshot} {\tt Polar latitude limit (degrees):} Specify the polar latitude limit (positive, same for both hemispheres).} - \item{{\bf polar/rectangular} {\tt Northern latitude limit (degrees):} Specify the northernmost latitude (may be negative).} - \item{{\bf polar/rectangular} {\tt Southern latitude limit (degrees):} Specify the southernmost latitude (must be smaller/more negative than the northernmost limit)} - \end{itemize} - - \item{{\tt Load another z axis key? (empty for False):} Enter any value to include another movie or, enter a carriage return finish.} - \end{itemize} -\end{itemize} - -With this information, movies with appropriate z-variable ranges will be plot as .png files and combined into a movie using FFmpeg. The image and movie files will be named using the plot type, z parameter, and altitude to distinguish them. - - - - - - - diff --git a/srcDoc/quickstart.tex b/srcDoc/quickstart.tex deleted file mode 100644 index 6adf32c7..00000000 --- a/srcDoc/quickstart.tex +++ /dev/null @@ -1,247 +0,0 @@ -\section{Extracting the code from a tar file} - -Create a new and empty directory, and open the tar file you received, -e.g.: -\begin{verbatim} -mkdir Gitm -cd Gitm -mv ../gitm.tgz . -tar -xvzf gitm.tgz -\end{verbatim} - -\section{Checking out the code with CVS} -\label{cvs.sec} - -If CVS (Concurrent Versions System) is available on your computer and -you have an account on the CVS server machine herot.engin.umich.edu, -you can use CVS to install the current or a particular version of the -code. First of all have the following environment variables: -\begin{verbatim} -setenv CVSROOT UserName@herot.engin.umich.edu:/CVS/FRAMEWORK -setenv CVS_RSH ssh -\end{verbatim} -where UserName is your user name on herot. Here it is assumed that you -use csh or tcsh. Also put these settings into your .cshrc file so it -is automatically executed at login. Alternatively, use -\begin{verbatim} -CVSROOT=UserName@herot.engin.umich.edu:/CVS/FRAMEWORK -export CVSROOT -CVS_RSH=ssh -export CVS_RSH -\end{verbatim} -under sh, ksh and bash shells, and also put these commands into your -.bashrc or .profile file so it is automatically executed at login. - -Once the CVS environment variables are set, you can download the -current (HEAD) version of the GITM distribution with -\begin{verbatim} -cvs checkout GITM2 -\end{verbatim} - -If you want a particular version, use -\begin{verbatim} -cvs checkout -r v2_0 GITM2 -\end{verbatim} -where v2\_0 is the it tag associated with the version. To download bug -fixes or new features, the -\begin{verbatim} -cvs update -\end{verbatim} -command can be used. See {\tt man cvs} for more information. - -A lot of times, you don't really want the {\tt GITM2} directory to -stay that name, since you might download a couple different version -(maybe one for development and one for runs). Therefore, typically -you will: -\begin{verbatim} -mv GITM2 GITM2.Development -\end{verbatim} - -\section{Configuring and Making GITM} - -In order to compile GITM, you have to configure it first. The -configure script is inherited from the Space Weather Modeling -Framework. There are two primary reasons you need to do the -configure: (1) put the right {\tt Makefile} in the right place, -specifying the compiler and the version of MPI that you will use to -link the code; (2) put the right MPI header in the right place. It -also does some things like hard-codes the path of the source code into -the {\tt Makefile}. Currently the configure script is not capable of detecting the system and compilers available. Some examples for commonly used set-ups are shown below. Make sure that your .cshrc or .bashrc file is set up to detect the appropriate compilers before attempting to install GITM. - -Installing on Nyx: -\begin{verbatim} -./Config.pl -install -compiler=ifortmpif90 -earth -\end{verbatim} - -Installing with an Intel compiler and OpenMPI (such as Pleiades): -\begin{verbatim} -./Config.pl -install -compiler=ifort -earth -\end{verbatim} - -Installing a computer with gfortran and OpenMPI: -\begin{verbatim} -./Config.pl -install -compiler=gfortran -earth -\end{verbatim} - -Installing on a computer with gfortran and not using MPI: -\begin{verbatim} -./Config.pl -install -compiler=gfortran -earth -nompi -\end{verbatim} - -Sometimes people have a hard time with the ModUtilities.F90 file. If -you have errors with this file, try (for example): -\begin{verbatim} -./Config.pl -uninstall -./Config.pl -install -compiler=gfortran -earth -noflush -\end{verbatim} - -Don't forget, after configuring the Makefiles, you must still compile the code! -\begin{verbatim} -make -make test_earth -make install -\end{verbatim} - -\section{Running the Code} - -GITM requires a bunch of files to be in the right place in order to -run. Therefore, it is best to use the makefile to create a run -directory: -\begin{verbatim} -make rundir -mv run myrun -\end{verbatim} -where {\tt myrun} can be whatever you want. I will use {\tt -myrun} as an example. You can actually put this directory where ever -you want. On many systems (such as nyx), there is a {\tt nobackup} scratch disk that -you are supposed to use for runs, instead of your home directory. If you need to ensure that your home directory doesn't use too much space, moving the run directory onto a disk with more free space can solve the problem: - -\begin{verbatim} -make rundir -mv run /nobackup/myaccount/gitm/myrun -ln -s /nobackup/myaccount/gitm/myrun . -\end{verbatim} - -This creates a shortcut to the {\tt myrun} directory location on {\tt nobackup} in your GITM working directory. It allows you to treat the run directory as if it were a local directory, but it isn't! It also means that you don't have to compile and install GITM on the scratch disk, where program storage may not be allowed. - -Once you have created the run directory, you can run the default simulation, by: - -\begin{verbatim} -cd myrun -mpirun -np 4 GITM.exe -\end{verbatim} - -Or, if your system uses Mpiexec: - -\begin{verbatim} -cd myrun -mpiexec ./GITM.exe -\end{verbatim} - -This, hopefully should run GITM for Earth for 5 minutes. If it -doesn't work, then you might have mpi set up incorrectly. The default -is to allow you to run 4 blocks per processor, and the default {\tt -UAM.in} file is set up for 4 blocks, so you could try just running -GITM without mpi, just to see if it works at all: -\begin{verbatim} -./GITM.exe -\end{verbatim} -If that doesn't work, then it probably didn't compile correctly. -Hopefully, it just worked! - -\section{Post Processing} -\label{post_process.sec} - -GITM, by default, produces one file per block per output. If you are outputting often and you are running with many blocks, you can produce a huge number of files. To post process all of these files, simply: - -\begin{verbatim} -cd UA -./pGITM -\end{verbatim} - -This merges all of the files for one time period, for one file type into the same file. You can actually running this while the code is running, since GITM doesn't use old files, unless you are using the APPENDFILE option. As implied by the option's name, APPENDFILE opens an existing file and appends the most recent data to it. This feature is typically used only when running a satellite track though GITM. More information on the APPENDFILE option is located in Chapter~\ref{input.ch} Section~\ref{def_out.sec}. - -If you are NOT using satellites and NOT using APPENDFILE, then you are free and clear to use pGITM as often as you want during a run. To avoid deleting a file that GITM is currently writing to, it is recommended that pGITM be run as part of a script in which there is a five minute pause between executions. - -Another useful script, when running GITM on another system, is given in the block below. It occasionally executes an rsync between the computer that you run GITM on and your home computer. This allows you to bring over and evaluate the output files as they become available. To do this, execute pGITM at a set cadence (60 seconds in the example) while GITM is running and then rsync the remote and home directories (excluding all unprocessed files). Finally, remove the processed and rsynced files to prevent the remote directory from filling up. Be sure to replace yourname@home.computer with your user and computer names! This is a very simple, but very useful script. - -\begin{verbatim} -#!/bin/csh -rm -f stop -set LOC=$1 - -if (-f remoteloc) set LOC=`cat remoteloc` - -while (!(-f stop)) - rsync -vrae ssh log.* UAM.* imf* yourname@home.computer:$LOC - cd UA ; ./pGITM ; rsync --exclude '*.[bsh][0123ae][0123456789at]*' -vrae ssh d -ata yourname@home.computer:$LOC ; cd .. - sleep 60 -end -\end{verbatim} - -\section{The Code Won't Compile!!} -I'm sorry. I tried to make this work on many different platforms, but -sometimes machines are very specific, and it just doesn't work out of -the box. Here are some ideas on how to quickly get this thing -compiling. - -\subsubsection{Can't find the right Makefile.whatever} - -If make does not work, then there is probably a problem with not -finding the FORTRAN 90 compiler. The platform and machine specific -Makefiles are in srcMake. If you type: -\begin{verbatim} -uname -ls srcMake -\end{verbatim} - -If you don't see a file named something like Makefile.uname (where -uname is the output of the uname command), then you will have to build -a proper general Makefile. - -You will need a little a little information about your computer, like -what the mpif90 compiler is called and where it is located. Take a -look at srcMake/Makefile.Linux, and try to figure out what all of the -flags are for your system. Then create a srcMake/Makefile.uname with -the correct information in it. - -\subsubsection{The compiler doesn't recognize flag -x} - -You have an operating system that is recognized, but probably a -different compiler. In the srcMake/Makefile.uname file (where uname is -the output of the uname command), there is a line: - -OSFLAGS = -w -dusty - -You need to change this line to something more appropriate for your -compiler. Try deleting the flags and compile. If that doesn't work, -you will have to check the man pages of your compiler. - -\subsubsection{src/ModHwm.90 doesn't compile} - -Certain versions of gfortran (4.6 and later) may give the following error: - -\begin{verbatim} -src/ModHwm.f90:168.22: - - call HWMupdate(input,last,gfs,gfl,gfm,gvbar,gwbar,gbz,gbm,gzwght,glev,u - 1 -Error: Dummy argument 'ebz' of procedure 'hwmupdate' at (1) has an attribute - that requires an explicit interface for this procedure - -src/ModHwm.f90:168.22: - - call HWMupdate(input,last,gfs,gfl,gfm,gvbar,gwbar,gbz,gbm,gzwght,glev,u - 1 -Error: Dummy argument 'ebz' of procedure 'hwmupdate' at (1) has an attribute - that requires an explicit interface for this procedure -\end{verbatim} - -This is caused by the inputs in HWM. The latest incarnations of gfortran don't allow optional inputs that are not declared. More information about this can be found at: - -\begin{verbatim} -http://cosmocoffee.info/viewtopic.php?p=5136 -\end{verbatim} - -A solution to this problem is currently being sought. diff --git a/srcDoc/set_inputs.tex b/srcDoc/set_inputs.tex deleted file mode 100644 index dc5870ed..00000000 --- a/srcDoc/set_inputs.tex +++ /dev/null @@ -1,878 +0,0 @@ -\section{Principle Input} -\label{uam.sec} - -{\tt UAM.in} contains the majority of the variables that can be changed in a GITM run. Very few of these input options are required as input, all other options will default to values specified by the ModInputs.f90 subroutine, which can be found in the {\tt src} directory. Example {\tt UAM.in} files for various types of runs are made available in the {\tt srcData} directory. - -This input file can be altered at will without the need to recompile the code either ``by hand" or using a script such as {\tt makerun.pl}. This script, which is located on {\tt harot.engin.umich.edu:/bigdisk1/bin}, takes command line input to create a UAM.in file and any desired auxiliary files, discussed in more detail in section~\ref{aux.sec}, using locally stored data. - -The following sections present the GITM input options grouped by type. This is not the order you will find them in a typical {\tt UAM.in} file or the order you will find the input processed in {\tt ModInputs.f90}. This reinforces the flexibility of the input file, which doesn't care what order the input options are specified with one exception. The starting and ending times (discussed in section~\ref{required.sec}) \textit{must} be defined before any solar or geomagnetic indices (discussed in section~\ref{indices.sec}). It is probably a good practice to begin any {\tt UAM.in} file either with the output options (discussed in section~\ref{def_out.sec}) or the starting and ending times. - -%% - -\subsection{Required Inputs} -\label{required.sec} - -The only inputs that must be specified are the starting and ending times. These times are specified using universal time blocks that specify the date (A.D.) and time of day. Remember, these two blocks must be specified before any of the solar or geomagnetic index blocks, outlined in section~\ref{indices.sec}. - -\subsubsection{TIMESTART} -\label{starttime.sec} - -This input block sets the starting time of the simulation. Although the input time can be defined down to the second, construction scripts will ignore temporal units smaller than a day since a lead time of a day is typically desired for any model run. Shorter runs should only used to test the model compilation. - -GITM can be set to restart after pausing. This has no effect on TIMESTART, these values should always contain the real starting time, not the restart time. - -\begin{verbatim} -#TIMESTART -(integer) year -(integer) month -(integer) day -(integer) hour -(integer) minute -(integer) second -\end{verbatim} - -\subsubsection{TIMEEND} -\label{endtime.sec} - -This input block sets the ending time of the simulation. As mentioned above, GITM runs typically last a minimum of two days (with one day as start-up to allow the processes to settle into equilibrium) and so the hour, minute, and second options are commonly ignored. - -\begin{verbatim} -#TIMEEND -(integer) year -(integer) month -(integer) day -(integer) hour -(integer) minute -(integer) second -\end{verbatim} - -\subsubsection{END} -\label{end.sec} - The inclusion of this keyword will cause GITM to stop reading the {\tt UAM.in} file. This can allow one to save typical input options not used in one particular run for another run by moving them after this key. - - \begin{verbatim} - #END - \end{verbatim} - -%% - -\subsection{Temporal Boundaries} -\label{time.sec} - -The input options described here are optional and used to set the temporal boundaries in GITM, including the processing times. - -\subsubsection{PAUSETIME} -\label{pausetime.sec} - -This input option sets a time for the code to pause. There is no good reason to use this option. - -\begin{verbatim} -#PAUSETIME -(integer) year -(integer) month -(integer) day -(integer) hour -(integer) minute -(integer) second -\end{verbatim} - -\subsubsection{CPUTIMEMAX} -\label{cputimemax.sec} - -This sets the maximum CPU time that the code should run before it starts to write a restart file and end the simulation. It is very useful on systems that have a queueing system and has limited time runs. Typically, set it for a couple of minutes short of the maximum wall clock, since it needs some time to write the restart files. - -\begin{verbatim} -#CPUTIMEMAX -(real) CPUTimeMax -\end{verbatim} - -\subsubsection{CFL} -\label{cfl.sec} - -The CFL option defines how large a time step GITM will take. This is set as a fraction of the maximum time step, so 1.0 is the maximum value, while 0.75 is a typical value. If instabilities form during a model run, lowering this option is a good first step to take. - -\begin{verbatim} -#CFL -(real) cfl -\end{verbatim} - -\subsection{Defining Outputs} -\label{def_out.sec} - -The input option blocks described here are used to specify the level and type of verboseness. - -\subsubsection{LOGFILE} -\label{logfile.sec} - -Log files are very important and the LOGFILE input option allows the user to control how much information the GITM logfile will contain. This logfile is output into the {\tt UA/data/} directory in a file following a naming convention like {\tt log*.dat}. Although you can output the log file at whatever frequency you would like, setting the time-step to some very small value will allow GITM to produce a log output every iteration, which is a good thing. DtLogFile specifies this time-step in seconds. - -\begin{verbatim} -#LOGFILE -(real) DtLogFile -\end{verbatim} - -\subsubsection{DEBUG} -\label{debug.sec} - -This will set the level of GITM's verboseness. Set the iDebugLevel to 0 for minimal output and to 10 to retrieve \textit{everything}. You can also limit output to a specific processor using iDebugProc. The processors are named PE x, where PE indicates that you are tagging a processor and x is the zero offset integer indicating the processor number. So ``PE 0" would indicate that output from the first processor is desired. - -If you set the iDebugLevel to 0 (the default), you can set the debug report time step using DtReport. This time step is given in seconds. The final keyword in this input option, UseBarriers, forces the different nodes running the GITM code to sync up with each other frequently when employed. - -\begin{verbatim} -#DEBUG -(integer) iDebugLevel -(integer) iDebugProc -(real) DtReport -(logical) UseBarriers -\end{verbatim} - -\subsubsection{SATELLITES} -\label{satellites.sec} - -To improve model-data studies, GITM can output model results along the satellite paths. Any number of satellites may be flown through a GITM simulation. Output from the satellite paths is provided at the specified universal time, geographic latitude and longitude. Instead of confining the model output to the satellite altitude, simulated output is provided over the entire GITM altitude range. If RCMR is being run, the validity of the satellite index specified in that input block will be tested here. - -\begin{verbatim} -#SATELLITES -(integer) nSats -(string) SatFile(n) -(real) DtPlot(n) -\end{verbatim} -\vspace{-.1in} -\hspace{.6in} $\vdots$ -\vspace{.1in} - -To fly several satellites through GITM, the user must set nSats, SatFile(n), and DtPlot(n) for each satellite. nSats specifies the number of satellites, SatFile(n) gives the name of the satellite flight path file (discussed in more detail in section~\ref{sat_aux.sec}), and DtPlot(n) specifies the time-step for the GITM satellite output in seconds. The following verbatim block shows the arrangement for two satellites. - -\begin{verbatim} -#SATELLITES -2 nSats -grace.sat SatFile1 -1 DtPlot1 -champ.sat SatFile2 -1 DtPlot2 -\end{verbatim} - -\subsubsection{APPENDFILES} -\label{appendfiles.sec} - -GITM defaults to creating many output files for satellite runs, but this option tells GITM to create just one single file per satellite. This makes GITM output significantly less files. In the future, this option may be available for other types of output as well. - -\begin{verbatim} -#APPENDFILES -(logical) DoAppendFiles -\end{verbatim} - -\subsubsection{SAVEPLOT} -\label{saveplot.sec} - -This input option specifies the types of files GITM will output. The most common type is 3DALL, which outputs all primary state variables. Types (specified in OutputType) include : 3DALL, 3DMAG, 3DNEU, 3DION, 3DTHM, 3DCHM, 3DUSR, 3DGLO, 2DGEL, 2DMEL, 2DUSR, 2DTEC, 1DALL, 1DGLO, 1DTHM, 1DNEW, 1DCHM, 1DCMS, and 1DUSR. These file types specify the number of dimensions (3D, 2D, 1D) in which GITM may be run and the different primary state variables that are included in the output (NEU stands for neutrals, ION stands for ionosphere, MAG stands for magnetic field, THM stands for thermosphere, CHM stands for chemistry, USR stands for BLAH, GLO stands for day glow, TEC stands for total electron content, GEL stands for global electric BLAH, and MEL stands for BLAH). Any number of output files greater than zero may be produced, but nOutputTypes must be used to specify the number of types to be created and an OutputType and DtPlot must be provided for each output just as was done for multiple satellites. DtRestart and DtPlot specify the time-step in seconds for producing restart and output files, respectively. If no output files are specified, GITM will crash when attempting to finalize all procedures. - -\begin{verbatim} -#SAVEPLOT -(real) DtRestart -(integer) nOutputTypes -(string) OutputType -(real) DtPlot -\end{verbatim} -\vspace{-.1in} -\hspace{.6in} $\vdots$ -\vspace{.1in} - -\subsubsection{CCMCFILENAME} -\label{ccmcfilename.sec} - -The Community Coordinated Modeling Center (CCMC), located at {\tt ccmc.gsfc.nasa.gov}, provides access to space research models to the scientific community. GITM provides the option to have the GITM output files use the CCMC naming convention: TYPE\_GITM\_YYYY-MM-DDThh-mm-ss.bin, where TYPE is one of the GITM output types such as 3DALL described in the previous subsection. - -\begin{verbatim} -#CCMCFILENAME -(logical) Use CCMC naming convention -\end{verbatim} - -\subsubsection{PLOTTIMECHANGE} -\label{plottimechange.sec} - -This option allows you to change the output cadence of the files for a limited time. If you have a short event, such as a solar flare or an eclipse, this options lets you output much more often during the event than during the quiet periods preceding and succeeding the event. - -\begin{verbatim} -#PLOTTIMECHANGE -(yyyy mm dd hh mm ss ms) PlotTimeChangeStart -(yyyy mm dd hh mm ss ms) PlotTimeChangeEnd -\end{verbatim} - -%% - - -\subsection{Restart Input} - -This section deals with options typically only specified in a restart header. These options can be used in the principle input file but have very little use if a run does not need to be restarted from a specified point in a previous run. Apart from setting the flag in the {\tt UAM.in} file, several steps must be taken. First, you need to put the restart files that GITM writes into the correct location. These files are located in subdirectories (named {\tt restartIN} and {\tt restartOUT}) within the {\tt run/UA} directory. To preserve the past GITM restart information and enable a new start from the end of the previous run, prepare these directories as directed below. This code snippit can also be added to a PBS job file, but should only be performed after GITM has finished executing and if the {\tt GITM.DONE} file exists. - -\begin{verbatim} -cd UA -mv restartOUT restartOUT.runname.XX -mkdir restartOUT -./pGITM -rm -f restartIN; ln -s restartOUT.runname.XX -cd .. -\end{verbatim} - -\subsubsection{RESTART} - -Setting this input option to T (true) allows the model to restart from a previous run. - -\begin{verbatim} -#RESTART -(logical) DoRestart -\end{verbatim} - -\subsubsection{ISTEP} -\label{istep.sec} - -This input should not be specified by the user, but is used by the computer to restart after a run has been interrupted. It gives the iteration number that the model run stopped at. - -\begin{verbatim} -#ISTEP -(integer) iStep -\end{verbatim} - -\subsubsection{TSIMULATION} - -This options sets the offset from the starting time (specified using TIMESTART) to the current simulation time in seconds. Like ISTEP, this option should really only be used by the computer to restart after a run has been interrupted. - -\begin{verbatim} -#TSIMULATION -(real) tsimulation -\end{verbatim} - -%% - -\subsection{Numerical Options} -\label{numerical.sec} - -The optional inputs in this section allow the user to modify how GITM handles computational scenarios. - -\subsubsection{LIMITER} -\label{limiter.sec} - -The flux limiter specifies the balance between the model's ability to run robustly and provide realistic gradients. A realistic atmosphere will occasionally experience sharp changes in characteristics such as electron density. When GITM attempts to model these variations, the high resolution of the temporal and spatial grids allows the numerical schemes that solve the equations of state to oscillate about the actual value. One solution to the problem is to err on the side of robustness and require more gradual changes. This can be done by setting TypeLimiter to minmod or setting TypeLimiter to beta and BetaLimiter to 1.0 (both of these options are the same and the default). The other solution is to allow sharp changes to occur, realizing that the model will likely overshoot and undershoot and that if an atmospheric characteristic shoots to an unrealistic value the model may crash. - -Although there are many different limiter types (see the wikipedia article for a decent introduction: {\tt \\http://en.wikipedia.org/wiki/Flux\_limiter}) GITM uses the Osher function~\citep{Chakravarthy:1983os}, given below in equation~\ref{os.eq}. - -\begin{equation} -\label{os.eq} -\phi_{os}(r) = max[0,min(r,\beta)], \;\;\;\; (1 \le \beta \le 2); \;\;\;\; \lim_{r\to\infty} \phi_{os}(r) = \beta -\end{equation} - -In this function, $\beta$ is specified by BetaLimiter, and so defaults to the minmod flux limiter function when $\beta = 1$~\citep{roe:1986aa} and to the monotonized central (MC) flux limiter function when $\beta = 2$~\citep{valLeer:1977aa}. - -\begin{verbatim} -#LIMITER -(string) TypeLimiter -(real) BetaLimiter -\end{verbatim} - -\subsection{Data Assimilation} -\label{assim.sec} - -This section contains the input options that allow GITM to perform data assimilation. - -\subsubsection{RCMR} -\label{rcmr.sec} - -RCMR stands for Retrospective Cost Model Reference, and is a Retrospective Cost Adaptive Control (RCAC) method of data assimilation. RCMR is useful when dealing with nonlinear systems~\citep{Ali:2012aa}. To use this system, Markov parameters need to be set. These parameters will vary based on the type and number of data sources being assimilated and the driver being estimated. Markov parameters for the assimilation of a single satellite providing neutral density to drive the F$_{10.7}$ are currently available. Other parameters are currently being developed. - -The use of RCMR changes how the possible driving parameters and satellite data are treated within GITM. Because of this, the RCMR block should be included before the SATELLITE, F107, and PHOTOELECTRON block in the UAM.in file. The initial guess of the parameter being driven should not be close to the final value, as a perturbed location allows the assimilation to better account for model error. Choosing a value within realistic physical boundaries but away from an intuitive guess as to the actual value is the best way to chose the initial guess. - -\begin{verbatim} -#RCMR -(string) Input data type (RHO/VTEC) -(string) Output variable to drive (F107/PHOTOELECTRON) -(real) Initial output estimate -(integer) Number of satellites to include in data assimilation -(integer) Index number of satellite to assimilate -\end{verbatim} - -\subsubsection{DART} -\label{dart.sec} - -DART stands for Data Assimilation Research Testbed, and is a community facility that provides software tools for data assimilation~\citep{Anderson:2009fn}. Within the space physics community, DART has been coupled with TIE-GCM and GITM. More information about using DART with GITM is available in the DART manual in the {\tt GITM2/srcDoc} directory. - -\begin{verbatim} -#DART -(integer) Method to use DART -\end{verbatim} - -\subsection{Solar and Geomagnetic Indices} -\label{indices.sec} - -This section contains the input options that specifies the level of solar and geomagnetic activity. Recall that these input options must be specified after the starting and ending times (refer to section~\ref{required.sec}) are defined. Also, note that several of these indices may be specified in different ways. If you use more than one method to define an index, the last definition will be used. It is better to just use one method in your {\tt UAM.in} file to avoid confusion. - -\subsubsection{F107} -\label{f107.sec} - -Sets the F$_{10.7}$ and 81 day average of F$_{10.7}$ (commonly denoted as F$_{10.7a}$ or $\overline{F_{10.7}}$). This is used to set the range of the initial altitude grid and drive the lower boundary conditions. It is also used as input into several of the models called by GITM. If RCMR is being used to drive the F$_{10.7}$, then the values provided here are used to initialize MSIS and should be as close to the real F$_{10.7}$ as possible. - -The F$_{10.7}$ is a measure of the solar 10.7 cm flux~\citep{Covington:1948aa} and is measured in solar flux units (1 sfu = 10$^{-22}$ W m$^{-2}$ Hz$^{-1}$ = 10,000 jansky). The F$_{10.7}$ is commonly used as a proxy for the solar EUV output. - -\begin{verbatim} -#F107 -(real) f107 -(real) f107a -\end{verbatim} - -\subsubsection{NGDC\_INDICES} -\label{ngdc_indices.sec} - -This input option allows GITM to use an appropriate F$_{10.7}$ for each day that the assimilation runs, instead of a fixed value. This is accomplished by providing an input file that contains the F$_{10.7}$ values for the entire GITM simulation period and the preceding 81 days. This allows GITM to compute the appropriate daily F$_{10.7a}$ as well. Typically, users simply make a file including all F$_{10.7}$ values from 1980 onward, so they never have to worry about missing any preceding days. - -\begin{verbatim} -#NGDC_INDICES -(string) filename -\end{verbatim} - -\subsubsection{SME\_INDICES} -\label{sme_indices.sec} - -This option is not well described in set\_inputs.f90. - -\begin{verbatim} -#SME_INDICES -(string) Mystery input number one -(string) Mystery input number two -\end{verbatim} - -\subsubsection{ACE\_DATA} -\label{ace_data.sec} - -This option is not well described in set\_inputs.f90. - -\begin{verbatim} -#ACE_INDICES -(string) Mystery input number one -(string) Mystery input number two -\end{verbatim} - -\subsubsection{SWPC\_DATA} -\label{swpc_data.sec} - -This option is not well described in set\_inputs.f90. - -\begin{verbatim} -#SWPC_INDICES -(string) Mystery input number one -(string) Mystery input number two -\end{verbatim} - -\subsubsection{NOAAHPI\_INDICES} -\label{noaahpi_indices.sec} - -\begin{verbatim} -#NOAAHPI_INDICES -(string) NOAA HPI filename -\end{verbatim} - -\subsubsection{KP} -\label{kp.sec} - -The Kp index is not used by GITM, but several models that GITM calls utilize it. The Kp index is a measure of mid-latitude geomagnetic disturbance and can be obtained from: - - {\tt ftp://ftp.ngdc.noaa.gov/STP/GEOMAGNETIC\_DATA/INDICES/KP\_AP/} - - \noindent while a description of the index can be found at: - - {\tt http://www-app3.gfz-potsdam.de/kp\_index/description.html} - -\begin{verbatim} -#KP -(real) kp -\end{verbatim} - -\subsubsection{HEMISPHERICPOWER} -\label{hemisphericpower.sec} - -This option sets the hemispheric power of the aurora. Typical values range from 1$-$1000, with 20 being a nominal, quiet time value. - -\begin{verbatim} -#HPI -(real) HemisphericPower -\end{verbatim} - -\subsubsection{SOLARWIND} -\label{solarwind.sec} - -This option is one way to set the driving conditions for the high-latitude electric field models. Because this option is static and will not change during the run, it is usually better to use the MHD\_INDICES option instead, as MHD\_INDICES provides a dynamic driving environment. - -\begin{verbatim} -#SOLARWIND -(real) bx -(real) by -(real) bz -(real) vx -\end{verbatim} - -\subsubsection{MHD\_INDICES} -\label{mhdindices.sec} - -Use this option to provide GITM with dynamic IMF and solar wind conditions. This option can either be omitted entirely; if it is desired a filename whose contents will be discussed in more detail in section~\ref{imf.sec} must be specified. This file should be located in the same directory as the {\tt UAM.in} file. - -\begin{verbatim} -#MHD_INDICES -(string) filename -\end{verbatim} - -\subsubsection{EUV\_DATA} -\label{euv.sec} - -This input option allows the user to specify the extreme ultraviolet (EUV) flux using solar spectra from any model or data source. A FISM file~\citep{fism:2007d, fism:2008f} is used as an example in section~\ref{solar_irradiance.sec}. - -\begin{verbatim} -#EUV_DATA -(logical) UseEUVData -(string) cEUVFile -\end{verbatim} - -%% - -\subsection{Physical Processes} -\label{physics.sec} - -The following options let the user specify how GITM treats different physical boundaries and processes. - -\subsubsection{INITIAL} -\label{initial.sec} - -This option specifies the initial conditions and the lower boundary conditions. For Earth, we typically just use MSIS and IRI for initial conditions. For other planets, the vertical temperature parameters can be set here. TempMin and TempMax specify the initial temperatures at the bottom and top of the thermosphere in Kelvin, respectively. TempHeight specifies the height (in kilometers from the surface of the planet) of the midpoint of the temperature gradient. TempWidth specifies the vertical width (in kilometers) of the temperature gradient. - -\begin{verbatim} -#INITIAL -(logical) UseMSIS -(logical) UseIRI -If UseMSIS is false (F) then: -(real) TempMin -(real) TempMax -(real) TempHeight -(real) TempWidth -\end{verbatim} - -\subsubsection{STATISTICALMODELSONLY} -\label{statisticalmodelsonly.sec} - -There can be benefits to running a simpler ionosphere and thermosphere models. GITM can be used as a shell to run MSIS and IRI without any coupling. This input option bypasses GITM and only outputs results from MSIS and IRI. This option allows the user who is familiar with GITM to get MSIS and IRI output without having to install or know how to run these models independently. The UseStatisticalModelsOnly flag can be set to {\tt T} or {\tt F} (true or false) and the DtStatisticalModels options lets you specify the time-step (in seconds) used in MSIS and IRI. - -\begin{verbatim} -#STATISTICALMODELSONLY -(logical) UseStatisticalModelsOnly -(real) DtStatisticalModels -\end{verbatim} - -\subsubsection{TIDES} -\label{tides} - -This option uses a series of logical flags to tell GITM how to use tides. The first flag (UseMSISFlat) tells GITM to use MSIS without tides. The second flag (UseMSISTides) is using MSIS with full up tides. One of these two flags should be true. The remaining flags should only be true if UseMSISTides is false, and then only one should be true. The third flag (UseGSWMTides) uses GSWM tides, while the forth flag (UseWACCMTides) sets GITM to use the WACCM tides. Essentially, only one tidal model should be used per GITM run. Information about GSWM can be found at: \\{\tt http://www.hao.ucar.edu/modeling/gswm/gswm.html} and information about WACCM can be found at: \\{\tt http://www.cesm.ucar.edu/working\_groups/WACCM/}. - -When running with the MSIS or WACCM tides, no additional input files are needed. However, when using GSWM additional files must be made accessible to GITM in the {\tt run/UA/DataIn} directory. These files are stored in the {\tt Tides} directory within GITM. You can check these files out using CVS (as described in Chapter~\ref{cvs.sec}) and then create links or copy them into your run directory by using: {\tt ln -s ~/GITM/Tides/*bin ~/GITM/run/UA/DataIn/.} - -\begin{verbatim} -#TIDES -(logical) UseMSISFlat -(logical) UseMSISTides -(logical) UseGSWMTides -(logical) UseWACCMTides -\end{verbatim} - -\subsubsection{DUSTDATA} -\label{dustdata.sec} - -\begin{verbatim} -#DUSTDATA -(logical) UseDustDistribution -(string) cDustFile -(string) cConrathFile -\end{verbatim} - -\subsubsection{DUST} -\label{dust.sec} - -\begin{verbatim} -#DUST -(real) Total $\tau$ -(real) Conrnu -\end{verbatim} - -\subsubsection{GSWMCOMP} -\label{gswmcomp.sec} - -If you decided to use GSWM tides by selecting UseGSWMTides in the TIDES option, you can specify which diurnal and semidiurnal tidal components to include. - -\begin{verbatim} -#GSWMCOMP -(logical) GSWMdiurnal(1) -(logical) GSWMdiurnal(2) -(logical) GSWMsemidiurnal(1) -(logical) GSWMsemidiurnal(2) -\end{verbatim} - -\subsubsection{USEPERTURBATION} -\label{useperturbation.sec} - -\begin{verbatim} -#USEPERTURBATION -(logical) UsePerturbation -\end{verbatim} - -\subsubsection{DAMPING} -\label{damping.sec} - -This option specifies whether or not to allow damping of the vertical wind oscillations that can occur in the lower atmosphere. - -\begin{verbatim} -#DAMPING -(logical) UseDamping -\end{verbatim} - -\subsubsection{GRAVITYWAVE} -\label{gravitywave.sec} -A switch to add heating to the atmosphere. This was primarily used to explore gravity waves on Titan and has little to no effect on the terrestrial atmosphere. This options defaults to false. - -\begin{verbatim} -#GRAVITYWAVE -(logical) UseGravityWave -\end{verbatim} - -\subsubsection{AURORAMODS} -\label{auroramods.sec} - -\begin{verbatim} -#AURORAMODS -(logical) Normalize Aurora to Hemispheric Power -(real) Auroral Height Factor -\end{verbatim} - -\subsubsection{NEWELLAURORA} -\label{newellaurora.sec} - -This input option provides several logical flags that allow GITM to use Pat Newell's aurora model, Ovation~\citep{Newell:2002ov}. - -\begin{verbatim} -#NEWELLAURORA -(logical) UseNewellAurora -(logical) UseNewellAveraged -(logical) UseNewellMono -(logical) UseNewellWave -(logical) UseNewellRemoveSpikes -(logical) UseNewellAverage -\end{verbatim} - -\subsubsection{OVATION} -\label{ovation.sec} - -This input option provides several logical flags that allow GITM to use the SME Ovation model. - -\begin{verbatim} -#OVATION -(logical) UseOvationSME -(logical) UseOvationSMEMono -(logical) UseOvationSMEWave -(logical) UseOvationSMEIon -\end{verbatim} - -\subsubsection{AMIEFILES} -\label{amiefiles.sec} - -This option allows the user to specify the electrodynamic state of the polar regions using the Assimilative Mapping of Ionospheric Electrodynamics (AMIE) model~\citep{ridley:2004aa}. Input files separately specify the conditions at the northern and southern polar caps, and should be in the MIE binary format. Contact Aaron Ridley for more information about using AMIE with GITM. - -\begin{verbatim} -#AMIEFILES -(string) cAMIEFileNorth -(string) cAMIEFileSouth -\end{verbatim} - -\subsubsection{THERMO} -\label{thermo.sec} - -This input option sets flags that allow the user to turn various thermospheric processes on and off. For a realistic run, all three heating flags (for solar, Joule, and auroral heating) should be set to true, along with both cooling flags (for nitrous-oxide, NO, and oxygen, O). UseConduction, UseUpdatedTurbulentCond, and UseTurbulentCond flag should also all be set to true. UseDiffusion, however, defaults to false and should not be used for a realistic run. - -The only keyword that is not a flag is EddyScaling. This allows the user to control the Eddy diffusion by applying a multiplicative to the model's Eddy diffusion value. - -\begin{verbatim} -#THERMO -(logical) UseSolarHeating -(logical) UseJouleHeating -(logical) UseAuroralHeating -(logical) UseNOCooling -(logical) UseOCooling -(logical) UseConduction -(logical) UseTurbulentCond -(logical) UseUpdatedTurbulentCond -(logical) UseDiffusions -(real) EddyScaling -\end{verbatim} - -\subsubsection{THERMALDIFFUSION} -\label{thermaldiffusion.sec} - -This keyword sets the thermal conductivity. KappaTemp0 should be set to the desired value of the thermal conductivity in MKS units. - -\begin{verbatim} -#THERMALDIFFUSION -(real) KappaTemp0 -\end{verbatim} - -\subsubsection{VERTICALSOURCES} -\label{verticalsources.sec} - -This input option provides flags and limits for the vertical thermospheric sources. The UseEddyInSolver turns the Eddy diffusion on and off, the UseNeutralFrictionInSolver turns the vertical neutral friction on and off, and the MaximumVerticalVelocity sets the limit for vertical neutral winds in meters per second. - -\begin{verbatim} -#VERTICALSOURCES -(logical) UseEddyInSolver -(logical) UseNeutralFrictionInSolver -(real) MaximumVerticalVelocity -\end{verbatim} - -\subsubsection{EDDYVELOCITY} -\label{eddyvelocity.sec} - -This input option further allows the user to specify how Eddy diffusion is treated by providing an flag to use the method presented by~\citet{Boqueho:2005aa}, which was developed for the Martian atmosphere. The UseEddyCorrection flag is another option that is useful for certain extraterrestrial atmospheres. - -\begin{verbatim} -#EDDYVELOCITY -(logical) UseBoquehoAndBlelly -(logical) UseEddyCorrection -\end{verbatim} - -\subsubsection{DIFFUSION} -\label{diffusion.sec} - -If you use Eddy diffusion, as indicated by the UseDiffusion flag, you must specify two pressure levels in units of UNITS using EddyDiffusionPressure[0,1]. Below the first pressure level, the Eddy diffusion will be constant. Between the first and the second pressure levels, the Eddy diffusion coefficient will drop-off linearly. Thus, the first pressure must be larger than the second! The Eddy diffusion coefficient may also be specified using EddyDiffusionCoef. - -\begin{verbatim} -#DIFFUSION -(logical) UseDiffusion -(real) EddyDiffusionCoef -(real) EddyDiffusionPressure0 -(real) EddyDiffusionPressure1 -\end{verbatim} - -\subsubsection{WAVEDRAG} -\label{wavedrag.sec} - -This input option allows stress heating to be applied in GITM, providing an additional source of drag in the thermosphere. - -\begin{verbatim} -#WAVEDRAG -(logical) UseStressHeating -\end{verbatim} - -\subsubsection{FORCING} -\label{forcing.sec} - -This input option provides flags for physical processes that drive the thermosphere. - -\begin{verbatim} -#FORCING -(logical) UsePressureGradient -(logical) UseIonDrag -(logical) UseNeutralFriction -(logical) UseViscosity -(logical) UseCoriolis -(logical) UseGravity -\end{verbatim} - -\subsubsection{IONFORCING} -\label{ionforcing.sec} - -This input option turns several ionospheric transport processes on and off. UseExB turns the {\bf E}$\times${\bf B} plasma drift on and off, UseIonGravity allows the user to determine whether or not to allow the ions to respond to gravity, UseNeutralDrag relegates the forcing from ion-neutral collisions on the ionosphere, and UseIonPressureGradient deals with the ion motions resulting from changes to the plasma pressure gradient. All of these processes should be on for a realistic simulation. - -\begin{verbatim} -#IONFORCING -(logical) UseExB -(logical) UseIonPressureGradient -(logical) UseIonGravity -(logical) UseNeutralDrag -\end{verbatim} - -\subsubsection{CHEMISTRY} - -Turn certain chemical processes on or off. All processes are included by default. - -\begin{verbatim} -#CHEMISTRY -(logical) UseIonChemistry -(logical) UseIonAdvection -(logical) UseNeutralChemistry -\end{verbatim} - -\subsubsection{PHOTOELECTRON} -\label{photoelectron.sec} - -The photoelectron heating efficiency describes the energy input to the electron gas per electron-ion pair formed by the photoionization of a neutral~\citep{Hanson:1968ue}. GITM defines the photoelectron heating efficiency as a scalar that multiplies the sum of the photoionization rate and the neutral density for each neutral species. The specified value should lie between 0.02 and 0.20, though the default value is zero. If RCMR is being used to drive the photoelectron heating efficiency, this block is ignored. - -\begin{verbatim} -#PHOTOELECTRON -(real) Photoelectron heating efficiency -\end{verbatim} - -\subsubsection{DYNAMO} -\label{dynamo.sec} - -This input option provides flags for the ionospheric dynamo. The UseDynamo flag turns on a model to calculate the ionospheric electric fields. DynamoHighLatBoundary sets the polar latitude limit (65$^\circ$ or 70$^\circ$ is a realistic limit), nItersMax sets the maximum number of iterations for the Dynamo convergence (typically set at 500), and the MaxResidual sets the maximum difference, in Volts, to allow between iterations before the value is said to have converged (typically set to 1 V). The Dynamo currently uses a static high-latitude boundary, though a dynamical one would be ideal. To get around this, input from AMIE, run using the SuperMag data network, can be used instead of the UseDynamo process. The use of AMIE input is discussed in section~\ref{amiefiles.sec}. - -\begin{verbatim} -#DYNAMO -(logical) UseDynamo -(real) DynamoHighLatBoundary -(integer) nItersMax -(real) MaxResidual -\end{verbatim} - -\subsubsection{ELECTRODYNAMICS} -\label{electrodynamics.sec} - -Sets the time-step (in seconds) for updating the high-latitude (and low-latitude) electrodynamic drivers, such as the potential and the aurora. - -\begin{verbatim} -#ELECTRODYNAMICS -(real) DtPotential -(real) DtAurora -\end{verbatim} - -\subsubsection{IONPRECIPITATION} -\label{ionprecipitation.sec} - -This is a highly specific input option for experienced users. Most users should set this option to false. This is only for people wishing to do very specific runs in high altitude regions. IonIonizationFilename and IonHeatingRateFilename allow the advanced user to specify the ionization and ion heating rates due to precipitation using auxiliary input files. - -\begin{verbatim} -#IONPRECIPITATION -(logical) UseIonPrecipitation -(string) IonIonizationFilename -(string) IonHeatingRateFilename -\end{verbatim} - -\subsubsection{LTERADIATION} -\label{lteradiation.sec} - -LTERadiation allows the user to specify the time-step for the local thermodynamic equilibrium radiation process in seconds. This option is typically only used by the Mars GITM. It may be set for other versions of GITM, but each planet treats this input option differently. Versions not compiled for Mars will either modify or ignore input from LTERadiation. - -\begin{verbatim} -#LTERadiation -(real) DtLTERadiation -\end{verbatim} - -\subsubsection{DIPOLE} -\label{dipole.sec} - -This input option allows the user to specify the parameters the geomagnetic field within the limits of a dipole configuration so that any configuration (centered, tilted, or off-center and tilted) may be used. x,y,zDipoleCenter specify the origin of the dipole field in ECI coordinates, MagneticPoleTilt gives the angle (in degrees) between the dipole axis and the terrestrial rotation axis, and MagneticPoleRotation gives the constant angular rate (in degrees) at which the geomagnetic dipole field rotates. - -\begin{verbatim} -#DIPOLE -(real) MagneticPoleRotation -(real) MagneticPoleTilt -(real) xDipoleCenter -(real) yDipoleCenter -(real) zDipoleCenter -\end{verbatim} - -\subsubsection{APEX} -\label{apex.sec} - -This input option indicates whether or not GITM should use the more realistic Apex geomagnetic field~\citep{richards:1995aa}. If this option is set to false, the dipole field specified in the previous subsection will be used. - -\begin{verbatim} -#APEX -(logical) UseApex -\end{verbatim} - -%% - -\subsection{Geographic Boundaries} -\label{geograph.sec} - -\subsubsection{TOPOGRAPHY} - -This input option, which is defaults to false, uses topography to provide a variable vertical grid in GITM. You can also specify the minimum altitude at which the vertical grid for the thermosphere and ionosphere become consistent (AltMinUniform and AltMinIono, respectively). As with all other inputs the altitudes should be given in kilometers from the surface of the planet. - -\begin{verbatim} -#TOPOGRAPHY -(logical) UseTopography -(real) AltMinUniform -(real) AltMinIono -\end{verbatim} - -\subsubsection{ALTITUDE} -\label{altitude.sec} - -The upper and lower altitude limits (in kilometers) may be specified here. These values default to 500 km and 95 km, respectively. Setting the altitude limits above or below these values may result in unstable model runs. - -UseStretchedAltitude may also be turned on and off here. This flag defaults to true, as it allows the altitudes with rapidly changing pressure levels to be treated in more detail than those where the atmosphere changes slowly with altitude. - -\begin{verbatim} -#ALTITUDE -(real) AltMin -(real) AltMax -(logical) UseStretchedAltitude -\end{verbatim} - -\subsubsection{GRID} -\label{input_grid.sec} - -This input option sets the grid resolution in GITM. Although this process is straightforward, it deserves some thought and discussion. This is provided in section~\ref{grid.sec}. For new GITM users, learning how to alter the grid is a good place to start moving beyond the test run shown in Chapter~\ref{intro.ch}. - -\begin{verbatim} -#GRID -(integer) nBlocksLon -(integer) nBlocksLat -(real) LatStart -(real) LatEnd -(real) LonStart -(real) LonEnd -\end{verbatim} - -\subsubsection{STRETCH} - -You can stretch the grid in GITM in the latitudinal direction. It takes some practice to get the stretching just the way that you might like. To do this, you need to specify the geographic latitude (in degrees) that the stretching will center at (ConcentrationLatitude), the fraction of stretch (StretchingPercentage) where 0 means that there will be no stretching and 1 means that the latitude will be stretched by 100\%, and a multiplicative factor (StretchingFactor) that helps scale the stretching. The StretchingFactor should range between 0 and 1, erring closer to 1 to provide more control. - -\begin{verbatim} -#STRETCH -(real) ConcentrationLatitude -(real) StretchingPercentage -(real) StretchingFactor -\end{verbatim} - -Here is an example for stretching near the equator: - -\begin{verbatim} -#STRETCH -0.0 ! Equator -0.7 ! Amount of stretching is great -0.8 ! more control -\end{verbatim} - -Here is another example for no stretching near the auroral oval: - -\begin{verbatim} -#STRETCH -65.0 ! Location of minimum grid spacing -0.0 ! There is no streching here -1.0 ! For control -\end{verbatim} - -\subsubsection{NEWSTRETCH} -\label{newstretch.sec} - -An alternative way to stretch the grid. - -\begin{verbatim} -#NEWSTRETCH -(real) Poleward edge of the stretch region (degrees) -(real) Stretching width (degrees) -(real) Stretching percentage (0.0-1.0) -\end{verbatim} - -Here is an example for stretching near the auroral zone: - -\begin{verbatim} -#NEWSTRETCH -65.0 ! Auroral oval -5.0 ! Width of the stretched region -0.6 ! Amount of stretch (0 = none, 1 = lots) -\end{verbatim} From bd52b625513259a08b5b745f8813dc7eeb5f1ea3 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 17 Jun 2025 10:14:07 -0400 Subject: [PATCH 077/120] doc: typos, clarification, style, formatting, etc... minor changes. --- .github/CONTRIBUTING.md | 24 +++++++++++++----------- mkdocs.yml | 2 ++ srcDoc/common_inputs.md | 20 ++++++++++---------- srcDoc/postprocessing.md | 12 ++++++++++++ 4 files changed, 37 insertions(+), 21 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 1ec0b67f..8aded321 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -10,15 +10,17 @@ experience for all involved. ## Outline -- [Opening an Issue](#opening-an-issue) - - [Bug Report](#bug-report) - - [Feature Requests](#feature-requests) -- [Pull Requests](#pull-requests) - - [Committing Changes](#committing-changes) - - [Commit Styling](#commit-styling) -- [Code Formatting](#code-formatting) - - [Automatic/Validating Code Formatting](#automaticvalidating-code-formatting) - - [Style Guidelines \& `.fprettify.rc`](#style-guidelines--fprettifyrc) +- [Contributing Guidelines](#contributing-guidelines) + - [Outline](#outline) + - [Opening an Issue](#opening-an-issue) + - [Bug Report](#bug-report) + - [Feature Requests](#feature-requests) + - [Pull Requests](#pull-requests) + - [Committing Changes](#committing-changes) + - [Commit Styling](#commit-styling) + - [Code Formatting](#code-formatting) + - [Automatic/Validating Code Formatting](#automaticvalidating-code-formatting) + - [Style Guidelines \& `.fprettify.rc`](#style-guidelines--fprettifyrc) ## Opening an Issue @@ -30,7 +32,7 @@ are creating and then modify the contents of the template to describe your issue ### Bug Report -If you notice a problkem with GITM and are unsure of how to fix it yourself, please +If you notice a problem with GITM and are unsure of how to fix it yourself, please create a bug report detailing the problem. The template has several optional sections, so read through them all before adding information to the wrong section. @@ -78,7 +80,7 @@ are working on a feature and notice an unrelated bug or typo, create a new branc `develop`, fix it, and submit the pull request separately. There is no harm in submitting many small pull requests! - **Document your changes**. If you are introducing a new feature, please include -a description of it and its uses in both the documentation (`docs/` folder) and +a description of it and its uses in both the documentation (`srcDoc/` folder) and in comments within the code. - **Include new tests**. If you are adding a new feature, please add a sample `UAM.in` file with this option enabled in the `srcTests/auto_test/` folder. We do not want future updates diff --git a/mkdocs.yml b/mkdocs.yml index 372a054b..a96ded04 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -3,6 +3,8 @@ theme: name: readthedocs # name: mkdocs # name: material + # palette: + # scheme: slate plugins: - search # allow for search after being built - mermaid2: # cool diagrams diff --git a/srcDoc/common_inputs.md b/srcDoc/common_inputs.md index e9846036..ec03048d 100644 --- a/srcDoc/common_inputs.md +++ b/srcDoc/common_inputs.md @@ -173,11 +173,9 @@ The file type is automatically inferred. To provide an HPI file, use: ## SME Indices -*[SME]: SuperMag auroral Electrojet - -To use models such as FTA[^1] to drive the aurora, GUITM must be provided -Auroral Electrojet (AE) indices. Normally this is from SuperMag, but any source -may be used. +To use models such as FTA[^1] to drive the aurora, GITM must be provided Auroral +Electrojet (AE) indices. Normally this is from SuperMag (hence the name "SME": +SuperMag auroral Electrojet), but any source may be used. [^1]: Wu, C., Ridley, A. J., DeJong, A. D., & Paxton, L. J. (2021). FTA: A Feature Tracking Empirical Model Of Auroral Precipitation. Space Weather, 19, e2020SW002629. . @@ -206,12 +204,14 @@ The corresponding section in `UAM.in` is read as: The lines following the AE file are for the AL-onset file. This can be set to `none` if you do not have one. The next line tells GITM whether to derive HP -from AE or to use a NOAA HPI file (if one is required). Even if AE is not -required, it is recommended to provide one to derive HP as it is often more -representative of geomagnetic conditions than the NOAA HPI. +from AE or to use a NOAA HPI file (if one is required). + +Even if AE is not required, it is recommended to provide a SME file as input to +derive HP, as it is often more representative of geomagnetic conditions than the +NOAA HPI. -The formula to calculate hemispheric power from AE is taken from (Wu et al., -2021)[^wuetal] and is given as: +The formula to calculate hemispheric power (HP) from AE is taken from (Wu et +al., 2021)[^wuetal] and is given as: ```math \begin{align} diff --git a/srcDoc/postprocessing.md b/srcDoc/postprocessing.md index 61735bd6..e68dd94a 100644 --- a/srcDoc/postprocessing.md +++ b/srcDoc/postprocessing.md @@ -61,6 +61,18 @@ The help message for `post_process.py`: -tgz tar and zip raw GITM file instead of process ``` + +!!! note "Post-processing Speed" + + The default "engine" for reading the raw GITM + outputs is `scipy.io.FortranFile`. In some cases like high processor-count, + many output files, etc., files may not be post-processing as quickly as they + are created. + + In this case, it is recommended to use the Fortran engine which is included within GITM. The executable can be created by running `make POST` from GITM's root folder (`GITM/`). If this is done before `make rundir`, it will automatically be copied. Otherwise it must be moved to `run/` manually. + + The python post-processor will use `PostGITM.exe` if it is found in `run/`. This is not the default behavior as some systems limit which programs can be run from login nodes. + ### Arguments #### remotefile From b46d8a6714b4bf503822afcc350d362a971cc977 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 17 Jun 2025 16:27:22 -0400 Subject: [PATCH 078/120] doc: change theme! I like this one more --- mkdocs.yml | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index a96ded04..89c8edd0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,10 +1,41 @@ site_name: GITM theme: - name: readthedocs + # name: readthedocs # name: mkdocs - # name: material - # palette: - # scheme: slate + name: material + icon: + logo: material/earth + repo: material/github + + features: + - navigation.tabs + - navigation.tabs.sticky + - navigation.footer + - toc.integrate + - content.code.annotate + - content.code.copy + + palette: + # Palette toggle for automatic mode + - media: "(prefers-color-scheme)" + toggle: + icon: material/brightness-auto + name: Switch to light mode + + # Palette toggle for light mode + - media: "(prefers-color-scheme: light)" + scheme: default + toggle: + icon: material/brightness-7 + name: Switch to dark mode + + # Palette toggle for dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + toggle: + icon: material/brightness-4 + name: Switch to system preference + plugins: - search # allow for search after being built - mermaid2: # cool diagrams From f4e2edc6d4d72f8e76130b760caa7aa10d787070 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 17 Jun 2025 16:34:16 -0400 Subject: [PATCH 079/120] doc: update to new admonitions --- srcDoc/common_inputs.md | 2 +- srcDoc/devstuff/markdown_ref.md | 14 +++++++------- srcDoc/install.md | 13 ++++++------- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/srcDoc/common_inputs.md b/srcDoc/common_inputs.md index ec03048d..4379bd15 100644 --- a/srcDoc/common_inputs.md +++ b/srcDoc/common_inputs.md @@ -89,7 +89,7 @@ of formats used for hemispheric power files (due to a change in the NOAA output format in 2007). Both file formats can be used by GITM, and are shown in the examples below. -!!! attention +!!! tip GITM can read a NOAA HPI file, however the recommended way to provide hemispheric power is to have GITM derive HPI from the AE-index. diff --git a/srcDoc/devstuff/markdown_ref.md b/srcDoc/devstuff/markdown_ref.md index e6d63d31..78b8ae1a 100644 --- a/srcDoc/devstuff/markdown_ref.md +++ b/srcDoc/devstuff/markdown_ref.md @@ -151,24 +151,24 @@ Or, a real one: ## Admonitions -Admonitions are these fancy boxes: +Admonitions are these fancy boxes. See [here](https://squidfunk.github.io/mkdocs-material/reference/admonitions/#customization) for more information !!! tip - Identical to `important` and `hint`. All appear green. + Our theme (material) supports some non-standard admonitions !!! warning Here's a warning. new lines need two breaks. Here's how to put multiple lines in an admonition - > Warning, caution, and attention all appear orange. +!!! danger + This is for something very serious -!!! error - Synonymous to `danger`, both appear red - -!!! note "custom label" +!!! bug "custom label" notes can be given custom labels! + This uses the `bug` callout + !!! OnlyTheFirstWordFromTheLabel is shown Stick to using `!!!note "multi word label"` when possible. diff --git a/srcDoc/install.md b/srcDoc/install.md index 07be4886..687a6bb6 100644 --- a/srcDoc/install.md +++ b/srcDoc/install.md @@ -92,12 +92,12 @@ the GITM repository, and all dependencies like the [electrodynamics](https://github.com/GITMCode/Electrodynamics) libraries will be downloaded during configuration. -```shell +``` git clone git@github.com:GITMCode/GITM.git cd GITM ``` -!!! note +!!! tip Replace `git@github.com:GITMCode/GITM.git` with `https://github.com/GITMCode/GITM.git` if you don't have Github ssh keys set up. @@ -112,13 +112,12 @@ This step configures the planet, compiler, and some paths GITM needs to work properly. To configure GITM for Earth using the `gfortran` compiler, run: ```bash -./Config.pl -install -earth -compiler=gfortran +./Config.pl -install -earth -compiler=gfortran10 ``` -!!! caution - - Prior GITM versions required specifying `compiler=gfortran10` when using - `gfortran>=10.0.0`, however this is no longer necessary. +!!! warning + The above example assumes you are using gfortran + version 10+. If your gfortran version is <10, use `compiler=gfortran` The full list of available configuration options can be found by running `./Config.pl -h`. A useful flag while developing is `-debug` which will print a From 40356b2be414bcf299bcaff7310b05c825dae80a Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 17 Jun 2025 16:35:23 -0400 Subject: [PATCH 080/120] doc: create faq.md (mostly a template - not a lot here yet) --- mkdocs.yml | 1 + srcDoc/FAQ/faq.md | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 srcDoc/FAQ/faq.md diff --git a/mkdocs.yml b/mkdocs.yml index 89c8edd0..7be7e61d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -79,3 +79,4 @@ nav: - Markdown Reference: devstuff/markdown_ref.md - GITM Outline: devstuff/outline.md - Other Useful Links: devstuff/somelinks.md + - Getting Help: FAQ/faq.md diff --git a/srcDoc/FAQ/faq.md b/srcDoc/FAQ/faq.md new file mode 100644 index 00000000..c964874c --- /dev/null +++ b/srcDoc/FAQ/faq.md @@ -0,0 +1,20 @@ +# Common Problems + +## The code won't compile!! + +Sorry about that. It is hard to test on every system type. + +There are some steps you can try before submitting a bug report or contacting the developers. + +1. First, try to un-install everything: +``` +make distclean +./Config.pl -uninstall +``` +2. Then, check to see if any files are changed: +``` +git status +``` +3. If any of the Fortran or Make-files have changed, you may want to `git restore` the changes. +4. Try to re-configure and then re-compile + From ade47a73b7e15b57143b9487a0bbae02bd8ea003 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 17 Jun 2025 16:49:18 -0400 Subject: [PATCH 081/120] fix the one where the same citation was defined twice. --- srcDoc/common_inputs.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/srcDoc/common_inputs.md b/srcDoc/common_inputs.md index 4379bd15..43343005 100644 --- a/srcDoc/common_inputs.md +++ b/srcDoc/common_inputs.md @@ -211,7 +211,7 @@ derive HP, as it is often more representative of geomagnetic conditions than the NOAA HPI. The formula to calculate hemispheric power (HP) from AE is taken from (Wu et -al., 2021)[^wuetal] and is given as: +al., 2021)[^1] and is given as: ```math \begin{align} @@ -219,11 +219,6 @@ HemisphericPower = 0.102 * AE + 8.953 \end{align} ``` -[^wuetal]: Wu, C., Ridley, A. J., DeJong, A. D., & Paxton, L. J. (2021). -FTA: A Feature Tracking Empirical Model Of Auroral Precipitation. -Space Weather, 19, e2020SW002629. - - ## Solar Irradiance {#solar_irradiance.sec} To provide GITM with realistic solar irradiance, the solar EUV must be From 91eee84ed59d66ecc479f00f3f6b91bd965585d4 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Jun 2025 10:18:04 -0400 Subject: [PATCH 082/120] DOC: Change "dev team" page to be a link to github contributions --- mkdocs.yml | 2 +- srcDoc/devstuff/dev_team.md | 42 ------------------------------------- 2 files changed, 1 insertion(+), 43 deletions(-) delete mode 100644 srcDoc/devstuff/dev_team.md diff --git a/mkdocs.yml b/mkdocs.yml index 7be7e61d..d604d798 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -75,7 +75,7 @@ nav: - Electrodynamics: internals/electrodynamics.md - Development: - Site Information: devstuff/devhome.md - - GITM Developers: devstuff/dev_team.md + - GITM Developers: https://github.com/GITMCode/GITM/graphs/contributors - Markdown Reference: devstuff/markdown_ref.md - GITM Outline: devstuff/outline.md - Other Useful Links: devstuff/somelinks.md diff --git a/srcDoc/devstuff/dev_team.md b/srcDoc/devstuff/dev_team.md deleted file mode 100644 index 91ee651d..00000000 --- a/srcDoc/devstuff/dev_team.md +++ /dev/null @@ -1,42 +0,0 @@ -GITM Development Team -======================= - -## Active Developers: - -Aaron Ridley (Source terms, Electrodynamics) - UM - -Jared Bell (Solvers) - NASA GSFC - -Brandon Ponder (Venus) - UM - -Dave Pawlowski (Mars, FISM) - EMU - -Garima Malhotra (Lower boundary) - NOAA/CU - -Xing Ming (Wave Perturbations, Localized Electrodynamics) - JPL - -Doga Ozturk (Localized Electrodynamics) - UAF - -Chen Wu (Lower boundary, Eclipse) - UM - -Angeline Burrell (python code and random things) - NRL - -Meghan Burleigh (Coupling to SWMF) - NRL - -Leonardo Regoli (Coupling to SWMF, Mars) - -## Past Developers: - -Jie Zhu (Ti + Te calculation) - Microsoft - -Xianjing Liu (Helium at Earth) - -Alexey Morozov (Coupling with DART) - -Darren De Zeeuw (Field-line integrator) - UM - -Yue Deng (Many aspects of the original code) - UTA - -Gabor Toth (Rusanov solvers) - UM - -Robert Oehmke (MPI / message passing) - NCAR? \ No newline at end of file From 4387b19cca10592f192d8655c780d3d086645628 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Jun 2025 10:47:48 -0400 Subject: [PATCH 083/120] DOC: Add link to contributing page, update it --- .github/CONTRIBUTING.md | 23 ++++++++++++++++++----- mkdocs.yml | 1 + 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 8aded321..363ed3ae 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -8,20 +8,20 @@ and feedback from users. wish to contribute to GITM. Following these guidelines will ensure a positive experience for all involved. -## Outline - - [Contributing Guidelines](#contributing-guidelines) - - [Outline](#outline) - [Opening an Issue](#opening-an-issue) - [Bug Report](#bug-report) - [Feature Requests](#feature-requests) - [Pull Requests](#pull-requests) - [Committing Changes](#committing-changes) - [Commit Styling](#commit-styling) + - [Testing GITM](#testing-gitm) - [Code Formatting](#code-formatting) - [Automatic/Validating Code Formatting](#automaticvalidating-code-formatting) - [Style Guidelines \& `.fprettify.rc`](#style-guidelines--fprettifyrc) +--- + ## Opening an Issue If you notice a bug, have a feature you would like to see, or have a problem with GITM, @@ -39,8 +39,8 @@ so read through them all before adding information to the wrong section. - **Do not open an issue for problems installing GITM on a specific system.** Since there is no way to predict all possible systems which GITM will be used on, details on specific systems cannot be provided. Try the steps in the [README](../README.md) first, -then reach out to #TODO if you need mroe help. -- Please include enough information to allow a maintainer to reproduce your bug +then reach out to the development team if you need more help. +- Please include enough information to allow a maintainer to reproduce your bug, only seeing the information in the bug report. Forgetting to attach input files or only saying "the code did not run on system X", for example, will result in a delay. - Check if another issue is open (or closed) with the same problem. Duplicate issues @@ -136,6 +136,19 @@ FEAT: Hydrostatic density implementation. Implemented hydrostatic density. (feature) ``` +## Testing GITM + +GITM has a number of tests that are maintained and run automatically on every +release & pull-request. To run these yourself, run the script `run_all_tests.sh` +from within `srcTests/auto_test`. New tests can be added by simply creating +another UAM.in file, and will be run automatically if the file matches the +pattern `UAM.in.*.test`. + +It is best practice to create tests as bugs are fixed. For example, if running +GITM in a certain configuration causes a crash, it is recommended to create a +test with this configuration which will help ensure the bug does not sneak back +in with future development. + ## Code Formatting GITM now uses a custom implementation of the diff --git a/mkdocs.yml b/mkdocs.yml index d604d798..05b2cc65 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -75,6 +75,7 @@ nav: - Electrodynamics: internals/electrodynamics.md - Development: - Site Information: devstuff/devhome.md + - Contributing: https://github.com/GITMCode/GITM/blob/main/.github/CONTRIBUTING.md - GITM Developers: https://github.com/GITMCode/GITM/graphs/contributors - Markdown Reference: devstuff/markdown_ref.md - GITM Outline: devstuff/outline.md From 09e7704940749fe0f2279e431f451acbcf98bcc9 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Jun 2025 12:04:11 -0400 Subject: [PATCH 084/120] doc: add github repo info to site env vars --- mkdocs.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mkdocs.yml b/mkdocs.yml index 05b2cc65..b48d44f2 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,4 +1,10 @@ site_name: GITM +site_url: https://gitm.readthedocs.io +site_description: >- + Official documentation for the Global Ionosphere Thermosphere Model (GITM) +repo_name: GITMCode/GITM +repo_url: https://github.com/GITMCode/GITM + theme: # name: readthedocs # name: mkdocs From 6c3d70870d83b8dee87f027e00681ec00d22abac Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 18 Jun 2025 12:04:24 -0400 Subject: [PATCH 085/120] doc: reformat & edit grid page --- srcDoc/internals/grid.md | 72 ++++++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 28 deletions(-) diff --git a/srcDoc/internals/grid.md b/srcDoc/internals/grid.md index 464b1dbe..5d19900a 100644 --- a/srcDoc/internals/grid.md +++ b/srcDoc/internals/grid.md @@ -3,14 +3,52 @@ Setting the grid resolution in GITM is not very complicated, but it does involve some thought. There are a few variables that control this. +In essence, GITM's resolution is dictated by the number of CPU cores it is run +on. The number of cores must equal the product of the number of blocks in +longitude and latitude, which are both set in `UAM.in`. The resolution in the +longitudinal and latitudinal directions are, by default, 9 times the number of +blocks in each direction. + ## Important Variables Each CPU core that GITM is run on is considered a **block**. Within each block, -the grid is further divided into **cells**. The number of cells per block is set -before compiling, and the number of blocks to model is decided at runtime. The -number of blocks per core cannot change from 1. Thus, the resulting resolution -is dependent on how many cores GITM is run on, specified in the `UAM.in` file, -and the number of cells within each block, specified in `src/ModSize.f90`. +the grid is further divided into individual grid **cells**. The number of cells +per block is set before compiling, and the number of blocks to model is decided +at runtime. The number of blocks per core cannot change from 1. How many cores +GITM is run on is specified in the `UAM.in` file, and the number of cells within +each block is specified in `src/ModSize.f90`. + +### Blocks (UAM.in) + +When GITM is first creating its grid, the region of interest (usually the entire +globe) if first divided into blocks. Each block is a region that is modeled on a +single CPU core. This is the most common variable to adjust when trying to +change the resolution. + +These values are set in the `UAM.in` file and read at runtime. So the same +executable can be used for many different resolutions without needing to +recompile! + +For example, the initial settings have 2 blocks in latitude and 2 in +longitude: + + #GRID + 2 lons + 2 lats + -90.0 minimum latitude to model + 90.0 maximum latitude to model + 0.0 longitude start to model (set to 0.0 for whole Earth) + 0.0 longitude end to model (set to 0.0 for whole Earth) + +The number of CPU cores required is the product of the number of blocks in +longitude and latitude. Doubling the resolution in both latitude and longitude +requires four times as many cores since +$`(2*nLons) \times (2*nLats) = 4\times (nLons*nLats)`$. + +```math +nCPUs = (nBlocksLon) \times (nBlocksLat) +``` + ### Cells @@ -35,28 +73,6 @@ something other than 1. It will be removed in a future release. !!! note If you change any of these parameters, you will need to recompile the code. -### Blocks (UAM.in) - -Once the number of cells per block is defined, then the number of blocks in -latitude and longitude need to be defined. This is done in the `UAM.in` file at -runtime. For example, the initial settings have 2 blocks in latitude and 2 in -longitude: - - #GRID - 2 lons - 2 lats - -90.0 minimum latitude to model - 90.0 maximum latitude to model - 0.0 longitude start to model (set to 0.0 for whole Earth) - 0.0 longitude end to model (set to 0.0 for whole Earth) - -The number of blocks can be changed without needing to recompile. The same -binary can be used to verify things are working on four cores, and then do a -science run on 200 cores. - -The number of cores required is the product of the number of blocks in longitude -and latitude. Doubling the resolution in both latitude and longitude requires -four times as many cores since $`(2*nLons) \times (2*nLats) = 4\times (nLons*nLats)`$. ## Horizontal Resolution @@ -124,7 +140,7 @@ maximum and minimum longitude are not equal to each other. ## Altitudes As defined in `src/ModEarth.f90`, each altitude block contains $`\frac{1}{3}`$ -of a scale height, starting at 100 km and typically reaching up to ~5-700 km. +of a scale height, starting at 100 km and typically reaching up to ~500-700 km. Increasing the number of altitude blocks will increase the altitude range, but if this value is increased too much the model may become unstable and/or inaccurate. From 1d95cc5854c8ba1c140d01e1b0f3d78b7c8f417c Mon Sep 17 00:00:00 2001 From: Aaron Ridley Date: Thu, 10 Jul 2025 15:34:14 -0400 Subject: [PATCH 086/120] updated with more text --- srcDoc/index.md | 54 +++++++++++++++++++++++++++++++++++++++++++---- srcDoc/install.md | 45 +++++++++++++++++++++++---------------- 2 files changed, 77 insertions(+), 22 deletions(-) diff --git a/srcDoc/index.md b/srcDoc/index.md index 6bccda17..e905c7c1 100644 --- a/srcDoc/index.md +++ b/srcDoc/index.md @@ -1,11 +1,57 @@ # Introduction -Global Ionosphere Thermosphere Model +The Global Ionosphere Thermosphere Model (GITM) is a 3D model of the ionosphere and thermosphere that has been applied to Earth, Venus, Mars, Jupiter, and the moon Titan. The main repository for GITM can be found on [github](https://github.com/GITMCode/GITM). The first paper describing GITM is [here](https://www.sciencedirect.com/science/article/pii/S1364682606000071). -## Welcome +## Quick Start -Hi. Thanks for visiting this website. Here is some info on how to use GITM. +If you have some expertise in downloading, compiling, and running codes, this is a good place to start. -Please see the [quick start](install.md) page for more info on how to +Dependencies: fortran (assuming gfortran), mpi (mpich doesn't seem to work), make, perl (we are old school!), and python. + +Download, configure, and run ('gfortran10' is for any gfortran version 10 or higher): +```bash +git clone https://github.com/GITMCode/GITM.git +cd GITM +./Config.pl -install -compiler=gfortran10 -earth +make +make rundir +cd run +mpirun -np 4 ./GITM.exe +./post_process.py +``` + +Then to produce a plot: +```bash +cd UA/data +python3 ../../../srcPython/gitm_plot_one_alt.py -alt=250 -var=3 *bin +``` +This should produce two png files showing the density across the globe at about 250 km altitude. This is not the latest, greatest plotter, but it should hopefully work and produce something. + +## A Bit More Explaination + +GITM is a fortran code that uses the message passing interface (MPI) to run on multiple processors, hence the need for a fortran compiler and MPI. If the code compiles correctly, then the biggest issue is setting up the run. + +GITM can create a run directory for you, so you don't have to worry about the executable and input files and everything being in the right place - it does it for you with the 'make rundir' command. This will create a directory called 'run'. You can move this directory to where ever you want. Often the run directory is moved to a scratch disk and renamed. For example: +```bash +mv run /scratchdisk/mydirectory/run.gitm.event01 +ln -s /scratchdisk/mydirectory/run.gitm.event01 . +``` + +Then, within this directory, there is a file called 'UAM.in', which is what GITM reads to set all of its parameters. This is an extremely brief description of settings within the file - to understand more, please read the manual! Within this file, there are several things that need to be altered when running GITM: +- Start time, given as year, month, day, hour, minute, second. +- End time, given as year, month, day, hour, minute, second. +- The grid, given as start and end latitude, start and end longitude, and the number of blocks (processors) to use in latitude and longitude. [See this grid description for more.](internals/grid.md). +- Save plots, telling what type of plots to output (3DALL by default) and how often (300s = 5 minutes). Ignore the restarts unless you know what you are doing. +- MHD_Indices - this is the IMF file that tells the high-latitude electrodynamics the IMF and solar wind. There are instructions in the UAM.in file on producing a file. +- SME_Indices - this is the AE file that tells the auroral precipitation model how to work. There are instructions in the UAM.in file on producing a file. +- Dynamo - If you are running with anything better than 5 degrees by 5 degrees resolution, turn the dynamo on! + +Once these things are set, you should be able to run GITM for the event of your choosing. + +We provide a code in srcPython called gitm_makerun.py that will take the default UAM.in file, change the start/end times, download IMF and AE files, and flip switches that you may want. + +## The More Thorough Start + +Please see the [installation page](install.md) page for more info on how to download, configure, and install GITM. diff --git a/srcDoc/install.md b/srcDoc/install.md index 687a6bb6..d37dab1d 100644 --- a/srcDoc/install.md +++ b/srcDoc/install.md @@ -16,10 +16,14 @@ At a minimum, you need: - a Fortran compiler (gfortran, ifort, ifx, etc.) - MPI (~~mpich~~, openmpi, mvapich, etc.) - GNU Make (`make`) +- Python3 (most any version should work, but we have been testing with versions in the 3.10+ range) +- Perl (for configuring the code) *[MPI]: Message Passing Interface +On linux systems (including Windows Subsystem for Linux), gfortran is often used. This is the most robustly tested compiler for GITM. One problem with gfortran is that the gcc-10 and above version don't place well with MPI for some reason. A flag has to be specified to make them play nice, and therefore there are two different compiler options for gfortran (-compiler=gfortran for older versions and -compiler=-gfortran10 for version 10+). There is a very good chance that you have 10+. + There is no difference in the outputs between different compilers, however some compilers may produce slightly faster executables than others. For example, using ifort on [Pleiades](https://www.nas.nasa.gov/hecc/resources/pleiades.html) @@ -27,7 +31,7 @@ is faster than using gfortran (gcc) or aocc. As GITM can run on as many (or few) CPU cores as you wish, it is possible to run GITM on a laptop or workstation. This is recommended for development, as the -turnaround for test runs will be much faster. +turnaround for test runs will be much faster. Most developers of GITM have 8-core machines and can run the default test problem of 4 processors with no problems. Most modern computers are capable of this now. ### Linux Install Dependencies @@ -66,8 +70,12 @@ sudo port install gcc[??] open-mpi ### Recommended HPC Modules -Feel free to contribute to this list of recommended modules if you have -experience with GITM on other systems: +On some computer systems, there are multiple versions of compilers, MPI, and other things like python available. They deal with these things by making "modules". This means that in order to compile the code, modules need to be loaded. For example, on NASA's Pleiades computer, this line needs to be put into your .cshrc or .bashrc or whatever dot file you are using for your setup: +```bash +module load comp-intel mpi-hpe +``` + +The modules that need to be loaded on different systems will differ. Feel free to contribute to this list of recommended modules if you have experience with GITM on other systems: - Pleiades - `comp-intel` @@ -90,7 +98,7 @@ the GITM repository, and all dependencies like the [share](https://github.com/SWMFsoftware/share), [util](https://github.com/SWMFsoftware/util), and [electrodynamics](https://github.com/GITMCode/Electrodynamics) libraries will be -downloaded during configuration. +downloaded during configuration. The following command is assuming that you will be using GITM and not developing GITM. ``` git clone git@github.com:GITMCode/GITM.git @@ -98,9 +106,7 @@ cd GITM ``` !!! tip - Replace `git@github.com:GITMCode/GITM.git` with - `https://github.com/GITMCode/GITM.git` if you don't have Github ssh keys set - up. + Replace `git@github.com:GITMCode/GITM.git` with `https://github.com/GITMCode/GITM.git` if you don't have Github ssh keys set up. If you are going to be developing GITM, you may take the time to fork the repository (including all of the branches!), and then substitute your forked repository location in the git clone command. If you are NOT doing development, just use this command. All of the following steps assume you have not changed out of the `GITM/` directory. Most will error if run from another location, but this will not break @@ -117,7 +123,7 @@ work properly. To configure GITM for Earth using the `gfortran` compiler, run: !!! warning The above example assumes you are using gfortran - version 10+. If your gfortran version is <10, use `compiler=gfortran` + version 10+. If your gfortran version is <10 (you should upgrade your system!), use `compiler=gfortran` The full list of available configuration options can be found by running `./Config.pl -h`. A useful flag while developing is `-debug` which will print a @@ -133,7 +139,7 @@ make !!! note Compilation can often take a while. This can be done in parallel with - `make -j`, which will use all available cores. To limit the number of cores + `make -j`, which will use all available cores on your computer. To limit the number of cores to 8, for example, use `make -j8` If this runs without error, GITM is ready to be run! @@ -149,14 +155,17 @@ make rundir ``` Now there should be a new directory in the GITM folder called `run/`. This -folder can be moved, copied, renamed, etc. without issue. - -!!! Note - If a study requires multiple runs of GITM, it can be most time-effective to - copy or move the folder that was just created to somewhere a lot of data - can be stored. For example, one could now run - `cp -R run/ /path/to/scratch/storage/thisproject/run01`, and repeat for as - many runs are necessary. +folder can be moved, copied, renamed, etc. without issue. If a study requires multiple runs of GITM, it can be most time-effective to copy or move the folder that was just created to somewhere a lot of data can be stored. For example, one could now run: +```bash +mv run /path/to/scratch/storage/thisproject/run01 +ln -s /path/to/scratch/storage/thisproject/run01 . +``` +The 'ln' command will just create a link to the run directory in the GITM directory, so you don't lose it. If you want to make yet another run directory (you can make as many as you want!), you could then do: +```bash +make rundir +mv run /path/to/scratch/storage/thisproject/run02 +ln -s /path/to/scratch/storage/thisproject/run02 . +``` It is now time to do some runs! The folder we just created contains a `UAM.in` file which calls for 4 CPU cores and simulates 5 minutes in December of 2002. @@ -168,7 +177,7 @@ cd run/ mpirun -np 4 ./GITM.exe ``` -Wait a moment... And if no errors are reported then congratulations! You have +Twiddle your thumbs for a moment... And if no errors are reported then congratulations! You have now run GITM! The next steps include exploring how to [postprocess](postprocessing.md) the From 1f2323c4a2c432d9c528ab80fa3b189c411783a2 Mon Sep 17 00:00:00 2001 From: Aaron Ridley Date: Thu, 10 Jul 2025 21:58:24 -0400 Subject: [PATCH 087/120] updating docs --- srcDoc/common_inputs.md | 241 ++++++++++++++++++++++++++------------- srcDoc/postprocessing.md | 35 +++--- 2 files changed, 184 insertions(+), 92 deletions(-) diff --git a/srcDoc/common_inputs.md b/srcDoc/common_inputs.md index 43343005..3aa26e6f 100644 --- a/srcDoc/common_inputs.md +++ b/srcDoc/common_inputs.md @@ -3,11 +3,98 @@ This only touches on the most frequently changed input options. For a full reference of all available inputs, please see [All Inputs](set_inputs.md) +## Time + +The start time and end time of a GITM simulation can be set using the following commands (as an example): + +```bash +#TIMESTART +2002 year +12 month +21 day +00 hour +00 minute +00 second + +#TIMEEND +2002 year +12 month +21 day +00 hour +05 minute +00 second +``` + +Hopefully these are obvious what they are. + +## Setting the grid + +GITM can simulate the whole planet or a portion of the planet. Unless you know what you are doing, I would stick to modeling the whole planet. This can be done with the following command (as an example): + +```bash +#GRID +2 number of blocks in longitude +2 number of blocks in latitude +-90.0 minimum latitude to model +90.0 maximum latitude to model +0.0 longitude start to model (set to 0.0 for whole Earth) +0.0 longitude end to model (set to 0.0 for whole Earth) +``` +The first two numbers control the resolution. The higher these numbers, the finer the resolution, but the more processors you will need - you need one processor for each block that you asked for (2 x 2 = 4 blocks / processors). If you wanted to run at 5 degrees by 5 degrees, the following could be used: +```bash +#GRID +8 number of blocks in longitude +4 number of blocks in latitude +-90.0 minimum latitude to model +90.0 maximum latitude to model +0.0 longitude start to model (set to 0.0 for whole Earth) +0.0 longitude end to model (set to 0.0 for whole Earth) +``` +and 32 processors would be needed. + +There is a lot more to learn here, so we have written a whole section on this. [See this grid description for more.](internals/grid.md). + !!!note All of the auxiliary input (data) files can be kept in the same directory as the GITM executable and the `UAM.in` file. Otherwise, the path should be specified relative to the GITM executable. +## Saving output files + +GITM outputs a wide variety of output files. [There is a whole section that describes them.](outputs.md) + +Output files are controlled with the `#SAVEPLOTS` command. + +The first line says how often to output restart files, which we will set aside for a bit. It is ok to leave this as 2 hours (7200), unless you know what you are doing. + +The second line tells GITM how many types of output files you want. + +The following lines tell GITM what type of file output you want and how often you want them. The most common type of output is 3DALL, which includes all ion and neutral states (densities, temperatures, velocities). + +An example: +```bash +#SAVEPLOTS +7200.0 dt for writing restart files +1 how many output files do you want +3DALL second output style +900.0 dt for output (one every 15 min) +``` +This will output restart files every 2 hours (this can be ignored) and 3DALL files every 15 minutes. + +Another example: +```bash +#SAVEPLOTS +7200.0 dt for writing restart files +3 how many output files do you want +3DALL second output style +900.0 dt for output (one every 15 min) +2DGEL third output style +300.0 dt for output (one every 15 min) +3DTHM forth output style +900.0 dt for output (one every 15 min) +``` +2DGEL files output things like the electric potential and auroral precipitation on the geographic grid at the top of the model. 3DTHM files are thermodynamic variables such as heating and cooling rates. + ## IMF and Solar Wind {#imf.sec} This file controls the high-latitude electric field and aurora when @@ -59,39 +146,78 @@ Here is an example file: 2000 3 20 3 4 0 0 0.0 0.0 -2.0 -400.0 0.0 0.0 5.0 50000.0 This file is provided to GITM with: +```bash +#MHD_INDICES +imf_file_name.dat +``` - #MHD_INDICES - imf_file_name.dat -## Hemispheric Power {#hp.sec} +## SME Indices -The hemispheric power files describe the dynamic variation of the -auroral power going into each hemisphere. Models such as FRE[^FRE] use -the Hemispheric Power to determine which level of the model it should -use. The Hemispheric Power is converted to a Hemispheric Power Index -using the formula: +To use models such as FTA[^1] to drive the aurora, GITM must be provided Auroral +Electrojet (AE) indices. Normally this is from SuperMag (hence the name "SME": +SuperMag auroral Electrojet), but any source may be used. + +[^1]: Wu, C., Ridley, A. J., DeJong, A. D., & Paxton, L. J. (2021). FTA: A Feature Tracking Empirical Model Of Auroral Precipitation. Space Weather, 19, e2020SW002629. . + +These files are normally of the format: + + File created by python code using SuperMAGGetIndices + + ============================================================ + + 2002 12 21 00 00 00 616.74 -354.47 262.26 + 2002 12 21 00 01 00 623.75 -354.72 269.03 + 2002 12 21 00 02 00 617.18 -349.28 267.90 + 2002 12 21 00 03 00 633.56 -350.01 283.55 + 2002 12 21 00 04 00 664.55 -357.88 306.68 + +A python routine to download these files over a given date range can be found +in `srcPython/supermag_download_ae.py`. + +The corresponding section in `UAM.in` is read as: +```bash +#SME_INDICES +ae_file-name.dat ae file name +none onset file +T use AE for HP +F don't automatically incorporate hemispheric asymmetries +``` + +The lines following the AE file are for the AL-onset file. This can be set to +`none` if you do not have one. The next line tells GITM whether to derive HP +from AE or to use a NOAA HPI file (if one is required). Since production of hemispheric power was stopped by NOAA in 2013 (the world has moved on), it is best to use the HP derived from AE. + +Even if AE is not required, it is recommended to provide a SME file as input to +derive HP, as it is often more representative of geomagnetic conditions than the +NOAA HPI (maybe this is why they stopped producing it). The formula to calculate hemispheric power (HP) from AE is taken from (Wu et al., 2021)[^1] and is given as: ```math -\begin{equation} -HPI = 2.09 \log(HP)^{1.0475} -\end{equation} +\begin{align} +HemisphericPower = 0.102 * AE + 8.953 +\end{align} ``` -[^FRE]: Fuller-Rowell, T. J., and D. S. Evans (1987), Height-integrated Pedersen - and Hall conductivity patterns inferred from the TIROS-NOAA satellite data, - J. Geophys. Res., 92(A7), 7606–7618, - doi:[10.1029/JA092iA07p07606](https://doi.org/10.1029/JA092iA07p07606). +## Hemispheric Power {#hp.sec} -The National Oceanic and Atmospheric Administration (NOAA) provides +The hemispheric power files describe the dynamic variation of the +auroral power going into each hemisphere. Models such as FRE[^FRE] use +the Hemispheric Power to determine which level of the model it should +use. It is recommended to not use the NOAA provided HP files, but to use the AE derived HP, as described above. But, if you are a purist, the National Oceanic and Atmospheric Administration (NOAA) provides these hemispheric power files for public use online at . There are two types of formats used for hemispheric power files (due to a change in the NOAA output format in 2007). Both file formats can be used by GITM, and are shown in the examples below. +[^FRE]: Fuller-Rowell, T. J., and D. S. Evans (1987), Height-integrated Pedersen + and Hall conductivity patterns inferred from the TIROS-NOAA satellite data, + J. Geophys. Res., 92(A7), 7606–7618, + doi:[10.1029/JA092iA07p07606](https://doi.org/10.1029/JA092iA07p07606). + !!! tip GITM can read a NOAA HPI file, however the recommended way to provide - hemispheric power is to have GITM derive HPI from the AE-index. + hemispheric power is to have GITM derive HPI from the AE-index. Seriously. See [SME Indices](#sme-indices) for more information. @@ -168,63 +294,30 @@ Example file 2 for data in and after 2007: The file type is automatically inferred. To provide an HPI file, use: - #NOAAHPI_INDICES - hemi-power-file.txt - -## SME Indices - -To use models such as FTA[^1] to drive the aurora, GITM must be provided Auroral -Electrojet (AE) indices. Normally this is from SuperMag (hence the name "SME": -SuperMag auroral Electrojet), but any source may be used. - -[^1]: Wu, C., Ridley, A. J., DeJong, A. D., & Paxton, L. J. (2021). FTA: A Feature Tracking Empirical Model Of Auroral Precipitation. Space Weather, 19, e2020SW002629. . - -These files are normally of the format: - - File created by python code using SuperMAGGetIndices - - ============================================================ - - 2002 12 21 00 00 00 616.74 -354.47 262.26 - 2002 12 21 00 01 00 623.75 -354.72 269.03 - 2002 12 21 00 02 00 617.18 -349.28 267.90 - 2002 12 21 00 03 00 633.56 -350.01 283.55 - 2002 12 21 00 04 00 664.55 -357.88 306.68 - -A python routine to download these files over a given date range can be found -in `srcPython/supermag_download_ae.py`. - - -The corresponding section in `UAM.in` is read as: - - #SME_INDICES - ae_file-name.dat ae file name - none onset file - T use AE for HP - -The lines following the AE file are for the AL-onset file. This can be set to -`none` if you do not have one. The next line tells GITM whether to derive HP -from AE or to use a NOAA HPI file (if one is required). +```bash +#NOAAHPI_INDICES +hemi-power-file.txt +``` -Even if AE is not required, it is recommended to provide a SME file as input to -derive HP, as it is often more representative of geomagnetic conditions than the -NOAA HPI. -The formula to calculate hemispheric power (HP) from AE is taken from (Wu et -al., 2021)[^1] and is given as: +## Solar Irradiance {#solar_irradiance.sec} -```math -\begin{align} -HemisphericPower = 0.102 * AE + 8.953 -\end{align} +To provide GITM with realistic solar irradiance, the solar EUV must be +specified. There are two pathways for doing this. The easiest is to simply specify the F10.7. GITM then runs some EUV empirical models of the irradiance (such as EUVAC), and uses these results to drive GITM. The F10.7 is provided with GITM, so you can just point GITM to this file and be done: +```bash +#NGDC_INDICES +UA/DataIn/f107.txt ``` +It should be noted that MSIS also needs F10.7, so really this command should be included in every UAM.in file. -## Solar Irradiance {#solar_irradiance.sec} +In addition, GITM can use the Flare Irradiance Spectrum Model specification of the EUV flux. Daily values of FISM can be used unless you are doing a flare study. These daily values are included with GITM and can be found in UA/DataIn/FISM. As an example, a yearly file can be used with the command (for example): +```bash +#EUV_DATA +F Use FISM solar flux data +UA/DataIn/FISM/fismflux_daily_2002.dat Filename for specific year +``` -To provide GITM with realistic solar irradiance, the solar EUV must be -specified. This can be done through a file containing modeled or -observed solar irradiance data. An example from the FISM model is shown -below. +An example from the FISM model is shown below. #START 2009 3 20 0 0 0 0.00389548 0.00235693 @@ -253,15 +346,7 @@ below. . . -GITM knows to use the provided solar irradiance file through the EUV_DATA input -option specified in the `UAM.in` file: - - #EUV_DATA - T - UA/DataIn/FISM/fismflux_daily_[year].dat - -These files are included by default, however will not be read unless this option -is added to the `UAM.in` file. +If you want to create your own files, there is a code in srcPython to download and produce the FISM files. You can use this python code to download daily values or flare values (although the flare files are huge compared to the yearly files). ## Satellites {#sat_aux.sec} @@ -294,5 +379,7 @@ provided, GITM should not be output at a resolution smaller than 1 second. The temporal resolution in the satellite file does not need to match the output resolution. +Because GITM by default outputs a file for every output time, if you use a satellite file, it produces a LOT of files. + The types of outputs are specified in the [`#OUTPUT`](outputs.md) section of the UAM file. diff --git a/srcDoc/postprocessing.md b/srcDoc/postprocessing.md index e68dd94a..6dbc1885 100644 --- a/srcDoc/postprocessing.md +++ b/srcDoc/postprocessing.md @@ -1,11 +1,11 @@ # Postprocessing -GITM stores outputs at a cadence specified in the input `UAM.in` file. When -running, there is one file created by each processor, for each output type -(`3DALL`, `2DANC`, etc.), plus one header file at each `DtOutput`. This creates +GITM stores outputs at a cadence specified in the input `UAM.in` file (in #SAVEPLOTS). When +running at each `DtOutput`, each processor writes its own (block) file for each output type +(`3DALL`, `2DANC`, etc.), plus the first processor writes a header file. This creates an extremely large number of files on long runs across many cores. To make the number of files more manageable and easier to read, they are post-processed into -`.bin` files, one for each output type at each `DtOutput`. +`.bin` files, one for each output type at each `DtOutput`. This is different than other codes that write all of the output for all timesteps into a single file (so that file can be huge), or that writes different files for different states. GITM's post-processor writes all of the requested variables to one file for each time-step. When running `make rundir`, a file is placed within the `run/` folder called `post_process.py` which is the entrypoint for postprocessing. This turns the raw @@ -33,6 +33,10 @@ can watch for new outputs for a specified duration and process new outputs as they are created. The output `.bin` files can be moved to a remote system, tarred, and/or exist alongside the raw outputs. +This means that there are essentailly two ways of running the post-processor: +- Once the run is completed, run it and post process all of the files at once. +- Run it after starting the simulation, so it runs in parallel to the simulation. This post processes the output files as the code is running, so that the files should be post processed soon after GITM is done running. + The help message for `post_process.py`: ``` @@ -61,17 +65,19 @@ The help message for `post_process.py`: -tgz tar and zip raw GITM file instead of process ``` - !!! note "Post-processing Speed" - The default "engine" for reading the raw GITM - outputs is `scipy.io.FortranFile`. In some cases like high processor-count, - many output files, etc., files may not be post-processing as quickly as they - are created. + The post_process.py code is relatively slow - it was written to be more robust and to be clean and not fast. If extremely fast post processing is desired, the older fortran post processor (driven by a shell script) can be used. This is not the recommended way of doing things, but it can be much faster. The old post processor executable can be created by running `make POST` from GITM's root folder (`GITM/`). If this is done before `make rundir`, it will automatically be copied. Otherwise it must be linked to `run/` manually. - In this case, it is recommended to use the Fortran engine which is included within GITM. The executable can be created by running `make POST` from GITM's root folder (`GITM/`). If this is done before `make rundir`, it will automatically be copied. Otherwise it must be moved to `run/` manually. + The python post-processor will use `PostGITM.exe` if it is found in `run/`. This is not the default behavior as some systems limit which programs can be run from login nodes (but don't seem to limit python yet!). - The python post-processor will use `PostGITM.exe` if it is found in `run/`. This is not the default behavior as some systems limit which programs can be run from login nodes. +One of the benefits of post_process.py is that it can post process the files and then scp them over to another system. In order to do this, you need to have keyless entry setup, so that files can be transferred without entering a password. The machine name, user name, and directory to move the run into have to be passed into the post_process.py script, which is done with a 'remotefile'. If the python code finds this file, it will read it and start moving files. Specifically, the post processor: +- checks to see if the directory on the remote system exists. If not, it tries to create it. +- post processes any files that need to be post processed in UA/data. +- pushes the UA/data/*bin files over to the remote system. +- checks one-by-one to see if the files exist on the remote system. If the file exists on the remote system, it removes it from the UA/data directory on the compute node. +- pushes supplemental files (like log files and run files) to the remote system. +- if the processing time has not expired, it waits a give amount of time (5 minutes by default) and loops. If the processing time has been exceeded, it exists. ### Arguments @@ -129,8 +135,7 @@ raw outputs. #### tgz -`-tgz` tells the script to tar and g-zip the outputs to save space. This is -somewhat CPU intensive. +`-tgz` tells the script to not post process the files at all, but to tar and zip them together. They can then be post-processed on a different machine. This is somewhat CPU intensive and slow. The remote feature will work with these files, so that they can be automatically pushed to another system. (This was created when Pleiades would not allow post processing on head nodes. After using this for a while, we made the post processor code do what the fortran code does, so that this option is mostly moot now.) --- @@ -141,7 +146,7 @@ If the run is creating files faster than they are postprocessed, do not panic. GITM would create a `csh` script before the introduction of this Python script which is still available. `pGITM` and `PostGITM.exe` use a Fortran backend -instead of post_process.py which uses Scipy. The Fortran code may be faster than +instead of post_process.py which is slow. The Fortran code should be much faster than Python. To access these, run `make POST` from GITM's root folder. If this is run before @@ -150,4 +155,4 @@ To access these, run `make POST` from GITM's root folder. If this is run before manually. `post_process.py` will prefer to use the Fortran post-processor and only use Scipy if it is not found. -`pGITM` will only run one time and required `csh`. +`pGITM` will only run one time and requires `csh` which doesn't seem to be available on systems by default anymore. The world has moved on. From 699e0adeb98ab2327a94b458c023ba61a1d91e85 Mon Sep 17 00:00:00 2001 From: Aaron Ridley Date: Thu, 10 Jul 2025 22:02:23 -0400 Subject: [PATCH 088/120] bug: need a space to make bullets --- srcDoc/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/srcDoc/index.md b/srcDoc/index.md index e905c7c1..ecb99eea 100644 --- a/srcDoc/index.md +++ b/srcDoc/index.md @@ -38,6 +38,7 @@ ln -s /scratchdisk/mydirectory/run.gitm.event01 . ``` Then, within this directory, there is a file called 'UAM.in', which is what GITM reads to set all of its parameters. This is an extremely brief description of settings within the file - to understand more, please read the manual! Within this file, there are several things that need to be altered when running GITM: + - Start time, given as year, month, day, hour, minute, second. - End time, given as year, month, day, hour, minute, second. - The grid, given as start and end latitude, start and end longitude, and the number of blocks (processors) to use in latitude and longitude. [See this grid description for more.](internals/grid.md). From 4f65f1217b3ba13d69cd06a5e7d12cf98e438962 Mon Sep 17 00:00:00 2001 From: Aaron Ridley Date: Fri, 11 Jul 2025 14:17:23 -0400 Subject: [PATCH 089/120] a relatively standalone plotter that is simple --- srcPython/gitm_plot_simple.py | 414 ++++++++++++++++++++++++++++++++++ 1 file changed, 414 insertions(+) create mode 100755 srcPython/gitm_plot_simple.py diff --git a/srcPython/gitm_plot_simple.py b/srcPython/gitm_plot_simple.py new file mode 100755 index 00000000..3d9fcd53 --- /dev/null +++ b/srcPython/gitm_plot_simple.py @@ -0,0 +1,414 @@ +#!/usr/bin/env python3 +""" Standard model visualization routines +""" + +import matplotlib as mpl +mpl.use('Agg') +import matplotlib.pyplot as plt +import numpy as np +import argparse + +from pylab import cm +from gitm_routines import * + +def get_args(): + + parser = argparse.ArgumentParser( + description = 'Plot Aether / GITM model results') + + parser.add_argument('-list', \ + action='store_true', default = False, \ + help = 'list variables in file') + + parser.add_argument('-var', \ + default = 3, type = int, \ + help = 'variable to plot (number)') + + parser.add_argument('-cut', metavar = 'cut', default ='alt', \ + choices = ['alt', 'lat', 'lon'], + help = 'alt,lat,lon : which cut you would like') + + parser.add_argument('-alt', metavar = 'alt', default = 250.0, \ + help = 'altitude : alt in km (closest)') + parser.add_argument('-lat', metavar = 'lat', default = 0.0, \ + help = 'latitude : latitude in degrees (closest)') + parser.add_argument('-lon', metavar = 'lon', default = 0.0,\ + help = 'longitude in degrees (closest)') + + parser.add_argument('-log', default = False, + action="store_true", + help = 'plot the log of the variable') + + parser.add_argument('-mini', default = 1e32, type = float, \ + help = 'manually set the minimum value for the plots') + parser.add_argument('-maxi', default = -1e32, type = float, \ + help = 'manually set the maxiumum value for the plots') + + parser.add_argument('filelist', nargs='+', \ + help = 'list files to use for generating plots') + + args = parser.parse_args() + + return args + +# ---------------------------------------------------------------------------- +# get header info from a file +# ---------------------------------------------------------------------------- + +def get_file_info(args): + + header = read_gitm_header(args.filelist) + header['vars'] = remap_variable_names(header['vars']) + + return header + +# ---------------------------------------------------------------------------- +# list the variables in the header +# ---------------------------------------------------------------------------- + +def list_vars(header): + for k, v in header.items(): + if (k != 'vars'): + print(k, '-> ', v) + else: + print('vars : ') + for i, var in enumerate(v): + print(i, var) + return + +# ---------------------------------------------------------------------------- +# Read in data from the files: +# ---------------------------------------------------------------------------- + +def read_in_model_files(filelist, varlist): + + # first read in spatial information: + vars = [0, 1, 2] + spatialData = read_gitm_one_file(filelist[0], vars) + + lons = np.degrees(spatialData[0]) # Convert from rad to deg + nLons = len(lons[:, 0, 0]) + lats = np.degrees(spatialData[1]) # Convert from rad to deg + nLats = len(lats[0, :, 0]) + alts = spatialData[2] / 1000.0 # Convert from m to km + nAlts = len(alts[0, 0, :]) + + nTimes = len(filelist) + nVars = len(varlist) + if (nVars == 1): + allData = np.zeros((nTimes, nLons, nLats, nAlts)) + else: + allData = np.zeros((nTimes, nVars, nLons, nLats, nAlts)) + allTimes = [] + for iTime, filename in enumerate(filelist): + data = read_gitm_one_file(filename, varlist) + allTimes.append(data["time"]) + if (nVars == 1): + allData[iTime, :, :, :] = data[varlist[0]][:, :, :] + else: + for iVar, var in enumerate(varlist): + allData[iTime, iVar, :, :, :] = data[var][:, :, :] + vars = [] + for var in varlist: + vars.append(data['vars'][var]) + + data = {'times': allTimes, + 'data': allData, + 'vars': vars, + 'lons': lons, + 'lats': lats, + 'alts': alts, + 'nTimes': nTimes, + 'nVars': nVars, + 'nLons' : nLons, + 'nLats': nLats, + 'nAlts': nAlts} + + return data + +# ---------------------------------------------------------------------------- +# take a dictionary containing all of the model data and +# return slices. The data should have the shape: +# [nTimes, nVars, nLons, nLats, nAlts] +# or +# [nTimes, nLons, nLats, nAlts] +# ---------------------------------------------------------------------------- + +def data_slice(allData3D, iLon = -1, iLat = -1, iAlt = -1): + + nTimes = allData3D['nTimes'] + nVars = allData3D['nVars'] + nLons = allData3D['nLons'] + nLats = allData3D['nLats'] + nAlts = allData3D['nAlts'] + + if (nVars > 1): + if (iAlt > -1): + slices = np.zeros((nTimes, nVars, nLons, nLats)) + slices[:, :, :, :] = allData3D['data'][:, :, :, :, iAlt] + elif (iLat > -1): + slices = np.zeros((nTimes, nVars, nLons, nAlts)) + slices[:, :, :, :] = allData3D['data'][:, :, :, iLat, :] + else: + slices = np.zeros((nTimes, nVars, nLats, nAlts)) + slices[:, :, :, :] = allData3D['data'][:, :, iLon, :, :] + else: + if (iAlt > -1): + slices = np.zeros((nTimes, nLons, nLats)) + slices[:, :, :] = allData3D['data'][:, :, :, iAlt] + elif (iLat > -1): + slices = np.zeros((nTimes, nLons, nAlts)) + slices[:, :, :] = allData3D['data'][:, :, iLat, :] + else: + slices = np.zeros((nTimes, nLats, nAlts)) + slices[:, :, :] = allData3D['data'][:, iLon, :, :] + + return slices + +#----------------------------------------------------------------------------- +# find which cut direction to make, then which cut to take +#----------------------------------------------------------------------------- + +def find_cut(args, allData): + + cutValue = -1e32 + cutString = '' + cutShort = '' + iLon = -1 + iLat = -1 + iAlt = -1 + xLabel = '' + yLabel = '' + lons1d = allData['lons'][:, 0, 0] + lats1d = allData['lats'][0, :, 0] + alts1d = allData['alts'][0, 0, :] + xRange = [0,0] + yRange = [0,0] + + if (args.cut == 'alt'): + altGoal = float(args.alt) + diff = np.abs(alts1d - altGoal) + iAlt = np.argmin(diff) + cutValue = alts1d[iAlt] + cutString = 'Alt : %d km' % int(cutValue) + cutShort = 'alt%04d_' % iAlt + xLabel = 'Longitude (deg)' + yLabel = 'Latitude (deg)' + xPos1d = lons1d + yPos1d = lats1d + xRange = [0, 360] + yRange = [-90.0, 90.0] + if (args.cut == 'lon'): + lonGoal = float(args.lon) + diff = np.abs(lons1d - lonGoal) + iLon = np.argmin(diff) + cutValue = lons1d[iLon] + cutString = 'Lon : %d deg' % int(cutValue) + cutShort = 'lon%04d_' % iLon + xLabel = 'Latitude (deg)' + yLabel = 'Altitude (km)' + xPos1d = lats1d + yPos1d = alts1d + xRange = [-90.0, 90.0] + yRange = [alts1d[2], alts1d[-3]] + if (args.cut == 'lat'): + latGoal = float(args.lat) + diff = np.abs(lats1d - latGoal) + iLat = np.argmin(diff) + cutValue = lats1d[iLat] + cutString = 'Lat : %d deg' % int(cutValue) + cutShort = 'lat%04d_' % iLat + xLabel = 'Longitude (deg)' + yLabel = 'Altitude (km)' + xPos1d = lons1d + yPos1d = alts1d + xRange = [0.0, 360.0] + yRange = [alts1d[2], alts1d[-3]] + + cut = {'iLon': iLon, + 'iLat': iLat, + 'iAlt': iAlt, + 'cutValue': cutValue, + 'cutString': cutString, + 'cutShort': cutShort, + 'xLabel': xLabel, + 'yLabel': yLabel, + 'xRange': xRange, + 'yRange': yRange, + 'xPos': xPos1d, + 'yPos': yPos1d} + + return cut + +# ---------------------------------------------------------------------------- +# This function calculates the edges of cells based on the centers of the cells +# it assumes a 1D array. +# ---------------------------------------------------------------------------- + +def move_centers_to_edges(pos): + edges = (pos[1:] + pos[:-1])/2 + dpLeft = pos[1] - pos[0] + dpRight = pos[-1] - pos[-2] + edges = np.append(edges[0] - dpLeft, edges) + edges = np.append(edges, dpRight + edges[-1]) + return edges + +# ---------------------------------------------------------------------------- +# Get max and min values +# model_data is [time, xpositions, ypositions] +# ---------------------------------------------------------------------------- + +def get_min_max_data(allSlices, yPos, \ + yMin = -1e32, yMax = 1e32, \ + color = 'default', \ + minVal = 1e32, maxVal = -1e32, + isLog = False): + + symmetric = False + if (color == 'default'): + cmap = mpl.cm.plasma + if (color == 'red'): + cmap = mpl.cm.YlOrRd + + mask = ((yPos >= yMin) & (yPos <= yMax)) + if (mask.max()): + doPlot = True + maxi = allSlices[:, :, mask].max() * 1.01 + mini = allSlices[:, :, mask].min() * 0.99 + + if ((mini < 0.0) and (not isLog)): + symmetric = True + cmap = mpl.cm.bwr + maxi = abs(allSlices[:, :, mask]).max() * 1.05 + mini = -maxi + + else: + doPlot = False + mini = -1.0 + maxi = 1.0 + + if (minVal < 1e31): + mini = minVal + if (maxVal > -1e31): + maxi = maxVal + + min_max_data = {'mini' : mini, + 'maxi' : maxi, + 'cmap' : cmap, + 'symmetric' : symmetric, + 'doPlot': doPlot, + 'mask': mask} + + return min_max_data + +# ---------------------------------------------------------------------------- +# Plot a series of slices +# allSlices: 3D - [time, xpositions, ypositions] +# xPosEdges: 1D - [xpositions] (edges of cells, not centers) +# yPosEdges: 1D - [ypositions] (edges of cells, not centers) +# dataMinMax: dictionary that contains info on min, max, and color map +# varName: puts this string on the colorbar +# titleAddOn: puts this string after the time on the title +# xLabel: string label for the x axis +# yLabel: string label for the y axis +# filenamePrefix: string to add before time for filename (like varX_) +# xLimits: limits for the x axis - (array of 2 elements) +# yLimits: limits for the y axis - (array of 2 elements) +# dpi: dots per inch for file +# ---------------------------------------------------------------------------- + +def plot_series_of_slices(allSlices, + allTimes, + xPosEdges, + yPosEdges, + dataMinMax, + varName = '', + titleAddOn = '', + xLabel = '', + yLabel = '', + filenamePrefix = '', + xLimits = [0, 0], + yLimits = [0, 0], + dpi = 120): + + for iTime, uTime in enumerate(allTimes): + + fig = plt.figure(figsize=(10, 5.5), dpi = dpi) + ax = fig.add_axes([0.07, 0.08, 0.97, 0.87]) + + title = uTime.strftime("%d %b %Y %H:%M:%S UT") + titleAddOn + value2d = allSlices[iTime, :, :].transpose() + con = ax.pcolormesh(xPosEdges, yPosEdges, value2d, \ + cmap = dataMinMax['cmap'], \ + vmin = dataMinMax['mini'], \ + vmax = dataMinMax['maxi']) + if (xLimits[1] > xLimits[0]): + ax.set_xlim(xLimits) + if (yLimits[1] > yLimits[0]): + ax.set_ylim(yLimits) + #ax.set_aspect(1.0) + ax.set_title(title) + ax.set_xlabel(xLabel) + ax.set_ylabel(yLabel) + + cbar = fig.colorbar(con, ax = ax, shrink = 0.75, pad = 0.02) + cbar.set_label(varName, rotation=90) + + sTimeOut = uTime.strftime('%y%m%d_%H%M%S') + outFile = filenamePrefix + sTimeOut + '.png' + print(" ==> Writing file : ", outFile) + fig.savefig(outFile, dpi = dpi) + plt.close(fig) + +#----------------------------------------------------------------------------- +# Main code +#----------------------------------------------------------------------------- + +if __name__ == '__main__': + + # Get the input arguments + args = get_args() + + header = get_file_info(args) + + if (args.list): + list_vars(header) + exit() + + allData = read_in_model_files(args.filelist, [args.var]) + cut = find_cut(args, allData) + + allSlices = data_slice(allData, \ + iLon = cut['iLon'], \ + iLat = cut['iLat'], \ + iAlt = cut['iAlt']) + allTimes = allData['times'] + + # get min and max values, plus color table: + dataMinMax = get_min_max_data(allSlices, cut['yPos'], \ + color = 'red', \ + minVal = args.mini, maxVal = args.maxi) + + varName = allData['vars'][0] + if (args.log): + allSlices = np.log10(allSlices) + varName = 'log10(' + varName + ')' + dataMinMax['mini'] = np.log10(dataMinMax['mini']) + dataMinMax['maxi'] = np.log10(dataMinMax['maxi']) + sVarNum = 'var%03d_' % args.var + sFilePre = sVarNum + cut['cutShort'] + sTitleAdd = '; ' + cut['cutString'] + xEdges = move_centers_to_edges(cut['xPos']) + yEdges = move_centers_to_edges(cut['yPos']) + plot_series_of_slices(allSlices, + allTimes, + xEdges, + yEdges, + dataMinMax, + xLabel = cut['xLabel'], + yLabel = cut['yLabel'], + varName = varName, + titleAddOn = sTitleAdd, + filenamePrefix = sFilePre, + xLimits = cut['xRange'], + yLimits = cut['yRange']) From cf47675c474c2ab2891f9ae443ffe53c13a6db2c Mon Sep 17 00:00:00 2001 From: Aaron Ridley Date: Fri, 11 Jul 2025 14:17:50 -0400 Subject: [PATCH 090/120] updating docs --- srcDoc/common_inputs.md | 9 +++--- srcDoc/internals/grid.md | 67 +++++++++++++++++++++++++++------------- 2 files changed, 51 insertions(+), 25 deletions(-) diff --git a/srcDoc/common_inputs.md b/srcDoc/common_inputs.md index 3aa26e6f..b010afd2 100644 --- a/srcDoc/common_inputs.md +++ b/srcDoc/common_inputs.md @@ -54,10 +54,6 @@ and 32 processors would be needed. There is a lot more to learn here, so we have written a whole section on this. [See this grid description for more.](internals/grid.md). -!!!note - All of the auxiliary input (data) files can be kept in the same directory - as the GITM executable and the `UAM.in` file. Otherwise, the path should be - specified relative to the GITM executable. ## Saving output files @@ -95,6 +91,11 @@ Another example: ``` 2DGEL files output things like the electric potential and auroral precipitation on the geographic grid at the top of the model. 3DTHM files are thermodynamic variables such as heating and cooling rates. +!!!note + All of the auxiliary input (data) files can be kept in the same run directory + as the linked GITM executable and the `UAM.in` file. Otherwise, the path should be + specified in the UAM.in file relative to the run directory. + ## IMF and Solar Wind {#imf.sec} This file controls the high-latitude electric field and aurora when diff --git a/srcDoc/internals/grid.md b/srcDoc/internals/grid.md index 5d19900a..e00dad40 100644 --- a/srcDoc/internals/grid.md +++ b/srcDoc/internals/grid.md @@ -71,7 +71,7 @@ have on a single processor. This is deprecated and will cause issues when set to something other than 1. It will be removed in a future release. !!! note - If you change any of these parameters, you will need to recompile the code. + If you change any of these parameters, you have to recompile the code. ## Horizontal Resolution @@ -109,41 +109,66 @@ While the latitudinal resolution ($`\Delta{\theta}`$) is set by: --- -Some recommended settings are listed below. An ideal setup would minimize the +Some settings are listed below. Machines like NASA's Pleiades have a certain number of cores (processors) per node, like Ivy has 20 cores/node. An ideal setup would minimize the unused cores on each node, while balancing runtime (increases with more cells -per block) and the number of files created (increases with more cores (blocks)) +per block) and the number of files created (increases with more cores (blocks)). What this practically means is that it is a good idea to have the total number of processors used being a multiple of the processors/node. | Resolution
    $`(^\circ Lon \times ^\circ Lat)`$ | Total Cores | nBlocks
    (nLons x nLats) | nCells
    (nLon x nLat) | | :--- | ---- | :-----: | :----: | | 4 x 1 | 200 | 10 x 20 | 9 x 9 | -| 4 x 1 | 360 = (120 * 3) | 10 x 36 | 9 x 5 | +| 4 x 1 | 360 | 10 x 36 | 9 x 5 | | 4 x 1 | 120 | 6 x 20 | 15 x 9 | | 4 x 1 | 180 | 9 x 20 | 10 x 9 | +| 4 x 1 | 10 | 2 x 5 | 45 x 36 | | 2 x 0.5 | 800 | 20 x 40 | 9 x 9 | Experimentation may be necessary to find the parameters which work best on the -system GITM is run on. +system GITM is run on. You can always increase nCells in order to run on fewer processors - GITM will just take longer to run, but should be fine. For example, the second to last line shows that GITM can run at production levels on 10 processors, which relatively high-end laptops have currently and many modern desktop machines have. -## Running 3D Over the Part of the Globe +## Running 3D Over Part of the Globe GITM can be run over part of the globe - both in latitude and in longitude. It -can be run over a single polar region (by setting either the minimum or maximum +can be run over a single polar region by setting either the minimum or maximum latitude to be greater (or less) than $`\pm 90^\circ`$). If this is selected, -message passing over the poles is implemented. If the pole is not selected, then -boundary conditions have to be set in `set_horizontal_bcs.f90`. By default, a +message passing over the poles is implemented. For example, this simulates the entire northern polar region at $`4^\circ`$ longitude and $`1^\circ`$ latitude resolution: + #GRID + 8 lons + 4 lats + 45.0 minimum latitude to model + 90.0 maximum latitude to model + 0.0 longitude start to model (set to 0.0 for whole Earth) + 0.0 longitude end to model (set to 0.0 for whole Earth) + +If only part of the globe is selected, then boundary conditions have to be set in `set_horizontal_bcs.f90`. By default, a continuous gradient boundary condition is used on the densities and temperatures, while a continuous value is used on the velocity. This is true in -both latitude and longitude. In longitude, message passing is implemented all of -the time, but the values are over-written by the boundary conditions if the -maximum and minimum longitude are not equal to each other. +both latitude and longitude. + +Running in a small region does not capture the global-scale dynamics, since the EUV heating on the dayside would not be specified correctly in the regions that are not modeled. So, things like the global-scale neutral wind pattern will not be correct. This means that if the physics that you are desiring to simulate depends on things that are more global-scale, then it is not a good idea to run over an isolated region. But, if the physics is much more localized and the time-scales are significantly shorter than a day, this is a fine feature to use. Example of good and bad cases would include: + +- Good case: Exploring how an ionospheric travelling convection vortex interacts with the local thermosphere to drive strong vertical winds. +-Bad case: Exploring how to meridional neutral winds drive field-aligned flows over Michigan. + +In order to mitigate the effects of this (but not completely eliminate the effects), we have implemented a feature that allows you to use global-scale simulation results as a horizontal boundary condition for a regional simulation. In addition, GITM initializes the states with the global-scale simulation, so that you don't have to run the regional-scale simulation for a long period to get rid of the initial condition. In order to do this, you need to do the following: + +- Run one simulation over the whole globe using some nominal resolution, outputting 3DALL files at a time-scale that is appropriate for capturing the global-scale dynamics (say every 15 minutes if there is nothing of geophysical interest occuring). Remember that it is always a good idea to run 24 hours before an event in order to get rid of the initial condition! +- Post process the 3DALL files. +- Move the UA/data directory into some place like UA/GlobalScaleOutputs. +- Make a new UA/data directory. +- Modify the UAM.in file so that the grid captures the region of interest, and the start/end times align with the time of interest. Also, set the number of blocks so that you have the resolution you desire. +- Add the following line into the UAM.in file: + #GITMBCS + T + UA/GlobalScaleOutputs + +Then, when you run GITM, it will simulate only the region of interest. ## Altitudes -As defined in `src/ModEarth.f90`, each altitude block contains $`\frac{1}{3}`$ -of a scale height, starting at 100 km and typically reaching up to ~500-700 km. -Increasing the number of altitude blocks will increase the altitude range, but -if this value is increased too much the model may become unstable and/or -inaccurate. +As defined in `src/ModEarth.f90`, the altitude spacing in GITM is 0.3 +scale heights. In the UAM.in file, the starting altitude is typically set to 100 km. Given that in ModSize.f90, the number of altitudes is 50 (by default), GITM simulates 15 scale heights, typically reaching up to ~500-700 km. +Increasing the number of altitudes in ModSize.f90 will increase the altitude range, but +if this value is increased too much the model may become unstable and/or inaccurate. It is also possible to reduce the starting altitude below 100 km, but decreasing it below the mesopause is not a great idea, since the physics of the mesopause (i.e., CO2 cooling) is not included in the current version of GITM. Therefore, moving the lower boundary below about 95 km is not recommended. ## Running in 1D @@ -169,10 +194,10 @@ location. To specify the exact location, in `UAM.in`: 275.0 minimum longitude to model 275.0 maximum longitude to model -This is pretty close to some place in Michigan. GITM will model this +This is some place in Michigan. GITM will model this exact point for as long as you specify. One thing to keep in mind with running in 1D is that the Earth still rotates, so the spot will have a -strong day to night variation in temperature. In 3D, the winds decrease +strong day to night variation in temperature and will not capture any horizontal dynamics at all, such as the horizontal neutral winds (which are primarily driven by pressure gradients). In 3D, the winds decrease some of the variability between day and night, but in 1D, this doesn't -happen. So, the results are not going to be perfect. But 1D is great for -debugging. +happen. So, the results are not going to be (even close to) perfect. But 1D is great for +debugging, since it is incredibly fast and many days can be run within a few minutes. From 223d9abdee37ea0237915faf478e96bdc6ae869c Mon Sep 17 00:00:00 2001 From: Aaron Ridley Date: Fri, 11 Jul 2025 14:18:25 -0400 Subject: [PATCH 091/120] BUG: need to decode string --- srcPython/gitm_routines.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/srcPython/gitm_routines.py b/srcPython/gitm_routines.py index 76bdbcfc..78d6c6bc 100644 --- a/srcPython/gitm_routines.py +++ b/srcPython/gitm_routines.py @@ -354,8 +354,9 @@ def read_gitm_one_file(file_to_read, vars_to_read=-1): # Collect variable names. for i in range(data["nVars"]): - data["vars"].append(unpack(endChar+'%is'%(recLen),f.read(recLen))[0]) - (oldLen, recLen)=unpack(endChar+'2l',f.read(8)) + v = unpack(endChar+'%is'%(recLen),f.read(recLen))[0] + data["vars"].append(v.decode('utf-8').replace(" ","")) + (oldLen, recLen)=unpack(endChar+'2l',f.read(8)) # Extract time. (yy,mm,dd,hh,mn,ss,ms)=unpack(endChar+'lllllll',f.read(recLen)) From 9415f7e34ace3b95ce09be2868aac3c01cb32a19 Mon Sep 17 00:00:00 2001 From: Aaron Ridley Date: Fri, 11 Jul 2025 15:06:37 -0400 Subject: [PATCH 092/120] added a description of plotting functions --- srcDoc/plotters.md | 110 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 srcDoc/plotters.md diff --git a/srcDoc/plotters.md b/srcDoc/plotters.md new file mode 100644 index 00000000..57af28a2 --- /dev/null +++ b/srcDoc/plotters.md @@ -0,0 +1,110 @@ + +# Plotters + +## gitm_plot_simple.py + +This code will make simple rectangular plots in: + +- altitude (longitude vs latitude): '-cut=alt -alt=value' +- longitude (latitude vs altitude): '-cut=lon -lon=value' +- latitude (longitude vs altitude): '-cut=lat -lat=value' + +You can set the variable to plot as a number. To see the variable mapping between numbers and names, you can run the code with '-list'. You can set the max and min value for the colorbar if you would like, but setting -maxi and -mini. + + usage: gitm_plot_simple.py [-h] [-list] [-var VAR] [-cut cut] [-alt alt] [-lat lat] [-lon lon] + [-log] [-mini MINI] [-maxi MAXI] + filelist [filelist ...] + + Plot Aether / GITM model results + + positional arguments: + filelist list files to use for generating plots + + options: + -h, --help show this help message and exit + -list list variables in file + -var VAR variable to plot (number) + -cut cut alt,lat,lon : which cut you would like + -alt alt altitude : alt in km (closest) + -lat lat latitude : latitude in degrees (closest) + -lon lon longitude in degrees (closest) + -log plot the log of the variable + -mini MINI manually set the minimum value for the plots + -maxi MAXI manually set the maxiumum value for the plots + +## gitm_plot.py + +This code is a bit more sophisticated, adding a bunch of additional functionality: + +- It can make cuts in alt, lat, and lon, as above. +- The alt cut plots add circles for the northern and southern polar regions. These can be removed with the flag '-nopole'. Additionally, if you only want a polar plot, you can use the flag '-north' or '-south'. +- TEC and O/N2 can be plotted by using the flags '-tec' or '-on2'. You can't set the both at the same time. +- You can overplot winds by setting the flag '-winds'. The code tries to figure out whether you want neutral winds or ion drifts by looking at the variable number and seeing if the main variable to plot is a neutral or ion state. You can set the spacing between the wind vectors by setting '-nstep=value'. +- You can subtract a series of files from another series of files. If the '-backdir=/path/to/baseline/run' is set, it will look into this directory and try to find matching files to subtract. If you set '-percent', it computes the percentage difference. +- If a series of images is made (by feeding a bunch of files), you can make a movie by setting the flag '-movie'. You can set the framerate ('-rate') and type of movie ('-mkv', '-mp4', '-gif'). You need ffmpeg to actually use this feature. +- The code can integrate or calculate the average of the slice(s) and then plot those out to a file by setting '-timeplot'. Additionally, a logfile can be created by setting '-timefile=log_file_name' to output those means or integrals out to the log file. + +usage: thermo_plot.py [-h] [-list] [-timeplot] [-mean] [-timefile TIMEFILE] [-label] + [-color {default,red}] [-var VAR] [-cut cut] [-ext {png,jpg,pdf}] + [-hiwind HIWIND] [-winds] [-nstep nstep] [-nopole] [-north] [-south] + [-alt alt] [-lat lat] [-lon lon] [-alog] [-IsLog] [-mini MINI] [-maxi MAXI] + [-percent] [-diff] [-backdir backdir] [-mkv] [-mp4] [-gif] [-movie] [-tec] + [-on2] [-rate RATE] + filelist [filelist ...] + +Plot Aether / GITM model results + +positional arguments: + filelist list files to use for generating plots + +options: + -h, --help show this help message and exit + -list list variables in file + -timeplot Plot integrated (or mean) value vs. time + -mean Plot mean value instead of integrated value + -timefile TIMEFILE output filename for timeline file + -label Add label (e.g., (a), (b)..) to title + -color {default,red} set color bar + -var VAR variable to plot (number) + -cut cut alt,lat,lon : which cut you would like + -ext {png,jpg,pdf} plot type file extention + -hiwind HIWIND HIWIND file to plot location + -winds overplot winds + -nstep nstep number of steps between wind quivers + -nopole dont plot polar regions + -north only plot northern hemisphere results + -south only plot southern hemisphere results + -alt alt altitude : alt in km (closest) + -lat lat latitude : latitude in degrees (closest) + -lon lon longitude in degrees (closest) + -alog plot the log of the variable + -IsLog plot the log of the variable + -mini MINI manually set the minimum value for the plots + -maxi MAXI manually set the maxiumum value for the plots + -percent plot percentage difference of files + -diff plot difference of files (2 files needed) + -backdir backdir Subtract files in this directory + -mkv movie format = mkv + -mp4 movie format = mp4 + -gif movie format = gif + -movie Make a movie out of results + -tec plot total electron content (TEC) + -on2 plot O/N2 ratio + -rate RATE framerate for movie + +In order to run this code, you need to install aetherpy, which can be obtained [here](https://github.com/aaronjridley/aetherpy). The 'develop' branch is fully supported, so please switch to that branch ('git checkout develop') and follow the README.md file to install it. It should be straightforward to install. + +## Aetherpy + +Aetherpy is a python package for plotting Aether model results, but we have modified it so that it will support GITM files also. Aetherpy can be obtained [here](https://github.com/aaronjridley/aetherpy). The 'develop' branch is fully supported, so please switch to that branch ('git checkout develop') and follow the README.md file to install it. It should be straightforward to install. + +There are plotters in aetherpy which are useful but somewhat coomplicated. We are working on these to make them less complicated and more functional. + +## PyITM + +We are working on a new repository for plotting IT modeling results, and have put it [here](https://github.com/GITMCode/PyITM). This is relatively new. + +This code base is aimed at getting people ramped up to plotting and analysis quickly, so we are aiming for the codes to be relatively simple and easy to use. In addition, we are trying to make functions short and reusable so that they can be taken from these codes and used again (for example, the 'gitm_plot_simple.py' code is almost completely stolen from these functions and was created in about an hour from this framework.) + +## Data-Model Comparison Tools + From a93307cbe5301caacb97ee4cb6552bab8e981423 Mon Sep 17 00:00:00 2001 From: Aaron Ridley Date: Fri, 11 Jul 2025 15:07:15 -0400 Subject: [PATCH 093/120] Changed the plotting function --- srcDoc/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcDoc/index.md b/srcDoc/index.md index ecb99eea..07a2b4e3 100644 --- a/srcDoc/index.md +++ b/srcDoc/index.md @@ -23,9 +23,9 @@ mpirun -np 4 ./GITM.exe Then to produce a plot: ```bash cd UA/data -python3 ../../../srcPython/gitm_plot_one_alt.py -alt=250 -var=3 *bin +python3 ../../../srcPython/gitm_plot_simple.py -alt=250 -var=3 *bin ``` -This should produce two png files showing the density across the globe at about 250 km altitude. This is not the latest, greatest plotter, but it should hopefully work and produce something. +This should produce two png files showing the density across the globe at about 250 km altitude. This is a relatively simple plotter that will make cuts in altitude, latitude, and longitude. They are quite basic, but this should provide some framework for reading in GITM files and visualizing the results. More complex plotters exist. Some of these are described in [this document](plotting.md). ## A Bit More Explaination From bdec6c65af9a4b995ba17041d046365bc4ac6a55 Mon Sep 17 00:00:00 2001 From: Aaron Ridley Date: Fri, 11 Jul 2025 15:12:11 -0400 Subject: [PATCH 094/120] updated to include links to plotting --- srcDoc/index.md | 2 ++ srcDoc/postprocessing.md | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/srcDoc/index.md b/srcDoc/index.md index 07a2b4e3..944bbbca 100644 --- a/srcDoc/index.md +++ b/srcDoc/index.md @@ -51,6 +51,8 @@ Once these things are set, you should be able to run GITM for the event of your We provide a code in srcPython called gitm_makerun.py that will take the default UAM.in file, change the start/end times, download IMF and AE files, and flip switches that you may want. +For more information on plotting, please see [the plotting description page](plotters.md). + ## The More Thorough Start Please see the [installation page](install.md) page for more info on how to diff --git a/srcDoc/postprocessing.md b/srcDoc/postprocessing.md index 6dbc1885..5cb5bcb5 100644 --- a/srcDoc/postprocessing.md +++ b/srcDoc/postprocessing.md @@ -139,6 +139,10 @@ raw outputs. --- +## Plotting + +For information on plotting, please see [the plotting description page](plotters.md). + ## pGITM From 7043e48927be9c722f45f410912d1aa081751fee Mon Sep 17 00:00:00 2001 From: Aaron Ridley Date: Fri, 11 Jul 2025 15:14:15 -0400 Subject: [PATCH 095/120] BUG: wrong link for plotters --- srcDoc/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcDoc/index.md b/srcDoc/index.md index 944bbbca..e793e88f 100644 --- a/srcDoc/index.md +++ b/srcDoc/index.md @@ -25,7 +25,7 @@ Then to produce a plot: cd UA/data python3 ../../../srcPython/gitm_plot_simple.py -alt=250 -var=3 *bin ``` -This should produce two png files showing the density across the globe at about 250 km altitude. This is a relatively simple plotter that will make cuts in altitude, latitude, and longitude. They are quite basic, but this should provide some framework for reading in GITM files and visualizing the results. More complex plotters exist. Some of these are described in [this document](plotting.md). +This should produce two png files showing the density across the globe at about 250 km altitude. This is a relatively simple plotter that will make cuts in altitude, latitude, and longitude. They are quite basic, but this should provide some framework for reading in GITM files and visualizing the results. More complex plotters exist. Some of these are described in [this document](plotters.md). ## A Bit More Explaination From 4f41022bf7899269ae9c1b3d1994f3207cf1e196 Mon Sep 17 00:00:00 2001 From: Aaron Ridley Date: Fri, 11 Jul 2025 15:41:05 -0400 Subject: [PATCH 096/120] added descriptions of some data-model comparison tools --- srcDoc/plotters.md | 108 +++++++++++++++++++++++++-------------------- 1 file changed, 61 insertions(+), 47 deletions(-) diff --git a/srcDoc/plotters.md b/srcDoc/plotters.md index 57af28a2..5b5dc436 100644 --- a/srcDoc/plotters.md +++ b/srcDoc/plotters.md @@ -44,53 +44,53 @@ This code is a bit more sophisticated, adding a bunch of additional functionalit - If a series of images is made (by feeding a bunch of files), you can make a movie by setting the flag '-movie'. You can set the framerate ('-rate') and type of movie ('-mkv', '-mp4', '-gif'). You need ffmpeg to actually use this feature. - The code can integrate or calculate the average of the slice(s) and then plot those out to a file by setting '-timeplot'. Additionally, a logfile can be created by setting '-timefile=log_file_name' to output those means or integrals out to the log file. -usage: thermo_plot.py [-h] [-list] [-timeplot] [-mean] [-timefile TIMEFILE] [-label] - [-color {default,red}] [-var VAR] [-cut cut] [-ext {png,jpg,pdf}] - [-hiwind HIWIND] [-winds] [-nstep nstep] [-nopole] [-north] [-south] - [-alt alt] [-lat lat] [-lon lon] [-alog] [-IsLog] [-mini MINI] [-maxi MAXI] - [-percent] [-diff] [-backdir backdir] [-mkv] [-mp4] [-gif] [-movie] [-tec] - [-on2] [-rate RATE] - filelist [filelist ...] - -Plot Aether / GITM model results - -positional arguments: - filelist list files to use for generating plots - -options: - -h, --help show this help message and exit - -list list variables in file - -timeplot Plot integrated (or mean) value vs. time - -mean Plot mean value instead of integrated value - -timefile TIMEFILE output filename for timeline file - -label Add label (e.g., (a), (b)..) to title - -color {default,red} set color bar - -var VAR variable to plot (number) - -cut cut alt,lat,lon : which cut you would like - -ext {png,jpg,pdf} plot type file extention - -hiwind HIWIND HIWIND file to plot location - -winds overplot winds - -nstep nstep number of steps between wind quivers - -nopole dont plot polar regions - -north only plot northern hemisphere results - -south only plot southern hemisphere results - -alt alt altitude : alt in km (closest) - -lat lat latitude : latitude in degrees (closest) - -lon lon longitude in degrees (closest) - -alog plot the log of the variable - -IsLog plot the log of the variable - -mini MINI manually set the minimum value for the plots - -maxi MAXI manually set the maxiumum value for the plots - -percent plot percentage difference of files - -diff plot difference of files (2 files needed) - -backdir backdir Subtract files in this directory - -mkv movie format = mkv - -mp4 movie format = mp4 - -gif movie format = gif - -movie Make a movie out of results - -tec plot total electron content (TEC) - -on2 plot O/N2 ratio - -rate RATE framerate for movie + usage: thermo_plot.py [-h] [-list] [-timeplot] [-mean] [-timefile TIMEFILE] [-label] + [-color {default,red}] [-var VAR] [-cut cut] [-ext {png,jpg,pdf}] + [-hiwind HIWIND] [-winds] [-nstep nstep] [-nopole] [-north] [-south] + [-alt alt] [-lat lat] [-lon lon] [-alog] [-IsLog] [-mini MINI] [-maxi MAXI] + [-percent] [-diff] [-backdir backdir] [-mkv] [-mp4] [-gif] [-movie] [-tec] + [-on2] [-rate RATE] + filelist [filelist ...] + + Plot Aether / GITM model results + + positional arguments: + filelist list files to use for generating plots + + options: + -h, --help show this help message and exit + -list list variables in file + -timeplot Plot integrated (or mean) value vs. time + -mean Plot mean value instead of integrated value + -timefile TIMEFILE output filename for timeline file + -label Add label (e.g., (a), (b)..) to title + -color {default,red} set color bar + -var VAR variable to plot (number) + -cut cut alt,lat,lon : which cut you would like + -ext {png,jpg,pdf} plot type file extention + -hiwind HIWIND HIWIND file to plot location + -winds overplot winds + -nstep nstep number of steps between wind quivers + -nopole dont plot polar regions + -north only plot northern hemisphere results + -south only plot southern hemisphere results + -alt alt altitude : alt in km (closest) + -lat lat latitude : latitude in degrees (closest) + -lon lon longitude in degrees (closest) + -alog plot the log of the variable + -IsLog plot the log of the variable + -mini MINI manually set the minimum value for the plots + -maxi MAXI manually set the maxiumum value for the plots + -percent plot percentage difference of files + -diff plot difference of files (2 files needed) + -backdir backdir Subtract files in this directory + -mkv movie format = mkv + -mp4 movie format = mp4 + -gif movie format = gif + -movie Make a movie out of results + -tec plot total electron content (TEC) + -on2 plot O/N2 ratio + -rate RATE framerate for movie In order to run this code, you need to install aetherpy, which can be obtained [here](https://github.com/aaronjridley/aetherpy). The 'develop' branch is fully supported, so please switch to that branch ('git checkout develop') and follow the README.md file to install it. It should be straightforward to install. @@ -108,3 +108,17 @@ This code base is aimed at getting people ramped up to plotting and analysis qui ## Data-Model Comparison Tools +Some codes that have been provided to allow data-model comparisons to be made include the following below. For each, to get more information, run them with a '-h'. We don't provide this data to you - it is up to you to download and put this data somewhere that the codes can find it. For almost all of these files, the path to the data is hardcoded into the file, so you will have to edit the file and replace the location of the data to whereever you install the data. + +- thermo_goce.py: This code will compare GITM 3DALL files to GOCE measurements of densities and winds. Since GOCE was only available between late 2009 - 2013, if it doesn't find GOCE files, it will search for CHAMP files. If those are not available, it will search for SWARM files. To download (for example) CHAMP data, you can use the command: +```bash +wget --no-parent -r --cut-dirs=3 ftp://thermosphere.tudelft.nl/version_01/CHAMP_data/ +``` +Other data types like this can be found on the same ftp site. + +- thermo_guvi.py: This code will compare the GITM 3DALL files to (post 2006) GUVI O/N2. + +- thermo_vista.py: This code will read in and do some crude comparisons between GITM and VISTA TEC. It is a work in progress. + +- thermo_hiwind.py: This code will compare the HIWIND FPI results (for extremely specific times in 2011 and 2018) to 3DALL results. + From 4cb34f8de70629bdbb247b9bbeb9cb0291464eb6 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Fri, 11 Jul 2025 15:45:37 -0400 Subject: [PATCH 097/120] layout changes in electrodynamics section for aurora stuff --- srcDoc/internals/electrodynamics.md | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/srcDoc/internals/electrodynamics.md b/srcDoc/internals/electrodynamics.md index 5e9a5143..4250b21e 100644 --- a/srcDoc/internals/electrodynamics.md +++ b/srcDoc/internals/electrodynamics.md @@ -64,6 +64,8 @@ for all of the selected auroral types. At the moment these all must be from the same module, so one cannot use FTA for diffuse electron precipitation and AMIE for monoenergetic electron precipitation. +### Aurora Types + Auroral types are specified in the `#AURORATYPES` section of `UAM.in`, and only electron diffuse aurora are included by default: @@ -75,8 +77,21 @@ F UseWaveAurora (logical) F UseIonAurora (logical) ``` +Some notes on the different auroral types: + +- `NormalizeAuroraToHP` is only recommended to be used in conjunction with FRE, +- `#AURORATYPES` are not supported by all auroral models. Presently, only +OVATION & MAGNIT (AMIE) can provide other than electron diffuse aurora. +- `AllowAurWODiffuse` was added for stability with OVATION-Prime; it restricts +mono/wave/ion aurora to only exist in locations which also contain electron +diffuse aurora. This can be set in [`#AURORAMODS`](../common_inputs.md#auroramods) + Internally, GITM represents Monoenergetic and Wave/broadband aurora with a -gaussian centered at the average energy. The diffuse aurora can be represnted by +gaussian centered at the average energy. + +### Aurora Mods + +The diffuse aurora can be represnted by either a Maxwellian or Kappa distribution using the `#AURORAMODS` section of `UAM.in`: @@ -90,11 +105,7 @@ F AllowAurWODiffuse (logical) 50.0 MaxAveEAurora (real) ``` -`NormalizeAuroraToHP` is only recommended to be used in conjunction with FRE, -and the other Aurora mods are recommended to be used only with Diffuse Aurora. -`AllowAurWODiffuse` was assed for stability with OVATION-Prime; it restricts -mono/wave/ion aurora to only exist in locations which also contain electron -diffuse aurora. + ## Potentials From 24c9c6d0e23912b4d2e8a7931fbd6c9dd7ff831f Mon Sep 17 00:00:00 2001 From: Aaron Ridley Date: Fri, 11 Jul 2025 16:00:52 -0400 Subject: [PATCH 098/120] reorganize order --- srcDoc/set_inputs.md | 700 ++++++++++++++++++++++--------------------- 1 file changed, 362 insertions(+), 338 deletions(-) diff --git a/srcDoc/set_inputs.md b/srcDoc/set_inputs.md index 2af6899f..83e30c63 100644 --- a/srcDoc/set_inputs.md +++ b/srcDoc/set_inputs.md @@ -27,188 +27,121 @@ This sets the ending time of the simulation. iMinute (integer) iSecond (integer) -## PAUSETIME - -This will set a time for the code to just pause. Really, this should -never be used. - - #PAUSETIME - iYear iMonth iDay iHour iMinute iSecond - -## ISTEP - -This is typically only specified in a restart header. If you specify it -in a start UAM.in it will start the counter to whatever you specify. - - #ISTEP - iStep (integer) - -## CPUTIMEMAX - -This sets the maximum CPU time that the code should run before it starts -to write a restart file and end the simulation. It is very useful on -systems that have a queueing system and has limited time runs. -Typically, set it for a couple of minutes short of the max wall clock, -since it needs some time to write the restart files. - - #CPUTIMEMAX - CPUTimeMax (real) - -## STATISTICALMODELSONLY -This command will skip all pretty much all of the physics of GITM, and -will reinitialize the model with the MSIS and IRI values at the interval -set in the second variable. If you want to compare a run to MSIS and -IRI, you can run GITM with this command and get output at exactly the -same cadence and locations, thereby allowing easier comparisons. The dt -can be set as low as needed, so you can run satellites through MSIS and -IRI. - - #STATISTICALMODELSONLY - UseStatisticalModelsOnly (logical) - DtStatisticalModels (real) - -## TSIMULATION - -This is typically only specified in a restart header. It sets the offset -from the starttime to the currenttime. Should really only be used with -caution. - - #TSIMULATION - tsimulation (real) - -## F107 - -Sets the F10.7 and 81 day average F10.7. This is used to set the initial -altitude grid, and drive the lower boundary conditions. - - #F107 - f107 (real) - f107a (real - 81 day average of f107) - -## INITIAL - -This specifies the initial conditions and the lower boundary conditions. -For Earth, we typically just use MSIS and IRI for initial conditions. -For other planets, the vertical BCs can be set here. - - #INITIAL - UseMSIS (logical) - UseIRI (logical) - If UseMSIS is .false. then : - TempMin (real, bottom temperature) - TempMax (real, top initial temperature) - TempHeight (real, Height of the middle of temp gradient) - TempWidth (real, Width of the temperature gradient) +## ALTITUDE -## TIDES +For Earth, the AltMin is the only variable used here. The altitudes are +set to 0.3 times the scale height reported by MSIS, at the equator for +the specified F107 and F107a values. -This says how to use tides. The first one is using MSIS with no tides. -The second is using MSIS with full up tides. The third is using GSWM -tides, while the forth is for experimentation with using WACCM tides. + #ALTITUDE + AltMin (real, km) + AltMax (real, km) + UseStretchedAltitude (logical) - #TIDES - UseMSISOnly (logical) - UseMSISTides (logical) - UseGSWMTides (logical) - UseWACCMTides (logical) - UseHmeTides (logical) +## GRID -## MSISTIDES +If LatStart and LatEnd are set to \< -90 and \> 90, respectively, then +GITM does a whole sphere. If not, it models between the two. If you want +to do 1-D, set nLons=1, nLats=1 in ModSizeGitm.f90, then recompile, then +set LatStart and LonStart to the point on the Globe you want to model. -This says how to use msis tides. The first one is using diurnal tide The -first one is using semi-diurnal tide The first one is using terdiurnal -tide + #GRID + nBlocksLon (integer) + nBlocksLat (integer) + LatStart (real) + LatEnd (real) + LonStart (real) + LonEnd (real) - #MSISTIDES - UseMSISDiurnal (logical) - UseMSISSemidiurnal (logical) - UseMSISTerdiurnal (logical) -## MSISOBC +## RESTART -UseOBCExperiment - use MSIS \[O\] BC shifted by 6 months Only applicable -for MSIS00! MsisOblateFactor - alt = alt \* (1.0-f/2 + f\*cos(lat)) - -seems like -0.1 works well + #RESTART + DoRestart (logical) - #MSISOBC - UseOBCExperiment (logical) - MsisOblateFactor (real) +## SAVEPLOT -## MSISOBC +The DtRestart variable sets the time in between writing full restart +files to the UA/restartOUT directory.\ +This sets the output files. The most common type is 3DALL, which outputs +all primary state variables. Types include : 3DALL, 3DNEU, 3DION, 3DTHM, +3DCHM, 3DUSR, 3DGLO, 2DGEL, 2DMEL, 2DUSR, 1DALL, 1DGLO, 1DTHM, 1DNEW, +1DCHM, 1DCMS, 1DUSR. DtPlot sets the frequency of output -This toggles between using MSIS00 (false) and MSIS-2.1 (true) + #SAVEPLOT + DtRestart (real, seconds) + nOutputTypes (integer) + Outputtype (string, 3D, 2D, ION, NEUTRAL, ...) + DtPlot (real, seconds) - #MSISOBC - UseMsis21 (logical) +## PLOTTIMECHANGE -## DUST +This allows you to change the output cadence of the files for a limited +time. If you have an event then you can output much more often during +that event. -This says whether you want seconds in output file name. F means no -seconds in output file name. + #PLOTTIMECHANGE + yyyy mm dd hh mm ss ms (start) + yyyy mm dd hh mm ss ms (end) - #DUST - cDustFile - cConrathFile -## OVERWRITEIONOSPHERE +## LOGFILE - #OVERWRITEIONOSPHERE - DoOverwriteIonosphere - DoOverwriteWithIRI - DoOverwriteWithSami - SamiInFile +You really want a log file. They are very important. It is output in +UA/data/log\*.dat. You can output the log file at whatever frequency you +would like, but if you set dt to some very small value, you will get an +output every iteration, which is probably a good thing. -## GITMBCS + #LOGFILE + DtLogFile (real, seconds) - #GITMBCS - UseGitmBCs - GitmBCsDir +## CCMCFILENAME -## DUST +Typicaly file is named (e.g.) 1DALL_yymmdd_hhmmss.bin With this it will +be named 1DALL_GITM_yyyy-mm-ddThh-mm-ss.bin - #DUST - TauTot - Conrnu + #CCMCFILENAME + UseCCMCFileName (logical) -## GSWMCOMP -If you selected to use GSWM tides above, you can specify which -components to use. +## SAVEHIMEPLOT - #GSWMCOMP - GSWMdiurnal(1) (logical) - GSWMdiurnal(2) (logical) - GSWMsemidiurnal(1) (logical) - GSWMsemidiurnal(2) (logical) + #SAVEHIMEPLOT + HIMEPlotLonStart (real) + HIMEPlotLonEnd (real) + HIMEPlotLatStart (real) + HIMEPlotLatEnd (real) -## USEPERTURBATION +## SATELLITES - #USEPERTURBATION - UsePerturbation (logical) + #SATELLITES + nSats (integer - max = ', nMaxSats, ') + SatFile1 (string) + SatOutputtype1 (string, 0DUSR or 1DUSR or other) + DtPlot1 (real, seconds) + etc... -## USEBCPERTURBATION - #USEBCPERTURBATION - UseBcPerturbation (logical) - If UseBcPerturbation = .true. then: - iTypeBcPerturb (int) - perturbation characteristics ... +## APPENDFILES -## DAMPING +For satellite files, you can have one single file per satellite, instead +of one for every output. This makes GITM output significantly less +files. It only works for satellite files now. -This is probably for damping vertical wind oscillations that can occur -in the lower atmosphere. + #APPENDFILES + DoAppendFiles (logical) - #DAMPING - UseDamping (logical) +# Drivers -## GRAVITYWAVE +## F107 -I dont know what this is for\... +Sets the F10.7 and 81 day average F10.7. This is used to set the initial +altitude grid, and drive the lower boundary conditions. - #GRAVITYWAVE - UseGravityWave (logical) + #F107 + f107 (real) + f107a (real - 81 day average of f107) ## HPI @@ -226,22 +159,6 @@ field model is used. #KP kp (real) -## CFL - -The CFL condition sets how close to the maximum time step that GITM will -take. 1.0 is the maximum value. A value of about 0.75 is typical. If -instabilities form, a lower value is probably needed. - - #CFL - cfl (real) - -## FIXEDDT - -If you would like to force GITM to take a fixed dt you can use this. It -will try to take that fixed dt, unless the CFL condition is violated. - - #FIXEDDT - FixedDt (real) ## SOLARWIND @@ -263,6 +180,14 @@ the file is discussed further in the manual. #MHD_INDICES filename (string) +## EUV_DATA + +This is for a FISM or some other solar spectrum file. + + #EUV_DATA + UseEUVData (logical) + cEUVFile (string) + ## AURORAMODS This is for modifying the aurora a bit. The NormalizeAuroraToHP variable @@ -289,6 +214,15 @@ This is for using Pat Newells aurora (Ovation). UseNewellRemoveSpikes (logical) UseNewellAverage (logical) + +## IONPRECIPITATION + +You can only have an AMIE input file for this now. Make sure you put the +ions in the AMIE file!!! + + #IONPRECIPITATION + UseIonPrecipitation (logical) + ## OVATIONSME This is for using Betsy Michells aurora (OvationSME). @@ -353,6 +287,141 @@ below. AMIELatEnd (real) AMIEBoundaryWidth (real) +## ELECTRODYNAMICS + +Sets the time for updating the high-latitude (and low-latitude) +electrodynamic drivers, such as the potential and the aurora. + + #ELECTRODYNAMICS + DtPotential (real, seconds) + DtAurora (real, seconds) + +## INPUTTIMEDELAY + +Sets the time delay for the high latitude drivers and solar EUV inputs. + + #INPUTTIMEDELAY + TimeDelayHighLat (real, seconds) + TimeDelayEUV (real, seconds) + + +# Boundary and Initial Conditions + +## INITIAL + +This specifies the initial conditions and the lower boundary conditions. +For Earth, we typically just use MSIS and IRI for initial conditions. +For other planets, the vertical BCs can be set here. + + #INITIAL + UseMSIS (logical) + UseIRI (logical) + If UseMSIS is .false. then : + TempMin (real, bottom temperature) + TempMax (real, top initial temperature) + TempHeight (real, Height of the middle of temp gradient) + TempWidth (real, Width of the temperature gradient) + +## MSISTIDES + +This says how to use msis tides. The first one is using diurnal tide The +first one is using semi-diurnal tide The first one is using terdiurnal +tide + + #MSISTIDES + UseMSISDiurnal (logical) + UseMSISSemidiurnal (logical) + UseMSISTerdiurnal (logical) + +## MSISOBC + +UseOBCExperiment - use MSIS \[O\] BC shifted by 6 months Only applicable +for MSIS00! MsisOblateFactor - alt = alt \* (1.0-f/2 + f\*cos(lat)) - +seems like -0.1 works well + + #MSISOBC + UseOBCExperiment (logical) + MsisOblateFactor (real) + +## MSISOBC + +This toggles between using MSIS00 (false) and MSIS-2.1 (true) + + #MSISOBC + UseMsis21 (logical) + + +## TIDES + +This says how to use tides. The first one is using MSIS with no tides. +The second is using MSIS with full up tides. The third is using GSWM +tides, while the forth is for experimentation with using WACCM tides. + + #TIDES + UseMSISOnly (logical) + UseMSISTides (logical) + UseGSWMTides (logical) + UseWACCMTides (logical) + UseHmeTides (logical) + +## GSWMCOMP + +If you selected to use GSWM tides above, you can specify which +components to use. + + #GSWMCOMP + GSWMdiurnal(1) (logical) + GSWMdiurnal(2) (logical) + GSWMsemidiurnal(1) (logical) + GSWMsemidiurnal(2) (logical) + +## USEPERTURBATION + + #USEPERTURBATION + UsePerturbation (logical) + +## USEBCPERTURBATION + + #USEBCPERTURBATION + UseBcPerturbation (logical) + If UseBcPerturbation = .true. then: + iTypeBcPerturb (int) + perturbation characteristics ... + +## GITMBCS + + #GITMBCS + UseGitmBCs + GitmBCsDir + +# Numerics + + +## STATISTICALMODELSONLY + +This command will skip all pretty much all of the physics of GITM, and +will reinitialize the model with the MSIS and IRI values at the interval +set in the second variable. If you want to compare a run to MSIS and +IRI, you can run GITM with this command and get output at exactly the +same cadence and locations, thereby allowing easier comparisons. The dt +can be set as low as needed, so you can run satellites through MSIS and +IRI. + + #STATISTICALMODELSONLY + UseStatisticalModelsOnly (logical) + DtStatisticalModels (real) + +## CFL + +The CFL condition sets how close to the maximum time step that GITM will +take. 1.0 is the maximum value. A value of about 0.75 is typical. If +instabilities form, a lower value is probably needed. + + #CFL + cfl (real) + + + ## LIMITER The limiter is quite important. It is a value between 1.0 and 2.0, with @@ -388,25 +457,65 @@ code to sync up a LOT. ## IONLIMITS - #IONLIMITS - MaxVParallel (real, default=100 m/s) - MaxEField (real, default=0.1 V/m) - MinIonDensity (real, default=100 m^-3) + #IONLIMITS + MaxVParallel (real, default=100 m/s) + MaxEField (real, default=0.1 V/m) + MinIonDensity (real, default=100 m^-3) + +## PHOTOELECTRON + + #PHOTOELECTRON + PhotoElectronHeatingEfficiency (real) + +## NEUTRALHEATING + + #NEUTRALHEATING + NeutralHeatingEfficiency (real) + +## DON4SHACK + + #DON4SHACK + DoN4SHack (logical) + + +## VERTICALSOURCES + + #VERTICALSOURCES + MaximumVerticalVelocity (real) + +## AUSMSOLVER + + #AUSMSOLVER + Use AUSM Solver (logical) + + +## USEIMPLICITIONMOMENTUM + + #USEIMPLICITIONMOMENTUM + UseImplicitFieldAlignedMomentum (logical) + +## USEIMPROVEDIONADVECTION + + #USEIMPROVEDIONADVECTION + UseImprovedIonAdvection (logical) + UseNighttimeIonBCs (logical) + MinTEC (real) + +## USETESTVISCOSITY -## PHOTOELECTRON + #USETESTVISCOSITY + TestViscosityFactor (real) - #PHOTOELECTRON - PhotoElectronHeatingEfficiency (real) +## FIXEDDT -## NEUTRALHEATING +If you would like to force GITM to take a fixed dt you can use this. It +will try to take that fixed dt, unless the CFL condition is violated. - #NEUTRALHEATING - NeutralHeatingEfficiency (real) + #FIXEDDT + FixedDt (real) -## DON4SHACK +# Physics - #DON4SHACK - DoN4SHack (logical) ## THERMO @@ -432,15 +541,6 @@ code to sync up a LOT. ThermalConduction_AO (Conduction A(O): 5.6e-4, real) ThermalConduction_s (Conduction s: 0.75, real) -## VERTICALSOURCES - - #VERTICALSOURCES - MaximumVerticalVelocity (real) - -## AUSMSOLVER - - #AUSMSOLVER - Use AUSM Solver (logical) ## DIFFUSION @@ -472,23 +572,6 @@ larger than the second! DaysPerYearInput (real) DaysPerYearInput (real) -## USEIMPLICITIONMOMENTUM - - #USEIMPLICITIONMOMENTUM - UseImplicitFieldAlignedMomentum (logical) - -## USEIMPROVEDIONADVECTION - - #USEIMPROVEDIONADVECTION - UseImprovedIonAdvection (logical) - UseNighttimeIonBCs (logical) - MinTEC (real) - -## USETESTVISCOSITY - - #USETESTVISCOSITY - TestViscosityFactor (real) - ## DYNAMO #DYNAMO @@ -528,31 +611,88 @@ larger than the second! Sets whether to use a realistic magnetic field (T) or a dipole (F) -## ALTITUDE -For Earth, the AltMin is the only variable used here. The altitudes are -set to 0.3 times the scale height reported by MSIS, at the equator for -the specified F107 and F107a values. +# Misc - #ALTITUDE - AltMin (real, km) - AltMax (real, km) - UseStretchedAltitude (logical) +## CPUTIMEMAX -## GRID +This sets the maximum CPU time that the code should run before it starts +to write a restart file and end the simulation. It is very useful on +systems that have a queueing system and has limited time runs. +Typically, set it for a couple of minutes short of the max wall clock, +since it needs some time to write the restart files. -If LatStart and LatEnd are set to \< -90 and \> 90, respectively, then -GITM does a whole sphere. If not, it models between the two. If you want -to do 1-D, set nLons=1, nLats=1 in ModSizeGitm.f90, then recompile, then -set LatStart and LonStart to the point on the Globe you want to model. + #CPUTIMEMAX + CPUTimeMax (real) + + +## PAUSETIME + +This will set a time for the code to just pause. Really, this should +never be used. + + #PAUSETIME + iYear iMonth iDay iHour iMinute iSecond + +## ISTEP + +This is typically only specified in a restart header. If you specify it +in a start UAM.in it will start the counter to whatever you specify. + + #ISTEP + iStep (integer) + + + +## TSIMULATION + +This is typically only specified in a restart header. It sets the offset +from the starttime to the currenttime. Should really only be used with +caution. + + #TSIMULATION + tsimulation (real) + +## DUST + +This says whether you want seconds in output file name. F means no +seconds in output file name. + + #DUST + cDustFile + cConrathFile + +## OVERWRITEIONOSPHERE + + #OVERWRITEIONOSPHERE + DoOverwriteIonosphere + DoOverwriteWithIRI + DoOverwriteWithSami + SamiInFile + + + +## DUST + + #DUST + TauTot + Conrnu + +## DAMPING + +This is probably for damping vertical wind oscillations that can occur +in the lower atmosphere. + + #DAMPING + UseDamping (logical) + +## GRAVITYWAVE + +I dont know what this is for\... + + #GRAVITYWAVE + UseGravityWave (logical) - #GRID - nBlocksLon (integer) - nBlocksLat (integer) - LatStart (real) - LatEnd (real) - LonStart (real) - LonEnd (real) ## NEWSTRETCH @@ -584,70 +724,6 @@ set LatStart and LonStart to the point on the Globe you want to model. UseTopography (logical) AltMinUniform (real) -## RESTART - - #RESTART - DoRestart (logical) - -## PLOTTIMECHANGE - -This allows you to change the output cadence of the files for a limited -time. If you have an event then you can output much more often during -that event. - - #PLOTTIMECHANGE - yyyy mm dd hh mm ss ms (start) - yyyy mm dd hh mm ss ms (end) - -## APPENDFILES - -For satellite files, you can have one single file per satellite, instead -of one for every output. This makes GITM output significantly less -files. It only works for satellite files now. - - #APPENDFILES - DoAppendFiles (logical) - -## CCMCFILENAME - -Typicaly file is named (e.g.) 1DALL_yymmdd_hhmmss.bin With this it will -be named 1DALL_GITM_yyyy-mm-ddThh-mm-ss.bin - - #CCMCFILENAME - UseCCMCFileName (logical) - -## SAVEPLOT - -The DtRestart variable sets the time in between writing full restart -files to the UA/restartOUT directory.\ -This sets the output files. The most common type is 3DALL, which outputs -all primary state variables. Types include : 3DALL, 3DNEU, 3DION, 3DTHM, -3DCHM, 3DUSR, 3DGLO, 2DGEL, 2DMEL, 2DUSR, 1DALL, 1DGLO, 1DTHM, 1DNEW, -1DCHM, 1DCMS, 1DUSR. DtPlot sets the frequency of output - - #SAVEPLOT - DtRestart (real, seconds) - nOutputTypes (integer) - Outputtype (string, 3D, 2D, ION, NEUTRAL, ...) - DtPlot (real, seconds) - -## SAVEHIMEPLOT - - #SAVEHIMEPLOT - HIMEPlotLonStart (real) - HIMEPlotLonEnd (real) - HIMEPlotLatStart (real) - HIMEPlotLatEnd (real) - -## SATELLITES - - #SATELLITES - nSats (integer - max = ', nMaxSats, ') - SatFile1 (string) - SatOutputtype1 (string, 0DUSR or 1DUSR or other) - DtPlot1 (real, seconds) - etc... - ## RCMR #RCMR @@ -664,62 +740,10 @@ all primary state variables. Types include : 3DALL, 3DNEU, 3DION, 3DTHM, #DART useDART (integer, {default 0=no}, 1=master ensemble member, 2=slave ens.) -## ELECTRODYNAMICS - -Sets the time for updating the high-latitude (and low-latitude) -electrodynamic drivers, such as the potential and the aurora. - - #ELECTRODYNAMICS - DtPotential (real, seconds) - DtAurora (real, seconds) - -## INPUTTIMEDELAY - -Sets the time delay for the high latitude drivers and solar EUV inputs. - - #INPUTTIMEDELAY - TimeDelayHighLat (real, seconds) - TimeDelayEUV (real, seconds) ## LTERadiation #LTERadiation DtLTERadiation (real) -## IONPRECIPITATION - -You can only have an AMIE input file for this now. Make sure you put the -ions in the AMIE file!!! - - #IONPRECIPITATION - UseIonPrecipitation (logical) - -## LOGFILE - -You really want a log file. They are very important. It is output in -UA/data/log\*.dat. You can output the log file at whatever frequency you -would like, but if you set dt to some very small value, you will get an -output every iteration, which is probably a good thing. - - #LOGFILE - DtLogFile (real, seconds) - -## EUV_DATA - -If EUVAC = true, use EUVAC Model If Tobiska = true, use Tobiska91 Model -If both are true, average them together If UseAboveHigh, then extend the -spectrum to the longer wavelengths If UseBelowLow, then extend the -spectrum to the shorter wavelengths - - #EUV_DATA - UseEUVData (logical) - cEUVFile (string) - -## EUV_DATA - -This is for a FISM or some other solar spectrum file. - - #EUV_DATA - UseEUVData (logical) - cEUVFile (string) From 6f87930827291b6e1a3175ce34f4172d0d76dcdc Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 15 Jul 2025 14:47:04 -0400 Subject: [PATCH 099/120] DOC: change layout of set_inputs; fixes TOC in sidebar --- srcDoc/set_inputs.md | 174 ++++++++++++++++++++++--------------------- 1 file changed, 88 insertions(+), 86 deletions(-) diff --git a/srcDoc/set_inputs.md b/srcDoc/set_inputs.md index 83e30c63..e2c9f46c 100644 --- a/srcDoc/set_inputs.md +++ b/srcDoc/set_inputs.md @@ -2,7 +2,9 @@ -## STARTTIME +## General Configuration + +### STARTTIME This sets the starting time of the simulation. Even when you restart, the starttime should be to the real start time, not the restart time. @@ -15,7 +17,7 @@ the starttime should be to the real start time, not the restart time. iMinute (integer) iSecond (integer) -## ENDTIME +### ENDTIME This sets the ending time of the simulation. @@ -28,18 +30,18 @@ This sets the ending time of the simulation. iSecond (integer) -## ALTITUDE +### ALTITUDE For Earth, the AltMin is the only variable used here. The altitudes are set to 0.3 times the scale height reported by MSIS, at the equator for -the specified F107 and F107a values. +the specified F107 and F107a values.` #ALTITUDE AltMin (real, km) AltMax (real, km) UseStretchedAltitude (logical) -## GRID +### GRID If LatStart and LatEnd are set to \< -90 and \> 90, respectively, then GITM does a whole sphere. If not, it models between the two. If you want @@ -55,12 +57,12 @@ set LatStart and LonStart to the point on the Globe you want to model. LonEnd (real) -## RESTART +### RESTART #RESTART DoRestart (logical) -## SAVEPLOT +### SAVEPLOT The DtRestart variable sets the time in between writing full restart files to the UA/restartOUT directory.\ @@ -75,7 +77,7 @@ all primary state variables. Types include : 3DALL, 3DNEU, 3DION, 3DTHM, Outputtype (string, 3D, 2D, ION, NEUTRAL, ...) DtPlot (real, seconds) -## PLOTTIMECHANGE +### PLOTTIMECHANGE This allows you to change the output cadence of the files for a limited time. If you have an event then you can output much more often during @@ -86,7 +88,7 @@ that event. yyyy mm dd hh mm ss ms (end) -## LOGFILE +### LOGFILE You really want a log file. They are very important. It is output in UA/data/log\*.dat. You can output the log file at whatever frequency you @@ -96,7 +98,7 @@ output every iteration, which is probably a good thing. #LOGFILE DtLogFile (real, seconds) -## CCMCFILENAME +### CCMCFILENAME Typicaly file is named (e.g.) 1DALL_yymmdd_hhmmss.bin With this it will be named 1DALL_GITM_yyyy-mm-ddThh-mm-ss.bin @@ -105,7 +107,7 @@ be named 1DALL_GITM_yyyy-mm-ddThh-mm-ss.bin UseCCMCFileName (logical) -## SAVEHIMEPLOT +### SAVEHIMEPLOT #SAVEHIMEPLOT HIMEPlotLonStart (real) @@ -113,7 +115,7 @@ be named 1DALL_GITM_yyyy-mm-ddThh-mm-ss.bin HIMEPlotLatStart (real) HIMEPlotLatEnd (real) -## SATELLITES +### SATELLITES #SATELLITES nSats (integer - max = ', nMaxSats, ') @@ -123,7 +125,7 @@ be named 1DALL_GITM_yyyy-mm-ddThh-mm-ss.bin etc... -## APPENDFILES +### APPENDFILES For satellite files, you can have one single file per satellite, instead of one for every output. This makes GITM output significantly less @@ -132,9 +134,9 @@ files. It only works for satellite files now. #APPENDFILES DoAppendFiles (logical) -# Drivers +## Drivers -## F107 +### F107 Sets the F10.7 and 81 day average F10.7. This is used to set the initial altitude grid, and drive the lower boundary conditions. @@ -143,7 +145,7 @@ altitude grid, and drive the lower boundary conditions. f107 (real) f107a (real - 81 day average of f107) -## HPI +### HPI This sets the hemispheric power of the aurora. Typical it ranges from 1-1000, although 20 is a nominal, quiet time value. @@ -151,7 +153,7 @@ This sets the hemispheric power of the aurora. Typical it ranges from #HPI HemisphericPower (real) -## KP +### KP I dont think that GITM actually uses this unless the Foster electric field model is used. @@ -160,7 +162,7 @@ field model is used. kp (real) -## SOLARWIND +### SOLARWIND This sets the driving conditions for the high-latitude electric field models. This is static for the whole run, though. It is better to use @@ -172,7 +174,7 @@ the MHD_INDICES command to have dynamic driving conditions. bz (real) vx (real) -## MHD_INDICES +### MHD_INDICES Use this for dynamic IMF and solar wind conditions. The exact format of the file is discussed further in the manual. @@ -180,7 +182,7 @@ the file is discussed further in the manual. #MHD_INDICES filename (string) -## EUV_DATA +### EUV_DATA This is for a FISM or some other solar spectrum file. @@ -188,7 +190,7 @@ This is for a FISM or some other solar spectrum file. UseEUVData (logical) cEUVFile (string) -## AURORAMODS +### AURORAMODS This is for modifying the aurora a bit. The NormalizeAuroraToHP variable calculates the modeled hemispheric power and then normalizes it the @@ -202,7 +204,7 @@ AuroraKappa - kappa to use in the distribution IsKappaAurora (logical) AuroraKappa (real) -## NEWELLAURORA +### NEWELLAURORA This is for using Pat Newells aurora (Ovation). @@ -215,7 +217,7 @@ This is for using Pat Newells aurora (Ovation). UseNewellAverage (logical) -## IONPRECIPITATION +### IONPRECIPITATION You can only have an AMIE input file for this now. Make sure you put the ions in the AMIE file!!! @@ -223,7 +225,7 @@ ions in the AMIE file!!! #IONPRECIPITATION UseIonPrecipitation (logical) -## OVATIONSME +### OVATIONSME This is for using Betsy Michells aurora (OvationSME). @@ -233,28 +235,28 @@ This is for using Betsy Michells aurora (OvationSME). UseOvationSMEWave (logical) UseOvationSMEIon (logical) -## AEMODEL +### AEMODEL This is for using Dongjies aurora. #AEMODEL UseAeModel (logical) -## FTAMODEL +### FTAMODEL This is for using the FTA Model of the aurora. #FTAMODEL UseFtaModel (logical) -## FANGENERGY +### FANGENERGY This is for using Dongjies aurora. #FANGENERGY UseFangEnergyDeposition (logical) -## USECUSP +### USECUSP This is for specifying a cusp. @@ -263,13 +265,13 @@ This is for specifying a cusp. CuspAveE (real) CuspEFlux (real) -## AMIEFILES +### AMIEFILES #AMIEFILES cAMIEFileNorth (string) cAMIEFileSouth (string) -## USEREGIONALAMIE +### USEREGIONALAMIE This is to set up a local region with specified potential from AMIE files. Use Weimer potential elsewhere. AMIEBoundaryWidth is padded @@ -287,7 +289,7 @@ below. AMIELatEnd (real) AMIEBoundaryWidth (real) -## ELECTRODYNAMICS +### ELECTRODYNAMICS Sets the time for updating the high-latitude (and low-latitude) electrodynamic drivers, such as the potential and the aurora. @@ -296,7 +298,7 @@ electrodynamic drivers, such as the potential and the aurora. DtPotential (real, seconds) DtAurora (real, seconds) -## INPUTTIMEDELAY +### INPUTTIMEDELAY Sets the time delay for the high latitude drivers and solar EUV inputs. @@ -305,9 +307,9 @@ Sets the time delay for the high latitude drivers and solar EUV inputs. TimeDelayEUV (real, seconds) -# Boundary and Initial Conditions +## Boundary and Initial Conditions -## INITIAL +### INITIAL This specifies the initial conditions and the lower boundary conditions. For Earth, we typically just use MSIS and IRI for initial conditions. @@ -322,7 +324,7 @@ For other planets, the vertical BCs can be set here. TempHeight (real, Height of the middle of temp gradient) TempWidth (real, Width of the temperature gradient) -## MSISTIDES +### MSISTIDES This says how to use msis tides. The first one is using diurnal tide The first one is using semi-diurnal tide The first one is using terdiurnal @@ -333,7 +335,7 @@ tide UseMSISSemidiurnal (logical) UseMSISTerdiurnal (logical) -## MSISOBC +### MSISOBC UseOBCExperiment - use MSIS \[O\] BC shifted by 6 months Only applicable for MSIS00! MsisOblateFactor - alt = alt \* (1.0-f/2 + f\*cos(lat)) - @@ -343,7 +345,7 @@ seems like -0.1 works well UseOBCExperiment (logical) MsisOblateFactor (real) -## MSISOBC +### MSISOBC This toggles between using MSIS00 (false) and MSIS-2.1 (true) @@ -351,7 +353,7 @@ This toggles between using MSIS00 (false) and MSIS-2.1 (true) UseMsis21 (logical) -## TIDES +### TIDES This says how to use tides. The first one is using MSIS with no tides. The second is using MSIS with full up tides. The third is using GSWM @@ -364,7 +366,7 @@ tides, while the forth is for experimentation with using WACCM tides. UseWACCMTides (logical) UseHmeTides (logical) -## GSWMCOMP +### GSWMCOMP If you selected to use GSWM tides above, you can specify which components to use. @@ -375,12 +377,12 @@ components to use. GSWMsemidiurnal(1) (logical) GSWMsemidiurnal(2) (logical) -## USEPERTURBATION +### USEPERTURBATION #USEPERTURBATION UsePerturbation (logical) -## USEBCPERTURBATION +### USEBCPERTURBATION #USEBCPERTURBATION UseBcPerturbation (logical) @@ -388,16 +390,16 @@ components to use. iTypeBcPerturb (int) perturbation characteristics ... -## GITMBCS +### GITMBCS #GITMBCS UseGitmBCs GitmBCsDir -# Numerics +## Numerics -## STATISTICALMODELSONLY +### STATISTICALMODELSONLY This command will skip all pretty much all of the physics of GITM, and will reinitialize the model with the MSIS and IRI values at the interval @@ -411,7 +413,7 @@ IRI. UseStatisticalModelsOnly (logical) DtStatisticalModels (real) -## CFL +### CFL The CFL condition sets how close to the maximum time step that GITM will take. 1.0 is the maximum value. A value of about 0.75 is typical. If @@ -422,7 +424,7 @@ instabilities form, a lower value is probably needed. -## LIMITER +### LIMITER The limiter is quite important. It is a value between 1.0 and 2.0, with 1.0 being more diffuse and robust, and 2.0 being less diffuse, but less @@ -432,14 +434,14 @@ robust. TypeLimiter (string) BetaLimiter (real between 1.0-minmod and 2.0-mc) -## NANCHECK +### NANCHECK This will turn on all of the NaN checks in the code! #NANCHECK DoCheckForNans (logical) -## DEBUG +### DEBUG This will set how much information the code screams at you - set to 0 to get minimal, set to 10 to get EVERYTHING. You can also change which @@ -455,58 +457,58 @@ code to sync up a LOT. DtReport (real) UseBarriers (logical) -## IONLIMITS +### IONLIMITS #IONLIMITS MaxVParallel (real, default=100 m/s) MaxEField (real, default=0.1 V/m) MinIonDensity (real, default=100 m^-3) -## PHOTOELECTRON +### PHOTOELECTRON #PHOTOELECTRON PhotoElectronHeatingEfficiency (real) -## NEUTRALHEATING +### NEUTRALHEATING #NEUTRALHEATING NeutralHeatingEfficiency (real) -## DON4SHACK +### DON4SHACK #DON4SHACK DoN4SHack (logical) -## VERTICALSOURCES +### VERTICALSOURCES #VERTICALSOURCES MaximumVerticalVelocity (real) -## AUSMSOLVER +### AUSMSOLVER #AUSMSOLVER Use AUSM Solver (logical) -## USEIMPLICITIONMOMENTUM +### USEIMPLICITIONMOMENTUM #USEIMPLICITIONMOMENTUM UseImplicitFieldAlignedMomentum (logical) -## USEIMPROVEDIONADVECTION +### USEIMPROVEDIONADVECTION #USEIMPROVEDIONADVECTION UseImprovedIonAdvection (logical) UseNighttimeIonBCs (logical) MinTEC (real) -## USETESTVISCOSITY +### USETESTVISCOSITY #USETESTVISCOSITY TestViscosityFactor (real) -## FIXEDDT +### FIXEDDT If you would like to force GITM to take a fixed dt you can use this. It will try to take that fixed dt, unless the CFL condition is violated. @@ -514,10 +516,10 @@ will try to take that fixed dt, unless the CFL condition is violated. #FIXEDDT FixedDt (real) -# Physics +## Physics -## THERMO +### THERMO #THERMO UseSolarHeating (logical) @@ -529,12 +531,12 @@ will try to take that fixed dt, unless the CFL condition is violated. UseTurbulentCond (logical) UseIRHeating (logical) -## THERMALDIFFUSION +### THERMALDIFFUSION #THERMALDIFFUSION KappaTemp0 (thermal conductivity, real) -## THERMALCONDUCTION +### THERMALCONDUCTION #THERMALCONDUCTION ThermalConduction_AO2 (Conduction A(O2): 3.6e-4, real) @@ -542,7 +544,7 @@ will try to take that fixed dt, unless the CFL condition is violated. ThermalConduction_s (Conduction s: 0.75, real) -## DIFFUSION +### DIFFUSION If you use eddy diffusion, you must specify two pressure levels - under the first, the eddy diffusion is constant. Between the first and the @@ -555,7 +557,7 @@ larger than the second! EddyDiffusionPressure0 (real) EddyDiffusionPressure1 (real) -## FORCING +### FORCING #FORCING UsePressureGradient (logical) @@ -565,14 +567,14 @@ larger than the second! UseCoriolis (logical) UseGravity (logical) -## MODIFYPLANET +### MODIFYPLANET #MODIFYPLANET RotationPeriodInput (real) DaysPerYearInput (real) DaysPerYearInput (real) -## DYNAMO +### DYNAMO #DYNAMO UseDynamo (logical) @@ -582,7 +584,7 @@ larger than the second! IncludeCowling (logical) DynamoLonAverage (real) -## IONFORCING +### IONFORCING #IONFORCING UseExB (logical) @@ -590,12 +592,12 @@ larger than the second! UseIonGravity (logical) UseNeutralDrag (logical) -## FIXTILT +### FIXTILT #FIXTILT IsFixedTilt (logical) -## DIPOLE +### DIPOLE #DIPOLE MagneticPoleRotation (real) @@ -604,7 +606,7 @@ larger than the second! yDipoleCenter (real) zDipoleCenter (real) -## APEX +### APEX #APEX UseApex (logical) @@ -612,9 +614,9 @@ larger than the second! field (T) or a dipole (F) -# Misc +## Misc -## CPUTIMEMAX +### CPUTIMEMAX This sets the maximum CPU time that the code should run before it starts to write a restart file and end the simulation. It is very useful on @@ -626,7 +628,7 @@ since it needs some time to write the restart files. CPUTimeMax (real) -## PAUSETIME +### PAUSETIME This will set a time for the code to just pause. Really, this should never be used. @@ -634,7 +636,7 @@ never be used. #PAUSETIME iYear iMonth iDay iHour iMinute iSecond -## ISTEP +### ISTEP This is typically only specified in a restart header. If you specify it in a start UAM.in it will start the counter to whatever you specify. @@ -644,7 +646,7 @@ in a start UAM.in it will start the counter to whatever you specify. -## TSIMULATION +### TSIMULATION This is typically only specified in a restart header. It sets the offset from the starttime to the currenttime. Should really only be used with @@ -653,7 +655,7 @@ caution. #TSIMULATION tsimulation (real) -## DUST +### DUST This says whether you want seconds in output file name. F means no seconds in output file name. @@ -662,7 +664,7 @@ seconds in output file name. cDustFile cConrathFile -## OVERWRITEIONOSPHERE +### OVERWRITEIONOSPHERE #OVERWRITEIONOSPHERE DoOverwriteIonosphere @@ -672,13 +674,13 @@ seconds in output file name. -## DUST +### DUST #DUST TauTot Conrnu -## DAMPING +### DAMPING This is probably for damping vertical wind oscillations that can occur in the lower atmosphere. @@ -686,7 +688,7 @@ in the lower atmosphere. #DAMPING UseDamping (logical) -## GRAVITYWAVE +### GRAVITYWAVE I dont know what this is for\... @@ -694,7 +696,7 @@ I dont know what this is for\... UseGravityWave (logical) -## NEWSTRETCH +### NEWSTRETCH #NEWSTRETCH Poleward Edge of Stretch Region (real, degrees) @@ -706,7 +708,7 @@ I dont know what this is for\... 5.0 ! Width of stretched region 0.6 ! Amount of stretch 0 (none) to 1 (lots) -## STRETCH +### STRETCH #STRETCH ConcentrationLatitude (real, degrees) @@ -718,13 +720,13 @@ I dont know what this is for\... 0.0 ! Amount of stretch 0 (none) to 1 (lots) 1.0 -## TOPOGRAPHY +### TOPOGRAPHY #TOPOGRAPHY UseTopography (logical) AltMinUniform (real) -## RCMR +### RCMR #RCMR Input data type to assimilate (RHO/VTEC) @@ -735,13 +737,13 @@ I dont know what this is for\... 2nd satellite index to assimilate etc... -## DART +### DART #DART useDART (integer, {default 0=no}, 1=master ensemble member, 2=slave ens.) -## LTERadiation +### LTERadiation #LTERadiation DtLTERadiation (real) From c790fd1ebf0be6ecc940f690713195a7e1ef0174 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 15 Jul 2025 14:50:57 -0400 Subject: [PATCH 100/120] DOC: Add plotters.md to doc site --- mkdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/mkdocs.yml b/mkdocs.yml index b48d44f2..3636d51f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -74,6 +74,7 @@ nav: - Outputs: - Postprocessing: postprocessing.md - Available Outputs: outputs.md + - Plotting Outputs: plotters.md - Internals: - Overview: internals/overview.md - Grid: internals/grid.md From 987987a32d2f0f127521ba7e44c84249ef42eff3 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 15 Jul 2025 14:51:22 -0400 Subject: [PATCH 101/120] DOC: Fix link to `auroramods` page --- srcDoc/internals/electrodynamics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcDoc/internals/electrodynamics.md b/srcDoc/internals/electrodynamics.md index 4250b21e..7e6c7898 100644 --- a/srcDoc/internals/electrodynamics.md +++ b/srcDoc/internals/electrodynamics.md @@ -84,7 +84,7 @@ Some notes on the different auroral types: OVATION & MAGNIT (AMIE) can provide other than electron diffuse aurora. - `AllowAurWODiffuse` was added for stability with OVATION-Prime; it restricts mono/wave/ion aurora to only exist in locations which also contain electron -diffuse aurora. This can be set in [`#AURORAMODS`](../common_inputs.md#auroramods) +diffuse aurora. This can be set in [`#AURORAMODS`](../set_inputs.md#auroramods) Internally, GITM represents Monoenergetic and Wave/broadband aurora with a gaussian centered at the average energy. From 119b4d3e094fd4a748ca947608819c09916e0e7e Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Tue, 15 Jul 2025 14:55:26 -0400 Subject: [PATCH 102/120] remove todo lists from docs pages --- srcDoc/internals/chemistry.md | 9 +-------- srcDoc/outputs.md | 13 ------------- 2 files changed, 1 insertion(+), 21 deletions(-) diff --git a/srcDoc/internals/chemistry.md b/srcDoc/internals/chemistry.md index d79289e4..275fdb03 100644 --- a/srcDoc/internals/chemistry.md +++ b/srcDoc/internals/chemistry.md @@ -2,14 +2,7 @@ Chemical reactions in GITM for Earth -Some things we may want #todo: - -- label each reaction; like half are currently labeled -- Add refs to each so we can link to them? will be a lot of work. -- make sure everything is actually ref'd and used -- we can make an `Earth` folder, so this doesn't appear to be the only chemistry - option. - +--- ```math \begin{align} diff --git a/srcDoc/outputs.md b/srcDoc/outputs.md index ccc70f20..2a8deb44 100644 --- a/srcDoc/outputs.md +++ b/srcDoc/outputs.md @@ -1,18 +1,5 @@ # Outputs {#outputs.sec} -#TODO: - -- [ ] Fix the links -- [ ] remove idl code -- [ ] probably(?) remove the python stuff too -- [ ] Fix and/or remove images -- [ ] Update the log file -- [ ] update with other output types: - - [ ] 3D*, 2D* - - [ ] satellite outputs - - [ ] empirical models only! - - Now that you have managed to successfully complete a GITM run you've found yourself with a bunch of output files. All of the GITM output is in mks units and this data is contained within several files located in From 1e2ca5f4fa9996d09b66bbf1483e0024612d769b Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 23 Jul 2025 17:54:33 -0400 Subject: [PATCH 103/120] MAINT: Create version file in src/.version so the code knows what version it is gitstatus.txt is created & used to determine whether we need to re-compile ModGitmVersio . Saves a ton of time! Otherwise, ModGITMVersion & output_common.f90 are re-compiled every time --- .gitignore | 3 +- Makefile | 5 +-- share/Scripts/Makeversion.sh | 76 ++++++++++++++++++++++++++++++++++++ version.def | 17 ++++++++ 4 files changed, 97 insertions(+), 4 deletions(-) create mode 100755 share/Scripts/Makeversion.sh create mode 100644 version.def diff --git a/.gitignore b/.gitignore index 3941664d..a77757fe 100644 --- a/.gitignore +++ b/.gitignore @@ -61,4 +61,5 @@ ext/ share/component_share util/component_util -src/.version \ No newline at end of file +src/.version +gitstatus.txt \ No newline at end of file diff --git a/Makefile b/Makefile index 82f4124b..029597bc 100644 --- a/Makefile +++ b/Makefile @@ -37,9 +37,7 @@ NOMPI: @cd ${NOMPIDIR}; make LIB VERSION: - printf 'character(25), parameter :: GitmVersion = "%s.%s"\n' \ - "$$(git log -1 --date=format:'%Y%m%d' --pretty='format:%ad')" \ - "$$(git status --porcelain | grep -v '^??' | wc -l | cut -f1 -d' ')" > src/.version + ./share/Scripts/Makeversion.sh @echo GITM: @@ -87,6 +85,7 @@ clean: if [ -d util ]; then cd util; make --no-print-directory cleanall; fi; if [ -d srcSAMI ]; then cd srcSAMI; make --no-print-directory clean; fi; if [ -d $(EIEDIR) ]; then cd $(EIEDIR); make --no-print-directory cleanall; fi; + if [ -f src/.version ]; then rm src/.version; fi distclean: diff --git a/share/Scripts/Makeversion.sh b/share/Scripts/Makeversion.sh new file mode 100755 index 00000000..8fde3ecd --- /dev/null +++ b/share/Scripts/Makeversion.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +# This file writes some 'version' info about GITM to a file +# The file is located in src/.version and is compiled into GITM. +# This info is then written out to run_information.txt. + +## Function we call if .git folder exists, and $(git status) has changed from last time +writegitversion(){ + # This is the float-type version placed in output files + # Format is (date of last commit).(# of files changed from HEAD) + printf 'character(25), parameter :: GitmVersion = & \n "%s.%s"\n' \ + "$(git log -1 --date=format:'%Y%m%d' --pretty='format:%ad')" \ + "$(git status --porcelain | grep -v '^??' | wc -l | cut -f1 -d' ')" > src/.version + + + # The "GitmVersionFull" variable has info about the last commit hash in addition to above + printf '\ncharacter(50), parameter :: GitmVersionFull = "%s_%s.%s"\n\n' \ + "$(git rev-parse --abbrev-ref HEAD)" \ + "$(git log -1 --date=format:'%Y%m%d' --pretty='format:%h-%ad')" \ + "$(git status --porcelain | grep -v '^??' | wc -l | cut -f1 -d' ')" >> src/.version + + # Same as above, but for Electrodynamics + printf '\ncharacter(50), parameter :: ElectrodynamicsVersionFull = "%s_%s.%s"\n\n' \ + "$(git -C ext/Electrodynamics rev-parse --abbrev-ref HEAD)" \ + "$(git -C ext/Electrodynamics log -1 --date=format:'%Y%m%d' --pretty='format:%h-%ad')" \ + "$(git -C ext/Electrodynamics status --porcelain | grep -v '^??' | wc -l | cut -f1 -d' ')" \ + >> src/.version + + + # Here, for completeness, all of the changes files are listed. + printf 'character(*), parameter :: DifferentFilesGitm = &\n"' >> src/.version + + files=$(git status --porcelain | awk '{print $NF}') + for file in $files; do + echo "$file,&" >> src/.version + done + echo '"'>> src/.version + + printf 'character(*), parameter :: DifferentFilesElectrodyunamics = &\n"' >> src/.version + + files=$(git -C ext/Electrodynamics status --porcelain | awk '{print $NF}') + for file in $files; do + echo "$file,&" >> src/.version + done + echo '"'>> src/.version +} + +################ +## MAIN ## +################ + +if [ -d .git ]; then # Check if .git/ directory exists + + # check to see if git status has changed, saves time compiling if not + nFilesDiff=$(git status --porcelain | wc -l) + if [ -f gitstatus.txt ]; then + nFilesPrev=$(wc -l < gitstatus.txt) + else # Our first time here... + nFilesPrev=0 + fi + + if [ $nFilesDiff == $nFilesPrev ] && [ -f src/.version ]; then + echo "Version has not changed since last compile: $(head -n 2 src/.version | tail -n 1)" + exit 0 + else + writegitversion + git status --porcelain > gitstatus.txt + echo "Writing GITM version to file: $(head -n 2 src/.version | tail -n 1)" + + fi + +else # if .git/ does not exist, this is probably a release + cp version.def src/.version + echo "Wrote version file for GITM: $(head -n 2 src/.version | tail -n 1)" +fi + diff --git a/version.def b/version.def new file mode 100644 index 00000000..2ae84e26 --- /dev/null +++ b/version.def @@ -0,0 +1,17 @@ +character(25), parameter :: GitmVersion = & + "20250723.0" + +character(50), parameter :: GitmVersionFull = "main-release_" // GitmVersion + + +character(50), parameter :: ElectrodynamicsVersionFull = GitmVersionFull + +character(*), parameter :: DifferentFilesGitm = & +"none" +character(*), parameter :: DifferentFilesElectrodyunamics = & +"none" + + +! This file contains version information for cases where the user has downloaded a +! "release" of GITM. Since there is no .git/ folder, we cannot extract git information. +! -> The date should be changed upon making a new release. From 55661649c8ba80d9c846c8db2076733fd0ac0bd8 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 23 Jul 2025 18:08:32 -0400 Subject: [PATCH 104/120] DOC: add a little doc on versions --- srcDoc/devstuff/devhome.md | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/srcDoc/devstuff/devhome.md b/srcDoc/devstuff/devhome.md index 6f2542e6..c8d6da18 100644 --- a/srcDoc/devstuff/devhome.md +++ b/srcDoc/devstuff/devhome.md @@ -32,14 +32,24 @@ mkdocs serve And it should be auto-magic. open the link in your browser. -## To Do list for documentation +## Versioning -Feel free to add to this +GITM now builds the code version into the executable automatically. This is sourced +from `src/.version` within `src/ModGITMVersion.f90`. -- [ ] Section on FAQ? -- [ ] More on internals: - - [ ] Electrodynamics section! - - [ ] Better info in common inputs? -- [ ] GitHub walkthrough in dev section -- [ ] some way to auto-update outline? -- [ ] more more more! +The version file is created when compiling, and checked every time the code is compiled. +If the number of files that are different from HEAD changes, the version is updated. +In practice this means that if the number of lines output from +`git status --porcelain` changes, the version is updated. + +The version has information on the last commit date, the branch, the last commit hash, +and the number of files changed since the last commit. This should provide enough +information to track down any kinds of bugs or to ensure that results can be traced +back to a certain state of the code. + +The file is created in the last step of compiling by the shell script +`share/Scripts/Makeversion.sh`. + +If the `.git` folder does not exist (so the code was downloaded as a .zip from GitHub), +the version info is taken from `version.def` at the root folder. This should be updated +whenever the code is released. From 0837ca6916bff7586028e1eee57be1660ccbb93e Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Thu, 24 Jul 2025 12:51:13 -0400 Subject: [PATCH 105/120] BUG: deallocate ColumnIntegralRho, issue #63 --- src/ModGITM.f90 | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ModGITM.f90 b/src/ModGITM.f90 index b7640d6b..6cd4c015 100644 --- a/src/ModGITM.f90 +++ b/src/ModGITM.f90 @@ -289,6 +289,7 @@ subroutine clean_mod_gitm deallocate(dAltDLon_CB) deallocate(dAltDLat_CB) deallocate(Rho) + deallocate(ColumnIntegralRho) deallocate(Temperature) deallocate(Pressure) deallocate(NDensity) From 79cd160003a018df4027d775a723e6f5bc0e8ed1 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Thu, 24 Jul 2025 13:26:31 -0400 Subject: [PATCH 106/120] DOC: address Sree's comments & format home page of the documentation --- srcDoc/index.md | 72 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 55 insertions(+), 17 deletions(-) diff --git a/srcDoc/index.md b/srcDoc/index.md index e793e88f..f9227c9f 100644 --- a/srcDoc/index.md +++ b/srcDoc/index.md @@ -1,14 +1,24 @@ # Introduction -The Global Ionosphere Thermosphere Model (GITM) is a 3D model of the ionosphere and thermosphere that has been applied to Earth, Venus, Mars, Jupiter, and the moon Titan. The main repository for GITM can be found on [github](https://github.com/GITMCode/GITM). The first paper describing GITM is [here](https://www.sciencedirect.com/science/article/pii/S1364682606000071). +The Global Ionosphere Thermosphere Model (GITM) is a 3D model of the ionosphere and +thermosphere that has been applied to Earth, Venus, Mars, Jupiter, and Saturn's moon +Titan. The main repository for GITM is available on +[GitHub](https://github.com/GITMCode/GITM). The first paper describing GITM is +[here](https://www.sciencedirect.com/science/article/pii/S1364682606000071). ## Quick Start -If you have some expertise in downloading, compiling, and running codes, this is a good place to start. +If you have are confident downloading, compiling, and running codes, this is a good +place to start. A more detailed explanation can be found on the +[installation page](install.md). -Dependencies: fortran (assuming gfortran), mpi (mpich doesn't seem to work), make, perl (we are old school!), and python. +Dependencies: fortran (assuming gfortran), mpi (mpich doesn't seem to work), make, perl +(we are old school!), and python 3+. The version should not matter as long as it is +relatively recent. + +Download, configure, and run (`gfortran10` is for any gfortran version 10 or higher, +for versions 9 and lower just use `-compiler=gfortran`): -Download, configure, and run ('gfortran10' is for any gfortran version 10 or higher): ```bash git clone https://github.com/GITMCode/GITM.git cd GITM @@ -25,31 +35,59 @@ Then to produce a plot: cd UA/data python3 ../../../srcPython/gitm_plot_simple.py -alt=250 -var=3 *bin ``` -This should produce two png files showing the density across the globe at about 250 km altitude. This is a relatively simple plotter that will make cuts in altitude, latitude, and longitude. They are quite basic, but this should provide some framework for reading in GITM files and visualizing the results. More complex plotters exist. Some of these are described in [this document](plotters.md). +This should produce two png files showing the density across the globe at about 250 km +altitude. This is a relatively simple plotter that will make cuts in altitude, +latitude, and longitude. They are quite basic, but this should provide some framework +for reading in GITM files and visualizing the results. More complex plotters exist, +and dome of these are described in [this document](plotters.md). ## A Bit More Explaination -GITM is a fortran code that uses the message passing interface (MPI) to run on multiple processors, hence the need for a fortran compiler and MPI. If the code compiles correctly, then the biggest issue is setting up the run. +GITM is a fortran code that uses the message passing interface (MPI) to run on multiple +processors, hence the need for a fortran compiler and MPI. If the code compiles +correctly, then the biggest issue is setting up the run. + +GITM can create a run directory for you, so you don't have to worry about the executable +and input files and everything being in the right place - it does it for you with the +'make rundir' command. This will create a directory called 'run'. You can move this +directory to where ever you want. Often the run directory is moved to a scratch disk +and renamed. For example: -GITM can create a run directory for you, so you don't have to worry about the executable and input files and everything being in the right place - it does it for you with the 'make rundir' command. This will create a directory called 'run'. You can move this directory to where ever you want. Often the run directory is moved to a scratch disk and renamed. For example: ```bash mv run /scratchdisk/mydirectory/run.gitm.event01 ln -s /scratchdisk/mydirectory/run.gitm.event01 . ``` -Then, within this directory, there is a file called 'UAM.in', which is what GITM reads to set all of its parameters. This is an extremely brief description of settings within the file - to understand more, please read the manual! Within this file, there are several things that need to be altered when running GITM: +Then, within this directory, there is a file called 'UAM.in', which is what GITM reads +to set all of its parameters. -- Start time, given as year, month, day, hour, minute, second. -- End time, given as year, month, day, hour, minute, second. -- The grid, given as start and end latitude, start and end longitude, and the number of blocks (processors) to use in latitude and longitude. [See this grid description for more.](internals/grid.md). -- Save plots, telling what type of plots to output (3DALL by default) and how often (300s = 5 minutes). Ignore the restarts unless you know what you are doing. -- MHD_Indices - this is the IMF file that tells the high-latitude electrodynamics the IMF and solar wind. There are instructions in the UAM.in file on producing a file. -- SME_Indices - this is the AE file that tells the auroral precipitation model how to work. There are instructions in the UAM.in file on producing a file. -- Dynamo - If you are running with anything better than 5 degrees by 5 degrees resolution, turn the dynamo on! +## Basic Inputs -Once these things are set, you should be able to run GITM for the event of your choosing. +This is an extremely brief description of a few settings within `UAM.in` - to understand +more, consult other pages in the documentation! Within this file, there are several +things that need to be altered when running GITM: -We provide a code in srcPython called gitm_makerun.py that will take the default UAM.in file, change the start/end times, download IMF and AE files, and flip switches that you may want. +- Start time, given as year, month, day, hour, minute, second. Each on its own line. +- End time, given as year, month, day, hour, minute, second. +- The grid, given as start and end latitude, start and end longitude, and the number of + blocks (processors) to use in latitude and longitude. [See this grid description for + more](internals/grid.md). +- Save plots, telling what type of plots to output (`3DALL` by default) and how often + (300s = 5 minutes). The restarts can be ignored unless you know you will need them. +- MHD_Indices - This is the the path to a file which is used as inputs to the + high-latitude electrodynamics, specifying IMF and solar wind. There are instructions + in the UAM.in file on how to produce this with the correct format. +- SME_Indices - this is the AE file that some auroral precipitation models need to + work. There are instructions in the UAM.in file on producing a file. +- Dynamo - Settings for the low-latitude dynamo. If you are running with anything better + than 5 degrees by 5 degrees resolution, turn the dynamo on! + +Once these things are set, you should be able to run GITM for the event of your +choosing. + +We provide a code in srcPython called gitm_makerun.py that will take the default UAM.in +file, change the start/end times, download IMF and AE files, and flip switches that you +may want. For more information on plotting, please see [the plotting description page](plotters.md). From 059f2d87052c5d4c84a991db8a1e08b623338b48 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Thu, 24 Jul 2025 18:44:54 -0400 Subject: [PATCH 107/120] DOC: Sree's comments, formatting --- srcDoc/install.md | 100 ++++++++++++++++++++++++++++++---------------- 1 file changed, 66 insertions(+), 34 deletions(-) diff --git a/srcDoc/install.md b/srcDoc/install.md index d37dab1d..8c772dc7 100644 --- a/srcDoc/install.md +++ b/srcDoc/install.md @@ -1,7 +1,7 @@ # Installation -If a fortran compiler & MPI are already installed on your system, you may wish -to skip down to [Getting the Code](#getting-the-code). +If a fortran compiler & MPI are already installed on your system, you can skip down to +[Getting the Code](#getting-the-code). If you are unsure whether or not things are installed & set up correctly, a good way to check is to print the version number with `gfortran --version` (change to @@ -17,26 +17,39 @@ At a minimum, you need: - MPI (~~mpich~~, openmpi, mvapich, etc.) - GNU Make (`make`) - Python3 (most any version should work, but we have been testing with versions in the 3.10+ range) -- Perl (for configuring the code) +- Perl (for configuring the code). This comes installed on most machines. *[MPI]: Message Passing Interface -On linux systems (including Windows Subsystem for Linux), gfortran is often used. This is the most robustly tested compiler for GITM. One problem with gfortran is that the gcc-10 and above version don't place well with MPI for some reason. A flag has to be specified to make them play nice, and therefore there are two different compiler options for gfortran (-compiler=gfortran for older versions and -compiler=-gfortran10 for version 10+). There is a very good chance that you have 10+. +On linux systems (including Windows Subsystem for Linux), gfortran is often used. This +is the most robustly tested compiler for GITM. One problem with gfortran is that the +gcc-10 and above version don't place well with MPI for some reason. A flag has to be +specified to make them play nice, and therefore there are two different compiler options +for gfortran when configuring (`-compiler=gfortran` for older versions and +`-compiler=-gfortran10` for version 10+). There is a very good chance that you have 10+. There is no difference in the outputs between different compilers, however some compilers may produce slightly faster executables than others. For example, using ifort on [Pleiades](https://www.nas.nasa.gov/hecc/resources/pleiades.html) is faster than using gfortran (gcc) or aocc. -As GITM can run on as many (or few) CPU cores as you wish, it is possible to run -GITM on a laptop or workstation. This is recommended for development, as the -turnaround for test runs will be much faster. Most developers of GITM have 8-core machines and can run the default test problem of 4 processors with no problems. Most modern computers are capable of this now. +As GITM can run on as many (or few) CPU cores as you wish, it is possible to run GITM on +a laptop or a workstation. This is recommended for development, as the turnaround for +test runs will be much faster. We develop GITM on 8+ core machines and can run the +default test problem of 4 processors with no problems. Most modern computers are +capable of this now. + +!!! warning "Using `conda` to install dependencies is not recommended" + + In the past, people have had very strange errors when using Anaconda to get + dependencies installed. We highly recommend you use a system-wide package manager, + or install the dependencies manually, instead of using something language-specific. ### Linux Install Dependencies -On a Ubuntu-based linux distribution, the following commands will download GNU -Make, the GCC Fortran compiler & Open-MPI: +On an Ubuntu-based linux distribution, the following commands will download GNU Make, +the GCC Fortran compiler & Open-MPI: ```bash sudo apt-get install gfortran libopenmpi-dev make @@ -50,8 +63,11 @@ sudo yum install gcc-gfortran openmpi-devel ### MacOS Install Dependencies -Installing gfortran on MacOS is most easily accomplished with a package manager -like [Homebrew](https://brew.sh/) or [MacPorts](https://www.macports.org/). +Installing gfortran on MacOS is most easily accomplished with a package manager like +[Homebrew](https://brew.sh/) or [MacPorts](https://www.macports.org/). It is easiest to +use a package manager, however it is also possible to install things manually. The +following steps assume you are using a package manager. + Homebrew users will need to run: ```bash @@ -70,12 +86,19 @@ sudo port install gcc[??] open-mpi ### Recommended HPC Modules -On some computer systems, there are multiple versions of compilers, MPI, and other things like python available. They deal with these things by making "modules". This means that in order to compile the code, modules need to be loaded. For example, on NASA's Pleiades computer, this line needs to be put into your .cshrc or .bashrc or whatever dot file you are using for your setup: +On some computer systems, there are multiple versions of compilers, MPI, and other +things like python available. They deal with these things by making "modules". This +means that in order to compile the code, modules need to be loaded. For example, on +NASA's Pleiades computer, this line can be added to your shell startup script (.cshrc, +.zshrc, or .bashrc): + ```bash module load comp-intel mpi-hpe ``` -The modules that need to be loaded on different systems will differ. Feel free to contribute to this list of recommended modules if you have experience with GITM on other systems: +The modules that need to be loaded on different systems will differ. Feel free to +contribute to this list of recommended modules if you have experience with GITM on other +systems: - Pleiades - `comp-intel` @@ -91,29 +114,32 @@ least take note of what was used so they can be loaded in the job script. ## Getting the code -GITM is hosted on GitHub. The `main` branch is stable and updated as important -features are added (in the `develop` branch). The `main` branch is default and -no additional steps are needed to use the latest, stable, version. Just clone -the GITM repository, and all dependencies like the -[share](https://github.com/SWMFsoftware/share), -[util](https://github.com/SWMFsoftware/util), and -[electrodynamics](https://github.com/GITMCode/Electrodynamics) libraries will be -downloaded during configuration. The following command is assuming that you will be using GITM and not developing GITM. +GITM is hosted on GitHub. The `main` branch is stable and updated as important features +are added (in the `develop` branch). The `main` branch is default and no additional +steps are needed to use this version. Just clone the GITM repository, and all dependent +libraries will be downloaded during configuration. The following command is assuming +that you will be using GITM and not developing GITM. ``` git clone git@github.com:GITMCode/GITM.git cd GITM ``` -!!! tip - Replace `git@github.com:GITMCode/GITM.git` with `https://github.com/GITMCode/GITM.git` if you don't have Github ssh keys set up. If you are going to be developing GITM, you may take the time to fork the repository (including all of the branches!), and then substitute your forked repository location in the git clone command. If you are NOT doing development, just use this command. - -All of the following steps assume you have not changed out of the `GITM/` -directory. Most will error if run from another location, but this will not break -anything! Simply `cd` back to `GITM/` and try again. +!!! tip + Replace `git@github.com:GITMCode/GITM.git` with + `https://github.com/GITMCode/GITM.git` if you don't have Github ssh keys set up. If + you are going to be developing GITM, you may take the time to fork the repository + (including all of the branches!), and then substitute your forked repository + location in the git clone command. If you are NOT doing development, just use this + command. ## Configuring & Compiling +All of the following steps assume you have not changed out of the `GITM/` directory. +Most will error if run from another location, but this will not break anything! Simply +`cd` back to `GITM/` and try again. Installation needs to be done from within `GITM/`, +then the code can be run from anywhere by moving the `run/` directory. + This step configures the planet, compiler, and some paths GITM needs to work properly. To configure GITM for Earth using the `gfortran` compiler, run: @@ -122,8 +148,10 @@ work properly. To configure GITM for Earth using the `gfortran` compiler, run: ``` !!! warning - The above example assumes you are using gfortran - version 10+. If your gfortran version is <10 (you should upgrade your system!), use `compiler=gfortran` + + The above example assumes you are using gfortran + version 10+. If your gfortran version is <10 (you should upgrade your system!), + use `compiler=gfortran` The full list of available configuration options can be found by running `./Config.pl -h`. A useful flag while developing is `-debug` which will print a @@ -137,12 +165,16 @@ extra files necessary to compile. To compile, simply run: make ``` -!!! note - Compilation can often take a while. This can be done in parallel with - `make -j`, which will use all available cores on your computer. To limit the number of cores - to 8, for example, use `make -j8` +!!! tip + + Compilation can often take a while. This can be done in parallel using `make -j`, + which will use all available cores on your computer. To limit the number of cores, + for example, to 8 use `make -j8` -If this runs without error, GITM is ready to be run! +If this runs without error, GITM is ready to be run! No changes are made to your system +so if errors do occur, you can remove the `GITM/` directory and try again. If trying +again does not work, you can always submit a +[bug report](https://github.com/GITMCode/GITM/issues) on GitHub. ## Running the Code From 497d674e58bf1c9a7e6c34502cbee9e5b9bdf994 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Fri, 1 Aug 2025 12:19:59 -0400 Subject: [PATCH 108/120] DOC: Sree's comments on common_inputs & beef up satellite section --- srcDoc/common_inputs.md | 82 ++++++++++++++++++++++++++++++----------- 1 file changed, 61 insertions(+), 21 deletions(-) diff --git a/srcDoc/common_inputs.md b/srcDoc/common_inputs.md index b010afd2..4ceffad8 100644 --- a/srcDoc/common_inputs.md +++ b/srcDoc/common_inputs.md @@ -29,7 +29,9 @@ Hopefully these are obvious what they are. ## Setting the grid -GITM can simulate the whole planet or a portion of the planet. Unless you know what you are doing, I would stick to modeling the whole planet. This can be done with the following command (as an example): +GITM can simulate the whole planet or a portion of the planet. Unless you know what you +are doing, I would stick to modeling the whole planet. This can be done with the +following command (as an example): ```bash #GRID @@ -40,7 +42,11 @@ GITM can simulate the whole planet or a portion of the planet. Unless you know 0.0 longitude start to model (set to 0.0 for whole Earth) 0.0 longitude end to model (set to 0.0 for whole Earth) ``` -The first two numbers control the resolution. The higher these numbers, the finer the resolution, but the more processors you will need - you need one processor for each block that you asked for (2 x 2 = 4 blocks / processors). If you wanted to run at 5 degrees by 5 degrees, the following could be used: +The first two numbers control the resolution. The higher these numbers, the finer the +resolution, but the more processors you will need - you need one processor for each +block that you asked for (2 x 2 = 4 blocks / processors). For example, if you wanted to +run at 5 degrees by 5 degrees reolution, the following could be used: + ```bash #GRID 8 number of blocks in longitude @@ -61,38 +67,47 @@ GITM outputs a wide variety of output files. [There is a whole section that desc Output files are controlled with the `#SAVEPLOTS` command. -The first line says how often to output restart files, which we will set aside for a bit. It is ok to leave this as 2 hours (7200), unless you know what you are doing. +The first line says how often to output restart files, which we will set aside for a +bit. It is ok to leave this as 2 hours (7200 - these are all specified in seconds), +unless you know what you are doing. The second line tells GITM how many types of output files you want. -The following lines tell GITM what type of file output you want and how often you want them. The most common type of output is 3DALL, which includes all ion and neutral states (densities, temperatures, velocities). +The following lines tell GITM what type of file output you want and how often you want +them. The most common type of output is 3DALL, which includes all ion and neutral states +(densities, temperatures, velocities). An example: ```bash #SAVEPLOTS 7200.0 dt for writing restart files 1 how many output files do you want -3DALL second output style +3DALL first output style 900.0 dt for output (one every 15 min) ``` -This will output restart files every 2 hours (this can be ignored) and 3DALL files every 15 minutes. + +This will output restart files every 2 hours (this can be ignored) and 3DALL files every +15 minutes. 2 hours is from 7200.0 seconds, and 15 minutes is from 900.0 seconds. Another example: ```bash #SAVEPLOTS 7200.0 dt for writing restart files 3 how many output files do you want -3DALL second output style +3DALL first output style 900.0 dt for output (one every 15 min) -2DGEL third output style +2DGEL second output style 300.0 dt for output (one every 15 min) -3DTHM forth output style +3DTHM third output style 900.0 dt for output (one every 15 min) ``` -2DGEL files output things like the electric potential and auroral precipitation on the geographic grid at the top of the model. 3DTHM files are thermodynamic variables such as heating and cooling rates. + +2DGEL files output things like the electric potential and auroral precipitation on the +geographic grid at the top of the model. 3DTHM files are thermodynamic variables such +as heating and cooling rates. !!!note - All of the auxiliary input (data) files can be kept in the same run directory + All of the auxiliary input (data) files can (and should) be kept in the same run directory as the linked GITM executable and the `UAM.in` file. Otherwise, the path should be specified in the UAM.in file relative to the run directory. @@ -146,7 +161,8 @@ Here is an example file: 2000 3 20 3 3 0 0 0.0 0.0 -2.0 -400.0 0.0 0.0 5.0 50000.0 2000 3 20 3 4 0 0 0.0 0.0 -2.0 -400.0 0.0 0.0 5.0 50000.0 -This file is provided to GITM with: +This file is provided to GITM by setting the input: + ```bash #MHD_INDICES imf_file_name.dat @@ -155,7 +171,7 @@ imf_file_name.dat ## SME Indices -To use models such as FTA[^1] to drive the aurora, GITM must be provided Auroral +To use models such as FTA[^1] to drive the aurora, GITM must be provided with Auroral Electrojet (AE) indices. Normally this is from SuperMag (hence the name "SME": SuperMag auroral Electrojet), but any source may be used. @@ -185,9 +201,11 @@ T use AE for HP F don't automatically incorporate hemispheric asymmetries ``` -The lines following the AE file are for the AL-onset file. This can be set to -`none` if you do not have one. The next line tells GITM whether to derive HP -from AE or to use a NOAA HPI file (if one is required). Since production of hemispheric power was stopped by NOAA in 2013 (the world has moved on), it is best to use the HP derived from AE. +The lines following the AE file-name are for the AL-onset file. This can be set to +`none` if you do not have one or do not know what that means. The next line tells GITM +whether to derive HP (Hemispheric Power) from AE or to use a NOAA HPI file (if one is +required). Since production of hemispheric power was stopped by NOAA in 2013 (the world +has moved on), it is best to use the HP derived from AE. Even if AE is not required, it is recommended to provide a SME file as input to derive HP, as it is often more representative of geomagnetic conditions than the @@ -199,6 +217,8 @@ HemisphericPower = 0.102 * AE + 8.953 \end{align} ``` +*[HP]: Hemispheric Power + ## Hemispheric Power {#hp.sec} The hemispheric power files describe the dynamic variation of the @@ -314,7 +334,7 @@ It should be noted that MSIS also needs F10.7, so really this command should be In addition, GITM can use the Flare Irradiance Spectrum Model specification of the EUV flux. Daily values of FISM can be used unless you are doing a flare study. These daily values are included with GITM and can be found in UA/DataIn/FISM. As an example, a yearly file can be used with the command (for example): ```bash #EUV_DATA -F Use FISM solar flux data +T Use FISM solar flux data UA/DataIn/FISM/fismflux_daily_2002.dat Filename for specific year ``` @@ -380,7 +400,27 @@ provided, GITM should not be output at a resolution smaller than 1 second. The temporal resolution in the satellite file does not need to match the output resolution. -Because GITM by default outputs a file for every output time, if you use a satellite file, it produces a LOT of files. - -The types of outputs are specified in the [`#OUTPUT`](outputs.md) section of -the UAM file. +Because GITM by default outputs one file for every output time, if you use a satellite +file, it produces a LOT of files. + +The types of outputs are specified in the `#SATELLITES` section of the UAM.in file. The +number of satellites must be speficied along with the path to the locations, output type +& cadence for each file. For example, if we want to output 3DALL files for one satellite +every 2 minutes, we would use: + + #SATELLITES + 1 nSats + satfile1.txt sat file name + 3DALL output type + 120.0 output cadence, in seconds + +Or for two satellites, every 1 minute: + + #SATELLITES + 2 nSats + satfile1.txt sat file name + 3DALL output type + 60.0 output cadence, in seconds + satfile2.txt sat file name + 3DALL output type + 60.0 output cadence, in seconds From d74d1d24bc7a17be5bab2620689dedcee7473ef0 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 4 Aug 2025 12:16:40 -0400 Subject: [PATCH 109/120] doc/sty: line lengths --- srcDoc/common_inputs.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/srcDoc/common_inputs.md b/srcDoc/common_inputs.md index 4ceffad8..ba52d5f2 100644 --- a/srcDoc/common_inputs.md +++ b/srcDoc/common_inputs.md @@ -208,8 +208,9 @@ required). Since production of hemispheric power was stopped by NOAA in 2013 (th has moved on), it is best to use the HP derived from AE. Even if AE is not required, it is recommended to provide a SME file as input to -derive HP, as it is often more representative of geomagnetic conditions than the -NOAA HPI (maybe this is why they stopped producing it). The formula to calculate hemispheric power (HP) from AE is taken from (Wu et al., 2021)[^1] and is given as: +derive HP, as it is often more representative of geomagnetic conditions than the NOAA +HPI (maybe this is why they stopped producing it). The formula to calculate hemispheric +power (HP) from AE is taken from (Wu et al., 2021)[^1] and is given as: ```math \begin{align} @@ -221,15 +222,15 @@ HemisphericPower = 0.102 * AE + 8.953 ## Hemispheric Power {#hp.sec} -The hemispheric power files describe the dynamic variation of the -auroral power going into each hemisphere. Models such as FRE[^FRE] use -the Hemispheric Power to determine which level of the model it should -use. It is recommended to not use the NOAA provided HP files, but to use the AE derived HP, as described above. But, if you are a purist, the National Oceanic and Atmospheric Administration (NOAA) provides -these hemispheric power files for public use online at -. There are two types -of formats used for hemispheric power files (due to a change in the NOAA -output format in 2007). Both file formats can be used by GITM, and are -shown in the examples below. +The hemispheric power files describe the dynamic variation of the auroral power going +into each hemisphere. Models such as FRE[^FRE] use the Hemispheric Power to determine +which level of the model it should use. It is recommended to not use the NOAA provided +HP files, but to use the AE derived HP, as described above. But, if you are a purist, +the National Oceanic and Atmospheric Administration (NOAA) provides these hemispheric +power files for public use online at . +There are two types of formats used for hemispheric power files (due to a change in the +NOAA output format in 2007). Both file formats can be used by GITM, and are shown in the +examples below. [^FRE]: Fuller-Rowell, T. J., and D. S. Evans (1987), Height-integrated Pedersen and Hall conductivity patterns inferred from the TIROS-NOAA satellite data, From 3b5e510317511d4185cf33c21839dcf3609e7359 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 4 Aug 2025 12:18:08 -0400 Subject: [PATCH 110/120] TEST: remove documentation from github tests; it's moved --- .github/workflows/Format-and-Test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Format-and-Test.yml b/.github/workflows/Format-and-Test.yml index ae007945..21f73bfd 100644 --- a/.github/workflows/Format-and-Test.yml +++ b/.github/workflows/Format-and-Test.yml @@ -54,7 +54,7 @@ jobs: matrix: os: [ubuntu-latest, macos-latest] name: Run Automatic Tests - needs: [Format, Documentation] + needs: [Format] steps: - name: Linux install gfortran & openmpi if: runner.os == 'Linux' From fcb37626c43496172d50470adeed886c4f6988bf Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Fri, 8 Aug 2025 10:50:56 -0400 Subject: [PATCH 111/120] DOC: Typo --- srcDoc/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcDoc/index.md b/srcDoc/index.md index f9227c9f..38b0716a 100644 --- a/srcDoc/index.md +++ b/srcDoc/index.md @@ -41,7 +41,7 @@ latitude, and longitude. They are quite basic, but this should provide some fram for reading in GITM files and visualizing the results. More complex plotters exist, and dome of these are described in [this document](plotters.md). -## A Bit More Explaination +## A Bit More Explanation GITM is a fortran code that uses the message passing interface (MPI) to run on multiple processors, hence the need for a fortran compiler and MPI. If the code compiles From edfab92399e6e4b45b39d95790cc34578fa40d70 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 27 Aug 2025 11:21:09 -0400 Subject: [PATCH 112/120] doc: note in index.md that docs are only valid for develop --- srcDoc/index.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/srcDoc/index.md b/srcDoc/index.md index 38b0716a..265c7f7f 100644 --- a/srcDoc/index.md +++ b/srcDoc/index.md @@ -19,6 +19,12 @@ relatively recent. Download, configure, and run (`gfortran10` is for any gfortran version 10 or higher, for versions 9 and lower just use `-compiler=gfortran`): +! note + The current documentation only applies to the develop branch of GITM. + + After the seconds line below, run `git checkout develop` + + ```bash git clone https://github.com/GITMCode/GITM.git cd GITM From 87a27040c2bc2d151b96cb1925edd8e38a8ea6d4 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 27 Aug 2025 11:36:14 -0400 Subject: [PATCH 113/120] remove unused section `ovationsme` from set_inputs.f90 --- src/set_inputs.f90 | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/set_inputs.f90 b/src/set_inputs.f90 index abcebbbf..9b7d4807 100644 --- a/src/set_inputs.f90 +++ b/src/set_inputs.f90 @@ -781,21 +781,6 @@ subroutine set_inputs IsDone = .true. endif - ! case ("#OVATIONSME") - ! call read_in_logical(UseOvationSMEWave, iError) - ! call read_in_logical(UseOvationSMEIon, iError) - ! if (iError /= 0) then - ! write(*, *) 'Incorrect format for #OVATIONSME' - ! write(*, *) 'This is for using Betsy Michells aurora (OvationSME).' - ! write(*, *) 'These are all False by default:' - ! write(*, *) '' - ! write(*, *) '#OVATIONSME' - ! write(*, *) 'UseOvationSMEMono (logical)' - ! write(*, *) 'UseOvationSMEWave (logical)' - ! write(*, *) 'UseOvationSMEIon (logical)' - ! IsDone = .true. - ! endif - case ("#USECUSP") call read_in_logical(UseCusp, iError) call read_in_real(CuspAveE, iError) From b6d92196b85f06ac55f0c033b5232455e2137bbe Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 27 Aug 2025 11:40:21 -0400 Subject: [PATCH 114/120] doc: add blurb to beginning of set_inputs.md --- srcDoc/set_inputs.md | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/srcDoc/set_inputs.md b/srcDoc/set_inputs.md index e2c9f46c..3fdbf45e 100644 --- a/srcDoc/set_inputs.md +++ b/srcDoc/set_inputs.md @@ -1,6 +1,31 @@ # All Inputs - +When running, GITM looks for a file called `UAM.in` in the same directory as the +executable. This is where all of the settings for a run are read from. + +This plain-text file can contain comments and other notes which will not be used. Only +sections that begin with a `#` and match one of the GITM's settings are actually read. +GITM will print a message if it finds a line that begins with `#` that was not used. + +For example, in the following snippet, only the first block of text will be recognized +as a valid setting: + +``` +#LOGFILE +10.0 + +# LOGFILE +10.0 not read, space after # in first line + +#LOG_FILE +10.0 not read, key does not match + +#LOGFILE + 10.0 will cause error, space before value! + +``` + +This allows us to add comments or descriptors, if we wish. ## General Configuration From 919c2c6d45f956bd1cf90f180126dfb666b6bbcb Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 27 Aug 2025 11:40:46 -0400 Subject: [PATCH 115/120] doc: remove unused sections in set_inputs.md --- srcDoc/set_inputs.md | 57 +++++++------------------------------------- 1 file changed, 8 insertions(+), 49 deletions(-) diff --git a/srcDoc/set_inputs.md b/srcDoc/set_inputs.md index 3fdbf45e..4a75329a 100644 --- a/srcDoc/set_inputs.md +++ b/srcDoc/set_inputs.md @@ -229,57 +229,16 @@ AuroraKappa - kappa to use in the distribution IsKappaAurora (logical) AuroraKappa (real) -### NEWELLAURORA +### AURORATYPES -This is for using Pat Newells aurora (Ovation). +This is for using different types of aurora. Currently this is supported by Ovation & +AMIE. The first three options (diffuse, mono, wave) are for electrons only. - #NEWELLAURORA - UseNewellAurora (logical) - UseNewellAveraged (logical) - UseNewellMono (logical) - UseNewellWave (logical) - UseNewellRemoveSpikes (logical) - UseNewellAverage (logical) - - -### IONPRECIPITATION - -You can only have an AMIE input file for this now. Make sure you put the -ions in the AMIE file!!! - - #IONPRECIPITATION - UseIonPrecipitation (logical) - -### OVATIONSME - -This is for using Betsy Michells aurora (OvationSME). - - #OVATIONSME - UseOvationSME (logical) - UseOvationSMEMono (logical) - UseOvationSMEWave (logical) - UseOvationSMEIon (logical) - -### AEMODEL - -This is for using Dongjies aurora. - - #AEMODEL - UseAeModel (logical) - -### FTAMODEL - -This is for using the FTA Model of the aurora. - - #FTAMODEL - UseFtaModel (logical) - -### FANGENERGY - -This is for using Dongjies aurora. - - #FANGENERGY - UseFangEnergyDeposition (logical) + #AURORATYPES + UseDiffuseAurora (logical) + UseMonoAurora (logical) + UseWaveAurora (logical) + UseIonAurora (logical) ### USECUSP From a8122f0479e140bcdab6cc14fc26ffeb50af9013 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 27 Aug 2025 11:41:18 -0400 Subject: [PATCH 116/120] TYPO: Fix typo "modifiy" -> "modify" in set_inputs.f90 --- src/set_inputs.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/set_inputs.f90 b/src/set_inputs.f90 index 9b7d4807..6a28e618 100644 --- a/src/set_inputs.f90 +++ b/src/set_inputs.f90 @@ -1045,7 +1045,7 @@ subroutine set_inputs IsDone = .true. endif - case ("#MODIFIYPLANET") + case ("#MODIFYPLANET") call read_in_real(RotationPeriodInput, iError) call read_in_real(DaysPerYearInput, iError) call read_in_real(PlanetTiltInput, iError) From 5f91094236ddba0a33609ee97cac4577da620b93 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Wed, 27 Aug 2025 11:42:15 -0400 Subject: [PATCH 117/120] remove set_inputs.py. Unused since we reorganized set_inputs.md --- srcDoc/set_inputs.py | 75 -------------------------------------------- 1 file changed, 75 deletions(-) delete mode 100644 srcDoc/set_inputs.py diff --git a/srcDoc/set_inputs.py b/srcDoc/set_inputs.py deleted file mode 100644 index 235f4abe..00000000 --- a/srcDoc/set_inputs.py +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env python3 - -""" -I can't write perl, so this is a python wrapper around src/inputs_to_tex.pl - - -It requires pandoc to bt installed since it converts the .tex file to .md - -Does not need to be re-ran unless set_inputs.f90 is changed. - - -usage: - -./set_inputs.py - -or - -python set_inputs.py - -Must be within srcDoc! - -""" - -import os, subprocess - -# run src/inputs_to_tex.pl -os.chdir('../src/') -tex2pl = subprocess.run("./inputs_to_tex.pl", shell=True, capture_output=True) - -if tex2pl.returncode != 0: - print(tex2pl.stderr.decode()) - print(tex2pl.stdout.decode()) - raise ValueError("Could not run src/inputs_to_tex.pl") - -pandocing = subprocess.run("pandoc set_inputs.tex -o ../srcDoc/set_inputs.md", - shell=True, capture_output=True) - -os.remove('set_inputs.tex') - -if pandocing.returncode != 0: - print(pandocing) - raise ValueError("Could not run pandic. Is it installed??") - - -# Go back to srcdoc -# Rearrange set_inputs.md to have markdown headers -os.chdir("../srcDoc") - -outlines = ['# All Inputs\n\n', - '\n\n' - ] -this_sec = [''] -started_indent = False - - -with open('set_inputs.md') as f: - alllines = f.readlines() - - for aline in alllines: - this_sec.append(aline) - if aline[:5] == ' #': - this_sec[0] = aline.replace(' #', '## ') + '\n' - started_indent = True - if aline[:4] != ' ' and started_indent: - outlines.extend(this_sec) - this_sec = [''] - started_indent = False - -os.remove('set_inputs.md', ) -with open('set_inputs.md', 'x') as f: - for i in outlines: - f.write(i) - - -print("all done") From 9747c7be38a79ffbe9c18e1b52e90c252ef224d8 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Thu, 28 Aug 2025 13:32:27 -0400 Subject: [PATCH 118/120] DOC: Revamp the all inputs page - Fix links - remove uncertainty - etc. --- srcDoc/common_inputs.md | 2 ++ srcDoc/set_inputs.md | 70 ++++++++++++++++++++++++----------------- 2 files changed, 43 insertions(+), 29 deletions(-) diff --git a/srcDoc/common_inputs.md b/srcDoc/common_inputs.md index ba52d5f2..5848f484 100644 --- a/srcDoc/common_inputs.md +++ b/srcDoc/common_inputs.md @@ -372,6 +372,8 @@ If you want to create your own files, there is a code in srcPython to download a ## Satellites {#sat_aux.sec} +
    + GITM can provide output data at a list of times and locations using the SATELLITE input option. Although this is designed to output data along a satellite orbit, any list of locations may be used. There is currently diff --git a/srcDoc/set_inputs.md b/srcDoc/set_inputs.md index 4a75329a..32fa10c0 100644 --- a/srcDoc/set_inputs.md +++ b/srcDoc/set_inputs.md @@ -68,7 +68,7 @@ the specified F107 and F107a values.` ### GRID -If LatStart and LatEnd are set to \< -90 and \> 90, respectively, then +If LatStart and LatEnd are set to < -90 and > 90, respectively, then GITM does a whole sphere. If not, it models between the two. If you want to do 1-D, set nLons=1, nLats=1 in ModSizeGitm.f90, then recompile, then set LatStart and LonStart to the point on the Globe you want to model. @@ -90,9 +90,10 @@ set LatStart and LonStart to the point on the Globe you want to model. ### SAVEPLOT The DtRestart variable sets the time in between writing full restart -files to the UA/restartOUT directory.\ -This sets the output files. The most common type is 3DALL, which outputs -all primary state variables. Types include : 3DALL, 3DNEU, 3DION, 3DTHM, +files to the UA/restartOUT directory. This sets the output files. The most common +type is 3DALL, which outputs all primary state variables. + +Other types include : 3DALL, 3DNEU, 3DION, 3DTHM, 3DCHM, 3DUSR, 3DGLO, 2DGEL, 2DMEL, 2DUSR, 1DALL, 1DGLO, 1DTHM, 1DNEW, 1DCHM, 1DCMS, 1DUSR. DtPlot sets the frequency of output @@ -108,9 +109,14 @@ This allows you to change the output cadence of the files for a limited time. If you have an event then you can output much more often during that event. +Specify the start and end time the new cadence will be used for, followed by the new Dt +for each output type. This example would be for two output types: + #PLOTTIMECHANGE yyyy mm dd hh mm ss ms (start) yyyy mm dd hh mm ss ms (end) + DtOutputType1 (real, seconds) + DtOutputType2 (real, seconds) ### LOGFILE @@ -142,6 +148,8 @@ be named 1DALL_GITM_yyyy-mm-ddThh-mm-ss.bin ### SATELLITES +See [this page](common_inputs.md#satellite-section) for more details. + #SATELLITES nSats (integer - max = ', nMaxSats, ') SatFile1 (string) @@ -170,6 +178,20 @@ altitude grid, and drive the lower boundary conditions. f107 (real) f107a (real - 81 day average of f107) +### ELECTRODYNAMICS + +Sets the sources for, and the time for updating, the high-latitude (and low-latitude) +electrodynamic drivers, such as the potential and the aurora. + +See [the electrodynamics page](internals/electrodynamics.md) for more details + + #ELECTRODYNAMICS + AuroralModel [fta], fre, pem, ovation, hpi/ihp, amie, etc. + DtAurora (real, seconds [60.0]) + PotentialModel [weimer05], hepmay, amie, etc. + DtPotential (real, seconds [60.0])' + + ### HPI This sets the hemispheric power of the aurora. Typical it ranges from @@ -180,7 +202,7 @@ This sets the hemispheric power of the aurora. Typical it ranges from ### KP -I dont think that GITM actually uses this unless the Foster electric +GITM will not use this unless the Foster electric field model is used. #KP @@ -273,15 +295,6 @@ below. AMIELatEnd (real) AMIEBoundaryWidth (real) -### ELECTRODYNAMICS - -Sets the time for updating the high-latitude (and low-latitude) -electrodynamic drivers, such as the potential and the aurora. - - #ELECTRODYNAMICS - DtPotential (real, seconds) - DtAurora (real, seconds) - ### INPUTTIMEDELAY Sets the time delay for the high latitude drivers and solar EUV inputs. @@ -310,9 +323,9 @@ For other planets, the vertical BCs can be set here. ### MSISTIDES -This says how to use msis tides. The first one is using diurnal tide The -first one is using semi-diurnal tide The first one is using terdiurnal -tide +This says how to use msis tides. The first argument is for using diurnal tide, the +second is for using semi-diurnal tide and the third is to use terdiurnal +tide. #MSISTIDES UseMSISDiurnal (logical) @@ -329,11 +342,11 @@ seems like -0.1 works well UseOBCExperiment (logical) MsisOblateFactor (real) -### MSISOBC +### MSIS21 This toggles between using MSIS00 (false) and MSIS-2.1 (true) - #MSISOBC + #MSIS21 UseMsis21 (logical) @@ -368,6 +381,8 @@ components to use. ### USEBCPERTURBATION +Use Boundary Condition Perturbation are a set of arguments for running WP-GITM. + #USEBCPERTURBATION UseBcPerturbation (logical) If UseBcPerturbation = .true. then: @@ -385,9 +400,9 @@ components to use. ### STATISTICALMODELSONLY -This command will skip all pretty much all of the physics of GITM, and -will reinitialize the model with the MSIS and IRI values at the interval -set in the second variable. If you want to compare a run to MSIS and +This command will skip pretty much all of the physics of GITM, and +will reinitialize the model with the MSIS, IRI, APEX, and Electrodynamics values at +the interval set in the second variable. If you want to compare a run to MSIS and IRI, you can run GITM with this command and get output at exactly the same cadence and locations, thereby allowing easier comparisons. The dt can be set as low as needed, so you can run satellites through MSIS and @@ -411,7 +426,7 @@ instabilities form, a lower value is probably needed. ### LIMITER The limiter is quite important. It is a value between 1.0 and 2.0, with -1.0 being more diffuse and robust, and 2.0 being less diffuse, but less +1.0 being more diffuse and robust, and 2.0 being less diffuse and less robust. #LIMITER @@ -471,6 +486,8 @@ code to sync up a LOT. ### AUSMSOLVER +This dictates whether to use the AUSM solver (T) or the Rusanov solver (F) + #AUSMSOLVER Use AUSM Solver (logical) @@ -639,10 +656,7 @@ caution. #TSIMULATION tsimulation (real) -### DUST - -This says whether you want seconds in output file name. F means no -seconds in output file name. +### DUSTDATA #DUST cDustFile @@ -674,8 +688,6 @@ in the lower atmosphere. ### GRAVITYWAVE -I dont know what this is for\... - #GRAVITYWAVE UseGravityWave (logical) From d8c18d4cf1141ed6bc86ec70b060f1836c7ac658 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 1 Sep 2025 11:21:43 -0400 Subject: [PATCH 119/120] TEST: Add gfortran symlink and update PATH in macos test gfortran wasn't found even though it was installed --- .github/workflows/Format-and-Test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/Format-and-Test.yml b/.github/workflows/Format-and-Test.yml index 21f73bfd..cabf34a6 100644 --- a/.github/workflows/Format-and-Test.yml +++ b/.github/workflows/Format-and-Test.yml @@ -64,6 +64,8 @@ jobs: run: | brew update brew install gcc open-mpi + ln -sf $(brew --prefix)/bin/gfortran-* $(brew --prefix)/bin/gfortran + export PATH="$(brew --prefix)/bin:$PATH" - name: Clone GITM repository uses: actions/checkout@v4 - name: Run tests on MacOS (no output checking, only one test) From fe14a16476c68296c40bd752e5a6ace7e8af6d61 Mon Sep 17 00:00:00 2001 From: Aaron Bukowski Date: Mon, 1 Sep 2025 12:08:07 -0400 Subject: [PATCH 120/120] [test]: Fix gfortran symlink in test script; hardcode version --- .github/workflows/Format-and-Test.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/Format-and-Test.yml b/.github/workflows/Format-and-Test.yml index cabf34a6..0a5e5b5e 100644 --- a/.github/workflows/Format-and-Test.yml +++ b/.github/workflows/Format-and-Test.yml @@ -64,8 +64,7 @@ jobs: run: | brew update brew install gcc open-mpi - ln -sf $(brew --prefix)/bin/gfortran-* $(brew --prefix)/bin/gfortran - export PATH="$(brew --prefix)/bin:$PATH" + ln -s $(brew --prefix)/bin/gfortran-15 $(brew --prefix)/bin/gfortran - name: Clone GITM repository uses: actions/checkout@v4 - name: Run tests on MacOS (no output checking, only one test)

    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 C( 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