You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@answer.apache.org by gi...@apache.org on 2024/03/07 01:49:57 UTC

(incubator-answer-website) branch dist-pages updated: deploy: 4560ef41b97a1444346e017be0ac2c0a9bfe2e0a

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch dist-pages
in repository https://gitbox.apache.org/repos/asf/incubator-answer-website.git


The following commit(s) were added to refs/heads/dist-pages by this push:
     new 9403e74e deploy: 4560ef41b97a1444346e017be0ac2c0a9bfe2e0a
9403e74e is described below

commit 9403e74eef7a7cb44347ada8a188037ff881b27d
Author: fenbox <fe...@users.noreply.github.com>
AuthorDate: Thu Mar 7 01:49:53 2024 +0000

    deploy: 4560ef41b97a1444346e017be0ac2c0a9bfe2e0a
---
 404.html                                           |     7 +-
 .../{styles.2252c3e0.css => styles.ed57e243.css}   |     2 +-
 ...tus.drawio-c037079cbbf31ac37fdb578bb32a35c7.svg |   173 +
 ...tus.drawio-ba8e6f72b87ff5452bcc4dd8cbdc7dea.svg |   226 +
 ...screenshot-74a5a4658de6431b7c42f3bd3de532f9.png |   Bin 61506 -> 0 bytes
 ...screenshot-c118d2fcfb1faaf1d9df2e8b5e8bc1a8.png |   Bin 0 -> 88558 bytes
 ...uth.drawio-1bf9a76ad7f50a2b20755d20b739feea.svg |   500 +
 ...nup.drawio-71d1d02e80eeaa95c58a30d2451df863.svg |   188 +
 .../js/01a85c17.ea1681f0.js                        |     2 +-
 assets/js/0480b142.04edd1ae.js                     |     1 -
 assets/js/0480b142.c96108ee.js                     |     1 +
 assets/js/1008.647e7b10.js                         |     1 -
 assets/js/{1061.4180c433.js => 1061.559c3c1d.js}   |     2 +-
 assets/js/1300.4c852510.js                         |     1 -
 assets/js/1516.94768e46.js                         |     1 -
 assets/js/1620c6a0.01a7e12a.js                     |     1 -
 assets/js/1620c6a0.203cc2ba.js                     |     1 +
 assets/js/1711.136f6393.js                         |     2 -
 assets/js/1711.136f6393.js.LICENSE.txt             |    18 -
 .../js/17896441.08e62453.js                        |     2 +-
 .../{1a4e3797.43bebe37.js => 1a4e3797.c608bffb.js} |     4 +-
 ...ICENSE.txt => 1a4e3797.c608bffb.js.LICENSE.txt} |     0
 assets/js/1a8837ce.03d18650.js                     |     1 +
 assets/js/1a8837ce.99fcbdac.js                     |     1 -
 .../js/1df93b7f.a5074a14.js                        |     2 +-
 assets/js/227.646ebd22.js                          |     1 -
 assets/js/2449.f473e051.js                         |     2 -
 assets/js/2449.f473e051.js.LICENSE.txt             |     9 -
 assets/js/2669.67104145.js                         |     1 -
 assets/js/2697.7e8d8a38.js                         |     1 -
 assets/js/298.f8893466.js                          |     1 -
 assets/js/2a510483.54691518.js                     |     2 +
 ...ICENSE.txt => 2a510483.54691518.js.LICENSE.txt} |     0
 assets/js/2a510483.7b977ab9.js                     |     2 -
 .../js/2c22be1c.615af791.js                        |     4 +-
 ...ICENSE.txt => 2c22be1c.615af791.js.LICENSE.txt} |     0
 assets/js/3093.33e255c3.js                         |     1 -
 assets/js/310.14ee915c.js                          |  3429 --
 assets/js/3198.6f9adc87.js                         |     1 -
 assets/js/32.97fad14b.js                           | 10780 ----
 assets/js/3410.a246e730.js                         |     1 -
 assets/js/357.760272fa.js                          |  1320 -
 assets/js/3694.93979497.js                         |     1 -
 assets/js/3880.a412433e.js                         |     1 -
 .../{3a3fadac.b578b9b0.js => 3a3fadac.b254c80e.js} |     2 +-
 .../js/3a86a8c5.4d766497.js                        |     4 +-
 ...ICENSE.txt => 3a86a8c5.4d766497.js.LICENSE.txt} |     0
 assets/js/415707e9.2023e883.js                     |     1 -
 assets/js/415707e9.91747238.js                     |     1 +
 assets/js/422.e7052dec.js                          |  2600 -
 assets/js/423.89d88c7e.js                          | 10323 ----
 assets/js/449.a598088d.js                          | 50986 -------------------
 assets/js/489.b280ee59.js                          | 23570 ---------
 assets/js/5.7a6d4c98.js                            |     1 -
 assets/js/5.822c6d59.js                            |  1227 -
 assets/js/51168d66.569fe5ae.js                     |     1 +
 assets/js/51168d66.63f9368a.js                     |     1 -
 assets/js/516.0f704221.js                          | 26575 ----------
 assets/js/525.d5635339.js                          | 10814 ----
 assets/js/5422.a961dbf1.js                         |     1 -
 assets/js/54f44165.82a4074c.js                     |     1 -
 assets/js/54f44165.88a81497.js                     |     1 +
 assets/js/5525.5255e838.js                         |     1 -
 assets/js/5771c448.09fa2dbd.js                     |     1 +
 assets/js/5771c448.249e1238.js                     |     1 -
 assets/js/5846.e79acaf6.js                         |     1 -
 assets/js/5ac42693.59b0f8cc.js                     |     1 -
 assets/js/5ac42693.ebe03cec.js                     |     1 +
 assets/js/5b5f4945.6b6a86e6.js                     |     1 +
 assets/js/5b5f4945.fe2e08cb.js                     |     1 -
 .../{5e95c892.67ebe9ad.js => 5e95c892.383858ff.js} |     2 +-
 assets/js/6032.e67c911c.js                         |     1 -
 assets/js/643.5c39e096.js                          | 25919 ----------
 assets/js/6489.bc4ebc01.js                         |     1 -
 assets/js/6643.0dbf8676.js                         |     1 -
 assets/js/6685.98383bb2.js                         |     1 -
 assets/js/669.710427ef.js                          |  1242 -
 assets/js/685.82d4b9a0.js                          |  1410 -
 assets/js/68eaa3f5.4c4da877.js                     |     1 +
 assets/js/68eaa3f5.7b7e1922.js                     |     1 -
 assets/js/692c6f9f.ac84f3df.js                     |     1 -
 assets/js/692c6f9f.b0a0359e.js                     |     1 +
 assets/js/697.97d60bb9.js                          |   739 -
 assets/js/6f494215.2d06cd04.js                     |     1 +
 assets/js/6f494215.da265acd.js                     |     1 -
 assets/js/6fd9b8bb.28a45205.js                     |     1 +
 assets/js/6fd9b8bb.b662185e.js                     |     1 -
 assets/js/70fd4878.2de578a4.js                     |     1 -
 assets/js/70fd4878.af26469e.js                     |     1 +
 assets/js/7156.9bd2369b.js                         |     2 +
 assets/js/7156.9bd2369b.js.LICENSE.txt             |     8 +
 assets/js/72a4391e.c0452579.js                     |     1 -
 assets/js/72a4391e.f0261fe0.js                     |     1 +
 .../js/72f5456f.f5833345.js                        |     4 +-
 ...ICENSE.txt => 72f5456f.f5833345.js.LICENSE.txt} |     0
 assets/js/744.95e9770e.js                          | 10065 ----
 assets/js/7744.a5b332a3.js                         |     1 -
 assets/js/{7762.a8ba1189.js => 7762.a8202189.js}   |     2 +-
 assets/js/7892.eeacadb8.js                         |     1 -
 assets/js/8.0f1a168f.js                            | 14570 ------
 assets/js/8310.ee3cef01.js                         |     1 -
 assets/js/846.0218453f.js                          |  2106 -
 assets/js/872d4ab4.2aab7fa4.js                     |     1 -
 assets/js/872d4ab4.67ae2dff.js                     |     1 +
 assets/js/8908.a6c19329.js                         |     1 -
 assets/js/892.837803ad.js                          |     1 -
 assets/js/892.87df91dd.js                          | 28262 ----------
 assets/js/8992.0472a0ab.js                         |     1 -
 .../js/8b3a140c.7c8d8c38.js                        |     4 +-
 ...ICENSE.txt => 8b3a140c.7c8d8c38.js.LICENSE.txt} |     0
 assets/js/908.f74f140d.js                          |  1758 -
 assets/js/93.865c82a7.js                           | 25876 ----------
 assets/js/9357.967dd3dc.js                         |     1 -
 .../{935f2afb.20d8341d.js => 935f2afb.8b6d07f1.js} |     2 +-
 assets/js/977e6cb2.88006647.js                     |     1 -
 assets/js/977e6cb2.ae1c45e7.js                     |     1 +
 assets/js/992.32945d3b.js                          |   540 -
 .../{9e4087bc.93101ad2.js => 9e4087bc.89e8c427.js} |     2 +-
 assets/js/a09c2993.249e0220.js                     |     1 +
 assets/js/a09c2993.fbd80fc7.js                     |     1 -
 assets/js/a4adfb7f.b1019c7a.js                     |     1 +
 assets/js/a4adfb7f.bae81473.js                     |     1 -
 assets/js/a5eff934.abd86253.js                     |     1 -
 assets/js/a5eff934.e4e79e55.js                     |     1 +
 .../{a72448b0.942fdbb1.js => a72448b0.ff48a241.js} |     4 +-
 ...ICENSE.txt => a72448b0.ff48a241.js.LICENSE.txt} |     0
 assets/js/a98c1148.3c377d46.js                     |     1 +
 assets/js/a98c1148.7c190875.js                     |     1 -
 assets/js/b2b494f3.e87317be.js                     |     1 +
 assets/js/b2b494f3.f2960a34.js                     |     1 -
 assets/js/bb350c59.2e44b86c.js                     |     1 +
 assets/js/bb350c59.aad72c66.js                     |     1 -
 assets/js/c1cb8fca.13328676.js                     |     1 +
 assets/js/c1cb8fca.78f38b49.js                     |     1 -
 assets/js/d7ef3cd8.057df049.js                     |     1 -
 assets/js/d7ef3cd8.1901c51c.js                     |     1 +
 assets/js/da6654f2.a55c8e69.js                     |     1 +
 assets/js/da6654f2.c7e7eae2.js                     |     1 -
 assets/js/dc8b965f.39ce705b.js                     |     1 -
 assets/js/dc8b965f.3f00c339.js                     |     1 +
 assets/js/e438ab2a.18b22e3f.js                     |     1 +
 assets/js/e438ab2a.97033efa.js                     |     1 -
 assets/js/e4ae456e.1b177c1f.js                     |     1 +
 assets/js/e4ae456e.986fddaa.js                     |     1 -
 assets/js/eafd45de.4615afef.js                     |     1 +
 assets/js/eafd45de.8195bcb6.js                     |     1 -
 assets/js/f493f8eb.6633e50d.js                     |     1 +
 assets/js/f493f8eb.7c13983f.js                     |     1 -
 assets/js/f8a2828b.991f8136.js                     |     1 -
 assets/js/f8a2828b.dbb3520c.js                     |     1 +
 assets/js/main.01c4bcd3.js                         |     2 +
 ...js.LICENSE.txt => main.01c4bcd3.js.LICENSE.txt} |     0
 assets/js/main.8ba0868c.js                         |     2 -
 assets/js/runtime~main.11e48caf.js                 |     1 +
 assets/js/runtime~main.fd137039.js                 |     1 -
 blog/2023/05/11/answer-1.0.9-release/index.html    |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 blog/2023/06/15/answer-1.1.0-release/index.html    |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../24/answer-enters-apache-incubator/index.html   |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../answer-1.2.1-ask-better-find-better/index.html |     7 +-
 .../first-contribution-come-to-answer/index.html   |     7 +-
 blog/2024/01/26/deploy-answer-https/index.html     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 blog/2024/02/20/answer-1.2.5-is-ready/index.html   |     7 +-
 blog/archive/index.html                            |     7 +-
 blog/category/best-practice/index.html             |     7 +-
 blog/category/community/index.html                 |     7 +-
 blog/category/insights/index.html                  |     7 +-
 blog/category/release/index.html                   |     7 +-
 blog/category/tech/index.html                      |     7 +-
 blog/category/tutorials/index.html                 |     7 +-
 blog/index.html                                    |     7 +-
 blog/page/2/index.html                             |     7 +-
 blog/tags/index.html                               |     7 +-
 blog/tags/tutorials/index.html                     |     7 +-
 community/about/index.html                         |     9 +-
 community/blog-post/index.html                     |     9 +-
 community/contributing/index.html                  |     9 +-
 community/development/index.html                   |     9 +-
 community/how-to-release/index.html                |     9 +-
 community/index.html                               |     9 +-
 community/issues/index.html                        |     9 +-
 community/plugins/index.html                       |     9 +-
 community/plugins/plugin-config/index.html         |     9 +-
 community/plugins/plugin-translation/index.html    |     9 +-
 community/pull-request/index.html                  |     9 +-
 community/security/index.html                      |     9 +-
 community/translation/index.html                   |     9 +-
 contact/index.html                                 |     7 +-
 docs/api/index.html                                |     9 +-
 docs/command-line/index.html                       |     9 +-
 docs/configfile/index.html                         |     9 +-
 docs/database/index.html                           |     9 +-
 docs/env/index.html                                |     9 +-
 docs/faq/index.html                                |     9 +-
 docs/flags/index.html                              |     9 +-
 docs/index.html                                    |     9 +-
 docs/installation/index.html                       |     9 +-
 docs/moderation/index.html                         |     9 +-
 docs/notice/index.html                             |     9 +-
 docs/permission/index.html                         |     9 +-
 docs/plugins/index.html                            |     9 +-
 docs/questions/index.html                          |    16 +-
 docs/reputation/index.html                         |     9 +-
 docs/review/index.html                             |     9 +-
 docs/settings/index.html                           |     9 +-
 docs/tags/index.html                               |     9 +-
 docs/upgrade/index.html                            |     9 +-
 docs/users/index.html                              |    15 +-
 img/docs/questions-answer-status.drawio.svg        |   173 +
 img/docs/questions-question-status.drawio.svg      |   226 +
 img/docs/users-oauth.drawio.svg                    |   500 +
 img/docs/users-signup.drawio.svg                   |   188 +
 img/screenshot.png                                 |   Bin 61506 -> 88558 bytes
 index.html                                         |     7 +-
 plugins/index.html                                 |     7 +-
 search/index.html                                  |     7 +-
 zh-CN/404.html                                     |     7 +-
 .../{styles.5967b50a.css => styles.589af3e3.css}   |     2 +-
 ...tus.drawio-c037079cbbf31ac37fdb578bb32a35c7.svg |   173 +
 ...tus.drawio-ba8e6f72b87ff5452bcc4dd8cbdc7dea.svg |   226 +
 ...screenshot-74a5a4658de6431b7c42f3bd3de532f9.png |   Bin 61506 -> 0 bytes
 ...screenshot-c118d2fcfb1faaf1d9df2e8b5e8bc1a8.png |   Bin 0 -> 88558 bytes
 ...uth.drawio-1bf9a76ad7f50a2b20755d20b739feea.svg |   500 +
 ...nup.drawio-71d1d02e80eeaa95c58a30d2451df863.svg |   188 +
 .../assets/js/01a85c17.ea1681f0.js                 |     2 +-
 zh-CN/assets/js/0bbd7524.1eab2b0d.js               |     1 -
 zh-CN/assets/js/0bbd7524.485433be.js               |     1 +
 zh-CN/assets/js/1008.647e7b10.js                   |     1 -
 .../js/{1061.4180c433.js => 1061.559c3c1d.js}      |     2 +-
 zh-CN/assets/js/1300.4c852510.js                   |     1 -
 zh-CN/assets/js/1516.94768e46.js                   |     1 -
 zh-CN/assets/js/1620c6a0.6aed2732.js               |     1 +
 zh-CN/assets/js/1620c6a0.72604114.js               |     1 -
 zh-CN/assets/js/1711.136f6393.js                   |     2 -
 zh-CN/assets/js/1711.136f6393.js.LICENSE.txt       |    18 -
 .../assets/js/17896441.08e62453.js                 |     2 +-
 .../{1a4e3797.43bebe37.js => 1a4e3797.c608bffb.js} |     4 +-
 ...ICENSE.txt => 1a4e3797.c608bffb.js.LICENSE.txt} |     0
 zh-CN/assets/js/1a8837ce.cd4e4482.js               |     1 +
 zh-CN/assets/js/1a8837ce.f2a0c203.js               |     1 -
 .../assets/js/1df93b7f.a5074a14.js                 |     2 +-
 zh-CN/assets/js/227.646ebd22.js                    |     1 -
 zh-CN/assets/js/2449.f473e051.js                   |     2 -
 zh-CN/assets/js/2449.f473e051.js.LICENSE.txt       |     9 -
 zh-CN/assets/js/2669.67104145.js                   |     1 -
 zh-CN/assets/js/2697.7e8d8a38.js                   |     1 -
 zh-CN/assets/js/283536cd.9c6924c4.js               |     1 +
 zh-CN/assets/js/283536cd.c18fb5bd.js               |     1 -
 zh-CN/assets/js/298.f8893466.js                    |     1 -
 zh-CN/assets/js/2a510483.56b111a7.js               |     2 +
 ...ICENSE.txt => 2a510483.56b111a7.js.LICENSE.txt} |     0
 zh-CN/assets/js/2a510483.d79d8743.js               |     2 -
 .../assets/js/2c22be1c.615af791.js                 |     4 +-
 ...ICENSE.txt => 2c22be1c.615af791.js.LICENSE.txt} |     0
 zh-CN/assets/js/3093.33e255c3.js                   |     1 -
 zh-CN/assets/js/310.14ee915c.js                    |  3429 --
 zh-CN/assets/js/3198.6f9adc87.js                   |     1 -
 zh-CN/assets/js/32.97fad14b.js                     | 10780 ----
 zh-CN/assets/js/3410.a246e730.js                   |     1 -
 zh-CN/assets/js/357.760272fa.js                    |  1320 -
 zh-CN/assets/js/3694.93979497.js                   |     1 -
 zh-CN/assets/js/3880.a412433e.js                   |     1 -
 .../{3a3fadac.b578b9b0.js => 3a3fadac.b254c80e.js} |     2 +-
 .../assets/js/3a86a8c5.4d766497.js                 |     4 +-
 ...ICENSE.txt => 3a86a8c5.4d766497.js.LICENSE.txt} |     0
 zh-CN/assets/js/415707e9.58672178.js               |     1 +
 zh-CN/assets/js/415707e9.9362294e.js               |     1 -
 zh-CN/assets/js/422.e7052dec.js                    |  2600 -
 zh-CN/assets/js/423.89d88c7e.js                    | 10323 ----
 zh-CN/assets/js/449.a598088d.js                    | 50986 -------------------
 zh-CN/assets/js/489.b280ee59.js                    | 23570 ---------
 zh-CN/assets/js/4958df33.47e493ee.js               |     1 +
 zh-CN/assets/js/4958df33.83ec6249.js               |     1 -
 zh-CN/assets/js/5.7a6d4c98.js                      |     1 -
 zh-CN/assets/js/5.822c6d59.js                      |  1227 -
 zh-CN/assets/js/516.0f704221.js                    | 26575 ----------
 zh-CN/assets/js/525.d5635339.js                    | 10814 ----
 zh-CN/assets/js/5422.a961dbf1.js                   |     1 -
 zh-CN/assets/js/5525.5255e838.js                   |     1 -
 zh-CN/assets/js/565f0463.98ba2c29.js               |     1 -
 zh-CN/assets/js/565f0463.fdf7cce4.js               |     1 +
 zh-CN/assets/js/5771c448.8d74b733.js               |     1 +
 zh-CN/assets/js/5771c448.d9831883.js               |     1 -
 zh-CN/assets/js/5846.e79acaf6.js                   |     1 -
 zh-CN/assets/js/5ac42693.9f8a2fb5.js               |     1 -
 zh-CN/assets/js/5ac42693.a83ee12f.js               |     1 +
 zh-CN/assets/js/5b5253e0.0c2586dd.js               |     1 -
 zh-CN/assets/js/5b5253e0.0e3107ef.js               |     1 +
 zh-CN/assets/js/5b5f4945.1fe9662a.js               |     1 +
 zh-CN/assets/js/5b5f4945.30454d87.js               |     1 -
 .../{5e95c892.67ebe9ad.js => 5e95c892.383858ff.js} |     2 +-
 zh-CN/assets/js/6032.e67c911c.js                   |     1 -
 zh-CN/assets/js/643.5c39e096.js                    | 25919 ----------
 zh-CN/assets/js/6489.bc4ebc01.js                   |     1 -
 zh-CN/assets/js/6643.0dbf8676.js                   |     1 -
 zh-CN/assets/js/6685.98383bb2.js                   |     1 -
 zh-CN/assets/js/669.710427ef.js                    |  1242 -
 zh-CN/assets/js/685.82d4b9a0.js                    |  1410 -
 zh-CN/assets/js/692c6f9f.02828227.js               |     1 -
 zh-CN/assets/js/692c6f9f.27e0e08f.js               |     1 +
 zh-CN/assets/js/697.97d60bb9.js                    |   739 -
 zh-CN/assets/js/6b66dba1.9ef90053.js               |     1 +
 zh-CN/assets/js/6b66dba1.bde0b380.js               |     1 -
 zh-CN/assets/js/6f494215.b56bfc7d.js               |     1 -
 zh-CN/assets/js/6f494215.e5198bff.js               |     1 +
 zh-CN/assets/js/6fd9b8bb.51dadc51.js               |     1 +
 zh-CN/assets/js/6fd9b8bb.6dc30baf.js               |     1 -
 zh-CN/assets/js/70fd4878.93f6780a.js               |     1 -
 zh-CN/assets/js/70fd4878.ed771e60.js               |     1 +
 zh-CN/assets/js/7156.9bd2369b.js                   |     2 +
 zh-CN/assets/js/7156.9bd2369b.js.LICENSE.txt       |     8 +
 zh-CN/assets/js/719ef308.17c3707f.js               |     1 -
 zh-CN/assets/js/719ef308.cd04a37d.js               |     1 +
 .../assets/js/72f5456f.f5833345.js                 |     4 +-
 ...ICENSE.txt => 72f5456f.f5833345.js.LICENSE.txt} |     0
 zh-CN/assets/js/731fb1ee.305bcf92.js               |     1 -
 zh-CN/assets/js/731fb1ee.f33e4c71.js               |     1 +
 zh-CN/assets/js/744.95e9770e.js                    | 10065 ----
 zh-CN/assets/js/7744.a5b332a3.js                   |     1 -
 .../js/{7762.a8ba1189.js => 7762.a8202189.js}      |     2 +-
 zh-CN/assets/js/7892.eeacadb8.js                   |     1 -
 zh-CN/assets/js/7f220a89.0ba0a9f4.js               |     1 +
 zh-CN/assets/js/7f220a89.918b1c1e.js               |     1 -
 zh-CN/assets/js/8.0f1a168f.js                      | 14570 ------
 zh-CN/assets/js/8310.ee3cef01.js                   |     1 -
 zh-CN/assets/js/846.0218453f.js                    |  2106 -
 zh-CN/assets/js/872d4ab4.220011f0.js               |     1 -
 zh-CN/assets/js/872d4ab4.b973aa9a.js               |     1 +
 zh-CN/assets/js/8908.a6c19329.js                   |     1 -
 zh-CN/assets/js/892.837803ad.js                    |     1 -
 zh-CN/assets/js/892.87df91dd.js                    | 28262 ----------
 zh-CN/assets/js/8992.0472a0ab.js                   |     1 -
 .../assets/js/8b3a140c.7c8d8c38.js                 |     4 +-
 ...ICENSE.txt => 8b3a140c.7c8d8c38.js.LICENSE.txt} |     0
 zh-CN/assets/js/908.f74f140d.js                    |  1758 -
 zh-CN/assets/js/93.865c82a7.js                     | 25876 ----------
 zh-CN/assets/js/9357.967dd3dc.js                   |     1 -
 .../{935f2afb.8df5249b.js => 935f2afb.a6be6ab7.js} |     2 +-
 zh-CN/assets/js/992.32945d3b.js                    |   540 -
 .../{9e4087bc.93101ad2.js => 9e4087bc.89e8c427.js} |     2 +-
 zh-CN/assets/js/a4adfb7f.8a340492.js               |     1 +
 zh-CN/assets/js/a4adfb7f.adcbf3fb.js               |     1 -
 zh-CN/assets/js/a5b0ceb9.375a0e07.js               |     1 -
 zh-CN/assets/js/a5b0ceb9.5ef6dc45.js               |     1 +
 .../{a72448b0.942fdbb1.js => a72448b0.ff48a241.js} |     4 +-
 ...ICENSE.txt => a72448b0.ff48a241.js.LICENSE.txt} |     0
 zh-CN/assets/js/bb350c59.f1c878a2.js               |     1 +
 zh-CN/assets/js/bb350c59.f9849bcb.js               |     1 -
 zh-CN/assets/js/c8c000df.f58e9952.js               |     1 -
 zh-CN/assets/js/c8c000df.fc78ad9b.js               |     1 +
 zh-CN/assets/js/ca3ced4f.12b5593f.js               |     1 -
 zh-CN/assets/js/ca3ced4f.fa80d89b.js               |     1 +
 zh-CN/assets/js/cb37bc33.acf84467.js               |     1 -
 zh-CN/assets/js/cb37bc33.db9b1f9e.js               |     1 +
 zh-CN/assets/js/d7ef3cd8.1655c1eb.js               |     1 -
 zh-CN/assets/js/d7ef3cd8.b1d3ac10.js               |     1 +
 zh-CN/assets/js/da6654f2.47ef426f.js               |     1 -
 zh-CN/assets/js/da6654f2.a730b11d.js               |     1 +
 zh-CN/assets/js/dc8b965f.4b223af7.js               |     1 -
 zh-CN/assets/js/dc8b965f.59cea4ec.js               |     1 +
 zh-CN/assets/js/e4ae456e.092e2c0e.js               |     1 -
 zh-CN/assets/js/e4ae456e.ac149a0e.js               |     1 +
 zh-CN/assets/js/eafd45de.70180bdc.js               |     1 -
 zh-CN/assets/js/eafd45de.e779f0da.js               |     1 +
 zh-CN/assets/js/f8a2828b.7f40145f.js               |     1 +
 zh-CN/assets/js/f8a2828b.a6a0757d.js               |     1 -
 zh-CN/assets/js/main.068c7d4c.js                   |     2 +
 ...js.LICENSE.txt => main.068c7d4c.js.LICENSE.txt} |     0
 zh-CN/assets/js/main.bcdf1aeb.js                   |     2 -
 zh-CN/assets/js/runtime~main.5c2bd1a1.js           |     1 +
 zh-CN/assets/js/runtime~main.63cb7c9c.js           |     1 -
 .../2023/05/11/answer-1.0.9-release/index.html     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../2023/06/15/answer-1.1.0-release/index.html     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../24/answer-enters-apache-incubator/index.html   |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../answer-1.2.1-ask-better-find-better/index.html |     7 +-
 .../first-contribution-come-to-answer/index.html   |     7 +-
 .../blog/2024/01/26/deploy-answer-https/index.html |     7 +-
 .../index.html                                     |     7 +-
 .../index.html                                     |     7 +-
 .../2024/02/20/answer-1.2.5-is-ready/index.html    |     7 +-
 zh-CN/blog/archive/index.html                      |     7 +-
 zh-CN/blog/category/best-practice/index.html       |     7 +-
 zh-CN/blog/category/community/index.html           |     7 +-
 zh-CN/blog/category/insights/index.html            |     7 +-
 zh-CN/blog/category/release/index.html             |     7 +-
 zh-CN/blog/category/tech/index.html                |     7 +-
 zh-CN/blog/category/tutorials/index.html           |     7 +-
 zh-CN/blog/index.html                              |     7 +-
 zh-CN/blog/page/2/index.html                       |     7 +-
 zh-CN/blog/tags/index.html                         |     7 +-
 zh-CN/blog/tags/tutorials/index.html               |     7 +-
 zh-CN/community/about/index.html                   |     9 +-
 zh-CN/community/blog-post/index.html               |     9 +-
 zh-CN/community/contributing/index.html            |     9 +-
 zh-CN/community/development/index.html             |     9 +-
 zh-CN/community/how-to-release/index.html          |     9 +-
 zh-CN/community/index.html                         |     9 +-
 zh-CN/community/issues/index.html                  |     9 +-
 zh-CN/community/plugins/index.html                 |     9 +-
 zh-CN/community/plugins/plugin-config/index.html   |     9 +-
 .../plugins/plugin-translation/index.html          |     9 +-
 zh-CN/community/pull-request/index.html            |     9 +-
 zh-CN/community/security/index.html                |     9 +-
 zh-CN/community/translation/index.html             |     9 +-
 zh-CN/contact/index.html                           |     7 +-
 zh-CN/docs/api/index.html                          |     9 +-
 zh-CN/docs/command-line/index.html                 |     9 +-
 zh-CN/docs/configfile/index.html                   |     9 +-
 zh-CN/docs/contributing/notice/index.html          |     9 +-
 zh-CN/docs/database/index.html                     |     9 +-
 zh-CN/docs/env/index.html                          |     9 +-
 zh-CN/docs/faq/index.html                          |     9 +-
 zh-CN/docs/flags/index.html                        |     9 +-
 zh-CN/docs/index.html                              |     9 +-
 zh-CN/docs/installation/index.html                 |     9 +-
 zh-CN/docs/moderation/index.html                   |     9 +-
 zh-CN/docs/permission/index.html                   |     9 +-
 zh-CN/docs/plugins/index.html                      |     9 +-
 zh-CN/docs/questions/index.html                    |    16 +-
 zh-CN/docs/reputation/index.html                   |     9 +-
 zh-CN/docs/review/index.html                       |     9 +-
 zh-CN/docs/settings/index.html                     |     9 +-
 zh-CN/docs/tags/index.html                         |     9 +-
 zh-CN/docs/upgrade/index.html                      |     9 +-
 zh-CN/docs/users/index.html                        |    15 +-
 zh-CN/img/docs/questions-answer-status.drawio.svg  |   173 +
 .../img/docs/questions-question-status.drawio.svg  |   226 +
 zh-CN/img/docs/users-oauth.drawio.svg              |   500 +
 zh-CN/img/docs/users-signup.drawio.svg             |   188 +
 zh-CN/img/screenshot.png                           |   Bin 61506 -> 88558 bytes
 zh-CN/index.html                                   |     7 +-
 zh-CN/plugins/index.html                           |     7 +-
 zh-CN/search/index.html                            |     7 +-
 466 files changed, 5012 insertions(+), 509124 deletions(-)

diff --git a/404.html b/404.html
index 7bb02265..b7a5f54f 100644
--- a/404.html
+++ b/404.html
@@ -8,10 +8,9 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Answer Atom Feed">
 
 
-
-<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.2252c3e0.css">
-<script src="/assets/js/runtime~main.fd137039.js" defer="defer"></script>
-<script src="/assets/js/main.8ba0868c.js" defer="defer"></script>
+<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.ed57e243.css">
+<script src="/assets/js/runtime~main.11e48caf.js" defer="defer"></script>
+<script src="/assets/js/main.01c4bcd3.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/assets/css/styles.2252c3e0.css b/assets/css/styles.ed57e243.css
similarity index 80%
rename from assets/css/styles.2252c3e0.css
rename to assets/css/styles.ed57e243.css
index 45f3fc23..d238b875 100644
--- a/assets/css/styles.2252c3e0.css
+++ b/assets/css/styles.ed57e243.css
@@ -1 +1 @@
-@charset "UTF-8";.col,.container{padding:0 var(--ifm-spacing-horizontal)}a code,pre code{color:inherit}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.btn,.button{-webkit-user-select:none}.button--outline.button--active,.button--outline:active,.but [...]
\ No newline at end of file
+@charset "UTF-8";.col,.container{padding:0 var(--ifm-spacing-horizontal)}a code,pre code{color:inherit}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.btn,.button{-webkit-user-select:none}.button--outline.button--active,.button--outline:active,.but [...]
\ No newline at end of file
diff --git a/assets/images/questions-answer-status.drawio-c037079cbbf31ac37fdb578bb32a35c7.svg b/assets/images/questions-answer-status.drawio-c037079cbbf31ac37fdb578bb32a35c7.svg
new file mode 100644
index 00000000..53d3f9ab
--- /dev/null
+++ b/assets/images/questions-answer-status.drawio-c037079cbbf31ac37fdb578bb32a35c7.svg
@@ -0,0 +1,173 @@
+<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="187px" height="422px" viewBox="-0.5 -0.5 187 422" content="&lt;mxfile&gt;&lt;diagram id=&quot;rdafppzy02LZrHV_124Y&quot; name=&quot;Page-1&quot;&gt;3VdNc5swEP01XD18GGMfHX+kl3Yy9WTanDoqbIBWIEbIBvrrK8ICIrJdT23HaU+wTytp9fbtCgxnkZT3nGTRRxYANWwzKA1nadi2ZVmefNRI1SCe4zRAyOMAnXpgE/8CBE1Et3EA+cBRMEZFnA1Bn6Up+GKAEc5ZMXR7ZnS4a0ZC0ICNT6iOfokDETXo1PZ6/APEYdTubE1mzUhCWmc8SR6RgBUK5K [...]
+    <defs/>
+    <g>
+        <path d="M 125 61 L 125 114.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 125 119.88 L 121.5 112.88 L 125 114.63 L 128.5 112.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <ellipse cx="125" cy="31" rx="50" ry="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 31px; margin-left: 76px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Create
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="125" y="35" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Create
+                </text>
+            </switch>
+        </g>
+        <path d="M 155 181 L 155 234.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 155 239.88 L 151.5 232.88 L 155 234.63 L 158.5 232.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 211px; margin-left: 155px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                Approve
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="155" y="214" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    Approve
+                </text>
+            </switch>
+        </g>
+        <path d="M 65 151 L 25 151 Q 15 151 15 161 L 15 381 Q 15 391 25 391 L 58.63 391" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 63.88 391 L 56.88 394.5 L 58.63 391 L 56.88 387.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 271px; margin-left: 15px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                Reject
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="15" y="274" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    Reject
+                </text>
+            </switch>
+        </g>
+        <rect x="65" y="121" width="120" height="60" rx="7" ry="7" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-dasharray="6 6" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 151px; margin-left: 66px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Pending
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="125" y="155" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Pending
+                </text>
+            </switch>
+        </g>
+        <path d="M 155 301 L 155 354.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 155 359.88 L 151.5 352.88 L 155 354.63 L 158.5 352.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 331px; margin-left: 155px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                ☑️ Delete
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="155" y="334" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    ☑️ Delete
+                </text>
+            </switch>
+        </g>
+        <path d="M 95 241 L 95 187.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 95 182.12 L 98.5 189.12 L 95 187.37 L 91.5 189.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 211px; margin-left: 95px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                Unapprove
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="95" y="214" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    Unapprove
+                </text>
+            </switch>
+        </g>
+        <rect x="65" y="241" width="120" height="60" rx="7" ry="7" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 271px; margin-left: 66px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Normal
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="125" y="275" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Normal
+                </text>
+            </switch>
+        </g>
+        <path d="M 95 361 L 95 307.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 95 302.12 L 98.5 309.12 L 95 307.37 L 91.5 309.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 331px; margin-left: 95px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                Undelete
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="95" y="334" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    Undelete
+                </text>
+            </switch>
+        </g>
+        <rect x="65" y="361" width="120" height="60" rx="7" ry="7" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 391px; margin-left: 66px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Deleted
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="125" y="395" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Deleted
+                </text>
+            </switch>
+        </g>
+    </g>
+    <switch>
+        <g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
+        <a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank">
+            <text text-anchor="middle" font-size="10px" x="50%" y="100%">
+                Text is not SVG - cannot display
+            </text>
+        </a>
+    </switch>
+</svg>
diff --git a/assets/images/questions-question-status.drawio-ba8e6f72b87ff5452bcc4dd8cbdc7dea.svg b/assets/images/questions-question-status.drawio-ba8e6f72b87ff5452bcc4dd8cbdc7dea.svg
new file mode 100644
index 00000000..3a483cc2
--- /dev/null
+++ b/assets/images/questions-question-status.drawio-ba8e6f72b87ff5452bcc4dd8cbdc7dea.svg
@@ -0,0 +1,226 @@
+<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="397px" height="422px" viewBox="-0.5 -0.5 397 422" content="&lt;mxfile&gt;&lt;diagram id=&quot;rdafppzy02LZrHV_124Y&quot; name=&quot;Page-1&quot;&gt;3VhNc5swEP01XDMIGWMfE8duL+1kkum0PXVUawO0AjFCtqG/vsKID0V2zIxt0vRk9rGS0NuntxgHL5LigyBZ9IlTYI7n0sLB947nIYQC9VMhZY0EGNdAKGKqkzrgKf4DGnQ1uokp5Eai5JzJODPBNU9TWEsDI0LwnZn2zJm5akZCsICnNWE2+jWmMqrRmRd0+EeIw6hZGU3n9Z2ENMl6J3lEKN/1IL [...]
+    <defs/>
+    <g>
+        <path d="M 125 61 L 125 114.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 125 119.88 L 121.5 112.88 L 125 114.63 L 128.5 112.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <ellipse cx="125" cy="31" rx="50" ry="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 31px; margin-left: 76px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Create
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="125" y="35" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Create
+                </text>
+            </switch>
+        </g>
+        <path d="M 155 181 L 155 234.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 155 239.88 L 151.5 232.88 L 155 234.63 L 158.5 232.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 211px; margin-left: 155px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                Approve
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="155" y="214" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    Approve
+                </text>
+            </switch>
+        </g>
+        <path d="M 65 151 L 25 151 Q 15 151 15 161 L 15 381 Q 15 391 25 391 L 58.63 391" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 63.88 391 L 56.88 394.5 L 58.63 391 L 56.88 387.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 271px; margin-left: 15px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                Reject
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="15" y="274" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    Reject
+                </text>
+            </switch>
+        </g>
+        <rect x="65" y="121" width="120" height="60" rx="7" ry="7" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-dasharray="6 6" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 151px; margin-left: 66px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Pending
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="125" y="155" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Pending
+                </text>
+            </switch>
+        </g>
+        <path d="M 155 301 L 155 354.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 155 359.88 L 151.5 352.88 L 155 354.63 L 158.5 352.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 331px; margin-left: 155px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                ☑️ Delete
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="155" y="334" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    ☑️ Delete
+                </text>
+            </switch>
+        </g>
+        <path d="M 95 241 L 95 187.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 95 182.12 L 98.5 189.12 L 95 187.37 L 91.5 189.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 211px; margin-left: 95px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                Unapprove
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="95" y="214" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    Unapprove
+                </text>
+            </switch>
+        </g>
+        <path d="M 185 286 L 268.63 286" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 273.88 286 L 266.88 289.5 L 268.63 286 L 266.88 282.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 286px; margin-left: 230px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                ☑️ Close
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="230" y="289" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    ☑️ Close
+                </text>
+            </switch>
+        </g>
+        <rect x="65" y="241" width="120" height="60" rx="7" ry="7" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 271px; margin-left: 66px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Normal
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="125" y="275" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Normal
+                </text>
+            </switch>
+        </g>
+        <path d="M 95 361 L 95 307.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 95 302.12 L 98.5 309.12 L 95 307.37 L 91.5 309.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 331px; margin-left: 95px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                Undelete
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="95" y="334" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    Undelete
+                </text>
+            </switch>
+        </g>
+        <rect x="65" y="361" width="120" height="60" rx="7" ry="7" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 391px; margin-left: 66px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Deleted
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="125" y="395" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Deleted
+                </text>
+            </switch>
+        </g>
+        <path d="M 275 256 L 191.37 256" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 186.12 256 L 193.12 252.5 L 191.37 256 L 193.12 259.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 256px; margin-left: 230px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                Reopen
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="230" y="259" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    Reopen
+                </text>
+            </switch>
+        </g>
+        <rect x="275" y="241" width="120" height="60" rx="7" ry="7" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 271px; margin-left: 276px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Closed
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="335" y="275" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Closed
+                </text>
+            </switch>
+        </g>
+    </g>
+    <switch>
+        <g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
+        <a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank">
+            <text text-anchor="middle" font-size="10px" x="50%" y="100%">
+                Text is not SVG - cannot display
+            </text>
+        </a>
+    </switch>
+</svg>
diff --git a/assets/images/screenshot-74a5a4658de6431b7c42f3bd3de532f9.png b/assets/images/screenshot-74a5a4658de6431b7c42f3bd3de532f9.png
deleted file mode 100644
index cbce3f2e..00000000
Binary files a/assets/images/screenshot-74a5a4658de6431b7c42f3bd3de532f9.png and /dev/null differ
diff --git a/assets/images/screenshot-c118d2fcfb1faaf1d9df2e8b5e8bc1a8.png b/assets/images/screenshot-c118d2fcfb1faaf1d9df2e8b5e8bc1a8.png
new file mode 100644
index 00000000..555de500
Binary files /dev/null and b/assets/images/screenshot-c118d2fcfb1faaf1d9df2e8b5e8bc1a8.png differ
diff --git a/assets/images/users-oauth.drawio-1bf9a76ad7f50a2b20755d20b739feea.svg b/assets/images/users-oauth.drawio-1bf9a76ad7f50a2b20755d20b739feea.svg
new file mode 100644
index 00000000..c4e6e7ea
--- /dev/null
+++ b/assets/images/users-oauth.drawio-1bf9a76ad7f50a2b20755d20b739feea.svg
@@ -0,0 +1,500 @@
+<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="802px" height="792px" viewBox="-0.5 -0.5 802 792" content="&lt;mxfile&gt;&lt;diagram id=&quot;tPTqrfC_AW58oQTuRV51&quot; name=&quot;Page-1&quot;&gt;5VpLc6M4EP41vqYsxMM5Op5MZqtmdlOVw25OWxpQsGqw5BIitufXb8sI8xDOEA8GO3sy3RYIff31Qy0meLHaPkiyXn4TEU0mzjTaTvCnieMghAL40ZpdrgkwzhWxZJEZVCqe2E9qlFOjzVhE09pAJUSi2LquDAXnNFQ1HZFSbOrDXkRSn3VNYmopnkKS2Nq/WaSWuXbmBKX+C2XxspgZ+bf5PytSDD [...]
+    <defs/>
+    <g>
+        <path d="M 602 61 L 602 124.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 602 129.88 L 598.5 122.88 L 602 124.63 L 605.5 122.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 96px; margin-left: 602px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                OAuth authorization
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="602" y="99" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    OAuth authorization
+                </text>
+            </switch>
+        </g>
+        <path d="M 552 181 L 382 181 Q 372 181 372 191 L 372 214.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 372 219.88 L 368.5 212.88 L 372 214.63 L 375.5 212.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 181px; margin-left: 442px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                No
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="442" y="184" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    No
+                </text>
+            </switch>
+        </g>
+        <path d="M 652 181 L 782 181 Q 792 181 792 191 L 792 751 Q 792 761 782 761 L 658.37 761" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 653.12 761 L 660.12 757.5 L 658.37 761 L 660.12 764.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 471px; margin-left: 792px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                Yes
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="792" y="474" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    Yes
+                </text>
+            </switch>
+        </g>
+        <path d="M 602 131 L 652 181 L 602 231 L 552 181 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 181px; margin-left: 553px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Authorized
+                                <br/>
+                                record already exists
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="602" y="185" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Authorized...
+                </text>
+            </switch>
+        </g>
+        <path d="M 422 271 L 512 271 Q 522 271 522 281 L 522 294.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 522 299.88 L 518.5 292.88 L 522 294.63 L 525.5 292.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 271px; margin-left: 487px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                Yes
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="487" y="274" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    Yes
+                </text>
+            </switch>
+        </g>
+        <path d="M 322 271 L 212 271 Q 202 271 202 281 L 202 314.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 202 319.88 L 198.5 312.88 L 202 314.63 L 205.5 312.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 271px; margin-left: 237px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                No
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="237" y="274" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    No
+                </text>
+            </switch>
+        </g>
+        <path d="M 372 221 L 422 271 L 372 321 L 322 271 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 271px; margin-left: 323px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Can get email
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="372" y="275" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Can get email
+                </text>
+            </switch>
+        </g>
+        <path d="M 582.61 731 L 621.39 731 C 638.29 731 652 744.43 652 761 C 652 777.57 638.29 791 621.39 791 L 582.61 791 C 565.71 791 552 777.57 552 761 C 552 744.43 565.71 731 582.61 731 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 761px; margin-left: 553px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Login success
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="602" y="765" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Login success
+                </text>
+            </switch>
+        </g>
+        <path d="M 472 351 L 258.37 351" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 253.12 351 L 260.12 347.5 L 258.37 351 L 260.12 354.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 351px; margin-left: 362px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                Yes
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="362" y="354" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    Yes
+                </text>
+            </switch>
+        </g>
+        <path d="M 572 351 L 592 351 Q 602 351 602 361 L 602 444.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 602 449.88 L 598.5 442.88 L 602 444.63 L 605.5 442.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 386px; margin-left: 602px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                No
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="602" y="389" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    No
+                </text>
+            </switch>
+        </g>
+        <path d="M 522 301 L 572 351 L 522 401 L 472 351 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 351px; margin-left: 473px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                3rd
+                                <br/>
+                                returned unverified
+                                <br/>
+                                email
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="522" y="355" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    3rd...
+                </text>
+            </switch>
+        </g>
+        <path d="M 202 381 L 202 444.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 202 449.88 L 198.5 442.88 L 202 444.63 L 205.5 442.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <rect x="152" y="321" width="100" height="60" rx="7" ry="7" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 351px; margin-left: 153px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Input email
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="202" y="355" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Input email
+                </text>
+            </switch>
+        </g>
+        <path d="M 652 501 L 712 501 Q 722 501 722 511 L 722 554.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 722 559.88 L 718.5 552.88 L 722 554.63 L 725.5 552.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 501px; margin-left: 717px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                No
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="717" y="504" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    No
+                </text>
+            </switch>
+        </g>
+        <path d="M 552 501 L 492 501 Q 482 501 482 511 L 482 554.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 482 559.88 L 478.5 552.88 L 482 554.63 L 485.5 552.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 501px; margin-left: 487px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                Yes
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="487" y="504" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    Yes
+                </text>
+            </switch>
+        </g>
+        <path d="M 602 451 L 652 501 L 602 551 L 552 501 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 501px; margin-left: 553px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Email
+                                <br/>
+                                already
+                                <br/>
+                                exists
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="602" y="505" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Email...
+                </text>
+            </switch>
+        </g>
+        <path d="M 722 621 L 722 666 Q 722 676 712 676 L 612 676 Q 602 676 602 686 L 602 724.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 602 729.88 L 598.5 722.88 L 602 724.63 L 605.5 722.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <rect x="672" y="561" width="100" height="60" rx="7" ry="7" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 591px; margin-left: 673px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Create new account
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="722" y="595" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Create new accou...
+                </text>
+            </switch>
+        </g>
+        <path d="M 482 621 L 482 666 Q 482 676 492 676 L 592 676 Q 602 676 602 686 L 602 724.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 602 729.88 L 598.5 722.88 L 602 724.63 L 605.5 722.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <rect x="432" y="561" width="100" height="60" rx="7" ry="7" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 591px; margin-left: 433px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Connect to existing account
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="482" y="595" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Connect to exist...
+                </text>
+            </switch>
+        </g>
+        <path d="M 152 501 L 102 501 Q 92 501 92 511 L 92 534.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 92 539.88 L 88.5 532.88 L 92 534.63 L 95.5 532.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 501px; margin-left: 102px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                Yes
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="102" y="504" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    Yes
+                </text>
+            </switch>
+        </g>
+        <path d="M 252 501 L 302 501 Q 312 501 312 511 L 312 554.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 312 559.88 L 308.5 552.88 L 312 554.63 L 315.5 552.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 501px; margin-left: 312px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                No
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="312" y="504" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    No
+                </text>
+            </switch>
+        </g>
+        <path d="M 202 451 L 252 501 L 202 551 L 152 501 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 501px; margin-left: 153px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Email
+                                <br/>
+                                already
+                                <br/>
+                                exists
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="202" y="505" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Email...
+                </text>
+            </switch>
+        </g>
+        <path d="M 202 711 L 202 751 Q 202 761 212 761 L 545.63 761" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 550.88 761 L 543.88 764.5 L 545.63 761 L 543.88 757.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <rect x="152" y="651" width="100" height="60" rx="7" ry="7" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 681px; margin-left: 153px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Activate
+                                <br/>
+                                via email
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="202" y="685" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Activate...
+                </text>
+            </switch>
+        </g>
+        <path d="M 312 621 L 312 671 Q 312 681 302 681 L 258.37 681" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 253.12 681 L 260.12 677.5 L 258.37 681 L 260.12 684.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <rect x="262" y="561" width="100" height="60" rx="7" ry="7" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 591px; margin-left: 263px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Create new account
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="312" y="595" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Create new accou...
+                </text>
+            </switch>
+        </g>
+        <path d="M 92 641 L 92 671 Q 92 681 102 681 L 145.63 681" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 150.88 681 L 143.88 684.5 L 145.63 681 L 143.88 677.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 681px; margin-left: 102px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                Yes
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="102" y="684" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    Yes
+                </text>
+            </switch>
+        </g>
+        <path d="M 42 591 L 37 591 Q 32 591 32 581 L 32 361 Q 32 351 42 351 L 145.63 351" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
+        <path d="M 150.88 351 L 143.88 354.5 L 145.63 351 L 143.88 347.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 416px; margin-left: 32px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">
+                                No,
+                                <br/>
+                                change email
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="32" y="419" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">
+                    No,...
+                </text>
+            </switch>
+        </g>
+        <path d="M 92 541 L 142 591 L 92 641 L 42 591 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 591px; margin-left: 43px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Connect
+                                <br/>
+                                to existing
+                                <br/>
+                                account
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="92" y="595" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Connect...
+                </text>
+            </switch>
+        </g>
+        <ellipse cx="602" cy="31" rx="50" ry="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 31px; margin-left: 553px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
+                                Login
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="602" y="35" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Login
+                </text>
+            </switch>
+        </g>
+    </g>
+    <switch>
+        <g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
+        <a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank">
+            <text text-anchor="middle" font-size="10px" x="50%" y="100%">
+                Text is not SVG - cannot display
+            </text>
+        </a>
+    </switch>
+</svg>
diff --git a/assets/images/users-signup.drawio-71d1d02e80eeaa95c58a30d2451df863.svg b/assets/images/users-signup.drawio-71d1d02e80eeaa95c58a30d2451df863.svg
new file mode 100644
index 00000000..cb29ca16
--- /dev/null
+++ b/assets/images/users-signup.drawio-71d1d02e80eeaa95c58a30d2451df863.svg
@@ -0,0 +1,188 @@
+<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="601px" height="431px" viewBox="-0.5 -0.5 601 431" content="&lt;mxfile&gt;&lt;diagram id=&quot;RegsoFfogUOMrwS3RCim&quot; name=&quot;Page-1&quot;&gt;3Zhdb5swFIZ/TW6jgANJL/u9XWyaFGlbryYXTsCqwZFtCtmv33EwAeIma9ouRLtJfF7bYD+cD8OIXGfVvaSr9IuIgY/8SVyNyM3I9z3Pm+GfUda1MiOkFhLJYjuoFRbsN1hxYtWCxaB6A7UQXLNVX4xEnkOkexqVUpT9YUvB+3dd0QQcYRFR7qo/WKzTWp37s1b/BCxJmzt74UXdk9FmsN2JSmksyo [...]
+    <defs/>
+    <g>
+        <path d="M 0 23 L 0 0 L 200 0 L 200 23" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
+        <path d="M 0 23 L 0 430 L 200 430 L 200 23" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <path d="M 0 23 L 200 23" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 12px; margin-left: 1px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">
+                                Guest
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="100" y="15" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">
+                    Guest
+                </text>
+            </switch>
+        </g>
+        <ellipse cx="100" cy="80" rx="50" ry="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="none"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 80px; margin-left: 51px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
+                                Sign up
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="100" y="84" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Sign up
+                </text>
+            </switch>
+        </g>
+        <path d="M 200 23 L 200 0 L 400 0 L 400 23" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <path d="M 200 23 L 200 430 L 400 430 L 400 23" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <path d="M 200 23 L 400 23" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 12px; margin-left: 201px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">
+                                Inactive user
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="300" y="15" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">
+                    Inactive user
+                </text>
+            </switch>
+        </g>
+        <rect x="250" y="240" width="100" height="60" rx="7" ry="7" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="none"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 270px; margin-left: 251px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
+                                Visit
+                                <br/>
+                                activation link
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="300" y="274" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Visit...
+                </text>
+            </switch>
+        </g>
+        <rect x="250" y="140" width="100" height="60" rx="7" ry="7" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="none"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 170px; margin-left: 251px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
+                                Send confirm
+                                <br/>
+                                email
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="300" y="174" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Send confirm...
+                </text>
+            </switch>
+        </g>
+        <path d="M 300 200 L 300 233.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <path d="M 300 238.88 L 296.5 231.88 L 300 233.63 L 303.5 231.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <path d="M 400 23 L 400 0 L 600 0 L 600 23" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <path d="M 400 23 L 400 430 L 600 430 L 600 23" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <path d="M 400 23 L 600 23" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 12px; margin-left: 401px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">
+                                Normal user
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="500" y="15" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">
+                    Normal user
+                </text>
+            </switch>
+        </g>
+        <rect x="450" y="240" width="100" height="60" rx="7" ry="7" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="none"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 270px; margin-left: 451px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
+                                Active
+                                <br/>
+                                successful
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="500" y="274" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Active...
+                </text>
+            </switch>
+        </g>
+        <path d="M 100 110 L 100 133.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <path d="M 100 138.88 L 96.5 131.88 L 100 133.63 L 103.5 131.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <path d="M 150 170 L 243.63 170" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <path d="M 248.88 170 L 241.88 173.5 L 243.63 170 L 241.88 166.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <rect x="50" y="140" width="100" height="60" rx="7" ry="7" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="none"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 170px; margin-left: 51px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
+                                Fill sign up form
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="100" y="174" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    Fill sign up form
+                </text>
+            </switch>
+        </g>
+        <path d="M 350 270 L 443.63 270" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <path d="M 448.88 270 L 441.88 273.5 L 443.63 270 L 441.88 266.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <path d="M 480.61 340 L 519.39 340 C 536.29 340 550 353.43 550 370 C 550 386.57 536.29 400 519.39 400 L 480.61 400 C 463.71 400 450 386.57 450 370 C 450 353.43 463.71 340 480.61 340 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
+        <g transform="translate(-0.5 -0.5)">
+            <switch>
+                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
+                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 370px; margin-left: 451px;">
+                        <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
+                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
+                                End
+                            </div>
+                        </div>
+                    </div>
+                </foreignObject>
+                <text x="500" y="374" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
+                    End
+                </text>
+            </switch>
+        </g>
+        <path d="M 500 300 L 500 333.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+        <path d="M 500 338.88 L 496.5 331.88 L 500 333.63 L 503.5 331.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/>
+    </g>
+    <switch>
+        <g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
+        <a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank">
+            <text text-anchor="middle" font-size="10px" x="50%" y="100%">
+                Text is not SVG - cannot display
+            </text>
+        </a>
+    </switch>
+</svg>
diff --git a/zh-CN/assets/js/01a85c17.6709a49d.js b/assets/js/01a85c17.ea1681f0.js
similarity index 97%
rename from zh-CN/assets/js/01a85c17.6709a49d.js
rename to assets/js/01a85c17.ea1681f0.js
index cea68ec3..00f56472 100644
--- a/zh-CN/assets/js/01a85c17.6709a49d.js
+++ b/assets/js/01a85c17.ea1681f0.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4013],{18431:(e,t,s)=>{s.d(t,{Z:()=>v});var a=s(85170),i=s(45924),r=s(31355),l=s(1935),n=s(10205),c=s(36426),o=s(31148),m=s(87365);function d(e){const{pathname:t}=(0,o.TH)();return(0,a.useMemo)((()=>e.filter((e=>function(e,t){return!(e.unlisted&&!(0,m.Mg)(e.permalink,t))}(e,t)))),[e,t])}const g={sidebar:"sidebar_vR_X",sidebarItemTitle:"sidebarItemTitle_MbQt",sidebarItemList:"sidebarItemList_qTWL",sidebarItem:"sideb [...]
\ No newline at end of file
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4013],{18431:(e,t,s)=>{s.d(t,{Z:()=>v});var a=s(85170),i=s(45924),r=s(70647),l=s(1935),n=s(10205),c=s(36426),o=s(31148),m=s(87365);function d(e){const{pathname:t}=(0,o.TH)();return(0,a.useMemo)((()=>e.filter((e=>function(e,t){return!(e.unlisted&&!(0,m.Mg)(e.permalink,t))}(e,t)))),[e,t])}const g={sidebar:"sidebar_vR_X",sidebarItemTitle:"sidebarItemTitle_MbQt",sidebarItemList:"sidebarItemList_qTWL",sidebarItem:"sideb [...]
\ No newline at end of file
diff --git a/assets/js/0480b142.04edd1ae.js b/assets/js/0480b142.04edd1ae.js
deleted file mode 100644
index bedcaa3d..00000000
--- a/assets/js/0480b142.04edd1ae.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[836],{4398:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>l});var a=n(43010),s=n(90887);const i={slug:"/faq"},r="FAQ",o={id:"faq",title:"FAQ",description:"How do I access the installation page?",source:"@site/docs/faq.md",sourceDirName:".",slug:"/faq",permalink:"/docs/faq",draft:!1,unlisted:!1,editUrl:"https://github.com/apache/incubator-answer-website [...]
\ No newline at end of file
diff --git a/assets/js/0480b142.c96108ee.js b/assets/js/0480b142.c96108ee.js
new file mode 100644
index 00000000..0a711feb
--- /dev/null
+++ b/assets/js/0480b142.c96108ee.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[836],{4398:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>r,toc:()=>l});var a=n(43010),s=n(90887);const i={slug:"/faq"},o="FAQ",r={id:"faq",title:"FAQ",description:"How do I access the installation page?",source:"@site/docs/faq.md",sourceDirName:".",slug:"/faq",permalink:"/docs/faq",draft:!1,unlisted:!1,editUrl:"https://github.com/apache/incubator-answer-website [...]
\ No newline at end of file
diff --git a/assets/js/1008.647e7b10.js b/assets/js/1008.647e7b10.js
deleted file mode 100644
index b6aebbb9..00000000
--- a/assets/js/1008.647e7b10.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1008],{21008:(t,i,e)=>{e.d(i,{diagram:()=>O});var s=e(28e3),n=e(3694),a=e(27509),h=(e(5726),e(91088),e(95591),function(){var t=function(t,i,e,s){for(e=e||{},s=t.length;s--;e[t[s]]=i);return e},i=[1,10,12,14,16,18,19,21,23],e=[2,6],s=[1,3],n=[1,5],a=[1,6],h=[1,7],o=[1,5,10,12,14,16,18,19,21,23,34,35,36],r=[1,25],l=[1,26],c=[1,28],g=[1,29],u=[1,30],x=[1,31],d=[1,32],p=[1,33],f=[1,34],y=[1,35],m=[1,36],b=[1,37],A=[1,4 [...]
\ No newline at end of file
diff --git a/assets/js/1061.4180c433.js b/assets/js/1061.559c3c1d.js
similarity index 94%
rename from assets/js/1061.4180c433.js
rename to assets/js/1061.559c3c1d.js
index a236ec0a..f28108f4 100644
--- a/assets/js/1061.4180c433.js
+++ b/assets/js/1061.559c3c1d.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1061],{63556:(e,t,n)=>{n.d(t,{Z:()=>a});n(85170);var i=n(45924),s=n(36426),o=n(70659),r=n(43010);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,i.Z)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(o.Z,{as:"h1",className:"hero__title",children:(0,r.jsx)(s.Z,{id:"theme.NotFound.title",de [...]
\ No newline at end of file
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1061],{63556:(e,t,n)=>{n.d(t,{Z:()=>a});n(85170);var i=n(45924),s=n(36426),o=n(70659),r=n(43010);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,i.Z)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(o.Z,{as:"h1",className:"hero__title",children:(0,r.jsx)(s.Z,{id:"theme.NotFound.title",de [...]
\ No newline at end of file
diff --git a/assets/js/1300.4c852510.js b/assets/js/1300.4c852510.js
deleted file mode 100644
index 4a4d6dc3..00000000
--- a/assets/js/1300.4c852510.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1300],{11300:(t,e,r)=>{r.d(e,{diagram:()=>D});var i=r(28e3),a=r(42521),n=r(27509),s=r(87892);const o=[];for(let S=0;S<256;++S)o.push((S+256).toString(16).slice(1));function c(t,e=0){return o[t[e+0]]+o[t[e+1]]+o[t[e+2]]+o[t[e+3]]+"-"+o[t[e+4]]+o[t[e+5]]+"-"+o[t[e+6]]+o[t[e+7]]+"-"+o[t[e+8]]+o[t[e+9]]+"-"+o[t[e+10]]+o[t[e+11]]+o[t[e+12]]+o[t[e+13]]+o[t[e+14]]+o[t[e+15]]}const l=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a [...]
\ No newline at end of file
diff --git a/assets/js/1516.94768e46.js b/assets/js/1516.94768e46.js
deleted file mode 100644
index 4ebc32a7..00000000
--- a/assets/js/1516.94768e46.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1516],{91584:(e,t,n)=>{n.d(t,{a:()=>l});var r=n(17521);function l(e,t){var n=e.append("foreignObject").attr("width","100000"),l=n.append("xhtml:div");l.attr("xmlns","http://www.w3.org/1999/xhtml");var o=t.label;switch(typeof o){case"function":l.insert(o);break;case"object":l.insert((function(){return o}));break;default:l.html(o)}r.bg(l,t.labelStyle),l.style("display","inline-block"),l.style("white-space","nowrap"); [...]
\ No newline at end of file
diff --git a/assets/js/1620c6a0.01a7e12a.js b/assets/js/1620c6a0.01a7e12a.js
deleted file mode 100644
index a52df8c4..00000000
--- a/assets/js/1620c6a0.01a7e12a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4945],{20533:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var t=i(43010),r=i(90887);const o={slug:"/plugins"},s="Contribute for Plugins",l={id:"contributing/plugins",title:"Contribute for Plugins",description:"Viewing the official plugin code will make you to quickly understand and learn plugin development.",source:"@site/community/contributing/p [...]
\ No newline at end of file
diff --git a/assets/js/1620c6a0.203cc2ba.js b/assets/js/1620c6a0.203cc2ba.js
new file mode 100644
index 00000000..f96f317b
--- /dev/null
+++ b/assets/js/1620c6a0.203cc2ba.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4945],{20533:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var t=i(43010),r=i(90887);const o={slug:"/plugins"},s="Contribute for Plugins",l={id:"contributing/plugins",title:"Contribute for Plugins",description:"Viewing the official plugin code will make you to quickly understand and learn plugin development.",source:"@site/community/contributing/p [...]
\ No newline at end of file
diff --git a/assets/js/1711.136f6393.js b/assets/js/1711.136f6393.js
deleted file mode 100644
index 28685434..00000000
--- a/assets/js/1711.136f6393.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 1711.136f6393.js.LICENSE.txt */
-(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1711],{91088:(t,e)=>{"use strict";e.Nm=e.Rq=void 0;var r=/^([^\w]*)(javascript|data|vbscript)/im,i=/&#(\w+)(^\w|;)?/g,n=/&(newline|tab);/gi,o=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,a=/^.+(:|&colon;)/gim,s=[".","/"];e.Rq="about:blank",e.Nm=function(t){if(!t)return e.Rq;var l,c=(l=t,l.replace(o,"").replace(i,(function(t,e){return String.fromCharCode(e)}))).replace(n,"").replace(o,"").trim();if(!c)return e.Rq;if(func [...]
\ No newline at end of file
diff --git a/assets/js/1711.136f6393.js.LICENSE.txt b/assets/js/1711.136f6393.js.LICENSE.txt
deleted file mode 100644
index b7611cc4..00000000
--- a/assets/js/1711.136f6393.js.LICENSE.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-/*!
-   * Wait for document loaded before starting the execution
-   */
-
-/*! @license DOMPurify 3.0.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.6/LICENSE */
-
-/*! Check if previously processed */
-
-/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */
-
-/**
- * Prism: Lightweight, robust, elegant syntax highlighting
- *
- * @license MIT <https://opensource.org/licenses/MIT>
- * @author Lea Verou <https://lea.verou.me>
- * @namespace
- * @public
- */
diff --git a/zh-CN/assets/js/17896441.8c9963e3.js b/assets/js/17896441.08e62453.js
similarity index 99%
rename from zh-CN/assets/js/17896441.8c9963e3.js
rename to assets/js/17896441.08e62453.js
index 139e4ae8..d071edad 100644
--- a/zh-CN/assets/js/17896441.8c9963e3.js
+++ b/assets/js/17896441.08e62453.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7918],{79308:(e,t,n)=>{n.d(t,{Z:()=>T});var s=n(85170),o=n(9772),a=n(45924),c=n(10227),i=n(71771),r=n(55335);const l={codeBlockContainer:"codeBlockContainer_APcc"};var d=n(43010);function u(e){let{as:t,...n}=e;const s=(0,c.p)(),o=(0,r.QC)(s);return(0,d.jsx)(t,{...n,style:o,className:(0,a.Z)(n.className,l.codeBlockContainer,i.k.common.codeBlock)})}const m={codeBlockContent:"codeBlockContent_m3Ux",codeBlockTitle:"cod [...]
\ No newline at end of file
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7918],{79308:(e,t,n)=>{n.d(t,{Z:()=>T});var s=n(85170),o=n(9772),a=n(45924),c=n(10227),i=n(71771),r=n(55335);const l={codeBlockContainer:"codeBlockContainer_APcc"};var d=n(43010);function u(e){let{as:t,...n}=e;const s=(0,c.p)(),o=(0,r.QC)(s);return(0,d.jsx)(t,{...n,style:o,className:(0,a.Z)(n.className,l.codeBlockContainer,i.k.common.codeBlock)})}const m={codeBlockContent:"codeBlockContent_m3Ux",codeBlockTitle:"cod [...]
\ No newline at end of file
diff --git a/assets/js/1a4e3797.43bebe37.js b/assets/js/1a4e3797.c608bffb.js
similarity index 99%
rename from assets/js/1a4e3797.43bebe37.js
rename to assets/js/1a4e3797.c608bffb.js
index 51ec8405..e04d0fd4 100644
--- a/assets/js/1a4e3797.43bebe37.js
+++ b/assets/js/1a4e3797.c608bffb.js
@@ -1,2 +1,2 @@
-/*! For license information please see 1a4e3797.43bebe37.js.LICENSE.txt */
-(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7920],{3698:e=>{function t(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function n(e){return"object"==typeof e&&null!==e}function i(e){return void 0===e}e.exports=t,t.prototype._events=void 0,t.prototype._maxListeners=void 0,t.defaultMaxListeners=10,t.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a p [...]
\ No newline at end of file
+/*! For license information please see 1a4e3797.c608bffb.js.LICENSE.txt */
+(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7920],{3698:e=>{function t(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function n(e){return"object"==typeof e&&null!==e}function i(e){return void 0===e}e.exports=t,t.prototype._events=void 0,t.prototype._maxListeners=void 0,t.defaultMaxListeners=10,t.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a p [...]
\ No newline at end of file
diff --git a/assets/js/1a4e3797.43bebe37.js.LICENSE.txt b/assets/js/1a4e3797.c608bffb.js.LICENSE.txt
similarity index 100%
rename from assets/js/1a4e3797.43bebe37.js.LICENSE.txt
rename to assets/js/1a4e3797.c608bffb.js.LICENSE.txt
diff --git a/assets/js/1a8837ce.03d18650.js b/assets/js/1a8837ce.03d18650.js
new file mode 100644
index 00000000..6adbe746
--- /dev/null
+++ b/assets/js/1a8837ce.03d18650.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9849],{1073:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var t=i(43010),s=i(90887);const r={slug:"/contributing"},o="Contributing",l={id:"contributing/contributing",title:"Contributing",description:"Thanks for your interest in contributing to Apache Answer, hopefully, this document makes the process for contributing clear.",source:"@site/communit [...]
\ No newline at end of file
diff --git a/assets/js/1a8837ce.99fcbdac.js b/assets/js/1a8837ce.99fcbdac.js
deleted file mode 100644
index 86aaa80d..00000000
--- a/assets/js/1a8837ce.99fcbdac.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9849],{1073:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var t=i(43010),s=i(90887);const r={slug:"/contributing"},o="Contributing",l={id:"contributing/contributing",title:"Contributing",description:"Thanks for your interest in contributing to Apache Answer, hopefully, this document makes the process for contributing clear.",source:"@site/communit [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/1df93b7f.c530523d.js b/assets/js/1df93b7f.a5074a14.js
similarity index 99%
rename from zh-CN/assets/js/1df93b7f.c530523d.js
rename to assets/js/1df93b7f.a5074a14.js
index d264a3c6..3a187719 100644
--- a/zh-CN/assets/js/1df93b7f.c530523d.js
+++ b/assets/js/1df93b7f.a5074a14.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3237],{34246:(A,e,s)=>{s.d(e,{Z:()=>t});s(85170);var o=s(45924),g=s(43010);const t=A=>{let{type:e="br",name:s,className:t,size:n,onClick:i,title:a=""}=A;return(0,g.jsx)("i",{className:(0,o.Z)(e,`bi-${s}`,t),style:{...n&&{fontSize:n}},onClick:i,onKeyDown:i,title:a})}},91165:(A,e,s)=>{s.r(e),s.d(e,{default:()=>j});var o=s(85170),g=s(31355),t=s(96933),n=s(71712),i=s(44790),a=s(45924),r=s(36426),c=s(34246),C=s(30239);c [...]
\ No newline at end of file
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3237],{34246:(A,e,s)=>{s.d(e,{Z:()=>t});s(85170);var o=s(45924),g=s(43010);const t=A=>{let{type:e="br",name:s,className:t,size:n,onClick:i,title:a=""}=A;return(0,g.jsx)("i",{className:(0,o.Z)(e,`bi-${s}`,t),style:{...n&&{fontSize:n}},onClick:i,onKeyDown:i,title:a})}},91165:(A,e,s)=>{s.r(e),s.d(e,{default:()=>j});var o=s(85170),g=s(70647),t=s(96933),n=s(71712),i=s(44790),a=s(45924),r=s(36426),c=s(34246),C=s(30239);c [...]
\ No newline at end of file
diff --git a/assets/js/227.646ebd22.js b/assets/js/227.646ebd22.js
deleted file mode 100644
index d0e7a3e3..00000000
--- a/assets/js/227.646ebd22.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[227],{70227:(t,e,s)=>{s.d(e,{D:()=>l,S:()=>c,a:()=>h,b:()=>a,c:()=>o,d:()=>B,p:()=>r,s:()=>P});var i=s(28e3),n=function(){var t=function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},e=[1,2],s=[1,3],i=[1,4],n=[2,4],r=[1,9],o=[1,11],a=[1,15],c=[1,16],l=[1,17],h=[1,18],u=[1,30],d=[1,19],p=[1,20],y=[1,21],f=[1,22],m=[1,23],g=[1,25],S=[1,26],_=[1,27],k=[1,28],T=[1,29],b=[1,32],E=[1,33],x=[1,34],C=[1,35],$=[1 [...]
\ No newline at end of file
diff --git a/assets/js/2449.f473e051.js b/assets/js/2449.f473e051.js
deleted file mode 100644
index 133836a0..00000000
--- a/assets/js/2449.f473e051.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 2449.f473e051.js.LICENSE.txt */
-(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2449],{33519:function(e,t,n){var r;r=function(e){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.i=function(e){return e},n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){r [...]
\ No newline at end of file
diff --git a/assets/js/2449.f473e051.js.LICENSE.txt b/assets/js/2449.f473e051.js.LICENSE.txt
deleted file mode 100644
index a58daed4..00000000
--- a/assets/js/2449.f473e051.js.LICENSE.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
-  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)
-  */
-
-/*! 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 */
diff --git a/assets/js/2669.67104145.js b/assets/js/2669.67104145.js
deleted file mode 100644
index fe60f86d..00000000
--- a/assets/js/2669.67104145.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2669],{22669:(t,e,n)=>{n.d(e,{diagram:()=>O});var i=n(28e3),s=n(27509),r=n(3723),a=n(55680),o=n(53596),l=(n(5726),n(91088),n(95591),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[6,8,10,11,12,14,16,17,20,21],n=[1,9],i=[1,10],s=[1,11],r=[1,12],a=[1,13],o=[1,16],l=[1,17],c={trace:function(){},yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9, [...]
\ No newline at end of file
diff --git a/assets/js/2697.7e8d8a38.js b/assets/js/2697.7e8d8a38.js
deleted file mode 100644
index 8a1ece0b..00000000
--- a/assets/js/2697.7e8d8a38.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2697],{22697:(t,e,i)=>{i.d(e,{diagram:()=>d});var n=i(28e3),s=i(27509),r=(i(5726),i(91088),i(95591),function(){var t=function(t,e,i,n){for(i=i||{},n=t.length;n--;i[t[n]]=e);return i},e=[1,3],i=[1,4],n=[1,5],s=[1,6],r=[1,10,12,14,16,18,19,20,21,22],l=[2,4],a=[1,5,10,12,14,16,18,19,20,21,22],c=[20,21,22],o=[2,7],h=[1,12],u=[1,13],y=[1,14],p=[1,15],d=[1,16],g=[1,17],f={trace:function(){},yy:{},symbols_:{error:2,start: [...]
\ No newline at end of file
diff --git a/assets/js/298.f8893466.js b/assets/js/298.f8893466.js
deleted file mode 100644
index f3c46eda..00000000
--- a/assets/js/298.f8893466.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[298],{30298:(t,e,n)=>{n.d(e,{d:()=>D,p:()=>r,s:()=>_});var s=n(27509),i=n(28e3),u=function(){var t=function(t,e,n,s){for(n=n||{},s=t.length;s--;n[t[s]]=e);return n},e=[1,16],n=[1,17],s=[1,18],i=[1,37],u=[1,38],r=[1,24],a=[1,22],c=[1,23],o=[1,29],l=[1,30],h=[1,31],A=[1,32],p=[1,33],d=[1,34],y=[1,25],E=[1,26],C=[1,27],m=[1,28],b=[1,42],f=[1,39],F=[1,40],g=[1,41],k=[1,43],T=[1,9],B=[1,8,9],D=[1,54],_=[1,55],S=[1,56],N [...]
\ No newline at end of file
diff --git a/assets/js/2a510483.54691518.js b/assets/js/2a510483.54691518.js
new file mode 100644
index 00000000..b55330e8
--- /dev/null
+++ b/assets/js/2a510483.54691518.js
@@ -0,0 +1,2 @@
+/*! For license information please see 2a510483.54691518.js.LICENSE.txt */
+(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9304],{90410:(e,t,n)=>{"use strict";n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>u,default:()=>m,frontMatter:()=>c,metadata:()=>d,toc:()=>p});var r=n(43010),s=n(90887),i=n(82829),o=n.n(i),a=n(36426),l=n(98372);const c={slug:"/"},u="Support",d={id:"support",title:"Support",description:"Hey there! Welcome to Apache Answer, a Q&A platform software. We've got a bunch of curious and helpful users who are always willing to give a hand [...]
\ No newline at end of file
diff --git a/assets/js/2a510483.7b977ab9.js.LICENSE.txt b/assets/js/2a510483.54691518.js.LICENSE.txt
similarity index 100%
rename from assets/js/2a510483.7b977ab9.js.LICENSE.txt
rename to assets/js/2a510483.54691518.js.LICENSE.txt
diff --git a/assets/js/2a510483.7b977ab9.js b/assets/js/2a510483.7b977ab9.js
deleted file mode 100644
index f92a8bcd..00000000
--- a/assets/js/2a510483.7b977ab9.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 2a510483.7b977ab9.js.LICENSE.txt */
-(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9304],{90410:(e,t,n)=>{"use strict";n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>u,default:()=>m,frontMatter:()=>c,metadata:()=>d,toc:()=>p});var r=n(43010),s=n(90887),i=n(82829),o=n.n(i),a=n(36426),l=n(98372);const c={slug:"/"},u="Support",d={id:"support",title:"Support",description:"Hey there! Welcome to Apache Answer, a Q&A platform software. We've got a bunch of curious and helpful users who are always willing to give a hand [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/2c22be1c.09cb293a.js b/assets/js/2c22be1c.615af791.js
similarity index 99%
rename from zh-CN/assets/js/2c22be1c.09cb293a.js
rename to assets/js/2c22be1c.615af791.js
index d0f8a4c8..1978e0b4 100644
--- a/zh-CN/assets/js/2c22be1c.09cb293a.js
+++ b/assets/js/2c22be1c.615af791.js
@@ -1,2 +1,2 @@
-/*! For license information please see 2c22be1c.09cb293a.js.LICENSE.txt */
-(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9870],{23401:(e,s,t)=>{"use strict";t.d(s,{Z:()=>l});var a=t(85170),c=t(45924),r=t(36426);const n="header_briT";var o=t(43010);const d={blog:{title:(0,o.jsx)(r.Z,{id:"blogHeader.title",children:"Blog"}),slogan:(0,o.jsx)(r.Z,{id:"blogHeader.slogan",children:"Learn everything about Answer and leverage your Q&A community to the next level."})},contact:{title:(0,o.jsx)(r.Z,{id:"contact.title",children:"Contact us"}),slogan:(0,o.jsx [...]
\ No newline at end of file
+/*! For license information please see 2c22be1c.615af791.js.LICENSE.txt */
+(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9870],{23401:(e,s,t)=>{"use strict";t.d(s,{Z:()=>l});var a=t(85170),c=t(45924),r=t(36426);const n="header_briT";var o=t(43010);const d={blog:{title:(0,o.jsx)(r.Z,{id:"blogHeader.title",children:"Blog"}),slogan:(0,o.jsx)(r.Z,{id:"blogHeader.slogan",children:"Learn everything about Answer and leverage your Q&A community to the next level."})},contact:{title:(0,o.jsx)(r.Z,{id:"contact.title",children:"Contact us"}),slogan:(0,o.jsx [...]
\ No newline at end of file
diff --git a/assets/js/2c22be1c.09cb293a.js.LICENSE.txt b/assets/js/2c22be1c.615af791.js.LICENSE.txt
similarity index 100%
rename from assets/js/2c22be1c.09cb293a.js.LICENSE.txt
rename to assets/js/2c22be1c.615af791.js.LICENSE.txt
diff --git a/assets/js/3093.33e255c3.js b/assets/js/3093.33e255c3.js
deleted file mode 100644
index abd8b62e..00000000
--- a/assets/js/3093.33e255c3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3093],{93093:(e,t,s)=>{s.d(t,{diagram:()=>N});var o=s(70227),i=s(42521),a=s(27509),r=s(28e3),n=s(83880);s(5726),s(91088),s(95591),s(87892),s(39185);const d="rect",l="rectWithTitle",c="statediagram",p=`${c}-state`,b="transition",g=`${b} note-edge`,h=`${c}-note`,u=`${c}-cluster`,y=`${c}-cluster-alt`,f="parent",w="note",x="----",$=`${x}${w}`,m=`${x}${f}`,T="fill:none",S="fill: #333",k="text",D="normal";let A={},v=0;fu [...]
\ No newline at end of file
diff --git a/assets/js/310.14ee915c.js b/assets/js/310.14ee915c.js
deleted file mode 100644
index 7eb61a13..00000000
--- a/assets/js/310.14ee915c.js
+++ /dev/null
@@ -1,3429 +0,0 @@
-"use strict";
-exports.id = 310;
-exports.ids = [310];
-exports.modules = {
-
-/***/ 68310:
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */   diagram: () => (/* binding */ diagram)
-/* harmony export */ });
-/* harmony import */ var _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(28000);
-/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27509);
-/* harmony import */ var _svgDrawCommon_ad5ef572_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(15990);
-/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91088);
-/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5726);
-/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(52702);
-
-
-
-
-
-
-
-
-
-
-
-
-var parser = function() {
-  var o = function(k, v, o2, l) {
-    for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)
-      ;
-    return o2;
-  }, $V0 = [1, 2], $V1 = [1, 3], $V2 = [1, 4], $V3 = [2, 4], $V4 = [1, 9], $V5 = [1, 11], $V6 = [1, 13], $V7 = [1, 14], $V8 = [1, 16], $V9 = [1, 17], $Va = [1, 18], $Vb = [1, 24], $Vc = [1, 25], $Vd = [1, 26], $Ve = [1, 27], $Vf = [1, 28], $Vg = [1, 29], $Vh = [1, 30], $Vi = [1, 31], $Vj = [1, 32], $Vk = [1, 33], $Vl = [1, 34], $Vm = [1, 35], $Vn = [1, 36], $Vo = [1, 37], $Vp = [1, 38], $Vq = [1, 39], $Vr = [1, 41], $Vs = [1, 42], $Vt = [1, 43], $Vu = [1, 44], $Vv = [1, 45], $Vw = [1, 46 [...]
-  var parser2 = {
-    trace: 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, "ac [...]
-    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: "participa [...]
-    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], [2 [...]
-    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {
-      var $0 = $$.length - 1;
-      switch (yystate) {
-        case 3:
-          yy.apply($$[$0]);
-          return $$[$0];
-        case 4:
-        case 9:
-          this.$ = [];
-          break;
-        case 5:
-        case 10:
-          $$[$0 - 1].push($$[$0]);
-          this.$ = $$[$0 - 1];
-          break;
-        case 6:
-        case 7:
-        case 11:
-        case 12:
-          this.$ = $$[$0];
-          break;
-        case 8:
-        case 13:
-          this.$ = [];
-          break;
-        case 15:
-          $$[$0].type = "createParticipant";
-          this.$ = $$[$0];
-          break;
-        case 16:
-          $$[$0 - 1].unshift({ type: "boxStart", boxData: yy.parseBoxData($$[$0 - 2]) });
-          $$[$0 - 1].push({ type: "boxEnd", boxText: $$[$0 - 2] });
-          this.$ = $$[$0 - 1];
-          break;
-        case 18:
-          this.$ = { type: "sequenceIndex", sequenceIndex: Number($$[$0 - 2]), sequenceIndexStep: Number($$[$0 - 1]), sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER };
-          break;
-        case 19:
-          this.$ = { type: "sequenceIndex", sequenceIndex: Number($$[$0 - 1]), sequenceIndexStep: 1, sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER };
-          break;
-        case 20:
-          this.$ = { type: "sequenceIndex", sequenceVisible: false, signalType: yy.LINETYPE.AUTONUMBER };
-          break;
-        case 21:
-          this.$ = { type: "sequenceIndex", sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER };
-          break;
-        case 22:
-          this.$ = { type: "activeStart", signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0 - 1] };
-          break;
-        case 23:
-          this.$ = { type: "activeEnd", signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0 - 1] };
-          break;
-        case 29:
-          yy.setDiagramTitle($$[$0].substring(6));
-          this.$ = $$[$0].substring(6);
-          break;
-        case 30:
-          yy.setDiagramTitle($$[$0].substring(7));
-          this.$ = $$[$0].substring(7);
-          break;
-        case 31:
-          this.$ = $$[$0].trim();
-          yy.setAccTitle(this.$);
-          break;
-        case 32:
-        case 33:
-          this.$ = $$[$0].trim();
-          yy.setAccDescription(this.$);
-          break;
-        case 34:
-          $$[$0 - 1].unshift({ type: "loopStart", loopText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.LOOP_START });
-          $$[$0 - 1].push({ type: "loopEnd", loopText: $$[$0 - 2], signalType: yy.LINETYPE.LOOP_END });
-          this.$ = $$[$0 - 1];
-          break;
-        case 35:
-          $$[$0 - 1].unshift({ type: "rectStart", color: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.RECT_START });
-          $$[$0 - 1].push({ type: "rectEnd", color: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.RECT_END });
-          this.$ = $$[$0 - 1];
-          break;
-        case 36:
-          $$[$0 - 1].unshift({ type: "optStart", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.OPT_START });
-          $$[$0 - 1].push({ type: "optEnd", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.OPT_END });
-          this.$ = $$[$0 - 1];
-          break;
-        case 37:
-          $$[$0 - 1].unshift({ type: "altStart", altText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.ALT_START });
-          $$[$0 - 1].push({ type: "altEnd", signalType: yy.LINETYPE.ALT_END });
-          this.$ = $$[$0 - 1];
-          break;
-        case 38:
-          $$[$0 - 1].unshift({ type: "parStart", parText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.PAR_START });
-          $$[$0 - 1].push({ type: "parEnd", signalType: yy.LINETYPE.PAR_END });
-          this.$ = $$[$0 - 1];
-          break;
-        case 39:
-          $$[$0 - 1].unshift({ type: "parStart", parText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.PAR_OVER_START });
-          $$[$0 - 1].push({ type: "parEnd", signalType: yy.LINETYPE.PAR_END });
-          this.$ = $$[$0 - 1];
-          break;
-        case 40:
-          $$[$0 - 1].unshift({ type: "criticalStart", criticalText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.CRITICAL_START });
-          $$[$0 - 1].push({ type: "criticalEnd", signalType: yy.LINETYPE.CRITICAL_END });
-          this.$ = $$[$0 - 1];
-          break;
-        case 41:
-          $$[$0 - 1].unshift({ type: "breakStart", breakText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.BREAK_START });
-          $$[$0 - 1].push({ type: "breakEnd", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.BREAK_END });
-          this.$ = $$[$0 - 1];
-          break;
-        case 43:
-          this.$ = $$[$0 - 3].concat([{ type: "option", optionText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.CRITICAL_OPTION }, $$[$0]]);
-          break;
-        case 45:
-          this.$ = $$[$0 - 3].concat([{ type: "and", parText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.PAR_AND }, $$[$0]]);
-          break;
-        case 47:
-          this.$ = $$[$0 - 3].concat([{ type: "else", altText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.ALT_ELSE }, $$[$0]]);
-          break;
-        case 48:
-          $$[$0 - 3].draw = "participant";
-          $$[$0 - 3].type = "addParticipant";
-          $$[$0 - 3].description = yy.parseMessage($$[$0 - 1]);
-          this.$ = $$[$0 - 3];
-          break;
-        case 49:
-          $$[$0 - 1].draw = "participant";
-          $$[$0 - 1].type = "addParticipant";
-          this.$ = $$[$0 - 1];
-          break;
-        case 50:
-          $$[$0 - 3].draw = "actor";
-          $$[$0 - 3].type = "addParticipant";
-          $$[$0 - 3].description = yy.parseMessage($$[$0 - 1]);
-          this.$ = $$[$0 - 3];
-          break;
-        case 51:
-          $$[$0 - 1].draw = "actor";
-          $$[$0 - 1].type = "addParticipant";
-          this.$ = $$[$0 - 1];
-          break;
-        case 52:
-          $$[$0 - 1].type = "destroyParticipant";
-          this.$ = $$[$0 - 1];
-          break;
-        case 53:
-          this.$ = [$$[$0 - 1], { type: "addNote", placement: $$[$0 - 2], actor: $$[$0 - 1].actor, text: $$[$0] }];
-          break;
-        case 54:
-          $$[$0 - 2] = [].concat($$[$0 - 1], $$[$0 - 1]).slice(0, 2);
-          $$[$0 - 2][0] = $$[$0 - 2][0].actor;
-          $$[$0 - 2][1] = $$[$0 - 2][1].actor;
-          this.$ = [$$[$0 - 1], { type: "addNote", placement: yy.PLACEMENT.OVER, actor: $$[$0 - 2].slice(0, 2), text: $$[$0] }];
-          break;
-        case 55:
-          this.$ = [$$[$0 - 1], { type: "addLinks", actor: $$[$0 - 1].actor, text: $$[$0] }];
-          break;
-        case 56:
-          this.$ = [$$[$0 - 1], { type: "addALink", actor: $$[$0 - 1].actor, text: $$[$0] }];
-          break;
-        case 57:
-          this.$ = [$$[$0 - 1], { type: "addProperties", actor: $$[$0 - 1].actor, text: $$[$0] }];
-          break;
-        case 58:
-          this.$ = [$$[$0 - 1], { type: "addDetails", actor: $$[$0 - 1].actor, text: $$[$0] }];
-          break;
-        case 61:
-          this.$ = [$$[$0 - 2], $$[$0]];
-          break;
-        case 62:
-          this.$ = $$[$0];
-          break;
-        case 63:
-          this.$ = yy.PLACEMENT.LEFTOF;
-          break;
-        case 64:
-          this.$ = yy.PLACEMENT.RIGHTOF;
-          break;
-        case 65:
-          this.$ = [
-            $$[$0 - 4],
-            $$[$0 - 1],
-            { type: "addMessage", from: $$[$0 - 4].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 3], msg: $$[$0], activate: true },
-            { type: "activeStart", signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0 - 1] }
-          ];
-          break;
-        case 66:
-          this.$ = [
-            $$[$0 - 4],
-            $$[$0 - 1],
-            { type: "addMessage", from: $$[$0 - 4].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 3], msg: $$[$0] },
-            { type: "activeEnd", signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0 - 4] }
-          ];
-          break;
-        case 67:
-          this.$ = [$$[$0 - 3], $$[$0 - 1], { type: "addMessage", from: $$[$0 - 3].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 2], msg: $$[$0] }];
-          break;
-        case 68:
-          this.$ = { type: "addParticipant", actor: $$[$0] };
-          break;
-        case 69:
-          this.$ = yy.LINETYPE.SOLID_OPEN;
-          break;
-        case 70:
-          this.$ = yy.LINETYPE.DOTTED_OPEN;
-          break;
-        case 71:
-          this.$ = yy.LINETYPE.SOLID;
-          break;
-        case 72:
-          this.$ = yy.LINETYPE.DOTTED;
-          break;
-        case 73:
-          this.$ = yy.LINETYPE.SOLID_CROSS;
-          break;
-        case 74:
-          this.$ = yy.LINETYPE.DOTTED_CROSS;
-          break;
-        case 75:
-          this.$ = yy.LINETYPE.SOLID_POINT;
-          break;
-        case 76:
-          this.$ = yy.LINETYPE.DOTTED_POINT;
-          break;
-        case 77:
-          this.$ = yy.parseMessage($$[$0].trim().substring(1));
-          break;
-      }
-    },
-    table: [{ 3: 1, 4: $V0, 5: $V1, 6: $V2 }, { 1: [3] }, { 3: 5, 4: $V0, 5: $V1, 6: $V2 }, { 3: 6, 4: $V0, 5: $V1, 6: $V2 }, o([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], $V3, { 7: 7 }), { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3], 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: [...]
-    defaultActions: { 5: [2, 1], 6: [2, 2], 85: [2, 63], 86: [2, 64], 119: [2, 55], 120: [2, 77], 121: [2, 56], 122: [2, 57], 123: [2, 58], 145: [2, 67], 146: [2, 53], 147: [2, 54], 155: [2, 65], 156: [2, 66], 157: [2, 61], 158: [2, 47], 159: [2, 45], 160: [2, 43] },
-    parseError: function parseError(str, hash) {
-      if (hash.recoverable) {
-        this.trace(str);
-      } else {
-        var error = new Error(str);
-        error.hash = hash;
-        throw error;
-      }
-    },
-    parse: function parse(input) {
-      var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;
-      var args = lstack.slice.call(arguments, 1);
-      var lexer2 = Object.create(this.lexer);
-      var sharedState = { yy: {} };
-      for (var k in this.yy) {
-        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
-          sharedState.yy[k] = this.yy[k];
-        }
-      }
-      lexer2.setInput(input, sharedState.yy);
-      sharedState.yy.lexer = lexer2;
-      sharedState.yy.parser = this;
-      if (typeof lexer2.yylloc == "undefined") {
-        lexer2.yylloc = {};
-      }
-      var yyloc = lexer2.yylloc;
-      lstack.push(yyloc);
-      var ranges = lexer2.options && lexer2.options.ranges;
-      if (typeof sharedState.yy.parseError === "function") {
-        this.parseError = sharedState.yy.parseError;
-      } else {
-        this.parseError = Object.getPrototypeOf(this).parseError;
-      }
-      function lex() {
-        var token;
-        token = tstack.pop() || lexer2.lex() || EOF;
-        if (typeof token !== "number") {
-          if (token instanceof Array) {
-            tstack = token;
-            token = tstack.pop();
-          }
-          token = self.symbols_[token] || token;
-        }
-        return token;
-      }
-      var symbol, state, action, r, yyval = {}, p, len, newState, expected;
-      while (true) {
-        state = stack[stack.length - 1];
-        if (this.defaultActions[state]) {
-          action = this.defaultActions[state];
-        } else {
-          if (symbol === null || typeof symbol == "undefined") {
-            symbol = lex();
-          }
-          action = table[state] && table[state][symbol];
-        }
-        if (typeof action === "undefined" || !action.length || !action[0]) {
-          var errStr = "";
-          expected = [];
-          for (p in table[state]) {
-            if (this.terminals_[p] && p > TERROR) {
-              expected.push("'" + this.terminals_[p] + "'");
-            }
-          }
-          if (lexer2.showPosition) {
-            errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'";
-          } else {
-            errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'");
-          }
-          this.parseError(errStr, {
-            text: lexer2.match,
-            token: this.terminals_[symbol] || symbol,
-            line: lexer2.yylineno,
-            loc: yyloc,
-            expected
-          });
-        }
-        if (action[0] instanceof Array && action.length > 1) {
-          throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
-        }
-        switch (action[0]) {
-          case 1:
-            stack.push(symbol);
-            vstack.push(lexer2.yytext);
-            lstack.push(lexer2.yylloc);
-            stack.push(action[1]);
-            symbol = null;
-            {
-              yyleng = lexer2.yyleng;
-              yytext = lexer2.yytext;
-              yylineno = lexer2.yylineno;
-              yyloc = lexer2.yylloc;
-            }
-            break;
-          case 2:
-            len = this.productions_[action[1]][1];
-            yyval.$ = vstack[vstack.length - len];
-            yyval._$ = {
-              first_line: lstack[lstack.length - (len || 1)].first_line,
-              last_line: lstack[lstack.length - 1].last_line,
-              first_column: lstack[lstack.length - (len || 1)].first_column,
-              last_column: lstack[lstack.length - 1].last_column
-            };
-            if (ranges) {
-              yyval._$.range = [
-                lstack[lstack.length - (len || 1)].range[0],
-                lstack[lstack.length - 1].range[1]
-              ];
-            }
-            r = this.performAction.apply(yyval, [
-              yytext,
-              yyleng,
-              yylineno,
-              sharedState.yy,
-              action[1],
-              vstack,
-              lstack
-            ].concat(args));
-            if (typeof r !== "undefined") {
-              return r;
-            }
-            if (len) {
-              stack = stack.slice(0, -1 * len * 2);
-              vstack = vstack.slice(0, -1 * len);
-              lstack = lstack.slice(0, -1 * len);
-            }
-            stack.push(this.productions_[action[1]][0]);
-            vstack.push(yyval.$);
-            lstack.push(yyval._$);
-            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
-            stack.push(newState);
-            break;
-          case 3:
-            return true;
-        }
-      }
-      return true;
-    }
-  };
-  var lexer = function() {
-    var lexer2 = {
-      EOF: 1,
-      parseError: function parseError(str, hash) {
-        if (this.yy.parser) {
-          this.yy.parser.parseError(str, hash);
-        } else {
-          throw new Error(str);
-        }
-      },
-      // resets the lexer, sets new input
-      setInput: function(input, yy) {
-        this.yy = yy || this.yy || {};
-        this._input = input;
-        this._more = this._backtrack = this.done = false;
-        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
-        };
-        if (this.options.ranges) {
-          this.yylloc.range = [0, 0];
-        }
-        this.offset = 0;
-        return this;
-      },
-      // consumes and returns one char from the input
-      input: function() {
-        var ch = this._input[0];
-        this.yytext += ch;
-        this.yyleng++;
-        this.offset++;
-        this.match += ch;
-        this.matched += ch;
-        var lines = ch.match(/(?:\r\n?|\n).*/g);
-        if (lines) {
-          this.yylineno++;
-          this.yylloc.last_line++;
-        } else {
-          this.yylloc.last_column++;
-        }
-        if (this.options.ranges) {
-          this.yylloc.range[1]++;
-        }
-        this._input = this._input.slice(1);
-        return ch;
-      },
-      // unshifts one char (or a string) into the input
-      unput: function(ch) {
-        var len = ch.length;
-        var lines = ch.split(/(?:\r\n?|\n)/g);
-        this._input = ch + this._input;
-        this.yytext = this.yytext.substr(0, this.yytext.length - len);
-        this.offset -= len;
-        var oldLines = 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);
-        if (lines.length - 1) {
-          this.yylineno -= lines.length - 1;
-        }
-        var r = this.yylloc.range;
-        this.yylloc = {
-          first_line: this.yylloc.first_line,
-          last_line: this.yylineno + 1,
-          first_column: this.yylloc.first_column,
-          last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
-        };
-        if (this.options.ranges) {
-          this.yylloc.range = [r[0], r[0] + this.yyleng - len];
-        }
-        this.yyleng = this.yytext.length;
-        return this;
-      },
-      // When called from action, caches matched text and appends it on next action
-      more: function() {
-        this._more = true;
-        return this;
-      },
-      // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
-      reject: function() {
-        if (this.options.backtrack_lexer) {
-          this._backtrack = true;
-        } 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).\n" + this.showPosition(), {
-            text: "",
-            token: null,
-            line: this.yylineno
-          });
-        }
-        return this;
-      },
-      // retain first n characters of the match
-      less: function(n) {
-        this.unput(this.match.slice(n));
-      },
-      // displays already matched input, i.e. for error messages
-      pastInput: function() {
-        var past = this.matched.substr(0, this.matched.length - this.match.length);
-        return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, "");
-      },
-      // displays upcoming input, i.e. for error messages
-      upcomingInput: function() {
-        var next = this.match;
-        if (next.length < 20) {
-          next += this._input.substr(0, 20 - next.length);
-        }
-        return (next.substr(0, 20) + (next.length > 20 ? "..." : "")).replace(/\n/g, "");
-      },
-      // displays the character position where the lexing error occurred, i.e. for error messages
-      showPosition: function() {
-        var pre = this.pastInput();
-        var c = new Array(pre.length + 1).join("-");
-        return pre + this.upcomingInput() + "\n" + c + "^";
-      },
-      // test the lexed token: return FALSE when not a match, otherwise return token
-      test_match: function(match, indexed_rule) {
-        var token, lines, backup;
-        if (this.options.backtrack_lexer) {
-          backup = {
-            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
-          };
-          if (this.options.ranges) {
-            backup.yylloc.range = this.yylloc.range.slice(0);
-          }
-        }
-        lines = match[0].match(/(?:\r\n?|\n).*/g);
-        if (lines) {
-          this.yylineno += lines.length;
-        }
-        this.yylloc = {
-          first_line: this.yylloc.last_line,
-          last_line: this.yylineno + 1,
-          first_column: this.yylloc.last_column,
-          last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length
-        };
-        this.yytext += match[0];
-        this.match += match[0];
-        this.matches = match;
-        this.yyleng = this.yytext.length;
-        if (this.options.ranges) {
-          this.yylloc.range = [this.offset, this.offset += this.yyleng];
-        }
-        this._more = false;
-        this._backtrack = false;
-        this._input = this._input.slice(match[0].length);
-        this.matched += match[0];
-        token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
-        if (this.done && this._input) {
-          this.done = false;
-        }
-        if (token) {
-          return token;
-        } else if (this._backtrack) {
-          for (var k in backup) {
-            this[k] = backup[k];
-          }
-          return false;
-        }
-        return false;
-      },
-      // return next match in input
-      next: function() {
-        if (this.done) {
-          return this.EOF;
-        }
-        if (!this._input) {
-          this.done = true;
-        }
-        var token, match, tempMatch, index;
-        if (!this._more) {
-          this.yytext = "";
-          this.match = "";
-        }
-        var rules = this._currentRules();
-        for (var i = 0; i < rules.length; i++) {
-          tempMatch = this._input.match(this.rules[rules[i]]);
-          if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
-            match = tempMatch;
-            index = i;
-            if (this.options.backtrack_lexer) {
-              token = this.test_match(tempMatch, rules[i]);
-              if (token !== false) {
-                return token;
-              } else if (this._backtrack) {
-                match = false;
-                continue;
-              } else {
-                return false;
-              }
-            } else if (!this.options.flex) {
-              break;
-            }
-          }
-        }
-        if (match) {
-          token = this.test_match(match, rules[index]);
-          if (token !== false) {
-            return token;
-          }
-          return false;
-        }
-        if (this._input === "") {
-          return this.EOF;
-        } else {
-          return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
-            text: "",
-            token: null,
-            line: this.yylineno
-          });
-        }
-      },
-      // return next match that has a token
-      lex: function lex() {
-        var r = this.next();
-        if (r) {
-          return r;
-        } else {
-          return this.lex();
-        }
-      },
-      // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
-      begin: function begin(condition) {
-        this.conditionStack.push(condition);
-      },
-      // pop the previously active lexer condition state off the condition stack
-      popState: function popState() {
-        var n = this.conditionStack.length - 1;
-        if (n > 0) {
-          return this.conditionStack.pop();
-        } else {
-          return this.conditionStack[0];
-        }
-      },
-      // produce the lexer rule set which is active for the currently active lexer condition state
-      _currentRules: function _currentRules() {
-        if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
-          return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
-        } else {
-          return this.conditions["INITIAL"].rules;
-        }
-      },
-      // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
-      topState: function topState(n) {
-        n = this.conditionStack.length - 1 - Math.abs(n || 0);
-        if (n >= 0) {
-          return this.conditionStack[n];
-        } else {
-          return "INITIAL";
-        }
-      },
-      // alias for begin(condition)
-      pushState: function pushState(condition) {
-        this.begin(condition);
-      },
-      // return the number of states currently on the stack
-      stateStackSize: function stateStackSize() {
-        return this.conditionStack.length;
-      },
-      options: { "case-insensitive": true },
-      performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {
-        switch ($avoiding_name_collisions) {
-          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:
-            this.begin("LINE");
-            return 14;
-          case 8:
-            this.begin("ID");
-            return 50;
-          case 9:
-            this.begin("ID");
-            return 52;
-          case 10:
-            return 13;
-          case 11:
-            this.begin("ID");
-            return 53;
-          case 12:
-            yy_.yytext = yy_.yytext.trim();
-            this.begin("ALIAS");
-            return 70;
-          case 13:
-            this.popState();
-            this.popState();
-            this.begin("LINE");
-            return 51;
-          case 14:
-            this.popState();
-            this.popState();
-            return 5;
-          case 15:
-            this.begin("LINE");
-            return 36;
-          case 16:
-            this.begin("LINE");
-            return 37;
-          case 17:
-            this.begin("LINE");
-            return 38;
-          case 18:
-            this.begin("LINE");
-            return 39;
-          case 19:
-            this.begin("LINE");
-            return 49;
-          case 20:
-            this.begin("LINE");
-            return 41;
-          case 21:
-            this.begin("LINE");
-            return 43;
-          case 22:
-            this.begin("LINE");
-            return 48;
-          case 23:
-            this.begin("LINE");
-            return 44;
-          case 24:
-            this.begin("LINE");
-            return 47;
-          case 25:
-            this.begin("LINE");
-            return 46;
-          case 26:
-            this.popState();
-            return 15;
-          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:
-            this.begin("ID");
-            return 21;
-          case 37:
-            this.begin("ID");
-            return 23;
-          case 38:
-            return 29;
-          case 39:
-            return 30;
-          case 40:
-            this.begin("acc_title");
-            return 31;
-          case 41:
-            this.popState();
-            return "acc_title_value";
-          case 42:
-            this.begin("acc_descr");
-            return 33;
-          case 43:
-            this.popState();
-            return "acc_descr_value";
-          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:
-            yy_.yytext = yy_.yytext.trim();
-            return 70;
-          case 53:
-            return 73;
-          case 54:
-            return 74;
-          case 55:
-            return 71;
-          case 56:
-            return 72;
-          case 57:
-            return 75;
-          case 58:
-            return 76;
-          case 59:
-            return 77;
-          case 60:
-            return 78;
-          case 61:
-            return 79;
-          case 62:
-            return 68;
-          case 63:
-            return 69;
-          case 64:
-            return 5;
-          case 65:
-            return "INVALID";
-        }
-      },
-      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 [...]
-      conditions: { "acc_descr_multiline": { "rules": [45, 46], "inclusive": false }, "acc_descr": { "rules": [43], "inclusive": false }, "acc_title": { "rules": [41], "inclusive": false }, "ID": { "rules": [2, 3, 12], "inclusive": false }, "ALIAS": { "rules": [2, 3, 13, 14], "inclusive": false }, "LINE": { "rules": [2, 3, 26], "inclusive": false }, "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 [...]
-    };
-    return lexer2;
-  }();
-  parser2.lexer = lexer;
-  function Parser() {
-    this.yy = {};
-  }
-  Parser.prototype = parser2;
-  parser2.Parser = Parser;
-  return new Parser();
-}();
-parser.parser = parser;
-const parser$1 = parser;
-let prevActor = void 0;
-let actors = {};
-let createdActors = {};
-let destroyedActors = {};
-let boxes = [];
-let messages = [];
-let sequenceNumbersEnabled = false;
-let wrapEnabled;
-let currentBox = void 0;
-let lastCreated = void 0;
-let lastDestroyed = void 0;
-const addBox = function(data) {
-  boxes.push({
-    name: data.text,
-    wrap: data.wrap === void 0 && autoWrap() || !!data.wrap,
-    fill: data.color,
-    actorKeys: []
-  });
-  currentBox = boxes.slice(-1)[0];
-};
-const addActor = function(id, name, description, type) {
-  let assignedBox = currentBox;
-  const old = actors[id];
-  if (old) {
-    if (currentBox && old.box && currentBox !== old.box) {
-      throw new Error(
-        "A same participant should only be defined in one Box: " + old.name + " can't be in '" + old.box.name + "' and in '" + currentBox.name + "' at the same time."
-      );
-    }
-    assignedBox = old.box ? old.box : currentBox;
-    old.box = assignedBox;
-    if (old && name === old.name && description == null) {
-      return;
-    }
-  }
-  if (description == null || description.text == null) {
-    description = { text: name, wrap: null, type };
-  }
-  if (type == null || description.text == null) {
-    description = { text: name, wrap: null, type };
-  }
-  actors[id] = {
-    box: assignedBox,
-    name,
-    description: description.text,
-    wrap: description.wrap === void 0 && autoWrap() || !!description.wrap,
-    prevActor,
-    links: {},
-    properties: {},
-    actorCnt: null,
-    rectData: null,
-    type: type || "participant"
-  };
-  if (prevActor && actors[prevActor]) {
-    actors[prevActor].nextActor = id;
-  }
-  if (currentBox) {
-    currentBox.actorKeys.push(id);
-  }
-  prevActor = id;
-};
-const activationCount = (part) => {
-  let i;
-  let count = 0;
-  for (i = 0; i < messages.length; i++) {
-    if (messages[i].type === LINETYPE.ACTIVE_START && messages[i].from.actor === part) {
-      count++;
-    }
-    if (messages[i].type === LINETYPE.ACTIVE_END && messages[i].from.actor === part) {
-      count--;
-    }
-  }
-  return count;
-};
-const addMessage = function(idFrom, idTo, message, answer) {
-  messages.push({
-    from: idFrom,
-    to: idTo,
-    message: message.text,
-    wrap: message.wrap === void 0 && autoWrap() || !!message.wrap,
-    answer
-  });
-};
-const addSignal = function(idFrom, idTo, message = { text: void 0, wrap: void 0 }, messageType, activate = false) {
-  if (messageType === LINETYPE.ACTIVE_END) {
-    const cnt = activationCount(idFrom.actor);
-    if (cnt < 1) {
-      let error = new Error("Trying to inactivate an inactive participant (" + idFrom.actor + ")");
-      error.hash = {
-        text: "->>-",
-        token: "->>-",
-        line: "1",
-        loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },
-        expected: ["'ACTIVE_PARTICIPANT'"]
-      };
-      throw error;
-    }
-  }
-  messages.push({
-    from: idFrom,
-    to: idTo,
-    message: message.text,
-    wrap: message.wrap === void 0 && autoWrap() || !!message.wrap,
-    type: messageType,
-    activate
-  });
-  return true;
-};
-const hasAtLeastOneBox = function() {
-  return boxes.length > 0;
-};
-const hasAtLeastOneBoxWithTitle = function() {
-  return boxes.some((b) => b.name);
-};
-const getMessages = function() {
-  return messages;
-};
-const getBoxes = function() {
-  return boxes;
-};
-const getActors = function() {
-  return actors;
-};
-const getCreatedActors = function() {
-  return createdActors;
-};
-const getDestroyedActors = function() {
-  return destroyedActors;
-};
-const getActor = function(id) {
-  return actors[id];
-};
-const getActorKeys = function() {
-  return Object.keys(actors);
-};
-const enableSequenceNumbers = function() {
-  sequenceNumbersEnabled = true;
-};
-const disableSequenceNumbers = function() {
-  sequenceNumbersEnabled = false;
-};
-const showSequenceNumbers = () => sequenceNumbersEnabled;
-const setWrap = function(wrapSetting) {
-  wrapEnabled = wrapSetting;
-};
-const autoWrap = () => {
-  if (wrapEnabled !== void 0) {
-    return wrapEnabled;
-  }
-  return (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.c)().sequence.wrap;
-};
-const clear = function() {
-  actors = {};
-  createdActors = {};
-  destroyedActors = {};
-  boxes = [];
-  messages = [];
-  sequenceNumbersEnabled = false;
-  (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.t)();
-};
-const parseMessage = function(str) {
-  const _str = str.trim();
-  const message = {
-    text: _str.replace(/^:?(?:no)?wrap:/, "").trim(),
-    wrap: _str.match(/^:?wrap:/) !== null ? true : _str.match(/^:?nowrap:/) !== null ? false : void 0
-  };
-  _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.l.debug("parseMessage:", message);
-  return message;
-};
-const parseBoxData = function(str) {
-  const match = str.match(/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/);
-  let color = match != null && match[1] ? match[1].trim() : "transparent";
-  let title = match != null && match[2] ? match[2].trim() : void 0;
-  if (window && window.CSS) {
-    if (!window.CSS.supports("color", color)) {
-      color = "transparent";
-      title = str.trim();
-    }
-  } else {
-    const style = new Option().style;
-    style.color = color;
-    if (style.color !== color) {
-      color = "transparent";
-      title = str.trim();
-    }
-  }
-  const boxData = {
-    color,
-    text: title !== void 0 ? (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.d)(title.replace(/^:?(?:no)?wrap:/, ""), (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.c)()) : void 0,
-    wrap: title !== void 0 ? title.match(/^:?wrap:/) !== null ? true : title.match(/^:?nowrap:/) !== null ? false : void 0 : void 0
-  };
-  return boxData;
-};
-const LINETYPE = {
-  SOLID: 0,
-  DOTTED: 1,
-  NOTE: 2,
-  SOLID_CROSS: 3,
-  DOTTED_CROSS: 4,
-  SOLID_OPEN: 5,
-  DOTTED_OPEN: 6,
-  LOOP_START: 10,
-  LOOP_END: 11,
-  ALT_START: 12,
-  ALT_ELSE: 13,
-  ALT_END: 14,
-  OPT_START: 15,
-  OPT_END: 16,
-  ACTIVE_START: 17,
-  ACTIVE_END: 18,
-  PAR_START: 19,
-  PAR_AND: 20,
-  PAR_END: 21,
-  RECT_START: 22,
-  RECT_END: 23,
-  SOLID_POINT: 24,
-  DOTTED_POINT: 25,
-  AUTONUMBER: 26,
-  CRITICAL_START: 27,
-  CRITICAL_OPTION: 28,
-  CRITICAL_END: 29,
-  BREAK_START: 30,
-  BREAK_END: 31,
-  PAR_OVER_START: 32
-};
-const ARROWTYPE = {
-  FILLED: 0,
-  OPEN: 1
-};
-const PLACEMENT = {
-  LEFTOF: 0,
-  RIGHTOF: 1,
-  OVER: 2
-};
-const addNote = function(actor, placement, message) {
-  ({
-    actor,
-    placement,
-    message: message.text,
-    wrap: message.wrap === void 0 && autoWrap() || !!message.wrap
-  });
-  const actors2 = [].concat(actor, actor);
-  messages.push({
-    from: actors2[0],
-    to: actors2[1],
-    message: message.text,
-    wrap: message.wrap === void 0 && autoWrap() || !!message.wrap,
-    type: LINETYPE.NOTE,
-    placement
-  });
-};
-const addLinks = function(actorId, text) {
-  const actor = getActor(actorId);
-  try {
-    let sanitizedText = (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.d)(text.text, (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.c)());
-    sanitizedText = sanitizedText.replace(/&amp;/g, "&");
-    sanitizedText = sanitizedText.replace(/&equals;/g, "=");
-    const links = JSON.parse(sanitizedText);
-    insertLinks(actor, links);
-  } catch (e) {
-    _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.l.error("error while parsing actor link text", e);
-  }
-};
-const addALink = function(actorId, text) {
-  const actor = getActor(actorId);
-  try {
-    const links = {};
-    let sanitizedText = (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.d)(text.text, (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.c)());
-    var sep = sanitizedText.indexOf("@");
-    sanitizedText = sanitizedText.replace(/&amp;/g, "&");
-    sanitizedText = sanitizedText.replace(/&equals;/g, "=");
-    var label = sanitizedText.slice(0, sep - 1).trim();
-    var link = sanitizedText.slice(sep + 1).trim();
-    links[label] = link;
-    insertLinks(actor, links);
-  } catch (e) {
-    _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.l.error("error while parsing actor link text", e);
-  }
-};
-function insertLinks(actor, links) {
-  if (actor.links == null) {
-    actor.links = links;
-  } else {
-    for (let key in links) {
-      actor.links[key] = links[key];
-    }
-  }
-}
-const addProperties = function(actorId, text) {
-  const actor = getActor(actorId);
-  try {
-    let sanitizedText = (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.d)(text.text, (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.c)());
-    const properties = JSON.parse(sanitizedText);
-    insertProperties(actor, properties);
-  } catch (e) {
-    _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.l.error("error while parsing actor properties text", e);
-  }
-};
-function insertProperties(actor, properties) {
-  if (actor.properties == null) {
-    actor.properties = properties;
-  } else {
-    for (let key in properties) {
-      actor.properties[key] = properties[key];
-    }
-  }
-}
-function boxEnd() {
-  currentBox = void 0;
-}
-const addDetails = function(actorId, text) {
-  const actor = getActor(actorId);
-  const elem = document.getElementById(text.text);
-  try {
-    const text2 = elem.innerHTML;
-    const details = JSON.parse(text2);
-    if (details["properties"]) {
-      insertProperties(actor, details["properties"]);
-    }
-    if (details["links"]) {
-      insertLinks(actor, details["links"]);
-    }
-  } catch (e) {
-    _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.l.error("error while parsing actor details text", e);
-  }
-};
-const getActorProperty = function(actor, key) {
-  if (actor !== void 0 && actor.properties !== void 0) {
-    return actor.properties[key];
-  }
-  return void 0;
-};
-const apply = function(param) {
-  if (Array.isArray(param)) {
-    param.forEach(function(item) {
-      apply(item);
-    });
-  } else {
-    switch (param.type) {
-      case "sequenceIndex":
-        messages.push({
-          from: void 0,
-          to: void 0,
-          message: {
-            start: param.sequenceIndex,
-            step: param.sequenceIndexStep,
-            visible: param.sequenceVisible
-          },
-          wrap: false,
-          type: param.signalType
-        });
-        break;
-      case "addParticipant":
-        addActor(param.actor, param.actor, param.description, param.draw);
-        break;
-      case "createParticipant":
-        if (actors[param.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"
-          );
-        }
-        lastCreated = param.actor;
-        addActor(param.actor, param.actor, param.description, param.draw);
-        createdActors[param.actor] = messages.length;
-        break;
-      case "destroyParticipant":
-        lastDestroyed = param.actor;
-        destroyedActors[param.actor] = messages.length;
-        break;
-      case "activeStart":
-        addSignal(param.actor, void 0, void 0, param.signalType);
-        break;
-      case "activeEnd":
-        addSignal(param.actor, void 0, void 0, param.signalType);
-        break;
-      case "addNote":
-        addNote(param.actor, param.placement, param.text);
-        break;
-      case "addLinks":
-        addLinks(param.actor, param.text);
-        break;
-      case "addALink":
-        addALink(param.actor, param.text);
-        break;
-      case "addProperties":
-        addProperties(param.actor, param.text);
-        break;
-      case "addDetails":
-        addDetails(param.actor, param.text);
-        break;
-      case "addMessage":
-        if (lastCreated) {
-          if (param.to !== lastCreated) {
-            throw new Error(
-              "The created participant " + lastCreated + " does not have an associated creating message after its declaration. Please check the sequence diagram."
-            );
-          } else {
-            lastCreated = void 0;
-          }
-        } else if (lastDestroyed) {
-          if (param.to !== lastDestroyed && param.from !== lastDestroyed) {
-            throw new Error(
-              "The destroyed participant " + lastDestroyed + " does not have an associated destroying message after its declaration. Please check the sequence diagram."
-            );
-          } else {
-            lastDestroyed = void 0;
-          }
-        }
-        addSignal(param.from, param.to, param.msg, param.signalType, param.activate);
-        break;
-      case "boxStart":
-        addBox(param.boxData);
-        break;
-      case "boxEnd":
-        boxEnd();
-        break;
-      case "loopStart":
-        addSignal(void 0, void 0, param.loopText, param.signalType);
-        break;
-      case "loopEnd":
-        addSignal(void 0, void 0, void 0, param.signalType);
-        break;
-      case "rectStart":
-        addSignal(void 0, void 0, param.color, param.signalType);
-        break;
-      case "rectEnd":
-        addSignal(void 0, void 0, void 0, param.signalType);
-        break;
-      case "optStart":
-        addSignal(void 0, void 0, param.optText, param.signalType);
-        break;
-      case "optEnd":
-        addSignal(void 0, void 0, void 0, param.signalType);
-        break;
-      case "altStart":
-        addSignal(void 0, void 0, param.altText, param.signalType);
-        break;
-      case "else":
-        addSignal(void 0, void 0, param.altText, param.signalType);
-        break;
-      case "altEnd":
-        addSignal(void 0, void 0, void 0, param.signalType);
-        break;
-      case "setAccTitle":
-        (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.s)(param.text);
-        break;
-      case "parStart":
-        addSignal(void 0, void 0, param.parText, param.signalType);
-        break;
-      case "and":
-        addSignal(void 0, void 0, param.parText, param.signalType);
-        break;
-      case "parEnd":
-        addSignal(void 0, void 0, void 0, param.signalType);
-        break;
-      case "criticalStart":
-        addSignal(void 0, void 0, param.criticalText, param.signalType);
-        break;
-      case "option":
-        addSignal(void 0, void 0, param.optionText, param.signalType);
-        break;
-      case "criticalEnd":
-        addSignal(void 0, void 0, void 0, param.signalType);
-        break;
-      case "breakStart":
-        addSignal(void 0, void 0, param.breakText, param.signalType);
-        break;
-      case "breakEnd":
-        addSignal(void 0, void 0, void 0, param.signalType);
-        break;
-    }
-  }
-};
-const db = {
-  addActor,
-  addMessage,
-  addSignal,
-  addLinks,
-  addDetails,
-  addProperties,
-  autoWrap,
-  setWrap,
-  enableSequenceNumbers,
-  disableSequenceNumbers,
-  showSequenceNumbers,
-  getMessages,
-  getActors,
-  getCreatedActors,
-  getDestroyedActors,
-  getActor,
-  getActorKeys,
-  getActorProperty,
-  getAccTitle: _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.g,
-  getBoxes,
-  getDiagramTitle: _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.r,
-  setDiagramTitle: _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.q,
-  getConfig: () => (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.c)().sequence,
-  clear,
-  parseMessage,
-  parseBoxData,
-  LINETYPE,
-  ARROWTYPE,
-  PLACEMENT,
-  addNote,
-  setAccTitle: _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.s,
-  apply,
-  setAccDescription: _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.b,
-  getAccDescription: _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.a,
-  hasAtLeastOneBox,
-  hasAtLeastOneBoxWithTitle
-};
-const getStyles = (options) => `.actor {
-    stroke: ${options.actorBorder};
-    fill: ${options.actorBkg};
-  }
-
-  text.actor > tspan {
-    fill: ${options.actorTextColor};
-    stroke: none;
-  }
-
-  .actor-line {
-    stroke: ${options.actorLineColor};
-  }
-
-  .messageLine0 {
-    stroke-width: 1.5;
-    stroke-dasharray: none;
-    stroke: ${options.signalColor};
-  }
-
-  .messageLine1 {
-    stroke-width: 1.5;
-    stroke-dasharray: 2, 2;
-    stroke: ${options.signalColor};
-  }
-
-  #arrowhead path {
-    fill: ${options.signalColor};
-    stroke: ${options.signalColor};
-  }
-
-  .sequenceNumber {
-    fill: ${options.sequenceNumberColor};
-  }
-
-  #sequencenumber {
-    fill: ${options.signalColor};
-  }
-
-  #crosshead path {
-    fill: ${options.signalColor};
-    stroke: ${options.signalColor};
-  }
-
-  .messageText {
-    fill: ${options.signalTextColor};
-    stroke: none;
-  }
-
-  .labelBox {
-    stroke: ${options.labelBoxBorderColor};
-    fill: ${options.labelBoxBkgColor};
-  }
-
-  .labelText, .labelText > tspan {
-    fill: ${options.labelTextColor};
-    stroke: none;
-  }
-
-  .loopText, .loopText > tspan {
-    fill: ${options.loopTextColor};
-    stroke: none;
-  }
-
-  .loopLine {
-    stroke-width: 2px;
-    stroke-dasharray: 2, 2;
-    stroke: ${options.labelBoxBorderColor};
-    fill: ${options.labelBoxBorderColor};
-  }
-
-  .note {
-    //stroke: #decc93;
-    stroke: ${options.noteBorderColor};
-    fill: ${options.noteBkgColor};
-  }
-
-  .noteText, .noteText > tspan {
-    fill: ${options.noteTextColor};
-    stroke: none;
-  }
-
-  .activation0 {
-    fill: ${options.activationBkgColor};
-    stroke: ${options.activationBorderColor};
-  }
-
-  .activation1 {
-    fill: ${options.activationBkgColor};
-    stroke: ${options.activationBorderColor};
-  }
-
-  .activation2 {
-    fill: ${options.activationBkgColor};
-    stroke: ${options.activationBorderColor};
-  }
-
-  .actorPopupMenu {
-    position: absolute;
-  }
-
-  .actorPopupMenuPanel {
-    position: absolute;
-    fill: ${options.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: ${options.actorBorder};
-    fill: ${options.actorBkg};
-  }
-  .actor-man circle, line {
-    stroke: ${options.actorBorder};
-    fill: ${options.actorBkg};
-    stroke-width: 2px;
-  }
-`;
-const styles = getStyles;
-const ACTOR_TYPE_WIDTH = 18 * 2;
-const drawRect = function(elem, rectData) {
-  return (0,_svgDrawCommon_ad5ef572_js__WEBPACK_IMPORTED_MODULE_5__.d)(elem, rectData);
-};
-const addPopupInteraction = (id, actorCnt2) => {
-  (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.F)(() => {
-    const arr = document.querySelectorAll(id);
-    if (arr.length === 0) {
-      return;
-    }
-    arr[0].addEventListener("mouseover", function() {
-      popupMenuUpFunc("actor" + actorCnt2 + "_popup");
-    });
-    arr[0].addEventListener("mouseout", function() {
-      popupMenuDownFunc("actor" + actorCnt2 + "_popup");
-    });
-  });
-};
-const drawPopup = function(elem, actor, minMenuWidth, textAttrs, forceMenus) {
-  if (actor.links === void 0 || actor.links === null || Object.keys(actor.links).length === 0) {
-    return { height: 0, width: 0 };
-  }
-  const links = actor.links;
-  const actorCnt2 = actor.actorCnt;
-  const rectData = actor.rectData;
-  var displayValue = "none";
-  if (forceMenus) {
-    displayValue = "block !important";
-  }
-  const g = elem.append("g");
-  g.attr("id", "actor" + actorCnt2 + "_popup");
-  g.attr("class", "actorPopupMenu");
-  g.attr("display", displayValue);
-  addPopupInteraction("#actor" + actorCnt2 + "_popup", actorCnt2);
-  var actorClass = "";
-  if (rectData.class !== void 0) {
-    actorClass = " " + rectData.class;
-  }
-  let menuWidth = rectData.width > minMenuWidth ? rectData.width : minMenuWidth;
-  const rectElem = g.append("rect");
-  rectElem.attr("class", "actorPopupMenuPanel" + actorClass);
-  rectElem.attr("x", rectData.x);
-  rectElem.attr("y", rectData.height);
-  rectElem.attr("fill", rectData.fill);
-  rectElem.attr("stroke", rectData.stroke);
-  rectElem.attr("width", menuWidth);
-  rectElem.attr("height", rectData.height);
-  rectElem.attr("rx", rectData.rx);
-  rectElem.attr("ry", rectData.ry);
-  if (links != null) {
-    var linkY = 20;
-    for (let key in links) {
-      var linkElem = g.append("a");
-      var sanitizedLink = (0,_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_1__/* .sanitizeUrl */ .Nm)(links[key]);
-      linkElem.attr("xlink:href", sanitizedLink);
-      linkElem.attr("target", "_blank");
-      _drawMenuItemTextCandidateFunc(textAttrs)(
-        key,
-        linkElem,
-        rectData.x + 10,
-        rectData.height + linkY,
-        menuWidth,
-        20,
-        { class: "actor" },
-        textAttrs
-      );
-      linkY += 30;
-    }
-  }
-  rectElem.attr("height", linkY);
-  return { height: rectData.height + linkY, width: menuWidth };
-};
-const popupMenu = function(popid) {
-  return "var pu = document.getElementById('" + popid + "'); if (pu != null) { pu.style.display = 'block'; }";
-};
-const popdownMenu = function(popid) {
-  return "var pu = document.getElementById('" + popid + "'); if (pu != null) { pu.style.display = 'none'; }";
-};
-const popupMenuUpFunc = function(popupId) {
-  var pu = document.getElementById(popupId);
-  if (pu != null) {
-    pu.style.display = "block";
-  }
-};
-const popupMenuDownFunc = function(popupId) {
-  var pu = document.getElementById(popupId);
-  if (pu != null) {
-    pu.style.display = "none";
-  }
-};
-const drawText = function(elem, textData) {
-  let prevTextHeight = 0;
-  let textHeight = 0;
-  const lines = textData.text.split(_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.lineBreakRegex);
-  const [_textFontSize, _textFontSizePx] = (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.C)(textData.fontSize);
-  let textElems = [];
-  let dy = 0;
-  let yfunc = () => textData.y;
-  if (textData.valign !== void 0 && textData.textMargin !== void 0 && textData.textMargin > 0) {
-    switch (textData.valign) {
-      case "top":
-      case "start":
-        yfunc = () => Math.round(textData.y + textData.textMargin);
-        break;
-      case "middle":
-      case "center":
-        yfunc = () => Math.round(textData.y + (prevTextHeight + textHeight + textData.textMargin) / 2);
-        break;
-      case "bottom":
-      case "end":
-        yfunc = () => Math.round(
-          textData.y + (prevTextHeight + textHeight + 2 * textData.textMargin) - textData.textMargin
-        );
-        break;
-    }
-  }
-  if (textData.anchor !== void 0 && textData.textMargin !== void 0 && textData.width !== void 0) {
-    switch (textData.anchor) {
-      case "left":
-      case "start":
-        textData.x = Math.round(textData.x + textData.textMargin);
-        textData.anchor = "start";
-        textData.dominantBaseline = "middle";
-        textData.alignmentBaseline = "middle";
-        break;
-      case "middle":
-      case "center":
-        textData.x = Math.round(textData.x + textData.width / 2);
-        textData.anchor = "middle";
-        textData.dominantBaseline = "middle";
-        textData.alignmentBaseline = "middle";
-        break;
-      case "right":
-      case "end":
-        textData.x = Math.round(textData.x + textData.width - textData.textMargin);
-        textData.anchor = "end";
-        textData.dominantBaseline = "middle";
-        textData.alignmentBaseline = "middle";
-        break;
-    }
-  }
-  for (let [i, line] of lines.entries()) {
-    if (textData.textMargin !== void 0 && textData.textMargin === 0 && _textFontSize !== void 0) {
-      dy = i * _textFontSize;
-    }
-    const textElem = elem.append("text");
-    textElem.attr("x", textData.x);
-    textElem.attr("y", yfunc());
-    if (textData.anchor !== void 0) {
-      textElem.attr("text-anchor", textData.anchor).attr("dominant-baseline", textData.dominantBaseline).attr("alignment-baseline", textData.alignmentBaseline);
-    }
-    if (textData.fontFamily !== void 0) {
-      textElem.style("font-family", textData.fontFamily);
-    }
-    if (_textFontSizePx !== void 0) {
-      textElem.style("font-size", _textFontSizePx);
-    }
-    if (textData.fontWeight !== void 0) {
-      textElem.style("font-weight", textData.fontWeight);
-    }
-    if (textData.fill !== void 0) {
-      textElem.attr("fill", textData.fill);
-    }
-    if (textData.class !== void 0) {
-      textElem.attr("class", textData.class);
-    }
-    if (textData.dy !== void 0) {
-      textElem.attr("dy", textData.dy);
-    } else if (dy !== 0) {
-      textElem.attr("dy", dy);
-    }
-    const text = line || _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.Z;
-    if (textData.tspan) {
-      const span = textElem.append("tspan");
-      span.attr("x", textData.x);
-      if (textData.fill !== void 0) {
-        span.attr("fill", textData.fill);
-      }
-      span.text(text);
-    } else {
-      textElem.text(text);
-    }
-    if (textData.valign !== void 0 && textData.textMargin !== void 0 && textData.textMargin > 0) {
-      textHeight += (textElem._groups || textElem)[0][0].getBBox().height;
-      prevTextHeight = textHeight;
-    }
-    textElems.push(textElem);
-  }
-  return textElems;
-};
-const drawLabel = function(elem, txtObject) {
-  function genPoints(x, y, width, height, cut) {
-    return x + "," + y + " " + (x + width) + "," + y + " " + (x + width) + "," + (y + height - cut) + " " + (x + width - cut * 1.2) + "," + (y + height) + " " + x + "," + (y + height);
-  }
-  const polygon = elem.append("polygon");
-  polygon.attr("points", genPoints(txtObject.x, txtObject.y, txtObject.width, txtObject.height, 7));
-  polygon.attr("class", "labelBox");
-  txtObject.y = txtObject.y + txtObject.height / 2;
-  drawText(elem, txtObject);
-  return polygon;
-};
-let actorCnt = -1;
-const fixLifeLineHeights = (diagram2, actors2, actorKeys, conf2) => {
-  if (!diagram2.select) {
-    return;
-  }
-  actorKeys.forEach((actorKey) => {
-    const actor = actors2[actorKey];
-    const actorDOM = diagram2.select("#actor" + actor.actorCnt);
-    if (!conf2.mirrorActors && actor.stopy) {
-      actorDOM.attr("y2", actor.stopy + actor.height / 2);
-    } else if (conf2.mirrorActors) {
-      actorDOM.attr("y2", actor.stopy);
-    }
-  });
-};
-const drawActorTypeParticipant = function(elem, actor, conf2, isFooter) {
-  const actorY = isFooter ? actor.stopy : actor.starty;
-  const center = actor.x + actor.width / 2;
-  const centerY = actorY + 5;
-  const boxpluslineGroup = elem.append("g").lower();
-  var g = boxpluslineGroup;
-  if (!isFooter) {
-    actorCnt++;
-    g.append("line").attr("id", "actor" + actorCnt).attr("x1", center).attr("y1", centerY).attr("x2", center).attr("y2", 2e3).attr("class", "actor-line").attr("class", "200").attr("stroke-width", "0.5px").attr("stroke", "#999");
-    g = boxpluslineGroup.append("g");
-    actor.actorCnt = actorCnt;
-    if (actor.links != null) {
-      g.attr("id", "root-" + actorCnt);
-      addPopupInteraction("#root-" + actorCnt, actorCnt);
-    }
-  }
-  const rect = (0,_svgDrawCommon_ad5ef572_js__WEBPACK_IMPORTED_MODULE_5__.g)();
-  var cssclass = "actor";
-  if (actor.properties != null && actor.properties["class"]) {
-    cssclass = actor.properties["class"];
-  } else {
-    rect.fill = "#eaeaea";
-  }
-  rect.x = actor.x;
-  rect.y = actorY;
-  rect.width = actor.width;
-  rect.height = actor.height;
-  rect.class = cssclass;
-  rect.rx = 3;
-  rect.ry = 3;
-  const rectElem = drawRect(g, rect);
-  actor.rectData = rect;
-  if (actor.properties != null && actor.properties["icon"]) {
-    const iconSrc = actor.properties["icon"].trim();
-    if (iconSrc.charAt(0) === "@") {
-      (0,_svgDrawCommon_ad5ef572_js__WEBPACK_IMPORTED_MODULE_5__.b)(g, rect.x + rect.width - 20, rect.y + 10, iconSrc.substr(1));
-    } else {
-      (0,_svgDrawCommon_ad5ef572_js__WEBPACK_IMPORTED_MODULE_5__.c)(g, rect.x + rect.width - 20, rect.y + 10, iconSrc);
-    }
-  }
-  _drawTextCandidateFunc(conf2)(
-    actor.description,
-    g,
-    rect.x,
-    rect.y,
-    rect.width,
-    rect.height,
-    { class: "actor" },
-    conf2
-  );
-  let height = actor.height;
-  if (rectElem.node) {
-    const bounds2 = rectElem.node().getBBox();
-    actor.height = bounds2.height;
-    height = bounds2.height;
-  }
-  return height;
-};
-const drawActorTypeActor = function(elem, actor, conf2, isFooter) {
-  const actorY = isFooter ? actor.stopy : actor.starty;
-  const center = actor.x + actor.width / 2;
-  const centerY = actorY + 80;
-  elem.lower();
-  if (!isFooter) {
-    actorCnt++;
-    elem.append("line").attr("id", "actor" + actorCnt).attr("x1", center).attr("y1", centerY).attr("x2", center).attr("y2", 2e3).attr("class", "actor-line").attr("class", "200").attr("stroke-width", "0.5px").attr("stroke", "#999");
-    actor.actorCnt = actorCnt;
-  }
-  const actElem = elem.append("g");
-  actElem.attr("class", "actor-man");
-  const rect = (0,_svgDrawCommon_ad5ef572_js__WEBPACK_IMPORTED_MODULE_5__.g)();
-  rect.x = actor.x;
-  rect.y = actorY;
-  rect.fill = "#eaeaea";
-  rect.width = actor.width;
-  rect.height = actor.height;
-  rect.class = "actor";
-  rect.rx = 3;
-  rect.ry = 3;
-  actElem.append("line").attr("id", "actor-man-torso" + actorCnt).attr("x1", center).attr("y1", actorY + 25).attr("x2", center).attr("y2", actorY + 45);
-  actElem.append("line").attr("id", "actor-man-arms" + actorCnt).attr("x1", center - ACTOR_TYPE_WIDTH / 2).attr("y1", actorY + 33).attr("x2", center + ACTOR_TYPE_WIDTH / 2).attr("y2", actorY + 33);
-  actElem.append("line").attr("x1", center - ACTOR_TYPE_WIDTH / 2).attr("y1", actorY + 60).attr("x2", center).attr("y2", actorY + 45);
-  actElem.append("line").attr("x1", center).attr("y1", actorY + 45).attr("x2", center + ACTOR_TYPE_WIDTH / 2 - 2).attr("y2", actorY + 60);
-  const circle = actElem.append("circle");
-  circle.attr("cx", actor.x + actor.width / 2);
-  circle.attr("cy", actorY + 10);
-  circle.attr("r", 15);
-  circle.attr("width", actor.width);
-  circle.attr("height", actor.height);
-  const bounds2 = actElem.node().getBBox();
-  actor.height = bounds2.height;
-  _drawTextCandidateFunc(conf2)(
-    actor.description,
-    actElem,
-    rect.x,
-    rect.y + 35,
-    rect.width,
-    rect.height,
-    { class: "actor" },
-    conf2
-  );
-  return actor.height;
-};
-const drawActor = function(elem, actor, conf2, isFooter) {
-  switch (actor.type) {
-    case "actor":
-      return drawActorTypeActor(elem, actor, conf2, isFooter);
-    case "participant":
-      return drawActorTypeParticipant(elem, actor, conf2, isFooter);
-  }
-};
-const drawBox = function(elem, box, conf2) {
-  const boxplustextGroup = elem.append("g");
-  const g = boxplustextGroup;
-  drawBackgroundRect(g, box);
-  if (box.name) {
-    _drawTextCandidateFunc(conf2)(
-      box.name,
-      g,
-      box.x,
-      box.y + (box.textMaxHeight || 0) / 2,
-      box.width,
-      0,
-      { class: "text" },
-      conf2
-    );
-  }
-  g.lower();
-};
-const anchorElement = function(elem) {
-  return elem.append("g");
-};
-const drawActivation = function(elem, bounds2, verticalPos, conf2, actorActivations2) {
-  const rect = (0,_svgDrawCommon_ad5ef572_js__WEBPACK_IMPORTED_MODULE_5__.g)();
-  const g = bounds2.anchored;
-  rect.x = bounds2.startx;
-  rect.y = bounds2.starty;
-  rect.class = "activation" + actorActivations2 % 3;
-  rect.width = bounds2.stopx - bounds2.startx;
-  rect.height = verticalPos - bounds2.starty;
-  drawRect(g, rect);
-};
-const drawLoop = function(elem, loopModel, labelText, conf2) {
-  const {
-    boxMargin,
-    boxTextMargin,
-    labelBoxHeight,
-    labelBoxWidth,
-    messageFontFamily: fontFamily,
-    messageFontSize: fontSize,
-    messageFontWeight: fontWeight
-  } = conf2;
-  const g = elem.append("g");
-  const drawLoopLine = function(startx, starty, stopx, stopy) {
-    return g.append("line").attr("x1", startx).attr("y1", starty).attr("x2", stopx).attr("y2", stopy).attr("class", "loopLine");
-  };
-  drawLoopLine(loopModel.startx, loopModel.starty, loopModel.stopx, loopModel.starty);
-  drawLoopLine(loopModel.stopx, loopModel.starty, loopModel.stopx, loopModel.stopy);
-  drawLoopLine(loopModel.startx, loopModel.stopy, loopModel.stopx, loopModel.stopy);
-  drawLoopLine(loopModel.startx, loopModel.starty, loopModel.startx, loopModel.stopy);
-  if (loopModel.sections !== void 0) {
-    loopModel.sections.forEach(function(item) {
-      drawLoopLine(loopModel.startx, item.y, loopModel.stopx, item.y).style(
-        "stroke-dasharray",
-        "3, 3"
-      );
-    });
-  }
-  let txt = (0,_svgDrawCommon_ad5ef572_js__WEBPACK_IMPORTED_MODULE_5__.e)();
-  txt.text = labelText;
-  txt.x = loopModel.startx;
-  txt.y = loopModel.starty;
-  txt.fontFamily = fontFamily;
-  txt.fontSize = fontSize;
-  txt.fontWeight = fontWeight;
-  txt.anchor = "middle";
-  txt.valign = "middle";
-  txt.tspan = false;
-  txt.width = labelBoxWidth || 50;
-  txt.height = labelBoxHeight || 20;
-  txt.textMargin = boxTextMargin;
-  txt.class = "labelText";
-  drawLabel(g, txt);
-  txt = getTextObj();
-  txt.text = loopModel.title;
-  txt.x = loopModel.startx + labelBoxWidth / 2 + (loopModel.stopx - loopModel.startx) / 2;
-  txt.y = loopModel.starty + boxMargin + boxTextMargin;
-  txt.anchor = "middle";
-  txt.valign = "middle";
-  txt.textMargin = boxTextMargin;
-  txt.class = "loopText";
-  txt.fontFamily = fontFamily;
-  txt.fontSize = fontSize;
-  txt.fontWeight = fontWeight;
-  txt.wrap = true;
-  let textElem = drawText(g, txt);
-  if (loopModel.sectionTitles !== void 0) {
-    loopModel.sectionTitles.forEach(function(item, idx) {
-      if (item.message) {
-        txt.text = item.message;
-        txt.x = loopModel.startx + (loopModel.stopx - loopModel.startx) / 2;
-        txt.y = loopModel.sections[idx].y + boxMargin + boxTextMargin;
-        txt.class = "loopText";
-        txt.anchor = "middle";
-        txt.valign = "middle";
-        txt.tspan = false;
-        txt.fontFamily = fontFamily;
-        txt.fontSize = fontSize;
-        txt.fontWeight = fontWeight;
-        txt.wrap = loopModel.wrap;
-        textElem = drawText(g, txt);
-        let sectionHeight = Math.round(
-          textElem.map((te) => (te._groups || te)[0][0].getBBox().height).reduce((acc, curr) => acc + curr)
-        );
-        loopModel.sections[idx].height += sectionHeight - (boxMargin + boxTextMargin);
-      }
-    });
-  }
-  loopModel.height = Math.round(loopModel.stopy - loopModel.starty);
-  return g;
-};
-const drawBackgroundRect = function(elem, bounds2) {
-  (0,_svgDrawCommon_ad5ef572_js__WEBPACK_IMPORTED_MODULE_5__.a)(elem, bounds2);
-};
-const insertDatabaseIcon = function(elem) {
-  elem.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.0 [...]
-  );
-};
-const insertComputerIcon = function(elem) {
-  elem.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"
-  );
-};
-const insertClockIcon = function(elem) {
-  elem.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"
-  );
-};
-const insertArrowHead = function(elem) {
-  elem.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").append("path").attr("d", "M 0 0 L 10 5 L 0 10 z");
-};
-const insertArrowFilledHead = function(elem) {
-  elem.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");
-};
-const insertSequenceNumber = function(elem) {
-  elem.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);
-};
-const insertArrowCrossHead = function(elem) {
-  const defs = elem.append("defs");
-  const marker = defs.append("marker").attr("id", "crosshead").attr("markerWidth", 15).attr("markerHeight", 8).attr("orient", "auto").attr("refX", 4).attr("refY", 4.5);
-  marker.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");
-};
-const getTextObj = 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: true,
-    valign: void 0
-  };
-};
-const getNoteRect = function() {
-  return {
-    x: 0,
-    y: 0,
-    fill: "#EDF2AE",
-    stroke: "#666",
-    width: 100,
-    anchor: "start",
-    height: 100,
-    rx: 0,
-    ry: 0
-  };
-};
-const _drawTextCandidateFunc = function() {
-  function byText(content, g, x, y, width, height, textAttrs) {
-    const text = g.append("text").attr("x", x + width / 2).attr("y", y + height / 2 + 5).style("text-anchor", "middle").text(content);
-    _setTextAttrs(text, textAttrs);
-  }
-  function byTspan(content, g, x, y, width, height, textAttrs, conf2) {
-    const { actorFontSize, actorFontFamily, actorFontWeight } = conf2;
-    const [_actorFontSize, _actorFontSizePx] = (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.C)(actorFontSize);
-    const lines = content.split(_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.lineBreakRegex);
-    for (let i = 0; i < lines.length; i++) {
-      const dy = i * _actorFontSize - _actorFontSize * (lines.length - 1) / 2;
-      const text = g.append("text").attr("x", x + width / 2).attr("y", y).style("text-anchor", "middle").style("font-size", _actorFontSizePx).style("font-weight", actorFontWeight).style("font-family", actorFontFamily);
-      text.append("tspan").attr("x", x + width / 2).attr("dy", dy).text(lines[i]);
-      text.attr("y", y + height / 2).attr("dominant-baseline", "central").attr("alignment-baseline", "central");
-      _setTextAttrs(text, textAttrs);
-    }
-  }
-  function byFo(content, g, x, y, width, height, textAttrs, conf2) {
-    const s = g.append("switch");
-    const f = s.append("foreignObject").attr("x", x).attr("y", y).attr("width", width).attr("height", height);
-    const text = f.append("xhtml:div").style("display", "table").style("height", "100%").style("width", "100%");
-    text.append("div").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(content);
-    byTspan(content, s, x, y, width, height, textAttrs, conf2);
-    _setTextAttrs(text, textAttrs);
-  }
-  function _setTextAttrs(toText, fromTextAttrsDict) {
-    for (const key in fromTextAttrsDict) {
-      if (fromTextAttrsDict.hasOwnProperty(key)) {
-        toText.attr(key, fromTextAttrsDict[key]);
-      }
-    }
-  }
-  return function(conf2) {
-    return conf2.textPlacement === "fo" ? byFo : conf2.textPlacement === "old" ? byText : byTspan;
-  };
-}();
-const _drawMenuItemTextCandidateFunc = function() {
-  function byText(content, g, x, y, width, height, textAttrs) {
-    const text = g.append("text").attr("x", x).attr("y", y).style("text-anchor", "start").text(content);
-    _setTextAttrs(text, textAttrs);
-  }
-  function byTspan(content, g, x, y, width, height, textAttrs, conf2) {
-    const { actorFontSize, actorFontFamily, actorFontWeight } = conf2;
-    const lines = content.split(_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.lineBreakRegex);
-    for (let i = 0; i < lines.length; i++) {
-      const dy = i * actorFontSize - actorFontSize * (lines.length - 1) / 2;
-      const text = g.append("text").attr("x", x).attr("y", y).style("text-anchor", "start").style("font-size", actorFontSize).style("font-weight", actorFontWeight).style("font-family", actorFontFamily);
-      text.append("tspan").attr("x", x).attr("dy", dy).text(lines[i]);
-      text.attr("y", y + height / 2).attr("dominant-baseline", "central").attr("alignment-baseline", "central");
-      _setTextAttrs(text, textAttrs);
-    }
-  }
-  function byFo(content, g, x, y, width, height, textAttrs, conf2) {
-    const s = g.append("switch");
-    const f = s.append("foreignObject").attr("x", x).attr("y", y).attr("width", width).attr("height", height);
-    const text = f.append("xhtml:div").style("display", "table").style("height", "100%").style("width", "100%");
-    text.append("div").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(content);
-    byTspan(content, s, x, y, width, height, textAttrs, conf2);
-    _setTextAttrs(text, textAttrs);
-  }
-  function _setTextAttrs(toText, fromTextAttrsDict) {
-    for (const key in fromTextAttrsDict) {
-      if (fromTextAttrsDict.hasOwnProperty(key)) {
-        toText.attr(key, fromTextAttrsDict[key]);
-      }
-    }
-  }
-  return function(conf2) {
-    return conf2.textPlacement === "fo" ? byFo : conf2.textPlacement === "old" ? byText : byTspan;
-  };
-}();
-const svgDraw = {
-  drawRect,
-  drawText,
-  drawLabel,
-  drawActor,
-  drawBox,
-  drawPopup,
-  anchorElement,
-  drawActivation,
-  drawLoop,
-  drawBackgroundRect,
-  insertArrowHead,
-  insertArrowFilledHead,
-  insertSequenceNumber,
-  insertArrowCrossHead,
-  insertDatabaseIcon,
-  insertComputerIcon,
-  insertClockIcon,
-  getTextObj,
-  getNoteRect,
-  popupMenu,
-  popdownMenu,
-  fixLifeLineHeights,
-  sanitizeUrl: _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_1__/* .sanitizeUrl */ .Nm
-};
-let conf = {};
-const bounds = {
-  data: {
-    startx: void 0,
-    stopx: void 0,
-    starty: void 0,
-    stopy: void 0
-  },
-  verticalPos: 0,
-  sequenceItems: [],
-  activations: [],
-  models: {
-    getHeight: function() {
-      return Math.max.apply(
-        null,
-        this.actors.length === 0 ? [0] : this.actors.map((actor) => actor.height || 0)
-      ) + (this.loops.length === 0 ? 0 : this.loops.map((it) => it.height || 0).reduce((acc, h) => acc + h)) + (this.messages.length === 0 ? 0 : this.messages.map((it) => it.height || 0).reduce((acc, h) => acc + h)) + (this.notes.length === 0 ? 0 : this.notes.map((it) => it.height || 0).reduce((acc, h) => acc + h));
-    },
-    clear: function() {
-      this.actors = [];
-      this.boxes = [];
-      this.loops = [];
-      this.messages = [];
-      this.notes = [];
-    },
-    addBox: function(boxModel) {
-      this.boxes.push(boxModel);
-    },
-    addActor: function(actorModel) {
-      this.actors.push(actorModel);
-    },
-    addLoop: function(loopModel) {
-      this.loops.push(loopModel);
-    },
-    addMessage: function(msgModel) {
-      this.messages.push(msgModel);
-    },
-    addNote: function(noteModel) {
-      this.notes.push(noteModel);
-    },
-    lastActor: function() {
-      return this.actors[this.actors.length - 1];
-    },
-    lastLoop: function() {
-      return this.loops[this.loops.length - 1];
-    },
-    lastMessage: function() {
-      return this.messages[this.messages.length - 1];
-    },
-    lastNote: function() {
-      return this.notes[this.notes.length - 1];
-    },
-    actors: [],
-    boxes: [],
-    loops: [],
-    messages: [],
-    notes: []
-  },
-  init: function() {
-    this.sequenceItems = [];
-    this.activations = [];
-    this.models.clear();
-    this.data = {
-      startx: void 0,
-      stopx: void 0,
-      starty: void 0,
-      stopy: void 0
-    };
-    this.verticalPos = 0;
-    setConf((0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.c)());
-  },
-  updateVal: function(obj, key, val, fun) {
-    if (obj[key] === void 0) {
-      obj[key] = val;
-    } else {
-      obj[key] = fun(val, obj[key]);
-    }
-  },
-  updateBounds: function(startx, starty, stopx, stopy) {
-    const _self = this;
-    let cnt = 0;
-    function updateFn(type) {
-      return function updateItemBounds(item) {
-        cnt++;
-        const n = _self.sequenceItems.length - cnt + 1;
-        _self.updateVal(item, "starty", starty - n * conf.boxMargin, Math.min);
-        _self.updateVal(item, "stopy", stopy + n * conf.boxMargin, Math.max);
-        _self.updateVal(bounds.data, "startx", startx - n * conf.boxMargin, Math.min);
-        _self.updateVal(bounds.data, "stopx", stopx + n * conf.boxMargin, Math.max);
-        if (!(type === "activation")) {
-          _self.updateVal(item, "startx", startx - n * conf.boxMargin, Math.min);
-          _self.updateVal(item, "stopx", stopx + n * conf.boxMargin, Math.max);
-          _self.updateVal(bounds.data, "starty", starty - n * conf.boxMargin, Math.min);
-          _self.updateVal(bounds.data, "stopy", stopy + n * conf.boxMargin, Math.max);
-        }
-      };
-    }
-    this.sequenceItems.forEach(updateFn());
-    this.activations.forEach(updateFn("activation"));
-  },
-  insert: function(startx, starty, stopx, stopy) {
-    const _startx = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMin(startx, stopx);
-    const _stopx = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(startx, stopx);
-    const _starty = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMin(starty, stopy);
-    const _stopy = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(starty, stopy);
-    this.updateVal(bounds.data, "startx", _startx, Math.min);
-    this.updateVal(bounds.data, "starty", _starty, Math.min);
-    this.updateVal(bounds.data, "stopx", _stopx, Math.max);
-    this.updateVal(bounds.data, "stopy", _stopy, Math.max);
-    this.updateBounds(_startx, _starty, _stopx, _stopy);
-  },
-  newActivation: function(message, diagram2, actors2) {
-    const actorRect = actors2[message.from.actor];
-    const stackedSize = actorActivations(message.from.actor).length || 0;
-    const x = actorRect.x + actorRect.width / 2 + (stackedSize - 1) * conf.activationWidth / 2;
-    this.activations.push({
-      startx: x,
-      starty: this.verticalPos + 2,
-      stopx: x + conf.activationWidth,
-      stopy: void 0,
-      actor: message.from.actor,
-      anchored: svgDraw.anchorElement(diagram2)
-    });
-  },
-  endActivation: function(message) {
-    const lastActorActivationIdx = this.activations.map(function(activation) {
-      return activation.actor;
-    }).lastIndexOf(message.from.actor);
-    return this.activations.splice(lastActorActivationIdx, 1)[0];
-  },
-  createLoop: function(title = { message: void 0, wrap: false, width: void 0 }, fill) {
-    return {
-      startx: void 0,
-      starty: this.verticalPos,
-      stopx: void 0,
-      stopy: void 0,
-      title: title.message,
-      wrap: title.wrap,
-      width: title.width,
-      height: 0,
-      fill
-    };
-  },
-  newLoop: function(title = { message: void 0, wrap: false, width: void 0 }, fill) {
-    this.sequenceItems.push(this.createLoop(title, fill));
-  },
-  endLoop: function() {
-    return this.sequenceItems.pop();
-  },
-  isLoopOverlap: function() {
-    return this.sequenceItems.length ? this.sequenceItems[this.sequenceItems.length - 1].overlap : false;
-  },
-  addSectionToLoop: function(message) {
-    const loop = this.sequenceItems.pop();
-    loop.sections = loop.sections || [];
-    loop.sectionTitles = loop.sectionTitles || [];
-    loop.sections.push({ y: bounds.getVerticalPos(), height: 0 });
-    loop.sectionTitles.push(message);
-    this.sequenceItems.push(loop);
-  },
-  saveVerticalPos: function() {
-    if (this.isLoopOverlap()) {
-      this.savedVerticalPos = this.verticalPos;
-    }
-  },
-  resetVerticalPos: function() {
-    if (this.isLoopOverlap()) {
-      this.verticalPos = this.savedVerticalPos;
-    }
-  },
-  bumpVerticalPos: function(bump) {
-    this.verticalPos = this.verticalPos + bump;
-    this.data.stopy = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(this.data.stopy, this.verticalPos);
-  },
-  getVerticalPos: function() {
-    return this.verticalPos;
-  },
-  getBounds: function() {
-    return { bounds: this.data, models: this.models };
-  }
-};
-const drawNote = function(elem, noteModel) {
-  bounds.bumpVerticalPos(conf.boxMargin);
-  noteModel.height = conf.boxMargin;
-  noteModel.starty = bounds.getVerticalPos();
-  const rect = (0,_svgDrawCommon_ad5ef572_js__WEBPACK_IMPORTED_MODULE_5__.g)();
-  rect.x = noteModel.startx;
-  rect.y = noteModel.starty;
-  rect.width = noteModel.width || conf.width;
-  rect.class = "note";
-  const g = elem.append("g");
-  const rectElem = svgDraw.drawRect(g, rect);
-  const textObj = (0,_svgDrawCommon_ad5ef572_js__WEBPACK_IMPORTED_MODULE_5__.e)();
-  textObj.x = noteModel.startx;
-  textObj.y = noteModel.starty;
-  textObj.width = rect.width;
-  textObj.dy = "1em";
-  textObj.text = noteModel.message;
-  textObj.class = "noteText";
-  textObj.fontFamily = conf.noteFontFamily;
-  textObj.fontSize = conf.noteFontSize;
-  textObj.fontWeight = conf.noteFontWeight;
-  textObj.anchor = conf.noteAlign;
-  textObj.textMargin = conf.noteMargin;
-  textObj.valign = "center";
-  const textElem = drawText(g, textObj);
-  const textHeight = Math.round(
-    textElem.map((te) => (te._groups || te)[0][0].getBBox().height).reduce((acc, curr) => acc + curr)
-  );
-  rectElem.attr("height", textHeight + 2 * conf.noteMargin);
-  noteModel.height += textHeight + 2 * conf.noteMargin;
-  bounds.bumpVerticalPos(textHeight + 2 * conf.noteMargin);
-  noteModel.stopy = noteModel.starty + textHeight + 2 * conf.noteMargin;
-  noteModel.stopx = noteModel.startx + rect.width;
-  bounds.insert(noteModel.startx, noteModel.starty, noteModel.stopx, noteModel.stopy);
-  bounds.models.addNote(noteModel);
-};
-const messageFont = (cnf) => {
-  return {
-    fontFamily: cnf.messageFontFamily,
-    fontSize: cnf.messageFontSize,
-    fontWeight: cnf.messageFontWeight
-  };
-};
-const noteFont = (cnf) => {
-  return {
-    fontFamily: cnf.noteFontFamily,
-    fontSize: cnf.noteFontSize,
-    fontWeight: cnf.noteFontWeight
-  };
-};
-const actorFont = (cnf) => {
-  return {
-    fontFamily: cnf.actorFontFamily,
-    fontSize: cnf.actorFontSize,
-    fontWeight: cnf.actorFontWeight
-  };
-};
-function boundMessage(_diagram, msgModel) {
-  bounds.bumpVerticalPos(10);
-  const { startx, stopx, message } = msgModel;
-  const lines = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.splitBreaks(message).length;
-  const textDims = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.calculateTextDimensions(message, messageFont(conf));
-  const lineHeight = textDims.height / lines;
-  msgModel.height += lineHeight;
-  bounds.bumpVerticalPos(lineHeight);
-  let lineStartY;
-  let totalOffset = textDims.height - 10;
-  const textWidth = textDims.width;
-  if (startx === stopx) {
-    lineStartY = bounds.getVerticalPos() + totalOffset;
-    if (!conf.rightAngles) {
-      totalOffset += conf.boxMargin;
-      lineStartY = bounds.getVerticalPos() + totalOffset;
-    }
-    totalOffset += 30;
-    const dx = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(textWidth / 2, conf.width / 2);
-    bounds.insert(
-      startx - dx,
-      bounds.getVerticalPos() - 10 + totalOffset,
-      stopx + dx,
-      bounds.getVerticalPos() + 30 + totalOffset
-    );
-  } else {
-    totalOffset += conf.boxMargin;
-    lineStartY = bounds.getVerticalPos() + totalOffset;
-    bounds.insert(startx, lineStartY - 10, stopx, lineStartY);
-  }
-  bounds.bumpVerticalPos(totalOffset);
-  msgModel.height += totalOffset;
-  msgModel.stopy = msgModel.starty + msgModel.height;
-  bounds.insert(msgModel.fromBounds, msgModel.starty, msgModel.toBounds, msgModel.stopy);
-  return lineStartY;
-}
-const drawMessage = function(diagram2, msgModel, lineStartY, diagObj) {
-  const { startx, stopx, starty, message, type, sequenceIndex, sequenceVisible } = msgModel;
-  const textDims = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.calculateTextDimensions(message, messageFont(conf));
-  const textObj = (0,_svgDrawCommon_ad5ef572_js__WEBPACK_IMPORTED_MODULE_5__.e)();
-  textObj.x = startx;
-  textObj.y = starty + 10;
-  textObj.width = stopx - startx;
-  textObj.class = "messageText";
-  textObj.dy = "1em";
-  textObj.text = message;
-  textObj.fontFamily = conf.messageFontFamily;
-  textObj.fontSize = conf.messageFontSize;
-  textObj.fontWeight = conf.messageFontWeight;
-  textObj.anchor = conf.messageAlign;
-  textObj.valign = "center";
-  textObj.textMargin = conf.wrapPadding;
-  textObj.tspan = false;
-  drawText(diagram2, textObj);
-  const textWidth = textDims.width;
-  let line;
-  if (startx === stopx) {
-    if (conf.rightAngles) {
-      line = diagram2.append("path").attr(
-        "d",
-        `M  ${startx},${lineStartY} H ${startx + _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(conf.width / 2, textWidth / 2)} V ${lineStartY + 25} H ${startx}`
-      );
-    } else {
-      line = diagram2.append("path").attr(
-        "d",
-        "M " + startx + "," + lineStartY + " C " + (startx + 60) + "," + (lineStartY - 10) + " " + (startx + 60) + "," + (lineStartY + 30) + " " + startx + "," + (lineStartY + 20)
-      );
-    }
-  } else {
-    line = diagram2.append("line");
-    line.attr("x1", startx);
-    line.attr("y1", lineStartY);
-    line.attr("x2", stopx);
-    line.attr("y2", lineStartY);
-  }
-  if (type === diagObj.db.LINETYPE.DOTTED || type === diagObj.db.LINETYPE.DOTTED_CROSS || type === diagObj.db.LINETYPE.DOTTED_POINT || type === diagObj.db.LINETYPE.DOTTED_OPEN) {
-    line.style("stroke-dasharray", "3, 3");
-    line.attr("class", "messageLine1");
-  } else {
-    line.attr("class", "messageLine0");
-  }
-  let url = "";
-  if (conf.arrowMarkerAbsolute) {
-    url = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search;
-    url = url.replace(/\(/g, "\\(");
-    url = url.replace(/\)/g, "\\)");
-  }
-  line.attr("stroke-width", 2);
-  line.attr("stroke", "none");
-  line.style("fill", "none");
-  if (type === diagObj.db.LINETYPE.SOLID || type === diagObj.db.LINETYPE.DOTTED) {
-    line.attr("marker-end", "url(" + url + "#arrowhead)");
-  }
-  if (type === diagObj.db.LINETYPE.SOLID_POINT || type === diagObj.db.LINETYPE.DOTTED_POINT) {
-    line.attr("marker-end", "url(" + url + "#filled-head)");
-  }
-  if (type === diagObj.db.LINETYPE.SOLID_CROSS || type === diagObj.db.LINETYPE.DOTTED_CROSS) {
-    line.attr("marker-end", "url(" + url + "#crosshead)");
-  }
-  if (sequenceVisible || conf.showSequenceNumbers) {
-    line.attr("marker-start", "url(" + url + "#sequencenumber)");
-    diagram2.append("text").attr("x", startx).attr("y", lineStartY + 4).attr("font-family", "sans-serif").attr("font-size", "12px").attr("text-anchor", "middle").attr("class", "sequenceNumber").text(sequenceIndex);
-  }
-};
-const addActorRenderingData = function(diagram2, actors2, createdActors2, actorKeys, verticalPos, messages2, isFooter) {
-  let prevWidth = 0;
-  let prevMargin = 0;
-  let prevBox = void 0;
-  let maxHeight = 0;
-  for (const actorKey of actorKeys) {
-    const actor = actors2[actorKey];
-    const box = actor.box;
-    if (prevBox && prevBox != box) {
-      if (!isFooter) {
-        bounds.models.addBox(prevBox);
-      }
-      prevMargin += conf.boxMargin + prevBox.margin;
-    }
-    if (box && box != prevBox) {
-      if (!isFooter) {
-        box.x = prevWidth + prevMargin;
-        box.y = verticalPos;
-      }
-      prevMargin += box.margin;
-    }
-    actor.width = actor.width || conf.width;
-    actor.height = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(actor.height || conf.height, conf.height);
-    actor.margin = actor.margin || conf.actorMargin;
-    maxHeight = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(maxHeight, actor.height);
-    if (createdActors2[actor.name]) {
-      prevMargin += actor.width / 2;
-    }
-    actor.x = prevWidth + prevMargin;
-    actor.starty = bounds.getVerticalPos();
-    bounds.insert(actor.x, verticalPos, actor.x + actor.width, actor.height);
-    prevWidth += actor.width + prevMargin;
-    if (actor.box) {
-      actor.box.width = prevWidth + box.margin - actor.box.x;
-    }
-    prevMargin = actor.margin;
-    prevBox = actor.box;
-    bounds.models.addActor(actor);
-  }
-  if (prevBox && !isFooter) {
-    bounds.models.addBox(prevBox);
-  }
-  bounds.bumpVerticalPos(maxHeight);
-};
-const drawActors = function(diagram2, actors2, actorKeys, isFooter) {
-  if (!isFooter) {
-    for (const actorKey of actorKeys) {
-      const actor = actors2[actorKey];
-      svgDraw.drawActor(diagram2, actor, conf, false);
-    }
-  } else {
-    let maxHeight = 0;
-    bounds.bumpVerticalPos(conf.boxMargin * 2);
-    for (const actorKey of actorKeys) {
-      const actor = actors2[actorKey];
-      if (!actor.stopy) {
-        actor.stopy = bounds.getVerticalPos();
-      }
-      const height = svgDraw.drawActor(diagram2, actor, conf, true);
-      maxHeight = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(maxHeight, height);
-    }
-    bounds.bumpVerticalPos(maxHeight + conf.boxMargin);
-  }
-};
-const drawActorsPopup = function(diagram2, actors2, actorKeys, doc) {
-  let maxHeight = 0;
-  let maxWidth = 0;
-  for (const actorKey of actorKeys) {
-    const actor = actors2[actorKey];
-    const minMenuWidth = getRequiredPopupWidth(actor);
-    const menuDimensions = svgDraw.drawPopup(
-      diagram2,
-      actor,
-      minMenuWidth,
-      conf,
-      conf.forceMenus,
-      doc
-    );
-    if (menuDimensions.height > maxHeight) {
-      maxHeight = menuDimensions.height;
-    }
-    if (menuDimensions.width + actor.x > maxWidth) {
-      maxWidth = menuDimensions.width + actor.x;
-    }
-  }
-  return { maxHeight, maxWidth };
-};
-const setConf = function(cnf) {
-  (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.f)(conf, cnf);
-  if (cnf.fontFamily) {
-    conf.actorFontFamily = conf.noteFontFamily = conf.messageFontFamily = cnf.fontFamily;
-  }
-  if (cnf.fontSize) {
-    conf.actorFontSize = conf.noteFontSize = conf.messageFontSize = cnf.fontSize;
-  }
-  if (cnf.fontWeight) {
-    conf.actorFontWeight = conf.noteFontWeight = conf.messageFontWeight = cnf.fontWeight;
-  }
-};
-const actorActivations = function(actor) {
-  return bounds.activations.filter(function(activation) {
-    return activation.actor === actor;
-  });
-};
-const activationBounds = function(actor, actors2) {
-  const actorObj = actors2[actor];
-  const activations = actorActivations(actor);
-  const left = activations.reduce(function(acc, activation) {
-    return _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMin(acc, activation.startx);
-  }, actorObj.x + actorObj.width / 2 - 1);
-  const right = activations.reduce(function(acc, activation) {
-    return _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(acc, activation.stopx);
-  }, actorObj.x + actorObj.width / 2 + 1);
-  return [left, right];
-};
-function adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoopFn) {
-  bounds.bumpVerticalPos(preMargin);
-  let heightAdjust = postMargin;
-  if (msg.id && msg.message && loopWidths[msg.id]) {
-    const loopWidth = loopWidths[msg.id].width;
-    const textConf = messageFont(conf);
-    msg.message = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.wrapLabel(`[${msg.message}]`, loopWidth - 2 * conf.wrapPadding, textConf);
-    msg.width = loopWidth;
-    msg.wrap = true;
-    const textDims = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.calculateTextDimensions(msg.message, textConf);
-    const totalOffset = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(textDims.height, conf.labelBoxHeight);
-    heightAdjust = postMargin + totalOffset;
-    _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(`${totalOffset} - ${msg.message}`);
-  }
-  addLoopFn(msg);
-  bounds.bumpVerticalPos(heightAdjust);
-}
-function adjustCreatedDestroyedData(msg, msgModel, lineStartY, index, actors2, createdActors2, destroyedActors2) {
-  function receiverAdjustment(actor, adjustment) {
-    if (actor.x < actors2[msg.from].x) {
-      bounds.insert(
-        msgModel.stopx - adjustment,
-        msgModel.starty,
-        msgModel.startx,
-        msgModel.stopy + actor.height / 2 + conf.noteMargin
-      );
-      msgModel.stopx = msgModel.stopx + adjustment;
-    } else {
-      bounds.insert(
-        msgModel.startx,
-        msgModel.starty,
-        msgModel.stopx + adjustment,
-        msgModel.stopy + actor.height / 2 + conf.noteMargin
-      );
-      msgModel.stopx = msgModel.stopx - adjustment;
-    }
-  }
-  function senderAdjustment(actor, adjustment) {
-    if (actor.x < actors2[msg.to].x) {
-      bounds.insert(
-        msgModel.startx - adjustment,
-        msgModel.starty,
-        msgModel.stopx,
-        msgModel.stopy + actor.height / 2 + conf.noteMargin
-      );
-      msgModel.startx = msgModel.startx + adjustment;
-    } else {
-      bounds.insert(
-        msgModel.stopx,
-        msgModel.starty,
-        msgModel.startx + adjustment,
-        msgModel.stopy + actor.height / 2 + conf.noteMargin
-      );
-      msgModel.startx = msgModel.startx - adjustment;
-    }
-  }
-  if (createdActors2[msg.to] == index) {
-    const actor = actors2[msg.to];
-    const adjustment = actor.type == "actor" ? ACTOR_TYPE_WIDTH / 2 + 3 : actor.width / 2 + 3;
-    receiverAdjustment(actor, adjustment);
-    actor.starty = lineStartY - actor.height / 2;
-    bounds.bumpVerticalPos(actor.height / 2);
-  } else if (destroyedActors2[msg.from] == index) {
-    const actor = actors2[msg.from];
-    if (conf.mirrorActors) {
-      const adjustment = actor.type == "actor" ? ACTOR_TYPE_WIDTH / 2 : actor.width / 2;
-      senderAdjustment(actor, adjustment);
-    }
-    actor.stopy = lineStartY - actor.height / 2;
-    bounds.bumpVerticalPos(actor.height / 2);
-  } else if (destroyedActors2[msg.to] == index) {
-    const actor = actors2[msg.to];
-    if (conf.mirrorActors) {
-      const adjustment = actor.type == "actor" ? ACTOR_TYPE_WIDTH / 2 + 3 : actor.width / 2 + 3;
-      receiverAdjustment(actor, adjustment);
-    }
-    actor.stopy = lineStartY - actor.height / 2;
-    bounds.bumpVerticalPos(actor.height / 2);
-  }
-}
-const draw = function(_text, id, _version, diagObj) {
-  const { securityLevel, sequence } = (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.c)();
-  conf = sequence;
-  let sandboxElement;
-  if (securityLevel === "sandbox") {
-    sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_0__/* .select */ .Ys)("#i" + id);
-  }
-  const root = securityLevel === "sandbox" ? (0,d3__WEBPACK_IMPORTED_MODULE_0__/* .select */ .Ys)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_0__/* .select */ .Ys)("body");
-  const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document;
-  bounds.init();
-  _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(diagObj.db);
-  const diagram2 = securityLevel === "sandbox" ? root.select(`[id="${id}"]`) : (0,d3__WEBPACK_IMPORTED_MODULE_0__/* .select */ .Ys)(`[id="${id}"]`);
-  const actors2 = diagObj.db.getActors();
-  const createdActors2 = diagObj.db.getCreatedActors();
-  const destroyedActors2 = diagObj.db.getDestroyedActors();
-  const boxes2 = diagObj.db.getBoxes();
-  let actorKeys = diagObj.db.getActorKeys();
-  const messages2 = diagObj.db.getMessages();
-  const title = diagObj.db.getDiagramTitle();
-  const hasBoxes = diagObj.db.hasAtLeastOneBox();
-  const hasBoxTitles = diagObj.db.hasAtLeastOneBoxWithTitle();
-  const maxMessageWidthPerActor = getMaxMessageWidthPerActor(actors2, messages2, diagObj);
-  conf.height = calculateActorMargins(actors2, maxMessageWidthPerActor, boxes2);
-  svgDraw.insertComputerIcon(diagram2);
-  svgDraw.insertDatabaseIcon(diagram2);
-  svgDraw.insertClockIcon(diagram2);
-  if (hasBoxes) {
-    bounds.bumpVerticalPos(conf.boxMargin);
-    if (hasBoxTitles) {
-      bounds.bumpVerticalPos(boxes2[0].textMaxHeight);
-    }
-  }
-  if (conf.hideUnusedParticipants === true) {
-    const newActors = /* @__PURE__ */ new Set();
-    messages2.forEach((message) => {
-      newActors.add(message.from);
-      newActors.add(message.to);
-    });
-    actorKeys = actorKeys.filter((actorKey) => newActors.has(actorKey));
-  }
-  addActorRenderingData(diagram2, actors2, createdActors2, actorKeys, 0, messages2, false);
-  const loopWidths = calculateLoopBounds(messages2, actors2, maxMessageWidthPerActor, diagObj);
-  svgDraw.insertArrowHead(diagram2);
-  svgDraw.insertArrowCrossHead(diagram2);
-  svgDraw.insertArrowFilledHead(diagram2);
-  svgDraw.insertSequenceNumber(diagram2);
-  function activeEnd(msg, verticalPos) {
-    const activationData = bounds.endActivation(msg);
-    if (activationData.starty + 18 > verticalPos) {
-      activationData.starty = verticalPos - 6;
-      verticalPos += 12;
-    }
-    svgDraw.drawActivation(
-      diagram2,
-      activationData,
-      verticalPos,
-      conf,
-      actorActivations(msg.from.actor).length
-    );
-    bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos);
-  }
-  let sequenceIndex = 1;
-  let sequenceIndexStep = 1;
-  const messagesToDraw = [];
-  const backgrounds = [];
-  messages2.forEach(function(msg, index) {
-    let loopModel, noteModel, msgModel;
-    switch (msg.type) {
-      case diagObj.db.LINETYPE.NOTE:
-        bounds.resetVerticalPos();
-        noteModel = msg.noteModel;
-        drawNote(diagram2, noteModel);
-        break;
-      case diagObj.db.LINETYPE.ACTIVE_START:
-        bounds.newActivation(msg, diagram2, actors2);
-        break;
-      case diagObj.db.LINETYPE.ACTIVE_END:
-        activeEnd(msg, bounds.getVerticalPos());
-        break;
-      case diagObj.db.LINETYPE.LOOP_START:
-        adjustLoopHeightForWrap(
-          loopWidths,
-          msg,
-          conf.boxMargin,
-          conf.boxMargin + conf.boxTextMargin,
-          (message) => bounds.newLoop(message)
-        );
-        break;
-      case diagObj.db.LINETYPE.LOOP_END:
-        loopModel = bounds.endLoop();
-        svgDraw.drawLoop(diagram2, loopModel, "loop", conf);
-        bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());
-        bounds.models.addLoop(loopModel);
-        break;
-      case diagObj.db.LINETYPE.RECT_START:
-        adjustLoopHeightForWrap(
-          loopWidths,
-          msg,
-          conf.boxMargin,
-          conf.boxMargin,
-          (message) => bounds.newLoop(void 0, message.message)
-        );
-        break;
-      case diagObj.db.LINETYPE.RECT_END:
-        loopModel = bounds.endLoop();
-        backgrounds.push(loopModel);
-        bounds.models.addLoop(loopModel);
-        bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());
-        break;
-      case diagObj.db.LINETYPE.OPT_START:
-        adjustLoopHeightForWrap(
-          loopWidths,
-          msg,
-          conf.boxMargin,
-          conf.boxMargin + conf.boxTextMargin,
-          (message) => bounds.newLoop(message)
-        );
-        break;
-      case diagObj.db.LINETYPE.OPT_END:
-        loopModel = bounds.endLoop();
-        svgDraw.drawLoop(diagram2, loopModel, "opt", conf);
-        bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());
-        bounds.models.addLoop(loopModel);
-        break;
-      case diagObj.db.LINETYPE.ALT_START:
-        adjustLoopHeightForWrap(
-          loopWidths,
-          msg,
-          conf.boxMargin,
-          conf.boxMargin + conf.boxTextMargin,
-          (message) => bounds.newLoop(message)
-        );
-        break;
-      case diagObj.db.LINETYPE.ALT_ELSE:
-        adjustLoopHeightForWrap(
-          loopWidths,
-          msg,
-          conf.boxMargin + conf.boxTextMargin,
-          conf.boxMargin,
-          (message) => bounds.addSectionToLoop(message)
-        );
-        break;
-      case diagObj.db.LINETYPE.ALT_END:
-        loopModel = bounds.endLoop();
-        svgDraw.drawLoop(diagram2, loopModel, "alt", conf);
-        bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());
-        bounds.models.addLoop(loopModel);
-        break;
-      case diagObj.db.LINETYPE.PAR_START:
-      case diagObj.db.LINETYPE.PAR_OVER_START:
-        adjustLoopHeightForWrap(
-          loopWidths,
-          msg,
-          conf.boxMargin,
-          conf.boxMargin + conf.boxTextMargin,
-          (message) => bounds.newLoop(message)
-        );
-        bounds.saveVerticalPos();
-        break;
-      case diagObj.db.LINETYPE.PAR_AND:
-        adjustLoopHeightForWrap(
-          loopWidths,
-          msg,
-          conf.boxMargin + conf.boxTextMargin,
-          conf.boxMargin,
-          (message) => bounds.addSectionToLoop(message)
-        );
-        break;
-      case diagObj.db.LINETYPE.PAR_END:
-        loopModel = bounds.endLoop();
-        svgDraw.drawLoop(diagram2, loopModel, "par", conf);
-        bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());
-        bounds.models.addLoop(loopModel);
-        break;
-      case diagObj.db.LINETYPE.AUTONUMBER:
-        sequenceIndex = msg.message.start || sequenceIndex;
-        sequenceIndexStep = msg.message.step || sequenceIndexStep;
-        if (msg.message.visible) {
-          diagObj.db.enableSequenceNumbers();
-        } else {
-          diagObj.db.disableSequenceNumbers();
-        }
-        break;
-      case diagObj.db.LINETYPE.CRITICAL_START:
-        adjustLoopHeightForWrap(
-          loopWidths,
-          msg,
-          conf.boxMargin,
-          conf.boxMargin + conf.boxTextMargin,
-          (message) => bounds.newLoop(message)
-        );
-        break;
-      case diagObj.db.LINETYPE.CRITICAL_OPTION:
-        adjustLoopHeightForWrap(
-          loopWidths,
-          msg,
-          conf.boxMargin + conf.boxTextMargin,
-          conf.boxMargin,
-          (message) => bounds.addSectionToLoop(message)
-        );
-        break;
-      case diagObj.db.LINETYPE.CRITICAL_END:
-        loopModel = bounds.endLoop();
-        svgDraw.drawLoop(diagram2, loopModel, "critical", conf);
-        bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());
-        bounds.models.addLoop(loopModel);
-        break;
-      case diagObj.db.LINETYPE.BREAK_START:
-        adjustLoopHeightForWrap(
-          loopWidths,
-          msg,
-          conf.boxMargin,
-          conf.boxMargin + conf.boxTextMargin,
-          (message) => bounds.newLoop(message)
-        );
-        break;
-      case diagObj.db.LINETYPE.BREAK_END:
-        loopModel = bounds.endLoop();
-        svgDraw.drawLoop(diagram2, loopModel, "break", conf);
-        bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());
-        bounds.models.addLoop(loopModel);
-        break;
-      default:
-        try {
-          msgModel = msg.msgModel;
-          msgModel.starty = bounds.getVerticalPos();
-          msgModel.sequenceIndex = sequenceIndex;
-          msgModel.sequenceVisible = diagObj.db.showSequenceNumbers();
-          const lineStartY = boundMessage(diagram2, msgModel);
-          adjustCreatedDestroyedData(
-            msg,
-            msgModel,
-            lineStartY,
-            index,
-            actors2,
-            createdActors2,
-            destroyedActors2
-          );
-          messagesToDraw.push({ messageModel: msgModel, lineStartY });
-          bounds.models.addMessage(msgModel);
-        } catch (e) {
-          _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.l.error("error while drawing message", e);
-        }
-    }
-    if ([
-      diagObj.db.LINETYPE.SOLID_OPEN,
-      diagObj.db.LINETYPE.DOTTED_OPEN,
-      diagObj.db.LINETYPE.SOLID,
-      diagObj.db.LINETYPE.DOTTED,
-      diagObj.db.LINETYPE.SOLID_CROSS,
-      diagObj.db.LINETYPE.DOTTED_CROSS,
-      diagObj.db.LINETYPE.SOLID_POINT,
-      diagObj.db.LINETYPE.DOTTED_POINT
-    ].includes(msg.type)) {
-      sequenceIndex = sequenceIndex + sequenceIndexStep;
-    }
-  });
-  _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.l.debug("createdActors", createdActors2);
-  _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.l.debug("destroyedActors", destroyedActors2);
-  drawActors(diagram2, actors2, actorKeys, false);
-  messagesToDraw.forEach((e) => drawMessage(diagram2, e.messageModel, e.lineStartY, diagObj));
-  if (conf.mirrorActors) {
-    drawActors(diagram2, actors2, actorKeys, true);
-  }
-  backgrounds.forEach((e) => svgDraw.drawBackgroundRect(diagram2, e));
-  fixLifeLineHeights(diagram2, actors2, actorKeys, conf);
-  bounds.models.boxes.forEach(function(box2) {
-    box2.height = bounds.getVerticalPos() - box2.y;
-    bounds.insert(box2.x, box2.y, box2.x + box2.width, box2.height);
-    box2.startx = box2.x;
-    box2.starty = box2.y;
-    box2.stopx = box2.startx + box2.width;
-    box2.stopy = box2.starty + box2.height;
-    box2.stroke = "rgb(0,0,0, 0.5)";
-    svgDraw.drawBox(diagram2, box2, conf);
-  });
-  if (hasBoxes) {
-    bounds.bumpVerticalPos(conf.boxMargin);
-  }
-  const requiredBoxSize = drawActorsPopup(diagram2, actors2, actorKeys, doc);
-  const { bounds: box } = bounds.getBounds();
-  let boxHeight = box.stopy - box.starty;
-  if (boxHeight < requiredBoxSize.maxHeight) {
-    boxHeight = requiredBoxSize.maxHeight;
-  }
-  let height = boxHeight + 2 * conf.diagramMarginY;
-  if (conf.mirrorActors) {
-    height = height - conf.boxMargin + conf.bottomMarginAdj;
-  }
-  let boxWidth = box.stopx - box.startx;
-  if (boxWidth < requiredBoxSize.maxWidth) {
-    boxWidth = requiredBoxSize.maxWidth;
-  }
-  const width = boxWidth + 2 * conf.diagramMarginX;
-  if (title) {
-    diagram2.append("text").text(title).attr("x", (box.stopx - box.startx) / 2 - 2 * conf.diagramMarginX).attr("y", -25);
-  }
-  (0,_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.i)(diagram2, height, width, conf.useMaxWidth);
-  const extraVertForTitle = title ? 40 : 0;
-  diagram2.attr(
-    "viewBox",
-    box.startx - conf.diagramMarginX + " -" + (conf.diagramMarginY + extraVertForTitle) + " " + width + " " + (height + extraVertForTitle)
-  );
-  _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(`models:`, bounds.models);
-};
-function getMaxMessageWidthPerActor(actors2, messages2, diagObj) {
-  const maxMessageWidthPerActor = {};
-  messages2.forEach(function(msg) {
-    if (actors2[msg.to] && actors2[msg.from]) {
-      const actor = actors2[msg.to];
-      if (msg.placement === diagObj.db.PLACEMENT.LEFTOF && !actor.prevActor) {
-        return;
-      }
-      if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF && !actor.nextActor) {
-        return;
-      }
-      const isNote = msg.placement !== void 0;
-      const isMessage = !isNote;
-      const textFont = isNote ? noteFont(conf) : messageFont(conf);
-      const wrappedMessage = msg.wrap ? _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.wrapLabel(msg.message, conf.width - 2 * conf.wrapPadding, textFont) : msg.message;
-      const messageDimensions = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.calculateTextDimensions(wrappedMessage, textFont);
-      const messageWidth = messageDimensions.width + 2 * conf.wrapPadding;
-      if (isMessage && msg.from === actor.nextActor) {
-        maxMessageWidthPerActor[msg.to] = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(
-          maxMessageWidthPerActor[msg.to] || 0,
-          messageWidth
-        );
-      } else if (isMessage && msg.from === actor.prevActor) {
-        maxMessageWidthPerActor[msg.from] = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(
-          maxMessageWidthPerActor[msg.from] || 0,
-          messageWidth
-        );
-      } else if (isMessage && msg.from === msg.to) {
-        maxMessageWidthPerActor[msg.from] = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(
-          maxMessageWidthPerActor[msg.from] || 0,
-          messageWidth / 2
-        );
-        maxMessageWidthPerActor[msg.to] = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(
-          maxMessageWidthPerActor[msg.to] || 0,
-          messageWidth / 2
-        );
-      } else if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF) {
-        maxMessageWidthPerActor[msg.from] = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(
-          maxMessageWidthPerActor[msg.from] || 0,
-          messageWidth
-        );
-      } else if (msg.placement === diagObj.db.PLACEMENT.LEFTOF) {
-        maxMessageWidthPerActor[actor.prevActor] = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(
-          maxMessageWidthPerActor[actor.prevActor] || 0,
-          messageWidth
-        );
-      } else if (msg.placement === diagObj.db.PLACEMENT.OVER) {
-        if (actor.prevActor) {
-          maxMessageWidthPerActor[actor.prevActor] = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(
-            maxMessageWidthPerActor[actor.prevActor] || 0,
-            messageWidth / 2
-          );
-        }
-        if (actor.nextActor) {
-          maxMessageWidthPerActor[msg.from] = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(
-            maxMessageWidthPerActor[msg.from] || 0,
-            messageWidth / 2
-          );
-        }
-      }
-    }
-  });
-  _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.l.debug("maxMessageWidthPerActor:", maxMessageWidthPerActor);
-  return maxMessageWidthPerActor;
-}
-const getRequiredPopupWidth = function(actor) {
-  let requiredPopupWidth = 0;
-  const textFont = actorFont(conf);
-  for (const key in actor.links) {
-    const labelDimensions = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.calculateTextDimensions(key, textFont);
-    const labelWidth = labelDimensions.width + 2 * conf.wrapPadding + 2 * conf.boxMargin;
-    if (requiredPopupWidth < labelWidth) {
-      requiredPopupWidth = labelWidth;
-    }
-  }
-  return requiredPopupWidth;
-};
-function calculateActorMargins(actors2, actorToMessageWidth, boxes2) {
-  let maxHeight = 0;
-  Object.keys(actors2).forEach((prop) => {
-    const actor = actors2[prop];
-    if (actor.wrap) {
-      actor.description = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.wrapLabel(
-        actor.description,
-        conf.width - 2 * conf.wrapPadding,
-        actorFont(conf)
-      );
-    }
-    const actDims = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.calculateTextDimensions(actor.description, actorFont(conf));
-    actor.width = actor.wrap ? conf.width : _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(conf.width, actDims.width + 2 * conf.wrapPadding);
-    actor.height = actor.wrap ? _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(actDims.height, conf.height) : conf.height;
-    maxHeight = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(maxHeight, actor.height);
-  });
-  for (const actorKey in actorToMessageWidth) {
-    const actor = actors2[actorKey];
-    if (!actor) {
-      continue;
-    }
-    const nextActor = actors2[actor.nextActor];
-    if (!nextActor) {
-      const messageWidth2 = actorToMessageWidth[actorKey];
-      const actorWidth2 = messageWidth2 + conf.actorMargin - actor.width / 2;
-      actor.margin = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(actorWidth2, conf.actorMargin);
-      continue;
-    }
-    const messageWidth = actorToMessageWidth[actorKey];
-    const actorWidth = messageWidth + conf.actorMargin - actor.width / 2 - nextActor.width / 2;
-    actor.margin = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(actorWidth, conf.actorMargin);
-  }
-  let maxBoxHeight = 0;
-  boxes2.forEach((box) => {
-    const textFont = messageFont(conf);
-    let totalWidth = box.actorKeys.reduce((total, aKey) => {
-      return total += actors2[aKey].width + (actors2[aKey].margin || 0);
-    }, 0);
-    totalWidth -= 2 * conf.boxTextMargin;
-    if (box.wrap) {
-      box.name = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.wrapLabel(box.name, totalWidth - 2 * conf.wrapPadding, textFont);
-    }
-    const boxMsgDimensions = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.calculateTextDimensions(box.name, textFont);
-    maxBoxHeight = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(boxMsgDimensions.height, maxBoxHeight);
-    const minWidth = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(totalWidth, boxMsgDimensions.width + 2 * conf.wrapPadding);
-    box.margin = conf.boxTextMargin;
-    if (totalWidth < minWidth) {
-      const missing = (minWidth - totalWidth) / 2;
-      box.margin += missing;
-    }
-  });
-  boxes2.forEach((box) => box.textMaxHeight = maxBoxHeight);
-  return _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(maxHeight, conf.height);
-}
-const buildNoteModel = function(msg, actors2, diagObj) {
-  const startx = actors2[msg.from].x;
-  const stopx = actors2[msg.to].x;
-  const shouldWrap = msg.wrap && msg.message;
-  let textDimensions = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.calculateTextDimensions(
-    shouldWrap ? _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.wrapLabel(msg.message, conf.width, noteFont(conf)) : msg.message,
-    noteFont(conf)
-  );
-  const noteModel = {
-    width: shouldWrap ? conf.width : _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(conf.width, textDimensions.width + 2 * conf.noteMargin),
-    height: 0,
-    startx: actors2[msg.from].x,
-    stopx: 0,
-    starty: 0,
-    stopy: 0,
-    message: msg.message
-  };
-  if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF) {
-    noteModel.width = shouldWrap ? _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(conf.width, textDimensions.width) : _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(
-      actors2[msg.from].width / 2 + actors2[msg.to].width / 2,
-      textDimensions.width + 2 * conf.noteMargin
-    );
-    noteModel.startx = startx + (actors2[msg.from].width + conf.actorMargin) / 2;
-  } else if (msg.placement === diagObj.db.PLACEMENT.LEFTOF) {
-    noteModel.width = shouldWrap ? _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(conf.width, textDimensions.width + 2 * conf.noteMargin) : _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(
-      actors2[msg.from].width / 2 + actors2[msg.to].width / 2,
-      textDimensions.width + 2 * conf.noteMargin
-    );
-    noteModel.startx = startx - noteModel.width + (actors2[msg.from].width - conf.actorMargin) / 2;
-  } else if (msg.to === msg.from) {
-    textDimensions = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.calculateTextDimensions(
-      shouldWrap ? _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.wrapLabel(
-        msg.message,
-        _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(conf.width, actors2[msg.from].width),
-        noteFont(conf)
-      ) : msg.message,
-      noteFont(conf)
-    );
-    noteModel.width = shouldWrap ? _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(conf.width, actors2[msg.from].width) : _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(
-      actors2[msg.from].width,
-      conf.width,
-      textDimensions.width + 2 * conf.noteMargin
-    );
-    noteModel.startx = startx + (actors2[msg.from].width - noteModel.width) / 2;
-  } else {
-    noteModel.width = Math.abs(startx + actors2[msg.from].width / 2 - (stopx + actors2[msg.to].width / 2)) + conf.actorMargin;
-    noteModel.startx = startx < stopx ? startx + actors2[msg.from].width / 2 - conf.actorMargin / 2 : stopx + actors2[msg.to].width / 2 - conf.actorMargin / 2;
-  }
-  if (shouldWrap) {
-    noteModel.message = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.wrapLabel(
-      msg.message,
-      noteModel.width - 2 * conf.wrapPadding,
-      noteFont(conf)
-    );
-  }
-  _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(
-    `NM:[${noteModel.startx},${noteModel.stopx},${noteModel.starty},${noteModel.stopy}:${noteModel.width},${noteModel.height}=${msg.message}]`
-  );
-  return noteModel;
-};
-const buildMessageModel = function(msg, actors2, diagObj) {
-  if (![
-    diagObj.db.LINETYPE.SOLID_OPEN,
-    diagObj.db.LINETYPE.DOTTED_OPEN,
-    diagObj.db.LINETYPE.SOLID,
-    diagObj.db.LINETYPE.DOTTED,
-    diagObj.db.LINETYPE.SOLID_CROSS,
-    diagObj.db.LINETYPE.DOTTED_CROSS,
-    diagObj.db.LINETYPE.SOLID_POINT,
-    diagObj.db.LINETYPE.DOTTED_POINT
-  ].includes(msg.type)) {
-    return {};
-  }
-  const [fromLeft, fromRight] = activationBounds(msg.from, actors2);
-  const [toLeft, toRight] = activationBounds(msg.to, actors2);
-  const isArrowToRight = fromLeft <= toLeft;
-  const startx = isArrowToRight ? fromRight : fromLeft;
-  let stopx = isArrowToRight ? toLeft : toRight;
-  const isArrowToActivation = Math.abs(toLeft - toRight) > 2;
-  const adjustValue = (value) => {
-    return isArrowToRight ? -value : value;
-  };
-  if (msg.from === msg.to) {
-    stopx = startx;
-  } else {
-    if (msg.activate && !isArrowToActivation) {
-      stopx += adjustValue(conf.activationWidth / 2 - 1);
-    }
-    if (![diagObj.db.LINETYPE.SOLID_OPEN, diagObj.db.LINETYPE.DOTTED_OPEN].includes(msg.type)) {
-      stopx += adjustValue(3);
-    }
-  }
-  const allBounds = [fromLeft, fromRight, toLeft, toRight];
-  const boundedWidth = Math.abs(startx - stopx);
-  if (msg.wrap && msg.message) {
-    msg.message = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.wrapLabel(
-      msg.message,
-      _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(boundedWidth + 2 * conf.wrapPadding, conf.width),
-      messageFont(conf)
-    );
-  }
-  const msgDims = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.calculateTextDimensions(msg.message, messageFont(conf));
-  return {
-    width: _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(
-      msg.wrap ? 0 : msgDims.width + 2 * conf.wrapPadding,
-      boundedWidth + 2 * conf.wrapPadding,
-      conf.width
-    ),
-    height: 0,
-    startx,
-    stopx,
-    starty: 0,
-    stopy: 0,
-    message: msg.message,
-    type: msg.type,
-    wrap: msg.wrap,
-    fromBounds: Math.min.apply(null, allBounds),
-    toBounds: Math.max.apply(null, allBounds)
-  };
-};
-const calculateLoopBounds = function(messages2, actors2, _maxWidthPerActor, diagObj) {
-  const loops = {};
-  const stack = [];
-  let current, noteModel, msgModel;
-  messages2.forEach(function(msg) {
-    msg.id = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.u.random({ length: 10 });
-    switch (msg.type) {
-      case diagObj.db.LINETYPE.LOOP_START:
-      case diagObj.db.LINETYPE.ALT_START:
-      case diagObj.db.LINETYPE.OPT_START:
-      case diagObj.db.LINETYPE.PAR_START:
-      case diagObj.db.LINETYPE.PAR_OVER_START:
-      case diagObj.db.LINETYPE.CRITICAL_START:
-      case diagObj.db.LINETYPE.BREAK_START:
-        stack.push({
-          id: msg.id,
-          msg: msg.message,
-          from: Number.MAX_SAFE_INTEGER,
-          to: Number.MIN_SAFE_INTEGER,
-          width: 0
-        });
-        break;
-      case diagObj.db.LINETYPE.ALT_ELSE:
-      case diagObj.db.LINETYPE.PAR_AND:
-      case diagObj.db.LINETYPE.CRITICAL_OPTION:
-        if (msg.message) {
-          current = stack.pop();
-          loops[current.id] = current;
-          loops[msg.id] = current;
-          stack.push(current);
-        }
-        break;
-      case diagObj.db.LINETYPE.LOOP_END:
-      case diagObj.db.LINETYPE.ALT_END:
-      case diagObj.db.LINETYPE.OPT_END:
-      case diagObj.db.LINETYPE.PAR_END:
-      case diagObj.db.LINETYPE.CRITICAL_END:
-      case diagObj.db.LINETYPE.BREAK_END:
-        current = stack.pop();
-        loops[current.id] = current;
-        break;
-      case diagObj.db.LINETYPE.ACTIVE_START:
-        {
-          const actorRect = actors2[msg.from ? msg.from.actor : msg.to.actor];
-          const stackedSize = actorActivations(msg.from ? msg.from.actor : msg.to.actor).length;
-          const x = actorRect.x + actorRect.width / 2 + (stackedSize - 1) * conf.activationWidth / 2;
-          const toAdd = {
-            startx: x,
-            stopx: x + conf.activationWidth,
-            actor: msg.from.actor,
-            enabled: true
-          };
-          bounds.activations.push(toAdd);
-        }
-        break;
-      case diagObj.db.LINETYPE.ACTIVE_END:
-        {
-          const lastActorActivationIdx = bounds.activations.map((a) => a.actor).lastIndexOf(msg.from.actor);
-          delete bounds.activations.splice(lastActorActivationIdx, 1)[0];
-        }
-        break;
-    }
-    const isNote = msg.placement !== void 0;
-    if (isNote) {
-      noteModel = buildNoteModel(msg, actors2, diagObj);
-      msg.noteModel = noteModel;
-      stack.forEach((stk) => {
-        current = stk;
-        current.from = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMin(current.from, noteModel.startx);
-        current.to = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(current.to, noteModel.startx + noteModel.width);
-        current.width = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(current.width, Math.abs(current.from - current.to)) - conf.labelBoxWidth;
-      });
-    } else {
-      msgModel = buildMessageModel(msg, actors2, diagObj);
-      msg.msgModel = msgModel;
-      if (msgModel.startx && msgModel.stopx && stack.length > 0) {
-        stack.forEach((stk) => {
-          current = stk;
-          if (msgModel.startx === msgModel.stopx) {
-            const from = actors2[msg.from];
-            const to = actors2[msg.to];
-            current.from = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMin(
-              from.x - msgModel.width / 2,
-              from.x - from.width / 2,
-              current.from
-            );
-            current.to = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(
-              to.x + msgModel.width / 2,
-              to.x + from.width / 2,
-              current.to
-            );
-            current.width = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(current.width, Math.abs(current.to - current.from)) - conf.labelBoxWidth;
-          } else {
-            current.from = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMin(msgModel.startx, current.from);
-            current.to = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(msgModel.stopx, current.to);
-            current.width = _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.e.getMax(current.width, msgModel.width) - conf.labelBoxWidth;
-          }
-        });
-      }
-    }
-  });
-  bounds.activations = [];
-  _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_4__.l.debug("Loop type widths:", loops);
-  return loops;
-};
-const renderer = {
-  bounds,
-  drawActors,
-  drawActorsPopup,
-  setConf,
-  draw
-};
-const diagram = {
-  parser: parser$1,
-  db,
-  renderer,
-  styles,
-  init: ({ wrap }) => {
-    db.setWrap(wrap);
-  }
-};
-
-
-
-/***/ }),
-
-/***/ 15990:
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */   a: () => (/* binding */ drawBackgroundRect),
-/* harmony export */   b: () => (/* binding */ drawEmbeddedImage),
-/* harmony export */   c: () => (/* binding */ drawImage),
-/* harmony export */   d: () => (/* binding */ drawRect),
-/* harmony export */   e: () => (/* binding */ getTextObj),
-/* harmony export */   f: () => (/* binding */ drawText),
-/* harmony export */   g: () => (/* binding */ getNoteRect)
-/* harmony export */ });
-/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(91088);
-/* harmony import */ var _mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28000);
-
-
-const drawRect = (element, rectData) => {
-  const rectElement = element.append("rect");
-  rectElement.attr("x", rectData.x);
-  rectElement.attr("y", rectData.y);
-  rectElement.attr("fill", rectData.fill);
-  rectElement.attr("stroke", rectData.stroke);
-  rectElement.attr("width", rectData.width);
-  rectElement.attr("height", rectData.height);
-  rectData.rx !== void 0 && rectElement.attr("rx", rectData.rx);
-  rectData.ry !== void 0 && rectElement.attr("ry", rectData.ry);
-  if (rectData.attrs !== void 0) {
-    for (const attrKey in rectData.attrs) {
-      rectElement.attr(attrKey, rectData.attrs[attrKey]);
-    }
-  }
-  rectData.class !== void 0 && rectElement.attr("class", rectData.class);
-  return rectElement;
-};
-const drawBackgroundRect = (element, bounds) => {
-  const rectData = {
-    x: bounds.startx,
-    y: bounds.starty,
-    width: bounds.stopx - bounds.startx,
-    height: bounds.stopy - bounds.starty,
-    fill: bounds.fill,
-    stroke: bounds.stroke,
-    class: "rect"
-  };
-  const rectElement = drawRect(element, rectData);
-  rectElement.lower();
-};
-const drawText = (element, textData) => {
-  const nText = textData.text.replace(_mermaid_934d9bea_js__WEBPACK_IMPORTED_MODULE_1__.H, " ");
-  const textElem = element.append("text");
-  textElem.attr("x", textData.x);
-  textElem.attr("y", textData.y);
-  textElem.attr("class", "legend");
-  textElem.style("text-anchor", textData.anchor);
-  textData.class !== void 0 && textElem.attr("class", textData.class);
-  const tspan = textElem.append("tspan");
-  tspan.attr("x", textData.x + textData.textMargin * 2);
-  tspan.text(nText);
-  return textElem;
-};
-const drawImage = (elem, x, y, link) => {
-  const imageElement = elem.append("image");
-  imageElement.attr("x", x);
-  imageElement.attr("y", y);
-  const sanitizedLink = (0,_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_0__/* .sanitizeUrl */ .Nm)(link);
-  imageElement.attr("xlink:href", sanitizedLink);
-};
-const drawEmbeddedImage = (element, x, y, link) => {
-  const imageElement = element.append("use");
-  imageElement.attr("x", x);
-  imageElement.attr("y", y);
-  const sanitizedLink = (0,_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_0__/* .sanitizeUrl */ .Nm)(link);
-  imageElement.attr("xlink:href", `#${sanitizedLink}`);
-};
-const getNoteRect = () => {
-  const noteRectData = {
-    x: 0,
-    y: 0,
-    width: 100,
-    height: 100,
-    fill: "#EDF2AE",
-    stroke: "#666",
-    anchor: "start",
-    rx: 0,
-    ry: 0
-  };
-  return noteRectData;
-};
-const getTextObj = () => {
-  const testObject = {
-    x: 0,
-    y: 0,
-    width: 100,
-    height: 100,
-    "text-anchor": "start",
-    style: "#666",
-    textMargin: 0,
-    rx: 0,
-    ry: 0,
-    tspan: true
-  };
-  return testObject;
-};
-
-
-
-/***/ })
-
-};
-;
\ No newline at end of file
diff --git a/assets/js/3198.6f9adc87.js b/assets/js/3198.6f9adc87.js
deleted file mode 100644
index bcc8125d..00000000
--- a/assets/js/3198.6f9adc87.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3198],{73198:(t,e,r)=>{r.d(e,{a:()=>l,b:()=>M,c:()=>o,d:()=>H,e:()=>v,f:()=>I,g:()=>W,h:()=>X,i:()=>f,j:()=>Y,l:()=>d,p:()=>T,s:()=>_,u:()=>c});var a=r(28e3),n=r(27509),i=r(3694);const s={extension:(t,e,r)=>{a.l.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("markerH [...]
\ No newline at end of file
diff --git a/assets/js/32.97fad14b.js b/assets/js/32.97fad14b.js
deleted file mode 100644
index acdea9a8..00000000
--- a/assets/js/32.97fad14b.js
+++ /dev/null
@@ -1,10780 +0,0 @@
-"use strict";
-exports.id = 32;
-exports.ids = [32];
-exports.modules = {
-
-/***/ 87892:
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-
-// EXPORTS
-__webpack_require__.d(__webpack_exports__, {
-  bK: () => (/* reexport */ layout)
-});
-
-// UNUSED EXPORTS: acyclic, normalize, rank
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/forEach.js
-var forEach = __webpack_require__(79156);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/uniqueId.js
-var uniqueId = __webpack_require__(59220);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/has.js + 1 modules
-var has = __webpack_require__(27431);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/constant.js
-var constant = __webpack_require__(6964);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/flatten.js
-var flatten = __webpack_require__(23351);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/map.js
-var map = __webpack_require__(55247);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/range.js + 2 modules
-var range = __webpack_require__(57170);
-// EXTERNAL MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/graphlib/index.js
-var graphlib = __webpack_require__(42521);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/data/list.js
-/*
- * Simple doubly linked list implementation derived from Cormen, et al.,
- * "Introduction to Algorithms".
- */
-
-
-
-class List {
-  constructor() {
-    var sentinel = {};
-    sentinel._next = sentinel._prev = sentinel;
-    this._sentinel = sentinel;
-  }
-  dequeue() {
-    var sentinel = this._sentinel;
-    var entry = sentinel._prev;
-    if (entry !== sentinel) {
-      unlink(entry);
-      return entry;
-    }
-  }
-  enqueue(entry) {
-    var sentinel = this._sentinel;
-    if (entry._prev && entry._next) {
-      unlink(entry);
-    }
-    entry._next = sentinel._next;
-    sentinel._next._prev = entry;
-    sentinel._next = entry;
-    entry._prev = sentinel;
-  }
-  toString() {
-    var strs = [];
-    var sentinel = this._sentinel;
-    var curr = sentinel._prev;
-    while (curr !== sentinel) {
-      strs.push(JSON.stringify(curr, filterOutLinks));
-      curr = curr._prev;
-    }
-    return '[' + strs.join(', ') + ']';
-  }
-}
-
-function unlink(entry) {
-  entry._prev._next = entry._next;
-  entry._next._prev = entry._prev;
-  delete entry._next;
-  delete entry._prev;
-}
-
-function filterOutLinks(k, v) {
-  if (k !== '_next' && k !== '_prev') {
-    return v;
-  }
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/greedy-fas.js
-
-
-
-
-/*
- * A greedy heuristic for finding a feedback arc set for a graph. A feedback
- * arc set is a set of edges that can be removed to make a graph acyclic.
- * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, "A fast and
- * effective heuristic for the feedback arc set problem." This implementation
- * adjusts that from the paper to allow for weighted edges.
- */
-
-
-var DEFAULT_WEIGHT_FN = constant/* default */.Z(1);
-
-function greedyFAS(g, weightFn) {
-  if (g.nodeCount() <= 1) {
-    return [];
-  }
-  var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);
-  var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);
-
-  // Expand multi-edges
-  return flatten/* default */.Z(
-    map/* default */.Z(results, function (e) {
-      return g.outEdges(e.v, e.w);
-    })
-  );
-}
-
-function doGreedyFAS(g, buckets, zeroIdx) {
-  var results = [];
-  var sources = buckets[buckets.length - 1];
-  var sinks = buckets[0];
-
-  var entry;
-  while (g.nodeCount()) {
-    while ((entry = sinks.dequeue())) {
-      removeNode(g, buckets, zeroIdx, entry);
-    }
-    while ((entry = sources.dequeue())) {
-      removeNode(g, buckets, zeroIdx, entry);
-    }
-    if (g.nodeCount()) {
-      for (var i = buckets.length - 2; i > 0; --i) {
-        entry = buckets[i].dequeue();
-        if (entry) {
-          results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));
-          break;
-        }
-      }
-    }
-  }
-
-  return results;
-}
-
-function removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {
-  var results = collectPredecessors ? [] : undefined;
-
-  forEach/* default */.Z(g.inEdges(entry.v), function (edge) {
-    var weight = g.edge(edge);
-    var uEntry = g.node(edge.v);
-
-    if (collectPredecessors) {
-      results.push({ v: edge.v, w: edge.w });
-    }
-
-    uEntry.out -= weight;
-    assignBucket(buckets, zeroIdx, uEntry);
-  });
-
-  forEach/* default */.Z(g.outEdges(entry.v), function (edge) {
-    var weight = g.edge(edge);
-    var w = edge.w;
-    var wEntry = g.node(w);
-    wEntry['in'] -= weight;
-    assignBucket(buckets, zeroIdx, wEntry);
-  });
-
-  g.removeNode(entry.v);
-
-  return results;
-}
-
-function buildState(g, weightFn) {
-  var fasGraph = new graphlib/* Graph */.k();
-  var maxIn = 0;
-  var maxOut = 0;
-
-  forEach/* default */.Z(g.nodes(), function (v) {
-    fasGraph.setNode(v, { v: v, in: 0, out: 0 });
-  });
-
-  // Aggregate weights on nodes, but also sum the weights across multi-edges
-  // into a single edge for the fasGraph.
-  forEach/* default */.Z(g.edges(), function (e) {
-    var prevWeight = fasGraph.edge(e.v, e.w) || 0;
-    var weight = weightFn(e);
-    var edgeWeight = prevWeight + weight;
-    fasGraph.setEdge(e.v, e.w, edgeWeight);
-    maxOut = Math.max(maxOut, (fasGraph.node(e.v).out += weight));
-    maxIn = Math.max(maxIn, (fasGraph.node(e.w)['in'] += weight));
-  });
-
-  var buckets = range/* default */.Z(maxOut + maxIn + 3).map(function () {
-    return new List();
-  });
-  var zeroIdx = maxIn + 1;
-
-  forEach/* default */.Z(fasGraph.nodes(), function (v) {
-    assignBucket(buckets, zeroIdx, fasGraph.node(v));
-  });
-
-  return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };
-}
-
-function assignBucket(buckets, zeroIdx, entry) {
-  if (!entry.out) {
-    buckets[0].enqueue(entry);
-  } else if (!entry['in']) {
-    buckets[buckets.length - 1].enqueue(entry);
-  } else {
-    buckets[entry.out - entry['in'] + zeroIdx].enqueue(entry);
-  }
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/acyclic.js
-
-
-
-
-
-function run(g) {
-  var fas = g.graph().acyclicer === 'greedy' ? greedyFAS(g, weightFn(g)) : dfsFAS(g);
-  forEach/* default */.Z(fas, function (e) {
-    var label = g.edge(e);
-    g.removeEdge(e);
-    label.forwardName = e.name;
-    label.reversed = true;
-    g.setEdge(e.w, e.v, label, uniqueId/* default */.Z('rev'));
-  });
-
-  function weightFn(g) {
-    return function (e) {
-      return g.edge(e).weight;
-    };
-  }
-}
-
-function dfsFAS(g) {
-  var fas = [];
-  var stack = {};
-  var visited = {};
-
-  function dfs(v) {
-    if (has/* default */.Z(visited, v)) {
-      return;
-    }
-    visited[v] = true;
-    stack[v] = true;
-    forEach/* default */.Z(g.outEdges(v), function (e) {
-      if (has/* default */.Z(stack, e.w)) {
-        fas.push(e);
-      } else {
-        dfs(e.w);
-      }
-    });
-    delete stack[v];
-  }
-
-  forEach/* default */.Z(g.nodes(), dfs);
-  return fas;
-}
-
-function undo(g) {
-  forEach/* default */.Z(g.edges(), function (e) {
-    var label = g.edge(e);
-    if (label.reversed) {
-      g.removeEdge(e);
-
-      var forwardName = label.forwardName;
-      delete label.reversed;
-      delete label.forwardName;
-      g.setEdge(e.w, e.v, label, forwardName);
-    }
-  });
-}
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/merge.js + 6 modules
-var merge = __webpack_require__(64546);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/pick.js + 4 modules
-var pick = __webpack_require__(77524);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/defaults.js
-var defaults = __webpack_require__(70374);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isSymbol.js
-var isSymbol = __webpack_require__(98111);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseExtremum.js
-
-
-/**
- * The base implementation of methods like `_.max` and `_.min` which accepts a
- * `comparator` to determine the extremum value.
- *
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} iteratee The iteratee invoked per iteration.
- * @param {Function} comparator The comparator used to compare values.
- * @returns {*} Returns the extremum value.
- */
-function baseExtremum(array, iteratee, comparator) {
-  var index = -1,
-      length = array.length;
-
-  while (++index < length) {
-    var value = array[index],
-        current = iteratee(value);
-
-    if (current != null && (computed === undefined
-          ? (current === current && !(0,isSymbol/* default */.Z)(current))
-          : comparator(current, computed)
-        )) {
-      var computed = current,
-          result = value;
-    }
-  }
-  return result;
-}
-
-/* harmony default export */ const _baseExtremum = (baseExtremum);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGt.js
-/**
- * The base implementation of `_.gt` which doesn't coerce arguments.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is greater than `other`,
- *  else `false`.
- */
-function baseGt(value, other) {
-  return value > other;
-}
-
-/* harmony default export */ const _baseGt = (baseGt);
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/identity.js
-var identity = __webpack_require__(76402);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/max.js
-
-
-
-
-/**
- * Computes the maximum value of `array`. If `array` is empty or falsey,
- * `undefined` is returned.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Math
- * @param {Array} array The array to iterate over.
- * @returns {*} Returns the maximum value.
- * @example
- *
- * _.max([4, 2, 8, 6]);
- * // => 8
- *
- * _.max([]);
- * // => undefined
- */
-function max(array) {
-  return (array && array.length)
-    ? _baseExtremum(array, identity/* default */.Z, _baseGt)
-    : undefined;
-}
-
-/* harmony default export */ const lodash_es_max = (max);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/last.js
-/**
- * Gets the last element of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to query.
- * @returns {*} Returns the last element of `array`.
- * @example
- *
- * _.last([1, 2, 3]);
- * // => 3
- */
-function last(array) {
-  var length = array == null ? 0 : array.length;
-  return length ? array[length - 1] : undefined;
-}
-
-/* harmony default export */ const lodash_es_last = (last);
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseAssignValue.js
-var _baseAssignValue = __webpack_require__(857);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseForOwn.js
-var _baseForOwn = __webpack_require__(52110);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIteratee.js + 16 modules
-var _baseIteratee = __webpack_require__(50637);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/mapValues.js
-
-
-
-
-/**
- * Creates an object with the same keys as `object` and values generated
- * by running each own enumerable string keyed property of `object` thru
- * `iteratee`. The iteratee is invoked with three arguments:
- * (value, key, object).
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns the new mapped object.
- * @see _.mapKeys
- * @example
- *
- * var users = {
- *   'fred':    { 'user': 'fred',    'age': 40 },
- *   'pebbles': { 'user': 'pebbles', 'age': 1 }
- * };
- *
- * _.mapValues(users, function(o) { return o.age; });
- * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
- *
- * // The `_.property` iteratee shorthand.
- * _.mapValues(users, 'age');
- * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
- */
-function mapValues(object, iteratee) {
-  var result = {};
-  iteratee = (0,_baseIteratee/* default */.Z)(iteratee, 3);
-
-  (0,_baseForOwn/* default */.Z)(object, function(value, key, object) {
-    (0,_baseAssignValue/* default */.Z)(result, key, iteratee(value, key, object));
-  });
-  return result;
-}
-
-/* harmony default export */ const lodash_es_mapValues = (mapValues);
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isUndefined.js
-var isUndefined = __webpack_require__(71180);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseLt.js
-/**
- * The base implementation of `_.lt` which doesn't coerce arguments.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is less than `other`,
- *  else `false`.
- */
-function baseLt(value, other) {
-  return value < other;
-}
-
-/* harmony default export */ const _baseLt = (baseLt);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/min.js
-
-
-
-
-/**
- * Computes the minimum value of `array`. If `array` is empty or falsey,
- * `undefined` is returned.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Math
- * @param {Array} array The array to iterate over.
- * @returns {*} Returns the minimum value.
- * @example
- *
- * _.min([4, 2, 8, 6]);
- * // => 2
- *
- * _.min([]);
- * // => undefined
- */
-function min(array) {
-  return (array && array.length)
-    ? _baseExtremum(array, identity/* default */.Z, _baseLt)
-    : undefined;
-}
-
-/* harmony default export */ const lodash_es_min = (min);
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_root.js
-var _root = __webpack_require__(99615);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/now.js
-
-
-/**
- * Gets the timestamp of the number of milliseconds that have elapsed since
- * the Unix epoch (1 January 1970 00:00:00 UTC).
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Date
- * @returns {number} Returns the timestamp.
- * @example
- *
- * _.defer(function(stamp) {
- *   console.log(_.now() - stamp);
- * }, _.now());
- * // => Logs the number of milliseconds it took for the deferred invocation.
- */
-var now = function() {
-  return _root/* default */.Z.Date.now();
-};
-
-/* harmony default export */ const lodash_es_now = (now);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/util.js
-
-
-
-
-
-/*
- * Adds a dummy node to the graph and return v.
- */
-function addDummyNode(g, type, attrs, name) {
-  var v;
-  do {
-    v = uniqueId/* default */.Z(name);
-  } while (g.hasNode(v));
-
-  attrs.dummy = type;
-  g.setNode(v, attrs);
-  return v;
-}
-
-/*
- * Returns a new graph with only simple edges. Handles aggregation of data
- * associated with multi-edges.
- */
-function simplify(g) {
-  var simplified = new graphlib/* Graph */.k().setGraph(g.graph());
-  forEach/* default */.Z(g.nodes(), function (v) {
-    simplified.setNode(v, g.node(v));
-  });
-  forEach/* default */.Z(g.edges(), function (e) {
-    var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };
-    var label = g.edge(e);
-    simplified.setEdge(e.v, e.w, {
-      weight: simpleLabel.weight + label.weight,
-      minlen: Math.max(simpleLabel.minlen, label.minlen),
-    });
-  });
-  return simplified;
-}
-
-function asNonCompoundGraph(g) {
-  var simplified = new graphlib/* Graph */.k({ multigraph: g.isMultigraph() }).setGraph(g.graph());
-  forEach/* default */.Z(g.nodes(), function (v) {
-    if (!g.children(v).length) {
-      simplified.setNode(v, g.node(v));
-    }
-  });
-  forEach/* default */.Z(g.edges(), function (e) {
-    simplified.setEdge(e, g.edge(e));
-  });
-  return simplified;
-}
-
-function successorWeights(g) {
-  var weightMap = _.map(g.nodes(), function (v) {
-    var sucs = {};
-    _.forEach(g.outEdges(v), function (e) {
-      sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;
-    });
-    return sucs;
-  });
-  return _.zipObject(g.nodes(), weightMap);
-}
-
-function predecessorWeights(g) {
-  var weightMap = _.map(g.nodes(), function (v) {
-    var preds = {};
-    _.forEach(g.inEdges(v), function (e) {
-      preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;
-    });
-    return preds;
-  });
-  return _.zipObject(g.nodes(), weightMap);
-}
-
-/*
- * Finds where a line starting at point ({x, y}) would intersect a rectangle
- * ({x, y, width, height}) if it were pointing at the rectangle's center.
- */
-function intersectRect(rect, point) {
-  var x = rect.x;
-  var y = rect.y;
-
-  // Rectangle intersection algorithm from:
-  // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes
-  var dx = point.x - x;
-  var dy = point.y - y;
-  var w = rect.width / 2;
-  var h = rect.height / 2;
-
-  if (!dx && !dy) {
-    throw new Error('Not possible to find intersection inside of the rectangle');
-  }
-
-  var sx, sy;
-  if (Math.abs(dy) * w > Math.abs(dx) * h) {
-    // Intersection is top or bottom of rect.
-    if (dy < 0) {
-      h = -h;
-    }
-    sx = (h * dx) / dy;
-    sy = h;
-  } else {
-    // Intersection is left or right of rect.
-    if (dx < 0) {
-      w = -w;
-    }
-    sx = w;
-    sy = (w * dy) / dx;
-  }
-
-  return { x: x + sx, y: y + sy };
-}
-
-/*
- * Given a DAG with each node assigned "rank" and "order" properties, this
- * function will produce a matrix with the ids of each node.
- */
-function buildLayerMatrix(g) {
-  var layering = map/* default */.Z(range/* default */.Z(util_maxRank(g) + 1), function () {
-    return [];
-  });
-  forEach/* default */.Z(g.nodes(), function (v) {
-    var node = g.node(v);
-    var rank = node.rank;
-    if (!isUndefined/* default */.Z(rank)) {
-      layering[rank][node.order] = v;
-    }
-  });
-  return layering;
-}
-
-/*
- * Adjusts the ranks for all nodes in the graph such that all nodes v have
- * rank(v) >= 0 and at least one node w has rank(w) = 0.
- */
-function normalizeRanks(g) {
-  var min = lodash_es_min(
-    map/* default */.Z(g.nodes(), function (v) {
-      return g.node(v).rank;
-    })
-  );
-  forEach/* default */.Z(g.nodes(), function (v) {
-    var node = g.node(v);
-    if (has/* default */.Z(node, 'rank')) {
-      node.rank -= min;
-    }
-  });
-}
-
-function removeEmptyRanks(g) {
-  // Ranks may not start at 0, so we need to offset them
-  var offset = lodash_es_min(
-    map/* default */.Z(g.nodes(), function (v) {
-      return g.node(v).rank;
-    })
-  );
-
-  var layers = [];
-  forEach/* default */.Z(g.nodes(), function (v) {
-    var rank = g.node(v).rank - offset;
-    if (!layers[rank]) {
-      layers[rank] = [];
-    }
-    layers[rank].push(v);
-  });
-
-  var delta = 0;
-  var nodeRankFactor = g.graph().nodeRankFactor;
-  forEach/* default */.Z(layers, function (vs, i) {
-    if (isUndefined/* default */.Z(vs) && i % nodeRankFactor !== 0) {
-      --delta;
-    } else if (delta) {
-      forEach/* default */.Z(vs, function (v) {
-        g.node(v).rank += delta;
-      });
-    }
-  });
-}
-
-function addBorderNode(g, prefix, rank, order) {
-  var node = {
-    width: 0,
-    height: 0,
-  };
-  if (arguments.length >= 4) {
-    node.rank = rank;
-    node.order = order;
-  }
-  return addDummyNode(g, 'border', node, prefix);
-}
-
-function util_maxRank(g) {
-  return lodash_es_max(
-    map/* default */.Z(g.nodes(), function (v) {
-      var rank = g.node(v).rank;
-      if (!isUndefined/* default */.Z(rank)) {
-        return rank;
-      }
-    })
-  );
-}
-
-/*
- * Partition a collection into two groups: `lhs` and `rhs`. If the supplied
- * function returns true for an entry it goes into `lhs`. Otherwise it goes
- * into `rhs.
- */
-function partition(collection, fn) {
-  var result = { lhs: [], rhs: [] };
-  forEach/* default */.Z(collection, function (value) {
-    if (fn(value)) {
-      result.lhs.push(value);
-    } else {
-      result.rhs.push(value);
-    }
-  });
-  return result;
-}
-
-/*
- * Returns a new function that wraps `fn` with a timer. The wrapper logs the
- * time it takes to execute the function.
- */
-function util_time(name, fn) {
-  var start = lodash_es_now();
-  try {
-    return fn();
-  } finally {
-    console.log(name + ' time: ' + (lodash_es_now() - start) + 'ms');
-  }
-}
-
-function notime(name, fn) {
-  return fn();
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/add-border-segments.js
-
-
-
-
-
-function addBorderSegments(g) {
-  function dfs(v) {
-    var children = g.children(v);
-    var node = g.node(v);
-    if (children.length) {
-      forEach/* default */.Z(children, dfs);
-    }
-
-    if (has/* default */.Z(node, 'minRank')) {
-      node.borderLeft = [];
-      node.borderRight = [];
-      for (var rank = node.minRank, maxRank = node.maxRank + 1; rank < maxRank; ++rank) {
-        add_border_segments_addBorderNode(g, 'borderLeft', '_bl', v, node, rank);
-        add_border_segments_addBorderNode(g, 'borderRight', '_br', v, node, rank);
-      }
-    }
-  }
-
-  forEach/* default */.Z(g.children(), dfs);
-}
-
-function add_border_segments_addBorderNode(g, prop, prefix, sg, sgNode, rank) {
-  var label = { width: 0, height: 0, rank: rank, borderType: prop };
-  var prev = sgNode[prop][rank - 1];
-  var curr = addDummyNode(g, 'border', label, prefix);
-  sgNode[prop][rank] = curr;
-  g.setParent(curr, sg);
-  if (prev) {
-    g.setEdge(prev, curr, { weight: 1 });
-  }
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/coordinate-system.js
-
-
-
-
-function adjust(g) {
-  var rankDir = g.graph().rankdir.toLowerCase();
-  if (rankDir === 'lr' || rankDir === 'rl') {
-    swapWidthHeight(g);
-  }
-}
-
-function coordinate_system_undo(g) {
-  var rankDir = g.graph().rankdir.toLowerCase();
-  if (rankDir === 'bt' || rankDir === 'rl') {
-    reverseY(g);
-  }
-
-  if (rankDir === 'lr' || rankDir === 'rl') {
-    swapXY(g);
-    swapWidthHeight(g);
-  }
-}
-
-function swapWidthHeight(g) {
-  forEach/* default */.Z(g.nodes(), function (v) {
-    swapWidthHeightOne(g.node(v));
-  });
-  forEach/* default */.Z(g.edges(), function (e) {
-    swapWidthHeightOne(g.edge(e));
-  });
-}
-
-function swapWidthHeightOne(attrs) {
-  var w = attrs.width;
-  attrs.width = attrs.height;
-  attrs.height = w;
-}
-
-function reverseY(g) {
-  forEach/* default */.Z(g.nodes(), function (v) {
-    reverseYOne(g.node(v));
-  });
-
-  forEach/* default */.Z(g.edges(), function (e) {
-    var edge = g.edge(e);
-    forEach/* default */.Z(edge.points, reverseYOne);
-    if (has/* default */.Z(edge, 'y')) {
-      reverseYOne(edge);
-    }
-  });
-}
-
-function reverseYOne(attrs) {
-  attrs.y = -attrs.y;
-}
-
-function swapXY(g) {
-  forEach/* default */.Z(g.nodes(), function (v) {
-    swapXYOne(g.node(v));
-  });
-
-  forEach/* default */.Z(g.edges(), function (e) {
-    var edge = g.edge(e);
-    forEach/* default */.Z(edge.points, swapXYOne);
-    if (has/* default */.Z(edge, 'x')) {
-      swapXYOne(edge);
-    }
-  });
-}
-
-function swapXYOne(attrs) {
-  var x = attrs.x;
-  attrs.x = attrs.y;
-  attrs.y = x;
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/normalize.js
-
-
-
-
-
-/*
- * Breaks any long edges in the graph into short segments that span 1 layer
- * each. This operation is undoable with the denormalize function.
- *
- * Pre-conditions:
- *
- *    1. The input graph is a DAG.
- *    2. Each node in the graph has a "rank" property.
- *
- * Post-condition:
- *
- *    1. All edges in the graph have a length of 1.
- *    2. Dummy nodes are added where edges have been split into segments.
- *    3. The graph is augmented with a "dummyChains" attribute which contains
- *       the first dummy in each chain of dummy nodes produced.
- */
-function normalize_run(g) {
-  g.graph().dummyChains = [];
-  forEach/* default */.Z(g.edges(), function (edge) {
-    normalizeEdge(g, edge);
-  });
-}
-
-function normalizeEdge(g, e) {
-  var v = e.v;
-  var vRank = g.node(v).rank;
-  var w = e.w;
-  var wRank = g.node(w).rank;
-  var name = e.name;
-  var edgeLabel = g.edge(e);
-  var labelRank = edgeLabel.labelRank;
-
-  if (wRank === vRank + 1) return;
-
-  g.removeEdge(e);
-
-  var dummy, attrs, i;
-  for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {
-    edgeLabel.points = [];
-    attrs = {
-      width: 0,
-      height: 0,
-      edgeLabel: edgeLabel,
-      edgeObj: e,
-      rank: vRank,
-    };
-    dummy = addDummyNode(g, 'edge', attrs, '_d');
-    if (vRank === labelRank) {
-      attrs.width = edgeLabel.width;
-      attrs.height = edgeLabel.height;
-      // @ts-expect-error
-      attrs.dummy = 'edge-label';
-      // @ts-expect-error
-      attrs.labelpos = edgeLabel.labelpos;
-    }
-    g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);
-    if (i === 0) {
-      g.graph().dummyChains.push(dummy);
-    }
-    v = dummy;
-  }
-
-  g.setEdge(v, w, { weight: edgeLabel.weight }, name);
-}
-
-function normalize_undo(g) {
-  forEach/* default */.Z(g.graph().dummyChains, function (v) {
-    var node = g.node(v);
-    var origLabel = node.edgeLabel;
-    var w;
-    g.setEdge(node.edgeObj, origLabel);
-    while (node.dummy) {
-      w = g.successors(v)[0];
-      g.removeNode(v);
-      origLabel.points.push({ x: node.x, y: node.y });
-      if (node.dummy === 'edge-label') {
-        origLabel.x = node.x;
-        origLabel.y = node.y;
-        origLabel.width = node.width;
-        origLabel.height = node.height;
-      }
-      v = w;
-      node = g.node(v);
-    }
-  });
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/minBy.js
-
-
-
-
-/**
- * This method is like `_.min` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the criterion by which
- * the value is ranked. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {*} Returns the minimum value.
- * @example
- *
- * var objects = [{ 'n': 1 }, { 'n': 2 }];
- *
- * _.minBy(objects, function(o) { return o.n; });
- * // => { 'n': 1 }
- *
- * // The `_.property` iteratee shorthand.
- * _.minBy(objects, 'n');
- * // => { 'n': 1 }
- */
-function minBy(array, iteratee) {
-  return (array && array.length)
-    ? _baseExtremum(array, (0,_baseIteratee/* default */.Z)(iteratee, 2), _baseLt)
-    : undefined;
-}
-
-/* harmony default export */ const lodash_es_minBy = (minBy);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/rank/util.js
-
-
-
-
-/*
- * Initializes ranks for the input graph using the longest path algorithm. This
- * algorithm scales well and is fast in practice, it yields rather poor
- * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom
- * ranks wide and leaving edges longer than necessary. However, due to its
- * speed, this algorithm is good for getting an initial ranking that can be fed
- * into other algorithms.
- *
- * This algorithm does not normalize layers because it will be used by other
- * algorithms in most cases. If using this algorithm directly, be sure to
- * run normalize at the end.
- *
- * Pre-conditions:
- *
- *    1. Input graph is a DAG.
- *    2. Input graph node labels can be assigned properties.
- *
- * Post-conditions:
- *
- *    1. Each node will be assign an (unnormalized) "rank" property.
- */
-function longestPath(g) {
-  var visited = {};
-
-  function dfs(v) {
-    var label = g.node(v);
-    if (has/* default */.Z(visited, v)) {
-      return label.rank;
-    }
-    visited[v] = true;
-
-    var rank = lodash_es_min(
-      map/* default */.Z(g.outEdges(v), function (e) {
-        return dfs(e.w) - g.edge(e).minlen;
-      })
-    );
-
-    if (
-      rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3
-      rank === undefined || // return value of _.map([]) for Lodash 4
-      rank === null
-    ) {
-      // return value of _.map([null])
-      rank = 0;
-    }
-
-    return (label.rank = rank);
-  }
-
-  forEach/* default */.Z(g.sources(), dfs);
-}
-
-/*
- * Returns the amount of slack for the given edge. The slack is defined as the
- * difference between the length of the edge and its minimum length.
- */
-function slack(g, e) {
-  return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/rank/feasible-tree.js
-
-
-
-
-
-
-/*
- * Constructs a spanning tree with tight edges and adjusted the input node's
- * ranks to achieve this. A tight edge is one that is has a length that matches
- * its "minlen" attribute.
- *
- * The basic structure for this function is derived from Gansner, et al., "A
- * Technique for Drawing Directed Graphs."
- *
- * Pre-conditions:
- *
- *    1. Graph must be a DAG.
- *    2. Graph must be connected.
- *    3. Graph must have at least one node.
- *    5. Graph nodes must have been previously assigned a "rank" property that
- *       respects the "minlen" property of incident edges.
- *    6. Graph edges must have a "minlen" property.
- *
- * Post-conditions:
- *
- *    - Graph nodes will have their rank adjusted to ensure that all edges are
- *      tight.
- *
- * Returns a tree (undirected graph) that is constructed using only "tight"
- * edges.
- */
-function feasibleTree(g) {
-  var t = new graphlib/* Graph */.k({ directed: false });
-
-  // Choose arbitrary node from which to start our tree
-  var start = g.nodes()[0];
-  var size = g.nodeCount();
-  t.setNode(start, {});
-
-  var edge, delta;
-  while (tightTree(t, g) < size) {
-    edge = findMinSlackEdge(t, g);
-    delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);
-    shiftRanks(t, g, delta);
-  }
-
-  return t;
-}
-
-/*
- * Finds a maximal tree of tight edges and returns the number of nodes in the
- * tree.
- */
-function tightTree(t, g) {
-  function dfs(v) {
-    forEach/* default */.Z(g.nodeEdges(v), function (e) {
-      var edgeV = e.v,
-        w = v === edgeV ? e.w : edgeV;
-      if (!t.hasNode(w) && !slack(g, e)) {
-        t.setNode(w, {});
-        t.setEdge(v, w, {});
-        dfs(w);
-      }
-    });
-  }
-
-  forEach/* default */.Z(t.nodes(), dfs);
-  return t.nodeCount();
-}
-
-/*
- * Finds the edge with the smallest slack that is incident on tree and returns
- * it.
- */
-function findMinSlackEdge(t, g) {
-  return lodash_es_minBy(g.edges(), function (e) {
-    if (t.hasNode(e.v) !== t.hasNode(e.w)) {
-      return slack(g, e);
-    }
-  });
-}
-
-function shiftRanks(t, g, delta) {
-  forEach/* default */.Z(t.nodes(), function (v) {
-    g.node(v).rank += delta;
-  });
-}
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArrayLike.js
-var isArrayLike = __webpack_require__(49634);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keys.js
-var keys = __webpack_require__(77251);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_createFind.js
-
-
-
-
-/**
- * Creates a `_.find` or `_.findLast` function.
- *
- * @private
- * @param {Function} findIndexFunc The function to find the collection index.
- * @returns {Function} Returns the new find function.
- */
-function createFind(findIndexFunc) {
-  return function(collection, predicate, fromIndex) {
-    var iterable = Object(collection);
-    if (!(0,isArrayLike/* default */.Z)(collection)) {
-      var iteratee = (0,_baseIteratee/* default */.Z)(predicate, 3);
-      collection = (0,keys/* default */.Z)(collection);
-      predicate = function(key) { return iteratee(iterable[key], key, iterable); };
-    }
-    var index = findIndexFunc(collection, predicate, fromIndex);
-    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
-  };
-}
-
-/* harmony default export */ const _createFind = (createFind);
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseFindIndex.js
-var _baseFindIndex = __webpack_require__(57394);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/toFinite.js + 3 modules
-var toFinite = __webpack_require__(32200);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/toInteger.js
-
-
-/**
- * Converts `value` to an integer.
- *
- * **Note:** This method is loosely based on
- * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toInteger(3.2);
- * // => 3
- *
- * _.toInteger(Number.MIN_VALUE);
- * // => 0
- *
- * _.toInteger(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toInteger('3.2');
- * // => 3
- */
-function toInteger(value) {
-  var result = (0,toFinite/* default */.Z)(value),
-      remainder = result % 1;
-
-  return result === result ? (remainder ? result - remainder : result) : 0;
-}
-
-/* harmony default export */ const lodash_es_toInteger = (toInteger);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/findIndex.js
-
-
-
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * This method is like `_.find` except that it returns the index of the first
- * element `predicate` returns truthy for instead of the element itself.
- *
- * @static
- * @memberOf _
- * @since 1.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {number} Returns the index of the found element, else `-1`.
- * @example
- *
- * var users = [
- *   { 'user': 'barney',  'active': false },
- *   { 'user': 'fred',    'active': false },
- *   { 'user': 'pebbles', 'active': true }
- * ];
- *
- * _.findIndex(users, function(o) { return o.user == 'barney'; });
- * // => 0
- *
- * // The `_.matches` iteratee shorthand.
- * _.findIndex(users, { 'user': 'fred', 'active': false });
- * // => 1
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findIndex(users, ['active', false]);
- * // => 0
- *
- * // The `_.property` iteratee shorthand.
- * _.findIndex(users, 'active');
- * // => 2
- */
-function findIndex(array, predicate, fromIndex) {
-  var length = array == null ? 0 : array.length;
-  if (!length) {
-    return -1;
-  }
-  var index = fromIndex == null ? 0 : lodash_es_toInteger(fromIndex);
-  if (index < 0) {
-    index = nativeMax(length + index, 0);
-  }
-  return (0,_baseFindIndex/* default */.Z)(array, (0,_baseIteratee/* default */.Z)(predicate, 3), index);
-}
-
-/* harmony default export */ const lodash_es_findIndex = (findIndex);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/find.js
-
-
-
-/**
- * Iterates over elements of `collection`, returning the first element
- * `predicate` returns truthy for. The predicate is invoked with three
- * arguments: (value, index|key, collection).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {*} Returns the matched element, else `undefined`.
- * @example
- *
- * var users = [
- *   { 'user': 'barney',  'age': 36, 'active': true },
- *   { 'user': 'fred',    'age': 40, 'active': false },
- *   { 'user': 'pebbles', 'age': 1,  'active': true }
- * ];
- *
- * _.find(users, function(o) { return o.age < 40; });
- * // => object for 'barney'
- *
- * // The `_.matches` iteratee shorthand.
- * _.find(users, { 'age': 1, 'active': true });
- * // => object for 'pebbles'
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.find(users, ['active', false]);
- * // => object for 'fred'
- *
- * // The `_.property` iteratee shorthand.
- * _.find(users, 'active');
- * // => object for 'barney'
- */
-var find = _createFind(lodash_es_findIndex);
-
-/* harmony default export */ const lodash_es_find = (find);
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/filter.js + 1 modules
-var filter = __webpack_require__(38364);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/graphlib/alg/dijkstra.js
-
-
-
-
-
-var DEFAULT_WEIGHT_FUNC = constant/* default */.Z(1);
-
-function dijkstra_dijkstra(g, source, weightFn, edgeFn) {
-  return runDijkstra(
-    g,
-    String(source),
-    weightFn || DEFAULT_WEIGHT_FUNC,
-    edgeFn ||
-      function (v) {
-        return g.outEdges(v);
-      }
-  );
-}
-
-function runDijkstra(g, source, weightFn, edgeFn) {
-  var results = {};
-  var pq = new PriorityQueue();
-  var v, vEntry;
-
-  var updateNeighbors = function (edge) {
-    var w = edge.v !== v ? edge.v : edge.w;
-    var wEntry = results[w];
-    var weight = weightFn(edge);
-    var distance = vEntry.distance + weight;
-
-    if (weight < 0) {
-      throw new Error(
-        'dijkstra does not allow negative edge weights. ' +
-          'Bad edge: ' +
-          edge +
-          ' Weight: ' +
-          weight
-      );
-    }
-
-    if (distance < wEntry.distance) {
-      wEntry.distance = distance;
-      wEntry.predecessor = v;
-      pq.decrease(w, distance);
-    }
-  };
-
-  g.nodes().forEach(function (v) {
-    var distance = v === source ? 0 : Number.POSITIVE_INFINITY;
-    results[v] = { distance: distance };
-    pq.add(v, distance);
-  });
-
-  while (pq.size() > 0) {
-    v = pq.removeMin();
-    vEntry = results[v];
-    if (vEntry.distance === Number.POSITIVE_INFINITY) {
-      break;
-    }
-
-    edgeFn(v).forEach(updateNeighbors);
-  }
-
-  return results;
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/graphlib/alg/dijkstra-all.js
-
-
-
-
-
-function dijkstraAll(g, weightFunc, edgeFunc) {
-  return _.transform(
-    g.nodes(),
-    function (acc, v) {
-      acc[v] = dijkstra(g, v, weightFunc, edgeFunc);
-    },
-    {}
-  );
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/graphlib/alg/floyd-warshall.js
-
-
-
-
-var floyd_warshall_DEFAULT_WEIGHT_FUNC = constant/* default */.Z(1);
-
-function floydWarshall(g, weightFn, edgeFn) {
-  return runFloydWarshall(
-    g,
-    weightFn || floyd_warshall_DEFAULT_WEIGHT_FUNC,
-    edgeFn ||
-      function (v) {
-        return g.outEdges(v);
-      }
-  );
-}
-
-function runFloydWarshall(g, weightFn, edgeFn) {
-  var results = {};
-  var nodes = g.nodes();
-
-  nodes.forEach(function (v) {
-    results[v] = {};
-    results[v][v] = { distance: 0 };
-    nodes.forEach(function (w) {
-      if (v !== w) {
-        results[v][w] = { distance: Number.POSITIVE_INFINITY };
-      }
-    });
-    edgeFn(v).forEach(function (edge) {
-      var w = edge.v === v ? edge.w : edge.v;
-      var d = weightFn(edge);
-      results[v][w] = { distance: d, predecessor: v };
-    });
-  });
-
-  nodes.forEach(function (k) {
-    var rowK = results[k];
-    nodes.forEach(function (i) {
-      var rowI = results[i];
-      nodes.forEach(function (j) {
-        var ik = rowI[k];
-        var kj = rowK[j];
-        var ij = rowI[j];
-        var altDistance = ik.distance + kj.distance;
-        if (altDistance < ij.distance) {
-          ij.distance = altDistance;
-          ij.predecessor = kj.predecessor;
-        }
-      });
-    });
-  });
-
-  return results;
-}
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseKeys.js + 1 modules
-var _baseKeys = __webpack_require__(88343);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getTag.js + 3 modules
-var _getTag = __webpack_require__(23313);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGetTag.js + 2 modules
-var _baseGetTag = __webpack_require__(33918);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArray.js
-var isArray = __webpack_require__(56052);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isObjectLike.js
-var isObjectLike = __webpack_require__(13795);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isString.js
-
-
-
-
-/** `Object#toString` result references. */
-var stringTag = '[object String]';
-
-/**
- * Checks if `value` is classified as a `String` primitive or object.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a string, else `false`.
- * @example
- *
- * _.isString('abc');
- * // => true
- *
- * _.isString(1);
- * // => false
- */
-function isString(value) {
-  return typeof value == 'string' ||
-    (!(0,isArray/* default */.Z)(value) && (0,isObjectLike/* default */.Z)(value) && (0,_baseGetTag/* default */.Z)(value) == stringTag);
-}
-
-/* harmony default export */ const lodash_es_isString = (isString);
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseProperty.js
-var _baseProperty = __webpack_require__(42361);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_asciiSize.js
-
-
-/**
- * Gets the size of an ASCII `string`.
- *
- * @private
- * @param {string} string The string inspect.
- * @returns {number} Returns the string size.
- */
-var asciiSize = (0,_baseProperty/* default */.Z)('length');
-
-/* harmony default export */ const _asciiSize = (asciiSize);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hasUnicode.js
-/** Used to compose unicode character classes. */
-var rsAstralRange = '\\ud800-\\udfff',
-    rsComboMarksRange = '\\u0300-\\u036f',
-    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
-    rsComboSymbolsRange = '\\u20d0-\\u20ff',
-    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
-    rsVarRange = '\\ufe0e\\ufe0f';
-
-/** Used to compose unicode capture groups. */
-var rsZWJ = '\\u200d';
-
-/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
-var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
-
-/**
- * Checks if `string` contains Unicode symbols.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {boolean} Returns `true` if a symbol is found, else `false`.
- */
-function hasUnicode(string) {
-  return reHasUnicode.test(string);
-}
-
-/* harmony default export */ const _hasUnicode = (hasUnicode);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_unicodeSize.js
-/** Used to compose unicode character classes. */
-var _unicodeSize_rsAstralRange = '\\ud800-\\udfff',
-    _unicodeSize_rsComboMarksRange = '\\u0300-\\u036f',
-    _unicodeSize_reComboHalfMarksRange = '\\ufe20-\\ufe2f',
-    _unicodeSize_rsComboSymbolsRange = '\\u20d0-\\u20ff',
-    _unicodeSize_rsComboRange = _unicodeSize_rsComboMarksRange + _unicodeSize_reComboHalfMarksRange + _unicodeSize_rsComboSymbolsRange,
-    _unicodeSize_rsVarRange = '\\ufe0e\\ufe0f';
-
-/** Used to compose unicode capture groups. */
-var rsAstral = '[' + _unicodeSize_rsAstralRange + ']',
-    rsCombo = '[' + _unicodeSize_rsComboRange + ']',
-    rsFitz = '\\ud83c[\\udffb-\\udfff]',
-    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
-    rsNonAstral = '[^' + _unicodeSize_rsAstralRange + ']',
-    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
-    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
-    _unicodeSize_rsZWJ = '\\u200d';
-
-/** Used to compose unicode regexes. */
-var reOptMod = rsModifier + '?',
-    rsOptVar = '[' + _unicodeSize_rsVarRange + ']?',
-    rsOptJoin = '(?:' + _unicodeSize_rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
-    rsSeq = rsOptVar + reOptMod + rsOptJoin,
-    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
-
-/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
-var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
-
-/**
- * Gets the size of a Unicode `string`.
- *
- * @private
- * @param {string} string The string inspect.
- * @returns {number} Returns the string size.
- */
-function unicodeSize(string) {
-  var result = reUnicode.lastIndex = 0;
-  while (reUnicode.test(string)) {
-    ++result;
-  }
-  return result;
-}
-
-/* harmony default export */ const _unicodeSize = (unicodeSize);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stringSize.js
-
-
-
-
-/**
- * Gets the number of symbols in `string`.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {number} Returns the string size.
- */
-function stringSize(string) {
-  return _hasUnicode(string)
-    ? _unicodeSize(string)
-    : _asciiSize(string);
-}
-
-/* harmony default export */ const _stringSize = (stringSize);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/size.js
-
-
-
-
-
-
-/** `Object#toString` result references. */
-var mapTag = '[object Map]',
-    setTag = '[object Set]';
-
-/**
- * Gets the size of `collection` by returning its length for array-like
- * values or the number of own enumerable string keyed properties for objects.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object|string} collection The collection to inspect.
- * @returns {number} Returns the collection size.
- * @example
- *
- * _.size([1, 2, 3]);
- * // => 3
- *
- * _.size({ 'a': 1, 'b': 2 });
- * // => 2
- *
- * _.size('pebbles');
- * // => 7
- */
-function size(collection) {
-  if (collection == null) {
-    return 0;
-  }
-  if ((0,isArrayLike/* default */.Z)(collection)) {
-    return lodash_es_isString(collection) ? _stringSize(collection) : collection.length;
-  }
-  var tag = (0,_getTag/* default */.Z)(collection);
-  if (tag == mapTag || tag == setTag) {
-    return collection.size;
-  }
-  return (0,_baseKeys/* default */.Z)(collection).length;
-}
-
-/* harmony default export */ const lodash_es_size = (size);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/graphlib/alg/topsort.js
-
-
-
-
-topsort_topsort.CycleException = topsort_CycleException;
-
-function topsort_topsort(g) {
-  var visited = {};
-  var stack = {};
-  var results = [];
-
-  function visit(node) {
-    if (has/* default */.Z(stack, node)) {
-      throw new topsort_CycleException();
-    }
-
-    if (!has/* default */.Z(visited, node)) {
-      stack[node] = true;
-      visited[node] = true;
-      forEach/* default */.Z(g.predecessors(node), visit);
-      delete stack[node];
-      results.push(node);
-    }
-  }
-
-  forEach/* default */.Z(g.sinks(), visit);
-
-  if (lodash_es_size(visited) !== g.nodeCount()) {
-    throw new topsort_CycleException();
-  }
-
-  return results;
-}
-
-function topsort_CycleException() {}
-topsort_CycleException.prototype = new Error(); // must be an instance of Error to pass testing
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/graphlib/alg/is-acyclic.js
-
-
-
-
-function isAcyclic(g) {
-  try {
-    topsort(g);
-  } catch (e) {
-    if (e instanceof CycleException) {
-      return false;
-    }
-    throw e;
-  }
-  return true;
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/graphlib/alg/dfs.js
-
-
-
-
-/*
- * A helper that preforms a pre- or post-order traversal on the input graph
- * and returns the nodes in the order they were visited. If the graph is
- * undirected then this algorithm will navigate using neighbors. If the graph
- * is directed then this algorithm will navigate using successors.
- *
- * Order must be one of "pre" or "post".
- */
-function dfs(g, vs, order) {
-  if (!isArray/* default */.Z(vs)) {
-    vs = [vs];
-  }
-
-  var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g);
-
-  var acc = [];
-  var visited = {};
-  forEach/* default */.Z(vs, function (v) {
-    if (!g.hasNode(v)) {
-      throw new Error('Graph does not have node: ' + v);
-    }
-
-    doDfs(g, v, order === 'post', visited, navigation, acc);
-  });
-  return acc;
-}
-
-function doDfs(g, v, postorder, visited, navigation, acc) {
-  if (!has/* default */.Z(visited, v)) {
-    visited[v] = true;
-
-    if (!postorder) {
-      acc.push(v);
-    }
-    forEach/* default */.Z(navigation(v), function (w) {
-      doDfs(g, w, postorder, visited, navigation, acc);
-    });
-    if (postorder) {
-      acc.push(v);
-    }
-  }
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/graphlib/alg/postorder.js
-
-
-
-
-function postorder(g, vs) {
-  return dfs(g, vs, 'post');
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/graphlib/alg/preorder.js
-
-
-
-
-function preorder(g, vs) {
-  return dfs(g, vs, 'pre');
-}
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/graphlib/graph.js + 9 modules
-var graph = __webpack_require__(65377);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/graphlib/alg/prim.js
-
-
-
-
-
-
-function prim(g, weightFunc) {
-  var result = new Graph();
-  var parents = {};
-  var pq = new PriorityQueue();
-  var v;
-
-  function updateNeighbors(edge) {
-    var w = edge.v === v ? edge.w : edge.v;
-    var pri = pq.priority(w);
-    if (pri !== undefined) {
-      var edgeWeight = weightFunc(edge);
-      if (edgeWeight < pri) {
-        parents[w] = v;
-        pq.decrease(w, edgeWeight);
-      }
-    }
-  }
-
-  if (g.nodeCount() === 0) {
-    return result;
-  }
-
-  _.each(g.nodes(), function (v) {
-    pq.add(v, Number.POSITIVE_INFINITY);
-    result.setNode(v);
-  });
-
-  // Start from an arbitrary node
-  pq.decrease(g.nodes()[0], 0);
-
-  var init = false;
-  while (pq.size() > 0) {
-    v = pq.removeMin();
-    if (_.has(parents, v)) {
-      result.setEdge(v, parents[v]);
-    } else if (init) {
-      throw new Error('Input graph is not connected: ' + g);
-    } else {
-      init = true;
-    }
-
-    g.nodeEdges(v).forEach(updateNeighbors);
-  }
-
-  return result;
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/graphlib/alg/index.js
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/rank/network-simplex.js
-
-
-
-
-
-
-
-
-// Expose some internals for testing purposes
-networkSimplex.initLowLimValues = initLowLimValues;
-networkSimplex.initCutValues = initCutValues;
-networkSimplex.calcCutValue = calcCutValue;
-networkSimplex.leaveEdge = leaveEdge;
-networkSimplex.enterEdge = enterEdge;
-networkSimplex.exchangeEdges = exchangeEdges;
-
-/*
- * The network simplex algorithm assigns ranks to each node in the input graph
- * and iteratively improves the ranking to reduce the length of edges.
- *
- * Preconditions:
- *
- *    1. The input graph must be a DAG.
- *    2. All nodes in the graph must have an object value.
- *    3. All edges in the graph must have "minlen" and "weight" attributes.
- *
- * Postconditions:
- *
- *    1. All nodes in the graph will have an assigned "rank" attribute that has
- *       been optimized by the network simplex algorithm. Ranks start at 0.
- *
- *
- * A rough sketch of the algorithm is as follows:
- *
- *    1. Assign initial ranks to each node. We use the longest path algorithm,
- *       which assigns ranks to the lowest position possible. In general this
- *       leads to very wide bottom ranks and unnecessarily long edges.
- *    2. Construct a feasible tight tree. A tight tree is one such that all
- *       edges in the tree have no slack (difference between length of edge
- *       and minlen for the edge). This by itself greatly improves the assigned
- *       rankings by shorting edges.
- *    3. Iteratively find edges that have negative cut values. Generally a
- *       negative cut value indicates that the edge could be removed and a new
- *       tree edge could be added to produce a more compact graph.
- *
- * Much of the algorithms here are derived from Gansner, et al., "A Technique
- * for Drawing Directed Graphs." The structure of the file roughly follows the
- * structure of the overall algorithm.
- */
-function networkSimplex(g) {
-  g = simplify(g);
-  longestPath(g);
-  var t = feasibleTree(g);
-  initLowLimValues(t);
-  initCutValues(t, g);
-
-  var e, f;
-  while ((e = leaveEdge(t))) {
-    f = enterEdge(t, g, e);
-    exchangeEdges(t, g, e, f);
-  }
-}
-
-/*
- * Initializes cut values for all edges in the tree.
- */
-function initCutValues(t, g) {
-  var vs = postorder(t, t.nodes());
-  vs = vs.slice(0, vs.length - 1);
-  forEach/* default */.Z(vs, function (v) {
-    assignCutValue(t, g, v);
-  });
-}
-
-function assignCutValue(t, g, child) {
-  var childLab = t.node(child);
-  var parent = childLab.parent;
-  t.edge(child, parent).cutvalue = calcCutValue(t, g, child);
-}
-
-/*
- * Given the tight tree, its graph, and a child in the graph calculate and
- * return the cut value for the edge between the child and its parent.
- */
-function calcCutValue(t, g, child) {
-  var childLab = t.node(child);
-  var parent = childLab.parent;
-  // True if the child is on the tail end of the edge in the directed graph
-  var childIsTail = true;
-  // The graph's view of the tree edge we're inspecting
-  var graphEdge = g.edge(child, parent);
-  // The accumulated cut value for the edge between this node and its parent
-  var cutValue = 0;
-
-  if (!graphEdge) {
-    childIsTail = false;
-    graphEdge = g.edge(parent, child);
-  }
-
-  cutValue = graphEdge.weight;
-
-  forEach/* default */.Z(g.nodeEdges(child), function (e) {
-    var isOutEdge = e.v === child,
-      other = isOutEdge ? e.w : e.v;
-
-    if (other !== parent) {
-      var pointsToHead = isOutEdge === childIsTail,
-        otherWeight = g.edge(e).weight;
-
-      cutValue += pointsToHead ? otherWeight : -otherWeight;
-      if (isTreeEdge(t, child, other)) {
-        var otherCutValue = t.edge(child, other).cutvalue;
-        cutValue += pointsToHead ? -otherCutValue : otherCutValue;
-      }
-    }
-  });
-
-  return cutValue;
-}
-
-function initLowLimValues(tree, root) {
-  if (arguments.length < 2) {
-    root = tree.nodes()[0];
-  }
-  dfsAssignLowLim(tree, {}, 1, root);
-}
-
-function dfsAssignLowLim(tree, visited, nextLim, v, parent) {
-  var low = nextLim;
-  var label = tree.node(v);
-
-  visited[v] = true;
-  forEach/* default */.Z(tree.neighbors(v), function (w) {
-    if (!has/* default */.Z(visited, w)) {
-      nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);
-    }
-  });
-
-  label.low = low;
-  label.lim = nextLim++;
-  if (parent) {
-    label.parent = parent;
-  } else {
-    // TODO should be able to remove this when we incrementally update low lim
-    delete label.parent;
-  }
-
-  return nextLim;
-}
-
-function leaveEdge(tree) {
-  return lodash_es_find(tree.edges(), function (e) {
-    return tree.edge(e).cutvalue < 0;
-  });
-}
-
-function enterEdge(t, g, edge) {
-  var v = edge.v;
-  var w = edge.w;
-
-  // For the rest of this function we assume that v is the tail and w is the
-  // head, so if we don't have this edge in the graph we should flip it to
-  // match the correct orientation.
-  if (!g.hasEdge(v, w)) {
-    v = edge.w;
-    w = edge.v;
-  }
-
-  var vLabel = t.node(v);
-  var wLabel = t.node(w);
-  var tailLabel = vLabel;
-  var flip = false;
-
-  // If the root is in the tail of the edge then we need to flip the logic that
-  // checks for the head and tail nodes in the candidates function below.
-  if (vLabel.lim > wLabel.lim) {
-    tailLabel = wLabel;
-    flip = true;
-  }
-
-  var candidates = filter/* default */.Z(g.edges(), function (edge) {
-    return (
-      flip === isDescendant(t, t.node(edge.v), tailLabel) &&
-      flip !== isDescendant(t, t.node(edge.w), tailLabel)
-    );
-  });
-
-  return lodash_es_minBy(candidates, function (edge) {
-    return slack(g, edge);
-  });
-}
-
-function exchangeEdges(t, g, e, f) {
-  var v = e.v;
-  var w = e.w;
-  t.removeEdge(v, w);
-  t.setEdge(f.v, f.w, {});
-  initLowLimValues(t);
-  initCutValues(t, g);
-  updateRanks(t, g);
-}
-
-function updateRanks(t, g) {
-  var root = lodash_es_find(t.nodes(), function (v) {
-    return !g.node(v).parent;
-  });
-  var vs = preorder(t, root);
-  vs = vs.slice(1);
-  forEach/* default */.Z(vs, function (v) {
-    var parent = t.node(v).parent,
-      edge = g.edge(v, parent),
-      flipped = false;
-
-    if (!edge) {
-      edge = g.edge(parent, v);
-      flipped = true;
-    }
-
-    g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);
-  });
-}
-
-/*
- * Returns true if the edge is in the tree.
- */
-function isTreeEdge(tree, u, v) {
-  return tree.hasEdge(u, v);
-}
-
-/*
- * Returns true if the specified node is descendant of the root node per the
- * assigned low and lim attributes in the tree.
- */
-function isDescendant(tree, vLabel, rootLabel) {
-  return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/rank/index.js
-
-
-
-
-
-
-/*
- * Assigns a rank to each node in the input graph that respects the "minlen"
- * constraint specified on edges between nodes.
- *
- * This basic structure is derived from Gansner, et al., "A Technique for
- * Drawing Directed Graphs."
- *
- * Pre-conditions:
- *
- *    1. Graph must be a connected DAG
- *    2. Graph nodes must be objects
- *    3. Graph edges must have "weight" and "minlen" attributes
- *
- * Post-conditions:
- *
- *    1. Graph nodes will have a "rank" attribute based on the results of the
- *       algorithm. Ranks can start at any index (including negative), we'll
- *       fix them up later.
- */
-function rank(g) {
-  switch (g.graph().ranker) {
-    case 'network-simplex':
-      networkSimplexRanker(g);
-      break;
-    case 'tight-tree':
-      tightTreeRanker(g);
-      break;
-    case 'longest-path':
-      longestPathRanker(g);
-      break;
-    default:
-      networkSimplexRanker(g);
-  }
-}
-
-// A fast and simple ranker, but results are far from optimal.
-var longestPathRanker = longestPath;
-
-function tightTreeRanker(g) {
-  longestPath(g);
-  feasibleTree(g);
-}
-
-function networkSimplexRanker(g) {
-  networkSimplex(g);
-}
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/values.js + 1 modules
-var values = __webpack_require__(27942);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/reduce.js + 2 modules
-var reduce = __webpack_require__(43329);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/nesting-graph.js
-
-
-
-
-
-/*
- * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,
- * adds appropriate edges to ensure that all cluster nodes are placed between
- * these boundries, and ensures that the graph is connected.
- *
- * In addition we ensure, through the use of the minlen property, that nodes
- * and subgraph border nodes to not end up on the same rank.
- *
- * Preconditions:
- *
- *    1. Input graph is a DAG
- *    2. Nodes in the input graph has a minlen attribute
- *
- * Postconditions:
- *
- *    1. Input graph is connected.
- *    2. Dummy nodes are added for the tops and bottoms of subgraphs.
- *    3. The minlen attribute for nodes is adjusted to ensure nodes do not
- *       get placed on the same rank as subgraph border nodes.
- *
- * The nesting graph idea comes from Sander, "Layout of Compound Directed
- * Graphs."
- */
-function nesting_graph_run(g) {
-  var root = addDummyNode(g, 'root', {}, '_root');
-  var depths = treeDepths(g);
-  var height = lodash_es_max(values/* default */.Z(depths)) - 1; // Note: depths is an Object not an array
-  var nodeSep = 2 * height + 1;
-
-  g.graph().nestingRoot = root;
-
-  // Multiply minlen by nodeSep to align nodes on non-border ranks.
-  forEach/* default */.Z(g.edges(), function (e) {
-    g.edge(e).minlen *= nodeSep;
-  });
-
-  // Calculate a weight that is sufficient to keep subgraphs vertically compact
-  var weight = sumWeights(g) + 1;
-
-  // Create border nodes and link them up
-  forEach/* default */.Z(g.children(), function (child) {
-    nesting_graph_dfs(g, root, nodeSep, weight, height, depths, child);
-  });
-
-  // Save the multiplier for node layers for later removal of empty border
-  // layers.
-  g.graph().nodeRankFactor = nodeSep;
-}
-
-function nesting_graph_dfs(g, root, nodeSep, weight, height, depths, v) {
-  var children = g.children(v);
-  if (!children.length) {
-    if (v !== root) {
-      g.setEdge(root, v, { weight: 0, minlen: nodeSep });
-    }
-    return;
-  }
-
-  var top = addBorderNode(g, '_bt');
-  var bottom = addBorderNode(g, '_bb');
-  var label = g.node(v);
-
-  g.setParent(top, v);
-  label.borderTop = top;
-  g.setParent(bottom, v);
-  label.borderBottom = bottom;
-
-  forEach/* default */.Z(children, function (child) {
-    nesting_graph_dfs(g, root, nodeSep, weight, height, depths, child);
-
-    var childNode = g.node(child);
-    var childTop = childNode.borderTop ? childNode.borderTop : child;
-    var childBottom = childNode.borderBottom ? childNode.borderBottom : child;
-    var thisWeight = childNode.borderTop ? weight : 2 * weight;
-    var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;
-
-    g.setEdge(top, childTop, {
-      weight: thisWeight,
-      minlen: minlen,
-      nestingEdge: true,
-    });
-
-    g.setEdge(childBottom, bottom, {
-      weight: thisWeight,
-      minlen: minlen,
-      nestingEdge: true,
-    });
-  });
-
-  if (!g.parent(v)) {
-    g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });
-  }
-}
-
-function treeDepths(g) {
-  var depths = {};
-  function dfs(v, depth) {
-    var children = g.children(v);
-    if (children && children.length) {
-      forEach/* default */.Z(children, function (child) {
-        dfs(child, depth + 1);
-      });
-    }
-    depths[v] = depth;
-  }
-  forEach/* default */.Z(g.children(), function (v) {
-    dfs(v, 1);
-  });
-  return depths;
-}
-
-function sumWeights(g) {
-  return reduce/* default */.Z(
-    g.edges(),
-    function (acc, e) {
-      return acc + g.edge(e).weight;
-    },
-    0
-  );
-}
-
-function cleanup(g) {
-  var graphLabel = g.graph();
-  g.removeNode(graphLabel.nestingRoot);
-  delete graphLabel.nestingRoot;
-  forEach/* default */.Z(g.edges(), function (e) {
-    var edge = g.edge(e);
-    if (edge.nestingEdge) {
-      g.removeEdge(e);
-    }
-  });
-}
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseClone.js + 15 modules
-var _baseClone = __webpack_require__(85811);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/cloneDeep.js
-
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1,
-    CLONE_SYMBOLS_FLAG = 4;
-
-/**
- * This method is like `_.clone` except that it recursively clones `value`.
- *
- * @static
- * @memberOf _
- * @since 1.0.0
- * @category Lang
- * @param {*} value The value to recursively clone.
- * @returns {*} Returns the deep cloned value.
- * @see _.clone
- * @example
- *
- * var objects = [{ 'a': 1 }, { 'b': 2 }];
- *
- * var deep = _.cloneDeep(objects);
- * console.log(deep[0] === objects[0]);
- * // => false
- */
-function cloneDeep(value) {
-  return (0,_baseClone/* default */.Z)(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
-}
-
-/* harmony default export */ const lodash_es_cloneDeep = (cloneDeep);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/order/add-subgraph-constraints.js
-
-
-
-
-function addSubgraphConstraints(g, cg, vs) {
-  var prev = {},
-    rootPrev;
-
-  forEach/* default */.Z(vs, function (v) {
-    var child = g.parent(v),
-      parent,
-      prevChild;
-    while (child) {
-      parent = g.parent(child);
-      if (parent) {
-        prevChild = prev[parent];
-        prev[parent] = child;
-      } else {
-        prevChild = rootPrev;
-        rootPrev = child;
-      }
-      if (prevChild && prevChild !== child) {
-        cg.setEdge(prevChild, child);
-        return;
-      }
-      child = parent;
-    }
-  });
-
-  /*
-  function dfs(v) {
-    var children = v ? g.children(v) : g.children();
-    if (children.length) {
-      var min = Number.POSITIVE_INFINITY,
-          subgraphs = [];
-      _.each(children, function(child) {
-        var childMin = dfs(child);
-        if (g.children(child).length) {
-          subgraphs.push({ v: child, order: childMin });
-        }
-        min = Math.min(min, childMin);
-      });
-      _.reduce(_.sortBy(subgraphs, "order"), function(prev, curr) {
-        cg.setEdge(prev.v, curr.v);
-        return curr;
-      });
-      return min;
-    }
-    return g.node(v).order;
-  }
-  dfs(undefined);
-  */
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/order/build-layer-graph.js
-
-
-
-
-
-/*
- * Constructs a graph that can be used to sort a layer of nodes. The graph will
- * contain all base and subgraph nodes from the request layer in their original
- * hierarchy and any edges that are incident on these nodes and are of the type
- * requested by the "relationship" parameter.
- *
- * Nodes from the requested rank that do not have parents are assigned a root
- * node in the output graph, which is set in the root graph attribute. This
- * makes it easy to walk the hierarchy of movable nodes during ordering.
- *
- * Pre-conditions:
- *
- *    1. Input graph is a DAG
- *    2. Base nodes in the input graph have a rank attribute
- *    3. Subgraph nodes in the input graph has minRank and maxRank attributes
- *    4. Edges have an assigned weight
- *
- * Post-conditions:
- *
- *    1. Output graph has all nodes in the movable rank with preserved
- *       hierarchy.
- *    2. Root nodes in the movable layer are made children of the node
- *       indicated by the root attribute of the graph.
- *    3. Non-movable nodes incident on movable nodes, selected by the
- *       relationship parameter, are included in the graph (without hierarchy).
- *    4. Edges incident on movable nodes, selected by the relationship
- *       parameter, are added to the output graph.
- *    5. The weights for copied edges are aggregated as need, since the output
- *       graph is not a multi-graph.
- */
-function buildLayerGraph(g, rank, relationship) {
-  var root = createRootNode(g),
-    result = new graphlib/* Graph */.k({ compound: true })
-      .setGraph({ root: root })
-      .setDefaultNodeLabel(function (v) {
-        return g.node(v);
-      });
-
-  forEach/* default */.Z(g.nodes(), function (v) {
-    var node = g.node(v),
-      parent = g.parent(v);
-
-    if (node.rank === rank || (node.minRank <= rank && rank <= node.maxRank)) {
-      result.setNode(v);
-      result.setParent(v, parent || root);
-
-      // This assumes we have only short edges!
-      forEach/* default */.Z(g[relationship](v), function (e) {
-        var u = e.v === v ? e.w : e.v,
-          edge = result.edge(u, v),
-          weight = !isUndefined/* default */.Z(edge) ? edge.weight : 0;
-        result.setEdge(u, v, { weight: g.edge(e).weight + weight });
-      });
-
-      if (has/* default */.Z(node, 'minRank')) {
-        result.setNode(v, {
-          borderLeft: node.borderLeft[rank],
-          borderRight: node.borderRight[rank],
-        });
-      }
-    }
-  });
-
-  return result;
-}
-
-function createRootNode(g) {
-  var v;
-  while (g.hasNode((v = uniqueId/* default */.Z('_root'))));
-  return v;
-}
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_assignValue.js
-var _assignValue = __webpack_require__(61572);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseZipObject.js
-/**
- * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
- *
- * @private
- * @param {Array} props The property identifiers.
- * @param {Array} values The property values.
- * @param {Function} assignFunc The function to assign values.
- * @returns {Object} Returns the new object.
- */
-function baseZipObject(props, values, assignFunc) {
-  var index = -1,
-      length = props.length,
-      valsLength = values.length,
-      result = {};
-
-  while (++index < length) {
-    var value = index < valsLength ? values[index] : undefined;
-    assignFunc(result, props[index], value);
-  }
-  return result;
-}
-
-/* harmony default export */ const _baseZipObject = (baseZipObject);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/zipObject.js
-
-
-
-/**
- * This method is like `_.fromPairs` except that it accepts two arrays,
- * one of property identifiers and one of corresponding values.
- *
- * @static
- * @memberOf _
- * @since 0.4.0
- * @category Array
- * @param {Array} [props=[]] The property identifiers.
- * @param {Array} [values=[]] The property values.
- * @returns {Object} Returns the new object.
- * @example
- *
- * _.zipObject(['a', 'b'], [1, 2]);
- * // => { 'a': 1, 'b': 2 }
- */
-function zipObject(props, values) {
-  return _baseZipObject(props || [], values || [], _assignValue/* default */.Z);
-}
-
-/* harmony default export */ const lodash_es_zipObject = (zipObject);
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseFlatten.js + 1 modules
-var _baseFlatten = __webpack_require__(84887);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayMap.js
-var _arrayMap = __webpack_require__(28019);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGet.js
-var _baseGet = __webpack_require__(49084);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseMap.js
-var _baseMap = __webpack_require__(51135);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseSortBy.js
-/**
- * The base implementation of `_.sortBy` which uses `comparer` to define the
- * sort order of `array` and replaces criteria objects with their corresponding
- * values.
- *
- * @private
- * @param {Array} array The array to sort.
- * @param {Function} comparer The function to define sort order.
- * @returns {Array} Returns `array`.
- */
-function baseSortBy(array, comparer) {
-  var length = array.length;
-
-  array.sort(comparer);
-  while (length--) {
-    array[length] = array[length].value;
-  }
-  return array;
-}
-
-/* harmony default export */ const _baseSortBy = (baseSortBy);
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseUnary.js
-var _baseUnary = __webpack_require__(5467);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_compareAscending.js
-
-
-/**
- * Compares values to sort them in ascending order.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {number} Returns the sort order indicator for `value`.
- */
-function compareAscending(value, other) {
-  if (value !== other) {
-    var valIsDefined = value !== undefined,
-        valIsNull = value === null,
-        valIsReflexive = value === value,
-        valIsSymbol = (0,isSymbol/* default */.Z)(value);
-
-    var othIsDefined = other !== undefined,
-        othIsNull = other === null,
-        othIsReflexive = other === other,
-        othIsSymbol = (0,isSymbol/* default */.Z)(other);
-
-    if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
-        (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
-        (valIsNull && othIsDefined && othIsReflexive) ||
-        (!valIsDefined && othIsReflexive) ||
-        !valIsReflexive) {
-      return 1;
-    }
-    if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
-        (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
-        (othIsNull && valIsDefined && valIsReflexive) ||
-        (!othIsDefined && valIsReflexive) ||
-        !othIsReflexive) {
-      return -1;
-    }
-  }
-  return 0;
-}
-
-/* harmony default export */ const _compareAscending = (compareAscending);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_compareMultiple.js
-
-
-/**
- * Used by `_.orderBy` to compare multiple properties of a value to another
- * and stable sort them.
- *
- * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
- * specify an order of "desc" for descending or "asc" for ascending sort order
- * of corresponding values.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {boolean[]|string[]} orders The order to sort by for each property.
- * @returns {number} Returns the sort order indicator for `object`.
- */
-function compareMultiple(object, other, orders) {
-  var index = -1,
-      objCriteria = object.criteria,
-      othCriteria = other.criteria,
-      length = objCriteria.length,
-      ordersLength = orders.length;
-
-  while (++index < length) {
-    var result = _compareAscending(objCriteria[index], othCriteria[index]);
-    if (result) {
-      if (index >= ordersLength) {
-        return result;
-      }
-      var order = orders[index];
-      return result * (order == 'desc' ? -1 : 1);
-    }
-  }
-  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
-  // that causes it, under certain circumstances, to provide the same value for
-  // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
-  // for more details.
-  //
-  // This also ensures a stable sort in V8 and other engines.
-  // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
-  return object.index - other.index;
-}
-
-/* harmony default export */ const _compareMultiple = (compareMultiple);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseOrderBy.js
-
-
-
-
-
-
-
-
-
-
-/**
- * The base implementation of `_.orderBy` without param guards.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
- * @param {string[]} orders The sort orders of `iteratees`.
- * @returns {Array} Returns the new sorted array.
- */
-function baseOrderBy(collection, iteratees, orders) {
-  if (iteratees.length) {
-    iteratees = (0,_arrayMap/* default */.Z)(iteratees, function(iteratee) {
-      if ((0,isArray/* default */.Z)(iteratee)) {
-        return function(value) {
-          return (0,_baseGet/* default */.Z)(value, iteratee.length === 1 ? iteratee[0] : iteratee);
-        }
-      }
-      return iteratee;
-    });
-  } else {
-    iteratees = [identity/* default */.Z];
-  }
-
-  var index = -1;
-  iteratees = (0,_arrayMap/* default */.Z)(iteratees, (0,_baseUnary/* default */.Z)(_baseIteratee/* default */.Z));
-
-  var result = (0,_baseMap/* default */.Z)(collection, function(value, key, collection) {
-    var criteria = (0,_arrayMap/* default */.Z)(iteratees, function(iteratee) {
-      return iteratee(value);
-    });
-    return { 'criteria': criteria, 'index': ++index, 'value': value };
-  });
-
-  return _baseSortBy(result, function(object, other) {
-    return _compareMultiple(object, other, orders);
-  });
-}
-
-/* harmony default export */ const _baseOrderBy = (baseOrderBy);
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseRest.js
-var _baseRest = __webpack_require__(19851);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isIterateeCall.js
-var _isIterateeCall = __webpack_require__(61833);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/sortBy.js
-
-
-
-
-
-/**
- * Creates an array of elements, sorted in ascending order by the results of
- * running each element in a collection thru each iteratee. This method
- * performs a stable sort, that is, it preserves the original sort order of
- * equal elements. The iteratees are invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {...(Function|Function[])} [iteratees=[_.identity]]
- *  The iteratees to sort by.
- * @returns {Array} Returns the new sorted array.
- * @example
- *
- * var users = [
- *   { 'user': 'fred',   'age': 48 },
- *   { 'user': 'barney', 'age': 36 },
- *   { 'user': 'fred',   'age': 30 },
- *   { 'user': 'barney', 'age': 34 }
- * ];
- *
- * _.sortBy(users, [function(o) { return o.user; }]);
- * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]
- *
- * _.sortBy(users, ['user', 'age']);
- * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]
- */
-var sortBy = (0,_baseRest/* default */.Z)(function(collection, iteratees) {
-  if (collection == null) {
-    return [];
-  }
-  var length = iteratees.length;
-  if (length > 1 && (0,_isIterateeCall/* default */.Z)(collection, iteratees[0], iteratees[1])) {
-    iteratees = [];
-  } else if (length > 2 && (0,_isIterateeCall/* default */.Z)(iteratees[0], iteratees[1], iteratees[2])) {
-    iteratees = [iteratees[0]];
-  }
-  return _baseOrderBy(collection, (0,_baseFlatten/* default */.Z)(iteratees, 1), []);
-});
-
-/* harmony default export */ const lodash_es_sortBy = (sortBy);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/order/cross-count.js
-
-
-
-
-/*
- * A function that takes a layering (an array of layers, each with an array of
- * ordererd nodes) and a graph and returns a weighted crossing count.
- *
- * Pre-conditions:
- *
- *    1. Input graph must be simple (not a multigraph), directed, and include
- *       only simple edges.
- *    2. Edges in the input graph must have assigned weights.
- *
- * Post-conditions:
- *
- *    1. The graph and layering matrix are left unchanged.
- *
- * This algorithm is derived from Barth, et al., "Bilayer Cross Counting."
- */
-function crossCount(g, layering) {
-  var cc = 0;
-  for (var i = 1; i < layering.length; ++i) {
-    cc += twoLayerCrossCount(g, layering[i - 1], layering[i]);
-  }
-  return cc;
-}
-
-function twoLayerCrossCount(g, northLayer, southLayer) {
-  // Sort all of the edges between the north and south layers by their position
-  // in the north layer and then the south. Map these edges to the position of
-  // their head in the south layer.
-  var southPos = lodash_es_zipObject(
-    southLayer,
-    map/* default */.Z(southLayer, function (v, i) {
-      return i;
-    })
-  );
-  var southEntries = flatten/* default */.Z(
-    map/* default */.Z(northLayer, function (v) {
-      return lodash_es_sortBy(
-        map/* default */.Z(g.outEdges(v), function (e) {
-          return { pos: southPos[e.w], weight: g.edge(e).weight };
-        }),
-        'pos'
-      );
-    })
-  );
-
-  // Build the accumulator tree
-  var firstIndex = 1;
-  while (firstIndex < southLayer.length) firstIndex <<= 1;
-  var treeSize = 2 * firstIndex - 1;
-  firstIndex -= 1;
-  var tree = map/* default */.Z(new Array(treeSize), function () {
-    return 0;
-  });
-
-  // Calculate the weighted crossings
-  var cc = 0;
-  forEach/* default */.Z(
-    // @ts-expect-error
-    southEntries.forEach(function (entry) {
-      var index = entry.pos + firstIndex;
-      tree[index] += entry.weight;
-      var weightSum = 0;
-      // @ts-expect-error
-      while (index > 0) {
-        // @ts-expect-error
-        if (index % 2) {
-          weightSum += tree[index + 1];
-        }
-        // @ts-expect-error
-        index = (index - 1) >> 1;
-        tree[index] += entry.weight;
-      }
-      cc += entry.weight * weightSum;
-    })
-  );
-
-  return cc;
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/order/init-order.js
-
-
-
-
-/*
- * Assigns an initial order value for each node by performing a DFS search
- * starting from nodes in the first rank. Nodes are assigned an order in their
- * rank as they are first visited.
- *
- * This approach comes from Gansner, et al., "A Technique for Drawing Directed
- * Graphs."
- *
- * Returns a layering matrix with an array per layer and each layer sorted by
- * the order of its nodes.
- */
-function initOrder(g) {
-  var visited = {};
-  var simpleNodes = filter/* default */.Z(g.nodes(), function (v) {
-    return !g.children(v).length;
-  });
-  var maxRank = lodash_es_max(
-    map/* default */.Z(simpleNodes, function (v) {
-      return g.node(v).rank;
-    })
-  );
-  var layers = map/* default */.Z(range/* default */.Z(maxRank + 1), function () {
-    return [];
-  });
-
-  function dfs(v) {
-    if (has/* default */.Z(visited, v)) return;
-    visited[v] = true;
-    var node = g.node(v);
-    layers[node.rank].push(v);
-    forEach/* default */.Z(g.successors(v), dfs);
-  }
-
-  var orderedVs = lodash_es_sortBy(simpleNodes, function (v) {
-    return g.node(v).rank;
-  });
-  forEach/* default */.Z(orderedVs, dfs);
-
-  return layers;
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/order/barycenter.js
-
-
-
-
-function barycenter(g, movable) {
-  return map/* default */.Z(movable, function (v) {
-    var inV = g.inEdges(v);
-    if (!inV.length) {
-      return { v: v };
-    } else {
-      var result = reduce/* default */.Z(
-        inV,
-        function (acc, e) {
-          var edge = g.edge(e),
-            nodeU = g.node(e.v);
-          return {
-            sum: acc.sum + edge.weight * nodeU.order,
-            weight: acc.weight + edge.weight,
-          };
-        },
-        { sum: 0, weight: 0 }
-      );
-
-      return {
-        v: v,
-        barycenter: result.sum / result.weight,
-        weight: result.weight,
-      };
-    }
-  });
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/order/resolve-conflicts.js
-
-
-
-
-/*
- * Given a list of entries of the form {v, barycenter, weight} and a
- * constraint graph this function will resolve any conflicts between the
- * constraint graph and the barycenters for the entries. If the barycenters for
- * an entry would violate a constraint in the constraint graph then we coalesce
- * the nodes in the conflict into a new node that respects the contraint and
- * aggregates barycenter and weight information.
- *
- * This implementation is based on the description in Forster, "A Fast and
- * Simple Hueristic for Constrained Two-Level Crossing Reduction," thought it
- * differs in some specific details.
- *
- * Pre-conditions:
- *
- *    1. Each entry has the form {v, barycenter, weight}, or if the node has
- *       no barycenter, then {v}.
- *
- * Returns:
- *
- *    A new list of entries of the form {vs, i, barycenter, weight}. The list
- *    `vs` may either be a singleton or it may be an aggregation of nodes
- *    ordered such that they do not violate constraints from the constraint
- *    graph. The property `i` is the lowest original index of any of the
- *    elements in `vs`.
- */
-function resolveConflicts(entries, cg) {
-  var mappedEntries = {};
-  forEach/* default */.Z(entries, function (entry, i) {
-    var tmp = (mappedEntries[entry.v] = {
-      indegree: 0,
-      in: [],
-      out: [],
-      vs: [entry.v],
-      i: i,
-    });
-    if (!isUndefined/* default */.Z(entry.barycenter)) {
-      // @ts-expect-error
-      tmp.barycenter = entry.barycenter;
-      // @ts-expect-error
-      tmp.weight = entry.weight;
-    }
-  });
-
-  forEach/* default */.Z(cg.edges(), function (e) {
-    var entryV = mappedEntries[e.v];
-    var entryW = mappedEntries[e.w];
-    if (!isUndefined/* default */.Z(entryV) && !isUndefined/* default */.Z(entryW)) {
-      entryW.indegree++;
-      entryV.out.push(mappedEntries[e.w]);
-    }
-  });
-
-  var sourceSet = filter/* default */.Z(mappedEntries, function (entry) {
-    // @ts-expect-error
-    return !entry.indegree;
-  });
-
-  return doResolveConflicts(sourceSet);
-}
-
-function doResolveConflicts(sourceSet) {
-  var entries = [];
-
-  function handleIn(vEntry) {
-    return function (uEntry) {
-      if (uEntry.merged) {
-        return;
-      }
-      if (
-        isUndefined/* default */.Z(uEntry.barycenter) ||
-        isUndefined/* default */.Z(vEntry.barycenter) ||
-        uEntry.barycenter >= vEntry.barycenter
-      ) {
-        mergeEntries(vEntry, uEntry);
-      }
-    };
-  }
-
-  function handleOut(vEntry) {
-    return function (wEntry) {
-      wEntry['in'].push(vEntry);
-      if (--wEntry.indegree === 0) {
-        sourceSet.push(wEntry);
-      }
-    };
-  }
-
-  while (sourceSet.length) {
-    var entry = sourceSet.pop();
-    entries.push(entry);
-    forEach/* default */.Z(entry['in'].reverse(), handleIn(entry));
-    forEach/* default */.Z(entry.out, handleOut(entry));
-  }
-
-  return map/* default */.Z(
-    filter/* default */.Z(entries, function (entry) {
-      return !entry.merged;
-    }),
-    function (entry) {
-      return pick/* default */.Z(entry, ['vs', 'i', 'barycenter', 'weight']);
-    }
-  );
-}
-
-function mergeEntries(target, source) {
-  var sum = 0;
-  var weight = 0;
-
-  if (target.weight) {
-    sum += target.barycenter * target.weight;
-    weight += target.weight;
-  }
-
-  if (source.weight) {
-    sum += source.barycenter * source.weight;
-    weight += source.weight;
-  }
-
-  target.vs = source.vs.concat(target.vs);
-  target.barycenter = sum / weight;
-  target.weight = weight;
-  target.i = Math.min(source.i, target.i);
-  source.merged = true;
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/order/sort.js
-
-
-
-
-
-function sort(entries, biasRight) {
-  var parts = partition(entries, function (entry) {
-    return has/* default */.Z(entry, 'barycenter');
-  });
-  var sortable = parts.lhs,
-    unsortable = lodash_es_sortBy(parts.rhs, function (entry) {
-      return -entry.i;
-    }),
-    vs = [],
-    sum = 0,
-    weight = 0,
-    vsIndex = 0;
-
-  sortable.sort(compareWithBias(!!biasRight));
-
-  vsIndex = consumeUnsortable(vs, unsortable, vsIndex);
-
-  forEach/* default */.Z(sortable, function (entry) {
-    vsIndex += entry.vs.length;
-    vs.push(entry.vs);
-    sum += entry.barycenter * entry.weight;
-    weight += entry.weight;
-    vsIndex = consumeUnsortable(vs, unsortable, vsIndex);
-  });
-
-  var result = { vs: flatten/* default */.Z(vs) };
-  if (weight) {
-    result.barycenter = sum / weight;
-    result.weight = weight;
-  }
-  return result;
-}
-
-function consumeUnsortable(vs, unsortable, index) {
-  var last;
-  while (unsortable.length && (last = lodash_es_last(unsortable)).i <= index) {
-    unsortable.pop();
-    vs.push(last.vs);
-    index++;
-  }
-  return index;
-}
-
-function compareWithBias(bias) {
-  return function (entryV, entryW) {
-    if (entryV.barycenter < entryW.barycenter) {
-      return -1;
-    } else if (entryV.barycenter > entryW.barycenter) {
-      return 1;
-    }
-
-    return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;
-  };
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/order/sort-subgraph.js
-
-
-
-
-
-
-
-function sortSubgraph(g, v, cg, biasRight) {
-  var movable = g.children(v);
-  var node = g.node(v);
-  var bl = node ? node.borderLeft : undefined;
-  var br = node ? node.borderRight : undefined;
-  var subgraphs = {};
-
-  if (bl) {
-    movable = filter/* default */.Z(movable, function (w) {
-      return w !== bl && w !== br;
-    });
-  }
-
-  var barycenters = barycenter(g, movable);
-  forEach/* default */.Z(barycenters, function (entry) {
-    if (g.children(entry.v).length) {
-      var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);
-      subgraphs[entry.v] = subgraphResult;
-      if (has/* default */.Z(subgraphResult, 'barycenter')) {
-        mergeBarycenters(entry, subgraphResult);
-      }
-    }
-  });
-
-  var entries = resolveConflicts(barycenters, cg);
-  expandSubgraphs(entries, subgraphs);
-
-  var result = sort(entries, biasRight);
-
-  if (bl) {
-    result.vs = flatten/* default */.Z([bl, result.vs, br]);
-    if (g.predecessors(bl).length) {
-      var blPred = g.node(g.predecessors(bl)[0]),
-        brPred = g.node(g.predecessors(br)[0]);
-      if (!has/* default */.Z(result, 'barycenter')) {
-        result.barycenter = 0;
-        result.weight = 0;
-      }
-      result.barycenter =
-        (result.barycenter * result.weight + blPred.order + brPred.order) / (result.weight + 2);
-      result.weight += 2;
-    }
-  }
-
-  return result;
-}
-
-function expandSubgraphs(entries, subgraphs) {
-  forEach/* default */.Z(entries, function (entry) {
-    entry.vs = flatten/* default */.Z(
-      entry.vs.map(function (v) {
-        if (subgraphs[v]) {
-          return subgraphs[v].vs;
-        }
-        return v;
-      })
-    );
-  });
-}
-
-function mergeBarycenters(target, other) {
-  if (!isUndefined/* default */.Z(target.barycenter)) {
-    target.barycenter =
-      (target.barycenter * target.weight + other.barycenter * other.weight) /
-      (target.weight + other.weight);
-    target.weight += other.weight;
-  } else {
-    target.barycenter = other.barycenter;
-    target.weight = other.weight;
-  }
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/order/index.js
-
-
-
-
-
-
-
-
-
-
-
-/*
- * Applies heuristics to minimize edge crossings in the graph and sets the best
- * order solution as an order attribute on each node.
- *
- * Pre-conditions:
- *
- *    1. Graph must be DAG
- *    2. Graph nodes must be objects with a "rank" attribute
- *    3. Graph edges must have the "weight" attribute
- *
- * Post-conditions:
- *
- *    1. Graph nodes will have an "order" attribute based on the results of the
- *       algorithm.
- */
-function order(g) {
-  var maxRank = util_maxRank(g),
-    downLayerGraphs = buildLayerGraphs(g, range/* default */.Z(1, maxRank + 1), 'inEdges'),
-    upLayerGraphs = buildLayerGraphs(g, range/* default */.Z(maxRank - 1, -1, -1), 'outEdges');
-
-  var layering = initOrder(g);
-  assignOrder(g, layering);
-
-  var bestCC = Number.POSITIVE_INFINITY,
-    best;
-
-  for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {
-    sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);
-
-    layering = buildLayerMatrix(g);
-    var cc = crossCount(g, layering);
-    if (cc < bestCC) {
-      lastBest = 0;
-      best = lodash_es_cloneDeep(layering);
-      bestCC = cc;
-    }
-  }
-
-  assignOrder(g, best);
-}
-
-function buildLayerGraphs(g, ranks, relationship) {
-  return map/* default */.Z(ranks, function (rank) {
-    return buildLayerGraph(g, rank, relationship);
-  });
-}
-
-function sweepLayerGraphs(layerGraphs, biasRight) {
-  var cg = new graphlib/* Graph */.k();
-  forEach/* default */.Z(layerGraphs, function (lg) {
-    var root = lg.graph().root;
-    var sorted = sortSubgraph(lg, root, cg, biasRight);
-    forEach/* default */.Z(sorted.vs, function (v, i) {
-      lg.node(v).order = i;
-    });
-    addSubgraphConstraints(lg, cg, sorted.vs);
-  });
-}
-
-function assignOrder(g, layering) {
-  forEach/* default */.Z(layering, function (layer) {
-    forEach/* default */.Z(layer, function (v, i) {
-      g.node(v).order = i;
-    });
-  });
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/parent-dummy-chains.js
-
-
-
-
-function parentDummyChains(g) {
-  var postorderNums = parent_dummy_chains_postorder(g);
-
-  forEach/* default */.Z(g.graph().dummyChains, function (v) {
-    var node = g.node(v);
-    var edgeObj = node.edgeObj;
-    var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);
-    var path = pathData.path;
-    var lca = pathData.lca;
-    var pathIdx = 0;
-    var pathV = path[pathIdx];
-    var ascending = true;
-
-    while (v !== edgeObj.w) {
-      node = g.node(v);
-
-      if (ascending) {
-        while ((pathV = path[pathIdx]) !== lca && g.node(pathV).maxRank < node.rank) {
-          pathIdx++;
-        }
-
-        if (pathV === lca) {
-          ascending = false;
-        }
-      }
-
-      if (!ascending) {
-        while (
-          pathIdx < path.length - 1 &&
-          g.node((pathV = path[pathIdx + 1])).minRank <= node.rank
-        ) {
-          pathIdx++;
-        }
-        pathV = path[pathIdx];
-      }
-
-      g.setParent(v, pathV);
-      v = g.successors(v)[0];
-    }
-  });
-}
-
-// Find a path from v to w through the lowest common ancestor (LCA). Return the
-// full path and the LCA.
-function findPath(g, postorderNums, v, w) {
-  var vPath = [];
-  var wPath = [];
-  var low = Math.min(postorderNums[v].low, postorderNums[w].low);
-  var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);
-  var parent;
-  var lca;
-
-  // Traverse up from v to find the LCA
-  parent = v;
-  do {
-    parent = g.parent(parent);
-    vPath.push(parent);
-  } while (parent && (postorderNums[parent].low > low || lim > postorderNums[parent].lim));
-  lca = parent;
-
-  // Traverse from w to LCA
-  parent = w;
-  while ((parent = g.parent(parent)) !== lca) {
-    wPath.push(parent);
-  }
-
-  return { path: vPath.concat(wPath.reverse()), lca: lca };
-}
-
-function parent_dummy_chains_postorder(g) {
-  var result = {};
-  var lim = 0;
-
-  function dfs(v) {
-    var low = lim;
-    forEach/* default */.Z(g.children(v), dfs);
-    result[v] = { low: low, lim: lim++ };
-  }
-  forEach/* default */.Z(g.children(), dfs);
-
-  return result;
-}
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_castFunction.js
-var _castFunction = __webpack_require__(53496);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/forOwn.js
-
-
-
-/**
- * Iterates over own enumerable string keyed properties of an object and
- * invokes `iteratee` for each property. The iteratee is invoked with three
- * arguments: (value, key, object). Iteratee functions may exit iteration
- * early by explicitly returning `false`.
- *
- * @static
- * @memberOf _
- * @since 0.3.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns `object`.
- * @see _.forOwnRight
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.forOwn(new Foo, function(value, key) {
- *   console.log(key);
- * });
- * // => Logs 'a' then 'b' (iteration order is not guaranteed).
- */
-function forOwn(object, iteratee) {
-  return object && (0,_baseForOwn/* default */.Z)(object, (0,_castFunction/* default */.Z)(iteratee));
-}
-
-/* harmony default export */ const lodash_es_forOwn = (forOwn);
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseFor.js + 1 modules
-var _baseFor = __webpack_require__(29148);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keysIn.js + 2 modules
-var keysIn = __webpack_require__(32817);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/forIn.js
-
-
-
-
-/**
- * Iterates over own and inherited enumerable string keyed properties of an
- * object and invokes `iteratee` for each property. The iteratee is invoked
- * with three arguments: (value, key, object). Iteratee functions may exit
- * iteration early by explicitly returning `false`.
- *
- * @static
- * @memberOf _
- * @since 0.3.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns `object`.
- * @see _.forInRight
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.forIn(new Foo, function(value, key) {
- *   console.log(key);
- * });
- * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
- */
-function forIn(object, iteratee) {
-  return object == null
-    ? object
-    : (0,_baseFor/* default */.Z)(object, (0,_castFunction/* default */.Z)(iteratee), keysIn/* default */.Z);
-}
-
-/* harmony default export */ const lodash_es_forIn = (forIn);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/position/bk.js
-
-
-
-
-/*
- * This module provides coordinate assignment based on Brandes and Köpf, "Fast
- * and Simple Horizontal Coordinate Assignment."
- */
-
-
-
-/*
- * Marks all edges in the graph with a type-1 conflict with the "type1Conflict"
- * property. A type-1 conflict is one where a non-inner segment crosses an
- * inner segment. An inner segment is an edge with both incident nodes marked
- * with the "dummy" property.
- *
- * This algorithm scans layer by layer, starting with the second, for type-1
- * conflicts between the current layer and the previous layer. For each layer
- * it scans the nodes from left to right until it reaches one that is incident
- * on an inner segment. It then scans predecessors to determine if they have
- * edges that cross that inner segment. At the end a final scan is done for all
- * nodes on the current rank to see if they cross the last visited inner
- * segment.
- *
- * This algorithm (safely) assumes that a dummy node will only be incident on a
- * single node in the layers being scanned.
- */
-function findType1Conflicts(g, layering) {
-  var conflicts = {};
-
-  function visitLayer(prevLayer, layer) {
-    var // last visited node in the previous layer that is incident on an inner
-      // segment.
-      k0 = 0,
-      // Tracks the last node in this layer scanned for crossings with a type-1
-      // segment.
-      scanPos = 0,
-      prevLayerLength = prevLayer.length,
-      lastNode = lodash_es_last(layer);
-
-    forEach/* default */.Z(layer, function (v, i) {
-      var w = findOtherInnerSegmentNode(g, v),
-        k1 = w ? g.node(w).order : prevLayerLength;
-
-      if (w || v === lastNode) {
-        forEach/* default */.Z(layer.slice(scanPos, i + 1), function (scanNode) {
-          forEach/* default */.Z(g.predecessors(scanNode), function (u) {
-            var uLabel = g.node(u),
-              uPos = uLabel.order;
-            if ((uPos < k0 || k1 < uPos) && !(uLabel.dummy && g.node(scanNode).dummy)) {
-              addConflict(conflicts, u, scanNode);
-            }
-          });
-        });
-        // @ts-expect-error
-        scanPos = i + 1;
-        k0 = k1;
-      }
-    });
-
-    return layer;
-  }
-
-  reduce/* default */.Z(layering, visitLayer);
-  return conflicts;
-}
-
-function findType2Conflicts(g, layering) {
-  var conflicts = {};
-
-  function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {
-    var v;
-    forEach/* default */.Z(range/* default */.Z(southPos, southEnd), function (i) {
-      v = south[i];
-      if (g.node(v).dummy) {
-        forEach/* default */.Z(g.predecessors(v), function (u) {
-          var uNode = g.node(u);
-          if (uNode.dummy && (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {
-            addConflict(conflicts, u, v);
-          }
-        });
-      }
-    });
-  }
-
-  function visitLayer(north, south) {
-    var prevNorthPos = -1,
-      nextNorthPos,
-      southPos = 0;
-
-    forEach/* default */.Z(south, function (v, southLookahead) {
-      if (g.node(v).dummy === 'border') {
-        var predecessors = g.predecessors(v);
-        if (predecessors.length) {
-          nextNorthPos = g.node(predecessors[0]).order;
-          scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);
-          // @ts-expect-error
-          southPos = southLookahead;
-          prevNorthPos = nextNorthPos;
-        }
-      }
-      scan(south, southPos, south.length, nextNorthPos, north.length);
-    });
-
-    return south;
-  }
-
-  reduce/* default */.Z(layering, visitLayer);
-  return conflicts;
-}
-
-function findOtherInnerSegmentNode(g, v) {
-  if (g.node(v).dummy) {
-    return lodash_es_find(g.predecessors(v), function (u) {
-      return g.node(u).dummy;
-    });
-  }
-}
-
-function addConflict(conflicts, v, w) {
-  if (v > w) {
-    var tmp = v;
-    v = w;
-    w = tmp;
-  }
-
-  var conflictsV = conflicts[v];
-  if (!conflictsV) {
-    conflicts[v] = conflictsV = {};
-  }
-  conflictsV[w] = true;
-}
-
-function hasConflict(conflicts, v, w) {
-  if (v > w) {
-    var tmp = v;
-    v = w;
-    w = tmp;
-  }
-  return has/* default */.Z(conflicts[v], w);
-}
-
-/*
- * Try to align nodes into vertical "blocks" where possible. This algorithm
- * attempts to align a node with one of its median neighbors. If the edge
- * connecting a neighbor is a type-1 conflict then we ignore that possibility.
- * If a previous node has already formed a block with a node after the node
- * we're trying to form a block with, we also ignore that possibility - our
- * blocks would be split in that scenario.
- */
-function verticalAlignment(g, layering, conflicts, neighborFn) {
-  var root = {},
-    align = {},
-    pos = {};
-
-  // We cache the position here based on the layering because the graph and
-  // layering may be out of sync. The layering matrix is manipulated to
-  // generate different extreme alignments.
-  forEach/* default */.Z(layering, function (layer) {
-    forEach/* default */.Z(layer, function (v, order) {
-      root[v] = v;
-      align[v] = v;
-      pos[v] = order;
-    });
-  });
-
-  forEach/* default */.Z(layering, function (layer) {
-    var prevIdx = -1;
-    forEach/* default */.Z(layer, function (v) {
-      var ws = neighborFn(v);
-      if (ws.length) {
-        ws = lodash_es_sortBy(ws, function (w) {
-          return pos[w];
-        });
-        var mp = (ws.length - 1) / 2;
-        for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {
-          var w = ws[i];
-          if (align[v] === v && prevIdx < pos[w] && !hasConflict(conflicts, v, w)) {
-            align[w] = v;
-            align[v] = root[v] = root[w];
-            prevIdx = pos[w];
-          }
-        }
-      }
-    });
-  });
-
-  return { root: root, align: align };
-}
-
-function horizontalCompaction(g, layering, root, align, reverseSep) {
-  // This portion of the algorithm differs from BK due to a number of problems.
-  // Instead of their algorithm we construct a new block graph and do two
-  // sweeps. The first sweep places blocks with the smallest possible
-  // coordinates. The second sweep removes unused space by moving blocks to the
-  // greatest coordinates without violating separation.
-  var xs = {},
-    blockG = buildBlockGraph(g, layering, root, reverseSep),
-    borderType = reverseSep ? 'borderLeft' : 'borderRight';
-
-  function iterate(setXsFunc, nextNodesFunc) {
-    var stack = blockG.nodes();
-    var elem = stack.pop();
-    var visited = {};
-    while (elem) {
-      if (visited[elem]) {
-        setXsFunc(elem);
-      } else {
-        visited[elem] = true;
-        stack.push(elem);
-        stack = stack.concat(nextNodesFunc(elem));
-      }
-
-      elem = stack.pop();
-    }
-  }
-
-  // First pass, assign smallest coordinates
-  function pass1(elem) {
-    xs[elem] = blockG.inEdges(elem).reduce(function (acc, e) {
-      return Math.max(acc, xs[e.v] + blockG.edge(e));
-    }, 0);
-  }
-
-  // Second pass, assign greatest coordinates
-  function pass2(elem) {
-    var min = blockG.outEdges(elem).reduce(function (acc, e) {
-      return Math.min(acc, xs[e.w] - blockG.edge(e));
-    }, Number.POSITIVE_INFINITY);
-
-    var node = g.node(elem);
-    if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {
-      xs[elem] = Math.max(xs[elem], min);
-    }
-  }
-
-  iterate(pass1, blockG.predecessors.bind(blockG));
-  iterate(pass2, blockG.successors.bind(blockG));
-
-  // Assign x coordinates to all nodes
-  forEach/* default */.Z(align, function (v) {
-    xs[v] = xs[root[v]];
-  });
-
-  return xs;
-}
-
-function buildBlockGraph(g, layering, root, reverseSep) {
-  var blockGraph = new graphlib/* Graph */.k(),
-    graphLabel = g.graph(),
-    sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);
-
-  forEach/* default */.Z(layering, function (layer) {
-    var u;
-    forEach/* default */.Z(layer, function (v) {
-      var vRoot = root[v];
-      blockGraph.setNode(vRoot);
-      if (u) {
-        var uRoot = root[u],
-          prevMax = blockGraph.edge(uRoot, vRoot);
-        blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));
-      }
-      u = v;
-    });
-  });
-
-  return blockGraph;
-}
-
-/*
- * Returns the alignment that has the smallest width of the given alignments.
- */
-function findSmallestWidthAlignment(g, xss) {
-  return lodash_es_minBy(values/* default */.Z(xss), function (xs) {
-    var max = Number.NEGATIVE_INFINITY;
-    var min = Number.POSITIVE_INFINITY;
-
-    lodash_es_forIn(xs, function (x, v) {
-      var halfWidth = width(g, v) / 2;
-
-      max = Math.max(x + halfWidth, max);
-      min = Math.min(x - halfWidth, min);
-    });
-
-    return max - min;
-  });
-}
-
-/*
- * Align the coordinates of each of the layout alignments such that
- * left-biased alignments have their minimum coordinate at the same point as
- * the minimum coordinate of the smallest width alignment and right-biased
- * alignments have their maximum coordinate at the same point as the maximum
- * coordinate of the smallest width alignment.
- */
-function alignCoordinates(xss, alignTo) {
-  var alignToVals = values/* default */.Z(alignTo),
-    alignToMin = lodash_es_min(alignToVals),
-    alignToMax = lodash_es_max(alignToVals);
-
-  forEach/* default */.Z(['u', 'd'], function (vert) {
-    forEach/* default */.Z(['l', 'r'], function (horiz) {
-      var alignment = vert + horiz,
-        xs = xss[alignment],
-        delta;
-      if (xs === alignTo) return;
-
-      var xsVals = values/* default */.Z(xs);
-      delta = horiz === 'l' ? alignToMin - lodash_es_min(xsVals) : alignToMax - lodash_es_max(xsVals);
-
-      if (delta) {
-        xss[alignment] = lodash_es_mapValues(xs, function (x) {
-          return x + delta;
-        });
-      }
-    });
-  });
-}
-
-function balance(xss, align) {
-  return lodash_es_mapValues(xss.ul, function (ignore, v) {
-    if (align) {
-      return xss[align.toLowerCase()][v];
-    } else {
-      var xs = lodash_es_sortBy(map/* default */.Z(xss, v));
-      return (xs[1] + xs[2]) / 2;
-    }
-  });
-}
-
-function positionX(g) {
-  var layering = buildLayerMatrix(g);
-  var conflicts = merge/* default */.Z(findType1Conflicts(g, layering), findType2Conflicts(g, layering));
-
-  var xss = {};
-  var adjustedLayering;
-  forEach/* default */.Z(['u', 'd'], function (vert) {
-    adjustedLayering = vert === 'u' ? layering : values/* default */.Z(layering).reverse();
-    forEach/* default */.Z(['l', 'r'], function (horiz) {
-      if (horiz === 'r') {
-        adjustedLayering = map/* default */.Z(adjustedLayering, function (inner) {
-          return values/* default */.Z(inner).reverse();
-        });
-      }
-
-      var neighborFn = (vert === 'u' ? g.predecessors : g.successors).bind(g);
-      var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);
-      var xs = horizontalCompaction(g, adjustedLayering, align.root, align.align, horiz === 'r');
-      if (horiz === 'r') {
-        xs = lodash_es_mapValues(xs, function (x) {
-          return -x;
-        });
-      }
-      xss[vert + horiz] = xs;
-    });
-  });
-
-  var smallestWidth = findSmallestWidthAlignment(g, xss);
-  alignCoordinates(xss, smallestWidth);
-  return balance(xss, g.graph().align);
-}
-
-function sep(nodeSep, edgeSep, reverseSep) {
-  return function (g, v, w) {
-    var vLabel = g.node(v);
-    var wLabel = g.node(w);
-    var sum = 0;
-    var delta;
-
-    sum += vLabel.width / 2;
-    if (has/* default */.Z(vLabel, 'labelpos')) {
-      switch (vLabel.labelpos.toLowerCase()) {
-        case 'l':
-          delta = -vLabel.width / 2;
-          break;
-        case 'r':
-          delta = vLabel.width / 2;
-          break;
-      }
-    }
-    if (delta) {
-      sum += reverseSep ? delta : -delta;
-    }
-    delta = 0;
-
-    sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;
-    sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;
-
-    sum += wLabel.width / 2;
-    if (has/* default */.Z(wLabel, 'labelpos')) {
-      switch (wLabel.labelpos.toLowerCase()) {
-        case 'l':
-          delta = wLabel.width / 2;
-          break;
-        case 'r':
-          delta = -wLabel.width / 2;
-          break;
-      }
-    }
-    if (delta) {
-      sum += reverseSep ? delta : -delta;
-    }
-    delta = 0;
-
-    return sum;
-  };
-}
-
-function width(g, v) {
-  return g.node(v).width;
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/position/index.js
-
-
-
-
-
-
-function position(g) {
-  g = asNonCompoundGraph(g);
-
-  positionY(g);
-  lodash_es_forOwn(positionX(g), function (x, v) {
-    g.node(v).x = x;
-  });
-}
-
-function positionY(g) {
-  var layering = buildLayerMatrix(g);
-  var rankSep = g.graph().ranksep;
-  var prevY = 0;
-  forEach/* default */.Z(layering, function (layer) {
-    var maxHeight = lodash_es_max(
-      map/* default */.Z(layer, function (v) {
-        return g.node(v).height;
-      })
-    );
-    forEach/* default */.Z(layer, function (v) {
-      g.node(v).y = prevY + maxHeight / 2;
-    });
-    prevY += maxHeight + rankSep;
-  });
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/layout.js
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-function layout(g, opts) {
-  var time = opts && opts.debugTiming ? util_time : notime;
-  time('layout', function () {
-    var layoutGraph = time('  buildLayoutGraph', function () {
-      return buildLayoutGraph(g);
-    });
-    time('  runLayout', function () {
-      runLayout(layoutGraph, time);
-    });
-    time('  updateInputGraph', function () {
-      updateInputGraph(g, layoutGraph);
-    });
-  });
-}
-
-function runLayout(g, time) {
-  time('    makeSpaceForEdgeLabels', function () {
-    makeSpaceForEdgeLabels(g);
-  });
-  time('    removeSelfEdges', function () {
-    removeSelfEdges(g);
-  });
-  time('    acyclic', function () {
-    run(g);
-  });
-  time('    nestingGraph.run', function () {
-    nesting_graph_run(g);
-  });
-  time('    rank', function () {
-    rank(asNonCompoundGraph(g));
-  });
-  time('    injectEdgeLabelProxies', function () {
-    injectEdgeLabelProxies(g);
-  });
-  time('    removeEmptyRanks', function () {
-    removeEmptyRanks(g);
-  });
-  time('    nestingGraph.cleanup', function () {
-    cleanup(g);
-  });
-  time('    normalizeRanks', function () {
-    normalizeRanks(g);
-  });
-  time('    assignRankMinMax', function () {
-    assignRankMinMax(g);
-  });
-  time('    removeEdgeLabelProxies', function () {
-    removeEdgeLabelProxies(g);
-  });
-  time('    normalize.run', function () {
-    normalize_run(g);
-  });
-  time('    parentDummyChains', function () {
-    parentDummyChains(g);
-  });
-  time('    addBorderSegments', function () {
-    addBorderSegments(g);
-  });
-  time('    order', function () {
-    order(g);
-  });
-  time('    insertSelfEdges', function () {
-    insertSelfEdges(g);
-  });
-  time('    adjustCoordinateSystem', function () {
-    adjust(g);
-  });
-  time('    position', function () {
-    position(g);
-  });
-  time('    positionSelfEdges', function () {
-    positionSelfEdges(g);
-  });
-  time('    removeBorderNodes', function () {
-    removeBorderNodes(g);
-  });
-  time('    normalize.undo', function () {
-    normalize_undo(g);
-  });
-  time('    fixupEdgeLabelCoords', function () {
-    fixupEdgeLabelCoords(g);
-  });
-  time('    undoCoordinateSystem', function () {
-    coordinate_system_undo(g);
-  });
-  time('    translateGraph', function () {
-    translateGraph(g);
-  });
-  time('    assignNodeIntersects', function () {
-    assignNodeIntersects(g);
-  });
-  time('    reversePoints', function () {
-    reversePointsForReversedEdges(g);
-  });
-  time('    acyclic.undo', function () {
-    undo(g);
-  });
-}
-
-/*
- * Copies final layout information from the layout graph back to the input
- * graph. This process only copies whitelisted attributes from the layout graph
- * to the input graph, so it serves as a good place to determine what
- * attributes can influence layout.
- */
-function updateInputGraph(inputGraph, layoutGraph) {
-  forEach/* default */.Z(inputGraph.nodes(), function (v) {
-    var inputLabel = inputGraph.node(v);
-    var layoutLabel = layoutGraph.node(v);
-
-    if (inputLabel) {
-      inputLabel.x = layoutLabel.x;
-      inputLabel.y = layoutLabel.y;
-
-      if (layoutGraph.children(v).length) {
-        inputLabel.width = layoutLabel.width;
-        inputLabel.height = layoutLabel.height;
-      }
-    }
-  });
-
-  forEach/* default */.Z(inputGraph.edges(), function (e) {
-    var inputLabel = inputGraph.edge(e);
-    var layoutLabel = layoutGraph.edge(e);
-
-    inputLabel.points = layoutLabel.points;
-    if (has/* default */.Z(layoutLabel, 'x')) {
-      inputLabel.x = layoutLabel.x;
-      inputLabel.y = layoutLabel.y;
-    }
-  });
-
-  inputGraph.graph().width = layoutGraph.graph().width;
-  inputGraph.graph().height = layoutGraph.graph().height;
-}
-
-var graphNumAttrs = ['nodesep', 'edgesep', 'ranksep', 'marginx', 'marginy'];
-var graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: 'tb' };
-var graphAttrs = ['acyclicer', 'ranker', 'rankdir', 'align'];
-var nodeNumAttrs = ['width', 'height'];
-var nodeDefaults = { width: 0, height: 0 };
-var edgeNumAttrs = ['minlen', 'weight', 'width', 'height', 'labeloffset'];
-var edgeDefaults = {
-  minlen: 1,
-  weight: 1,
-  width: 0,
-  height: 0,
-  labeloffset: 10,
-  labelpos: 'r',
-};
-var edgeAttrs = ['labelpos'];
-
-/*
- * Constructs a new graph from the input graph, which can be used for layout.
- * This process copies only whitelisted attributes from the input graph to the
- * layout graph. Thus this function serves as a good place to determine what
- * attributes can influence layout.
- */
-function buildLayoutGraph(inputGraph) {
-  var g = new graphlib/* Graph */.k({ multigraph: true, compound: true });
-  var graph = canonicalize(inputGraph.graph());
-
-  g.setGraph(
-    merge/* default */.Z({}, graphDefaults, selectNumberAttrs(graph, graphNumAttrs), pick/* default */.Z(graph, graphAttrs))
-  );
-
-  forEach/* default */.Z(inputGraph.nodes(), function (v) {
-    var node = canonicalize(inputGraph.node(v));
-    g.setNode(v, defaults/* default */.Z(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));
-    g.setParent(v, inputGraph.parent(v));
-  });
-
-  forEach/* default */.Z(inputGraph.edges(), function (e) {
-    var edge = canonicalize(inputGraph.edge(e));
-    g.setEdge(
-      e,
-      merge/* default */.Z({}, edgeDefaults, selectNumberAttrs(edge, edgeNumAttrs), pick/* default */.Z(edge, edgeAttrs))
-    );
-  });
-
-  return g;
-}
-
-/*
- * This idea comes from the Gansner paper: to account for edge labels in our
- * layout we split each rank in half by doubling minlen and halving ranksep.
- * Then we can place labels at these mid-points between nodes.
- *
- * We also add some minimal padding to the width to push the label for the edge
- * away from the edge itself a bit.
- */
-function makeSpaceForEdgeLabels(g) {
-  var graph = g.graph();
-  graph.ranksep /= 2;
-  forEach/* default */.Z(g.edges(), function (e) {
-    var edge = g.edge(e);
-    edge.minlen *= 2;
-    if (edge.labelpos.toLowerCase() !== 'c') {
-      if (graph.rankdir === 'TB' || graph.rankdir === 'BT') {
-        edge.width += edge.labeloffset;
-      } else {
-        edge.height += edge.labeloffset;
-      }
-    }
-  });
-}
-
-/*
- * Creates temporary dummy nodes that capture the rank in which each edge's
- * label is going to, if it has one of non-zero width and height. We do this
- * so that we can safely remove empty ranks while preserving balance for the
- * label's position.
- */
-function injectEdgeLabelProxies(g) {
-  forEach/* default */.Z(g.edges(), function (e) {
-    var edge = g.edge(e);
-    if (edge.width && edge.height) {
-      var v = g.node(e.v);
-      var w = g.node(e.w);
-      var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };
-      addDummyNode(g, 'edge-proxy', label, '_ep');
-    }
-  });
-}
-
-function assignRankMinMax(g) {
-  var maxRank = 0;
-  forEach/* default */.Z(g.nodes(), function (v) {
-    var node = g.node(v);
-    if (node.borderTop) {
-      node.minRank = g.node(node.borderTop).rank;
-      node.maxRank = g.node(node.borderBottom).rank;
-      // @ts-expect-error
-      maxRank = lodash_es_max(maxRank, node.maxRank);
-    }
-  });
-  g.graph().maxRank = maxRank;
-}
-
-function removeEdgeLabelProxies(g) {
-  forEach/* default */.Z(g.nodes(), function (v) {
-    var node = g.node(v);
-    if (node.dummy === 'edge-proxy') {
-      g.edge(node.e).labelRank = node.rank;
-      g.removeNode(v);
-    }
-  });
-}
-
-function translateGraph(g) {
-  var minX = Number.POSITIVE_INFINITY;
-  var maxX = 0;
-  var minY = Number.POSITIVE_INFINITY;
-  var maxY = 0;
-  var graphLabel = g.graph();
-  var marginX = graphLabel.marginx || 0;
-  var marginY = graphLabel.marginy || 0;
-
-  function getExtremes(attrs) {
-    var x = attrs.x;
-    var y = attrs.y;
-    var w = attrs.width;
-    var h = attrs.height;
-    minX = Math.min(minX, x - w / 2);
-    maxX = Math.max(maxX, x + w / 2);
-    minY = Math.min(minY, y - h / 2);
-    maxY = Math.max(maxY, y + h / 2);
-  }
-
-  forEach/* default */.Z(g.nodes(), function (v) {
-    getExtremes(g.node(v));
-  });
-  forEach/* default */.Z(g.edges(), function (e) {
-    var edge = g.edge(e);
-    if (has/* default */.Z(edge, 'x')) {
-      getExtremes(edge);
-    }
-  });
-
-  minX -= marginX;
-  minY -= marginY;
-
-  forEach/* default */.Z(g.nodes(), function (v) {
-    var node = g.node(v);
-    node.x -= minX;
-    node.y -= minY;
-  });
-
-  forEach/* default */.Z(g.edges(), function (e) {
-    var edge = g.edge(e);
-    forEach/* default */.Z(edge.points, function (p) {
-      p.x -= minX;
-      p.y -= minY;
-    });
-    if (has/* default */.Z(edge, 'x')) {
-      edge.x -= minX;
-    }
-    if (has/* default */.Z(edge, 'y')) {
-      edge.y -= minY;
-    }
-  });
-
-  graphLabel.width = maxX - minX + marginX;
-  graphLabel.height = maxY - minY + marginY;
-}
-
-function assignNodeIntersects(g) {
-  forEach/* default */.Z(g.edges(), function (e) {
-    var edge = g.edge(e);
-    var nodeV = g.node(e.v);
-    var nodeW = g.node(e.w);
-    var p1, p2;
-    if (!edge.points) {
-      edge.points = [];
-      p1 = nodeW;
-      p2 = nodeV;
-    } else {
-      p1 = edge.points[0];
-      p2 = edge.points[edge.points.length - 1];
-    }
-    edge.points.unshift(intersectRect(nodeV, p1));
-    edge.points.push(intersectRect(nodeW, p2));
-  });
-}
-
-function fixupEdgeLabelCoords(g) {
-  forEach/* default */.Z(g.edges(), function (e) {
-    var edge = g.edge(e);
-    if (has/* default */.Z(edge, 'x')) {
-      if (edge.labelpos === 'l' || edge.labelpos === 'r') {
-        edge.width -= edge.labeloffset;
-      }
-      switch (edge.labelpos) {
-        case 'l':
-          edge.x -= edge.width / 2 + edge.labeloffset;
-          break;
-        case 'r':
-          edge.x += edge.width / 2 + edge.labeloffset;
-          break;
-      }
-    }
-  });
-}
-
-function reversePointsForReversedEdges(g) {
-  forEach/* default */.Z(g.edges(), function (e) {
-    var edge = g.edge(e);
-    if (edge.reversed) {
-      edge.points.reverse();
-    }
-  });
-}
-
-function removeBorderNodes(g) {
-  forEach/* default */.Z(g.nodes(), function (v) {
-    if (g.children(v).length) {
-      var node = g.node(v);
-      var t = g.node(node.borderTop);
-      var b = g.node(node.borderBottom);
-      var l = g.node(lodash_es_last(node.borderLeft));
-      var r = g.node(lodash_es_last(node.borderRight));
-
-      node.width = Math.abs(r.x - l.x);
-      node.height = Math.abs(b.y - t.y);
-      node.x = l.x + node.width / 2;
-      node.y = t.y + node.height / 2;
-    }
-  });
-
-  forEach/* default */.Z(g.nodes(), function (v) {
-    if (g.node(v).dummy === 'border') {
-      g.removeNode(v);
-    }
-  });
-}
-
-function removeSelfEdges(g) {
-  forEach/* default */.Z(g.edges(), function (e) {
-    if (e.v === e.w) {
-      var node = g.node(e.v);
-      if (!node.selfEdges) {
-        node.selfEdges = [];
-      }
-      node.selfEdges.push({ e: e, label: g.edge(e) });
-      g.removeEdge(e);
-    }
-  });
-}
-
-function insertSelfEdges(g) {
-  var layers = buildLayerMatrix(g);
-  forEach/* default */.Z(layers, function (layer) {
-    var orderShift = 0;
-    forEach/* default */.Z(layer, function (v, i) {
-      var node = g.node(v);
-      node.order = i + orderShift;
-      forEach/* default */.Z(node.selfEdges, function (selfEdge) {
-        addDummyNode(
-          g,
-          'selfedge',
-          {
-            width: selfEdge.label.width,
-            height: selfEdge.label.height,
-            rank: node.rank,
-            order: i + ++orderShift,
-            e: selfEdge.e,
-            label: selfEdge.label,
-          },
-          '_se'
-        );
-      });
-      delete node.selfEdges;
-    });
-  });
-}
-
-function positionSelfEdges(g) {
-  forEach/* default */.Z(g.nodes(), function (v) {
-    var node = g.node(v);
-    if (node.dummy === 'selfedge') {
-      var selfNode = g.node(node.e.v);
-      var x = selfNode.x + selfNode.width / 2;
-      var y = selfNode.y;
-      var dx = node.x - x;
-      var dy = selfNode.height / 2;
-      g.setEdge(node.e, node.label);
-      g.removeNode(v);
-      node.label.points = [
-        { x: x + (2 * dx) / 3, y: y - dy },
-        { x: x + (5 * dx) / 6, y: y - dy },
-        { x: x + dx, y: y },
-        { x: x + (5 * dx) / 6, y: y + dy },
-        { x: x + (2 * dx) / 3, y: y + dy },
-      ];
-      node.label.x = node.x;
-      node.label.y = node.y;
-    }
-  });
-}
-
-function selectNumberAttrs(obj, attrs) {
-  return lodash_es_mapValues(pick/* default */.Z(obj, attrs), Number);
-}
-
-function canonicalize(attrs) {
-  var newAttrs = {};
-  forEach/* default */.Z(attrs, function (v, k) {
-    newAttrs[k.toLowerCase()] = v;
-  });
-  return newAttrs;
-}
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre/index.js
-
-
-
-
-
-
-
-
-/***/ }),
-
-/***/ 65377:
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-
-// EXPORTS
-__webpack_require__.d(__webpack_exports__, {
-  k: () => (/* binding */ Graph)
-});
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/has.js + 1 modules
-var has = __webpack_require__(27431);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/constant.js
-var constant = __webpack_require__(6964);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isFunction.js
-var isFunction = __webpack_require__(88987);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keys.js
-var keys = __webpack_require__(77251);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/filter.js + 1 modules
-var filter = __webpack_require__(38364);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isEmpty.js
-var isEmpty = __webpack_require__(15943);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/forEach.js
-var forEach = __webpack_require__(79156);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isUndefined.js
-var isUndefined = __webpack_require__(71180);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseFlatten.js + 1 modules
-var _baseFlatten = __webpack_require__(84887);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseRest.js
-var _baseRest = __webpack_require__(19851);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_SetCache.js + 2 modules
-var _SetCache = __webpack_require__(61694);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseFindIndex.js
-var _baseFindIndex = __webpack_require__(57394);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsNaN.js
-/**
- * The base implementation of `_.isNaN` without support for number objects.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
- */
-function baseIsNaN(value) {
-  return value !== value;
-}
-
-/* harmony default export */ const _baseIsNaN = (baseIsNaN);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_strictIndexOf.js
-/**
- * A specialized version of `_.indexOf` which performs strict equality
- * comparisons of values, i.e. `===`.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function strictIndexOf(array, value, fromIndex) {
-  var index = fromIndex - 1,
-      length = array.length;
-
-  while (++index < length) {
-    if (array[index] === value) {
-      return index;
-    }
-  }
-  return -1;
-}
-
-/* harmony default export */ const _strictIndexOf = (strictIndexOf);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIndexOf.js
-
-
-
-
-/**
- * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseIndexOf(array, value, fromIndex) {
-  return value === value
-    ? _strictIndexOf(array, value, fromIndex)
-    : (0,_baseFindIndex/* default */.Z)(array, _baseIsNaN, fromIndex);
-}
-
-/* harmony default export */ const _baseIndexOf = (baseIndexOf);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayIncludes.js
-
-
-/**
- * A specialized version of `_.includes` for arrays without support for
- * specifying an index to search from.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludes(array, value) {
-  var length = array == null ? 0 : array.length;
-  return !!length && _baseIndexOf(array, value, 0) > -1;
-}
-
-/* harmony default export */ const _arrayIncludes = (arrayIncludes);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayIncludesWith.js
-/**
- * This function is like `arrayIncludes` except that it accepts a comparator.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @param {Function} comparator The comparator invoked per element.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludesWith(array, value, comparator) {
-  var index = -1,
-      length = array == null ? 0 : array.length;
-
-  while (++index < length) {
-    if (comparator(value, array[index])) {
-      return true;
-    }
-  }
-  return false;
-}
-
-/* harmony default export */ const _arrayIncludesWith = (arrayIncludesWith);
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cacheHas.js
-var _cacheHas = __webpack_require__(20465);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Set.js
-var _Set = __webpack_require__(36169);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/noop.js
-/**
- * This method returns `undefined`.
- *
- * @static
- * @memberOf _
- * @since 2.3.0
- * @category Util
- * @example
- *
- * _.times(2, _.noop);
- * // => [undefined, undefined]
- */
-function noop() {
-  // No operation performed.
-}
-
-/* harmony default export */ const lodash_es_noop = (noop);
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setToArray.js
-var _setToArray = __webpack_require__(64423);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_createSet.js
-
-
-
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
-
-/**
- * Creates a set object of `values`.
- *
- * @private
- * @param {Array} values The values to add to the set.
- * @returns {Object} Returns the new set.
- */
-var createSet = !(_Set/* default */.Z && (1 / (0,_setToArray/* default */.Z)(new _Set/* default */.Z([,-0]))[1]) == INFINITY) ? lodash_es_noop : function(values) {
-  return new _Set/* default */.Z(values);
-};
-
-/* harmony default export */ const _createSet = (createSet);
-
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseUniq.js
-
-
-
-
-
-
-
-/** Used as the size to enable large array optimizations. */
-var LARGE_ARRAY_SIZE = 200;
-
-/**
- * The base implementation of `_.uniqBy` without support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- */
-function baseUniq(array, iteratee, comparator) {
-  var index = -1,
-      includes = _arrayIncludes,
-      length = array.length,
-      isCommon = true,
-      result = [],
-      seen = result;
-
-  if (comparator) {
-    isCommon = false;
-    includes = _arrayIncludesWith;
-  }
-  else if (length >= LARGE_ARRAY_SIZE) {
-    var set = iteratee ? null : _createSet(array);
-    if (set) {
-      return (0,_setToArray/* default */.Z)(set);
-    }
-    isCommon = false;
-    includes = _cacheHas/* default */.Z;
-    seen = new _SetCache/* default */.Z;
-  }
-  else {
-    seen = iteratee ? [] : result;
-  }
-  outer:
-  while (++index < length) {
-    var value = array[index],
-        computed = iteratee ? iteratee(value) : value;
-
-    value = (comparator || value !== 0) ? value : 0;
-    if (isCommon && computed === computed) {
-      var seenIndex = seen.length;
-      while (seenIndex--) {
-        if (seen[seenIndex] === computed) {
-          continue outer;
-        }
-      }
-      if (iteratee) {
-        seen.push(computed);
-      }
-      result.push(value);
-    }
-    else if (!includes(seen, computed, comparator)) {
-      if (seen !== result) {
-        seen.push(computed);
-      }
-      result.push(value);
-    }
-  }
-  return result;
-}
-
-/* harmony default export */ const _baseUniq = (baseUniq);
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArrayLikeObject.js
-var isArrayLikeObject = __webpack_require__(84488);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/union.js
-
-
-
-
-
-/**
- * Creates an array of unique values, in order, from all given arrays using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @returns {Array} Returns the new array of combined values.
- * @example
- *
- * _.union([2], [1, 2]);
- * // => [2, 1]
- */
-var union = (0,_baseRest/* default */.Z)(function(arrays) {
-  return _baseUniq((0,_baseFlatten/* default */.Z)(arrays, 1, isArrayLikeObject/* default */.Z, true));
-});
-
-/* harmony default export */ const lodash_es_union = (union);
-
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/values.js + 1 modules
-var values = __webpack_require__(27942);
-// EXTERNAL MODULE: ./node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/reduce.js + 2 modules
-var reduce = __webpack_require__(43329);
-;// CONCATENATED MODULE: ./node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/graphlib/graph.js
-
... 508918 lines suppressed ...