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 2023/12/05 03:07:45 UTC

(incubator-answer-website) branch dist-pages updated: deploy: 11e791f1518dac714a3a38f68299b283a066e76d

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 e246e9a4 deploy: 11e791f1518dac714a3a38f68299b283a066e76d
e246e9a4 is described below

commit e246e9a403ee8d58e63c1d3d5638d292df7105a8
Author: fenbox <fe...@users.noreply.github.com>
AuthorDate: Tue Dec 5 03:07:40 2023 +0000

    deploy: 11e791f1518dac714a3a38f68299b283a066e76d
---
 404.html                                           |     7 +-
 .../{styles.ed57e243.css => styles.2252c3e0.css}   |     2 +-
 assets/js/01a85c17.6709a49d.js                     |     1 +
 assets/js/01a85c17.dc01e24d.js                     |     1 -
 assets/js/02c33ff0.91b19268.js                     |     1 +
 assets/js/02c33ff0.f4115ef6.js                     |     1 -
 assets/js/03514ddd.297d85b4.js                     |     1 -
 assets/js/03514ddd.cce70ef0.js                     |     1 +
 assets/js/0480b142.5107a232.js                     |     1 -
 assets/js/0480b142.7af46686.js                     |     1 +
 assets/js/05610178.934f3b39.js                     |     1 +
 assets/js/05610178.a9b5b5bd.js                     |     1 -
 assets/js/062dea8c.2f3c8045.js                     |     1 -
 assets/js/062dea8c.3fa5f94b.js                     |     1 +
 assets/js/0da7f6a0.422ef028.js                     |     1 -
 assets/js/0da7f6a0.675e88c1.js                     |     1 +
 assets/js/1008.647e7b10.js                         |     1 +
 assets/js/1061.13037890.js                         |     1 -
 assets/js/1061.4180c433.js                         |     1 +
 assets/js/10bf9f7e.70561871.js                     |     1 -
 assets/js/10bf9f7e.c877fd25.js                     |     1 +
 assets/js/11488796.7976b572.js                     |     1 -
 assets/js/11488796.eff1bc38.js                     |     1 +
 .../{115e91bb.1c47d4f3.js => 115e91bb.f489b108.js} |     2 +-
 .../{124add8d.2c77128a.js => 124add8d.0f18ad53.js} |     2 +-
 assets/js/1300.4c852510.js                         |     1 +
 assets/js/14790698.08e9b9f1.js                     |     1 -
 assets/js/14790698.d3c5ee88.js                     |     1 +
 assets/js/1516.94768e46.js                         |     1 +
 assets/js/1620c6a0.b6eda198.js                     |     1 -
 assets/js/1620c6a0.f2ff92a1.js                     |     1 +
 assets/js/16ab27aa.0f88726c.js                     |     1 -
 assets/js/16ab27aa.53e462d3.js                     |     1 +
 assets/js/1711.136f6393.js                         |     2 +
 assets/js/1711.136f6393.js.LICENSE.txt             |    18 +
 assets/js/17896441.8c9963e3.js                     |     1 +
 assets/js/17896441.cef8c140.js                     |     1 -
 assets/js/18e919bd.7a26740c.js                     |     1 -
 assets/js/18e919bd.b7464676.js                     |     1 +
 assets/js/1a4e3797.43bebe37.js                     |     2 +
 ...ICENSE.txt => 1a4e3797.43bebe37.js.LICENSE.txt} |     0
 assets/js/1a4e3797.b95b0d3c.js                     |     2 -
 assets/js/1a8837ce.7df6a414.js                     |     1 +
 assets/js/1a8837ce.cb743f07.js                     |     1 -
 .../{299281dd.0f5bdbd5.js => 1d2644f4.2814b2f8.js} |     2 +-
 assets/js/1df93b7f.1e2cbef9.js                     |     1 +
 assets/js/1df93b7f.1ff749f4.js                     |     1 -
 assets/js/20219bd7.4376cf61.js                     |     1 -
 assets/js/20219bd7.9c4f0e65.js                     |     1 +
 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/26f4acbe.0d095176.js                     |     1 -
 assets/js/26f4acbe.61eebf15.js                     |     1 +
 assets/js/298.f8893466.js                          |     1 +
 .../{1d2644f4.9379a198.js => 299281dd.01026900.js} |     2 +-
 assets/js/2a510483.53a39e64.js                     |     2 -
 assets/js/2a510483.9266a796.js                     |     2 +
 ...ICENSE.txt => 2a510483.9266a796.js.LICENSE.txt} |     0
 assets/js/2c22be1c.31b3483a.js                     |     2 +
 ...ICENSE.txt => 2c22be1c.31b3483a.js.LICENSE.txt} |     0
 assets/js/2c22be1c.4619767f.js                     |     2 -
 assets/js/2d1855c3.6641be04.js                     |     1 +
 assets/js/2d1855c3.c993c13a.js                     |     1 -
 assets/js/306a8c6c.14517cd0.js                     |     1 -
 assets/js/306a8c6c.42682ae9.js                     |     1 +
 assets/js/3093.33e255c3.js                         |     1 +
 assets/js/310.14ee915c.js                          |  3429 ++
 assets/js/3196ea8f.071ad6a7.js                     |     1 -
 .../{115e91bb.1c47d4f3.js => 3196ea8f.4a19d2ad.js} |     2 +-
 assets/js/3198.6f9adc87.js                         |     1 +
 assets/js/32.97fad14b.js                           | 10780 ++++
 assets/js/330.7515ce27.js                          |     2 +
 ....js.LICENSE.txt => 330.7515ce27.js.LICENSE.txt} |     0
 assets/js/330.e033f7f6.js                          |     2 -
 assets/js/33dc0c0c.0a59152a.js                     |     1 +
 assets/js/33dc0c0c.e23e4ce4.js                     |     1 -
 assets/js/3410.a246e730.js                         |     1 +
 assets/js/357.760272fa.js                          |  1320 +
 assets/js/3694.93979497.js                         |     1 +
 assets/js/3728301f.72cbfd0a.js                     |     1 -
 assets/js/3728301f.b4ef6f1d.js                     |     1 +
 assets/js/3880.a412433e.js                         |     1 +
 assets/js/3a3fadac.549b655b.js                     |     1 -
 assets/js/3a3fadac.8bfb46d3.js                     |     1 +
 assets/js/3a86a8c5.25475b8d.js                     |     2 +
 ...ICENSE.txt => 3a86a8c5.25475b8d.js.LICENSE.txt} |     0
 assets/js/3a86a8c5.394117e5.js                     |     2 -
 assets/js/3b49c9a9.1d660c2c.js                     |     1 +
 assets/js/3b49c9a9.c2f73029.js                     |     1 -
 assets/js/3e1d0064.68989eea.js                     |     1 -
 assets/js/3e1d0064.89b543e5.js                     |     1 +
 .../{115e91bb.1c47d4f3.js => 3f1a2b9e.2d1c2ef5.js} |     2 +-
 assets/js/3f1a2b9e.4803570f.js                     |     1 -
 assets/js/415707e9.e7d633f9.js                     |     1 +
 assets/js/422.e7052dec.js                          |  2600 +
 assets/js/422a2e8a.1c1d342a.js                     |     1 -
 assets/js/422a2e8a.cd4bf663.js                     |     1 +
 assets/js/423.89d88c7e.js                          | 10323 ++++
 assets/js/449.a598088d.js                          | 50986 +++++++++++++++++++
 assets/js/489.b280ee59.js                          | 23570 +++++++++
 assets/js/4a31998e.31ba3436.js                     |     1 +
 assets/js/4a31998e.365195a4.js                     |     1 -
 assets/js/4d6665af.107b8c01.js                     |     1 +
 assets/js/4d6665af.2f7a399d.js                     |     1 -
 .../{115e91bb.1c47d4f3.js => 4dd6f3f3.ba561242.js} |     2 +-
 assets/js/4dd6f3f3.fa78a8c0.js                     |     1 -
 assets/js/4e57de1b.929d3c83.js                     |     1 +
 assets/js/4e57de1b.f67213a8.js                     |     1 -
 assets/js/4e7d9aa5.6175d77a.js                     |     1 +
 assets/js/4e7d9aa5.72834e9f.js                     |     1 -
 assets/js/4edbe7be.476cb13d.js                     |     1 -
 assets/js/4edbe7be.fab23dec.js                     |     1 +
 assets/js/4f8d6d87.00db41dc.js                     |     1 +
 assets/js/4f8d6d87.d1e7b1e4.js                     |     1 -
 assets/js/5.7a6d4c98.js                            |     1 +
 assets/js/5.822c6d59.js                            |  1227 +
 assets/js/50ea1d6e.d48cf615.js                     |     1 -
 .../{115e91bb.1c47d4f3.js => 50ea1d6e.d796e4fa.js} |     2 +-
 assets/js/51168d66.12c3d1dc.js                     |     1 -
 assets/js/51168d66.78962f5b.js                     |     1 +
 assets/js/516.0f704221.js                          | 26575 ++++++++++
 assets/js/525.d5635339.js                          | 10814 ++++
 assets/js/5422.a961dbf1.js                         |     1 +
 assets/js/54f44165.1647b9e7.js                     |     1 -
 assets/js/54f44165.9bf17024.js                     |     1 +
 assets/js/5525.5255e838.js                         |     1 +
 assets/js/5846.e79acaf6.js                         |     1 +
 assets/js/5ac42693.09bf3197.js                     |     1 +
 assets/js/5ac42693.b0a5f3a3.js                     |     1 -
 assets/js/5b143ea2.79a2b759.js                     |     1 -
 assets/js/5b143ea2.fb33f961.js                     |     1 +
 assets/js/5b5f4945.7d26bbea.js                     |     1 +
 assets/js/5e744679.75820692.js                     |     1 -
 assets/js/5e744679.e3823e66.js                     |     1 +
 assets/js/5e95c892.67ebe9ad.js                     |     1 +
 assets/js/5e95c892.ed76056a.js                     |     1 -
 assets/js/6032.e67c911c.js                         |     1 +
 assets/js/6199.0a140a2d.js                         |     2 -
 assets/js/6199.fa94ab18.js                         |     2 +
 ...js.LICENSE.txt => 6199.fa94ab18.js.LICENSE.txt} |     0
 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/67292bae.28987bdf.js                     |     1 +
 assets/js/67292bae.c19b2164.js                     |     1 -
 assets/js/685.82d4b9a0.js                          |  1410 +
 assets/js/6875c492.307432c0.js                     |     1 -
 assets/js/6875c492.d4b0f58e.js                     |     1 +
 assets/js/68eaa3f5.ade23ed2.js                     |     1 -
 assets/js/68eaa3f5.e09ae9a5.js                     |     1 +
 assets/js/692c6f9f.2092cd3f.js                     |     1 +
 assets/js/692c6f9f.b6ae1bab.js                     |     1 -
 assets/js/694f97a7.7f36ff62.js                     |     1 -
 assets/js/694f97a7.de34547e.js                     |     1 +
 assets/js/697.97d60bb9.js                          |   739 +
 assets/js/6c2fd375.5319531f.js                     |     1 -
 assets/js/6c2fd375.d14d0ee5.js                     |     1 +
 assets/js/6fd9b8bb.014b660d.js                     |     1 -
 assets/js/6fd9b8bb.7c2c35fa.js                     |     1 +
 assets/js/700e44e1.74efae68.js                     |     1 -
 assets/js/700e44e1.e1341e7c.js                     |     1 +
 assets/js/70fd4878.40177910.js                     |     1 -
 assets/js/70fd4878.d8a1376b.js                     |     1 +
 assets/js/7156.870d1e21.js                         |     2 -
 assets/js/7156.870d1e21.js.LICENSE.txt             |     8 -
 assets/js/72a4391e.bb2d5cd6.js                     |     1 +
 assets/js/72a4391e.fcc7ed41.js                     |     1 -
 assets/js/72f5456f.177d6235.js                     |     2 +
 ...ICENSE.txt => 72f5456f.177d6235.js.LICENSE.txt} |     0
 assets/js/72f5456f.d7dcdd48.js                     |     2 -
 assets/js/744.95e9770e.js                          | 10065 ++++
 assets/js/746f3bce.3fd4fd56.js                     |     1 -
 assets/js/746f3bce.85b66558.js                     |     1 +
 assets/js/7744.a5b332a3.js                         |     1 +
 assets/js/7762.a8ba1189.js                         |     1 +
 assets/js/7762.bd5f386a.js                         |     1 -
 assets/js/7892.eeacadb8.js                         |     1 +
 assets/js/8.0f1a168f.js                            | 14570 ++++++
 assets/js/814f3328.33880356.js                     |     1 -
 assets/js/814f3328.ec49c621.js                     |     1 +
 assets/js/8310.ee3cef01.js                         |     1 +
 assets/js/83fae6f2.75407341.js                     |     1 -
 assets/js/83fae6f2.c4c4a07b.js                     |     1 +
 assets/js/846.0218453f.js                          |  2106 +
 assets/js/85c04a46.57c4bd7c.js                     |     1 -
 assets/js/85c04a46.aef83882.js                     |     1 +
 assets/js/87260873.34927168.js                     |     1 -
 assets/js/87260873.786c3341.js                     |     1 +
 assets/js/872d4ab4.b0009084.js                     |     1 +
 assets/js/872d4ab4.cacca54e.js                     |     1 -
 assets/js/888a9922.d748a4ac.js                     |     1 -
 assets/js/888a9922.e90c9df2.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 +
 assets/js/8b3a140c.193003d8.js                     |     2 -
 assets/js/8b3a140c.b5595138.js                     |     2 +
 ...ICENSE.txt => 8b3a140c.b5595138.js.LICENSE.txt} |     0
 assets/js/8bd0f0ed.2e1a0973.js                     |     1 +
 assets/js/8bd0f0ed.613c9b1c.js                     |     1 -
 assets/js/8eb4e46b.4ac21fe1.js                     |     1 -
 assets/js/8eb4e46b.f2a4f4a6.js                     |     1 +
 .../{115e91bb.1c47d4f3.js => 8fd1147e.6bd1541d.js} |     2 +-
 assets/js/8fd1147e.be4f6729.js                     |     1 -
 assets/js/908.f74f140d.js                          |  1758 +
 assets/js/93.865c82a7.js                           | 25876 ++++++++++
 assets/js/9357.967dd3dc.js                         |     1 +
 assets/js/935f2afb.710e0275.js                     |     1 +
 assets/js/935f2afb.915b1022.js                     |     1 -
 assets/js/9751.879fbb8a.js                         |     1 -
 assets/js/9751.f364230a.js                         |     1 +
 assets/js/977e6cb2.15250b57.js                     |     1 -
 assets/js/977e6cb2.789084bc.js                     |     1 +
 assets/js/97e49e80.342ccf21.js                     |     1 +
 assets/js/97e49e80.e9e282aa.js                     |     1 -
 assets/js/992.32945d3b.js                          |   540 +
 assets/js/9c055dd5.0f302bfe.js                     |     1 -
 assets/js/9c055dd5.cc2e44d3.js                     |     1 +
 assets/js/9e348dd4.46a25b13.js                     |     1 +
 assets/js/9e348dd4.4870ac42.js                     |     1 -
 assets/js/9e4087bc.774844bb.js                     |     1 -
 assets/js/9e4087bc.93101ad2.js                     |     1 +
 assets/js/a09c2993.84b22bc8.js                     |     1 +
 assets/js/a09c2993.a09e4c56.js                     |     1 -
 assets/js/a4adfb7f.46937fb9.js                     |     1 -
 assets/js/a4adfb7f.e5dedb1b.js                     |     1 +
 assets/js/a5eff934.73fe6ca3.js                     |     1 -
 assets/js/a5eff934.d4d97496.js                     |     1 +
 assets/js/a6aa9e1f.2559dcba.js                     |     1 -
 assets/js/a6aa9e1f.897aa186.js                     |     1 +
 assets/js/a7023ddc.046f2212.js                     |     1 +
 assets/js/a7023ddc.c3f8d43f.js                     |     1 -
 assets/js/a72448b0.5bccfc11.js                     |     2 -
 assets/js/a72448b0.b77ad782.js                     |     2 +
 ...ICENSE.txt => a72448b0.b77ad782.js.LICENSE.txt} |     0
 assets/js/a7bd4aaa.355191dd.js                     |     1 +
 assets/js/a7bd4aaa.60765541.js                     |     1 -
 assets/js/a94703ab.0447f64a.js                     |     1 +
 assets/js/a94703ab.e7191690.js                     |     1 -
 assets/js/a98c1148.21ec0b51.js                     |     1 -
 assets/js/a98c1148.df7e7243.js                     |     1 +
 assets/js/afdde1df.46f7c3b1.js                     |     1 -
 .../{115e91bb.1c47d4f3.js => afdde1df.c48a3fa2.js} |     2 +-
 assets/js/b2b494f3.26358f4b.js                     |     1 +
 assets/js/b2b494f3.a303f1df.js                     |     1 -
 assets/js/b2b675dd.0bde61dc.js                     |     1 -
 assets/js/b2b675dd.702e7e32.js                     |     1 +
 assets/js/b2f554cd.3da16a84.js                     |     1 -
 assets/js/b2f554cd.a3321046.js                     |     1 +
 assets/js/b4d0b0f3.92fe9219.js                     |     1 +
 assets/js/b4d0b0f3.d6c4e859.js                     |     1 -
 assets/js/b5481bd7.41cc0da6.js                     |     1 +
 assets/js/b5481bd7.644c4cb4.js                     |     1 -
 assets/js/b85a59ca.1e9998d3.js                     |     1 +
 assets/js/b85a59ca.a02e19ee.js                     |     1 -
 assets/js/baaea622.34115266.js                     |     1 -
 .../{115e91bb.1c47d4f3.js => baaea622.d790f5a0.js} |     2 +-
 assets/js/bb350c59.74b963a7.js                     |     1 +
 assets/js/bb350c59.8b669bbe.js                     |     1 -
 .../{115e91bb.1c47d4f3.js => bfe08e23.b441bb47.js} |     2 +-
 assets/js/bfe08e23.b807eeb2.js                     |     1 -
 .../{115e91bb.1c47d4f3.js => c18f1ff5.ba8619d6.js} |     2 +-
 assets/js/c18f1ff5.fca75998.js                     |     1 -
 assets/js/c1cb8fca.3ca34912.js                     |     1 -
 assets/js/c1cb8fca.9f4785a1.js                     |     1 +
 assets/js/ccc49370.8f10c90e.js                     |     1 +
 assets/js/ccc49370.cd77ffa6.js                     |     1 -
 assets/js/d0cb6732.2e595c79.js                     |     1 -
 assets/js/d0cb6732.6d0c5d70.js                     |     1 +
 assets/js/d5bcecbd.f962e687.js                     |     1 +
 assets/js/d7d04d1f.35e78ce9.js                     |     1 +
 assets/js/d7d04d1f.d0511ca8.js                     |     1 -
 assets/js/d7ef3cd8.03d76999.js                     |     1 -
 assets/js/d7ef3cd8.7aaee072.js                     |     1 +
 assets/js/d93d657b.4744828c.js                     |     1 +
 assets/js/d93d657b.7cb8aaff.js                     |     1 -
 assets/js/d980d228.8f029ff6.js                     |     1 -
 assets/js/d980d228.e26b292d.js                     |     1 +
 assets/js/da6654f2.21aafa57.js                     |     1 +
 assets/js/da6654f2.338a840b.js                     |     1 -
 assets/js/dc6bcb87.21252307.js                     |     1 +
 assets/js/dc6bcb87.7311e58e.js                     |     1 -
 assets/js/dc8b965f.28ddede4.js                     |     1 +
 .../{d5bcecbd.8f78829f.js => df28f031.5d768b0e.js} |     2 +-
 assets/js/df28f031.a69fcdce.js                     |     1 -
 assets/js/e0bd1749.dfaaee7e.js                     |     1 -
 assets/js/e0bd1749.e6b3cb84.js                     |     1 +
 assets/js/e3d60432.955d5a26.js                     |     1 -
 assets/js/e3d60432.e8bd1231.js                     |     1 +
 assets/js/e438ab2a.0cbf3013.js                     |     1 +
 assets/js/e438ab2a.98290278.js                     |     1 -
 assets/js/e4ae456e.7ace0ef0.js                     |     1 +
 assets/js/e4ae456e.a8f1020a.js                     |     1 -
 assets/js/e961213c.2afdf30b.js                     |     1 +
 assets/js/e961213c.f2c7fd47.js                     |     1 -
 assets/js/eafd45de.0e0a8c62.js                     |     1 +
 assets/js/eafd45de.1f3e8edc.js                     |     1 -
 assets/js/eec8feae.6cd56455.js                     |     1 +
 assets/js/eec8feae.bbeef765.js                     |     1 -
 .../{115e91bb.1c47d4f3.js => f14de4fc.8ffe1736.js} |     2 +-
 assets/js/f14de4fc.a9f5822d.js                     |     1 -
 assets/js/f45a91b0.4c81afb5.js                     |     1 -
 .../{115e91bb.1c47d4f3.js => f45a91b0.afff2460.js} |     2 +-
 assets/js/f493f8eb.5d1d6219.js                     |     1 -
 assets/js/f493f8eb.b1ec2843.js                     |     1 +
 assets/js/f5afcb3e.36cb3bf0.js                     |     1 -
 assets/js/f5afcb3e.73867f0b.js                     |     1 +
 assets/js/f8a2828b.a1739e3e.js                     |     1 +
 assets/js/ffd9127b.1f1a6b94.js                     |     1 -
 assets/js/ffd9127b.4080af69.js                     |     1 +
 assets/js/main.2393da95.js                         |     2 -
 assets/js/main.68396c67.js                         |     2 +
 ...js.LICENSE.txt => main.68396c67.js.LICENSE.txt} |     0
 assets/js/runtime~main.0568f635.js                 |     1 +
 assets/js/runtime~main.ced68c4d.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 +-
 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/translation/index.html                   |     9 +-
 contact/index.html                                 |     7 +-
 docs/command-line/index.html                       |    11 +-
 docs/configfile/index.html                         |    11 +-
 docs/database/index.html                           |    11 +-
 docs/env/index.html                                |    11 +-
 docs/faq/index.html                                |    11 +-
 docs/flags/index.html                              |    16 +-
 docs/index.html                                    |    11 +-
 docs/installation/index.html                       |    11 +-
 docs/moderation/index.html                         |    13 +-
 docs/notice/index.html                             |    11 +-
 docs/permission/index.html                         |    11 +-
 docs/plugins/index.html                            |    11 +-
 docs/questions/index.html                          |    20 +
 docs/reputation/index.html                         |    11 +-
 docs/review/index.html                             |    20 +
 docs/settings/index.html                           |    13 +-
 docs/tags/index.html                               |    20 +
 docs/upgrade/index.html                            |    11 +-
 docs/users/index.html                              |    94 +
 index.html                                         |     7 +-
 plugins/index.html                                 |     7 +-
 search/index.html                                  |     7 +-
 sitemap.xml                                        |     2 +-
 zh-CN/404.html                                     |     7 +-
 .../{styles.589af3e3.css => styles.5967b50a.css}   |     2 +-
 zh-CN/assets/js/01a85c17.6709a49d.js               |     1 +
 zh-CN/assets/js/01a85c17.dc01e24d.js               |     1 -
 zh-CN/assets/js/0673bbda.5a94e420.js               |     1 +
 zh-CN/assets/js/0673bbda.b28832bf.js               |     1 -
 zh-CN/assets/js/0bbd7524.968f27f2.js               |     1 -
 zh-CN/assets/js/0bbd7524.dd6a8c6b.js               |     1 +
 zh-CN/assets/js/0da7f6a0.422ef028.js               |     1 -
 zh-CN/assets/js/0da7f6a0.675e88c1.js               |     1 +
 zh-CN/assets/js/0dc50e16.2c264b28.js               |     1 -
 zh-CN/assets/js/0dc50e16.6d48c9cd.js               |     1 +
 zh-CN/assets/js/1008.647e7b10.js                   |     1 +
 zh-CN/assets/js/1061.13037890.js                   |     1 -
 zh-CN/assets/js/1061.4180c433.js                   |     1 +
 zh-CN/assets/js/115e91bb.1c47d4f3.js               |     1 -
 .../assets/js/115e91bb.f489b108.js                 |     2 +-
 .../assets/js/124add8d.0f18ad53.js                 |     2 +-
 zh-CN/assets/js/124add8d.2c77128a.js               |     1 -
 zh-CN/assets/js/1300.4c852510.js                   |     1 +
 zh-CN/assets/js/1312b5cc.5b32a714.js               |     1 -
 zh-CN/assets/js/1312b5cc.701ded45.js               |     1 +
 zh-CN/assets/js/1516.94768e46.js                   |     1 +
 zh-CN/assets/js/15ad2644.006576c4.js               |     1 +
 zh-CN/assets/js/15ad2644.d595502d.js               |     1 -
 zh-CN/assets/js/1620c6a0.46a8d136.js               |     1 +
 zh-CN/assets/js/1620c6a0.a32b4f7f.js               |     1 -
 zh-CN/assets/js/1669585c.176ea38c.js               |     1 -
 zh-CN/assets/js/1669585c.b4fc6967.js               |     1 +
 zh-CN/assets/js/16ab27aa.0f88726c.js               |     1 -
 zh-CN/assets/js/16ab27aa.53e462d3.js               |     1 +
 zh-CN/assets/js/1711.136f6393.js                   |     2 +
 zh-CN/assets/js/1711.136f6393.js.LICENSE.txt       |    18 +
 zh-CN/assets/js/17896441.8c9963e3.js               |     1 +
 zh-CN/assets/js/17896441.cef8c140.js               |     1 -
 zh-CN/assets/js/189aa5fb.dfa82717.js               |     1 -
 zh-CN/assets/js/189aa5fb.f73da96e.js               |     1 +
 zh-CN/assets/js/18e919bd.7a26740c.js               |     1 -
 zh-CN/assets/js/18e919bd.b7464676.js               |     1 +
 zh-CN/assets/js/1a4e3797.43bebe37.js               |     2 +
 ...ICENSE.txt => 1a4e3797.43bebe37.js.LICENSE.txt} |     0
 zh-CN/assets/js/1a4e3797.b95b0d3c.js               |     2 -
 zh-CN/assets/js/1a8837ce.a64198b1.js               |     1 -
 zh-CN/assets/js/1a8837ce.b843d15e.js               |     1 +
 .../assets/js/1d2644f4.2814b2f8.js                 |     2 +-
 zh-CN/assets/js/1d2644f4.9379a198.js               |     1 -
 zh-CN/assets/js/1df93b7f.1e2cbef9.js               |     1 +
 zh-CN/assets/js/1df93b7f.1ff749f4.js               |     1 -
 zh-CN/assets/js/1edacfff.1bc480d1.js               |     1 -
 zh-CN/assets/js/1edacfff.449acbbe.js               |     1 +
 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/26f4acbe.0d095176.js               |     1 -
 zh-CN/assets/js/26f4acbe.61eebf15.js               |     1 +
 zh-CN/assets/js/283536cd.07851b1c.js               |     1 +
 zh-CN/assets/js/283536cd.5241a7b3.js               |     1 -
 zh-CN/assets/js/298.f8893466.js                    |     1 +
 .../assets/js/299281dd.01026900.js                 |     2 +-
 zh-CN/assets/js/299281dd.0f5bdbd5.js               |     1 -
 zh-CN/assets/js/2a510483.61a5890e.js               |     2 -
 zh-CN/assets/js/2a510483.9df07f5d.js               |     2 +
 ...ICENSE.txt => 2a510483.9df07f5d.js.LICENSE.txt} |     0
 zh-CN/assets/js/2c22be1c.31b3483a.js               |     2 +
 ...ICENSE.txt => 2c22be1c.31b3483a.js.LICENSE.txt} |     0
 zh-CN/assets/js/2c22be1c.4619767f.js               |     2 -
 zh-CN/assets/js/306a8c6c.88ebe10e.js               |     1 -
 zh-CN/assets/js/306a8c6c.c796f972.js               |     1 +
 zh-CN/assets/js/3093.33e255c3.js                   |     1 +
 zh-CN/assets/js/310.14ee915c.js                    |  3429 ++
 zh-CN/assets/js/3196ea8f.071ad6a7.js               |     1 -
 .../assets/js/3196ea8f.4a19d2ad.js                 |     2 +-
 zh-CN/assets/js/3198.6f9adc87.js                   |     1 +
 zh-CN/assets/js/32.97fad14b.js                     | 10780 ++++
 zh-CN/assets/js/330.7515ce27.js                    |     2 +
 ....js.LICENSE.txt => 330.7515ce27.js.LICENSE.txt} |     0
 zh-CN/assets/js/330.e033f7f6.js                    |     2 -
 zh-CN/assets/js/33dc0c0c.0a59152a.js               |     1 +
 zh-CN/assets/js/33dc0c0c.e23e4ce4.js               |     1 -
 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/3728301f.72cbfd0a.js               |     1 -
 zh-CN/assets/js/3728301f.b4ef6f1d.js               |     1 +
 zh-CN/assets/js/3880.a412433e.js                   |     1 +
 zh-CN/assets/js/394aa4f9.3ad36048.js               |     1 -
 zh-CN/assets/js/394aa4f9.bc5d99b5.js               |     1 +
 zh-CN/assets/js/3a3fadac.549b655b.js               |     1 -
 zh-CN/assets/js/3a3fadac.8bfb46d3.js               |     1 +
 zh-CN/assets/js/3a86a8c5.25475b8d.js               |     2 +
 ...ICENSE.txt => 3a86a8c5.25475b8d.js.LICENSE.txt} |     0
 zh-CN/assets/js/3a86a8c5.394117e5.js               |     2 -
 .../assets/js/3f1a2b9e.2d1c2ef5.js                 |     2 +-
 zh-CN/assets/js/3f1a2b9e.4803570f.js               |     1 -
 zh-CN/assets/js/415707e9.b7fe0d6a.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/47116eb1.380ea1e4.js               |     1 +
 zh-CN/assets/js/47116eb1.e4825d29.js               |     1 -
 zh-CN/assets/js/489.b280ee59.js                    | 23570 +++++++++
 zh-CN/assets/js/4958df33.b703bdd0.js               |     1 +
 zh-CN/assets/js/4958df33.f3b0ad70.js               |     1 -
 .../assets/js/4dd6f3f3.ba561242.js                 |     2 +-
 zh-CN/assets/js/4dd6f3f3.fa78a8c0.js               |     1 -
 zh-CN/assets/js/4fff58e6.1a691645.js               |     1 +
 zh-CN/assets/js/4fff58e6.e4458960.js               |     1 -
 zh-CN/assets/js/5.7a6d4c98.js                      |     1 +
 zh-CN/assets/js/5.822c6d59.js                      |  1227 +
 zh-CN/assets/js/50bc71d4.45398c8f.js               |     1 -
 zh-CN/assets/js/50bc71d4.bf186316.js               |     1 +
 zh-CN/assets/js/50ea1d6e.d48cf615.js               |     1 -
 .../assets/js/50ea1d6e.d796e4fa.js                 |     2 +-
 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.276bc447.js               |     1 +
 zh-CN/assets/js/565f0463.cbe2e815.js               |     1 -
 zh-CN/assets/js/5846.e79acaf6.js                   |     1 +
 zh-CN/assets/js/589616dd.68bef586.js               |     1 -
 zh-CN/assets/js/589616dd.da137047.js               |     1 +
 zh-CN/assets/js/5ac42693.a0f5b525.js               |     1 -
 zh-CN/assets/js/5ac42693.b690c11d.js               |     1 +
 zh-CN/assets/js/5b143ea2.79a2b759.js               |     1 -
 zh-CN/assets/js/5b143ea2.fb33f961.js               |     1 +
 zh-CN/assets/js/5b5253e0.2d049c0b.js               |     1 +
 zh-CN/assets/js/5b5253e0.d934fdd7.js               |     1 -
 zh-CN/assets/js/5b5f4945.59e9457d.js               |     1 +
 zh-CN/assets/js/5e744679.483587b6.js               |     1 -
 zh-CN/assets/js/5e744679.96a4eb19.js               |     1 +
 zh-CN/assets/js/5e95c892.67ebe9ad.js               |     1 +
 zh-CN/assets/js/5e95c892.ed76056a.js               |     1 -
 zh-CN/assets/js/6032.e67c911c.js                   |     1 +
 zh-CN/assets/js/6199.0a140a2d.js                   |     2 -
 zh-CN/assets/js/6199.fa94ab18.js                   |     2 +
 ...js.LICENSE.txt => 6199.fa94ab18.js.LICENSE.txt} |     0
 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/6875c492.307432c0.js               |     1 -
 zh-CN/assets/js/6875c492.d4b0f58e.js               |     1 +
 zh-CN/assets/js/692c6f9f.1f8962a3.js               |     1 -
 zh-CN/assets/js/692c6f9f.fe52300f.js               |     1 +
 zh-CN/assets/js/694f97a7.7f36ff62.js               |     1 -
 zh-CN/assets/js/694f97a7.de34547e.js               |     1 +
 zh-CN/assets/js/697.97d60bb9.js                    |   739 +
 zh-CN/assets/js/6b66dba1.114831b2.js               |     1 -
 zh-CN/assets/js/6b66dba1.bd3c86d0.js               |     1 +
 zh-CN/assets/js/6fd9b8bb.1ae3b0c0.js               |     1 -
 zh-CN/assets/js/6fd9b8bb.af2c7878.js               |     1 +
 zh-CN/assets/js/700e44e1.304f8750.js               |     1 -
 zh-CN/assets/js/700e44e1.397b6cdb.js               |     1 +
 zh-CN/assets/js/70fd4878.6d09c192.js               |     1 -
 zh-CN/assets/js/70fd4878.ce459779.js               |     1 +
 zh-CN/assets/js/7156.870d1e21.js                   |     2 -
 zh-CN/assets/js/7156.870d1e21.js.LICENSE.txt       |     8 -
 zh-CN/assets/js/719ef308.3cf26707.js               |     1 -
 zh-CN/assets/js/719ef308.78a7cf7c.js               |     1 +
 zh-CN/assets/js/72e3e7f9.34f801cf.js               |     1 +
 zh-CN/assets/js/72e3e7f9.db4e06a4.js               |     1 -
 zh-CN/assets/js/72f5456f.177d6235.js               |     2 +
 ...ICENSE.txt => 72f5456f.177d6235.js.LICENSE.txt} |     0
 zh-CN/assets/js/72f5456f.89c32383.js               |     2 -
 zh-CN/assets/js/731fb1ee.8ebb92f4.js               |     1 +
 zh-CN/assets/js/731fb1ee.9b049509.js               |     1 -
 zh-CN/assets/js/744.95e9770e.js                    | 10065 ++++
 zh-CN/assets/js/7744.a5b332a3.js                   |     1 +
 zh-CN/assets/js/7762.a8ba1189.js                   |     1 +
 zh-CN/assets/js/7762.bd5f386a.js                   |     1 -
 zh-CN/assets/js/7892.eeacadb8.js                   |     1 +
 zh-CN/assets/js/7f220a89.15d6d827.js               |     1 -
 zh-CN/assets/js/7f220a89.bcfe809e.js               |     1 +
 zh-CN/assets/js/8.0f1a168f.js                      | 14570 ++++++
 zh-CN/assets/js/808227b4.10b9ad93.js               |     1 -
 zh-CN/assets/js/808227b4.791bfea5.js               |     1 +
 zh-CN/assets/js/814f3328.33880356.js               |     1 -
 zh-CN/assets/js/814f3328.ec49c621.js               |     1 +
 zh-CN/assets/js/8310.ee3cef01.js                   |     1 +
 zh-CN/assets/js/846.0218453f.js                    |  2106 +
 zh-CN/assets/js/85c04a46.57c4bd7c.js               |     1 -
 zh-CN/assets/js/85c04a46.aef83882.js               |     1 +
 zh-CN/assets/js/87260873.34927168.js               |     1 -
 zh-CN/assets/js/87260873.786c3341.js               |     1 +
 zh-CN/assets/js/872d4ab4.84927a24.js               |     1 +
 zh-CN/assets/js/872d4ab4.a284ba73.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 +
 zh-CN/assets/js/8a160ed2.117e9fc2.js               |     1 -
 zh-CN/assets/js/8a160ed2.55319244.js               |     1 +
 zh-CN/assets/js/8b3a140c.193003d8.js               |     2 -
 zh-CN/assets/js/8b3a140c.b5595138.js               |     2 +
 ...ICENSE.txt => 8b3a140c.b5595138.js.LICENSE.txt} |     0
 zh-CN/assets/js/8bd0f0ed.07e2c9a0.js               |     1 -
 zh-CN/assets/js/8bd0f0ed.9d051c2b.js               |     1 +
 zh-CN/assets/js/8d998be3.53c9a8bd.js               |     1 +
 zh-CN/assets/js/8d998be3.9033cc95.js               |     1 -
 .../assets/js/8fd1147e.6bd1541d.js                 |     2 +-
 zh-CN/assets/js/8fd1147e.be4f6729.js               |     1 -
 zh-CN/assets/js/908.f74f140d.js                    |  1758 +
 zh-CN/assets/js/93.865c82a7.js                     | 25876 ++++++++++
 zh-CN/assets/js/9357.967dd3dc.js                   |     1 +
 zh-CN/assets/js/935f2afb.18485023.js               |     1 +
 zh-CN/assets/js/935f2afb.c6a0a13e.js               |     1 -
 zh-CN/assets/js/9751.879fbb8a.js                   |     1 -
 zh-CN/assets/js/9751.f364230a.js                   |     1 +
 zh-CN/assets/js/992.32945d3b.js                    |   540 +
 zh-CN/assets/js/99ef21fa.920ca134.js               |     1 +
 zh-CN/assets/js/99ef21fa.fda91344.js               |     1 -
 zh-CN/assets/js/9bc058ac.01982d78.js               |     1 -
 zh-CN/assets/js/9bc058ac.031de2a9.js               |     1 +
 zh-CN/assets/js/9cef3031.73a9a167.js               |     1 +
 zh-CN/assets/js/9cef3031.9ff3e458.js               |     1 -
 zh-CN/assets/js/9d3d282b.18f227e1.js               |     1 +
 zh-CN/assets/js/9d3d282b.e4c35a59.js               |     1 -
 zh-CN/assets/js/9e348dd4.302f620a.js               |     1 +
 zh-CN/assets/js/9e348dd4.7d6d615e.js               |     1 -
 zh-CN/assets/js/9e4087bc.774844bb.js               |     1 -
 zh-CN/assets/js/9e4087bc.93101ad2.js               |     1 +
 zh-CN/assets/js/9e79e6b4.994f2653.js               |     1 -
 zh-CN/assets/js/9e79e6b4.b981fa7a.js               |     1 +
 zh-CN/assets/js/9ffedc5c.44d4e705.js               |     1 +
 zh-CN/assets/js/9ffedc5c.ac49de70.js               |     1 -
 zh-CN/assets/js/a433c88d.8166aef0.js               |     1 +
 zh-CN/assets/js/a433c88d.b13c8aab.js               |     1 -
 zh-CN/assets/js/a4adfb7f.63f0235e.js               |     1 +
 zh-CN/assets/js/a4adfb7f.9fca5ccf.js               |     1 -
 zh-CN/assets/js/a5b0ceb9.a2f10d6f.js               |     1 +
 zh-CN/assets/js/a5b0ceb9.b579e5fe.js               |     1 -
 zh-CN/assets/js/a6aa9e1f.2559dcba.js               |     1 -
 zh-CN/assets/js/a6aa9e1f.897aa186.js               |     1 +
 zh-CN/assets/js/a72448b0.5bccfc11.js               |     2 -
 zh-CN/assets/js/a72448b0.b77ad782.js               |     2 +
 ...ICENSE.txt => a72448b0.b77ad782.js.LICENSE.txt} |     0
 zh-CN/assets/js/a7bd4aaa.355191dd.js               |     1 +
 zh-CN/assets/js/a7bd4aaa.60765541.js               |     1 -
 zh-CN/assets/js/a94703ab.0447f64a.js               |     1 +
 zh-CN/assets/js/a94703ab.e7191690.js               |     1 -
 zh-CN/assets/js/ae5daa8a.bf41b959.js               |     1 +
 zh-CN/assets/js/ae5daa8a.f62d6a6c.js               |     1 -
 zh-CN/assets/js/aeeb67f1.7cbd11cf.js               |     1 -
 zh-CN/assets/js/aeeb67f1.935f3d02.js               |     1 +
 zh-CN/assets/js/afdde1df.46f7c3b1.js               |     1 -
 .../assets/js/afdde1df.c48a3fa2.js                 |     2 +-
 zh-CN/assets/js/b1bdc772.0de8f32d.js               |     1 -
 zh-CN/assets/js/b1bdc772.4011c566.js               |     1 +
 zh-CN/assets/js/b85a59ca.1e9998d3.js               |     1 +
 zh-CN/assets/js/b85a59ca.a02e19ee.js               |     1 -
 zh-CN/assets/js/b94e87ad.0cd921a1.js               |     1 -
 zh-CN/assets/js/b94e87ad.18b294b8.js               |     1 +
 zh-CN/assets/js/baaea622.34115266.js               |     1 -
 .../assets/js/baaea622.d790f5a0.js                 |     2 +-
 zh-CN/assets/js/bb350c59.c3fd826f.js               |     1 +
 zh-CN/assets/js/bb350c59.ff2f7b20.js               |     1 -
 zh-CN/assets/js/beec9ed9.6278ec77.js               |     1 +
 zh-CN/assets/js/beec9ed9.7a349b43.js               |     1 -
 .../assets/js/bfe08e23.b441bb47.js                 |     2 +-
 zh-CN/assets/js/bfe08e23.b807eeb2.js               |     1 -
 .../assets/js/c18f1ff5.ba8619d6.js                 |     2 +-
 zh-CN/assets/js/c18f1ff5.fca75998.js               |     1 -
 zh-CN/assets/js/c8c000df.8ccdd712.js               |     1 -
 zh-CN/assets/js/c8c000df.c901ae93.js               |     1 +
 zh-CN/assets/js/ca3ced4f.adb1d8ed.js               |     1 +
 zh-CN/assets/js/ca3ced4f.dbe56694.js               |     1 -
 zh-CN/assets/js/cb12bc40.860adffb.js               |     1 +
 zh-CN/assets/js/cb12bc40.e6c17caf.js               |     1 -
 zh-CN/assets/js/cb37bc33.01cf61de.js               |     1 -
 zh-CN/assets/js/cb37bc33.b0b38a0a.js               |     1 +
 zh-CN/assets/js/ccc49370.8f10c90e.js               |     1 +
 zh-CN/assets/js/ccc49370.cd77ffa6.js               |     1 -
 zh-CN/assets/js/ce8fc292.cc985ab2.js               |     1 +
 zh-CN/assets/js/ce8fc292.fd6bed90.js               |     1 -
 zh-CN/assets/js/cff057bd.b7e52c79.js               |     1 +
 zh-CN/assets/js/cff057bd.e42bd7ad.js               |     1 -
 zh-CN/assets/js/d5bcecbd.f962e687.js               |     1 +
 zh-CN/assets/js/d6d2a6c5.69db900f.js               |     1 -
 zh-CN/assets/js/d6d2a6c5.86b27241.js               |     1 +
 zh-CN/assets/js/d7d04d1f.35e78ce9.js               |     1 +
 zh-CN/assets/js/d7d04d1f.d0511ca8.js               |     1 -
 zh-CN/assets/js/d7ef3cd8.1165f9f3.js               |     1 +
 zh-CN/assets/js/d7ef3cd8.1d0442c7.js               |     1 -
 zh-CN/assets/js/d980d228.8f029ff6.js               |     1 -
 zh-CN/assets/js/d980d228.e26b292d.js               |     1 +
 zh-CN/assets/js/da6654f2.2c2ccc8b.js               |     1 -
 zh-CN/assets/js/da6654f2.a6999f6f.js               |     1 +
 zh-CN/assets/js/dc8b965f.43a073ec.js               |     1 +
 zh-CN/assets/js/dd100b13.2c69a549.js               |     1 -
 zh-CN/assets/js/dd100b13.f37bcd7b.js               |     1 +
 .../{d5bcecbd.8f78829f.js => df28f031.5d768b0e.js} |     2 +-
 zh-CN/assets/js/df28f031.a69fcdce.js               |     1 -
 zh-CN/assets/js/dfba363f.6a03c166.js               |     1 +
 zh-CN/assets/js/dfba363f.9f0e96c9.js               |     1 -
 zh-CN/assets/js/e0bd1749.dfaaee7e.js               |     1 -
 zh-CN/assets/js/e0bd1749.e6b3cb84.js               |     1 +
 zh-CN/assets/js/e218420d.d9b3c689.js               |     1 -
 zh-CN/assets/js/e218420d.f59f0267.js               |     1 +
 zh-CN/assets/js/e4ae456e.8192051f.js               |     1 -
 zh-CN/assets/js/e4ae456e.f02fa986.js               |     1 +
 zh-CN/assets/js/e961213c.2afdf30b.js               |     1 +
 zh-CN/assets/js/e961213c.f2c7fd47.js               |     1 -
 zh-CN/assets/js/eafd45de.8941cacd.js               |     1 +
 zh-CN/assets/js/eafd45de.8cb6ae00.js               |     1 -
 .../assets/js/f14de4fc.8ffe1736.js                 |     2 +-
 zh-CN/assets/js/f14de4fc.a9f5822d.js               |     1 -
 zh-CN/assets/js/f209d110.004eb903.js               |     1 -
 zh-CN/assets/js/f209d110.25207f48.js               |     1 +
 zh-CN/assets/js/f45a91b0.4c81afb5.js               |     1 -
 .../assets/js/f45a91b0.afff2460.js                 |     2 +-
 zh-CN/assets/js/f482e244.aa9bb3fa.js               |     1 -
 zh-CN/assets/js/f482e244.ff5252d6.js               |     1 +
 zh-CN/assets/js/f8a2828b.8f52e6df.js               |     1 +
 zh-CN/assets/js/fb5f18f7.1574f2f3.js               |     1 +
 zh-CN/assets/js/fb5f18f7.bc20c650.js               |     1 -
 zh-CN/assets/js/main.e562a349.js                   |     2 +
 ...js.LICENSE.txt => main.e562a349.js.LICENSE.txt} |     0
 zh-CN/assets/js/main.fe93cc9f.js                   |     2 -
 zh-CN/assets/js/runtime~main.5783cd7b.js           |     1 -
 zh-CN/assets/js/runtime~main.fab3eb3e.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 +-
 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/translation/index.html             |     9 +-
 zh-CN/contact/index.html                           |     7 +-
 zh-CN/docs/command-line/index.html                 |    11 +-
 zh-CN/docs/configfile/index.html                   |    11 +-
 zh-CN/docs/contributing/notice/index.html          |    11 +-
 zh-CN/docs/database/index.html                     |    11 +-
 zh-CN/docs/env/index.html                          |    11 +-
 zh-CN/docs/faq/index.html                          |    11 +-
 zh-CN/docs/flags/index.html                        |    11 +-
 zh-CN/docs/index.html                              |    11 +-
 zh-CN/docs/installation/index.html                 |    11 +-
 zh-CN/docs/moderation/index.html                   |     9 +-
 zh-CN/docs/permission/index.html                   |    11 +-
 zh-CN/docs/plugins/index.html                      |    11 +-
 .../best-practice => docs/questions}/index.html    |    14 +-
 zh-CN/docs/reputation/index.html                   |    11 +-
 zh-CN/docs/review/index.html                       |    20 +
 zh-CN/docs/settings/index.html                     |     9 +-
 zh-CN/docs/tags/index.html                         |    20 +
 zh-CN/docs/upgrade/index.html                      |    11 +-
 zh-CN/docs/users/index.html                        |    94 +
 zh-CN/index.html                                   |     7 +-
 zh-CN/plugins/index.html                           |     7 +-
 zh-CN/search/index.html                            |     7 +-
 zh-CN/sitemap.xml                                  |     2 +-
 774 files changed, 509487 insertions(+), 780 deletions(-)

diff --git a/404.html b/404.html
index e1c73b83..b262e50a 100644
--- a/404.html
+++ b/404.html
@@ -8,9 +8,10 @@
 <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.ed57e243.css">
-<script src="/assets/js/runtime~main.ced68c4d.js" defer="defer"></script>
-<script src="/assets/js/main.2393da95.js" defer="defer"></script>
+
+<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.2252c3e0.css">
+<script src="/assets/js/runtime~main.0568f635.js" defer="defer"></script>
+<script src="/assets/js/main.68396c67.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.ed57e243.css b/assets/css/styles.2252c3e0.css
similarity index 80%
rename from assets/css/styles.ed57e243.css
rename to assets/css/styles.2252c3e0.css
index d238b875..45f3fc23 100644
--- a/assets/css/styles.ed57e243.css
+++ b/assets/css/styles.2252c3e0.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/js/01a85c17.6709a49d.js b/assets/js/01a85c17.6709a49d.js
new file mode 100644
index 00000000..cea68ec3
--- /dev/null
+++ b/assets/js/01a85c17.6709a49d.js
@@ -0,0 +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
diff --git a/assets/js/01a85c17.dc01e24d.js b/assets/js/01a85c17.dc01e24d.js
deleted file mode 100644
index 168494f4..00000000
--- a/assets/js/01a85c17.dc01e24d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4013],{8431:(e,t,s)=>{s.d(t,{Z:()=>v});var a=s(5170),i=s(5924),r=s(647),l=s(1935),n=s(205),c=s(6426),o=s(1148),m=s(7365);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:"sidebarItem_gnz [...]
\ No newline at end of file
diff --git a/assets/js/02c33ff0.91b19268.js b/assets/js/02c33ff0.91b19268.js
new file mode 100644
index 00000000..19fe8867
--- /dev/null
+++ b/assets/js/02c33ff0.91b19268.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6484],{1421:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>o,toc:()=>l});var r=t(43010),a=t(90887);const s={title:"Answer Turns 1, and is Now Apache Answer",authors:["Anne"],category:"Community",featured:!0,image:"2023-10-31-cover@4x.png",description:"Celebrate Answer\u2019s first anniversary with a wrap-up, and stay tuned for new features coming next year. "},i [...]
\ No newline at end of file
diff --git a/assets/js/02c33ff0.f4115ef6.js b/assets/js/02c33ff0.f4115ef6.js
deleted file mode 100644
index 2adb2d1c..00000000
--- a/assets/js/02c33ff0.f4115ef6.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6484],{1421:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>o,toc:()=>l});var r=t(3010),a=t(887);const s={title:"Answer Turns 1, and is Now Apache Answer",authors:["Anne"],category:"Community",featured:!0,image:"2023-10-31-cover@4x.png",description:"Celebrate Answer\u2019s first anniversary with a wrap-up, and stay tuned for new features coming next year. "},i=vo [...]
\ No newline at end of file
diff --git a/assets/js/03514ddd.297d85b4.js b/assets/js/03514ddd.297d85b4.js
deleted file mode 100644
index 6eeae3eb..00000000
--- a/assets/js/03514ddd.297d85b4.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2577],{6280:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>s,metadata:()=>r,toc:()=>h});var a=t(3010),i=t(887);const s={title:"Answer Enters Apache Incubator",authors:["Anne"],category:"Community",featured:!0,image:"2023-10-24-cover@4x.png",description:"On October 9th, the knowledge-based Q&A software Answer, developed by SegmentFault team under ONES.com, passed the vote and w [...]
\ No newline at end of file
diff --git a/assets/js/03514ddd.cce70ef0.js b/assets/js/03514ddd.cce70ef0.js
new file mode 100644
index 00000000..6594e408
--- /dev/null
+++ b/assets/js/03514ddd.cce70ef0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2577],{36280:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>s,metadata:()=>r,toc:()=>h});var a=t(43010),i=t(90887);const s={title:"Answer Enters Apache Incubator",authors:["Anne"],category:"Community",featured:!0,image:"2023-10-24-cover@4x.png",description:"On October 9th, the knowledge-based Q&A software Answer, developed by SegmentFault team under ONES.com, passed the vote a [...]
\ No newline at end of file
diff --git a/assets/js/0480b142.5107a232.js b/assets/js/0480b142.5107a232.js
deleted file mode 100644
index 3e5d283a..00000000
--- a/assets/js/0480b142.5107a232.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:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>r,toc:()=>l});var a=n(3010),s=n(887);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/ed [...]
\ No newline at end of file
diff --git a/assets/js/0480b142.7af46686.js b/assets/js/0480b142.7af46686.js
new file mode 100644
index 00000000..a28cb54e
--- /dev/null
+++ b/assets/js/0480b142.7af46686.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/05610178.934f3b39.js b/assets/js/05610178.934f3b39.js
new file mode 100644
index 00000000..301c2e91
--- /dev/null
+++ b/assets/js/05610178.934f3b39.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3220],{42068:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>r,toc:()=>c});var i=n(43010),s=n(90887);const o={title:"Meet Answer 1.1.0: Your Q&A Community Takes a Step Forward",authors:["Anne"],category:"Release",featured:!0,image:"2023-06-15-cover@4x.png",description:"Answer 1.1.0 is now on GitHub, find out the updates and boost productivity with it."},a=void 0, [...]
\ No newline at end of file
diff --git a/assets/js/05610178.a9b5b5bd.js b/assets/js/05610178.a9b5b5bd.js
deleted file mode 100644
index 657d4db4..00000000
--- a/assets/js/05610178.a9b5b5bd.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3220],{2068:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>r,toc:()=>c});var i=n(3010),s=n(887);const o={title:"Meet Answer 1.1.0: Your Q&A Community Takes a Step Forward",authors:["Anne"],category:"Release",featured:!0,image:"2023-06-15-cover@4x.png",description:"Answer 1.1.0 is now on GitHub, find out the updates and boost productivity with it."},a=void 0,r={p [...]
\ No newline at end of file
diff --git a/assets/js/062dea8c.2f3c8045.js b/assets/js/062dea8c.2f3c8045.js
deleted file mode 100644
index 56d657cc..00000000
--- a/assets/js/062dea8c.2f3c8045.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4552],{6322:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>c,frontMatter:()=>o,metadata:()=>r,toc:()=>h});var i=t(3010),s=t(887);const o={title:"How to Improve Knowledge Sharing with Answer",authors:["Anne"],category:"Tutorials",featured:!0,image:"2023-06-20-cover@4x.png",description:"Explore different types of knowledge, and unlock effective knowledge sharing for your team with the right strat [...]
\ No newline at end of file
diff --git a/assets/js/062dea8c.3fa5f94b.js b/assets/js/062dea8c.3fa5f94b.js
new file mode 100644
index 00000000..5dc630c0
--- /dev/null
+++ b/assets/js/062dea8c.3fa5f94b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4552],{86322:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>c,frontMatter:()=>o,metadata:()=>r,toc:()=>h});var i=t(43010),s=t(90887);const o={title:"How to Improve Knowledge Sharing with Answer",authors:["Anne"],category:"Tutorials",featured:!0,image:"2023-06-20-cover@4x.png",description:"Explore different types of knowledge, and unlock effective knowledge sharing for your team with the right s [...]
\ No newline at end of file
diff --git a/assets/js/0da7f6a0.422ef028.js b/assets/js/0da7f6a0.422ef028.js
deleted file mode 100644
index 44c1a337..00000000
--- a/assets/js/0da7f6a0.422ef028.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2997],{8960:e=>{e.exports=JSON.parse('{"permalink":"/blog/category/tech","page":1,"postsPerPage":16,"totalPages":1,"totalCount":1,"previousPage":"","nextPage":"","blogDescription":"Learn everything about Answer and leverage your Q&A community.","blogTitle":"Answer Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/0da7f6a0.675e88c1.js b/assets/js/0da7f6a0.675e88c1.js
new file mode 100644
index 00000000..7b3a1514
--- /dev/null
+++ b/assets/js/0da7f6a0.675e88c1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2997],{78960:e=>{e.exports=JSON.parse('{"permalink":"/blog/category/tech","page":1,"postsPerPage":16,"totalPages":1,"totalCount":1,"previousPage":"","nextPage":"","blogDescription":"Learn everything about Answer and leverage your Q&A community.","blogTitle":"Answer Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/1008.647e7b10.js b/assets/js/1008.647e7b10.js
new file mode 100644
index 00000000..b6aebbb9
--- /dev/null
+++ b/assets/js/1008.647e7b10.js
@@ -0,0 +1 @@
+"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.13037890.js b/assets/js/1061.13037890.js
deleted file mode 100644
index 1d46870d..00000000
--- a/assets/js/1061.13037890.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1061],{3556:(e,t,n)=>{n.d(t,{Z:()=>a});n(5170);var i=n(5924),s=n(6426),o=n(659),r=n(3010);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",descripti [...]
\ No newline at end of file
diff --git a/assets/js/1061.4180c433.js b/assets/js/1061.4180c433.js
new file mode 100644
index 00000000..a236ec0a
--- /dev/null
+++ b/assets/js/1061.4180c433.js
@@ -0,0 +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
diff --git a/assets/js/10bf9f7e.70561871.js b/assets/js/10bf9f7e.70561871.js
deleted file mode 100644
index 4757f3b2..00000000
--- a/assets/js/10bf9f7e.70561871.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[8451],{8649:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>o,toc:()=>l});var s=n(3010),r=n(887);const a={title:"How to Build a Help Center with Your Users and Answer",authors:["Anne"],category:"Tutorials",featured:!0,image:"2023-07-05-cover@4x.png",description:"Build a help center with tutorials and tips from Answer, and the best part is with your users in this  [...]
\ No newline at end of file
diff --git a/assets/js/10bf9f7e.c877fd25.js b/assets/js/10bf9f7e.c877fd25.js
new file mode 100644
index 00000000..0d81828f
--- /dev/null
+++ b/assets/js/10bf9f7e.c877fd25.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[8451],{68649:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>o,toc:()=>l});var s=n(43010),r=n(90887);const a={title:"How to Build a Help Center with Your Users and Answer",authors:["Anne"],category:"Tutorials",featured:!0,image:"2023-07-05-cover@4x.png",description:"Build a help center with tutorials and tips from Answer, and the best part is with your users in t [...]
\ No newline at end of file
diff --git a/assets/js/11488796.7976b572.js b/assets/js/11488796.7976b572.js
deleted file mode 100644
index ac99de96..00000000
--- a/assets/js/11488796.7976b572.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6679],{7831:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>c,frontMatter:()=>s,metadata:()=>r,toc:()=>l});var i=t(3010),o=t(887);const s={title:"How to use Answer for Effective Knowledge Retention?",authors:["Anne"],category:"Best Practice",featured:!0,image:"2023-05-16-cover@4x.png",description:"Dive into knowledge retention, and find out how Answer empowers your internal knowledge base."},a=v [...]
\ No newline at end of file
diff --git a/assets/js/11488796.eff1bc38.js b/assets/js/11488796.eff1bc38.js
new file mode 100644
index 00000000..9530629f
--- /dev/null
+++ b/assets/js/11488796.eff1bc38.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6679],{7831:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>c,frontMatter:()=>s,metadata:()=>r,toc:()=>l});var i=t(43010),o=t(90887);const s={title:"How to use Answer for Effective Knowledge Retention?",authors:["Anne"],category:"Best Practice",featured:!0,image:"2023-05-16-cover@4x.png",description:"Dive into knowledge retention, and find out how Answer empowers your internal knowledge base."}, [...]
\ No newline at end of file
diff --git a/assets/js/115e91bb.1c47d4f3.js b/assets/js/115e91bb.f489b108.js
similarity index 59%
copy from assets/js/115e91bb.1c47d4f3.js
copy to assets/js/115e91bb.f489b108.js
index 12b1af43..1baf86c4 100644
--- a/assets/js/115e91bb.1c47d4f3.js
+++ b/assets/js/115e91bb.f489b108.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6208],{4292:e=>{e.exports=[]}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6208],{19809:e=>{e.exports=[]}}]);
\ No newline at end of file
diff --git a/assets/js/124add8d.2c77128a.js b/assets/js/124add8d.0f18ad53.js
similarity index 59%
rename from assets/js/124add8d.2c77128a.js
rename to assets/js/124add8d.0f18ad53.js
index 384d277c..b24bb885 100644
--- a/assets/js/124add8d.2c77128a.js
+++ b/assets/js/124add8d.0f18ad53.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1732],{287:e=>{e.exports=[]}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1732],{80287:e=>{e.exports=[]}}]);
\ No newline at end of file
diff --git a/assets/js/1300.4c852510.js b/assets/js/1300.4c852510.js
new file mode 100644
index 00000000..4a4d6dc3
--- /dev/null
+++ b/assets/js/1300.4c852510.js
@@ -0,0 +1 @@
+"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/14790698.08e9b9f1.js b/assets/js/14790698.08e9b9f1.js
deleted file mode 100644
index b4b6744b..00000000
--- a/assets/js/14790698.08e9b9f1.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[8596],{8354:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>c});var i=t(3010),s=t(887);const o={title:"Build Your Online Community Like the Pros with Answer",authors:["Anne"],category:"Best Practice",featured:!0,image:"2023-09-14-cover@4x.png",description:"From inception to execution, make your online community happen in 4 steps with Answer."},r=void 0, [...]
\ No newline at end of file
diff --git a/assets/js/14790698.d3c5ee88.js b/assets/js/14790698.d3c5ee88.js
new file mode 100644
index 00000000..6a80f040
--- /dev/null
+++ b/assets/js/14790698.d3c5ee88.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[8596],{48354:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>c});var i=t(43010),s=t(90887);const o={title:"Build Your Online Community Like the Pros with Answer",authors:["Anne"],category:"Best Practice",featured:!0,image:"2023-09-14-cover@4x.png",description:"From inception to execution, make your online community happen in 4 steps with Answer."},r=voi [...]
\ No newline at end of file
diff --git a/assets/js/1516.94768e46.js b/assets/js/1516.94768e46.js
new file mode 100644
index 00000000..4ebc32a7
--- /dev/null
+++ b/assets/js/1516.94768e46.js
@@ -0,0 +1 @@
+"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.b6eda198.js b/assets/js/1620c6a0.b6eda198.js
deleted file mode 100644
index 6683d12a..00000000
--- a/assets/js/1620c6a0.b6eda198.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4945],{533:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var t=i(3010),r=i(887);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/plugin [...]
\ No newline at end of file
diff --git a/assets/js/1620c6a0.f2ff92a1.js b/assets/js/1620c6a0.f2ff92a1.js
new file mode 100644
index 00000000..69583196
--- /dev/null
+++ b/assets/js/1620c6a0.f2ff92a1.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/16ab27aa.0f88726c.js b/assets/js/16ab27aa.0f88726c.js
deleted file mode 100644
index e5df837b..00000000
--- a/assets/js/16ab27aa.0f88726c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6303],{4469:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/16ab27aa.53e462d3.js b/assets/js/16ab27aa.53e462d3.js
new file mode 100644
index 00000000..1952170b
--- /dev/null
+++ b/assets/js/16ab27aa.53e462d3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6303],{24469:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/1711.136f6393.js b/assets/js/1711.136f6393.js
new file mode 100644
index 00000000..28685434
--- /dev/null
+++ b/assets/js/1711.136f6393.js
@@ -0,0 +1,2 @@
+/*! 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
new file mode 100644
index 00000000..b7611cc4
--- /dev/null
+++ b/assets/js/1711.136f6393.js.LICENSE.txt
@@ -0,0 +1,18 @@
+/*!
+   * 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/assets/js/17896441.8c9963e3.js b/assets/js/17896441.8c9963e3.js
new file mode 100644
index 00000000..139e4ae8
--- /dev/null
+++ b/assets/js/17896441.8c9963e3.js
@@ -0,0 +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
diff --git a/assets/js/17896441.cef8c140.js b/assets/js/17896441.cef8c140.js
deleted file mode 100644
index cc79b138..00000000
--- a/assets/js/17896441.cef8c140.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7918],{9308:(e,t,n)=>{n.d(t,{Z:()=>T});var s=n(5170),o=n(9772),a=n(5924),c=n(227),i=n(1771),r=n(5335);const l={codeBlockContainer:"codeBlockContainer_APcc"};var d=n(3010);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:"codeBlockTi [...]
\ No newline at end of file
diff --git a/assets/js/18e919bd.7a26740c.js b/assets/js/18e919bd.7a26740c.js
deleted file mode 100644
index 7d651fc5..00000000
--- a/assets/js/18e919bd.7a26740c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1290],{9899:e=>{e.exports=JSON.parse('{"label":"Best Practice","permalink":"/blog/category/best-practice"}')}}]);
\ No newline at end of file
diff --git a/assets/js/18e919bd.b7464676.js b/assets/js/18e919bd.b7464676.js
new file mode 100644
index 00000000..d1da681b
--- /dev/null
+++ b/assets/js/18e919bd.b7464676.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1290],{99899:e=>{e.exports=JSON.parse('{"label":"Best Practice","permalink":"/blog/category/best-practice"}')}}]);
\ No newline at end of file
diff --git a/assets/js/1a4e3797.43bebe37.js b/assets/js/1a4e3797.43bebe37.js
new file mode 100644
index 00000000..51ec8405
--- /dev/null
+++ b/assets/js/1a4e3797.43bebe37.js
@@ -0,0 +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
diff --git a/assets/js/1a4e3797.b95b0d3c.js.LICENSE.txt b/assets/js/1a4e3797.43bebe37.js.LICENSE.txt
similarity index 100%
rename from assets/js/1a4e3797.b95b0d3c.js.LICENSE.txt
rename to assets/js/1a4e3797.43bebe37.js.LICENSE.txt
diff --git a/assets/js/1a4e3797.b95b0d3c.js b/assets/js/1a4e3797.b95b0d3c.js
deleted file mode 100644
index dcea3191..00000000
--- a/assets/js/1a4e3797.b95b0d3c.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 1a4e3797.b95b0d3c.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/1a8837ce.7df6a414.js b/assets/js/1a8837ce.7df6a414.js
new file mode 100644
index 00000000..ed6b1317
--- /dev/null
+++ b/assets/js/1a8837ce.7df6a414.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:()=>d,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.cb743f07.js b/assets/js/1a8837ce.cb743f07.js
deleted file mode 100644
index c24aa3da..00000000
--- a/assets/js/1a8837ce.cb743f07.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:()=>d,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var t=i(3010),s=i(887);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/community/c [...]
\ No newline at end of file
diff --git a/assets/js/299281dd.0f5bdbd5.js b/assets/js/1d2644f4.2814b2f8.js
similarity index 59%
rename from assets/js/299281dd.0f5bdbd5.js
rename to assets/js/1d2644f4.2814b2f8.js
index 2b69bb46..7a3dc0d1 100644
--- a/assets/js/299281dd.0f5bdbd5.js
+++ b/assets/js/1d2644f4.2814b2f8.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[8034],{3744:e=>{e.exports=[]}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2571],{49656:e=>{e.exports=[]}}]);
\ No newline at end of file
diff --git a/assets/js/1df93b7f.1e2cbef9.js b/assets/js/1df93b7f.1e2cbef9.js
new file mode 100644
index 00000000..eea05b53
--- /dev/null
+++ b/assets/js/1df93b7f.1e2cbef9.js
@@ -0,0 +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
diff --git a/assets/js/1df93b7f.1ff749f4.js b/assets/js/1df93b7f.1ff749f4.js
deleted file mode 100644
index 8adaf10e..00000000
--- a/assets/js/1df93b7f.1ff749f4.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3237],{4246:(A,e,s)=>{s.d(e,{Z:()=>t});s(5170);var o=s(5924),g=s(3010);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})}},1165:(A,e,s)=>{s.r(e),s.d(e,{default:()=>j});var o=s(5170),g=s(647),t=s(6933),n=s(1712),i=s(4790),a=s(5924),r=s(6426),c=s(4246),C=s(239);const h={h1:"h1_R [...]
\ No newline at end of file
diff --git a/assets/js/20219bd7.4376cf61.js b/assets/js/20219bd7.4376cf61.js
deleted file mode 100644
index 0c405cd3..00000000
--- a/assets/js/20219bd7.4376cf61.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6846],{6412:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var s=t(3010),n=t(887);const o={title:"What is Q&A Platform and How to Use it",authors:["Anne"],category:"Tutorials",tags:["tutorials"],featured:!0,image:"2023-05-12-cover@4x.png",description:"Learn Q&A platform, explore poplular Q&A platforms, and find out how to get the most out of it."}, [...]
\ No newline at end of file
diff --git a/assets/js/20219bd7.9c4f0e65.js b/assets/js/20219bd7.9c4f0e65.js
new file mode 100644
index 00000000..55b888e8
--- /dev/null
+++ b/assets/js/20219bd7.9c4f0e65.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6846],{76412:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var s=t(43010),n=t(90887);const o={title:"What is Q&A Platform and How to Use it",authors:["Anne"],category:"Tutorials",tags:["tutorials"],featured:!0,image:"2023-05-12-cover@4x.png",description:"Learn Q&A platform, explore poplular Q&A platforms, and find out how to get the most out of it [...]
\ No newline at end of file
diff --git a/assets/js/227.646ebd22.js b/assets/js/227.646ebd22.js
new file mode 100644
index 00000000..d0e7a3e3
--- /dev/null
+++ b/assets/js/227.646ebd22.js
@@ -0,0 +1 @@
+"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
new file mode 100644
index 00000000..133836a0
--- /dev/null
+++ b/assets/js/2449.f473e051.js
@@ -0,0 +1,2 @@
+/*! 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
new file mode 100644
index 00000000..a58daed4
--- /dev/null
+++ b/assets/js/2449.f473e051.js.LICENSE.txt
@@ -0,0 +1,9 @@
+/*!
+  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
new file mode 100644
index 00000000..fe60f86d
--- /dev/null
+++ b/assets/js/2669.67104145.js
@@ -0,0 +1 @@
+"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
new file mode 100644
index 00000000..8a1ece0b
--- /dev/null
+++ b/assets/js/2697.7e8d8a38.js
@@ -0,0 +1 @@
+"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/26f4acbe.0d095176.js b/assets/js/26f4acbe.0d095176.js
deleted file mode 100644
index 5676b97b..00000000
--- a/assets/js/26f4acbe.0d095176.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9795],{8534:e=>{e.exports=JSON.parse('{"permalink":"/blog/category/tutorials","page":1,"postsPerPage":16,"totalPages":1,"totalCount":5,"previousPage":"","nextPage":"","blogDescription":"Learn everything about Answer and leverage your Q&A community.","blogTitle":"Answer Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/26f4acbe.61eebf15.js b/assets/js/26f4acbe.61eebf15.js
new file mode 100644
index 00000000..ca16ce34
--- /dev/null
+++ b/assets/js/26f4acbe.61eebf15.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9795],{68534:e=>{e.exports=JSON.parse('{"permalink":"/blog/category/tutorials","page":1,"postsPerPage":16,"totalPages":1,"totalCount":5,"previousPage":"","nextPage":"","blogDescription":"Learn everything about Answer and leverage your Q&A community.","blogTitle":"Answer Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/298.f8893466.js b/assets/js/298.f8893466.js
new file mode 100644
index 00000000..f3c46eda
--- /dev/null
+++ b/assets/js/298.f8893466.js
@@ -0,0 +1 @@
+"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/1d2644f4.9379a198.js b/assets/js/299281dd.01026900.js
similarity index 59%
rename from assets/js/1d2644f4.9379a198.js
rename to assets/js/299281dd.01026900.js
index 66f5c351..580ef640 100644
--- a/assets/js/1d2644f4.9379a198.js
+++ b/assets/js/299281dd.01026900.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2571],{9656:e=>{e.exports=[]}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[8034],{63744:e=>{e.exports=[]}}]);
\ No newline at end of file
diff --git a/assets/js/2a510483.53a39e64.js b/assets/js/2a510483.53a39e64.js
deleted file mode 100644
index e5340a16..00000000
--- a/assets/js/2a510483.53a39e64.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 2a510483.53a39e64.js.LICENSE.txt */
-(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9304],{410:(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(3010),s=n(887),i=n(2829),o=n.n(i),a=n(6426),l=n(8372);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.",sourc [...]
\ No newline at end of file
diff --git a/assets/js/2a510483.9266a796.js b/assets/js/2a510483.9266a796.js
new file mode 100644
index 00000000..acab2c05
--- /dev/null
+++ b/assets/js/2a510483.9266a796.js
@@ -0,0 +1,2 @@
+/*! For license information please see 2a510483.9266a796.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.53a39e64.js.LICENSE.txt b/assets/js/2a510483.9266a796.js.LICENSE.txt
similarity index 100%
rename from assets/js/2a510483.53a39e64.js.LICENSE.txt
rename to assets/js/2a510483.9266a796.js.LICENSE.txt
diff --git a/assets/js/2c22be1c.31b3483a.js b/assets/js/2c22be1c.31b3483a.js
new file mode 100644
index 00000000..4fb18080
--- /dev/null
+++ b/assets/js/2c22be1c.31b3483a.js
@@ -0,0 +1,2 @@
+/*! For license information please see 2c22be1c.31b3483a.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 i={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.4619767f.js.LICENSE.txt b/assets/js/2c22be1c.31b3483a.js.LICENSE.txt
similarity index 100%
rename from assets/js/2c22be1c.4619767f.js.LICENSE.txt
rename to assets/js/2c22be1c.31b3483a.js.LICENSE.txt
diff --git a/assets/js/2c22be1c.4619767f.js b/assets/js/2c22be1c.4619767f.js
deleted file mode 100644
index 92f3def9..00000000
--- a/assets/js/2c22be1c.4619767f.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 2c22be1c.4619767f.js.LICENSE.txt */
-(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9870],{3401:(e,s,t)=>{"use strict";t.d(s,{Z:()=>l});var a=t(5170),c=t(5924),r=t(6426);const n="header_briT";var o=t(3010);const i={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)(r.Z [...]
\ No newline at end of file
diff --git a/assets/js/2d1855c3.6641be04.js b/assets/js/2d1855c3.6641be04.js
new file mode 100644
index 00000000..dbd09780
--- /dev/null
+++ b/assets/js/2d1855c3.6641be04.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[230],{63685:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var s=t(43010),r=t(90887);const i={title:"Everything You Need to Know About Answer",authors:["Anne"],category:"Community",featured:!0,image:"2023-06-29-cover@4x.png",description:"Find out everything about Answer: our motivation, why it\u2019s open-source, the people behind it, etc."},o=void [...]
\ No newline at end of file
diff --git a/assets/js/2d1855c3.c993c13a.js b/assets/js/2d1855c3.c993c13a.js
deleted file mode 100644
index bd0b7d0d..00000000
--- a/assets/js/2d1855c3.c993c13a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[230],{3685:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var s=t(3010),r=t(887);const i={title:"Everything You Need to Know About Answer",authors:["Anne"],category:"Community",featured:!0,image:"2023-06-29-cover@4x.png",description:"Find out everything about Answer: our motivation, why it\u2019s open-source, the people behind it, etc."},o=void 0,a [...]
\ No newline at end of file
diff --git a/assets/js/306a8c6c.14517cd0.js b/assets/js/306a8c6c.14517cd0.js
deleted file mode 100644
index e6205ead..00000000
--- a/assets/js/306a8c6c.14517cd0.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7616],{9479:e=>{e.exports=JSON.parse('{"pluginId":"community","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"community":[{"type":"link","label":"Support","href":"/community/","docId":"support","unlisted":false},{"type":"link","label":"About","href":"/community/about","docId":"about","unlisted":false},{"type":"category" [...]
\ No newline at end of file
diff --git a/assets/js/306a8c6c.42682ae9.js b/assets/js/306a8c6c.42682ae9.js
new file mode 100644
index 00000000..88486a10
--- /dev/null
+++ b/assets/js/306a8c6c.42682ae9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7616],{59479:e=>{e.exports=JSON.parse('{"pluginId":"community","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"community":[{"type":"link","label":"Support","href":"/community/","docId":"support","unlisted":false},{"type":"link","label":"About","href":"/community/about","docId":"about","unlisted":false},{"type":"category [...]
\ No newline at end of file
diff --git a/assets/js/3093.33e255c3.js b/assets/js/3093.33e255c3.js
new file mode 100644
index 00000000..abd8b62e
--- /dev/null
+++ b/assets/js/3093.33e255c3.js
@@ -0,0 +1 @@
+"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
new file mode 100644
index 00000000..7eb61a13
--- /dev/null
+++ b/assets/js/310.14ee915c.js
@@ -0,0 +1,3429 @@
+"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/3196ea8f.071ad6a7.js b/assets/js/3196ea8f.071ad6a7.js
deleted file mode 100644
index c1f0bd1a..00000000
--- a/assets/js/3196ea8f.071ad6a7.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9425],{8134:e=>{e.exports=[]}}]);
\ No newline at end of file
diff --git a/assets/js/115e91bb.1c47d4f3.js b/assets/js/3196ea8f.4a19d2ad.js
similarity index 59%
copy from assets/js/115e91bb.1c47d4f3.js
copy to assets/js/3196ea8f.4a19d2ad.js
index 12b1af43..42689af3 100644
--- a/assets/js/115e91bb.1c47d4f3.js
+++ b/assets/js/3196ea8f.4a19d2ad.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6208],{4292:e=>{e.exports=[]}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9425],{78134:e=>{e.exports=[]}}]);
\ No newline at end of file
diff --git a/assets/js/3198.6f9adc87.js b/assets/js/3198.6f9adc87.js
new file mode 100644
index 00000000..bcc8125d
--- /dev/null
+++ b/assets/js/3198.6f9adc87.js
@@ -0,0 +1 @@
+"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
new file mode 100644
index 00000000..acdea9a8
--- /dev/null
+++ b/assets/js/32.97fad14b.js
@@ -0,0 +1,10780 @@
+"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
+
+
+var DEFAULT_EDGE_NAME = '\x00';
+var GRAPH_NODE = '\x00';
+var EDGE_KEY_DELIM = '\x01';
+
+// Implementation notes:
+//
+//  * Node id query functions should return string ids for the nodes
+//  * Edge id query functions should return an "edgeObj", edge object, that is
+//    composed of enough information to uniquely identify an edge: {v, w, name}.
+//  * Internally we use an "edgeId", a stringified form of the edgeObj, to
+//    reference edges. This is because we need a performant way to look these
+//    edges up and, object properties, which have string keys, are the closest
+//    we're going to get to a performant hashtable in JavaScript.
+
+// Implementation notes:
+//
+//  * Node id query functions should return string ids for the nodes
+//  * Edge id query functions should return an "edgeObj", edge object, that is
+//    composed of enough information to uniquely identify an edge: {v, w, name}.
+//  * Internally we use an "edgeId", a stringified form of the edgeObj, to
+//    reference edges. This is because we need a performant way to look these
+//    edges up and, object properties, which have string keys, are the closest
+//    we're going to get to a performant hashtable in JavaScript.
+class Graph {
+  constructor(opts = {}) {
+    this._isDirected = has/* default */.Z(opts, 'directed') ? opts.directed : true;
+    this._isMultigraph = has/* default */.Z(opts, 'multigraph') ? opts.multigraph : false;
+    this._isCompound = has/* default */.Z(opts, 'compound') ? opts.compound : false;
+
+    // Label for the graph itself
+    this._label = undefined;
+
+    // Defaults to be set when creating a new node
+    this._defaultNodeLabelFn = constant/* default */.Z(undefined);
+
+    // Defaults to be set when creating a new edge
+    this._defaultEdgeLabelFn = constant/* default */.Z(undefined);
+
+    // v -> label
+    this._nodes = {};
+
+    if (this._isCompound) {
+      // v -> parent
+      this._parent = {};
+
+      // v -> children
+      this._children = {};
+      this._children[GRAPH_NODE] = {};
+    }
+
+    // v -> edgeObj
+    this._in = {};
+
+    // u -> v -> Number
+    this._preds = {};
+
+    // v -> edgeObj
+    this._out = {};
+
+    // v -> w -> Number
+    this._sucs = {};
+
+    // e -> edgeObj
+    this._edgeObjs = {};
+
+    // e -> label
+    this._edgeLabels = {};
+  }
+  /* === Graph functions ========= */
+  isDirected() {
+    return this._isDirected;
+  }
+  isMultigraph() {
+    return this._isMultigraph;
+  }
+  isCompound() {
+    return this._isCompound;
+  }
+  setGraph(label) {
+    this._label = label;
+    return this;
+  }
+  graph() {
+    return this._label;
+  }
+  /* === Node functions ========== */
+  setDefaultNodeLabel(newDefault) {
+    if (!isFunction/* default */.Z(newDefault)) {
+      newDefault = constant/* default */.Z(newDefault);
+    }
+    this._defaultNodeLabelFn = newDefault;
+    return this;
+  }
+  nodeCount() {
+    return this._nodeCount;
+  }
+  nodes() {
+    return keys/* default */.Z(this._nodes);
+  }
+  sources() {
+    var self = this;
+    return filter/* default */.Z(this.nodes(), function (v) {
+      return isEmpty/* default */.Z(self._in[v]);
+    });
+  }
+  sinks() {
+    var self = this;
+    return filter/* default */.Z(this.nodes(), function (v) {
+      return isEmpty/* default */.Z(self._out[v]);
+    });
+  }
+  setNodes(vs, value) {
+    var args = arguments;
+    var self = this;
+    forEach/* default */.Z(vs, function (v) {
+      if (args.length > 1) {
+        self.setNode(v, value);
+      } else {
+        self.setNode(v);
+      }
+    });
+    return this;
+  }
+  setNode(v, value) {
+    if (has/* default */.Z(this._nodes, v)) {
+      if (arguments.length > 1) {
+        this._nodes[v] = value;
+      }
+      return this;
+    }
+
+    // @ts-expect-error
+    this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);
+    if (this._isCompound) {
+      this._parent[v] = GRAPH_NODE;
+      this._children[v] = {};
+      this._children[GRAPH_NODE][v] = true;
+    }
+    this._in[v] = {};
+    this._preds[v] = {};
+    this._out[v] = {};
+    this._sucs[v] = {};
+    ++this._nodeCount;
+    return this;
+  }
+  node(v) {
+    return this._nodes[v];
+  }
+  hasNode(v) {
+    return has/* default */.Z(this._nodes, v);
+  }
+  removeNode(v) {
+    var self = this;
+    if (has/* default */.Z(this._nodes, v)) {
+      var removeEdge = function (e) {
+        self.removeEdge(self._edgeObjs[e]);
+      };
+      delete this._nodes[v];
+      if (this._isCompound) {
+        this._removeFromParentsChildList(v);
+        delete this._parent[v];
+        forEach/* default */.Z(this.children(v), function (child) {
+          self.setParent(child);
+        });
+        delete this._children[v];
+      }
+      forEach/* default */.Z(keys/* default */.Z(this._in[v]), removeEdge);
+      delete this._in[v];
+      delete this._preds[v];
+      forEach/* default */.Z(keys/* default */.Z(this._out[v]), removeEdge);
+      delete this._out[v];
+      delete this._sucs[v];
+      --this._nodeCount;
+    }
+    return this;
+  }
+  setParent(v, parent) {
+    if (!this._isCompound) {
+      throw new Error('Cannot set parent in a non-compound graph');
+    }
+
+    if (isUndefined/* default */.Z(parent)) {
+      parent = GRAPH_NODE;
+    } else {
+      // Coerce parent to string
+      parent += '';
+      for (var ancestor = parent; !isUndefined/* default */.Z(ancestor); ancestor = this.parent(ancestor)) {
+        if (ancestor === v) {
+          throw new Error('Setting ' + parent + ' as parent of ' + v + ' would create a cycle');
+        }
+      }
+
+      this.setNode(parent);
+    }
+
+    this.setNode(v);
+    this._removeFromParentsChildList(v);
+    this._parent[v] = parent;
+    this._children[parent][v] = true;
+    return this;
+  }
+  _removeFromParentsChildList(v) {
+    delete this._children[this._parent[v]][v];
+  }
+  parent(v) {
+    if (this._isCompound) {
+      var parent = this._parent[v];
+      if (parent !== GRAPH_NODE) {
+        return parent;
+      }
+    }
+  }
+  children(v) {
+    if (isUndefined/* default */.Z(v)) {
+      v = GRAPH_NODE;
+    }
+
+    if (this._isCompound) {
+      var children = this._children[v];
+      if (children) {
+        return keys/* default */.Z(children);
+      }
+    } else if (v === GRAPH_NODE) {
+      return this.nodes();
+    } else if (this.hasNode(v)) {
+      return [];
+    }
+  }
+  predecessors(v) {
+    var predsV = this._preds[v];
+    if (predsV) {
+      return keys/* default */.Z(predsV);
+    }
+  }
+  successors(v) {
+    var sucsV = this._sucs[v];
+    if (sucsV) {
+      return keys/* default */.Z(sucsV);
+    }
+  }
+  neighbors(v) {
+    var preds = this.predecessors(v);
+    if (preds) {
+      return lodash_es_union(preds, this.successors(v));
+    }
+  }
+  isLeaf(v) {
+    var neighbors;
+    if (this.isDirected()) {
+      neighbors = this.successors(v);
+    } else {
+      neighbors = this.neighbors(v);
+    }
+    return neighbors.length === 0;
+  }
+  filterNodes(filter) {
+    // @ts-expect-error
+    var copy = new this.constructor({
+      directed: this._isDirected,
+      multigraph: this._isMultigraph,
+      compound: this._isCompound,
+    });
+
+    copy.setGraph(this.graph());
+
+    var self = this;
+    forEach/* default */.Z(this._nodes, function (value, v) {
+      if (filter(v)) {
+        copy.setNode(v, value);
+      }
+    });
+
+    forEach/* default */.Z(this._edgeObjs, function (e) {
+      // @ts-expect-error
+      if (copy.hasNode(e.v) && copy.hasNode(e.w)) {
+        copy.setEdge(e, self.edge(e));
+      }
+    });
+
+    var parents = {};
+    function findParent(v) {
+      var parent = self.parent(v);
+      if (parent === undefined || copy.hasNode(parent)) {
+        parents[v] = parent;
+        return parent;
+      } else if (parent in parents) {
+        return parents[parent];
+      } else {
+        return findParent(parent);
+      }
+    }
+
+    if (this._isCompound) {
+      forEach/* default */.Z(copy.nodes(), function (v) {
+        copy.setParent(v, findParent(v));
+      });
+    }
+
+    return copy;
+  }
+  /* === Edge functions ========== */
+  setDefaultEdgeLabel(newDefault) {
+    if (!isFunction/* default */.Z(newDefault)) {
+      newDefault = constant/* default */.Z(newDefault);
+    }
+    this._defaultEdgeLabelFn = newDefault;
+    return this;
+  }
+  edgeCount() {
+    return this._edgeCount;
+  }
+  edges() {
+    return values/* default */.Z(this._edgeObjs);
+  }
+  setPath(vs, value) {
+    var self = this;
+    var args = arguments;
+    reduce/* default */.Z(vs, function (v, w) {
+      if (args.length > 1) {
+        self.setEdge(v, w, value);
+      } else {
+        self.setEdge(v, w);
+      }
+      return w;
+    });
+    return this;
+  }
+  /*
+   * setEdge(v, w, [value, [name]])
+   * setEdge({ v, w, [name] }, [value])
+   */
+  setEdge() {
+    var v, w, name, value;
+    var valueSpecified = false;
+    var arg0 = arguments[0];
+
+    if (typeof arg0 === 'object' && arg0 !== null && 'v' in arg0) {
+      v = arg0.v;
+      w = arg0.w;
+      name = arg0.name;
+      if (arguments.length === 2) {
+        value = arguments[1];
+        valueSpecified = true;
+      }
+    } else {
+      v = arg0;
+      w = arguments[1];
+      name = arguments[3];
+      if (arguments.length > 2) {
+        value = arguments[2];
+        valueSpecified = true;
+      }
+    }
+
+    v = '' + v;
+    w = '' + w;
+    if (!isUndefined/* default */.Z(name)) {
+      name = '' + name;
+    }
+
+    var e = edgeArgsToId(this._isDirected, v, w, name);
+    if (has/* default */.Z(this._edgeLabels, e)) {
+      if (valueSpecified) {
+        this._edgeLabels[e] = value;
+      }
+      return this;
+    }
+
+    if (!isUndefined/* default */.Z(name) && !this._isMultigraph) {
+      throw new Error('Cannot set a named edge when isMultigraph = false');
+    }
+
+    // It didn't exist, so we need to create it.
+    // First ensure the nodes exist.
+    this.setNode(v);
+    this.setNode(w);
+
+    // @ts-expect-error
+    this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);
+
+    var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);
+    // Ensure we add undirected edges in a consistent way.
+    v = edgeObj.v;
+    w = edgeObj.w;
+
+    Object.freeze(edgeObj);
+    this._edgeObjs[e] = edgeObj;
+    incrementOrInitEntry(this._preds[w], v);
+    incrementOrInitEntry(this._sucs[v], w);
+    this._in[w][e] = edgeObj;
+    this._out[v][e] = edgeObj;
+    this._edgeCount++;
+    return this;
+  }
+  edge(v, w, name) {
+    var e =
+      arguments.length === 1
+        ? edgeObjToId(this._isDirected, arguments[0])
+        : edgeArgsToId(this._isDirected, v, w, name);
+    return this._edgeLabels[e];
+  }
+  hasEdge(v, w, name) {
+    var e =
+      arguments.length === 1
+        ? edgeObjToId(this._isDirected, arguments[0])
+        : edgeArgsToId(this._isDirected, v, w, name);
+    return has/* default */.Z(this._edgeLabels, e);
+  }
+  removeEdge(v, w, name) {
+    var e =
+      arguments.length === 1
+        ? edgeObjToId(this._isDirected, arguments[0])
+        : edgeArgsToId(this._isDirected, v, w, name);
+    var edge = this._edgeObjs[e];
+    if (edge) {
+      v = edge.v;
+      w = edge.w;
+      delete this._edgeLabels[e];
+      delete this._edgeObjs[e];
+      decrementOrRemoveEntry(this._preds[w], v);
+      decrementOrRemoveEntry(this._sucs[v], w);
+      delete this._in[w][e];
+      delete this._out[v][e];
+      this._edgeCount--;
+    }
+    return this;
+  }
+  inEdges(v, u) {
+    var inV = this._in[v];
+    if (inV) {
+      var edges = values/* default */.Z(inV);
+      if (!u) {
+        return edges;
+      }
+      return filter/* default */.Z(edges, function (edge) {
+        return edge.v === u;
+      });
+    }
+  }
+  outEdges(v, w) {
+    var outV = this._out[v];
+    if (outV) {
+      var edges = values/* default */.Z(outV);
+      if (!w) {
+        return edges;
+      }
+      return filter/* default */.Z(edges, function (edge) {
+        return edge.w === w;
+      });
+    }
+  }
+  nodeEdges(v, w) {
+    var inEdges = this.inEdges(v, w);
+    if (inEdges) {
+      return inEdges.concat(this.outEdges(v, w));
+    }
+  }
+}
+
+/* Number of nodes in the graph. Should only be changed by the implementation. */
+Graph.prototype._nodeCount = 0;
+
+/* Number of edges in the graph. Should only be changed by the implementation. */
+Graph.prototype._edgeCount = 0;
+
+function incrementOrInitEntry(map, k) {
+  if (map[k]) {
+    map[k]++;
+  } else {
+    map[k] = 1;
+  }
+}
+
+function decrementOrRemoveEntry(map, k) {
+  if (!--map[k]) {
+    delete map[k];
+  }
+}
+
+function edgeArgsToId(isDirected, v_, w_, name) {
+  var v = '' + v_;
+  var w = '' + w_;
+  if (!isDirected && v > w) {
+    var tmp = v;
+    v = w;
+    w = tmp;
+  }
+  return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + (isUndefined/* default */.Z(name) ? DEFAULT_EDGE_NAME : name);
+}
+
+function edgeArgsToObj(isDirected, v_, w_, name) {
+  var v = '' + v_;
+  var w = '' + w_;
+  if (!isDirected && v > w) {
... 507395 lines suppressed ...